diff options
Diffstat (limited to 'arch')
137 files changed, 7324 insertions, 905 deletions
diff --git a/arch/arm/cpu/arm1136/cpu.c b/arch/arm/cpu/arm1136/cpu.c index f72bab6..b98e3d9 100644 --- a/arch/arm/cpu/arm1136/cpu.c +++ b/arch/arm/cpu/arm1136/cpu.c @@ -95,7 +95,7 @@ void flush_dcache_all(void) asm volatile("mcr p15, 0, %0, c7, c10, 4" : : "r" (0)); } -static inline int bad_cache_range(unsigned long start, unsigned long stop) +static int check_cache_range(unsigned long start, unsigned long stop) { int ok = 1; @@ -114,7 +114,7 @@ static inline int bad_cache_range(unsigned long start, unsigned long stop) void invalidate_dcache_range(unsigned long start, unsigned long stop) { - if (bad_cache_range(start, stop)) + if (!check_cache_range(start, stop)) return; while (start < stop) { @@ -125,7 +125,7 @@ void invalidate_dcache_range(unsigned long start, unsigned long stop) void flush_dcache_range(unsigned long start, unsigned long stop) { - if (bad_cache_range(start, stop)) + if (!check_cache_range(start, stop)) return; while (start < stop) { diff --git a/arch/arm/cpu/arm1136/start.S b/arch/arm/cpu/arm1136/start.S index c0db96c..2483c63 100644 --- a/arch/arm/cpu/arm1136/start.S +++ b/arch/arm/cpu/arm1136/start.S @@ -251,10 +251,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: #endif /* #ifndef CONFIG_SPL_BUILD */ /* diff --git a/arch/arm/cpu/arm1176/start.S b/arch/arm/cpu/arm1176/start.S index 848144a..d613641 100644 --- a/arch/arm/cpu/arm1176/start.S +++ b/arch/arm/cpu/arm1176/start.S @@ -351,11 +351,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l - + b clbss_l +clbss_e: #ifndef CONFIG_NAND_SPL bl coloured_LED_init bl red_led_on diff --git a/arch/arm/cpu/arm720t/start.S b/arch/arm/cpu/arm720t/start.S index 540e3c2..3b97e80 100644 --- a/arch/arm/cpu/arm720t/start.S +++ b/arch/arm/cpu/arm720t/start.S @@ -228,10 +228,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: bl coloured_LED_init bl red_led_on diff --git a/arch/arm/cpu/arm920t/start.S b/arch/arm/cpu/arm920t/start.S index 8c5612c..9b8604e 100644 --- a/arch/arm/cpu/arm920t/start.S +++ b/arch/arm/cpu/arm920t/start.S @@ -271,10 +271,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: bl coloured_LED_init bl red_led_on diff --git a/arch/arm/cpu/arm925t/start.S b/arch/arm/cpu/arm925t/start.S index dbb93ef..1a54416 100644 --- a/arch/arm/cpu/arm925t/start.S +++ b/arch/arm/cpu/arm925t/start.S @@ -265,10 +265,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: bl coloured_LED_init bl red_led_on diff --git a/arch/arm/cpu/arm926ejs/davinci/lowlevel_init.S b/arch/arm/cpu/arm926ejs/davinci/lowlevel_init.S index 5b39484..0e45426 100644 --- a/arch/arm/cpu/arm926ejs/davinci/lowlevel_init.S +++ b/arch/arm/cpu/arm926ejs/davinci/lowlevel_init.S @@ -523,9 +523,8 @@ VTPLock: ldr r6, DDRVTPR ldr r7, [r6] - and r7, r7, $0x1f - and r8, r7, $0x3e0 - orr r8, r7, r8 + mov r8, r7, LSL #32-10 + mov r8, r8, LSR #32-10 /* grab low 10 bits */ ldr r7, VTP_RECAL orr r8, r7, r8 ldr r7, VTP_EN @@ -644,7 +643,7 @@ VTP_LOCK_COUNT: VTP_MASK: .word 0xffffdfff VTP_RECAL: - .word 0x40000 + .word 0x08000 VTP_EN: .word 0x02000 CFGTEST: diff --git a/arch/arm/cpu/arm926ejs/kirkwood/mpp.c b/arch/arm/cpu/arm926ejs/kirkwood/mpp.c index 3da6c98..03eb2de 100644 --- a/arch/arm/cpu/arm926ejs/kirkwood/mpp.c +++ b/arch/arm/cpu/arm926ejs/kirkwood/mpp.c @@ -31,7 +31,7 @@ static u32 kirkwood_variant(void) #define MPP_CTRL(i) (KW_MPP_BASE + (i* 4)) #define MPP_NR_REGS (1 + MPP_MAX/8) -void kirkwood_mpp_conf(u32 *mpp_list) +void kirkwood_mpp_conf(u32 *mpp_list, u32 *mpp_save) { u32 mpp_ctrl[MPP_NR_REGS]; unsigned int variant_mask; @@ -52,6 +52,7 @@ void kirkwood_mpp_conf(u32 *mpp_list) while (*mpp_list) { unsigned int num = MPP_NUM(*mpp_list); unsigned int sel = MPP_SEL(*mpp_list); + unsigned int sel_save; int shift; if (num > MPP_MAX) { @@ -66,6 +67,13 @@ void kirkwood_mpp_conf(u32 *mpp_list) } shift = (num & 7) << 2; + + if (mpp_save) { + sel_save = (mpp_ctrl[num / 8] >> shift) & 0xf; + *mpp_save = num | (sel_save << 8) | variant_mask; + mpp_save++; + } + mpp_ctrl[num / 8] &= ~(0xf << shift); mpp_ctrl[num / 8] |= sel << shift; diff --git a/arch/arm/cpu/arm926ejs/mx28/mx28.c b/arch/arm/cpu/arm926ejs/mx28/mx28.c index a82ff25..ff25772 100644 --- a/arch/arm/cpu/arm926ejs/mx28/mx28.c +++ b/arch/arm/cpu/arm926ejs/mx28/mx28.c @@ -153,7 +153,6 @@ int arch_misc_init(void) } #endif -#ifdef CONFIG_ARCH_CPU_INIT int arch_cpu_init(void) { struct mx28_clkctrl_regs *clkctrl_regs = @@ -187,7 +186,6 @@ int arch_cpu_init(void) return 0; } -#endif #if defined(CONFIG_DISPLAY_CPUINFO) int print_cpuinfo(void) diff --git a/arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c b/arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c index 9fa5d29..e17a4d7 100644 --- a/arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c +++ b/arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c @@ -82,10 +82,18 @@ uint32_t dram_vals[] = { 0x00000000, 0x00010001 }; +void __mx28_adjust_memory_params(uint32_t *dram_vals) +{ +} +void mx28_adjust_memory_params(uint32_t *dram_vals) + __attribute__((weak, alias("__mx28_adjust_memory_params"))); + void init_m28_200mhz_ddr2(void) { int i; + mx28_adjust_memory_params(dram_vals); + for (i = 0; i < ARRAY_SIZE(dram_vals); i++) writel(dram_vals[i], MXS_DRAM_BASE + (4 * i)); } diff --git a/arch/arm/cpu/arm926ejs/spear/Makefile b/arch/arm/cpu/arm926ejs/spear/Makefile index f32ec4c..d06f03d 100644 --- a/arch/arm/cpu/arm926ejs/spear/Makefile +++ b/arch/arm/cpu/arm926ejs/spear/Makefile @@ -25,16 +25,27 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(SOC).o -COBJS := reset.o \ +COBJS-y := cpu.o \ + reset.o \ timer.o -SOBJS := -SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) -OBJS := $(addprefix $(obj),$(COBJS)) -SOBJS := $(addprefix $(obj),$(SOBJS)) +ifdef CONFIG_SPL_BUILD +COBJS-y += spl.o spl_boot.o +COBJS-$(CONFIG_SPEAR600) += spear600.o +COBJS-$(CONFIG_DDR_MT47H64M16) += spr600_mt47h64m16_3_333_cl5_psync.o +COBJS-$(CONFIG_DDR_MT47H32M16) += spr600_mt47h32m16_333_cl5_psync.o +COBJS-$(CONFIG_DDR_MT47H32M16) += spr600_mt47h32m16_37e_166_cl4_sync.o +COBJS-$(CONFIG_DDR_MT47H128M8) += spr600_mt47h128m8_3_266_cl5_async.o +endif -$(LIB): $(obj).depend $(OBJS) $(SOBJS) - $(call cmd_link_o_target, $(OBJS) $(SOBJS)) +SRCS := $(START:.o=.S) $(COBJS-y:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS-y)) +START := $(addprefix $(obj),$(START)) + +all: $(obj).depend $(LIB) + +$(LIB): $(OBJS) + $(call cmd_link_o_target, $(OBJS)) ######################################################################### diff --git a/arch/arm/cpu/arm926ejs/spear/cpu.c b/arch/arm/cpu/arm926ejs/spear/cpu.c new file mode 100644 index 0000000..e299de3 --- /dev/null +++ b/arch/arm/cpu/arm926ejs/spear/cpu.c @@ -0,0 +1,87 @@ +/* + * (C) Copyright 2010 + * Vipin Kumar, ST Micoelectronics, vipin.kumar@st.com. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <asm/io.h> +#include <asm/arch/hardware.h> +#include <asm/arch/spr_misc.h> + +int arch_cpu_init(void) +{ + struct misc_regs *const misc_p = + (struct misc_regs *)CONFIG_SPEAR_MISCBASE; + u32 periph1_clken, periph_clk_cfg; + + periph1_clken = readl(&misc_p->periph1_clken); + +#if defined(CONFIG_SPEAR3XX) + periph1_clken |= MISC_GPT2ENB; +#elif defined(CONFIG_SPEAR600) + periph1_clken |= MISC_GPT3ENB; +#endif + +#if defined(CONFIG_PL011_SERIAL) + periph1_clken |= MISC_UART0ENB; + + periph_clk_cfg = readl(&misc_p->periph_clk_cfg); + periph_clk_cfg &= ~CONFIG_SPEAR_UARTCLKMSK; + periph_clk_cfg |= CONFIG_SPEAR_UART48M; + writel(periph_clk_cfg, &misc_p->periph_clk_cfg); +#endif +#if defined(CONFIG_DESIGNWARE_ETH) + periph1_clken |= MISC_ETHENB; +#endif +#if defined(CONFIG_DW_UDC) + periph1_clken |= MISC_USBDENB; +#endif +#if defined(CONFIG_DW_I2C) + periph1_clken |= MISC_I2CENB; +#endif +#if defined(CONFIG_ST_SMI) + periph1_clken |= MISC_SMIENB; +#endif +#if defined(CONFIG_NAND_FSMC) + periph1_clken |= MISC_FSMCENB; +#endif + + writel(periph1_clken, &misc_p->periph1_clken); + return 0; +} + +#ifdef CONFIG_DISPLAY_CPUINFO +int print_cpuinfo(void) +{ +#ifdef CONFIG_SPEAR300 + printf("CPU: SPEAr300\n"); +#elif defined(CONFIG_SPEAR310) + printf("CPU: SPEAr310\n"); +#elif defined(CONFIG_SPEAR320) + printf("CPU: SPEAr320\n"); +#elif defined(CONFIG_SPEAR600) + printf("CPU: SPEAr600\n"); +#else +#error CPU not supported in spear platform +#endif + return 0; +} +#endif diff --git a/arch/arm/cpu/arm926ejs/spear/spear600.c b/arch/arm/cpu/arm926ejs/spear/spear600.c new file mode 100644 index 0000000..ff52131 --- /dev/null +++ b/arch/arm/cpu/arm926ejs/spear/spear600.c @@ -0,0 +1,236 @@ +/* + * (C) Copyright 2000-2009 + * Viresh Kumar, ST Microelectronics, viresh.kumar@st.com + * Vipin Kumar, ST Microelectronics, vipin.kumar@st.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <asm/hardware.h> +#include <asm/io.h> +#include <asm/arch/spr_misc.h> +#include <asm/arch/spr_defs.h> + +#define FALSE 0 +#define TRUE (!FALSE) + +static void sel_1v8(void) +{ + struct misc_regs *misc_p = (struct misc_regs *)CONFIG_SPEAR_MISCBASE; + u32 ddr1v8, ddr2v5; + + ddr2v5 = readl(&misc_p->ddr_2v5_compensation); + ddr2v5 &= 0x8080ffc0; + ddr2v5 |= 0x78000003; + writel(ddr2v5, &misc_p->ddr_2v5_compensation); + + ddr1v8 = readl(&misc_p->ddr_1v8_compensation); + ddr1v8 &= 0x8080ffc0; + ddr1v8 |= 0x78000010; + writel(ddr1v8, &misc_p->ddr_1v8_compensation); + + while (!(readl(&misc_p->ddr_1v8_compensation) & DDR_COMP_ACCURATE)) + ; +} + +static void sel_2v5(void) +{ + struct misc_regs *misc_p = (struct misc_regs *)CONFIG_SPEAR_MISCBASE; + u32 ddr1v8, ddr2v5; + + ddr1v8 = readl(&misc_p->ddr_1v8_compensation); + ddr1v8 &= 0x8080ffc0; + ddr1v8 |= 0x78000003; + writel(ddr1v8, &misc_p->ddr_1v8_compensation); + + ddr2v5 = readl(&misc_p->ddr_2v5_compensation); + ddr2v5 &= 0x8080ffc0; + ddr2v5 |= 0x78000010; + writel(ddr2v5, &misc_p->ddr_2v5_compensation); + + while (!(readl(&misc_p->ddr_2v5_compensation) & DDR_COMP_ACCURATE)) + ; +} + +/* + * plat_ddr_init: + */ +void plat_ddr_init(void) +{ + struct misc_regs *misc_p = (struct misc_regs *)CONFIG_SPEAR_MISCBASE; + u32 ddrpad; + u32 core3v3, ddr1v8, ddr2v5; + + /* DDR pad register configurations */ + ddrpad = readl(&misc_p->ddr_pad); + ddrpad &= ~DDR_PAD_CNF_MSK; + +#if (CONFIG_DDR_HCLK) + ddrpad |= 0xEAAB; +#elif (CONFIG_DDR_2HCLK) + ddrpad |= 0xEAAD; +#elif (CONFIG_DDR_PLL2) + ddrpad |= 0xEAAD; +#endif + writel(ddrpad, &misc_p->ddr_pad); + + /* Compensation register configurations */ + core3v3 = readl(&misc_p->core_3v3_compensation); + core3v3 &= 0x8080ffe0; + core3v3 |= 0x78000002; + writel(core3v3, &misc_p->core_3v3_compensation); + + ddr1v8 = readl(&misc_p->ddr_1v8_compensation); + ddr1v8 &= 0x8080ffc0; + ddr1v8 |= 0x78000004; + writel(ddr1v8, &misc_p->ddr_1v8_compensation); + + ddr2v5 = readl(&misc_p->ddr_2v5_compensation); + ddr2v5 &= 0x8080ffc0; + ddr2v5 |= 0x78000004; + writel(ddr2v5, &misc_p->ddr_2v5_compensation); + + if ((readl(&misc_p->ddr_pad) & DDR_PAD_SW_CONF) == DDR_PAD_SW_CONF) { + /* Software memory configuration */ + if (readl(&misc_p->ddr_pad) & DDR_PAD_SSTL_SEL) + sel_1v8(); + else + sel_2v5(); + } else { + /* Hardware memory configuration */ + if (readl(&misc_p->ddr_pad) & DDR_PAD_DRAM_TYPE) + sel_1v8(); + else + sel_2v5(); + } +} + +/* + * soc_init: + */ +void soc_init(void) +{ + /* Nothing to be done for SPEAr600 */ +} + +/* + * xxx_boot_selected: + * + * return TRUE if the particular booting option is selected + * return FALSE otherwise + */ +static u32 read_bootstrap(void) +{ + return (readl(CONFIG_SPEAR_BOOTSTRAPCFG) >> CONFIG_SPEAR_BOOTSTRAPSHFT) + & CONFIG_SPEAR_BOOTSTRAPMASK; +} + +int snor_boot_selected(void) +{ + u32 bootstrap = read_bootstrap(); + + if (SNOR_BOOT_SUPPORTED) { + /* Check whether SNOR boot is selected */ + if ((bootstrap & CONFIG_SPEAR_ONLYSNORBOOT) == + CONFIG_SPEAR_ONLYSNORBOOT) + return TRUE; + + if ((bootstrap & CONFIG_SPEAR_NORNANDBOOT) == + CONFIG_SPEAR_NORNAND8BOOT) + return TRUE; + + if ((bootstrap & CONFIG_SPEAR_NORNANDBOOT) == + CONFIG_SPEAR_NORNAND16BOOT) + return TRUE; + } + + return FALSE; +} + +int nand_boot_selected(void) +{ + u32 bootstrap = read_bootstrap(); + + if (NAND_BOOT_SUPPORTED) { + /* Check whether NAND boot is selected */ + if ((bootstrap & CONFIG_SPEAR_NORNANDBOOT) == + CONFIG_SPEAR_NORNAND8BOOT) + return TRUE; + + if ((bootstrap & CONFIG_SPEAR_NORNANDBOOT) == + CONFIG_SPEAR_NORNAND16BOOT) + return TRUE; + } + + return FALSE; +} + +int pnor_boot_selected(void) +{ + /* Parallel NOR boot is not selected in any SPEAr600 revision */ + return FALSE; +} + +int usb_boot_selected(void) +{ + u32 bootstrap = read_bootstrap(); + + if (USB_BOOT_SUPPORTED) { + /* Check whether USB boot is selected */ + if (!(bootstrap & CONFIG_SPEAR_USBBOOT)) + return TRUE; + } + + return FALSE; +} + +int tftp_boot_selected(void) +{ + /* TFTP boot is not selected in any SPEAr600 revision */ + return FALSE; +} + +int uart_boot_selected(void) +{ + /* UART boot is not selected in any SPEAr600 revision */ + return FALSE; +} + +int spi_boot_selected(void) +{ + /* SPI boot is not selected in any SPEAr600 revision */ + return FALSE; +} + +int i2c_boot_selected(void) +{ + /* I2C boot is not selected in any SPEAr600 revision */ + return FALSE; +} + +int mmc_boot_selected(void) +{ + return FALSE; +} + +void plat_late_init(void) +{ + spear_late_init(); +} diff --git a/arch/arm/cpu/arm926ejs/spear/spl.c b/arch/arm/cpu/arm926ejs/spear/spl.c new file mode 100644 index 0000000..48e6efb --- /dev/null +++ b/arch/arm/cpu/arm926ejs/spear/spl.c @@ -0,0 +1,282 @@ +/* + * Copyright (C) 2011 + * Heiko Schocher, DENX Software Engineering, hs@denx.de. + * + * Copyright (C) 2012 Stefan Roese <sr@denx.de> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <version.h> +#include <asm/io.h> +#include <asm/arch/hardware.h> +#include <asm/arch/spr_defs.h> +#include <asm/arch/spr_misc.h> +#include <asm/arch/spr_syscntl.h> + +inline void hang(void) +{ + serial_puts("### ERROR ### Please RESET the board ###\n"); + for (;;) + ; +} + +static void ddr_clock_init(void) +{ + struct misc_regs *misc_p = (struct misc_regs *)CONFIG_SPEAR_MISCBASE; + u32 clkenb, ddrpll; + + clkenb = readl(&misc_p->periph1_clken); + clkenb &= ~PERIPH_MPMCMSK; + clkenb |= PERIPH_MPMC_WE; + + /* Intentionally done twice */ + writel(clkenb, &misc_p->periph1_clken); + writel(clkenb, &misc_p->periph1_clken); + + ddrpll = readl(&misc_p->pll_ctr_reg); + ddrpll &= ~MEM_CLK_SEL_MSK; +#if (CONFIG_DDR_HCLK) + ddrpll |= MEM_CLK_HCLK; +#elif (CONFIG_DDR_2HCLK) + ddrpll |= MEM_CLK_2HCLK; +#elif (CONFIG_DDR_PLL2) + ddrpll |= MEM_CLK_PLL2; +#else +#error "please define one of CONFIG_DDR_(HCLK|2HCLK|PLL2)" +#endif + writel(ddrpll, &misc_p->pll_ctr_reg); + + writel(readl(&misc_p->periph1_clken) | PERIPH_MPMC_EN, + &misc_p->periph1_clken); +} + +static void mpmc_init_values(void) +{ + u32 i; + u32 *mpmc_reg_p = (u32 *)CONFIG_SPEAR_MPMCBASE; + u32 *mpmc_val_p = &mpmc_conf_vals[0]; + + for (i = 0; i < CONFIG_SPEAR_MPMCREGS; i++, mpmc_reg_p++, mpmc_val_p++) + writel(*mpmc_val_p, mpmc_reg_p); + + mpmc_reg_p = (u32 *)CONFIG_SPEAR_MPMCBASE; + + /* + * MPMC controller start + * MPMC waiting for DLLLOCKREG high + */ + writel(0x01000100, &mpmc_reg_p[7]); + + while (!(readl(&mpmc_reg_p[3]) & 0x10000)) + ; +} + +static void mpmc_init(void) +{ + /* Clock related settings for DDR */ + ddr_clock_init(); + + /* + * DDR pad register bits are different for different SoCs + * Compensation values are also handled separately + */ + plat_ddr_init(); + + /* Initialize mpmc register values */ + mpmc_init_values(); +} + +static void pll_init(void) +{ + struct misc_regs *misc_p = (struct misc_regs *)CONFIG_SPEAR_MISCBASE; + + /* Initialize PLLs */ + writel(FREQ_332, &misc_p->pll1_frq); + writel(0x1C0A, &misc_p->pll1_cntl); + writel(0x1C0E, &misc_p->pll1_cntl); + writel(0x1C06, &misc_p->pll1_cntl); + writel(0x1C0E, &misc_p->pll1_cntl); + + writel(FREQ_332, &misc_p->pll2_frq); + writel(0x1C0A, &misc_p->pll2_cntl); + writel(0x1C0E, &misc_p->pll2_cntl); + writel(0x1C06, &misc_p->pll2_cntl); + writel(0x1C0E, &misc_p->pll2_cntl); + + /* wait for pll locks */ + while (!(readl(&misc_p->pll1_cntl) & 0x1)) + ; + while (!(readl(&misc_p->pll2_cntl) & 0x1)) + ; +} + +static void mac_init(void) +{ + struct misc_regs *misc_p = (struct misc_regs *)CONFIG_SPEAR_MISCBASE; + + writel(readl(&misc_p->periph1_clken) & (~PERIPH_GMAC), + &misc_p->periph1_clken); + + writel(SYNTH23, &misc_p->gmac_synth_clk); + + switch (get_socrev()) { + case SOC_SPEAR600_AA: + case SOC_SPEAR600_AB: + case SOC_SPEAR600_BA: + case SOC_SPEAR600_BB: + case SOC_SPEAR600_BC: + case SOC_SPEAR600_BD: + writel(0x0, &misc_p->gmac_ctr_reg); + break; + + case SOC_SPEAR300: + case SOC_SPEAR310: + case SOC_SPEAR320: + writel(0x4, &misc_p->gmac_ctr_reg); + break; + } + + writel(readl(&misc_p->periph1_clken) | PERIPH_GMAC, + &misc_p->periph1_clken); + + writel(readl(&misc_p->periph1_rst) | PERIPH_GMAC, + &misc_p->periph1_rst); + writel(readl(&misc_p->periph1_rst) & (~PERIPH_GMAC), + &misc_p->periph1_rst); +} + +static void sys_init(void) +{ + struct misc_regs *misc_p = (struct misc_regs *)CONFIG_SPEAR_MISCBASE; + struct syscntl_regs *syscntl_p = + (struct syscntl_regs *)CONFIG_SPEAR_SYSCNTLBASE; + + /* Set system state to SLOW */ + writel(SLOW, &syscntl_p->scctrl); + writel(PLL_TIM << 3, &syscntl_p->scpllctrl); + + /* Initialize PLLs */ + pll_init(); + + /* + * Ethernet configuration + * To be done only if the tftp boot is not selected already + * Boot code ensures the correct configuration in tftp booting + */ + if (!tftp_boot_selected()) + mac_init(); + + writel(RTC_DISABLE | PLLTIMEEN, &misc_p->periph_clk_cfg); + writel(0x555, &misc_p->amba_clk_cfg); + + writel(NORMAL, &syscntl_p->scctrl); + + /* Wait for system to switch to normal mode */ + while (((readl(&syscntl_p->scctrl) >> MODE_SHIFT) & MODE_MASK) + != NORMAL) + ; +} + +/* + * get_socrev + * + * Get SoC Revision. + * @return SOC_SPEARXXX + */ +int get_socrev(void) +{ +#if defined(CONFIG_SPEAR600) + struct misc_regs *misc_p = (struct misc_regs *)CONFIG_SPEAR_MISCBASE; + u32 soc_id = readl(&misc_p->soc_core_id); + u32 pri_socid = (soc_id >> SOC_PRI_SHFT) & 0xFF; + u32 sec_socid = (soc_id >> SOC_SEC_SHFT) & 0xFF; + + if ((pri_socid == 'B') && (sec_socid == 'B')) + return SOC_SPEAR600_BB; + else if ((pri_socid == 'B') && (sec_socid == 'C')) + return SOC_SPEAR600_BC; + else if ((pri_socid == 'B') && (sec_socid == 'D')) + return SOC_SPEAR600_BD; + else if (soc_id == 0) + return SOC_SPEAR600_BA; + else + return SOC_SPEAR_NA; +#elif defined(CONFIG_SPEAR300) + return SOC_SPEAR300; +#elif defined(CONFIG_SPEAR310) + return SOC_SPEAR310; +#elif defined(CONFIG_SPEAR320) + return SOC_SPEAR320; +#endif +} + +void lowlevel_init(void) +{ + struct misc_regs *misc_p = (struct misc_regs *)CONFIG_SPEAR_MISCBASE; + const char *u_boot_rev = U_BOOT_VERSION; + + /* Initialize PLLs */ + sys_init(); + + /* Initialize UART */ + serial_init(); + + /* Print U-Boot SPL version string */ + serial_puts("\nU-Boot SPL "); + /* Avoid a second "U-Boot" coming from this string */ + u_boot_rev = &u_boot_rev[7]; + serial_puts(u_boot_rev); + serial_puts(" ("); + serial_puts(U_BOOT_DATE); + serial_puts(" - "); + serial_puts(U_BOOT_TIME); + serial_puts(")\n"); + +#if defined(CONFIG_OS_BOOT) + writel(readl(&misc_p->periph1_clken) | PERIPH_UART1, + &misc_p->periph1_clken); +#endif + + /* Enable IPs (release reset) */ + writel(PERIPH_RST_ALL, &misc_p->periph1_rst); + + /* Initialize MPMC */ + serial_puts("Configure DDR\n"); + mpmc_init(); + + /* SoC specific initialization */ + soc_init(); +} + +void spear_late_init(void) +{ + struct misc_regs *misc_p = (struct misc_regs *)CONFIG_SPEAR_MISCBASE; + + writel(0x80000007, &misc_p->arb_icm_ml1); + writel(0x80000007, &misc_p->arb_icm_ml2); + writel(0x80000007, &misc_p->arb_icm_ml3); + writel(0x80000007, &misc_p->arb_icm_ml4); + writel(0x80000007, &misc_p->arb_icm_ml5); + writel(0x80000007, &misc_p->arb_icm_ml6); + writel(0x80000007, &misc_p->arb_icm_ml7); + writel(0x80000007, &misc_p->arb_icm_ml8); + writel(0x80000007, &misc_p->arb_icm_ml9); +} diff --git a/arch/arm/cpu/arm926ejs/spear/spl_boot.c b/arch/arm/cpu/arm926ejs/spear/spl_boot.c new file mode 100644 index 0000000..f2f9a49 --- /dev/null +++ b/arch/arm/cpu/arm926ejs/spear/spl_boot.c @@ -0,0 +1,197 @@ +/* + * (C) Copyright 2000-2009 + * Vipin Kumar, ST Microelectronics, vipin.kumar@st.com + * + * Copyright (C) 2012 Stefan Roese <sr@denx.de> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <image.h> +#include <linux/compiler.h> +#include <asm/io.h> +#include <asm/arch/spr_defs.h> +#include <linux/mtd/st_smi.h> + +static const char kernel_name[] = "Linux"; +static const char loader_name[] = "U-Boot"; + +int image_check_header(image_header_t *hdr, const char *name) +{ + if (image_check_magic(hdr) && + (!strncmp(image_get_name(hdr), name, strlen(name))) && + image_check_hcrc(hdr)) { + return 1; + } + return 0; +} + +int image_check_data(image_header_t *hdr) +{ + if (image_check_dcrc(hdr)) + return 1; + + return 0; +} + +/* + * SNOR (Serial NOR flash) related functions + */ +void snor_init(void) +{ + struct smi_regs *const smicntl = + (struct smi_regs * const)CONFIG_SYS_SMI_BASE; + + /* Setting the fast mode values. SMI working at 166/4 = 41.5 MHz */ + writel(HOLD1 | FAST_MODE | BANK_EN | DSEL_TIME | PRESCAL4, + &smicntl->smi_cr1); +} + +static int snor_image_load(u8 *load_addr, void (**image_p)(void), + const char *image_name) +{ + image_header_t *header; + + /* + * Since calculating the crc in the SNOR flash does not + * work, we copy the image to the destination address + * minus the header size. And point the header to this + * new destination. This will not work for address 0 + * of course. + */ + header = (image_header_t *)load_addr; + memcpy((ulong *)(image_get_load(header) - sizeof(image_header_t)), + (const ulong *)load_addr, + image_get_data_size(header) + sizeof(image_header_t)); + header = (image_header_t *)(image_get_load(header) - + sizeof(image_header_t)); + + if (image_check_header(header, image_name)) { + if (image_check_data(header)) { + /* Jump to boot image */ + *image_p = (void *)image_get_load(header); + return 1; + } + } + + return 0; +} + +static void boot_image(void (*image)(void)) +{ + void (*funcp)(void) __noreturn = (void *)image; + + (*funcp)(); +} + +/* + * spl_boot: + * + * All supported booting types of all supported SoCs are listed here. + * Generic readback APIs are provided for each supported booting type + * eg. nand_read_skip_bad + */ +u32 spl_boot(void) +{ + void (*image)(void); + +#ifdef CONFIG_SPEAR_USBTTY + plat_late_init(); + return 1; +#endif + + /* + * All the supported booting devices are listed here. Each of + * the booting type supported by the platform would define the + * macro xxx_BOOT_SUPPORTED to TRUE. + */ + + if (SNOR_BOOT_SUPPORTED && snor_boot_selected()) { + /* SNOR-SMI initialization */ + snor_init(); + + serial_puts("Booting via SNOR\n"); + /* Serial NOR booting */ + if (1 == snor_image_load((u8 *)CONFIG_SYS_UBOOT_BASE, + &image, loader_name)) { + /* Platform related late initialasations */ + plat_late_init(); + + /* Jump to boot image */ + serial_puts("Jumping to U-Boot\n"); + boot_image(image); + return 1; + } + } + + if (NAND_BOOT_SUPPORTED && nand_boot_selected()) { + /* NAND booting */ + /* Not ported from XLoader to SPL yet */ + return 0; + } + + if (PNOR_BOOT_SUPPORTED && pnor_boot_selected()) { + /* PNOR booting */ + /* Not ported from XLoader to SPL yet */ + return 0; + } + + if (MMC_BOOT_SUPPORTED && mmc_boot_selected()) { + /* MMC booting */ + /* Not ported from XLoader to SPL yet */ + return 0; + } + + if (SPI_BOOT_SUPPORTED && spi_boot_selected()) { + /* SPI booting */ + /* Not supported for any platform as of now */ + return 0; + } + + if (I2C_BOOT_SUPPORTED && i2c_boot_selected()) { + /* I2C booting */ + /* Not supported for any platform as of now */ + return 0; + } + + /* + * All booting types without memory are listed as below + * Control has to be returned to BootROM in case of all + * the following booting scenarios + */ + + if (USB_BOOT_SUPPORTED && usb_boot_selected()) { + plat_late_init(); + return 1; + } + + if (TFTP_BOOT_SUPPORTED && tftp_boot_selected()) { + plat_late_init(); + return 1; + } + + if (UART_BOOT_SUPPORTED && uart_boot_selected()) { + plat_late_init(); + return 1; + } + + /* Ideally, the control should not reach here. */ + hang(); +} diff --git a/arch/arm/cpu/arm926ejs/spear/spr600_mt47h128m8_3_266_cl5_async.c b/arch/arm/cpu/arm926ejs/spear/spr600_mt47h128m8_3_266_cl5_async.c new file mode 100644 index 0000000..5edc115 --- /dev/null +++ b/arch/arm/cpu/arm926ejs/spear/spr600_mt47h128m8_3_266_cl5_async.c @@ -0,0 +1,130 @@ +/* + * (C) Copyright 2000-2009 + * Vipin Kumar, ST Microelectronics, vipin.kumar@st.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> + +#if (CONFIG_DDR_PLL2) + +const u32 mpmc_conf_vals[CONFIG_SPEAR_MPMCREGS] = { + 0x00000001, + 0x00000000, + 0x01000000, + 0x00000101, + 0x00000001, + 0x01000000, + 0x00010001, + 0x00000100, + 0x00010001, + 0x00000003, + 0x01000201, + 0x06000202, + 0x06060106, + 0x03050502, + 0x03040404, + 0x02020503, + 0x02010106, + 0x03000404, + 0x02030202, + 0x03000204, + 0x0707073f, + 0x07070707, + 0x06060607, + 0x06060606, + 0x05050506, + 0x05050505, + 0x04040405, + 0x04040404, + 0x03030304, + 0x03030303, + 0x02020203, + 0x02020202, + 0x01010102, + 0x01010101, + 0x08080a01, + 0x0000023f, + 0x00040800, + 0x00000000, + 0x00000f02, + 0x00001b1b, + 0x7f000000, + 0x005f0000, + 0x1c040b6a, + 0x00640064, + 0x00640064, + 0x00640064, + 0x00000064, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x000007ff, + 0x00000000, + 0x47ec00c8, + 0x00c8001f, + 0x00000000, + 0x0000cd98, + 0x00000000, + 0x03030100, + 0x03030303, + 0x03030303, + 0x03030303, + 0x00270000, + 0x00250027, + 0x00300000, + 0x008900b7, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000 +}; +#endif diff --git a/arch/arm/cpu/arm926ejs/spear/spr600_mt47h32m16_333_cl5_psync.c b/arch/arm/cpu/arm926ejs/spear/spr600_mt47h32m16_333_cl5_psync.c new file mode 100644 index 0000000..616b861 --- /dev/null +++ b/arch/arm/cpu/arm926ejs/spear/spr600_mt47h32m16_333_cl5_psync.c @@ -0,0 +1,135 @@ +/* + * (C) Copyright 2000-2009 + * Vipin Kumar, ST Microelectronics, vipin.kumar@st.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> + +#if (CONFIG_DDR_PLL2 || CONFIG_DDR_2HCLK) + +const u32 mpmc_conf_vals[CONFIG_SPEAR_MPMCREGS] = { +#if (CONFIG_DDR_PLL2) + 0x00000001, + 0x00000000, +#elif (CONFIG_DDR_2HCLK) + 0x02020201, + 0x02020202, +#endif + 0x01000000, + 0x00000101, + 0x00000101, + 0x01000000, + 0x00010001, + 0x00000100, + 0x01010001, + 0x00000201, + 0x01000101, + 0x06000002, + 0x06060106, + 0x03050502, + 0x03040404, + 0x02020503, + 0x02010106, + 0x03000405, + 0x03040202, + 0x04000305, + 0x0707073f, + 0x07070707, + 0x06060607, + 0x06060606, + 0x05050506, + 0x05050505, + 0x04040405, + 0x04040404, + 0x03030304, + 0x03030303, + 0x02020203, + 0x02020202, + 0x01010102, + 0x01010101, + 0x0a0a0a01, + 0x0000023f, + 0x00050a00, + 0x11000000, + 0x00001302, + 0x00000A0A, + 0x72000000, + 0x00550000, + 0x2b050e86, + 0x00640064, + 0x00640064, + 0x00640064, + 0x00000064, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00000a24, + 0x43C20000, + 0x5b1c00c8, + 0x00c8002e, + 0x00000000, + 0x0001046b, + 0x00000000, + 0x03030100, + 0x03030303, + 0x03030303, + 0x03030303, + 0x00210000, + 0x00010021, + 0x00200000, + 0x006c0090, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000 +}; +#endif diff --git a/arch/arm/cpu/arm926ejs/spear/spr600_mt47h32m16_37e_166_cl4_sync.c b/arch/arm/cpu/arm926ejs/spear/spr600_mt47h32m16_37e_166_cl4_sync.c new file mode 100644 index 0000000..b89f77d --- /dev/null +++ b/arch/arm/cpu/arm926ejs/spear/spr600_mt47h32m16_37e_166_cl4_sync.c @@ -0,0 +1,130 @@ +/* + * (C) Copyright 2000-2009 + * Vipin Kumar, ST Microelectronics, vipin.kumar@st.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> + +#if (CONFIG_DDR_HCLK) + +const u32 mpmc_conf_vals[CONFIG_SPEAR_MPMCREGS] = { + 0x03030301, + 0x03030303, + 0x01000000, + 0x00000101, + 0x00000001, + 0x01000000, + 0x00010001, + 0x00000100, + 0x00010001, + 0x00000003, + 0x01000201, + 0x06000202, + 0x06060106, + 0x03050502, + 0x03040404, + 0x02020503, + 0x02010106, + 0x03000404, + 0x02020202, + 0x03000203, + 0x0707073f, + 0x07070707, + 0x06060607, + 0x06060606, + 0x05050506, + 0x05050505, + 0x04040405, + 0x04040404, + 0x03030304, + 0x03030303, + 0x02020203, + 0x02020202, + 0x01010102, + 0x01010101, + 0x08080a01, + 0x0000023f, + 0x00030600, + 0x00000000, + 0x00000a02, + 0x00001c1c, + 0x7f000000, + 0x005f0000, + 0x12030743, + 0x00640064, + 0x00640064, + 0x00640064, + 0x00000064, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x0000050e, + 0x00000000, + 0x2d8900c8, + 0x00c80014, + 0x00000000, + 0x00008236, + 0x00000000, + 0x03030100, + 0x03030303, + 0x03030303, + 0x03030303, + 0x00400000, + 0x003a0040, + 0x00680000, + 0x00d80120, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000 +}; +#endif diff --git a/arch/arm/cpu/arm926ejs/spear/spr600_mt47h64m16_3_333_cl5_psync.c b/arch/arm/cpu/arm926ejs/spear/spr600_mt47h64m16_3_333_cl5_psync.c new file mode 100644 index 0000000..0c39cd1 --- /dev/null +++ b/arch/arm/cpu/arm926ejs/spear/spr600_mt47h64m16_3_333_cl5_psync.c @@ -0,0 +1,144 @@ +/* + * (C) Copyright 2000-2009 + * Vipin Kumar, ST Microelectronics, vipin.kumar@st.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> + +#if (CONFIG_DDR_PLL2 || CONFIG_DDR_2HCLK) + +const u32 mpmc_conf_vals[CONFIG_SPEAR_MPMCREGS] = { +#if (CONFIG_DDR_PLL2) + 0x00000001, + 0x00000000, +#elif (CONFIG_DDR_2HCLK) + 0x02020201, + 0x02020202, +#endif + 0x01000000, + 0x00000101, + 0x00000101, + 0x01000000, + 0x00010001, + 0x00000100, + 0x01010001, + 0x00000201, + 0x01000101, + 0x06000002, + 0x06060106, + 0x03050502, + 0x03040404, + 0x02020503, +#ifdef CONFIG_X600 + 0x02030206, +#else + 0x02010106, +#endif + 0x03000405, + 0x03040202, + 0x04000305, + 0x0707073f, + 0x07070707, + 0x06060607, + 0x06060606, + 0x05050506, + 0x05050505, + 0x04040405, + 0x04040404, + 0x03030304, + 0x03030303, + 0x02020203, + 0x02020202, + 0x01010102, + 0x01010101, + 0x0a0a0a01, + 0x0000023f, + 0x00050a00, + 0x11000000, + 0x00001302, + 0x00000A0A, +#ifdef CONFIG_X600 + 0x7f000000, + 0x005c0000, +#else + 0x72000000, + 0x00550000, +#endif + 0x2b050e86, + 0x00640064, + 0x00640064, + 0x00640064, + 0x00000064, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00200020, + 0x00000a24, + 0x43C20000, + 0x5b1c00c8, + 0x00c8002e, + 0x00000000, + 0x0001046b, + 0x00000000, + 0x03030100, + 0x03030303, + 0x03030303, + 0x03030303, + 0x00210000, + 0x00010021, + 0x00200000, + 0x006c0090, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x003fffff, + 0x003fffff, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000 +}; +#endif diff --git a/arch/arm/cpu/arm926ejs/spear/start.S b/arch/arm/cpu/arm926ejs/spear/start.S new file mode 100644 index 0000000..a103c0f --- /dev/null +++ b/arch/arm/cpu/arm926ejs/spear/start.S @@ -0,0 +1,122 @@ +/* + * armboot - Startup Code for ARM926EJS CPU-core + * + * Copyright (c) 2003 Texas Instruments + * + * ----- Adapted for OMAP1610 OMAP730 from ARM925t code ------ + * + * Copyright (c) 2001 Marius Gröger <mag@sysgo.de> + * Copyright (c) 2002 Alex Züpke <azu@sysgo.de> + * Copyright (c) 2002 Gary Jennejohn <garyj@denx.de> + * Copyright (c) 2003 Richard Woodruff <r-woodruff2@ti.com> + * Copyright (c) 2003 Kshitij <kshitij@ti.com> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + + +#include <config.h> + +.globl _start +_start: + b reset + ldr pc, _undefined_instruction + ldr pc, _software_interrupt + ldr pc, _prefetch_abort + ldr pc, _data_abort + ldr pc, _not_used + ldr pc, _irq + ldr pc, _fiq + +_undefined_instruction: +_software_interrupt: +_prefetch_abort: +_data_abort: +_not_used: +_irq: +_fiq: + .word infinite_loop + +infinite_loop: + b infinite_loop + +/* + ************************************************************************* + * + * Startup Code (reset vector) + * + * Below are the critical initializations already taken place in BootROM. + * So, these are not taken care in Xloader + * 1. Relocation to RAM + * 2. Initializing stacks + * + ************************************************************************* + */ + +/* + * the actual reset code + */ + +reset: +/* + * Xloader has to return back to BootROM in a few cases. + * eg. Ethernet boot, UART boot, USB boot + * Saving registers for returning back + */ + stmdb sp!, {r0-r12,r14} + bl cpu_init_crit +/* + * Clearing bss area is not done in Xloader. + * BSS area lies in the DDR location which is not yet initialized + * bss is assumed to be uninitialized. + */ + bl spl_boot + ldmia sp!, {r0-r12,pc} + +/* + ************************************************************************* + * + * CPU_init_critical registers + * + * setup important registers + * setup memory timing + * + ************************************************************************* + */ +cpu_init_crit: + /* + * flush v4 I/D caches + */ + mov r0, #0 + mcr p15, 0, r0, c7, c7, 0 /* flush v3/v4 cache */ + mcr p15, 0, r0, c8, c7, 0 /* flush v4 TLB */ + + /* + * enable instruction cache + */ + mrc p15, 0, r0, c1, c0, 0 + orr r0, r0, #0x00001000 /* set bit 12 (I) I-Cache */ + mcr p15, 0, r0, c1, c0, 0 + + /* + * Go setup Memory and board specific bits prior to relocation. + */ + stmdb sp!, {lr} + bl lowlevel_init /* go setup pll,mux,memory */ + ldmia sp!, {pc} diff --git a/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds new file mode 100644 index 0000000..afd3381 --- /dev/null +++ b/arch/arm/cpu/arm926ejs/spear/u-boot-spl.lds @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com> + * on behalf of DENX Software Engineering GmbH + * + * January 2004 - Changed to support H4 device + * Copyright (c) 2004-2008 Texas Instruments + * + * (C) Copyright 2002 + * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(_start) +SECTIONS +{ + . = 0x00000000; + + . = ALIGN(4); + .text : + { + arch/arm/cpu/arm926ejs/spear/start.o (.text) + *(.text) + } + + . = ALIGN(4); + .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + + . = ALIGN(4); + .data : { + *(.data) + } + + . = ALIGN(4); + __u_boot_cmd_start = .; + .u_boot_cmd : { *(.u_boot_cmd) } + __u_boot_cmd_end = .; + + . = ALIGN(4); + + .rel.dyn : { + __rel_dyn_start = .; + *(.rel*) + __rel_dyn_end = .; + } + + .dynsym : { + __dynsym_start = .; + *(.dynsym) + } + + .bss : { + . = ALIGN(4); + __bss_start = .; + *(.bss*) + . = ALIGN(4); + __bss_end__ = .; + } + + _end = .; + + /DISCARD/ : { *(.dynstr*) } + /DISCARD/ : { *(.dynsym*) } + /DISCARD/ : { *(.dynamic*) } + /DISCARD/ : { *(.hash*) } + /DISCARD/ : { *(.plt*) } + /DISCARD/ : { *(.interp*) } + /DISCARD/ : { *(.gnu*) } +} diff --git a/arch/arm/cpu/arm946es/start.S b/arch/arm/cpu/arm946es/start.S index 89ba558..b4d1d2d 100644 --- a/arch/arm/cpu/arm946es/start.S +++ b/arch/arm/cpu/arm946es/start.S @@ -236,10 +236,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - blo clbss_l + b clbss_l +clbss_e: #endif /* diff --git a/arch/arm/cpu/arm_intcm/start.S b/arch/arm/cpu/arm_intcm/start.S index 2033b36..b85e7d4 100644 --- a/arch/arm/cpu/arm_intcm/start.S +++ b/arch/arm/cpu/arm_intcm/start.S @@ -232,10 +232,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: bl coloured_LED_init bl red_led_on diff --git a/arch/arm/cpu/armv7/am33xx/board.c b/arch/arm/cpu/armv7/am33xx/board.c index 6b7a494..71309a7 100644 --- a/arch/arm/cpu/armv7/am33xx/board.c +++ b/arch/arm/cpu/armv7/am33xx/board.c @@ -40,6 +40,22 @@ struct uart_sys *uart_base = (struct uart_sys *)DEFAULT_UART_BASE; #define UART_SMART_IDLE_EN (0x1 << 0x3) #endif +#ifdef CONFIG_SPL_BUILD +/* Initialize timer */ +static void init_timer(void) +{ + /* Reset the Timer */ + writel(0x2, (&timer_base->tscir)); + + /* Wait until the reset is done */ + while (readl(&timer_base->tiocp_cfg) & 1) + ; + + /* Start the Timer */ + writel(0x1, (&timer_base->tclr)); +} +#endif + /* * early system init of muxing and clocks. */ @@ -88,20 +104,6 @@ void s_init(void) enable_mmc0_pin_mux(); } -/* Initialize timer */ -void init_timer(void) -{ - /* Reset the Timer */ - writel(0x2, (&timer_base->tscir)); - - /* Wait until the reset is done */ - while (readl(&timer_base->tiocp_cfg) & 1) - ; - - /* Start the Timer */ - writel(0x1, (&timer_base->tclr)); -} - #if defined(CONFIG_OMAP_HSMMC) && !defined(CONFIG_SPL_BUILD) int board_mmc_init(bd_t *bis) { diff --git a/arch/arm/cpu/armv7/config.mk b/arch/arm/cpu/armv7/config.mk index 5407cb6..560c084 100644 --- a/arch/arm/cpu/armv7/config.mk +++ b/arch/arm/cpu/armv7/config.mk @@ -26,6 +26,8 @@ PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float # supported by more tool-chains PF_CPPFLAGS_ARMV7 := $(call cc-option, -march=armv7-a, -march=armv5) PLATFORM_CPPFLAGS += $(PF_CPPFLAGS_ARMV7) +PF_CPPFLAGS_NO_UNALIGNED := $(call cc-option, -mno-unaligned-access,) +PLATFORM_CPPFLAGS += $(PF_CPPFLAGS_NO_UNALIGNED) # ========================================================================= # diff --git a/arch/arm/cpu/armv7/exynos/Makefile b/arch/arm/cpu/armv7/exynos/Makefile index 90ec2bd..9119961 100644 --- a/arch/arm/cpu/armv7/exynos/Makefile +++ b/arch/arm/cpu/armv7/exynos/Makefile @@ -22,7 +22,7 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(SOC).o -COBJS += clock.o power.o soc.o system.o +COBJS += clock.o power.o soc.o system.o pinmux.o SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS) $(SOBJS)) diff --git a/arch/arm/cpu/armv7/exynos/pinmux.c b/arch/arm/cpu/armv7/exynos/pinmux.c new file mode 100644 index 0000000..d2b7d2c --- /dev/null +++ b/arch/arm/cpu/armv7/exynos/pinmux.c @@ -0,0 +1,220 @@ +/* + * Copyright (c) 2012 Samsung Electronics. + * Abhilash Kesavan <a.kesavan@samsung.com> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <asm/arch/gpio.h> +#include <asm/arch/pinmux.h> +#include <asm/arch/sromc.h> + +static void exynos5_uart_config(int peripheral) +{ + struct exynos5_gpio_part1 *gpio1 = + (struct exynos5_gpio_part1 *) samsung_get_base_gpio_part1(); + struct s5p_gpio_bank *bank; + int i, start, count; + + switch (peripheral) { + case PERIPH_ID_UART0: + bank = &gpio1->a0; + start = 0; + count = 4; + break; + case PERIPH_ID_UART1: + bank = &gpio1->a0; + start = 4; + count = 4; + break; + case PERIPH_ID_UART2: + bank = &gpio1->a1; + start = 0; + count = 4; + break; + case PERIPH_ID_UART3: + bank = &gpio1->a1; + start = 4; + count = 2; + break; + } + for (i = start; i < start + count; i++) { + s5p_gpio_set_pull(bank, i, GPIO_PULL_NONE); + s5p_gpio_cfg_pin(bank, i, GPIO_FUNC(0x2)); + } +} + +static int exynos5_mmc_config(int peripheral, int flags) +{ + struct exynos5_gpio_part1 *gpio1 = + (struct exynos5_gpio_part1 *) samsung_get_base_gpio_part1(); + struct s5p_gpio_bank *bank, *bank_ext; + int i; + + switch (peripheral) { + case PERIPH_ID_SDMMC0: + bank = &gpio1->c0; + bank_ext = &gpio1->c1; + break; + case PERIPH_ID_SDMMC1: + bank = &gpio1->c1; + bank_ext = NULL; + break; + case PERIPH_ID_SDMMC2: + bank = &gpio1->c2; + bank_ext = &gpio1->c3; + break; + case PERIPH_ID_SDMMC3: + bank = &gpio1->c3; + bank_ext = NULL; + break; + } + if ((flags & PINMUX_FLAG_8BIT_MODE) && !bank_ext) { + debug("SDMMC device %d does not support 8bit mode", + peripheral); + return -1; + } + if (flags & PINMUX_FLAG_8BIT_MODE) { + for (i = 3; i <= 6; i++) { + s5p_gpio_cfg_pin(bank_ext, i, GPIO_FUNC(0x3)); + s5p_gpio_set_pull(bank_ext, i, GPIO_PULL_UP); + s5p_gpio_set_drv(bank_ext, i, GPIO_DRV_4X); + } + } + for (i = 0; i < 2; i++) { + s5p_gpio_cfg_pin(bank, i, GPIO_FUNC(0x2)); + s5p_gpio_set_pull(bank, i, GPIO_PULL_NONE); + s5p_gpio_set_drv(bank, i, GPIO_DRV_4X); + } + for (i = 3; i <= 6; i++) { + s5p_gpio_cfg_pin(bank, i, GPIO_FUNC(0x2)); + s5p_gpio_set_pull(bank, i, GPIO_PULL_UP); + s5p_gpio_set_drv(bank, i, GPIO_DRV_4X); + } + return 0; +} + +static void exynos5_sromc_config(int flags) +{ + struct exynos5_gpio_part1 *gpio1 = + (struct exynos5_gpio_part1 *) samsung_get_base_gpio_part1(); + int i; + + /* + * SROM:CS1 and EBI + * + * GPY0[0] SROM_CSn[0] + * GPY0[1] SROM_CSn[1](2) + * GPY0[2] SROM_CSn[2] + * GPY0[3] SROM_CSn[3] + * GPY0[4] EBI_OEn(2) + * GPY0[5] EBI_EEn(2) + * + * GPY1[0] EBI_BEn[0](2) + * GPY1[1] EBI_BEn[1](2) + * GPY1[2] SROM_WAIT(2) + * GPY1[3] EBI_DATA_RDn(2) + */ + s5p_gpio_cfg_pin(&gpio1->y0, (flags & PINMUX_FLAG_BANK), + GPIO_FUNC(2)); + s5p_gpio_cfg_pin(&gpio1->y0, 4, GPIO_FUNC(2)); + s5p_gpio_cfg_pin(&gpio1->y0, 5, GPIO_FUNC(2)); + + for (i = 0; i < 4; i++) + s5p_gpio_cfg_pin(&gpio1->y1, i, GPIO_FUNC(2)); + + /* + * EBI: 8 Addrss Lines + * + * GPY3[0] EBI_ADDR[0](2) + * GPY3[1] EBI_ADDR[1](2) + * GPY3[2] EBI_ADDR[2](2) + * GPY3[3] EBI_ADDR[3](2) + * GPY3[4] EBI_ADDR[4](2) + * GPY3[5] EBI_ADDR[5](2) + * GPY3[6] EBI_ADDR[6](2) + * GPY3[7] EBI_ADDR[7](2) + * + * EBI: 16 Data Lines + * + * GPY5[0] EBI_DATA[0](2) + * GPY5[1] EBI_DATA[1](2) + * GPY5[2] EBI_DATA[2](2) + * GPY5[3] EBI_DATA[3](2) + * GPY5[4] EBI_DATA[4](2) + * GPY5[5] EBI_DATA[5](2) + * GPY5[6] EBI_DATA[6](2) + * GPY5[7] EBI_DATA[7](2) + * + * GPY6[0] EBI_DATA[8](2) + * GPY6[1] EBI_DATA[9](2) + * GPY6[2] EBI_DATA[10](2) + * GPY6[3] EBI_DATA[11](2) + * GPY6[4] EBI_DATA[12](2) + * GPY6[5] EBI_DATA[13](2) + * GPY6[6] EBI_DATA[14](2) + * GPY6[7] EBI_DATA[15](2) + */ + for (i = 0; i < 8; i++) { + s5p_gpio_cfg_pin(&gpio1->y3, i, GPIO_FUNC(2)); + s5p_gpio_set_pull(&gpio1->y3, i, GPIO_PULL_UP); + + s5p_gpio_cfg_pin(&gpio1->y5, i, GPIO_FUNC(2)); + s5p_gpio_set_pull(&gpio1->y5, i, GPIO_PULL_UP); + + s5p_gpio_cfg_pin(&gpio1->y6, i, GPIO_FUNC(2)); + s5p_gpio_set_pull(&gpio1->y6, i, GPIO_PULL_UP); + } +} + +static int exynos5_pinmux_config(int peripheral, int flags) +{ + switch (peripheral) { + case PERIPH_ID_UART0: + case PERIPH_ID_UART1: + case PERIPH_ID_UART2: + case PERIPH_ID_UART3: + exynos5_uart_config(peripheral); + break; + case PERIPH_ID_SDMMC0: + case PERIPH_ID_SDMMC1: + case PERIPH_ID_SDMMC2: + case PERIPH_ID_SDMMC3: + return exynos5_mmc_config(peripheral, flags); + case PERIPH_ID_SROMC: + exynos5_sromc_config(flags); + break; + default: + debug("%s: invalid peripheral %d", __func__, peripheral); + return -1; + } + + return 0; +} + +int exynos_pinmux_config(int peripheral, int flags) +{ + if (cpu_is_exynos5()) + return exynos5_pinmux_config(peripheral, flags); + else { + debug("pinmux functionality not supported\n"); + return -1; + } +} diff --git a/arch/arm/cpu/armv7/exynos/power.c b/arch/arm/cpu/armv7/exynos/power.c index c765304..4116781 100644 --- a/arch/arm/cpu/armv7/exynos/power.c +++ b/arch/arm/cpu/armv7/exynos/power.c @@ -52,3 +52,25 @@ void set_mipi_phy_ctrl(unsigned int dev_index, unsigned int enable) if (cpu_is_exynos4()) exynos4_mipi_phy_control(dev_index, enable); } + +void exynos5_set_usbhost_phy_ctrl(unsigned int enable) +{ + struct exynos5_power *power = + (struct exynos5_power *)samsung_get_base_power(); + + if (enable) { + /* Enabling USBHOST_PHY */ + setbits_le32(&power->usbhost_phy_control, + POWER_USB_HOST_PHY_CTRL_EN); + } else { + /* Disabling USBHOST_PHY */ + clrbits_le32(&power->usbhost_phy_control, + POWER_USB_HOST_PHY_CTRL_EN); + } +} + +void set_usbhost_phy_ctrl(unsigned int enable) +{ + if (cpu_is_exynos5()) + exynos5_set_usbhost_phy_ctrl(enable); +} diff --git a/arch/arm/cpu/armv7/exynos/system.c b/arch/arm/cpu/armv7/exynos/system.c index 6c34730..4426611 100644 --- a/arch/arm/cpu/armv7/exynos/system.c +++ b/arch/arm/cpu/armv7/exynos/system.c @@ -25,6 +25,27 @@ #include <asm/io.h> #include <asm/arch/system.h> +static void exynos5_set_usbhost_mode(unsigned int mode) +{ + struct exynos5_sysreg *sysreg = + (struct exynos5_sysreg *)samsung_get_base_sysreg(); + + /* Setting USB20PHY_CONFIG register to USB 2.0 HOST link */ + if (mode == USB20_PHY_CFG_HOST_LINK_EN) { + setbits_le32(&sysreg->usb20phy_cfg, + USB20_PHY_CFG_HOST_LINK_EN); + } else { + clrbits_le32(&sysreg->usb20phy_cfg, + USB20_PHY_CFG_HOST_LINK_EN); + } +} + +void set_usbhost_mode(unsigned int mode) +{ + if (cpu_is_exynos5()) + exynos5_set_usbhost_mode(mode); +} + static void exynos4_set_system_display(void) { struct exynos4_sysreg *sysreg = diff --git a/arch/arm/cpu/armv7/imx-common/speed.c b/arch/arm/cpu/armv7/imx-common/speed.c index 2187e8e..80989c4 100644 --- a/arch/arm/cpu/armv7/imx-common/speed.c +++ b/arch/arm/cpu/armv7/imx-common/speed.c @@ -35,7 +35,11 @@ DECLARE_GLOBAL_DATA_PTR; int get_clocks(void) { #ifdef CONFIG_FSL_ESDHC +#ifdef CONFIG_FSL_USDHC + gd->sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK); +#else gd->sdhc_clk = mxc_get_clock(MXC_IPG_PERCLK); #endif +#endif return 0; } diff --git a/arch/arm/cpu/armv7/mx5/clock.c b/arch/arm/cpu/armv7/mx5/clock.c index fc2406b..64862b3 100644 --- a/arch/arm/cpu/armv7/mx5/clock.c +++ b/arch/arm/cpu/armv7/mx5/clock.c @@ -843,7 +843,7 @@ void mxc_set_sata_internal_clock(void) set_usb_phy1_clk(); - writel((readl(tmp_base) & (~0x7)) | 0x4, tmp_base); + writel((readl(tmp_base) & (~0x6)) | 0x4, tmp_base); } #endif diff --git a/arch/arm/cpu/armv7/mx6/soc.c b/arch/arm/cpu/armv7/mx6/soc.c index 90f2088..84b458c 100644 --- a/arch/arm/cpu/armv7/mx6/soc.c +++ b/arch/arm/cpu/armv7/mx6/soc.c @@ -43,7 +43,6 @@ u32 get_cpu_rev(void) return system_rev; } -#ifdef CONFIG_ARCH_CPU_INIT void init_aips(void) { struct aipstz_regs *aips1, *aips2; @@ -113,7 +112,6 @@ int arch_cpu_init(void) return 0; } -#endif #ifndef CONFIG_SYS_DCACHE_OFF void enable_caches(void) diff --git a/arch/arm/cpu/armv7/omap-common/clocks-common.c b/arch/arm/cpu/armv7/omap-common/clocks-common.c index 10d286a..b1fd277 100644 --- a/arch/arm/cpu/armv7/omap-common/clocks-common.c +++ b/arch/arm/cpu/armv7/omap-common/clocks-common.c @@ -299,8 +299,12 @@ static void setup_dplls(void) * Core DPLL will be locked after setting up EMIF * using the FREQ_UPDATE method(freq_update_core()) */ - do_setup_dpll(&prcm->cm_clkmode_dpll_core, params, DPLL_NO_LOCK, - "core"); + if (omap_revision() != OMAP5432_ES1_0) + do_setup_dpll(&prcm->cm_clkmode_dpll_core, params, + DPLL_NO_LOCK, "core"); + else + do_setup_dpll(&prcm->cm_clkmode_dpll_core, params, + DPLL_LOCK, "core"); /* Set the ratios for CORE_CLK, L3_CLK, L4_CLK */ temp = (CLKSEL_CORE_X2_DIV_1 << CLKSEL_CORE_SHIFT) | (CLKSEL_L3_CORE_DIV_2 << CLKSEL_L3_SHIFT) | diff --git a/arch/arm/cpu/armv7/omap-common/emif-common.c b/arch/arm/cpu/armv7/omap-common/emif-common.c index db509c9..30dcf1b 100644 --- a/arch/arm/cpu/armv7/omap-common/emif-common.c +++ b/arch/arm/cpu/armv7/omap-common/emif-common.c @@ -31,6 +31,28 @@ #include <asm/arch/sys_proto.h> #include <asm/omap_common.h> #include <asm/utils.h> +#include <linux/compiler.h> + +void set_lpmode_selfrefresh(u32 base) +{ + struct emif_reg_struct *emif = (struct emif_reg_struct *)base; + u32 reg; + + reg = readl(&emif->emif_pwr_mgmt_ctrl); + reg &= ~EMIF_REG_LP_MODE_MASK; + reg |= LP_MODE_SELF_REFRESH << EMIF_REG_LP_MODE_SHIFT; + reg &= ~EMIF_REG_SR_TIM_MASK; + writel(reg, &emif->emif_pwr_mgmt_ctrl); + + /* dummy read for the new SR_TIM to be loaded */ + readl(&emif->emif_pwr_mgmt_ctrl); +} + +void force_emif_self_refresh() +{ + set_lpmode_selfrefresh(EMIF1_BASE); + set_lpmode_selfrefresh(EMIF2_BASE); +} inline u32 emif_num(u32 base) { @@ -56,7 +78,12 @@ static inline u32 get_mr(u32 base, u32 cs, u32 mr_addr) mr = readl(&emif->emif_lpddr2_mode_reg_data); debug("get_mr: EMIF%d cs %d mr %08x val 0x%x\n", emif_num(base), cs, mr_addr, mr); - return mr; + if (((mr & 0x0000ff00) >> 8) == (mr & 0xff) && + ((mr & 0x00ff0000) >> 16) == (mr & 0xff) && + ((mr & 0xff000000) >> 24) == (mr & 0xff)) + return mr & 0xff; + else + return mr; } static inline void set_mr(u32 base, u32 cs, u32 mr_addr, u32 mr_val) @@ -114,9 +141,6 @@ static void do_lpddr2_init(u32 base, u32 cs) static void lpddr2_init(u32 base, const struct emif_regs *regs) { struct emif_reg_struct *emif = (struct emif_reg_struct *)base; - u32 *ext_phy_ctrl_base = 0; - u32 *emif_ext_phy_ctrl_base = 0; - u32 i = 0; /* Not NVM */ clrbits_le32(&emif->emif_lpddr2_nvm_config, EMIF_REG_CS1NVMEN_MASK); @@ -134,29 +158,7 @@ static void lpddr2_init(u32 base, const struct emif_regs *regs) writel(regs->sdram_config_init, &emif->emif_sdram_config); writel(regs->emif_ddr_phy_ctlr_1, &emif->emif_ddr_phy_ctrl_1); - ext_phy_ctrl_base = (u32 *) &(regs->emif_ddr_ext_phy_ctrl_1); - emif_ext_phy_ctrl_base = (u32 *) &(emif->emif_ddr_ext_phy_ctrl_1); - - if (omap_revision() >= OMAP5430_ES1_0) { - /* Configure external phy control timing registers */ - for (i = 0; i < EMIF_EXT_PHY_CTRL_TIMING_REG; i++) { - writel(*ext_phy_ctrl_base, emif_ext_phy_ctrl_base++); - /* Update shadow registers */ - writel(*ext_phy_ctrl_base++, emif_ext_phy_ctrl_base++); - } - - /* - * external phy 6-24 registers do not change with - * ddr frequency - */ - for (i = 0; i < EMIF_EXT_PHY_CTRL_CONST_REG; i++) { - writel(ext_phy_ctrl_const_base[i], - emif_ext_phy_ctrl_base++); - /* Update shadow registers */ - writel(ext_phy_ctrl_const_base[i], - emif_ext_phy_ctrl_base++); - } - } + do_ext_phy_settings(base, regs); do_lpddr2_init(base, CS0); if (regs->sdram_config & EMIF_REG_EBANK_MASK) @@ -168,6 +170,10 @@ static void lpddr2_init(u32 base, const struct emif_regs *regs) /* Enable refresh now */ clrbits_le32(&emif->emif_sdram_ref_ctrl, EMIF_REG_INITREF_DIS_MASK); + } + +__weak void do_ext_phy_settings(u32 base, const struct emif_regs *regs) +{ } void emif_update_timings(u32 base, const struct emif_regs *regs) @@ -190,7 +196,7 @@ void emif_update_timings(u32 base, const struct emif_regs *regs) writel(regs->temp_alert_config, &emif->emif_temp_alert_config); writel(regs->emif_ddr_phy_ctlr_1, &emif->emif_ddr_phy_ctrl_1_shdw); - if (omap_revision() == OMAP5430_ES1_0) { + if (omap_revision() >= OMAP5430_ES1_0) { writel(EMIF_L3_CONFIG_VAL_SYS_10_MPU_5_LL_0, &emif->emif_l3_config); } else if (omap_revision() >= OMAP4460_ES1_0) { @@ -202,6 +208,101 @@ void emif_update_timings(u32 base, const struct emif_regs *regs) } } +static void ddr3_leveling(u32 base, const struct emif_regs *regs) +{ + struct emif_reg_struct *emif = (struct emif_reg_struct *)base; + + /* keep sdram in self-refresh */ + writel(((LP_MODE_SELF_REFRESH << EMIF_REG_LP_MODE_SHIFT) + & EMIF_REG_LP_MODE_MASK), &emif->emif_pwr_mgmt_ctrl); + __udelay(130); + + /* + * Set invert_clkout (if activated)--DDR_PHYCTRL_1 + * Invert clock adds an additional half cycle delay on the command + * interface. The additional half cycle, is usually meant to enable + * leveling in the situation that DQS is later than CK on the board.It + * also helps provide some additional margin for leveling. + */ + writel(regs->emif_ddr_phy_ctlr_1, &emif->emif_ddr_phy_ctrl_1); + writel(regs->emif_ddr_phy_ctlr_1, &emif->emif_ddr_phy_ctrl_1_shdw); + __udelay(130); + + writel(((LP_MODE_DISABLE << EMIF_REG_LP_MODE_SHIFT) + & EMIF_REG_LP_MODE_MASK), &emif->emif_pwr_mgmt_ctrl); + + /* Launch Full leveling */ + writel(DDR3_FULL_LVL, &emif->emif_rd_wr_lvl_ctl); + + /* Wait till full leveling is complete */ + readl(&emif->emif_rd_wr_lvl_ctl); + __udelay(130); + + /* Read data eye leveling no of samples */ + config_data_eye_leveling_samples(base); + + /* Launch 8 incremental WR_LVL- to compensate for PHY limitation */ + writel(0x2 << EMIF_REG_WRLVLINC_INT_SHIFT, &emif->emif_rd_wr_lvl_ctl); + __udelay(130); + + /* Launch Incremental leveling */ + writel(DDR3_INC_LVL, &emif->emif_rd_wr_lvl_ctl); + __udelay(130); +} + +static void ddr3_init(u32 base, const struct emif_regs *regs) +{ + struct emif_reg_struct *emif = (struct emif_reg_struct *)base; + u32 *ext_phy_ctrl_base = 0; + u32 *emif_ext_phy_ctrl_base = 0; + u32 i = 0; + + /* + * Set SDRAM_CONFIG and PHY control registers to locked frequency + * and RL =7. As the default values of the Mode Registers are not + * defined, contents of mode Registers must be fully initialized. + * H/W takes care of this initialization + */ + writel(regs->sdram_config_init, &emif->emif_sdram_config); + + writel(regs->emif_ddr_phy_ctlr_1_init, &emif->emif_ddr_phy_ctrl_1); + + /* Update timing registers */ + writel(regs->sdram_tim1, &emif->emif_sdram_tim_1); + writel(regs->sdram_tim2, &emif->emif_sdram_tim_2); + writel(regs->sdram_tim3, &emif->emif_sdram_tim_3); + + writel(regs->ref_ctrl, &emif->emif_sdram_ref_ctrl); + writel(regs->read_idle_ctrl, &emif->emif_read_idlectrl); + + ext_phy_ctrl_base = (u32 *) &(regs->emif_ddr_ext_phy_ctrl_1); + emif_ext_phy_ctrl_base = (u32 *) &(emif->emif_ddr_ext_phy_ctrl_1); + + /* Configure external phy control timing registers */ + for (i = 0; i < EMIF_EXT_PHY_CTRL_TIMING_REG; i++) { + writel(*ext_phy_ctrl_base, emif_ext_phy_ctrl_base++); + /* Update shadow registers */ + writel(*ext_phy_ctrl_base++, emif_ext_phy_ctrl_base++); + } + + /* + * external phy 6-24 registers do not change with + * ddr frequency + */ + for (i = 0; i < EMIF_EXT_PHY_CTRL_CONST_REG; i++) { + writel(ddr3_ext_phy_ctrl_const_base[i], + emif_ext_phy_ctrl_base++); + /* Update shadow registers */ + writel(ddr3_ext_phy_ctrl_const_base[i], + emif_ext_phy_ctrl_base++); + } + + /* enable leveling */ + writel(regs->emif_rd_wr_lvl_rmp_ctl, &emif->emif_rd_wr_lvl_rmp_ctl); + + ddr3_leveling(base, regs); +} + #ifndef CONFIG_SYS_EMIF_PRECALCULATED_TIMING_REGS #define print_timing_reg(reg) debug(#reg" - 0x%08x\n", (reg)) @@ -826,7 +927,7 @@ static u8 is_lpddr2_sdram_present(u32 base, u32 cs, } mr = get_mr(base, cs, LPDDR2_MR5); - if (mr >= 0xFF) { + if (mr > 0xFF) { /* Mode register value bigger than 8 bit */ return 0; } @@ -895,7 +996,7 @@ struct lpddr2_device_details *emif_get_device_details(u32 emif_nr, u8 cs, return NULL; /* Do the minimum init for mode register accesses */ - if (!running_from_sdram()) { + if (!(running_from_sdram() || warm_reset())) { phy = get_ddr_phy_ctrl_1(get_sys_clk_freq() / 2, RL_BOOT); writel(phy, &emif->emif_ddr_phy_ctrl_1); } @@ -975,8 +1076,12 @@ static void do_sdram_init(u32 base) * Changing the timing registers in EMIF can happen(going from one * OPP to another) */ - if (!in_sdram) - lpddr2_init(base, regs); + if (!(in_sdram || warm_reset())) { + if (omap_revision() != OMAP5432_ES1_0) + lpddr2_init(base, regs); + else + ddr3_init(base, regs); + } /* Write to the shadow registers */ emif_update_timings(base, regs); @@ -1133,6 +1238,7 @@ void dmm_init(u32 base) void sdram_init(void) { u32 in_sdram, size_prog, size_detect; + u32 omap_rev = omap_revision(); debug(">>sdram_init()\n"); @@ -1142,25 +1248,34 @@ void sdram_init(void) in_sdram = running_from_sdram(); debug("in_sdram = %d\n", in_sdram); - if (!in_sdram) - bypass_dpll(&prcm->cm_clkmode_dpll_core); - + if (!(in_sdram || warm_reset())) { + if (omap_rev != OMAP5432_ES1_0) + bypass_dpll(&prcm->cm_clkmode_dpll_core); + else + writel(CM_DLL_CTRL_NO_OVERRIDE, &prcm->cm_dll_ctrl); + } do_sdram_init(EMIF1_BASE); do_sdram_init(EMIF2_BASE); - if (!in_sdram) { + if (!in_sdram) dmm_init(DMM_BASE); + + if (!(in_sdram || warm_reset())) { emif_post_init_config(EMIF1_BASE); emif_post_init_config(EMIF2_BASE); } /* for the shadow registers to take effect */ - freq_update_core(); + if (omap_rev != OMAP5432_ES1_0) + freq_update_core(); /* Do some testing after the init */ if (!in_sdram) { size_prog = omap_sdram_size(); + size_prog = log_2_n_round_down(size_prog); + size_prog = (1 << size_prog); + size_detect = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE, size_prog); /* Compare with the size programmed */ diff --git a/arch/arm/cpu/armv7/omap-common/hwinit-common.c b/arch/arm/cpu/armv7/omap-common/hwinit-common.c index cf71ab4..459ebb5 100644 --- a/arch/arm/cpu/armv7/omap-common/hwinit-common.c +++ b/arch/arm/cpu/armv7/omap-common/hwinit-common.c @@ -111,6 +111,10 @@ static void init_boot_params(void) void s_init(void) { init_omap_revision(); +#ifdef CONFIG_SPL_BUILD + if (warm_reset() && (omap_revision() <= OMAP5430_ES1_0)) + force_emif_self_refresh(); +#endif watchdog_init(); set_mux_conf_regs(); #ifdef CONFIG_SPL_BUILD @@ -162,11 +166,16 @@ void watchdog_init(void) */ u32 omap_sdram_size(void) { - u32 section, i, total_size = 0, size, addr; + u32 section, i, valid; + u64 sdram_start = 0, sdram_end = 0, addr, + size, total_size = 0, trap_size = 0; for (i = 0; i < 4; i++) { section = __raw_readl(DMM_BASE + i*4); + valid = (section & EMIF_SDRC_ADDRSPC_MASK) >> + (EMIF_SDRC_ADDRSPC_SHIFT); addr = section & EMIF_SYS_ADDR_MASK; + /* See if the address is valid */ if ((addr >= DRAM_ADDR_SPACE_START) && (addr < DRAM_ADDR_SPACE_END)) { @@ -174,9 +183,20 @@ u32 omap_sdram_size(void) EMIF_SYS_SIZE_SHIFT); size = 1 << size; size *= SZ_16M; - total_size += size; + + if (valid != DMM_SDRC_ADDR_SPC_INVALID) { + if (!sdram_start || (addr < sdram_start)) + sdram_start = addr; + if (!sdram_end || ((addr + size) > sdram_end)) + sdram_end = addr + size; + } else { + trap_size = size; + } + } + } + total_size = (sdram_end - sdram_start) - (trap_size); return total_size; } diff --git a/arch/arm/cpu/armv7/omap-common/reset.c b/arch/arm/cpu/armv7/omap-common/reset.c index 234e90a..587bb47 100644 --- a/arch/arm/cpu/armv7/omap-common/reset.c +++ b/arch/arm/cpu/armv7/omap-common/reset.c @@ -34,3 +34,8 @@ void __weak reset_cpu(unsigned long ignored) { writel(PRM_RSTCTRL_RESET, PRM_RSTCTRL); } + +u32 __weak warm_reset(void) +{ + return (readl(PRM_RSTST) & PRM_RSTST_WARM_RESET_MASK); +} diff --git a/arch/arm/cpu/armv7/omap4/clocks.c b/arch/arm/cpu/armv7/omap4/clocks.c index c568951..5bd0a88 100644 --- a/arch/arm/cpu/armv7/omap4/clocks.c +++ b/arch/arm/cpu/armv7/omap4/clocks.c @@ -146,7 +146,7 @@ static const struct dpll_params iva_dpll_params_1862mhz[NUM_SYS_CLKS] = { {727, 14, -1, -1, 4, 7, -1, -1}, /* 19.2 MHz */ {931, 25, -1, -1, 4, 7, -1, -1}, /* 26 MHz */ {931, 26, -1, -1, 4, 7, -1, -1}, /* 27 MHz */ - {412, 16, -1, -1, 4, 7, -1, -1} /* 38.4 MHz */ + {291, 11, -1, -1, 4, 7, -1, -1} /* 38.4 MHz */ }; /* ABE M & N values with sys_clk as source */ @@ -354,6 +354,7 @@ void enable_basic_clocks(void) }; u32 *const clk_modules_hw_auto_essential[] = { + &prcm->cm_l3_2_gpmc_clkctrl, &prcm->cm_memif_emif_1_clkctrl, &prcm->cm_memif_emif_2_clkctrl, &prcm->cm_l4cfg_l4_cfg_clkctrl, @@ -363,9 +364,6 @@ void enable_basic_clocks(void) &prcm->cm_l4per_gpio4_clkctrl, &prcm->cm_l4per_gpio5_clkctrl, &prcm->cm_l4per_gpio6_clkctrl, - &prcm->cm_l3init_usbphy_clkctrl, - &prcm->cm_clksel_usb_60mhz, - &prcm->cm_l3init_hsusbtll_clkctrl, 0 }; @@ -376,7 +374,6 @@ void enable_basic_clocks(void) &prcm->cm_l4per_gptimer2_clkctrl, &prcm->cm_wkup_wdtimer2_clkctrl, &prcm->cm_l4per_uart3_clkctrl, - &prcm->cm_l3init_hsusbhost_clkctrl, 0 }; @@ -413,6 +410,9 @@ void enable_basic_uboot_clocks(void) u32 *const clk_modules_hw_auto_essential[] = { &prcm->cm_l3init_hsusbotg_clkctrl, &prcm->cm_l3init_usbphy_clkctrl, + &prcm->cm_l3init_usbphy_clkctrl, + &prcm->cm_clksel_usb_60mhz, + &prcm->cm_l3init_hsusbtll_clkctrl, 0 }; @@ -422,6 +422,7 @@ void enable_basic_uboot_clocks(void) &prcm->cm_l4per_i2c2_clkctrl, &prcm->cm_l4per_i2c3_clkctrl, &prcm->cm_l4per_i2c4_clkctrl, + &prcm->cm_l3init_hsusbhost_clkctrl, 0 }; @@ -452,12 +453,10 @@ void enable_non_essential_clocks(void) }; u32 *const clk_modules_hw_auto_non_essential[] = { - &prcm->cm_l3_2_gpmc_clkctrl, &prcm->cm_l3instr_l3_3_clkctrl, &prcm->cm_l3instr_l3_instr_clkctrl, &prcm->cm_l3instr_intrconn_wp1_clkctrl, &prcm->cm_l3init_hsi_clkctrl, - &prcm->cm_l3init_hsusbtll_clkctrl, 0 }; @@ -497,7 +496,6 @@ void enable_non_essential_clocks(void) &prcm->cm_cam_fdif_clkctrl, &prcm->cm_dss_dss_clkctrl, &prcm->cm_sgx_sgx_clkctrl, - &prcm->cm_l3init_hsusbhost_clkctrl, 0 }; diff --git a/arch/arm/cpu/armv7/omap4/hwinit.c b/arch/arm/cpu/armv7/omap4/hwinit.c index 187e938..2c34e48 100644 --- a/arch/arm/cpu/armv7/omap4/hwinit.c +++ b/arch/arm/cpu/armv7/omap4/hwinit.c @@ -118,6 +118,11 @@ void do_io_settings(void) } #endif +/* dummy fuction for omap4 */ +void config_data_eye_leveling_samples(u32 emif_base) +{ +} + void init_omap_revision(void) { /* diff --git a/arch/arm/cpu/armv7/omap4/sdram_elpida.c b/arch/arm/cpu/armv7/omap4/sdram_elpida.c index b538960..b9128fa 100644 --- a/arch/arm/cpu/armv7/omap4/sdram_elpida.c +++ b/arch/arm/cpu/armv7/omap4/sdram_elpida.c @@ -91,7 +91,7 @@ const struct emif_regs emif_regs_elpida_400_mhz_2cs = { }; /* Dummy registers for OMAP44xx */ -const u32 ext_phy_ctrl_const_base[EMIF_EXT_PHY_CTRL_CONST_REG]; +const u32 ddr3_ext_phy_ctrl_const_base[EMIF_EXT_PHY_CTRL_CONST_REG]; const struct dmm_lisa_map_regs lisa_map_2G_x_1_x_2 = { .dmm_lisa_map_0 = 0xFF020100, diff --git a/arch/arm/cpu/armv7/omap5/clocks.c b/arch/arm/cpu/armv7/omap5/clocks.c index 1a59f26..eecfbad 100644 --- a/arch/arm/cpu/armv7/omap5/clocks.c +++ b/arch/arm/cpu/armv7/omap5/clocks.c @@ -260,20 +260,31 @@ const struct dpll_params *get_abe_dpll_params(void) */ void scale_vcores(void) { - u32 volt; + u32 volt_core, volt_mpu, volt_mm; omap_vc_init(PRM_VC_I2C_CHANNEL_FREQ_KHZ); /* Palmas settings */ - volt = VDD_CORE; - do_scale_vcore(SMPS_REG_ADDR_8_CORE, volt); - - volt = VDD_MPU; - do_scale_vcore(SMPS_REG_ADDR_12_MPU, volt); - - volt = VDD_MM; - do_scale_vcore(SMPS_REG_ADDR_45_IVA, volt); - + if (omap_revision() != OMAP5432_ES1_0) { + volt_core = VDD_CORE; + volt_mpu = VDD_MPU; + volt_mm = VDD_MM; + } else { + volt_core = VDD_CORE_5432; + volt_mpu = VDD_MPU_5432; + volt_mm = VDD_MM_5432; + } + + do_scale_vcore(SMPS_REG_ADDR_8_CORE, volt_core); + do_scale_vcore(SMPS_REG_ADDR_12_MPU, volt_mpu); + do_scale_vcore(SMPS_REG_ADDR_45_IVA, volt_mm); + + if (omap_revision() == OMAP5432_ES1_0) { + /* Configure LDO SRAM "magic" bits */ + writel(2, &prcm->prm_sldo_core_setup); + writel(2, &prcm->prm_sldo_mpu_setup); + writel(2, &prcm->prm_sldo_mm_setup); + } } u32 get_offset_code(u32 volt_offset) @@ -306,6 +317,7 @@ void enable_basic_clocks(void) }; u32 *const clk_modules_hw_auto_essential[] = { + &prcm->cm_l3_2_gpmc_clkctrl, &prcm->cm_memif_emif_1_clkctrl, &prcm->cm_memif_emif_2_clkctrl, &prcm->cm_l4cfg_l4_cfg_clkctrl, @@ -382,6 +394,9 @@ void enable_basic_uboot_clocks(void) &prcm->cm_l4per_i2c2_clkctrl, &prcm->cm_l4per_i2c3_clkctrl, &prcm->cm_l4per_i2c4_clkctrl, + &prcm->cm_l3init_hsusbtll_clkctrl, + &prcm->cm_l3init_hsusbhost_clkctrl, + &prcm->cm_l3init_fsusb_clkctrl, 0 }; @@ -416,12 +431,10 @@ void enable_non_essential_clocks(void) &prcm->cm_ivahd_ivahd_clkctrl, &prcm->cm_ivahd_sl2_clkctrl, &prcm->cm_dsp_dsp_clkctrl, - &prcm->cm_l3_2_gpmc_clkctrl, &prcm->cm_l3instr_l3_3_clkctrl, &prcm->cm_l3instr_l3_instr_clkctrl, &prcm->cm_l3instr_intrconn_wp1_clkctrl, &prcm->cm_l3init_hsi_clkctrl, - &prcm->cm_l3init_hsusbtll_clkctrl, &prcm->cm_l4per_hdq1w_clkctrl, 0 }; @@ -460,8 +473,6 @@ void enable_non_essential_clocks(void) &prcm->cm_cam_fdif_clkctrl, &prcm->cm_dss_dss_clkctrl, &prcm->cm_sgx_sgx_clkctrl, - &prcm->cm_l3init_hsusbhost_clkctrl, - &prcm->cm_l3init_fsusb_clkctrl, 0 }; diff --git a/arch/arm/cpu/armv7/omap5/hwinit.c b/arch/arm/cpu/armv7/omap5/hwinit.c index d01cc81..d0c3ff7 100644 --- a/arch/arm/cpu/armv7/omap5/hwinit.c +++ b/arch/arm/cpu/armv7/omap5/hwinit.c @@ -35,6 +35,7 @@ #include <asm/sizes.h> #include <asm/utils.h> #include <asm/arch/gpio.h> +#include <asm/emif.h> DECLARE_GLOBAL_DATA_PTR; @@ -52,6 +53,81 @@ static struct gpio_bank gpio_bank_54xx[6] = { const struct gpio_bank *const omap_gpio_bank = gpio_bank_54xx; #ifdef CONFIG_SPL_BUILD +/* LPDDR2 specific IO settings */ +static void io_settings_lpddr2(void) +{ + struct omap_sys_ctrl_regs *ioregs_base = + (struct omap_sys_ctrl_regs *) SYSCTRL_GENERAL_CORE_BASE; + + writel(DDR_IO_I_34OHM_SR_FASTEST_WD_DQ_NO_PULL_DQS_PULL_DOWN, + &(ioregs_base->control_ddrch1_0)); + writel(DDR_IO_I_34OHM_SR_FASTEST_WD_DQ_NO_PULL_DQS_PULL_DOWN, + &(ioregs_base->control_ddrch1_1)); + writel(DDR_IO_I_34OHM_SR_FASTEST_WD_DQ_NO_PULL_DQS_PULL_DOWN, + &(ioregs_base->control_ddrch2_0)); + writel(DDR_IO_I_34OHM_SR_FASTEST_WD_DQ_NO_PULL_DQS_PULL_DOWN, + &(ioregs_base->control_ddrch2_1)); + writel(DDR_IO_I_34OHM_SR_FASTEST_WD_CK_CKE_NCS_CA_PULL_DOWN, + &(ioregs_base->control_lpddr2ch1_0)); + writel(DDR_IO_I_34OHM_SR_FASTEST_WD_CK_CKE_NCS_CA_PULL_DOWN, + &(ioregs_base->control_lpddr2ch1_1)); + writel(DDR_IO_0_DDR2_DQ_INT_EN_ALL_DDR3_CA_DIS_ALL, + &(ioregs_base->control_ddrio_0)); + writel(DDR_IO_1_DQ_OUT_EN_ALL_DQ_INT_EN_ALL, + &(ioregs_base->control_ddrio_1)); + writel(DDR_IO_2_CA_OUT_EN_ALL_CA_INT_EN_ALL, + &(ioregs_base->control_ddrio_2)); +} + +/* DDR3 specific IO settings */ +static void io_settings_ddr3(void) +{ + u32 io_settings = 0; + struct omap_sys_ctrl_regs *ioregs_base = + (struct omap_sys_ctrl_regs *) SYSCTRL_GENERAL_CORE_BASE; + + writel(DDR_IO_I_40OHM_SR_SLOWEST_WD_DQ_NO_PULL_DQS_NO_PULL, + &(ioregs_base->control_ddr3ch1_0)); + writel(DDR_IO_I_40OHM_SR_FAST_WD_DQ_NO_PULL_DQS_NO_PULL, + &(ioregs_base->control_ddrch1_0)); + writel(DDR_IO_I_40OHM_SR_FAST_WD_DQ_NO_PULL_DQS_NO_PULL, + &(ioregs_base->control_ddrch1_1)); + + writel(DDR_IO_I_40OHM_SR_SLOWEST_WD_DQ_NO_PULL_DQS_NO_PULL, + &(ioregs_base->control_ddr3ch2_0)); + writel(DDR_IO_I_40OHM_SR_FAST_WD_DQ_NO_PULL_DQS_NO_PULL, + &(ioregs_base->control_ddrch2_0)); + writel(DDR_IO_I_40OHM_SR_FAST_WD_DQ_NO_PULL_DQS_NO_PULL, + &(ioregs_base->control_ddrch2_1)); + + writel(DDR_IO_0_VREF_CELLS_DDR3_VALUE, + &(ioregs_base->control_ddrio_0)); + writel(DDR_IO_1_VREF_CELLS_DDR3_VALUE, + &(ioregs_base->control_ddrio_1)); + writel(DDR_IO_2_VREF_CELLS_DDR3_VALUE, + &(ioregs_base->control_ddrio_2)); + + /* omap5432 does not use lpddr2 */ + writel(0x0, &(ioregs_base->control_lpddr2ch1_0)); + writel(0x0, &(ioregs_base->control_lpddr2ch1_1)); + + writel(SDRAM_CONFIG_EXT_RD_LVL_11_SAMPLES, + &(ioregs_base->control_emif1_sdram_config_ext)); + writel(SDRAM_CONFIG_EXT_RD_LVL_11_SAMPLES, + &(ioregs_base->control_emif2_sdram_config_ext)); + + /* Disable DLL select */ + io_settings = (readl(&(ioregs_base->control_port_emif1_sdram_config)) + & 0xFFEFFFFF); + writel(io_settings, + &(ioregs_base->control_port_emif1_sdram_config)); + + io_settings = (readl(&(ioregs_base->control_port_emif2_sdram_config)) + & 0xFFEFFFFF); + writel(io_settings, + &(ioregs_base->control_port_emif2_sdram_config)); +} + /* * Some tuning of IOs for optimal power and performance */ @@ -115,25 +191,10 @@ void do_io_settings(void) (sc_fast << 17) | (sc_fast << 14); writel(io_settings, &(ioregs_base->control_smart3io_padconf_1)); - /* LPDDR2 io settings */ - writel(DDR_IO_I_34OHM_SR_FASTEST_WD_DQ_NO_PULL_DQS_PULL_DOWN, - &(ioregs_base->control_ddrch1_0)); - writel(DDR_IO_I_34OHM_SR_FASTEST_WD_DQ_NO_PULL_DQS_PULL_DOWN, - &(ioregs_base->control_ddrch1_1)); - writel(DDR_IO_I_34OHM_SR_FASTEST_WD_DQ_NO_PULL_DQS_PULL_DOWN, - &(ioregs_base->control_ddrch2_0)); - writel(DDR_IO_I_34OHM_SR_FASTEST_WD_DQ_NO_PULL_DQS_PULL_DOWN, - &(ioregs_base->control_ddrch2_1)); - writel(DDR_IO_I_34OHM_SR_FASTEST_WD_CK_CKE_NCS_CA_PULL_DOWN, - &(ioregs_base->control_lpddr2ch1_0)); - writel(DDR_IO_I_34OHM_SR_FASTEST_WD_CK_CKE_NCS_CA_PULL_DOWN, - &(ioregs_base->control_lpddr2ch1_1)); - writel(DDR_IO_0_DDR2_DQ_INT_EN_ALL_DDR3_CA_DIS_ALL, - &(ioregs_base->control_ddrio_0)); - writel(DDR_IO_1_DQ_OUT_EN_ALL_DQ_INT_EN_ALL, - &(ioregs_base->control_ddrio_1)); - writel(DDR_IO_2_CA_OUT_EN_ALL_CA_INT_EN_ALL, - &(ioregs_base->control_ddrio_2)); + if (omap_revision() <= OMAP5430_ES1_0) + io_settings_lpddr2(); + else + io_settings_ddr3(); /* Efuse settings */ writel(EFUSE_1, &(ioregs_base->control_efuse_1)); @@ -143,6 +204,20 @@ void do_io_settings(void) } #endif +void config_data_eye_leveling_samples(u32 emif_base) +{ + struct omap_sys_ctrl_regs *ioregs_base = + (struct omap_sys_ctrl_regs *) SYSCTRL_GENERAL_CORE_BASE; + + /*EMIF_SDRAM_CONFIG_EXT-Read data eye leveling no of samples =4*/ + if (emif_base == EMIF1_BASE) + writel(SDRAM_CONFIG_EXT_RD_LVL_4_SAMPLES, + &(ioregs_base->control_emif1_sdram_config_ext)); + else if (emif_base == EMIF2_BASE) + writel(SDRAM_CONFIG_EXT_RD_LVL_4_SAMPLES, + &(ioregs_base->control_emif2_sdram_config_ext)); +} + void init_omap_revision(void) { /* @@ -154,7 +229,15 @@ void init_omap_revision(void) switch (rev) { case MIDR_CORTEX_A15_R0P0: - *omap_si_rev = OMAP5430_ES1_0; + switch (readl(CONTROL_ID_CODE)) { + case OMAP5430_CONTROL_ID_CODE_ES1_0: + *omap_si_rev = OMAP5430_ES1_0; + break; + case OMAP5432_CONTROL_ID_CODE_ES1_0: + default: + *omap_si_rev = OMAP5432_ES1_0; + break; + } break; default: *omap_si_rev = OMAP5430_SILICON_ID_INVALID; diff --git a/arch/arm/cpu/armv7/omap5/sdram.c b/arch/arm/cpu/armv7/omap5/sdram.c index b2b5753..6ebdf5f 100644 --- a/arch/arm/cpu/armv7/omap5/sdram.c +++ b/arch/arm/cpu/armv7/omap5/sdram.c @@ -86,11 +86,34 @@ const struct emif_regs emif_regs_266_mhz_2cs = { .emif_ddr_ext_phy_ctrl_5 = 0x04010040 }; +const struct emif_regs emif_regs_ddr3_532_mhz_1cs = { + .sdram_config_init = 0x61851B32, + .sdram_config = 0x61851B32, + .ref_ctrl = 0x00001035, + .sdram_tim1 = 0xCCCF36B3, + .sdram_tim2 = 0x308F7FDA, + .sdram_tim3 = 0x027F88A8, + .read_idle_ctrl = 0x00050000, + .zq_config = 0x0007190B, + .temp_alert_config = 0x00000000, + .emif_ddr_phy_ctlr_1_init = 0x0020420A, + .emif_ddr_phy_ctlr_1 = 0x0024420A, + .emif_ddr_ext_phy_ctrl_1 = 0x04040100, + .emif_ddr_ext_phy_ctrl_2 = 0x00000000, + .emif_ddr_ext_phy_ctrl_3 = 0x00000000, + .emif_ddr_ext_phy_ctrl_4 = 0x00000000, + .emif_ddr_ext_phy_ctrl_5 = 0x04010040, + .emif_rd_wr_lvl_rmp_win = 0x00000000, + .emif_rd_wr_lvl_rmp_ctl = 0x80000000, + .emif_rd_wr_lvl_ctl = 0x00000000, + .emif_rd_wr_exec_thresh = 0x00000305 +}; + const struct dmm_lisa_map_regs lisa_map_4G_x_2_x_2 = { .dmm_lisa_map_0 = 0x0, - .dmm_lisa_map_1 = 0, - .dmm_lisa_map_2 = 0, - .dmm_lisa_map_3 = 0x80740300 + .dmm_lisa_map_1 = 0x0, + .dmm_lisa_map_2 = 0x80740300, + .dmm_lisa_map_3 = 0xFF020100 }; const u32 ext_phy_ctrl_const_base[EMIF_EXT_PHY_CTRL_CONST_REG] = { @@ -115,9 +138,34 @@ const u32 ext_phy_ctrl_const_base[EMIF_EXT_PHY_CTRL_CONST_REG] = { 0x00000077 }; +const u32 ddr3_ext_phy_ctrl_const_base[EMIF_EXT_PHY_CTRL_CONST_REG] = { + 0x01004010, + 0x00001004, + 0x04010040, + 0x01004010, + 0x00001004, + 0x00000000, + 0x00000000, + 0x00000000, + 0x80080080, + 0x00800800, + 0x08102040, + 0x00000002, + 0x0, + 0x0, + 0x0, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000057 +}; + static void emif_get_reg_dump_sdp(u32 emif_nr, const struct emif_regs **regs) { - *regs = &emif_regs_532_mhz_2cs; + if (omap_revision() == OMAP5432_ES1_0) + *regs = &emif_regs_ddr3_532_mhz_1cs; + else + *regs = &emif_regs_532_mhz_2cs; } void emif_get_reg_dump(u32 emif_nr, const struct emif_regs **regs) __attribute__((weak, alias("emif_get_reg_dump_sdp"))); @@ -156,6 +204,37 @@ void emif_get_device_details(u32 emif_nr, #endif /* CONFIG_SYS_EMIF_PRECALCULATED_TIMING_REGS */ +void do_ext_phy_settings(u32 base, const struct emif_regs *regs) +{ + u32 *ext_phy_ctrl_base = 0; + u32 *emif_ext_phy_ctrl_base = 0; + u32 i = 0; + + struct emif_reg_struct *emif = (struct emif_reg_struct *)base; + + ext_phy_ctrl_base = (u32 *) &(regs->emif_ddr_ext_phy_ctrl_1); + emif_ext_phy_ctrl_base = (u32 *) &(emif->emif_ddr_ext_phy_ctrl_1); + + /* Configure external phy control timing registers */ + for (i = 0; i < EMIF_EXT_PHY_CTRL_TIMING_REG; i++) { + writel(*ext_phy_ctrl_base, emif_ext_phy_ctrl_base++); + /* Update shadow registers */ + writel(*ext_phy_ctrl_base++, emif_ext_phy_ctrl_base++); + } + + /* + * external phy 6-24 registers do not change with + * ddr frequency + */ + for (i = 0; i < EMIF_EXT_PHY_CTRL_CONST_REG; i++) { + writel(ext_phy_ctrl_const_base[i], + emif_ext_phy_ctrl_base++); + /* Update shadow registers */ + writel(ext_phy_ctrl_const_base[i], + emif_ext_phy_ctrl_base++); + } +} + #ifndef CONFIG_SYS_DEFAULT_LPDDR2_TIMINGS static const struct lpddr2_ac_timings timings_jedec_532_mhz = { .max_freq = 532000000, diff --git a/arch/arm/cpu/armv7/s5p-common/cpu_info.c b/arch/arm/cpu/armv7/s5p-common/cpu_info.c index 527f32d..1642733 100644 --- a/arch/arm/cpu/armv7/s5p-common/cpu_info.c +++ b/arch/arm/cpu/armv7/s5p-common/cpu_info.c @@ -48,8 +48,9 @@ int print_cpuinfo(void) { char buf[32]; - printf("CPU:\tS5P%X@%sMHz\n", - s5p_cpu_id, strmhz(buf, get_arm_clk())); + printf("CPU:\t%s%X@%sMHz\n", + s5p_get_cpu_name(), s5p_cpu_id, + strmhz(buf, get_arm_clk())); return 0; } diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S index 261835b..aee27fd 100644 --- a/arch/arm/cpu/armv7/start.S +++ b/arch/arm/cpu/armv7/start.S @@ -259,10 +259,12 @@ clear_bss: #endif mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: /* * We are done. Do not return, instead branch to second part of board @@ -277,6 +279,18 @@ jump_2_ram: mcr p15, 0, r0, c7, c10, 4 @ DSB mcr p15, 0, r0, c7, c5, 4 @ ISB #endif +/* + * Move vector table + */ +#if !defined(CONFIG_TEGRA2) +#if !(defined(CONFIG_OMAP44XX) && defined(CONFIG_SPL_BUILD)) + /* Set vector address in CP15 VBAR register */ + ldr r0, =_start + add r0, r0, r9 + mcr p15, 0, r0, c12, c0, 0 @Set VBAR +#endif +#endif /* !Tegra2 */ + ldr r0, _board_init_r_ofs adr r1, _start add lr, r0, r1 diff --git a/arch/arm/cpu/armv7/tegra2/Makefile b/arch/arm/cpu/armv7/tegra2/Makefile index 08c4137..80da453 100644 --- a/arch/arm/cpu/armv7/tegra2/Makefile +++ b/arch/arm/cpu/armv7/tegra2/Makefile @@ -39,6 +39,7 @@ COBJS-$(CONFIG_TEGRA_CLOCK_SCALING) += emc.o COBJS-$(CONFIG_TEGRA_PMU) += pmu.o COBJS-$(CONFIG_USB_EHCI_TEGRA) += usb.o COBJS-$(CONFIG_TEGRA2_LP0) += crypto.o warmboot.o warmboot_avp.o +COBJS-$(CONFIG_CMD_ENTERRCM) += cmd_enterrcm.o COBJS := $(COBJS-y) SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) diff --git a/arch/arm/cpu/armv7/tegra2/ap20.c b/arch/arm/cpu/armv7/tegra2/ap20.c index 698bfd0..1aad387 100644 --- a/arch/arm/cpu/armv7/tegra2/ap20.c +++ b/arch/arm/cpu/armv7/tegra2/ap20.c @@ -77,8 +77,10 @@ static int ap20_cpu_is_cortexa9(void) void init_pllx(void) { - struct clk_rst_ctlr *clkrst = (struct clk_rst_ctlr *)NV_PA_CLK_RST_BASE; - struct clk_pll *pll = &clkrst->crc_pll[CLOCK_ID_XCPU]; + struct clk_rst_ctlr *clkrst = + (struct clk_rst_ctlr *)NV_PA_CLK_RST_BASE; + struct clk_pll_simple *pll = + &clkrst->crc_pll_simple[CLOCK_ID_XCPU - CLOCK_ID_FIRST_SIMPLE]; u32 reg; /* If PLLX is already enabled, just return */ @@ -312,9 +314,28 @@ void enable_scu(void) writel(reg, &scu->scu_ctrl); } +static u32 get_odmdata(void) +{ + /* + * ODMDATA is stored in the BCT in IRAM by the BootROM. + * The BCT start and size are stored in the BIT in IRAM. + * Read the data @ bct_start + (bct_size - 12). This works + * on T20 and T30 BCTs, which are locked down. If this changes + * in new chips (T114, etc.), we can revisit this algorithm. + */ + + u32 bct_start, odmdata; + + bct_start = readl(AP20_BASE_PA_SRAM + NVBOOTINFOTABLE_BCTPTR); + odmdata = readl(bct_start + BCT_ODMDATA_OFFSET); + + return odmdata; +} + void init_pmc_scratch(void) { struct pmc_ctlr *const pmc = (struct pmc_ctlr *)TEGRA2_PMC_BASE; + u32 odmdata; int i; /* SCRATCH0 is initialized by the boot ROM and shouldn't be cleared */ @@ -322,7 +343,8 @@ void init_pmc_scratch(void) writel(0, &pmc->pmc_scratch1+i); /* ODMDATA is for kernel use to determine RAM size, LP config, etc. */ - writel(CONFIG_SYS_BOARD_ODMDATA, &pmc->pmc_scratch20); + odmdata = get_odmdata(); + writel(odmdata, &pmc->pmc_scratch20); #ifdef CONFIG_TEGRA2_LP0 /* save Sdram params to PMC 2, 4, and 24 for WB0 */ diff --git a/arch/arm/cpu/armv7/tegra2/board.c b/arch/arm/cpu/armv7/tegra2/board.c index a50b1b9..923678d 100644 --- a/arch/arm/cpu/armv7/tegra2/board.c +++ b/arch/arm/cpu/armv7/tegra2/board.c @@ -101,6 +101,22 @@ int arch_cpu_init(void) } #endif +static int uart_configs[] = { +#if defined(CONFIG_TEGRA2_UARTA_UAA_UAB) + FUNCMUX_UART1_UAA_UAB, +#elif defined(CONFIG_TEGRA2_UARTA_GPU) + FUNCMUX_UART1_GPU, +#elif defined(CONFIG_TEGRA2_UARTA_SDIO1) + FUNCMUX_UART1_SDIO1, +#else + FUNCMUX_UART1_IRRX_IRTX, +#endif + FUNCMUX_UART2_IRDA, + -1, + FUNCMUX_UART4_GMC, + -1, +}; + /** * Set up the specified uarts * @@ -120,7 +136,7 @@ static void setup_uarts(int uart_ids) if (uart_ids & (1 << i)) { enum periph_id id = id_for_uart[i]; - funcmux_select(id, FUNCMUX_DEFAULT); + funcmux_select(id, uart_configs[i]); clock_ll_start_uart(id); } } diff --git a/arch/arm/cpu/armv7/tegra2/clock.c b/arch/arm/cpu/armv7/tegra2/clock.c index ccad351..602589c 100644 --- a/arch/arm/cpu/armv7/tegra2/clock.c +++ b/arch/arm/cpu/armv7/tegra2/clock.c @@ -426,7 +426,7 @@ static struct clk_pll *get_pll(enum clock_id clkid) struct clk_rst_ctlr *clkrst = (struct clk_rst_ctlr *)NV_PA_CLK_RST_BASE; - assert(clock_id_isvalid(clkid)); + assert(clock_id_is_pll(clkid)); return &clkrst->crc_pll[clkid]; } @@ -439,7 +439,7 @@ int clock_ll_read_pll(enum clock_id clkid, u32 *divm, u32 *divn, assert(clkid != CLOCK_ID_USB); /* Safety check, adds to code size but is small */ - if (!clock_id_isvalid(clkid) || clkid == CLOCK_ID_USB) + if (!clock_id_is_pll(clkid) || clkid == CLOCK_ID_USB) return -1; data = readl(&pll->pll_base); *divm = (data & PLL_DIVM_MASK) >> PLL_DIVM_SHIFT; diff --git a/arch/arm/cpu/armv7/tegra2/cmd_enterrcm.c b/arch/arm/cpu/armv7/tegra2/cmd_enterrcm.c new file mode 100644 index 0000000..2fcd107 --- /dev/null +++ b/arch/arm/cpu/armv7/tegra2/cmd_enterrcm.c @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. + * + * Derived from code (arch/arm/lib/reset.c) that is: + * + * (C) Copyright 2002 + * Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Marius Groeger <mgroeger@sysgo.de> + * + * (C) Copyright 2002 + * Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Alex Zuepke <azu@sysgo.de> + * + * (C) Copyright 2002 + * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> + * + * (C) Copyright 2004 + * DAVE Srl + * http://www.dave-tech.it + * http://www.wawnet.biz + * mailto:info@wawnet.biz + * + * (C) Copyright 2004 Texas Insturments + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <common.h> +#include <asm/arch/tegra2.h> +#include <asm/arch/pmc.h> + +static int do_enterrcm(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) +{ + struct pmc_ctlr *pmc = (struct pmc_ctlr *)TEGRA2_PMC_BASE; + + puts("Entering RCM...\n"); + udelay(50000); + + pmc->pmc_scratch0 = 2; + disable_interrupts(); + reset_cpu(0); + + return 0; +} + +U_BOOT_CMD( + enterrcm, 1, 0, do_enterrcm, + "reset Tegra and enter USB Recovery Mode", + "" +); diff --git a/arch/arm/cpu/armv7/tegra2/config.mk b/arch/arm/cpu/armv7/tegra2/config.mk index fe9ef5b..4dd8cb8 100644 --- a/arch/arm/cpu/armv7/tegra2/config.mk +++ b/arch/arm/cpu/armv7/tegra2/config.mk @@ -24,10 +24,13 @@ # MA 02111-1307 USA # -# Tegra has an ARMv4T CPU which runs board_init_f(), so we must build this -# file with compatible flags +# Tegra has an ARMv4T CPU which runs board_init_f(), so we must build these +# files with compatible flags ifdef CONFIG_TEGRA2 CFLAGS_arch/arm/lib/board.o += -march=armv4t +CFLAGS_arch/arm/lib/memset.o += -march=armv4t +CFLAGS_lib/string.o += -march=armv4t +CFLAGS_common/cmd_nvedit.o += -march=armv4t endif USE_PRIVATE_LIBGCC = yes diff --git a/arch/arm/cpu/armv7/tegra2/funcmux.c b/arch/arm/cpu/armv7/tegra2/funcmux.c index 0ef7753..4a31a4c 100644 --- a/arch/arm/cpu/armv7/tegra2/funcmux.c +++ b/arch/arm/cpu/armv7/tegra2/funcmux.c @@ -31,11 +31,32 @@ int funcmux_select(enum periph_id id, int config) switch (id) { case PERIPH_ID_UART1: - if (config == FUNCMUX_UART1_IRRX_IRTX) { + switch (config) { + case FUNCMUX_UART1_IRRX_IRTX: pinmux_set_func(PINGRP_IRRX, PMUX_FUNC_UARTA); pinmux_set_func(PINGRP_IRTX, PMUX_FUNC_UARTA); pinmux_tristate_disable(PINGRP_IRRX); pinmux_tristate_disable(PINGRP_IRTX); + break; + case FUNCMUX_UART1_UAA_UAB: + pinmux_set_func(PINGRP_UAA, PMUX_FUNC_UARTA); + pinmux_set_func(PINGRP_UAB, PMUX_FUNC_UARTA); + pinmux_tristate_disable(PINGRP_UAA); + pinmux_tristate_disable(PINGRP_UAB); + bad_config = 0; + break; + case FUNCMUX_UART1_GPU: + pinmux_set_func(PINGRP_GPU, PMUX_FUNC_UARTA); + pinmux_tristate_disable(PINGRP_GPU); + bad_config = 0; + break; + case FUNCMUX_UART1_SDIO1: + pinmux_set_func(PINGRP_SDIO1, PMUX_FUNC_UARTA); + pinmux_tristate_disable(PINGRP_SDIO1); + bad_config = 0; + break; + } + if (!bad_config) { /* * Tegra appears to boot with function UARTA pre- * selected on mux group SDB. If two mux groups are @@ -106,6 +127,13 @@ int funcmux_select(enum periph_id id, int config) } break; + case PERIPH_ID_SDMMC1: + if (config == FUNCMUX_SDMMC1_SDIO1_4BIT) { + pinmux_set_func(PINGRP_SDIO1, PMUX_FUNC_SDIO1); + pinmux_tristate_disable(PINGRP_SDIO1); + } + break; + case PERIPH_ID_SDMMC2: if (config == FUNCMUX_SDMMC2_DTA_DTD_8BIT) { pinmux_set_func(PINGRP_DTA, PMUX_FUNC_SDIO2); @@ -181,9 +209,30 @@ int funcmux_select(enum periph_id id, int config) pinmux_set_func(grp[i], PMUX_FUNC_KBC); pinmux_set_pullupdown(grp[i], PMUX_PULL_UP); } + } + break; - break; + case PERIPH_ID_USB2: + if (config == FUNCMUX_USB2_ULPI) { + pinmux_set_func(PINGRP_UAA, PMUX_FUNC_ULPI); + pinmux_set_func(PINGRP_UAB, PMUX_FUNC_ULPI); + pinmux_set_func(PINGRP_UDA, PMUX_FUNC_ULPI); + + pinmux_tristate_disable(PINGRP_UAA); + pinmux_tristate_disable(PINGRP_UAB); + pinmux_tristate_disable(PINGRP_UDA); } + break; + + case PERIPH_ID_SPI1: + if (config == FUNCMUX_SPI1_GMC_GMD) { + pinmux_set_func(PINGRP_GMC, PMUX_FUNC_SFLASH); + pinmux_set_func(PINGRP_GMD, PMUX_FUNC_SFLASH); + + pinmux_tristate_disable(PINGRP_GMC); + pinmux_tristate_disable(PINGRP_GMD); + } + break; default: debug("%s: invalid periph_id %d", __func__, id); diff --git a/arch/arm/cpu/armv7/tegra2/usb.c b/arch/arm/cpu/armv7/tegra2/usb.c index c80de7f..5f2b243 100644 --- a/arch/arm/cpu/armv7/tegra2/usb.c +++ b/arch/arm/cpu/armv7/tegra2/usb.c @@ -290,7 +290,7 @@ static int init_usb_controller(struct fdt_usb *config, break; udelay(1); } - if (loop_count == 100000) + if (!loop_count) return -1; return 0; diff --git a/arch/arm/cpu/ixp/start.S b/arch/arm/cpu/ixp/start.S index cb32121..59c359a 100644 --- a/arch/arm/cpu/ixp/start.S +++ b/arch/arm/cpu/ixp/start.S @@ -334,10 +334,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: bl coloured_LED_init bl red_led_on diff --git a/arch/arm/cpu/lh7a40x/start.S b/arch/arm/cpu/lh7a40x/start.S index 62de8b8..bd68cd4 100644 --- a/arch/arm/cpu/lh7a40x/start.S +++ b/arch/arm/cpu/lh7a40x/start.S @@ -245,10 +245,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: #endif /* diff --git a/arch/arm/cpu/pxa/start.S b/arch/arm/cpu/pxa/start.S index ba0de8f..33c73f6 100644 --- a/arch/arm/cpu/pxa/start.S +++ b/arch/arm/cpu/pxa/start.S @@ -258,10 +258,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: #endif /* #ifndef CONFIG_SPL_BUILD */ /* diff --git a/arch/arm/cpu/s3c44b0/start.S b/arch/arm/cpu/s3c44b0/start.S index a29d5b4..8daf26c 100644 --- a/arch/arm/cpu/s3c44b0/start.S +++ b/arch/arm/cpu/s3c44b0/start.S @@ -217,10 +217,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: bl coloured_LED_init bl red_led_on diff --git a/arch/arm/cpu/sa1100/start.S b/arch/arm/cpu/sa1100/start.S index 92546d8..bcea2a8 100644 --- a/arch/arm/cpu/sa1100/start.S +++ b/arch/arm/cpu/sa1100/start.S @@ -221,10 +221,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l + b clbss_l +clbss_e: #endif /* diff --git a/arch/arm/include/asm/arch-am33xx/clocks_am33xx.h b/arch/arm/include/asm/arch-am33xx/clocks_am33xx.h index abc5b6b..d748dd2 100644 --- a/arch/arm/include/asm/arch-am33xx/clocks_am33xx.h +++ b/arch/arm/include/asm/arch-am33xx/clocks_am33xx.h @@ -19,16 +19,16 @@ #ifndef _CLOCKS_AM33XX_H_ #define _CLOCKS_AM33XX_H_ -#define OSC 24 +#define OSC (V_OSCK/1000000) /* MAIN PLL Fdll = 550 MHZ, */ #define MPUPLL_M 550 -#define MPUPLL_N 23 +#define MPUPLL_N (OSC-1) #define MPUPLL_M2 1 /* Core PLL Fdll = 1 GHZ, */ #define COREPLL_M 1000 -#define COREPLL_N 23 +#define COREPLL_N (OSC-1) #define COREPLL_M4 10 /* CORE_CLKOUTM4 = 200 MHZ */ #define COREPLL_M5 8 /* CORE_CLKOUTM5 = 250 MHZ */ @@ -40,13 +40,13 @@ * For clkout = 192 MHZ, Fdll = 960 MHZ, divider values are given below */ #define PERPLL_M 960 -#define PERPLL_N 23 +#define PERPLL_N (OSC-1) #define PERPLL_M2 5 /* DDR Freq is 266 MHZ for now */ /* Set Fdll = 400 MHZ , Fdll = M * 2 * CLKINP/ N + 1; clkout = Fdll /(2 * M2) */ #define DDRPLL_M 266 -#define DDRPLL_N 23 +#define DDRPLL_N (OSC-1) #define DDRPLL_M2 1 extern void pll_init(void); diff --git a/arch/arm/include/asm/arch-am33xx/cpu.h b/arch/arm/include/asm/arch-am33xx/cpu.h index cd002e6..a027e31 100644 --- a/arch/arm/include/asm/arch-am33xx/cpu.h +++ b/arch/arm/include/asm/arch-am33xx/cpu.h @@ -53,8 +53,10 @@ /* Reset control */ #ifdef CONFIG_AM33XX #define PRM_RSTCTRL 0x44E00F00 +#define PRM_RSTST 0x44E00F08 #endif #define PRM_RSTCTRL_RESET 0x01 +#define PRM_RSTST_WARM_RESET_MASK 0x232 #ifndef __KERNEL_STRICT_NAMES #ifndef __ASSEMBLY__ @@ -62,7 +64,7 @@ struct cm_wkuppll { unsigned int wkclkstctrl; /* offset 0x00 */ unsigned int wkctrlclkctrl; /* offset 0x04 */ - unsigned int resv1[1]; + unsigned int wkgpio0clkctrl; /* offset 0x08 */ unsigned int wkl4wkclkctrl; /* offset 0x0c */ unsigned int resv2[4]; unsigned int idlestdpllmpu; /* offset 0x20 */ @@ -111,34 +113,54 @@ struct cm_perpll { unsigned int l3clkstctrl; /* offset 0x0c */ unsigned int resv1; unsigned int cpgmac0clkctrl; /* offset 0x14 */ - unsigned int resv2[4]; + unsigned int lcdclkctrl; /* offset 0x18 */ + unsigned int usb0clkctrl; /* offset 0x1C */ + unsigned int resv2; + unsigned int tptc0clkctrl; /* offset 0x24 */ unsigned int emifclkctrl; /* offset 0x28 */ unsigned int ocmcramclkctrl; /* offset 0x2c */ unsigned int gpmcclkctrl; /* offset 0x30 */ - unsigned int resv3[2]; + unsigned int mcasp0clkctrl; /* offset 0x34 */ + unsigned int uart5clkctrl; /* offset 0x38 */ unsigned int mmc0clkctrl; /* offset 0x3C */ unsigned int elmclkctrl; /* offset 0x40 */ unsigned int i2c2clkctrl; /* offset 0x44 */ unsigned int i2c1clkctrl; /* offset 0x48 */ unsigned int spi0clkctrl; /* offset 0x4C */ unsigned int spi1clkctrl; /* offset 0x50 */ - unsigned int resv4[3]; + unsigned int resv3[3]; unsigned int l4lsclkctrl; /* offset 0x60 */ unsigned int l4fwclkctrl; /* offset 0x64 */ - unsigned int resv5[6]; + unsigned int mcasp1clkctrl; /* offset 0x68 */ + unsigned int uart1clkctrl; /* offset 0x6C */ + unsigned int uart2clkctrl; /* offset 0x70 */ + unsigned int uart3clkctrl; /* offset 0x74 */ + unsigned int uart4clkctrl; /* offset 0x78 */ + unsigned int timer7clkctrl; /* offset 0x7C */ unsigned int timer2clkctrl; /* offset 0x80 */ - unsigned int resv6[11]; + unsigned int timer3clkctrl; /* offset 0x84 */ + unsigned int timer4clkctrl; /* offset 0x88 */ + unsigned int resv4[8]; + unsigned int gpio1clkctrl; /* offset 0xAC */ unsigned int gpio2clkctrl; /* offset 0xB0 */ - unsigned int resv7[7]; + unsigned int gpio3clkctrl; /* offset 0xB4 */ + unsigned int resv5; + unsigned int tpccclkctrl; /* offset 0xBC */ + unsigned int dcan0clkctrl; /* offset 0xC0 */ + unsigned int dcan1clkctrl; /* offset 0xC4 */ + unsigned int resv6[2]; unsigned int emiffwclkctrl; /* offset 0xD0 */ - unsigned int resv8[2]; + unsigned int resv7[2]; unsigned int l3instrclkctrl; /* offset 0xDC */ unsigned int l3clkctrl; /* Offset 0xE0 */ - unsigned int resv9[14]; + unsigned int resv8[4]; + unsigned int mmc1clkctrl; /* offset 0xF4 */ + unsigned int mmc2clkctrl; /* offset 0xF8 */ + unsigned int resv9[8]; unsigned int l4hsclkstctrl; /* offset 0x11C */ unsigned int l4hsclkctrl; /* offset 0x120 */ unsigned int resv10[8]; - unsigned int cpswclkctrl; /* offset 0x144 */ + unsigned int cpswclkstctrl; /* offset 0x144 */ }; /* Encapsulating Display pll registers */ @@ -213,8 +235,6 @@ struct ctrl_stat { unsigned int resv1[16]; unsigned int statusreg; /* ofset 0x40 */ }; - -void init_timer(void); #endif /* __ASSEMBLY__ */ #endif /* __KERNEL_STRICT_NAMES */ diff --git a/arch/arm/include/asm/arch-am33xx/i2c.h b/arch/arm/include/asm/arch-am33xx/i2c.h index 366e2bb..32b2258 100644 --- a/arch/arm/include/asm/arch-am33xx/i2c.h +++ b/arch/arm/include/asm/arch-am33xx/i2c.h @@ -34,9 +34,9 @@ struct i2c { unsigned short revnb_lo; /* 0x00 */ unsigned short res1; unsigned short revnb_hi; /* 0x04 */ - unsigned short res2[13]; - unsigned short sysc; /* 0x20 */ - unsigned short res3; + unsigned short res2[5]; + unsigned short sysc; /* 0x10 */ + unsigned short res3[9]; unsigned short irqstatus_raw; /* 0x24 */ unsigned short res4; unsigned short stat; /* 0x28 */ @@ -76,6 +76,6 @@ struct i2c { }; #define I2C_IP_CLK 48000000 -#define I2C_INTERNAL_SAMLPING_CLK 12000000 +#define I2C_INTERNAL_SAMPLING_CLK 12000000 #endif /* _I2C_H_ */ diff --git a/arch/arm/include/asm/arch-at91/at91_pio.h b/arch/arm/include/asm/arch-at91/at91_pio.h index 416cabf..0483c98 100644 --- a/arch/arm/include/asm/arch-at91/at91_pio.h +++ b/arch/arm/include/asm/arch-at91/at91_pio.h @@ -66,14 +66,50 @@ typedef struct at91_port { u32 puer; /* 0x64 Pull-up Enable Register */ u32 pusr; /* 0x68 Pad Pull-up Status Register */ u32 reserved4; +#if defined(CPU_HAS_PIO3) + u32 abcdsr1; /* 0x70 Peripheral ABCD Select Register 1 */ + u32 abcdsr2; /* 0x74 Peripheral ABCD Select Register 2 */ + u32 reserved5[2]; + u32 ifscdr; /* 0x80 Input Filter SCLK Disable Register */ + u32 ifscer; /* 0x84 Input Filter SCLK Enable Register */ + u32 ifscsr; /* 0x88 Input Filter SCLK Status Register */ + u32 scdr; /* 0x8C SCLK Divider Debouncing Register */ + u32 ppddr; /* 0x90 Pad Pull-down Disable Register */ + u32 ppder; /* 0x94 Pad Pull-down Enable Register */ + u32 ppdsr; /* 0x98 Pad Pull-down Status Register */ + u32 reserved6; /* */ +#else u32 asr; /* 0x70 Select A Register */ u32 bsr; /* 0x74 Select B Register */ u32 absr; /* 0x78 AB Select Status Register */ u32 reserved5[9]; /* */ +#endif u32 ower; /* 0xA0 Output Write Enable Register */ u32 owdr; /* 0xA4 Output Write Disable Register */ - u32 owsr; /* OxA8 utput Write Status Register */ + u32 owsr; /* OxA8 Output Write Status Register */ +#if defined(CPU_HAS_PIO3) + u32 reserved7; /* */ + u32 aimer; /* 0xB0 Additional INT Modes Enable Register */ + u32 aimdr; /* 0xB4 Additional INT Modes Disable Register */ + u32 aimmr; /* 0xB8 Additional INT Modes Mask Register */ + u32 reserved8; /* */ + u32 esr; /* 0xC0 Edge Select Register */ + u32 lsr; /* 0xC4 Level Select Register */ + u32 elsr; /* 0xC8 Edge/Level Status Register */ + u32 reserved9; /* 0xCC */ + u32 fellsr; /* 0xD0 Falling /Low Level Select Register */ + u32 rehlsr; /* 0xD4 Rising /High Level Select Register */ + u32 frlhsr; /* 0xD8 Fall/Rise - Low/High Status Register */ + u32 reserved10; /* */ + u32 locksr; /* 0xE0 Lock Status */ + u32 wpmr; /* 0xE4 Write Protect Mode Register */ + u32 wpsr; /* 0xE8 Write Protect Status Register */ + u32 reserved11[5]; /* */ + u32 schmitt; /* 0x100 Schmitt Trigger Register */ + u32 reserved12[63]; +#else u32 reserved6[85]; +#endif } at91_port_t; typedef union at91_pio { @@ -94,6 +130,13 @@ typedef union at91_pio { #ifdef CONFIG_AT91_GPIO int at91_set_a_periph(unsigned port, unsigned pin, int use_pullup); int at91_set_b_periph(unsigned port, unsigned pin, int use_pullup); +#if defined(CPU_HAS_PIO3) +int at91_set_c_periph(unsigned port, unsigned pin, int use_pullup); +int at91_set_d_periph(unsigned port, unsigned pin, int use_pullup); +int at91_set_pio_debounce(unsigned port, unsigned pin, int is_on, int div); +int at91_set_pio_pulldown(unsigned port, unsigned pin, int is_on); +int at91_set_pio_disable_schmitt_trig(unsigned port, unsigned pin); +#endif int at91_set_pio_input(unsigned port, unsigned pin, int use_pullup); int at91_set_pio_multi_drive(unsigned port, unsigned pin, int is_on); int at91_set_pio_output(unsigned port, unsigned pin, int value); diff --git a/arch/arm/include/asm/arch-exynos/cpu.h b/arch/arm/include/asm/arch-exynos/cpu.h index ac4ddc7..0c341d4 100644 --- a/arch/arm/include/asm/arch-exynos/cpu.h +++ b/arch/arm/include/asm/arch-exynos/cpu.h @@ -24,6 +24,7 @@ #define DEVICE_NOT_AVAILABLE 0 +#define EXYNOS_CPU_NAME "Exynos" #define EXYNOS4_ADDR_BASE 0x10000000 /* EXYNOS4 */ @@ -45,6 +46,7 @@ #define EXYNOS4_USBOTG_BASE 0x12480000 #define EXYNOS4_MMC_BASE 0x12510000 #define EXYNOS4_SROMC_BASE 0x12570000 +#define EXYNOS4_USB_HOST_EHCI_BASE 0x12580000 #define EXYNOS4_USBPHY_BASE 0x125B0000 #define EXYNOS4_UART_BASE 0x13800000 #define EXYNOS4_ADC_BASE 0x13910000 @@ -68,10 +70,11 @@ #define EXYNOS5_DMC_CTRL_BASE 0x10DD0000 #define EXYNOS5_GPIO_PART1_BASE 0x11400000 #define EXYNOS5_MIPI_DSIM_BASE 0x11D00000 +#define EXYNOS5_USB_HOST_EHCI_BASE 0x12110000 +#define EXYNOS5_USBPHY_BASE 0x12130000 +#define EXYNOS5_USBOTG_BASE 0x12140000 #define EXYNOS5_MMC_BASE 0x12200000 #define EXYNOS5_SROMC_BASE 0x12250000 -#define EXYNOS5_USBOTG_BASE 0x12480000 -#define EXYNOS5_USBPHY_BASE 0x12480000 #define EXYNOS5_UART_BASE 0x12C00000 #define EXYNOS5_PWMTIMER_BASE 0x12DD0000 #define EXYNOS5_GPIO_PART2_BASE 0x13400000 @@ -93,29 +96,42 @@ static inline int s5p_get_cpu_rev(void) static inline void s5p_set_cpu_id(void) { - s5p_cpu_id = readl(EXYNOS4_PRO_ID); - s5p_cpu_id = (0xC000 | ((s5p_cpu_id & 0x00FFF000) >> 12)); - - /* - * 0xC200: EXYNOS4210 EVT0 - * 0xC210: EXYNOS4210 EVT1 - */ - if (s5p_cpu_id == 0xC200) { - s5p_cpu_id |= 0x10; + unsigned int pro_id = (readl(EXYNOS4_PRO_ID) & 0x00FFF000) >> 12; + + switch (pro_id) { + case 0x200: + /* Exynos4210 EVT0 */ + s5p_cpu_id = 0x4210; s5p_cpu_rev = 0; - } else if (s5p_cpu_id == 0xC210) { - s5p_cpu_rev = 1; + break; + case 0x210: + /* Exynos4210 EVT1 */ + s5p_cpu_id = 0x4210; + break; + case 0x412: + /* Exynos4412 */ + s5p_cpu_id = 0x4412; + break; + case 0x520: + /* Exynos5250 */ + s5p_cpu_id = 0x5250; + break; } } +static inline char *s5p_get_cpu_name(void) +{ + return EXYNOS_CPU_NAME; +} + #define IS_SAMSUNG_TYPE(type, id) \ static inline int cpu_is_##type(void) \ { \ - return s5p_cpu_id == id ? 1 : 0; \ + return (s5p_cpu_id >> 12) == id; \ } -IS_SAMSUNG_TYPE(exynos4, 0xc210) -IS_SAMSUNG_TYPE(exynos5, 0xc520) +IS_SAMSUNG_TYPE(exynos4, 0x4) +IS_SAMSUNG_TYPE(exynos5, 0x5) #define SAMSUNG_BASE(device, base) \ static inline unsigned int samsung_get_base_##device(void) \ @@ -145,6 +161,7 @@ SAMSUNG_BASE(swreset, SWRESET) SAMSUNG_BASE(timer, PWMTIMER_BASE) SAMSUNG_BASE(uart, UART_BASE) SAMSUNG_BASE(usb_phy, USBPHY_BASE) +SAMSUNG_BASE(usb_ehci, USB_HOST_EHCI_BASE) SAMSUNG_BASE(usb_otg, USBOTG_BASE) SAMSUNG_BASE(watchdog, WATCHDOG_BASE) SAMSUNG_BASE(power, POWER_BASE) diff --git a/arch/arm/include/asm/arch-exynos/ehci-s5p.h b/arch/arm/include/asm/arch-exynos/ehci.h index 68feb85..8aeff8a 100644 --- a/arch/arm/include/asm/arch-exynos/ehci-s5p.h +++ b/arch/arm/include/asm/arch-exynos/ehci.h @@ -1,5 +1,5 @@ /* - * SAMSUNG S5P USB HOST EHCI Controller + * SAMSUNG EXYNOS USB HOST EHCI Controller * * Copyright (C) 2012 Samsung Electronics Co.Ltd * Vivek Gautam <gautam.vivek@samsung.com> @@ -20,8 +20,8 @@ * MA 02110-1301 USA */ -#ifndef __ASM_ARM_ARCH_EXYNOS5_EHCI_S5P_H__ -#define __ASM_ARM_ARCH_EXYNOS5_EHCI_S5P_H__ +#ifndef __ASM_ARM_ARCH_EHCI_H__ +#define __ASM_ARM_ARCH_EHCI_H__ #define CLK_24MHZ 5 @@ -43,7 +43,7 @@ #define EHCICTRL_ENAINCR16 (1 << 26) /* Register map for PHY control */ -struct s5p_usb_phy { +struct exynos_usb_phy { unsigned int usbphyctrl0; unsigned int usbphytune0; unsigned int reserved1[2]; @@ -63,4 +63,4 @@ struct s5p_usb_phy { /* Switch on the VBUS power. */ int board_usb_vbus_init(void); -#endif /* __ASM_ARM_ARCH_EXYNOS5_EHCI_S5P_H__ */ +#endif /* __ASM_ARM_ARCH_EHCI_H__ */ diff --git a/arch/arm/include/asm/arch-exynos/periph.h b/arch/arm/include/asm/arch-exynos/periph.h new file mode 100644 index 0000000..5db25aa --- /dev/null +++ b/arch/arm/include/asm/arch-exynos/periph.h @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2012 Samsung Electronics + * Rajeshwari Shinde <rajeshwari.s@samsung.com> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef __ASM_ARM_ARCH_PERIPH_H +#define __ASM_ARM_ARCH_PERIPH_H + +/* + * Peripherals requiring clock/pinmux configuration. List will + * grow with support for more devices getting added. + * + */ +enum periph_id { + PERIPH_ID_SDMMC0, + PERIPH_ID_SDMMC1, + PERIPH_ID_SDMMC2, + PERIPH_ID_SDMMC3, + PERIPH_ID_SROMC, + PERIPH_ID_UART0, + PERIPH_ID_UART1, + PERIPH_ID_UART2, + PERIPH_ID_UART3, + + PERIPH_ID_COUNT, + PERIPH_ID_NONE = -1, +}; + +#endif /* __ASM_ARM_ARCH_PERIPH_H */ diff --git a/arch/arm/include/asm/arch-exynos/pinmux.h b/arch/arm/include/asm/arch-exynos/pinmux.h new file mode 100644 index 0000000..10ea736 --- /dev/null +++ b/arch/arm/include/asm/arch-exynos/pinmux.h @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2012 Samsung Electronics + * Abhilash Kesavan <a.kesavan@samsung.com> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef __ASM_ARM_ARCH_PINMUX_H +#define __ASM_ARM_ARCH_PINMUX_H + +#include "periph.h" + +/* + * Flags for setting specific configarations of peripherals. + * List will grow with support for more devices getting added. + */ +enum { + PINMUX_FLAG_NONE = 0x00000000, + + /* Flags for eMMC */ + PINMUX_FLAG_8BIT_MODE = 1 << 0, /* SDMMC 8-bit mode */ + + /* Flags for SROM controller */ + PINMUX_FLAG_BANK = 3 << 0, /* bank number (0-3) */ + PINMUX_FLAG_16BIT = 1 << 2, /* 16-bit width */ +}; + +/** + * Configures the pinmux for a particular peripheral. + * + * Each gpio can be configured in many different ways (4 bits on exynos) + * such as "input", "output", "special function", "external interrupt" + * etc. This function will configure the peripheral pinmux along with + * pull-up/down and drive strength. + * + * @param peripheral peripheral to be configured + * @param flags configure flags + * @return 0 if ok, -1 on error (e.g. unsupported peripheral) + */ +int exynos_pinmux_config(int peripheral, int flags); + +#endif diff --git a/arch/arm/include/asm/arch-exynos/power.h b/arch/arm/include/asm/arch-exynos/power.h index 6444fd0..e5467e2 100644 --- a/arch/arm/include/asm/arch-exynos/power.h +++ b/arch/arm/include/asm/arch-exynos/power.h @@ -225,6 +225,628 @@ struct exynos4_power { unsigned int gps_alive_status; unsigned int gps_alive_option; }; + +struct exynos5_power { + unsigned int om_stat; + unsigned char res1[0x18]; + unsigned int rtc_clko_sel; + unsigned int gnss_rtc_out_ctrl; + unsigned char res2[0x1dc]; + unsigned int central_seq_configuration; + unsigned int central_seq_status; + unsigned int central_seq_option; + unsigned char res3[0x14]; + unsigned int seq_transition0; + unsigned int seq_transition1; + unsigned int seq_transition2; + unsigned int seq_transition3; + unsigned int seq_transition4; + unsigned int seq_transition5; + unsigned int seq_transition6; + unsigned int seq_transition7; + unsigned int central_seq_dmc_configuration; + unsigned int central_seq_dmc_status; + unsigned int central_seq_dmc_option; + unsigned char res4[0x14]; + unsigned int seq_dmc_transition0; + unsigned int seq_dmc_transition1; + unsigned int seq_dmc_transition2; + unsigned int seq_dmc_transition3; + unsigned int seq_dmc_transition4; + unsigned int seq_dmc_transition5; + unsigned int seq_dmc_transition6; + unsigned int seq_dmc_transition7; + unsigned char res5[0x180]; + unsigned int swreset; + unsigned int rst_stat; + unsigned int automatic_wdt_reset_disable; + unsigned int mask_wdt_reset_request; + unsigned int mask_wreset_request; + unsigned char res6[0xec]; + unsigned int reset_sequencer_configuration; + unsigned int reset_sequencer_status; + unsigned int reset_sequencer_option; + unsigned char res7[0xf4]; + unsigned int wakeup_stat; + unsigned int eint_wakeup_mask; + unsigned int wakeup_mask; + unsigned int wakeup_interrupt; + unsigned char res8[0x10]; + unsigned int wakeup_stat_dmc; + unsigned int eint_wakeup_mask_dmc; + unsigned int wakeup_mask_dmc; + unsigned int wakeup_interrupt_dmc; + unsigned char res9[0xd0]; + unsigned int hdmi_phy_control; + unsigned int usbdrd_phy_control; + unsigned int usbhost_phy_control; + unsigned int efnand_phy_control; + unsigned int mipi_phy0_control; + unsigned int mipi_phy1_control; + unsigned int adc_phy_control; + unsigned int mtcadc_phy_control; + unsigned int dptx_phy_control; + unsigned int sata_phy_control; + unsigned char res10[0xd8]; + unsigned int inform0; + unsigned int inform1; + unsigned int inform2; + unsigned int inform3; + unsigned int sysip_dat0; + unsigned int sysip_dat1; + unsigned int sysip_dat2; + unsigned int sysip_dat3; + unsigned char res11[0xe0]; + unsigned int pmu_spare0; + unsigned int pmu_spare1; + unsigned int pmu_spare2; + unsigned int pmu_spare3; + unsigned char res12[0x70]; + unsigned int irom_data_reg0; + unsigned int irom_data_reg1; + unsigned int irom_data_reg2; + unsigned int irom_data_reg3; + unsigned char res13[0x70]; + unsigned int pmu_debug; + unsigned char res14[0x5fc]; + unsigned int arm_core0_sys_pwr_reg; + unsigned int dis_irq_arm_core0_local_sys_pwr_reg; + unsigned int dis_irq_arm_core0_central_sys_pwr_reg; + unsigned char res15[0x4]; + unsigned int arm_core1_sys_pwr_reg; + unsigned int dis_irq_arm_core1_local_sys_pwr_reg; + unsigned int dis_irq_arm_core1_central_sys_pwr_reg; + unsigned char res16[0x24]; + unsigned int fsys_arm_sys_pwr_reg; + unsigned int dis_irq_fsys_arm_local_sys_pwr_reg; + unsigned int dis_irq_fsys_arm_central_sys_pwr_reg; + unsigned char res17[0x4]; + unsigned int isp_arm_sys_pwr_reg; + unsigned int dis_irq_isp_arm_local_sys_pwr_reg; + unsigned int dis_irq_isp_arm_central_sys_pwr_reg; + unsigned char res18[0x24]; + unsigned int arm_common_sys_pwr_reg; + unsigned char res19[0x3c]; + unsigned int arm_l2_sys_pwr_reg; + unsigned char res20[0x3c]; + unsigned int cmu_aclkstop_sys_pwr_reg; + unsigned int cmu_sclkstop_sys_pwr_reg; + unsigned char res21[0x4]; + unsigned int cmu_reset_sys_pwr_reg; + unsigned char res22[0x10]; + unsigned int cmu_aclkstop_dmc_sys_pwr_reg; + unsigned int cmu_sclkstop_dmc_sys_pwr_reg; + unsigned char res23[0x4]; + unsigned int cmu_reset_dmc_sys_pwr_reg; + unsigned char res24[0x8]; + unsigned int ddrphy_dlllock_sys_pwr_reg; + unsigned char res25[0x4]; + unsigned int apll_sysclk_sys_pwr_reg; + unsigned int mpll_sysclk_sys_pwr_reg; + unsigned int vpll_sysclk_sys_pwr_reg; + unsigned int epll_sysclk_sys_pwr_reg; + unsigned int bpll_sysclk_sys_pwr_reg; + unsigned int cpll_sysclk_sys_pwr_reg; + unsigned int gpll_sysclk_sys_pwr_reg; + unsigned char res26[0x8]; + unsigned int mplluser_sysclk_sys_pwr_reg; + unsigned char res27[0x8]; + unsigned int bplluser_sysclk_sys_pwr_reg; + unsigned char res28[0xc]; + unsigned int top_bus_sys_pwr_reg; + unsigned int top_retention_sys_pwr_reg; + unsigned int top_pwr_sys_pwr_reg; + unsigned char res29[0x4]; + unsigned int top_bus_dmc_sys_pwr_reg; + unsigned int top_retention_dmc_sys_pwr_reg; + unsigned int top_pwr_dmc_sys_pwr_reg; + unsigned char res30[0x4]; + unsigned int logic_reset_sys_pwr_reg; + unsigned int oscclk_gate_sys_pwr_reg; + unsigned char res31[0x8]; + unsigned int logic_reset_dmc_sys_pwr_reg; + unsigned int oscclk_gate_dmc_sys_pwr_reg; + unsigned char res32[0x8]; + unsigned int usbotg_mem_sys_pwr_reg; + unsigned char res33[0x4]; + unsigned int g2d_mem_sys_pwr_reg; + unsigned int usbdrd_mem_sys_pwr_reg; + unsigned int efnand_mem_sys_pwr_reg; + unsigned int cssys_mem_sys_pwr_reg; + unsigned int secss_mem_sys_pwr_reg; + unsigned int rotator_mem_sys_pwr_reg; + unsigned int intram_mem_sys_pwr_reg; + unsigned int introm_mem_sys_pwr_reg; + unsigned int jpeg_mem_sys_pwr_reg; + unsigned int hsi_mem_sys_pwr_reg; + unsigned char res34[0x4]; + unsigned int mcuiop_mem_sys_pwr_reg; + unsigned char res35[0x4]; + unsigned int sata_mem_sys_pwr_reg; + unsigned int pad_retention_dram_sys_pwr_reg; + unsigned int pad_retention_mau_sys_pwr_reg; + unsigned int pad_retention_jtag_sys_pwr_reg; + unsigned char res36[0xc]; + unsigned int pad_retention_mmc2_sys_pwr_reg; + unsigned int pad_retention_mmc3_sys_pwr_reg; + unsigned int pad_retention_gpio_sys_pwr_reg; + unsigned int pad_retention_uart_sys_pwr_reg; + unsigned int pad_retention_mmc0_sys_pwr_reg; + unsigned int pad_retention_mmc1_sys_pwr_reg; + unsigned int pad_retention_ebia_sys_pwr_reg; + unsigned int pad_retention_ebib_sys_pwr_reg; + unsigned int pad_retention_spi_sys_pwr_reg; + unsigned int pad_retention_gpio_dmc_sys_pwr_reg; + unsigned int pad_isolation_sys_pwr_reg; + unsigned char res37[0xc]; + unsigned int pad_isolation_dmc_sys_pwr_reg; + unsigned char res38[0xc]; + unsigned int pad_alv_sel_sys_pwr_reg; + unsigned char res39[0x20]; + unsigned int xxti_sys_pwr_reg; + unsigned char res40[0x38]; + unsigned int ext_regulator_sys_pwr_reg; + unsigned char res41[0x3c]; + unsigned int gpio_mode_sys_pwr_reg; + unsigned char res42[0x1c]; + unsigned int gpio_mode_dmc_sys_pwr_reg; + unsigned char res43[0x1c]; + unsigned int gpio_mode_mau_sys_pwr_reg; + unsigned int top_asb_reset_sys_pwr_reg; + unsigned int top_asb_isolation_sys_pwr_reg; + unsigned char res44[0xb4]; + unsigned int gscl_sys_pwr_reg; + unsigned int isp_sys_pwr_reg; + unsigned int mfc_sys_pwr_reg; + unsigned int g3d_sys_pwr_reg; + unsigned char res45[0x4]; + unsigned int disp1_sys_pwr_reg; + unsigned int mau_sys_pwr_reg; + unsigned char res46[0x64]; + unsigned int cmu_clkstop_gscl_sys_pwr_reg; + unsigned int cmu_clkstop_isp_sys_pwr_reg; + unsigned int cmu_clkstop_mfc_sys_pwr_reg; + unsigned int cmu_clkstop_g3d_sys_pwr_reg; + unsigned char res47[0x4]; + unsigned int cmu_clkstop_disp1_sys_pwr_reg; + unsigned int cmu_clkstop_mau_sys_pwr_reg; + unsigned char res48[0x24]; + unsigned int cmu_sysclk_gscl_sys_pwr_reg; + unsigned int cmu_sysclk_isp_sys_pwr_reg; + unsigned int cmu_sysclk_mfc_sys_pwr_reg; + unsigned int cmu_sysclk_g3d_sys_pwr_reg; + unsigned char res49[0x4]; + unsigned int cmu_sysclk_disp1_sys_pwr_reg; + unsigned int cmu_sysclk_mau_sys_pwr_reg; + unsigned char res50[0xa4]; + unsigned int cmu_reset_gscl_sys_pwr_reg; + unsigned int cmu_reset_isp_sys_pwr_reg; + unsigned int cmu_reset_mfc_sys_pwr_reg; + unsigned int cmu_reset_g3d_sys_pwr_reg; + unsigned char res51[0x4]; + unsigned int cmu_reset_disp1_sys_pwr_reg; + unsigned int cmu_reset_mau_sys_pwr_reg; + unsigned char res52[0xa64]; + unsigned int arm_core0_configuration; + unsigned int arm_core0_status; + unsigned int arm_core0_option; + unsigned char res53[0x14]; + unsigned int dis_irq_arm_core0_local_configuration; + unsigned int dis_irq_arm_core0_local_status; + unsigned int dis_irq_arm_core0_local_option; + unsigned char res54[0x14]; + unsigned int dis_irq_arm_core0_central_configuration; + unsigned int dis_irq_arm_core0_central_status; + unsigned int dis_irq_arm_core0_central_option; + unsigned char res55[0x34]; + unsigned int arm_core1_configuration; + unsigned int arm_core1_status; + unsigned int arm_core1_option; + unsigned char res56[0x14]; + unsigned int dis_irq_arm_core1_local_configuration; + unsigned int dis_irq_arm_core1_local_status; + unsigned int dis_irq_arm_core1_local_option; + unsigned char res57[0x14]; + unsigned int dis_irq_arm_core1_central_configuration; + unsigned int dis_irq_arm_core1_central_status; + unsigned int dis_irq_arm_core1_central_option; + unsigned char res58[0x134]; + unsigned int fsys_arm_configuration; + unsigned int fsys_arm_status; + unsigned int fsys_arm_option; + unsigned char res59[0x14]; + unsigned int dis_irq_fsys_arm_local_configuration; + unsigned int dis_irq_fsys_arm_local_status; + unsigned int dis_irq_fsys_arm_local_option; + unsigned char res60[0x14]; + unsigned int dis_irq_fsys_arm_central_configuration; + unsigned int dis_irq_fsys_arm_central_status; + unsigned int dis_irq_fsys_arm_central_option; + unsigned char res61[0x34]; + unsigned int isp_arm_configuration; + unsigned int isp_arm_status; + unsigned int isp_arm_option; + unsigned char res62[0x14]; + unsigned int dis_irq_isp_arm_local_configuration; + unsigned int dis_irq_isp_arm_local_status; + unsigned int dis_irq_isp_arm_local_option; + unsigned char res63[0x14]; + unsigned int dis_irq_isp_arm_central_configuration; + unsigned int dis_irq_isp_arm_central_status; + unsigned int dis_irq_isp_arm_central_option; + unsigned char res64[0x134]; + unsigned int arm_common_configuration; + unsigned int arm_common_status; + unsigned int arm_common_option; + unsigned char res65[0x1f4]; + unsigned int arm_l2_configuration; + unsigned int arm_l2_status; + unsigned int arm_l2_option; + unsigned char res66[0x1f4]; + unsigned int cmu_aclkstop_configuration; + unsigned int cmu_aclkstop_status; + unsigned int cmu_aclkstop_option; + unsigned char res67[0x14]; + unsigned int cmu_sclkstop_configuration; + unsigned int cmu_sclkstop_status; + unsigned int cmu_sclkstop_option; + unsigned char res68[0x34]; + unsigned int cmu_reset_configuration; + unsigned int cmu_reset_status; + unsigned int cmu_reset_option; + unsigned char res69[0x94]; + unsigned int cmu_aclkstop_dmc_configuration; + unsigned int cmu_aclkstop_dmc_status; + unsigned int cmu_aclkstop_dmc_option; + unsigned char res70[0x14]; + unsigned int cmu_sclkstop_dmc_configuration; + unsigned int cmu_sclkstop_dmc_status; + unsigned int cmu_sclkstop_dmc_option; + unsigned char res71[0x34]; + unsigned int cmu_reset_dmc_configuration; + unsigned int cmu_reset_dmc_status; + unsigned int cmu_reset_dmc_option; + unsigned char res72[0x54]; + unsigned int ddrphy_dlllock_configuration; + unsigned int ddrphy_dlllock_status; + unsigned int ddrphy_dlllock_option; + unsigned char res73[0x34]; + unsigned int apll_sysclk_configuration; + unsigned int apll_sysclk_status; + unsigned int apll_sysclk_option; + unsigned char res74[0x18]; + unsigned int mpll_sysclk_status; + unsigned int mpll_sysclk_option; + unsigned char res75[0x14]; + unsigned int vpll_sysclk_configuration; + unsigned int vpll_sysclk_status; + unsigned int vpll_sysclk_option; + unsigned char res76[0x14]; + unsigned int epll_sysclk_configuration; + unsigned int epll_sysclk_status; + unsigned int epll_sysclk_option; + unsigned char res77[0x14]; + unsigned int bpll_sysclk_configuration; + unsigned int bpll_sysclk_status; + unsigned int bpll_sysclk_option; + unsigned char res78[0x14]; + unsigned int cpll_sysclk_configuration; + unsigned int cpll_sysclk_status; + unsigned int cpll_sysclk_option; + unsigned char res79[0x14]; + unsigned int gpll_sysclk_configuration; + unsigned int gpll_sysclk_status; + unsigned int gpll_sysclk_option; + unsigned char res80[0x54]; + unsigned int mplluser_sysclk_configuration; + unsigned int mplluser_sysclk_status; + unsigned int mplluser_sysclk_option; + unsigned char res81[0x54]; + unsigned int bplluser_sysclk_configuration; + unsigned int bplluser_sysclk_status; + unsigned int bplluser_sysclk_option; + unsigned char res82[0x74]; + unsigned int top_bus_configuration; + unsigned int top_bus_status; + unsigned int top_bus_option; + unsigned char res83[0x14]; + unsigned int top_retention_configuration; + unsigned int top_retention_status; + unsigned int top_retention_option; + unsigned char res84[0x14]; + unsigned int top_pwr_configuration; + unsigned int top_pwr_status; + unsigned int top_pwr_option; + unsigned char res85[0x34]; + unsigned int top_bus_dmc_configuration; + unsigned int top_bus_dmc_status; + unsigned int top_bus_dmc_option; + unsigned char res86[0x14]; + unsigned int top_retention_dmc_configuration; + unsigned int top_retention_dmc_status; + unsigned int top_retention_dmc_option; + unsigned char res87[0x14]; + unsigned int top_pwr_dmc_configuration; + unsigned int top_pwr_dmc_status; + unsigned int top_pwr_dmc_option; + unsigned char res88[0x34]; + unsigned int logic_reset_configuration; + unsigned int logic_reset_status; + unsigned int logic_reset_option; + unsigned char res89[0x14]; + unsigned int oscclk_gate_configuration; + unsigned int oscclk_gate_status; + unsigned int oscclk_gate_option; + unsigned char res90[0x54]; + unsigned int logic_reset_dmc_configuration; + unsigned int logic_reset_dmc_status; + unsigned int logic_reset_dmc_option; + unsigned char res91[0x14]; + unsigned int oscclk_gate_dmc_configuration; + unsigned int oscclk_gate_dmc_status; + unsigned int oscclk_gate_dmc_option; + unsigned char res92[0x54]; + unsigned int usbotg_mem_configuration; + unsigned int usbotg_mem_status; + unsigned int usbotg_mem_option; + unsigned char res93[0x34]; + unsigned int g2d_mem_configuration; + unsigned int g2d_mem_status; + unsigned int g2d_mem_option; + unsigned char res94[0x14]; + unsigned int usbdrd_mem_configuration; + unsigned int usbdrd_mem_status; + unsigned int usbdrd_mem_option; + unsigned char res95[0x14]; + unsigned int efnand_mem_configuration; + unsigned int efnand_mem_status; + unsigned int efnand_mem_option; + unsigned char res96[0x14]; + unsigned int cssys_mem_configuration; + unsigned int cssys_mem_status; + unsigned int cssys_mem_option; + unsigned char res97[0x14]; + unsigned int secss_mem_configuration; + unsigned int secss_mem_status; + unsigned int secss_mem_option; + unsigned char res98[0x14]; + unsigned int rotator_mem_configuration; + unsigned int rotator_mem_status; + unsigned int rotator_mem_option; + unsigned char res99[0x14]; + unsigned int intram_mem_configuration; + unsigned int intram_mem_status; + unsigned int intram_mem_option; + unsigned char res100[0x14]; + unsigned int introm_mem_configuration; + unsigned int introm_mem_status; + unsigned int introm_mem_option; + unsigned char res101[0x14]; + unsigned int jpeg_mem_configuration; + unsigned int jpeg_mem_status; + unsigned int jpeg_mem_option; + unsigned char res102[0x14]; + unsigned int hsi_mem_configuration; + unsigned int hsi_mem_status; + unsigned int hsi_mem_option; + unsigned char res103[0x34]; + unsigned int mcuiop_mem_configuration; + unsigned int mcuiop_mem_status; + unsigned int mcuiop_mem_option; + unsigned char res104[0x14]; + unsigned int sata_mem_configuration; + unsigned int sata_mem_status; + unsigned int sata_mem_option; + unsigned char res105[0x34]; + unsigned int pad_retention_dram_configuration; + unsigned int pad_retention_dram_status; + unsigned int pad_retention_dram_option; + unsigned char res106[0x14]; + unsigned int pad_retention_mau_configuration; + unsigned int pad_retention_mau_status; + unsigned int pad_retention_mau_option; + unsigned char res107[0x14]; + unsigned int pad_retention_jtag_configuration; + unsigned int pad_retention_jtag_status; + unsigned int pad_retention_jtag_option; + unsigned char res108[0x74]; + unsigned int pad_retention_mmc2_configuration; + unsigned int pad_retention_mmc2_status; + unsigned int pad_retention_mmc2_option; + unsigned char res109[0x14]; + unsigned int pad_retention_mmc3_configuration; + unsigned int pad_retention_mmc3_status; + unsigned int pad_retention_mmc3_option; + unsigned char res110[0x14]; + unsigned int pad_retention_gpio_configuration; + unsigned int pad_retention_gpio_status; + unsigned int pad_retention_gpio_option; + unsigned char res111[0x14]; + unsigned int pad_retention_uart_configuration; + unsigned int pad_retention_uart_status; + unsigned int pad_retention_uart_option; + unsigned char res112[0x14]; + unsigned int pad_retention_mmc0_configuration; + unsigned int pad_retention_mmc0_status; + unsigned int pad_retention_mmc0_option; + unsigned char res113[0x14]; + unsigned int pad_retention_mmc1_configuration; + unsigned int pad_retention_mmc1_status; + unsigned int pad_retention_mmc1_option; + unsigned char res114[0x14]; + unsigned int pad_retention_ebia_configuration; + unsigned int pad_retention_ebia_status; + unsigned int pad_retention_ebia_option; + unsigned char res115[0x14]; + unsigned int pad_retention_ebib_configuration; + unsigned int pad_retention_ebib_status; + unsigned int pad_retention_ebib_option; + unsigned char res116[0x14]; + unsigned int pad_retention_spi_configuration; + unsigned int pad_retention_spi_status; + unsigned int pad_retention_spi_option; + unsigned char res117[0x14]; + unsigned int pad_retention_gpio_dmc_configuration; + unsigned int pad_retention_gpio_dmc_status; + unsigned int pad_retention_gpio_dmc_option; + unsigned char res118[0x14]; + unsigned int pad_isolation_configuration; + unsigned int pad_isolation_status; + unsigned int pad_isolation_option; + unsigned char res119[0x74]; + unsigned int pad_isolation_dmc_configuration; + unsigned int pad_isolation_dmc_status; + unsigned int pad_isolation_dmc_option; + unsigned char res120[0x74]; + unsigned int pad_alv_sel_configuration; + unsigned int pad_alv_sel_status; + unsigned int pad_alv_sel_option0; + unsigned int ps_hold_control; + unsigned char res130[0x110]; + unsigned int xxti_configuration; + unsigned int xxti_status; + unsigned int xxti_option; + unsigned char res131[0x10]; + unsigned int xxti_duration3; + unsigned char res132[0x1c0]; + unsigned int ext_regulator_configuration; + unsigned int ext_regulator_status; + unsigned int ext_regulator_option; + unsigned char res133[0x10]; + unsigned int ext_regulator_duration3; + unsigned char res134[0x1e0]; + unsigned int gpio_mode_configuration; + unsigned int gpio_mode_status; + unsigned int gpio_mode_option; + unsigned char res135[0xf4]; + unsigned int gpio_mode_dmc_configuration; + unsigned int gpio_mode_dmc_status; + unsigned int gpio_mode_dmc_option; + unsigned char res136[0xd4]; + unsigned int gpio_mode_mau_configuration; + unsigned int gpio_mode_mau_status; + unsigned int gpio_mode_mau_option; + unsigned char res137[0x14]; + unsigned int top_asb_reset_configuration; + unsigned int top_asb_reset_status; + unsigned int top_asb_reset_option; + unsigned char res138[0x14]; + unsigned int top_asb_isolation_configuration; + unsigned int top_asb_isolation_status; + unsigned int top_asb_isolation_option; + unsigned char res139[0x5d4]; + unsigned int gscl_configuration; + unsigned int gscl_status; + unsigned int gscl_option; + unsigned char res140[0x14]; + unsigned int isp_configuration; + unsigned int isp_status; + unsigned int isp_option; + unsigned char res141[0x14]; + unsigned int mfc_configuration; + unsigned int mfc_status; + unsigned int mfc_option; + unsigned char res142[0x14]; + unsigned int g3d_configuration; + unsigned int g3d_status; + unsigned int g3d_option; + unsigned char res143[0x34]; + unsigned int disp1_configuration; + unsigned int disp1_status; + unsigned int disp1_option; + unsigned char res144[0x14]; + unsigned int mau_configuration; + unsigned int mau_status; + unsigned int mau_option; + unsigned char res145[0x334]; + unsigned int cmu_clkstop_gscl_configuration; + unsigned int cmu_clkstop_gscl_status; + unsigned int cmu_clkstop_gscl_option; + unsigned char res146[0x14]; + unsigned int cmu_clkstop_isp_configuration; + unsigned int cmu_clkstop_isp_status; + unsigned int cmu_clkstop_isp_option; + unsigned char res147[0x14]; + unsigned int cmu_clkstop_mfc_configuration; + unsigned int cmu_clkstop_mfc_status; + unsigned int cmu_clkstop_mfc_option; + unsigned char res148[0x14]; + unsigned int cmu_clkstop_g3d_configuration; + unsigned int cmu_clkstop_g3d_status; + unsigned int cmu_clkstop_g3d_option; + unsigned char res149[0x34]; + unsigned int cmu_clkstop_disp1_configuration; + unsigned int cmu_clkstop_disp1_status; + unsigned int cmu_clkstop_disp1_option; + unsigned char res150[0x14]; + unsigned int cmu_clkstop_mau_configuration; + unsigned int cmu_clkstop_mau_status; + unsigned int cmu_clkstop_mau_option; + unsigned char res151[0x134]; + unsigned int cmu_sysclk_gscl_configuration; + unsigned int cmu_sysclk_gscl_status; + unsigned int cmu_sysclk_gscl_option; + unsigned char res152[0x18]; + unsigned int cmu_sysclk_isp_status; + unsigned int cmu_sysclk_isp_option; + unsigned char res153[0x18]; + unsigned int cmu_sysclk_mfc_status; + unsigned int cmu_sysclk_mfc_option; + unsigned char res154[0x18]; + unsigned int cmu_sysclk_g3d_status; + unsigned int cmu_sysclk_g3d_option; + unsigned char res155[0x38]; + unsigned int cmu_sysclk_disp1_status; + unsigned int cmu_sysclk_disp1_option; + unsigned char res156[0x18]; + unsigned int cmu_sysclk_mau_status; + unsigned int cmu_sysclk_mau_option; + unsigned char res157[0x534]; + unsigned int cmu_reset_gscl_configuration; + unsigned int cmu_reset_gscl_status; + unsigned int cmu_reset_gscl_option; + unsigned char res158[0x14]; + unsigned int cmu_reset_isp_configuration; + unsigned int cmu_reset_isp_status; + unsigned int cmu_reset_isp_option; + unsigned char res159[0x14]; + unsigned int cmu_reset_mfc_configuration; + unsigned int cmu_reset_mfc_status; + unsigned int cmu_reset_mfc_option; + unsigned char res160[0x14]; + unsigned int cmu_reset_g3d_configuration; + unsigned int cmu_reset_g3d_status; + unsigned int cmu_reset_g3d_option; + unsigned char res161[0x34]; + unsigned int cmu_reset_disp1_configuration; + unsigned int cmu_reset_disp1_status; + unsigned int cmu_reset_disp1_option; + unsigned char res162[0x14]; + unsigned int cmu_reset_mau_configuration; + unsigned int cmu_reset_mau_status; + unsigned int cmu_reset_mau_option; + unsigned char res163[0x24]; +}; #endif /* __ASSEMBLY__ */ void set_mipi_phy_ctrl(unsigned int dev_index, unsigned int enable); @@ -233,4 +855,8 @@ void set_mipi_phy_ctrl(unsigned int dev_index, unsigned int enable); #define EXYNOS_MIPI_PHY_SRESETN (1 << 1) #define EXYNOS_MIPI_PHY_MRESETN (1 << 2) +void set_usbhost_phy_ctrl(unsigned int enable); + +#define POWER_USB_HOST_PHY_CTRL_EN (1 << 0) +#define POWER_USB_HOST_PHY_CTRL_DISABLE (0 << 0) #endif diff --git a/arch/arm/include/asm/arch-exynos/system.h b/arch/arm/include/asm/arch-exynos/system.h index c85f949..42e1d21 100644 --- a/arch/arm/include/asm/arch-exynos/system.h +++ b/arch/arm/include/asm/arch-exynos/system.h @@ -42,12 +42,16 @@ struct exynos5_sysreg { unsigned int reserved; unsigned int ispblk_cfg; unsigned int usb20phy_cfg; + unsigned char res2[0x29c]; unsigned int mipi_dphy; unsigned int dptx_dphy; unsigned int phyclk_sel; }; #endif +#define USB20_PHY_CFG_HOST_LINK_EN (1 << 0) + +void set_usbhost_mode(unsigned int mode); void set_system_display_ctrl(void); #endif /* _EXYNOS4_SYSTEM_H */ diff --git a/arch/arm/include/asm/arch-kirkwood/config.h b/arch/arm/include/asm/arch-kirkwood/config.h index 91164eb..a9499b7 100644 --- a/arch/arm/include/asm/arch-kirkwood/config.h +++ b/arch/arm/include/asm/arch-kirkwood/config.h @@ -82,9 +82,15 @@ #ifdef CONFIG_CMD_SF #define CONFIG_HARD_SPI 1 #define CONFIG_KIRKWOOD_SPI 1 -#define CONFIG_ENV_SPI_BUS 0 -#define CONFIG_ENV_SPI_CS 0 -#define CONFIG_ENV_SPI_MAX_HZ 50000000 /*50Mhz */ +#ifndef CONFIG_ENV_SPI_BUS +# define CONFIG_ENV_SPI_BUS 0 +#endif +#ifndef CONFIG_ENV_SPI_CS +# define CONFIG_ENV_SPI_CS 0 +#endif +#ifndef CONFIG_ENV_SPI_MAX_HZ +# define CONFIG_ENV_SPI_MAX_HZ 50000000 +#endif #endif /* diff --git a/arch/arm/include/asm/arch-kirkwood/mpp.h b/arch/arm/include/asm/arch-kirkwood/mpp.h index b3c090e..8e50ee7 100644 --- a/arch/arm/include/asm/arch-kirkwood/mpp.h +++ b/arch/arm/include/asm/arch-kirkwood/mpp.h @@ -312,6 +312,6 @@ #define MPP_MAX 49 -void kirkwood_mpp_conf(unsigned int *mpp_list); +void kirkwood_mpp_conf(u32 *mpp_list, u32 *mpp_save); #endif diff --git a/arch/arm/include/asm/arch-kirkwood/spi.h b/arch/arm/include/asm/arch-kirkwood/spi.h index 1d5043f..c79bed7 100644 --- a/arch/arm/include/asm/arch-kirkwood/spi.h +++ b/arch/arm/include/asm/arch-kirkwood/spi.h @@ -37,6 +37,17 @@ struct kwspi_registers { u32 irq_mask; /* 0x10614 */ }; +/* They are used to define CONFIG_SYS_KW_SPI_MPP + * each of the below #defines selects which mpp is + * configured for each SPI signal in spi_claim_bus + * bit 0: selects pin for MOSI (MPP1 if 0, MPP6 if 1) + * bit 1: selects pin for SCK (MPP2 if 0, MPP10 if 1) + * bit 2: selects pin for MISO (MPP3 if 0, MPP11 if 1) + */ +#define MOSI_MPP6 (1 << 0) +#define SCK_MPP10 (1 << 1) +#define MISO_MPP11 (1 << 2) + #define KWSPI_CLKPRESCL_MASK 0x1f #define KWSPI_CSN_ACT 1 /* Activates serial memory interface */ #define KWSPI_SMEMRDY (1 << 1) /* SerMem Data xfer ready */ diff --git a/arch/arm/include/asm/arch-mx28/regs-common.h b/arch/arm/include/asm/arch-mx28/regs-common.h index 94b512d..d2e1953 100644 --- a/arch/arm/include/asm/arch-mx28/regs-common.h +++ b/arch/arm/include/asm/arch-mx28/regs-common.h @@ -70,7 +70,7 @@ struct mx28_register_32 { #define mx28_reg_8(name) \ union { \ struct { __mx28_reg_8(name) }; \ - struct mx28_register_32 name##_reg; \ + struct mx28_register_8 name##_reg; \ }; #define mx28_reg_32(name) \ diff --git a/arch/arm/include/asm/arch-mx31/imx-regs.h b/arch/arm/include/asm/arch-mx31/imx-regs.h index 6454acb..7ddbbd6 100644 --- a/arch/arm/include/asm/arch-mx31/imx-regs.h +++ b/arch/arm/include/asm/arch-mx31/imx-regs.h @@ -606,6 +606,13 @@ struct esdc_regs { #define UART4_BASE 0x43FB0000 #define UART5_BASE 0x43FB4000 +#define I2C1_BASE_ADDR 0x43f80000 +#define I2C1_CLK_OFFSET 26 +#define I2C2_BASE_ADDR 0x43F98000 +#define I2C2_CLK_OFFSET 28 +#define I2C3_BASE_ADDR 0x43f84000 +#define I2C3_CLK_OFFSET 30 + #define ESDCTL_SDE (1 << 31) #define ESDCTL_CMD_RW (0 << 28) #define ESDCTL_CMD_PRECHARGE (1 << 28) diff --git a/arch/arm/include/asm/arch-mx35/imx-regs.h b/arch/arm/include/asm/arch-mx35/imx-regs.h index e570ad1..3146006 100644 --- a/arch/arm/include/asm/arch-mx35/imx-regs.h +++ b/arch/arm/include/asm/arch-mx35/imx-regs.h @@ -39,7 +39,7 @@ #define MAX_BASE_ADDR 0x43F04000 #define EVTMON_BASE_ADDR 0x43F08000 #define CLKCTL_BASE_ADDR 0x43F0C000 -#define I2C_BASE_ADDR 0x43F80000 +#define I2C1_BASE_ADDR 0x43F80000 #define I2C3_BASE_ADDR 0x43F84000 #define ATA_BASE_ADDR 0x43F8C000 #define UART1_BASE 0x43F90000 diff --git a/arch/arm/include/asm/arch-mx5/imx-regs.h b/arch/arm/include/asm/arch-mx5/imx-regs.h index 88fb7cb..8117f4f 100644 --- a/arch/arm/include/asm/arch-mx5/imx-regs.h +++ b/arch/arm/include/asm/arch-mx5/imx-regs.h @@ -50,8 +50,6 @@ #error "CPU_TYPE not defined" #endif -#define IPU_CTRL_BASE_ADDR IPU_SOC_BASE_ADDR + IPU_SOC_OFFSET - #define IRAM_SIZE 0x00020000 /* 128 KB */ /* diff --git a/arch/arm/include/asm/arch-mx6/imx-regs.h b/arch/arm/include/asm/arch-mx6/imx-regs.h index e165810..5d77603 100644 --- a/arch/arm/include/asm/arch-mx6/imx-regs.h +++ b/arch/arm/include/asm/arch-mx6/imx-regs.h @@ -73,6 +73,9 @@ #define MMDC1_ARB_BASE_ADDR 0x80000000 #define MMDC1_ARB_END_ADDR 0xFFFFFFFF +#define IPU_SOC_BASE_ADDR IPU1_ARB_BASE_ADDR +#define IPU_SOC_OFFSET 0x00200000 + /* Defines for Blocks connected via AIPS (SkyBlue) */ #define ATZ1_BASE_ADDR AIPS1_ARB_BASE_ADDR #define ATZ2_BASE_ADDR AIPS2_ARB_BASE_ADDR diff --git a/arch/arm/include/asm/arch-mx6/mx6x_pins.h b/arch/arm/include/asm/arch-mx6/mx6x_pins.h index afaa068..cf9103c 100644 --- a/arch/arm/include/asm/arch-mx6/mx6x_pins.h +++ b/arch/arm/include/asm/arch-mx6/mx6x_pins.h @@ -48,8 +48,8 @@ #define PAD_CTL_SRE_FAST (1 << 0) #define PAD_CTL_SRE_SLOW (0 << 0) -#define NO_MUX_I 0x3FF -#define NO_PAD_I 0x7FF +#define NO_MUX_I 0 +#define NO_PAD_I 0 enum { MX6Q_PAD_SD2_DAT1__USDHC2_DAT1 = IOMUX_PAD(0x0360, 0x004C, 0, 0x0000, 0, 0), @@ -530,8 +530,8 @@ enum { MX6Q_PAD_EIM_BCLK__IPU1_DI1_PIN16 = IOMUX_PAD(0x046C, 0x0158, 1, 0x0000, 0, 0), MX6Q_PAD_EIM_BCLK__GPIO_6_31 = IOMUX_PAD(0x046C, 0x0158, 5, 0x0000, 0, 0), MX6Q_PAD_EIM_BCLK__TPSMP_HDATA_31 = IOMUX_PAD(0x046C, 0x0158, 6, 0x0000, 0, 0), - MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DSP_CLK = IOMUX_PAD(0x0470, 0x015C, 0, 0x0000, 0, 0), - MX6Q_PAD_DI0_DISP_CLK__IPU2_DI0_DSP_CLK = IOMUX_PAD(0x0470, 0x015C, 1, 0x0000, 0, 0), + MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK = IOMUX_PAD(0x0470, 0x015C, 0, 0x0000, 0, 0), + MX6Q_PAD_DI0_DISP_CLK__IPU2_DI0_DISP_CLK = IOMUX_PAD(0x0470, 0x015C, 1, 0x0000, 0, 0), MX6Q_PAD_DI0_DISP_CLK__MIPI_CR_DPY_OT28 = IOMUX_PAD(0x0470, 0x015C, 3, 0x0000, 0, 0), MX6Q_PAD_DI0_DISP_CLK__SDMA_DBG_CR_STA0 = IOMUX_PAD(0x0470, 0x015C, 4, 0x0000, 0, 0), MX6Q_PAD_DI0_DISP_CLK__GPIO_4_16 = IOMUX_PAD(0x0470, 0x015C, 5, 0x0000, 0, 0), diff --git a/arch/arm/include/asm/arch-omap3/cpu.h b/arch/arm/include/asm/arch-omap3/cpu.h index 457f99d..5683e16 100644 --- a/arch/arm/include/asm/arch-omap3/cpu.h +++ b/arch/arm/include/asm/arch-omap3/cpu.h @@ -479,6 +479,8 @@ struct prm { #define PRM_RSTCTRL 0x48307250 #define PRM_RSTCTRL_RESET 0x04 +#define PRM_RSTST 0x48307258 +#define PRM_RSTST_WARM_RESET_MASK 0x7D2 #define SYSCLKDIV_1 (0x1 << 6) #define SYSCLKDIV_2 (0x1 << 7) diff --git a/arch/arm/include/asm/arch-omap3/sys_proto.h b/arch/arm/include/asm/arch-omap3/sys_proto.h index 2a89e56..9e52b12 100644 --- a/arch/arm/include/asm/arch-omap3/sys_proto.h +++ b/arch/arm/include/asm/arch-omap3/sys_proto.h @@ -74,4 +74,5 @@ void power_init_r(void); void dieid_num_r(void); void do_omap3_emu_romcode_call(u32 service_id, u32 parameters); void omap3_gp_romcode_call(u32 service_id, u32 parameter); +u32 warm_reset(void); #endif diff --git a/arch/arm/include/asm/arch-omap4/clocks.h b/arch/arm/include/asm/arch-omap4/clocks.h index 617729c..be20fc0 100644 --- a/arch/arm/include/asm/arch-omap4/clocks.h +++ b/arch/arm/include/asm/arch-omap4/clocks.h @@ -525,6 +525,11 @@ struct omap4_scrm_regs { #define DPLL_CLKOUT_DIV_MASK 0x1F /* post-divider mask */ +/* CM_DLL_CTRL */ +#define CM_DLL_CTRL_OVERRIDE_SHIFT 0 +#define CM_DLL_CTRL_OVERRIDE_MASK (1 << 0) +#define CM_DLL_CTRL_NO_OVERRIDE 0 + /* CM_CLKMODE_DPLL */ #define CM_CLKMODE_DPLL_REGM4XEN_SHIFT 11 #define CM_CLKMODE_DPLL_REGM4XEN_MASK (1 << 11) diff --git a/arch/arm/include/asm/arch-omap4/cpu.h b/arch/arm/include/asm/arch-omap4/cpu.h index feddb7d..a8c4c60 100644 --- a/arch/arm/include/asm/arch-omap4/cpu.h +++ b/arch/arm/include/asm/arch-omap4/cpu.h @@ -178,5 +178,7 @@ struct watchdog { #define PRM_RSTCTRL PRM_DEVICE_BASE #define PRM_RSTCTRL_RESET 0x01 +#define PRM_RSTST (PRM_DEVICE_BASE + 0x4) +#define PRM_RSTST_WARM_RESET_MASK 0x07EA #endif /* _CPU_H */ diff --git a/arch/arm/include/asm/arch-omap4/omap.h b/arch/arm/include/asm/arch-omap4/omap.h index 47c5883..03bd923 100644 --- a/arch/arm/include/asm/arch-omap4/omap.h +++ b/arch/arm/include/asm/arch-omap4/omap.h @@ -112,7 +112,7 @@ #define CONTROL_LPDDR2IO_SLEW_325PS_DRV8_GATE_KEEPER 0x9E9E9E9E #define CONTROL_LPDDR2IO_SLEW_315PS_DRV12_PULL_DOWN 0x7C7C7C7C #define LPDDR2IO_GR10_WD_MASK (3 << 17) -#define CONTROL_LPDDR2IO_3_VAL 0xA0888C00 +#define CONTROL_LPDDR2IO_3_VAL 0xA0888C0F /* CONTROL_EFUSE_2 */ #define CONTROL_EFUSE_2_NMOS_PMOS_PTV_CODE_1 0x00ffc000 diff --git a/arch/arm/include/asm/arch-omap4/sys_proto.h b/arch/arm/include/asm/arch-omap4/sys_proto.h index c6e3ad2..d633573 100644 --- a/arch/arm/include/asm/arch-omap4/sys_proto.h +++ b/arch/arm/include/asm/arch-omap4/sys_proto.h @@ -57,6 +57,8 @@ void init_omap_revision(void); void do_io_settings(void); void omap_vc_init(u16 speed_khz); int omap_vc_bypass_send_value(u8 sa, u8 reg_addr, u8 reg_data); +u32 warm_reset(void); +void force_emif_self_refresh(void); /* * This is used to verify if the configuration header * was executed by Romcode prior to control of transfer diff --git a/arch/arm/include/asm/arch-omap5/clocks.h b/arch/arm/include/asm/arch-omap5/clocks.h index f32cf3e..5f1a7aa 100644 --- a/arch/arm/include/asm/arch-omap5/clocks.h +++ b/arch/arm/include/asm/arch-omap5/clocks.h @@ -480,6 +480,13 @@ struct omap5_prcm_regs { u32 pad217[4]; u32 prm_vc_cfg_i2c_mode; /* 4ae07bb4 */ u32 prm_vc_cfg_i2c_clk; /* 4ae07bb8 */ + u32 pad218[2]; + u32 prm_sldo_core_setup; /* 4ae07bc4 */ + u32 prm_sldo_core_ctrl; /* 4ae07bc8 */ + u32 prm_sldo_mpu_setup; /* 4ae07bcc */ + u32 prm_sldo_mpu_ctrl; /* 4ae07bd0 */ + u32 prm_sldo_mm_setup; /* 4ae07bd4 */ + u32 prm_sldo_mm_ctrl; /* 4ae07bd8 */ }; /* DPLL register offsets */ @@ -490,6 +497,11 @@ struct omap5_prcm_regs { #define DPLL_CLKOUT_DIV_MASK 0x1F /* post-divider mask */ +/* CM_DLL_CTRL */ +#define CM_DLL_CTRL_OVERRIDE_SHIFT 0 +#define CM_DLL_CTRL_OVERRIDE_MASK (1 << 0) +#define CM_DLL_CTRL_NO_OVERRIDE 0 + /* CM_CLKMODE_DPLL */ #define CM_CLKMODE_DPLL_REGM4XEN_SHIFT 11 #define CM_CLKMODE_DPLL_REGM4XEN_MASK (1 << 11) @@ -641,6 +653,9 @@ struct omap5_prcm_regs { #define VDD_MPU 1000 #define VDD_MM 1000 #define VDD_CORE 1040 +#define VDD_MPU_5432 1150 +#define VDD_MM_5432 1150 +#define VDD_CORE_5432 1150 /* Standard offset is 0.5v expressed in uv */ #define PALMAS_SMPS_BASE_VOLT_UV 500000 diff --git a/arch/arm/include/asm/arch-omap5/cpu.h b/arch/arm/include/asm/arch-omap5/cpu.h index 8ef17c9..5e62013 100644 --- a/arch/arm/include/asm/arch-omap5/cpu.h +++ b/arch/arm/include/asm/arch-omap5/cpu.h @@ -182,5 +182,7 @@ struct watchdog { #define PRM_RSTCTRL PRM_DEVICE_BASE #define PRM_RSTCTRL_RESET 0x01 +#define PRM_RSTST (PRM_DEVICE_BASE + 0x4) +#define PRM_RSTST_WARM_RESET_MASK 0x7FEA #endif /* _CPU_H */ diff --git a/arch/arm/include/asm/arch-omap5/omap.h b/arch/arm/include/asm/arch-omap5/omap.h index e3f55d2..7f05cb5 100644 --- a/arch/arm/include/asm/arch-omap5/omap.h +++ b/arch/arm/include/asm/arch-omap5/omap.h @@ -40,7 +40,7 @@ #define OMAP54XX_L4_PER_BASE 0x48000000 #define OMAP54XX_DRAM_ADDR_SPACE_START 0x80000000 -#define OMAP54XX_DRAM_ADDR_SPACE_END 0xD0000000 +#define OMAP54XX_DRAM_ADDR_SPACE_END 0xFFFFFFFF #define DRAM_ADDR_SPACE_START OMAP54XX_DRAM_ADDR_SPACE_START #define DRAM_ADDR_SPACE_END OMAP54XX_DRAM_ADDR_SPACE_END @@ -56,7 +56,8 @@ #define CONTROL_ID_CODE (CTRL_BASE + 0x204) /* To be verified */ -#define OMAP5_CONTROL_ID_CODE_ES1_0 0x0B85202F +#define OMAP5430_CONTROL_ID_CODE_ES1_0 0x0B94202F +#define OMAP5432_CONTROL_ID_CODE_ES1_0 0x0B99802F /* STD_FUSE_PROD_ID_1 */ #define STD_FUSE_PROD_ID_1 (CTRL_BASE + 0x218) @@ -178,7 +179,14 @@ struct omap_sys_ctrl_regs { u32 control_srcomp_east_side; /*0x4A002E7C*/ u32 control_srcomp_west_side; /*0x4A002E80*/ u32 control_srcomp_code_latch; /*0x4A002E84*/ - u32 pad4[3680198]; + u32 pad4[3679394]; + u32 control_port_emif1_sdram_config; /*0x4AE0C110*/ + u32 control_port_emif1_lpddr2_nvm_config; /*0x4AE0C114*/ + u32 control_port_emif2_sdram_config; /*0x4AE0C118*/ + u32 pad5[10]; + u32 control_emif1_sdram_config_ext; /* 0x4AE0C144 */ + u32 control_emif2_sdram_config_ext; /* 0x4AE0C148 */ + u32 pad6[789]; u32 control_smart1nopmio_padconf_0; /* 0x4AE0CDA0 */ u32 control_smart1nopmio_padconf_1; /* 0x4AE0CDA4 */ u32 control_padconf_mode; /* 0x4AE0CDA8 */ @@ -233,6 +241,12 @@ struct omap_sys_ctrl_regs { #define DDR_IO_1_DQ_OUT_EN_ALL_DQ_INT_EN_ALL 0x8421084 #define DDR_IO_2_CA_OUT_EN_ALL_CA_INT_EN_ALL 0x8421000 +#define DDR_IO_I_40OHM_SR_SLOWEST_WD_DQ_NO_PULL_DQS_NO_PULL 0x7C7C7C6C +#define DDR_IO_I_40OHM_SR_FAST_WD_DQ_NO_PULL_DQS_NO_PULL 0x64646464 +#define DDR_IO_0_VREF_CELLS_DDR3_VALUE 0xBAE8C631 +#define DDR_IO_1_VREF_CELLS_DDR3_VALUE 0xBC6318DC +#define DDR_IO_2_VREF_CELLS_DDR3_VALUE 0x0 + #define EFUSE_1 0x45145100 #define EFUSE_2 0x45145100 #define EFUSE_3 0x45145100 diff --git a/arch/arm/include/asm/arch-omap5/sys_proto.h b/arch/arm/include/asm/arch-omap5/sys_proto.h index 8396a22..74feb90 100644 --- a/arch/arm/include/asm/arch-omap5/sys_proto.h +++ b/arch/arm/include/asm/arch-omap5/sys_proto.h @@ -57,6 +57,8 @@ void init_omap_revision(void); void do_io_settings(void); void omap_vc_init(u16 speed_khz); int omap_vc_bypass_send_value(u8 sa, u8 reg_addr, u8 reg_data); +u32 warm_reset(void); +void force_emif_self_refresh(void); /* * This is used to verify if the configuration header diff --git a/arch/arm/include/asm/arch-s5pc1xx/cpu.h b/arch/arm/include/asm/arch-s5pc1xx/cpu.h index 510ead4..2362b99 100644 --- a/arch/arm/include/asm/arch-s5pc1xx/cpu.h +++ b/arch/arm/include/asm/arch-s5pc1xx/cpu.h @@ -23,6 +23,7 @@ #ifndef _S5PC1XX_CPU_H #define _S5PC1XX_CPU_H +#define S5P_CPU_NAME "S5P" #define S5PC1XX_ADDR_BASE 0xE0000000 /* S5PC100 */ @@ -71,6 +72,11 @@ static inline void s5p_set_cpu_id(void) s5p_cpu_id = 0xC000 | ((s5p_cpu_id & 0x00FFF000) >> 12); } +static inline char *s5p_get_cpu_name(void) +{ + return S5P_CPU_NAME; +} + #define IS_SAMSUNG_TYPE(type, id) \ static inline int cpu_is_##type(void) \ { \ diff --git a/arch/arm/include/asm/arch-spear/clk.h b/arch/arm/include/asm/arch-spear/clk.h new file mode 100644 index 0000000..a45ec18 --- /dev/null +++ b/arch/arm/include/asm/arch-spear/clk.h @@ -0,0 +1,27 @@ +/* + * (C) Copyright 2010 + * Vipin Kumar, STMicroelectronics, <vipin.kumar@st.com> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +static inline unsigned long get_macb_pclk_rate(unsigned int dev_id) +{ + return 83000000; +} diff --git a/arch/arm/include/asm/arch-spear/gpio.h b/arch/arm/include/asm/arch-spear/gpio.h new file mode 100644 index 0000000..c3697de --- /dev/null +++ b/arch/arm/include/asm/arch-spear/gpio.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2012 Stefan Roese <sr@denx.de> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + + +#ifndef __ASM_ARCH_SPEAR_GPIO_H +#define __ASM_ARCH_SPEAR_GPIO_H + +enum gpio_direction { + GPIO_DIRECTION_IN, + GPIO_DIRECTION_OUT, +}; + +struct gpio_regs { + u32 gpiodata[0x100]; /* 0x000 ... 0x3fc */ + u32 gpiodir; /* 0x400 */ +}; + +#define SPEAR_GPIO_COUNT 8 +#define DATA_REG_ADDR(gpio) (1 << (gpio + 2)) + +#endif /* __ASM_ARCH_SPEAR_GPIO_H */ diff --git a/arch/arm/include/asm/arch-spear/hardware.h b/arch/arm/include/asm/arch-spear/hardware.h index 818f36c..8150911 100644 --- a/arch/arm/include/asm/arch-spear/hardware.h +++ b/arch/arm/include/asm/arch-spear/hardware.h @@ -24,43 +24,68 @@ #ifndef _ASM_ARCH_HARDWARE_H #define _ASM_ARCH_HARDWARE_H -#define CONFIG_SYS_USBD_BASE (0xE1100000) -#define CONFIG_SYS_PLUG_BASE (0xE1200000) -#define CONFIG_SYS_FIFO_BASE (0xE1000800) -#define CONFIG_SYS_SMI_BASE (0xFC000000) -#define CONFIG_SPEAR_SYSCNTLBASE (0xFCA00000) -#define CONFIG_SPEAR_TIMERBASE (0xFC800000) -#define CONFIG_SPEAR_MISCBASE (0xFCA80000) +#define CONFIG_SYS_USBD_BASE 0xE1100000 +#define CONFIG_SYS_PLUG_BASE 0xE1200000 +#define CONFIG_SYS_FIFO_BASE 0xE1000800 +#define CONFIG_SYS_SMI_BASE 0xFC000000 +#define CONFIG_SPEAR_SYSCNTLBASE 0xFCA00000 +#define CONFIG_SPEAR_TIMERBASE 0xFC800000 +#define CONFIG_SPEAR_MISCBASE 0xFCA80000 +#define CONFIG_SPEAR_ETHBASE 0xE0800000 +#define CONFIG_SPEAR_MPMCBASE 0xFC600000 +#define CONFIG_SSP1_BASE 0xD0100000 +#define CONFIG_SSP2_BASE 0xD0180000 +#define CONFIG_SSP3_BASE 0xD8180000 +#define CONFIG_GPIO_BASE 0xD8100000 #define CONFIG_SYS_NAND_CLE (1 << 16) #define CONFIG_SYS_NAND_ALE (1 << 17) #if defined(CONFIG_SPEAR600) -#define CONFIG_SYS_I2C_BASE (0xD0200000) -#define CONFIG_SPEAR_FSMCBASE (0xD1800000) +#define CONFIG_SYS_I2C_BASE 0xD0200000 +#define CONFIG_SYS_FSMC_BASE 0xD1800000 +#define CONFIG_FSMC_NAND_BASE 0xD2000000 + +#define CONFIG_SPEAR_BOOTSTRAPCFG 0xFCA80000 +#define CONFIG_SPEAR_BOOTSTRAPSHFT 16 +#define CONFIG_SPEAR_BOOTSTRAPMASK 0xB +#define CONFIG_SPEAR_ONLYSNORBOOT 0xA +#define CONFIG_SPEAR_NORNANDBOOT 0xB +#define CONFIG_SPEAR_NORNAND8BOOT 0x8 +#define CONFIG_SPEAR_NORNAND16BOOT 0x9 +#define CONFIG_SPEAR_USBBOOT 0x8 + +#define CONFIG_SPEAR_MPMCREGS 100 #elif defined(CONFIG_SPEAR300) -#define CONFIG_SYS_I2C_BASE (0xD0180000) -#define CONFIG_SPEAR_FSMCBASE (0x94000000) +#define CONFIG_SYS_I2C_BASE 0xD0180000 +#define CONFIG_SYS_FSMC_BASE 0x94000000 #elif defined(CONFIG_SPEAR310) -#define CONFIG_SYS_I2C_BASE (0xD0180000) -#define CONFIG_SPEAR_FSMCBASE (0x44000000) +#define CONFIG_SYS_I2C_BASE 0xD0180000 +#define CONFIG_SYS_FSMC_BASE 0x44000000 #undef CONFIG_SYS_NAND_CLE #undef CONFIG_SYS_NAND_ALE #define CONFIG_SYS_NAND_CLE (1 << 17) #define CONFIG_SYS_NAND_ALE (1 << 16) -#define CONFIG_SPEAR_EMIBASE (0x4F000000) -#define CONFIG_SPEAR_RASBASE (0xB4000000) +#define CONFIG_SPEAR_EMIBASE 0x4F000000 +#define CONFIG_SPEAR_RASBASE 0xB4000000 + +#define CONFIG_SYS_MACB0_BASE 0xB0000000 +#define CONFIG_SYS_MACB1_BASE 0xB0800000 +#define CONFIG_SYS_MACB2_BASE 0xB1000000 +#define CONFIG_SYS_MACB3_BASE 0xB1800000 #elif defined(CONFIG_SPEAR320) -#define CONFIG_SYS_I2C_BASE (0xD0180000) -#define CONFIG_SPEAR_FSMCBASE (0x4C000000) +#define CONFIG_SYS_I2C_BASE 0xD0180000 +#define CONFIG_SYS_FSMC_BASE 0x4C000000 + +#define CONFIG_SPEAR_EMIBASE 0x40000000 +#define CONFIG_SPEAR_RASBASE 0xB3000000 -#define CONFIG_SPEAR_EMIBASE (0x40000000) -#define CONFIG_SPEAR_RASBASE (0xB3000000) +#define CONFIG_SYS_MACB0_BASE 0xAA000000 #endif #endif /* _ASM_ARCH_HARDWARE_H */ diff --git a/arch/arm/include/asm/arch-spear/spr_defs.h b/arch/arm/include/asm/arch-spear/spr_defs.h index fa8412c..71d64a1 100644 --- a/arch/arm/include/asm/arch-spear/spr_defs.h +++ b/arch/arm/include/asm/arch-spear/spr_defs.h @@ -28,6 +28,23 @@ extern int spear_board_init(ulong); extern void setfreq(unsigned int, unsigned int); extern unsigned int setfreq_sz; +void plat_ddr_init(void); +void soc_init(void); +void spear_late_init(void); +void plat_late_init(void); + +int snor_boot_selected(void); +int nand_boot_selected(void); +int pnor_boot_selected(void); +int usb_boot_selected(void); +int uart_boot_selected(void); +int tftp_boot_selected(void); +int i2c_boot_selected(void); +int spi_boot_selected(void); +int mmc_boot_selected(void); + +extern u32 mpmc_conf_vals[]; + struct chip_data { int cpufreq; int dramfreq; @@ -43,4 +60,10 @@ struct chip_data { #define MAC_OFF 0x2 #define MAC_LEN 0x6 +#define PNOR_WIDTH_8 0 +#define PNOR_WIDTH_16 1 +#define PNOR_WIDTH_32 2 +#define PNOR_WIDTH_NUM 3 +#define PNOR_WIDTH_SEARCH 0xff + #endif diff --git a/arch/arm/include/asm/arch-spear/spr_gpt.h b/arch/arm/include/asm/arch-spear/spr_gpt.h index 965b5ab..d95ba52 100644 --- a/arch/arm/include/asm/arch-spear/spr_gpt.h +++ b/arch/arm/include/asm/arch-spear/spr_gpt.h @@ -79,7 +79,7 @@ struct gpt_regs { #define GPT_FREE_RUNNING 0xFFFF /* Timer, HZ specific defines */ -#define CONFIG_SPEAR_HZ (1000) -#define CONFIG_SPEAR_HZ_CLOCK (8300000) +#define CONFIG_SPEAR_HZ 1000 +#define CONFIG_SPEAR_HZ_CLOCK 8300000 #endif diff --git a/arch/arm/include/asm/arch-spear/spr_misc.h b/arch/arm/include/asm/arch-spear/spr_misc.h index 8b96d9b..5f67a5f 100644 --- a/arch/arm/include/asm/arch-spear/spr_misc.h +++ b/arch/arm/include/asm/arch-spear/spr_misc.h @@ -37,7 +37,7 @@ struct misc_regs { u32 amba_clk_cfg; /* 0x24 */ u32 periph_clk_cfg; /* 0x28 */ u32 periph1_clken; /* 0x2C */ - u32 periph2_clken; /* 0x30 */ + u32 soc_core_id; /* 0x30 */ u32 ras_clken; /* 0x34 */ u32 periph1_rst; /* 0x38 */ u32 periph2_rst; /* 0x3C */ @@ -46,7 +46,7 @@ struct misc_regs { u32 prsc2_clk_cfg; /* 0x48 */ u32 prsc3_clk_cfg; /* 0x4C */ u32 amem_cfg_ctrl; /* 0x50 */ - u32 port_cfg_ctrl; /* 0x54 */ + u32 expi_clk_cfg; /* 0x54 */ u32 reserved_1; /* 0x58 */ u32 clcd_synth_clk; /* 0x5C */ u32 irda_synth_clk; /* 0x60 */ @@ -101,6 +101,37 @@ struct misc_regs { u32 ras_gpp2_out; /* 0x800C */ }; +/* SYNTH_CLK value*/ +#define SYNTH23 0x00020003 + +/* PLLx_FRQ value */ +#if defined(CONFIG_SPEAR3XX) +#define FREQ_332 0xA600010C +#define FREQ_266 0x8500010C +#elif defined(CONFIG_SPEAR600) +#define FREQ_332 0xA600010F +#define FREQ_266 0x8500010F +#endif + +/* PLL_CTR_REG */ +#define MEM_CLK_SEL_MSK 0x70000000 +#define MEM_CLK_HCLK 0x00000000 +#define MEM_CLK_2HCLK 0x10000000 +#define MEM_CLK_PLL2 0x30000000 + +#define EXPI_CLK_CFG_LOW_COMPR 0x2000 +#define EXPI_CLK_CFG_CLK_EN 0x0400 +#define EXPI_CLK_CFG_RST 0x0200 +#define EXPI_CLK_SYNT_EN 0x0010 +#define EXPI_CLK_CFG_SEL_PLL2 0x0004 +#define EXPI_CLK_CFG_INT_CLK_EN 0x0001 + +#define PLL2_CNTL_6UA 0x1c00 +#define PLL2_CNTL_SAMPLE 0x0008 +#define PLL2_CNTL_ENABLE 0x0004 +#define PLL2_CNTL_RESETN 0x0002 +#define PLL2_CNTL_LOCK 0x0001 + /* AUTO_CFG_REG value */ #define MISC_SOCCFGMSK 0x0000003F #define MISC_SOCCFG30 0x0000000C @@ -110,6 +141,8 @@ struct misc_regs { /* PERIPH_CLK_CFG value */ #define MISC_GPT3SYNTH 0x00000400 #define MISC_GPT4SYNTH 0x00000800 +#define CONFIG_SPEAR_UART48M 0 +#define CONFIG_SPEAR_UARTCLKMSK (0x1 << 4) /* PRSC_CLK_CFG value */ /* @@ -126,5 +159,115 @@ struct misc_regs { /* PERIPH1_CLKEN, PERIPH1_RST value */ #define MISC_USBDENB 0x01000000 +#define MISC_ETHENB 0x00800000 +#define MISC_SMIENB 0x00200000 +#define MISC_GPT3ENB 0x00010000 +#define MISC_GPIO4ENB 0x00002000 +#define MISC_GPT2ENB 0x00000800 +#define MISC_FSMCENB 0x00000200 +#define MISC_I2CENB 0x00000080 +#define MISC_SSP2ENB 0x00000070 +#define MISC_UART0ENB 0x00000008 + +/* PERIPH_CLK_CFG */ +#define XTALTIMEEN 0x00000001 +#define PLLTIMEEN 0x00000002 +#define CLCDCLK_SYNTH 0x00000000 +#define CLCDCLK_48MHZ 0x00000004 +#define CLCDCLK_EXT 0x00000008 +#define UARTCLK_MASK (0x1 << 4) +#define UARTCLK_48MHZ 0x00000000 +#define UARTCLK_SYNTH 0x00000010 +#define IRDACLK_48MHZ 0x00000000 +#define IRDACLK_SYNTH 0x00000020 +#define IRDACLK_EXT 0x00000040 +#define RTC_DISABLE 0x00000080 +#define GPT1CLK_48MHZ 0x00000000 +#define GPT1CLK_SYNTH 0x00000100 +#define GPT2CLK_48MHZ 0x00000000 +#define GPT2CLK_SYNTH 0x00000200 +#define GPT3CLK_48MHZ 0x00000000 +#define GPT3CLK_SYNTH 0x00000400 +#define GPT4CLK_48MHZ 0x00000000 +#define GPT4CLK_SYNTH 0x00000800 +#define GPT5CLK_48MHZ 0x00000000 +#define GPT5CLK_SYNTH 0x00001000 +#define GPT1_FREEZE 0x00002000 +#define GPT2_FREEZE 0x00004000 +#define GPT3_FREEZE 0x00008000 +#define GPT4_FREEZE 0x00010000 +#define GPT5_FREEZE 0x00020000 + +/* PERIPH1_CLKEN bits */ +#define PERIPH_ARM1_WE 0x00000001 +#define PERIPH_ARM1 0x00000002 +#define PERIPH_ARM2 0x00000004 +#define PERIPH_UART1 0x00000008 +#define PERIPH_UART2 0x00000010 +#define PERIPH_SSP1 0x00000020 +#define PERIPH_SSP2 0x00000040 +#define PERIPH_I2C 0x00000080 +#define PERIPH_JPEG 0x00000100 +#define PERIPH_FSMC 0x00000200 +#define PERIPH_FIRDA 0x00000400 +#define PERIPH_GPT4 0x00000800 +#define PERIPH_GPT5 0x00001000 +#define PERIPH_GPIO4 0x00002000 +#define PERIPH_SSP3 0x00004000 +#define PERIPH_ADC 0x00008000 +#define PERIPH_GPT3 0x00010000 +#define PERIPH_RTC 0x00020000 +#define PERIPH_GPIO3 0x00040000 +#define PERIPH_DMA 0x00080000 +#define PERIPH_ROM 0x00100000 +#define PERIPH_SMI 0x00200000 +#define PERIPH_CLCD 0x00400000 +#define PERIPH_GMAC 0x00800000 +#define PERIPH_USBD 0x01000000 +#define PERIPH_USBH1 0x02000000 +#define PERIPH_USBH2 0x04000000 +#define PERIPH_MPMC 0x08000000 +#define PERIPH_RAMW 0x10000000 +#define PERIPH_MPMC_EN 0x20000000 +#define PERIPH_MPMC_WE 0x40000000 +#define PERIPH_MPMCMSK 0x60000000 + +#define PERIPH_CLK_ALL 0x0FFFFFF8 +#define PERIPH_RST_ALL 0x00000004 + +/* DDR_PAD values */ +#define DDR_PAD_CNF_MSK 0x0000ffff +#define DDR_PAD_SW_CONF 0x00060000 +#define DDR_PAD_SSTL_SEL 0x00000001 +#define DDR_PAD_DRAM_TYPE 0x00008000 + +/* DDR_COMP values */ +#define DDR_COMP_ACCURATE 0x00000010 + +/* SoC revision stuff */ +#define SOC_PRI_SHFT 16 +#define SOC_SEC_SHFT 8 + +/* Revision definitions */ +#define SOC_SPEAR_NA 0 + +/* + * The definitons have started from + * 101 for SPEAr6xx + * 201 for SPEAr3xx + * 301 for SPEAr13xx + */ +#define SOC_SPEAR600_AA 101 +#define SOC_SPEAR600_AB 102 +#define SOC_SPEAR600_BA 103 +#define SOC_SPEAR600_BB 104 +#define SOC_SPEAR600_BC 105 +#define SOC_SPEAR600_BD 106 + +#define SOC_SPEAR300 201 +#define SOC_SPEAR310 202 +#define SOC_SPEAR320 203 + +extern int get_socrev(void); #endif diff --git a/arch/arm/include/asm/arch-spear/spr_nand.h b/arch/arm/include/asm/arch-spear/spr_nand.h deleted file mode 100644 index 2b63dc7..0000000 --- a/arch/arm/include/asm/arch-spear/spr_nand.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * (C) Copyright 2009 - * Vipin Kumar, ST Micoelectronics, vipin.kumar@st.com. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#ifndef __SPR_NAND_H__ -#define __SPR_NAND_H__ - -struct fsmc_regs { - u32 reserved_1[0x10]; - u32 genmemctrl_pc; - u32 reserved_2; - u32 genmemctrl_comm; - u32 genmemctrl_attrib; - u32 reserved_3; - u32 genmemctrl_ecc; -}; - -/* genmemctrl_pc register definitions */ -#define FSMC_RESET (1 << 0) -#define FSMC_WAITON (1 << 1) -#define FSMC_ENABLE (1 << 2) -#define FSMC_DEVTYPE_NAND (1 << 3) -#define FSMC_DEVWID_8 (0 << 4) -#define FSMC_DEVWID_16 (1 << 4) -#define FSMC_ECCEN (1 << 6) -#define FSMC_ECCPLEN_512 (0 << 7) -#define FSMC_ECCPLEN_256 (1 << 7) -#define FSMC_TCLR_1 (1 << 9) -#define FSMC_TAR_1 (1 << 13) - -/* genmemctrl_comm register definitions */ -#define FSMC_TSET_0 (0 << 0) -#define FSMC_TWAIT_6 (6 << 8) -#define FSMC_THOLD_4 (4 << 16) -#define FSMC_THIZ_1 (1 << 24) - -extern int spear_nand_init(struct nand_chip *nand); -#endif diff --git a/arch/arm/include/asm/arch-spear/spr_smi.h b/arch/arm/include/asm/arch-spear/spr_smi.h deleted file mode 100644 index 06df745..0000000 --- a/arch/arm/include/asm/arch-spear/spr_smi.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * (C) Copyright 2009 - * Vipin Kumar, ST Micoelectronics, vipin.kumar@st.com. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#ifndef SPR_SMI_H -#define SPR_SMI_H - -/* 0xF800.0000 . 0xFBFF.FFFF 64MB SMI (Serial Flash Mem) */ -/* 0xFC00.0000 . 0xFC1F.FFFF 2MB SMI (Serial Flash Reg.) */ - -#define FLASH_START_ADDRESS CONFIG_SYS_FLASH_BASE -#define FLASH_BANK_SIZE CONFIG_SYS_FLASH_BANK_SIZE - -#define SMIBANK0_BASE (FLASH_START_ADDRESS) -#define SMIBANK1_BASE (SMIBANK0_BASE + FLASH_BANK_SIZE) -#define SMIBANK2_BASE (SMIBANK1_BASE + FLASH_BANK_SIZE) -#define SMIBANK3_BASE (SMIBANK2_BASE + FLASH_BANK_SIZE) - -#define BANK0 0 -#define BANK1 1 -#define BANK2 2 -#define BANK3 3 - -struct smi_regs { - u32 smi_cr1; - u32 smi_cr2; - u32 smi_sr; - u32 smi_tr; - u32 smi_rr; -}; - -/* CONTROL REG 1 */ -#define BANK_EN 0x0000000F /* enables all banks */ -#define DSEL_TIME 0x00000060 /* Deselect time */ -#define PRESCAL5 0x00000500 /* AHB_CK prescaling value */ -#define PRESCALA 0x00000A00 /* AHB_CK prescaling value */ -#define PRESCAL3 0x00000300 /* AHB_CK prescaling value */ -#define PRESCAL4 0x00000400 /* AHB_CK prescaling value */ -#define SW_MODE 0x10000000 /* enables SW Mode */ -#define WB_MODE 0x20000000 /* Write Burst Mode */ -#define FAST_MODE 0x00008000 /* Fast Mode */ -#define HOLD1 0x00010000 - -/* CONTROL REG 2 */ -#define RD_STATUS_REG 0x00000400 /* reads status reg */ -#define WE 0x00000800 /* Write Enable */ -#define BANK0_SEL 0x00000000 /* Select Banck0 */ -#define BANK1_SEL 0x00001000 /* Select Banck1 */ -#define BANK2_SEL 0x00002000 /* Select Banck2 */ -#define BANK3_SEL 0x00003000 /* Select Banck3 */ -#define BANKSEL_SHIFT 12 -#define SEND 0x00000080 /* Send data */ -#define TX_LEN_1 0x00000001 /* data length = 1 byte */ -#define TX_LEN_2 0x00000002 /* data length = 2 byte */ -#define TX_LEN_3 0x00000003 /* data length = 3 byte */ -#define TX_LEN_4 0x00000004 /* data length = 4 byte */ -#define RX_LEN_1 0x00000010 /* data length = 1 byte */ -#define RX_LEN_2 0x00000020 /* data length = 2 byte */ -#define RX_LEN_3 0x00000030 /* data length = 3 byte */ -#define RX_LEN_4 0x00000040 /* data length = 4 byte */ -#define TFIE 0x00000100 /* Tx Flag Interrupt Enable */ -#define WCIE 0x00000200 /* WCF Interrupt Enable */ - -/* STATUS_REG */ -#define INT_WCF_CLR 0xFFFFFDFF /* clear: WCF clear */ -#define INT_TFF_CLR 0xFFFFFEFF /* clear: TFF clear */ -#define WIP_BIT 0x00000001 /* WIP Bit of SPI SR */ -#define WEL_BIT 0x00000002 /* WEL Bit of SPI SR */ -#define RSR 0x00000005 /* Read Status regiser */ -#define TFF 0x00000100 /* Transfer Finished FLag */ -#define WCF 0x00000200 /* Transfer Finished FLag */ -#define ERF1 0x00000400 /* Error Flag 1 */ -#define ERF2 0x00000800 /* Error Flag 2 */ -#define WM0 0x00001000 /* WM Bank 0 */ -#define WM1 0x00002000 /* WM Bank 1 */ -#define WM2 0x00004000 /* WM Bank 2 */ -#define WM3 0x00008000 /* WM Bank 3 */ -#define WM_SHIFT 12 - -/* TR REG */ -#define READ_ID 0x0000009F /* Read Identification */ -#define BULK_ERASE 0x000000C7 /* BULK erase */ -#define SECTOR_ERASE 0x000000D8 /* SECTOR erase */ -#define WRITE_ENABLE 0x00000006 /* Wenable command to FLASH */ - -struct flash_dev { - u32 density; - ulong size; - ushort sector_count; -}; - -#define SFLASH_PAGE_SIZE 0x100 /* flash page size */ -#define XFER_FINISH_TOUT 2 /* xfer finish timeout */ -#define WMODE_TOUT 2 /* write enable timeout */ - -#endif diff --git a/arch/arm/include/asm/arch-spear/spr_ssp.h b/arch/arm/include/asm/arch-spear/spr_ssp.h new file mode 100644 index 0000000..4f144ee --- /dev/null +++ b/arch/arm/include/asm/arch-spear/spr_ssp.h @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2012 Stefan Roese <sr@denx.de> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef _SPR_SSP_H +#define _SPR_SSP_H + +struct ssp_regs { + u32 sspcr0; + u32 sspcr1; + u32 sspdr; + u32 sspsr; + u32 sspcpsr; + u32 sspimsc; + u32 sspicr; + u32 sspdmacr; +}; + +#define SSPCR0_FRF_MOT_SPI 0x0000 +#define SSPCR0_DSS_16BITS 0x000f + +#define SSPCR1_SSE 0x0002 + +#define SSPSR_TNF 0x2 +#define SSPSR_TFE 0x1 + +#endif diff --git a/arch/arm/include/asm/arch-spear/spr_syscntl.h b/arch/arm/include/asm/arch-spear/spr_syscntl.h index 3c92f09..2393d89 100644 --- a/arch/arm/include/asm/arch-spear/spr_syscntl.h +++ b/arch/arm/include/asm/arch-spear/spr_syscntl.h @@ -21,6 +21,9 @@ * MA 02111-1307 USA */ +#ifndef __SYSCTRL_H +#define __SYSCTRL_H + struct syscntl_regs { u32 scctrl; u32 scsysstat; @@ -36,3 +39,14 @@ struct syscntl_regs { const u32 scperclken; const u32 scperstat; }; + +#define MODE_SHIFT 0x00000003 + +#define NORMAL 0x00000004 +#define SLOW 0x00000002 +#define DOZE 0x00000001 +#define SLEEP 0x00000000 + +#define PLL_TIM 0x01FFFFFF + +#endif diff --git a/arch/arm/include/asm/arch-spear/spr_xloader_table.h b/arch/arm/include/asm/arch-spear/spr_xloader_table.h deleted file mode 100644 index 7e3da18..0000000 --- a/arch/arm/include/asm/arch-spear/spr_xloader_table.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * (C) Copyright 2009 - * Vipin Kumar, ST Micoelectronics, vipin.kumar@st.com. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ - -#ifndef _SPR_XLOADER_TABLE_H -#define _SPR_XLOADER_TABLE_H - -#define XLOADER_TABLE_VERSION_1_1 2 -#define XLOADER_TABLE_VERSION_1_2 3 - -#define XLOADER_TABLE_ADDRESS 0xD2801FF0 - -#define DDRMOBILE 1 -#define DDR2 2 - -#define REV_BA 1 -#define REV_AA 2 -#define REV_AB 3 - -struct xloader_table_1_1 { - unsigned short ddrfreq; - unsigned char ddrsize; - unsigned char ddrtype; - - unsigned char soc_rev; -} __attribute__ ((packed)); - -struct xloader_table_1_2 { - unsigned const char *version; - - unsigned short ddrfreq; - unsigned char ddrsize; - unsigned char ddrtype; - - unsigned char soc_rev; -} __attribute__ ((packed)); - -union table_contents { - struct xloader_table_1_1 table_1_1; - struct xloader_table_1_2 table_1_2; -}; - -struct xloader_table { - unsigned char table_version; - union table_contents table; -} __attribute__ ((packed)); - -#endif diff --git a/arch/arm/include/asm/arch-tegra2/clock.h b/arch/arm/include/asm/arch-tegra2/clock.h index 1d3ae38..ff83bbf 100644 --- a/arch/arm/include/asm/arch-tegra2/clock.h +++ b/arch/arm/include/asm/arch-tegra2/clock.h @@ -186,8 +186,9 @@ enum periph_id { /* Mask value for a clock (within PERIPH_REG(id)) */ #define PERIPH_MASK(id) (1 << ((id) & 0x1f)) -/* return 1 if a PLL ID is in range */ -#define clock_id_isvalid(id) ((id) >= CLOCK_ID_FIRST && (id) < CLOCK_ID_COUNT) +/* return 1 if a PLL ID is in range, and not a simple PLL */ +#define clock_id_is_pll(id) ((id) >= CLOCK_ID_FIRST && \ + (id) < CLOCK_ID_FIRST_SIMPLE) /* PLL stabilization delay in usec */ #define CLOCK_PLL_STABLE_DELAY_US 300 diff --git a/arch/arm/include/asm/arch-tegra2/funcmux.h b/arch/arm/include/asm/arch-tegra2/funcmux.h index ae73c72..dcd512f 100644 --- a/arch/arm/include/asm/arch-tegra2/funcmux.h +++ b/arch/arm/include/asm/arch-tegra2/funcmux.h @@ -30,6 +30,9 @@ enum { /* UART configs */ FUNCMUX_UART1_IRRX_IRTX = 0, + FUNCMUX_UART1_UAA_UAB, + FUNCMUX_UART1_GPU, + FUNCMUX_UART1_SDIO1, FUNCMUX_UART2_IRDA = 0, FUNCMUX_UART4_GMC = 0, @@ -41,12 +44,19 @@ enum { FUNCMUX_I2C3_DTF = 0, /* SDMMC configs */ + FUNCMUX_SDMMC1_SDIO1_4BIT = 0, FUNCMUX_SDMMC2_DTA_DTD_8BIT = 0, FUNCMUX_SDMMC3_SDB_4BIT = 0, FUNCMUX_SDMMC3_SDB_SLXA_8BIT, FUNCMUX_SDMMC4_ATC_ATD_8BIT = 0, FUNCMUX_SDMMC4_ATB_GMA_4_BIT, FUNCMUX_SDMMC4_ATB_GMA_GME_8_BIT, + + /* USB configs */ + FUNCMUX_USB2_ULPI = 0, + + /* Serial Flash configs */ + FUNCMUX_SPI1_GMC_GMD = 0, }; /** diff --git a/arch/arm/include/asm/arch-tegra2/gpio.h b/arch/arm/include/asm/arch-tegra2/gpio.h index 41e66fe..40ddb02 100644 --- a/arch/arm/include/asm/arch-tegra2/gpio.h +++ b/arch/arm/include/asm/arch-tegra2/gpio.h @@ -2,6 +2,7 @@ * Copyright (c) 2011, Google Inc. All rights reserved. * See file CREDITS for list of people who contributed to this * project. + * Portions Copyright 2011-2012 NVIDIA Corporation * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -19,8 +20,8 @@ * MA 02111-1307 USA */ -#ifndef _TEGRA2_GPIO_H_ -#define _TEGRA2_GPIO_H_ +#ifndef _TEGRA_GPIO_H_ +#define _TEGRA_GPIO_H_ /* * The Tegra 2x GPIO controller has 224 GPIOs arranged in 7 banks of 4 ports, @@ -286,4 +287,4 @@ enum gpio_pin { void gpio_info(void); #define gpio_status() gpio_info() -#endif /* TEGRA2_GPIO_H_ */ +#endif /* TEGRA_GPIO_H_ */ diff --git a/arch/arm/include/asm/arch-tegra2/pinmux.h b/arch/arm/include/asm/arch-tegra2/pinmux.h index 469d742..03fa7ca 100644 --- a/arch/arm/include/asm/arch-tegra2/pinmux.h +++ b/arch/arm/include/asm/arch-tegra2/pinmux.h @@ -67,7 +67,7 @@ enum pmux_pingrp { PINGRP_KBCF, PINGRP_GMA, PINGRP_GMC, - PINGRP_SDMMC1, + PINGRP_SDIO1, PINGRP_OWC, /* 32: APB_MISC_PP_TRISTATE_REG_B_0 */ diff --git a/arch/arm/include/asm/arch-tegra2/tegra2.h b/arch/arm/include/asm/arch-tegra2/tegra2.h index d4ada10..13d68c0 100644 --- a/arch/arm/include/asm/arch-tegra2/tegra2.h +++ b/arch/arm/include/asm/arch-tegra2/tegra2.h @@ -45,6 +45,7 @@ #define NV_PA_CSITE_BASE 0x70040000 #define TEGRA_USB1_BASE 0xC5000000 #define TEGRA_USB3_BASE 0xC5008000 +#define TEGRA_USB_ADDR_MASK 0xFFFFC000 #define TEGRA2_SDRC_CS0 NV_PA_SDRAM_BASE #define LOW_LEVEL_SRAM_STACK 0x4000FFFC @@ -60,6 +61,10 @@ struct timerus { /* Address at which WB code runs, it must not overlap Bootrom's IRAM usage */ #define AP20_WB_RUN_ADDRESS 0x40020000 +#define NVBOOTINFOTABLE_BCTSIZE 0x38 /* BCT size in BIT in IRAM */ +#define NVBOOTINFOTABLE_BCTPTR 0x3C /* BCT pointer in BIT in IRAM */ +#define BCT_ODMDATA_OFFSET 4068 /* 12 bytes from end of BCT */ + /* These are the available SKUs (product types) for Tegra */ enum { SKU_ID_T20 = 0x8, diff --git a/arch/arm/include/asm/arch-tegra2/tegra2_spi.h b/arch/arm/include/asm/arch-tegra2/tegra_spi.h index ceec428..892d90c 100644 --- a/arch/arm/include/asm/arch-tegra2/tegra2_spi.h +++ b/arch/arm/include/asm/arch-tegra2/tegra_spi.h @@ -1,7 +1,7 @@ /* * NVIDIA Tegra2 SPI-FLASH controller * - * Copyright 2010-2011 NVIDIA Corporation + * Copyright 2010-2012 NVIDIA Corporation * * This software may be used and distributed according to the * terms of the GNU Public License, Version 2, incorporated @@ -22,8 +22,8 @@ * MA 02111-1307 USA */ -#ifndef _TEGRA2_SPI_H_ -#define _TEGRA2_SPI_H_ +#ifndef _TEGRA_SPI_H_ +#define _TEGRA_SPI_H_ #include <asm/types.h> @@ -72,5 +72,4 @@ struct spi_tegra { #define SPI_TIMEOUT 1000 #define TEGRA2_SPI_MAX_FREQ 52000000 - -#endif /* _TEGRA2_SPI_H_ */ +#endif /* _TEGRA_SPI_H_ */ diff --git a/arch/arm/include/asm/arch-tegra2/uart-spi-switch.h b/arch/arm/include/asm/arch-tegra2/uart-spi-switch.h index e4503b1..82ac180 100644 --- a/arch/arm/include/asm/arch-tegra2/uart-spi-switch.h +++ b/arch/arm/include/asm/arch-tegra2/uart-spi-switch.h @@ -29,7 +29,7 @@ * time! If the board file provides this, the board config will declare it. * Let this be a lesson for others. */ -void pinmux_select_uart(NS16550_t regs); +void pinmux_select_uart(void); /* * Signal that we are about the use the SPI bus. @@ -38,7 +38,7 @@ void pinmux_select_spi(void); #else /* not CONFIG_SPI_UART_SWITCH */ -static inline void pinmux_select_uart(NS16550_t regs) {} +static inline void pinmux_select_uart(void) {} static inline void pinmux_select_spi(void) {} #endif diff --git a/arch/arm/include/asm/emif.h b/arch/arm/include/asm/emif.h index f1e3ad2..674c3de 100644 --- a/arch/arm/include/asm/emif.h +++ b/arch/arm/include/asm/emif.h @@ -471,6 +471,49 @@ #define EMIF_REG_DDR_PHY_CTRL_2_SHIFT 0 #define EMIF_REG_DDR_PHY_CTRL_2_MASK (0xffffffff << 0) +/*EMIF_READ_WRITE_LEVELING_CONTROL*/ +#define EMIF_REG_RDWRLVLFULL_START_SHIFT 31 +#define EMIF_REG_RDWRLVLFULL_START_MASK (1 << 31) +#define EMIF_REG_RDWRLVLINC_PRE_SHIFT 24 +#define EMIF_REG_RDWRLVLINC_PRE_MASK (0x7F << 24) +#define EMIF_REG_RDLVLINC_INT_SHIFT 16 +#define EMIF_REG_RDLVLINC_INT_MASK (0xFF << 16) +#define EMIF_REG_RDLVLGATEINC_INT_SHIFT 8 +#define EMIF_REG_RDLVLGATEINC_INT_MASK (0xFF << 8) +#define EMIF_REG_WRLVLINC_INT_SHIFT 0 +#define EMIF_REG_WRLVLINC_INT_MASK (0xFF << 0) + +/*EMIF_READ_WRITE_LEVELING_RAMP_CONTROL*/ +#define EMIF_REG_RDWRLVL_EN_SHIFT 31 +#define EMIF_REG_RDWRLVL_EN_MASK (1 << 31) +#define EMIF_REG_RDWRLVLINC_RMP_PRE_SHIFT 24 +#define EMIF_REG_RDWRLVLINC_RMP_PRE_MASK (0x7F << 24) +#define EMIF_REG_RDLVLINC_RMP_INT_SHIFT 16 +#define EMIF_REG_RDLVLINC_RMP_INT_MASK (0xFF << 16) +#define EMIF_REG_RDLVLGATEINC_RMP_INT_SHIFT 8 +#define EMIF_REG_RDLVLGATEINC_RMP_INT_MASK (0xFF << 8) +#define EMIF_REG_WRLVLINC_RMP_INT_SHIFT 0 +#define EMIF_REG_WRLVLINC_RMP_INT_MASK (0xFF << 0) + +/*EMIF_READ_WRITE_LEVELING_RAMP_WINDOW*/ +#define EMIF_REG_RDWRLVLINC_RMP_WIN_SHIFT 0 +#define EMIF_REG_RDWRLVLINC_RMP_WIN_MASK (0x1FFF << 0) + +/*Leveling Fields */ +#define DDR3_WR_LVL_INT 0x73 +#define DDR3_RD_LVL_INT 0x33 +#define DDR3_RD_LVL_GATE_INT 0x59 +#define RD_RW_LVL_INC_PRE 0x0 +#define DDR3_FULL_LVL (1 << EMIF_REG_RDWRLVL_EN_SHIFT) + +#define DDR3_INC_LVL ((DDR3_WR_LVL_INT << EMIF_REG_WRLVLINC_INT_SHIFT) \ + | (DDR3_RD_LVL_GATE_INT << EMIF_REG_RDLVLGATEINC_INT_SHIFT) \ + | (DDR3_RD_LVL_INT << EMIF_REG_RDLVLINC_RMP_INT_SHIFT) \ + | (RD_RW_LVL_INC_PRE << EMIF_REG_RDWRLVLINC_RMP_PRE_SHIFT)) + +#define SDRAM_CONFIG_EXT_RD_LVL_11_SAMPLES 0x0000C1A7 +#define SDRAM_CONFIG_EXT_RD_LVL_4_SAMPLES 0x000001A7 + /* DMM */ #define DMM_BASE 0x4E000040 @@ -650,6 +693,7 @@ struct dmm_lisa_map_regs { }; extern const u32 ext_phy_ctrl_const_base[EMIF_EXT_PHY_CTRL_CONST_REG]; +extern const u32 ddr3_ext_phy_ctrl_const_base[EMIF_EXT_PHY_CTRL_CONST_REG]; #define CS0 0 #define CS1 1 @@ -1073,6 +1117,10 @@ struct emif_regs { u32 emif_ddr_ext_phy_ctrl_3; u32 emif_ddr_ext_phy_ctrl_4; u32 emif_ddr_ext_phy_ctrl_5; + u32 emif_rd_wr_lvl_rmp_win; + u32 emif_rd_wr_lvl_rmp_ctl; + u32 emif_rd_wr_lvl_ctl; + u32 emif_rd_wr_exec_thresh; }; /* assert macros */ @@ -1093,11 +1141,13 @@ void emif_get_device_timings(u32 emif_nr, const struct lpddr2_device_timings **cs1_device_timings); #endif +void do_ext_phy_settings(u32 base, const struct emif_regs *regs); + #ifndef CONFIG_SYS_EMIF_PRECALCULATED_TIMING_REGS extern u32 *const T_num; extern u32 *const T_den; extern u32 *const emif_sizes; #endif - +void config_data_eye_leveling_samples(u32 emif_base); #endif diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h index 459b6b1..4e95eee 100644 --- a/arch/arm/include/asm/omap_common.h +++ b/arch/arm/include/asm/omap_common.h @@ -136,4 +136,5 @@ static inline u32 omap_revision(void) /* omap5 */ #define OMAP5430_SILICON_ID_INVALID 0 #define OMAP5430_ES1_0 0x54300100 +#define OMAP5432_ES1_0 0x54320100 #endif /* _OMAP_COMMON_H_ */ diff --git a/arch/arm/include/asm/u-boot-arm.h b/arch/arm/include/asm/u-boot-arm.h index 4ca75f9..9f3cae5 100644 --- a/arch/arm/include/asm/u-boot-arm.h +++ b/arch/arm/include/asm/u-boot-arm.h @@ -52,6 +52,7 @@ void cpu_init_cp15(void); /* cpu/.../arch/cpu.c */ int arch_cpu_init(void); int arch_misc_init(void); +int arch_early_init_r(void); /* board/.../... */ int board_init(void); diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index 024646c..f1951e8 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -224,10 +224,16 @@ void __dram_init_banksize(void) void dram_init_banksize(void) __attribute__((weak, alias("__dram_init_banksize"))); +int __arch_cpu_init(void) +{ + return 0; +} +int arch_cpu_init(void) + __attribute__((weak, alias("__arch_cpu_init"))); + init_fnc_t *init_sequence[] = { -#if defined(CONFIG_ARCH_CPU_INIT) arch_cpu_init, /* basic arch cpu dependent setup */ -#endif + #if defined(CONFIG_BOARD_EARLY_INIT_F) board_early_init_f, #endif @@ -500,6 +506,10 @@ void board_init_r(gd_t *id, ulong dest_addr) malloc_start = dest_addr - TOTAL_MALLOC_LEN; mem_malloc_init (malloc_start, TOTAL_MALLOC_LEN); +#ifdef CONFIG_ARCH_EARLY_INIT_R + arch_early_init_r(); +#endif + #if !defined(CONFIG_SYS_NO_FLASH) puts("Flash: "); diff --git a/arch/arm/lib/cache-cp15.c b/arch/arm/lib/cache-cp15.c index e6c3eae..939de10 100644 --- a/arch/arm/lib/cache-cp15.c +++ b/arch/arm/lib/cache-cp15.c @@ -115,17 +115,17 @@ static void cache_disable(uint32_t cache_bit) { uint32_t reg; + reg = get_cr(); + cp_delay(); + if (cache_bit == CR_C) { /* if cache isn;t enabled no need to disable */ - reg = get_cr(); if ((reg & CR_C) != CR_C) return; /* if disabling data cache, disable mmu too */ cache_bit |= CR_M; flush_dcache_all(); } - reg = get_cr(); - cp_delay(); set_cr(reg & ~cache_bit); } #endif diff --git a/arch/arm/lib/eabi_compat.c b/arch/arm/lib/eabi_compat.c index 2028dbd..44eebe0 100644 --- a/arch/arm/lib/eabi_compat.c +++ b/arch/arm/lib/eabi_compat.c @@ -13,7 +13,8 @@ int raise (int signum) { -#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT) + /* Even if printf() is available, it's large. Punt it for SPL builds */ +#if !defined(CONFIG_SPL_BUILD) printf("raise: Signal # %d caught\n", signum); #endif return 0; diff --git a/arch/blackfin/include/asm/bfin_logo_230x230.h b/arch/blackfin/include/asm/bfin_logo_230x230_gzip.h index 3a79631..3a79631 100644 --- a/arch/blackfin/include/asm/bfin_logo_230x230.h +++ b/arch/blackfin/include/asm/bfin_logo_230x230_gzip.h diff --git a/arch/blackfin/include/asm/bfin_logo_230x230_lzma.h b/arch/blackfin/include/asm/bfin_logo_230x230_lzma.h new file mode 100644 index 0000000..ae9554f --- /dev/null +++ b/arch/blackfin/include/asm/bfin_logo_230x230_lzma.h @@ -0,0 +1,1819 @@ +/* + * Generated by EasyLogo, (C) 2000 by Paolo Scaffardi + * + * To use this, include it and call: easylogo_plot(screen,&bfin_logo, width,x,y) + * + * Where: 'screen' is the pointer to the frame buffer + * 'width' is the screen width + * 'x' is the horizontal position + * 'y' is the vertical position + */ + +#define EASYLOGO_ENABLE_LZMA 28532 + +static unsigned char EASYLOGO_DECOMP_BUFFER[158700]; + +#include <video_easylogo.h> + +#define DEF_BFIN_LOGO_WIDTH 230 +#define DEF_BFIN_LOGO_HEIGHT 230 +#define DEF_BFIN_LOGO_PIXELS 52900 +#define DEF_BFIN_LOGO_BPP 24 +#define DEF_BFIN_LOGO_PIXEL_SIZE 3 +#define DEF_BFIN_LOGO_SIZE 158700 + +unsigned char DEF_BFIN_LOGO_DATA[] = { + 0x5d, 0x00, 0x00, 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x6f, + 0xfd, 0xf8, 0xb8, 0x51, 0x47, 0x76, 0x83, 0x1a, 0x36, 0xff, 0xdf, 0x25, 0x3b, 0x9e, 0x1e, 0xfc, + 0x17, 0x17, 0x7c, 0x3f, 0x4c, 0x3f, 0x42, 0x00, 0x19, 0xe1, 0x7c, 0x13, 0xce, 0xa1, 0xb5, 0xdf, + 0x06, 0x70, 0x2e, 0xb6, 0x6c, 0xe0, 0xcb, 0x11, 0xf6, 0x92, 0x94, 0x8a, 0x99, 0x3e, 0x21, 0xb2, + 0x27, 0xe8, 0x4c, 0x5d, 0x4c, 0x45, 0x6d, 0xfa, 0x0d, 0x07, 0x51, 0x9c, 0xc1, 0xf2, 0x53, 0x6d, + 0x9e, 0x57, 0xb5, 0x3a, 0x93, 0x8c, 0x7e, 0x3d, 0x18, 0x78, 0x1a, 0x13, 0x72, 0x7a, 0xa6, 0x0f, + 0x90, 0x31, 0x39, 0xfe, 0xe1, 0x4c, 0x12, 0xda, 0x4f, 0xe8, 0xe7, 0x3f, 0x68, 0xe5, 0xc3, 0x2e, + 0x8c, 0xeb, 0x62, 0x9a, 0x99, 0x26, 0xf6, 0x64, 0x2e, 0x15, 0x1f, 0xd6, 0xa2, 0xbd, 0xe9, 0xa2, + 0x87, 0x70, 0xd8, 0x35, 0x60, 0x6d, 0x05, 0x11, 0x97, 0x62, 0x11, 0x11, 0x31, 0x08, 0xb8, 0xe5, + 0xe1, 0x76, 0x47, 0x2d, 0x42, 0x5d, 0x06, 0xa1, 0x5c, 0x30, 0xf0, 0x11, 0x9d, 0xf7, 0x13, 0x4d, + 0xbd, 0x5f, 0x8f, 0x2b, 0xb2, 0x2e, 0x47, 0x7e, 0x21, 0x1e, 0xce, 0x05, 0x29, 0x0d, 0x38, 0xcb, + 0x05, 0xc9, 0x55, 0xde, 0xc9, 0x66, 0xb3, 0xf9, 0x0b, 0xbb, 0x76, 0x6b, 0x36, 0x81, 0x16, 0x59, + 0xce, 0xbf, 0x02, 0x66, 0x52, 0xa1, 0x75, 0xff, 0xb0, 0xb7, 0x8e, 0x5b, 0x56, 0xaf, 0xdc, 0x62, + 0x7a, 0xc5, 0xf0, 0xa8, 0xc3, 0xf8, 0xf5, 0x32, 0xef, 0xd7, 0x65, 0xdf, 0x2b, 0x64, 0x9d, 0x1b, + 0x99, 0x63, 0x0d, 0x11, 0xb2, 0xc8, 0x4a, 0xf6, 0x27, 0xb7, 0xa1, 0xfb, 0x25, 0x7a, 0xfd, 0x69, + 0x01, 0xfa, 0xc8, 0x2b, 0xe8, 0x44, 0x83, 0x66, 0x72, 0xb6, 0xa9, 0x8a, 0xb2, 0x2a, 0x6f, 0xfe, + 0xe8, 0xca, 0x85, 0x21, 0x83, 0x77, 0x08, 0x03, 0xc2, 0xd5, 0xd0, 0x68, 0xc4, 0xb3, 0xca, 0x54, + 0x9b, 0xa9, 0x2b, 0x3e, 0x59, 0xf7, 0x99, 0xa6, 0xed, 0x02, 0xb3, 0x37, 0x4f, 0x2c, 0x2f, 0x79, + 0x09, 0x6e, 0x68, 0x64, 0xe4, 0xee, 0x3e, 0x25, 0x59, 0x6c, 0x19, 0xfa, 0x8e, 0x03, 0xb1, 0x1a, + 0x47, 0xc6, 0x7f, 0xea, 0xe9, 0x6a, 0x5b, 0xff, 0x94, 0x8d, 0x93, 0xfd, 0x7e, 0x45, 0x39, 0x81, + 0xe5, 0xbe, 0xe0, 0xa1, 0x9f, 0x08, 0xd6, 0x71, 0x5f, 0xd9, 0xa8, 0x99, 0x3b, 0xae, 0x4e, 0x03, + 0xc9, 0x2c, 0x86, 0x61, 0xae, 0xe4, 0x33, 0x72, 0xed, 0xac, 0x53, 0x49, 0x7e, 0xb2, 0xc1, 0xab, + 0xad, 0x71, 0x70, 0xff, 0x22, 0xff, 0xe6, 0x4f, 0x55, 0x3c, 0xf8, 0xb2, 0xc5, 0x55, 0x2a, 0x7e, + 0x0f, 0x34, 0x9f, 0x64, 0x54, 0x2c, 0x91, 0x9e, 0xeb, 0x31, 0xa7, 0x83, 0x5f, 0x69, 0x97, 0xee, + 0xc5, 0x24, 0x62, 0x3a, 0xa3, 0x69, 0x47, 0x06, 0x59, 0x56, 0x60, 0x5f, 0x74, 0xb3, 0x8f, 0x4f, + 0xf5, 0x8e, 0xbe, 0xaa, 0x9d, 0xba, 0x6c, 0x27, 0xf7, 0x0b, 0x7b, 0xd6, 0x94, 0x73, 0x34, 0xc5, + 0xa5, 0x3c, 0xbf, 0x4a, 0xde, 0x3f, 0x04, 0x74, 0x67, 0xeb, 0xc9, 0x9f, 0x93, 0x0e, 0xa0, 0xed, + 0x1c, 0x17, 0x23, 0xb6, 0xac, 0x37, 0x41, 0xdc, 0x24, 0xc4, 0x10, 0xab, 0x0a, 0x14, 0x2c, 0xe8, + 0x00, 0x34, 0x71, 0xe5, 0x21, 0x22, 0x84, 0x4b, 0x26, 0xf5, 0x59, 0x87, 0x39, 0xda, 0x59, 0x9d, + 0xbb, 0x22, 0x63, 0x1b, 0x34, 0xfe, 0xb8, 0xba, 0xdf, 0x3c, 0x58, 0x68, 0xa1, 0x73, 0xab, 0x68, + 0x3f, 0xba, 0xad, 0x30, 0x0d, 0x35, 0x75, 0xca, 0xa7, 0x54, 0xda, 0x8e, 0xdf, 0x43, 0x98, 0xc7, + 0x72, 0xa3, 0x3b, 0x96, 0x93, 0x5d, 0x86, 0x1f, 0xa7, 0xe0, 0x97, 0x2c, 0xc7, 0x59, 0x30, 0x88, + 0xec, 0xc2, 0x89, 0x56, 0x1d, 0xda, 0x76, 0xed, 0xf3, 0x53, 0xd5, 0x38, 0x63, 0x70, 0x36, 0x5d, + 0x89, 0xb1, 0xa9, 0x1f, 0x99, 0x2d, 0x95, 0x89, 0xf3, 0x3f, 0xa7, 0x1a, 0x6b, 0x6a, 0xda, 0xb8, + 0xba, 0x62, 0x87, 0x28, 0xac, 0x21, 0x7b, 0x47, 0xc2, 0x17, 0xb1, 0x1c, 0x97, 0x63, 0xf6, 0x43, + 0xb2, 0x62, 0x28, 0x26, 0x0e, 0x76, 0x8c, 0x48, 0x92, 0x1a, 0xde, 0xa7, 0x54, 0xb7, 0xba, 0x4b, + 0x87, 0xf1, 0xdf, 0xae, 0x4d, 0x72, 0xd4, 0x5d, 0x55, 0x60, 0x39, 0x04, 0x2c, 0xe6, 0x61, 0x09, + 0x04, 0x74, 0xf9, 0x64, 0x40, 0x52, 0x40, 0xca, 0x04, 0xbb, 0xec, 0x1f, 0xe0, 0x65, 0x21, 0x6f, + 0x11, 0x69, 0xe5, 0xca, 0xc1, 0xce, 0x70, 0xe0, 0x56, 0x2e, 0x40, 0x38, 0xeb, 0x74, 0x1b, 0x2e, + 0xef, 0x4f, 0x2b, 0x6b, 0x9b, 0xa9, 0xbe, 0xa1, 0x83, 0x7e, 0x6c, 0x08, 0x1f, 0xc9, 0x2e, 0xf9, + 0xc7, 0x41, 0xc5, 0xa4, 0xe4, 0x76, 0x0d, 0xca, 0x44, 0x23, 0x4f, 0x60, 0xb5, 0x11, 0x2d, 0xa0, + 0x6d, 0x28, 0xf2, 0xc5, 0x46, 0x52, 0xe9, 0xfd, 0xa9, 0x9a, 0xf8, 0x5b, 0x9d, 0x60, 0x06, 0x0c, + 0x25, 0x6c, 0xb6, 0x61, 0x86, 0x56, 0xf5, 0x07, 0x8d, 0xaa, 0xd7, 0x88, 0x9d, 0xc4, 0x40, 0x4a, + 0x53, 0xd5, 0xe6, 0x3d, 0x06, 0xae, 0x77, 0xf4, 0x27, 0xa5, 0x65, 0x74, 0x98, 0xc7, 0xfe, 0x79, + 0xca, 0x55, 0xce, 0x49, 0x26, 0x72, 0xd3, 0x54, 0xa9, 0x12, 0xac, 0xa0, 0xf1, 0xe6, 0x73, 0x17, + 0xc2, 0xfa, 0x9b, 0x0f, 0x0c, 0xcc, 0x92, 0x0a, 0x53, 0x56, 0x4d, 0x8f, 0x58, 0x2d, 0xcb, 0xc0, + 0x8c, 0xf9, 0x65, 0x24, 0xa4, 0xf0, 0xd4, 0x37, 0xa4, 0x3f, 0xd7, 0x46, 0xe7, 0x16, 0xcc, 0xf1, + 0x52, 0x3f, 0xf8, 0xa0, 0x7a, 0xb3, 0x21, 0x39, 0x31, 0xfa, 0x6c, 0x23, 0xb2, 0xf8, 0x81, 0xf1, + 0xc5, 0x53, 0xa5, 0x06, 0xaf, 0x01, 0x10, 0x7e, 0x80, 0xed, 0xe6, 0x04, 0xac, 0x32, 0x28, 0xb2, + 0xaa, 0x9b, 0x8e, 0x58, 0xfa, 0x54, 0x43, 0xeb, 0x6c, 0x6e, 0xf9, 0x6d, 0x9a, 0x6b, 0x8c, 0xb1, + 0x98, 0x6d, 0xf4, 0xd9, 0xd0, 0x0c, 0xba, 0x29, 0x01, 0x06, 0x7c, 0x8c, 0xb6, 0x55, 0xe1, 0x06, + 0xa1, 0xed, 0x96, 0x13, 0x53, 0x33, 0x9e, 0x2a, 0xb3, 0x91, 0xc4, 0xbd, 0x1a, 0x86, 0xea, 0xaf, + 0xa3, 0xb4, 0xf2, 0xa2, 0xc3, 0xe4, 0x09, 0x70, 0xe1, 0x2d, 0xd1, 0xf2, 0xf1, 0x32, 0xbd, 0x97, + 0x7f, 0xfd, 0x80, 0x33, 0xa5, 0x5c, 0xf4, 0xf0, 0xba, 0x25, 0xb2, 0x6a, 0x7f, 0xe7, 0x1f, 0x22, + 0x42, 0xa9, 0x0e, 0xa5, 0x1f, 0x12, 0x11, 0xe9, 0xa2, 0x1e, 0x53, 0x82, 0x64, 0x1b, 0x06, 0x3e, + 0x69, 0x00, 0xb3, 0x7b, 0x82, 0xfa, 0x53, 0xc2, 0xab, 0x2c, 0xb0, 0x56, 0xda, 0xe9, 0x64, 0x25, + 0x08, 0x8e, 0x85, 0x48, 0xd4, 0xd7, 0x7e, 0x0f, 0xa6, 0x59, 0xf3, 0xdf, 0x0f, 0x95, 0x88, 0x3f, + 0x4f, 0xbd, 0xa6, 0x0e, 0x87, 0x53, 0xd0, 0x8c, 0x4f, 0x92, 0xe7, 0x80, 0xaf, 0x1e, 0x89, 0x83, + 0x6c, 0x69, 0x5c, 0xe7, 0xc6, 0x19, 0x12, 0x31, 0xe8, 0x3a, 0x2c, 0x55, 0x9b, 0x40, 0xaf, 0xb3, + 0xaf, 0x47, 0xcb, 0x1a, 0x66, 0x60, 0x79, 0x4c, 0x1b, 0x93, 0xbd, 0xf9, 0x03, 0x75, 0xce, 0xa1, + 0xc1, 0x0c, 0x52, 0xd5, 0x82, 0x9f, 0xb3, 0x5c, 0xaf, 0x4c, 0x15, 0xef, 0x38, 0x00, 0xdc, 0x4b, + 0x1d, 0x93, 0x7c, 0xc1, 0xa0, 0xe9, 0x0a, 0x2f, 0xa6, 0xf1, 0x0f, 0x3a, 0xfb, 0xe3, 0x31, 0xf8, + 0x7d, 0x79, 0x83, 0xde, 0x23, 0x14, 0xfc, 0x74, 0x28, 0x7d, 0xad, 0x02, 0x53, 0x37, 0x50, 0x63, + 0xc5, 0xa9, 0x80, 0x4c, 0x26, 0xf8, 0x30, 0xa7, 0xa5, 0x0d, 0xcf, 0x91, 0xd5, 0x7b, 0x82, 0x1e, + 0xcd, 0x8c, 0x49, 0xde, 0x02, 0x9c, 0x95, 0x8f, 0xd0, 0x5b, 0x80, 0xaf, 0xd9, 0xc6, 0x62, 0x70, + 0x1e, 0x41, 0x19, 0xe5, 0x36, 0xce, 0x06, 0x34, 0xc5, 0xe6, 0x16, 0x4b, 0x42, 0xfa, 0xca, 0x73, + 0xdc, 0x1c, 0x74, 0xd5, 0x23, 0xcc, 0xde, 0x96, 0x57, 0x88, 0x8f, 0x12, 0x47, 0x24, 0xa3, 0x4e, + 0x50, 0x17, 0xb0, 0x31, 0xe2, 0x89, 0x68, 0xd0, 0x29, 0xb4, 0x25, 0x01, 0xf7, 0x9d, 0x1b, 0xa1, + 0x0d, 0xcf, 0xa3, 0x46, 0x83, 0xd0, 0x41, 0x00, 0x84, 0xd3, 0x6a, 0xe6, 0xd4, 0xff, 0x0a, 0x88, + 0x9e, 0x4a, 0xd5, 0x57, 0xa0, 0x86, 0xe3, 0x35, 0x75, 0x95, 0x2a, 0x35, 0xaf, 0x93, 0x8c, 0x63, + 0x14, 0x40, 0xc5, 0xe9, 0x74, 0xe7, 0xf6, 0x55, 0x38, 0xe1, 0x26, 0xb1, 0xc9, 0x03, 0x97, 0x5b, + 0x23, 0xd5, 0xe8, 0x7b, 0xfe, 0xe5, 0xdd, 0x4d, 0x1b, 0x1a, 0x37, 0xb6, 0x12, 0x3a, 0xb4, 0x74, + 0x9c, 0x08, 0xc1, 0x76, 0x77, 0xb7, 0x2f, 0xd7, 0xa7, 0x48, 0x1d, 0xa2, 0x3d, 0x68, 0x6b, 0x5d, + 0xf1, 0xba, 0x82, 0x50, 0xe4, 0x80, 0x63, 0xdd, 0x47, 0xe8, 0xdf, 0x19, 0xb7, 0x26, 0x9b, 0x1a, + 0xdf, 0x6a, 0x81, 0x3f, 0x0d, 0xe1, 0xa7, 0x9f, 0x7e, 0x1c, 0x5e, 0xbb, 0xe7, 0x9d, 0xff, 0x9d, + 0x66, 0x82, 0xaf, 0x12, 0x49, 0xb2, 0xaa, 0xdb, 0xd1, 0x82, 0xe2, 0x22, 0xcb, 0xbc, 0xbf, 0x3f, + 0xd2, 0xa7, 0x5f, 0xb7, 0x0e, 0x57, 0x5a, 0x24, 0xb2, 0xe8, 0x8c, 0x0f, 0x7f, 0xd6, 0x70, 0x50, + 0x2c, 0x40, 0x5a, 0x8d, 0x97, 0x01, 0xe7, 0x21, 0x1c, 0xab, 0xa7, 0x55, 0x3e, 0x4e, 0xe2, 0x70, + 0xf9, 0xb4, 0x69, 0x5b, 0xe1, 0x64, 0x12, 0xd3, 0x23, 0x26, 0x78, 0x2c, 0x60, 0xb4, 0xb1, 0xba, + 0x1a, 0xff, 0x59, 0x26, 0x7a, 0x54, 0xa8, 0x8f, 0x4b, 0x2c, 0x6d, 0xe4, 0xeb, 0xb2, 0x12, 0xc6, + 0x3d, 0x7b, 0xa8, 0x6d, 0x70, 0xd3, 0xcf, 0x73, 0x38, 0xf4, 0xab, 0x50, 0x1d, 0x49, 0xe0, 0xb0, + 0x85, 0xd1, 0x9a, 0x8e, 0x14, 0x3e, 0x0c, 0x2b, 0x26, 0x61, 0x50, 0x48, 0x3d, 0xbe, 0xae, 0x53, + 0xd8, 0xc1, 0x49, 0xe3, 0x58, 0x06, 0x9c, 0xd0, 0xdc, 0x4e, 0xc7, 0x8e, 0x43, 0xd1, 0x76, 0x0b, + 0x27, 0xbe, 0x89, 0x96, 0x46, 0xdc, 0x66, 0x2f, 0x6c, 0xbf, 0xd9, 0x08, 0xf9, 0x04, 0xf8, 0x7e, + 0x6b, 0x63, 0xb5, 0x2c, 0x4d, 0x4c, 0x91, 0x89, 0x62, 0xb2, 0x2e, 0x85, 0x95, 0x52, 0x38, 0x1a, + 0xea, 0xac, 0x50, 0x2a, 0x33, 0x03, 0xe4, 0x0b, 0x78, 0x97, 0xaa, 0x35, 0xf5, 0x04, 0x6e, 0xf4, + 0x5b, 0xf8, 0xb6, 0x1b, 0x3b, 0xf3, 0xf6, 0x99, 0xf5, 0x31, 0xf2, 0x96, 0xe4, 0x26, 0x7b, 0x00, + 0x3a, 0x08, 0x7a, 0x94, 0xeb, 0xce, 0x61, 0xd4, 0x3b, 0x93, 0x4f, 0x86, 0x84, 0xaf, 0xee, 0x23, + 0x8a, 0x8d, 0x7d, 0xab, 0x2d, 0xc0, 0xc6, 0x8d, 0x27, 0x0b, 0x80, 0x96, 0xb0, 0x6e, 0x86, 0xa7, + 0xf1, 0xbc, 0x48, 0x3e, 0x74, 0x25, 0x8c, 0x5b, 0x74, 0xa1, 0xc4, 0xeb, 0xab, 0x09, 0xb8, 0xd2, + 0x15, 0xa0, 0x7f, 0x20, 0x91, 0x6b, 0x09, 0xda, 0xbc, 0x98, 0x06, 0xec, 0xea, 0xdd, 0xae, 0xcd, + 0xe8, 0xb6, 0x85, 0x26, 0x61, 0xb9, 0xa5, 0xc5, 0x4e, 0xae, 0xfc, 0x0f, 0x2b, 0x9c, 0x42, 0xc6, + 0x8b, 0x28, 0x60, 0x04, 0x7d, 0x67, 0x23, 0x6a, 0xfd, 0xa3, 0x60, 0x19, 0x97, 0x50, 0x04, 0xd1, + 0xb1, 0x7b, 0x6a, 0xa7, 0x0a, 0x44, 0x61, 0xfe, 0xeb, 0xe6, 0xcf, 0x42, 0x7c, 0x3b, 0x82, 0xcc, + 0x41, 0x52, 0x82, 0xe0, 0xbd, 0xa2, 0x05, 0xf3, 0x98, 0xd3, 0xdc, 0x95, 0x6c, 0x59, 0x4b, 0x31, + 0xdc, 0x5e, 0x1e, 0x4e, 0x3d, 0x18, 0x95, 0xe6, 0xc3, 0xcd, 0xa9, 0x9e, 0xf4, 0xfe, 0xf0, 0x85, + 0xf8, 0xb1, 0xd0, 0x2f, 0x7d, 0x9c, 0xb5, 0x83, 0xde, 0xd7, 0x80, 0x0a, 0x56, 0xcd, 0xe8, 0x5b, + 0xbd, 0xdc, 0x60, 0xce, 0x26, 0xf7, 0xc9, 0x11, 0xd7, 0x2a, 0x69, 0xf0, 0xa3, 0x62, 0x83, 0x2c, + 0xe8, 0x9a, 0xec, 0x43, 0x91, 0x12, 0x2b, 0x2a, 0x41, 0x50, 0x67, 0x02, 0x30, 0xc0, 0x4d, 0xb4, + 0xc8, 0x6c, 0x40, 0x25, 0x55, 0xf1, 0x67, 0x7a, 0x11, 0x05, 0x3b, 0x9f, 0x55, 0xce, 0xec, 0x69, + 0x13, 0x68, 0x1a, 0x8c, 0x7d, 0xba, 0x3f, 0x98, 0x4a, 0xf7, 0x9a, 0x44, 0x31, 0x2a, 0x3d, 0x3b, + 0xe6, 0x0e, 0x6a, 0x71, 0x1b, 0xea, 0xf9, 0x19, 0x9a, 0x09, 0x1a, 0x4d, 0xe9, 0xef, 0x39, 0xf2, + 0x80, 0x77, 0x0e, 0x4e, 0x54, 0x0f, 0xc4, 0x8f, 0xdc, 0xa4, 0xb7, 0xb5, 0x63, 0xdd, 0x3a, 0x4f, + 0xdc, 0xd2, 0x17, 0x3b, 0x1c, 0xbc, 0xfa, 0xa2, 0x15, 0x69, 0x26, 0x8c, 0x1e, 0x68, 0xc9, 0x14, + 0xc5, 0x4e, 0x69, 0x98, 0xc1, 0x3c, 0x5d, 0x8b, 0x02, 0x70, 0xb5, 0x94, 0x90, 0x71, 0x1e, 0xb6, + 0xd9, 0x10, 0x5d, 0x67, 0x37, 0x75, 0x38, 0x8e, 0x0e, 0x75, 0xf8, 0xcd, 0x67, 0x94, 0xdd, 0x82, + 0xd6, 0xec, 0xc2, 0x91, 0xf6, 0x10, 0x5d, 0x9c, 0xf7, 0x28, 0xed, 0x5d, 0x70, 0x4c, 0x92, 0x45, + 0xd8, 0x86, 0xbe, 0x9a, 0x3c, 0x31, 0x76, 0x18, 0x80, 0x0a, 0xdd, 0x7e, 0x06, 0x95, 0xc6, 0x14, + 0x7e, 0x7d, 0xce, 0x1f, 0xd1, 0x66, 0xc6, 0xef, 0xc5, 0x63, 0x25, 0x95, 0x39, 0x64, 0x14, 0x28, + 0xae, 0x51, 0x6d, 0x0d, 0x9c, 0xc0, 0x5a, 0x3a, 0xdb, 0x02, 0xae, 0x50, 0x43, 0x34, 0x3b, 0x49, + 0x31, 0xf4, 0x6b, 0x4f, 0x85, 0xf6, 0x1d, 0x53, 0x88, 0x76, 0xd3, 0x01, 0x71, 0xfc, 0x23, 0x06, + 0x63, 0x9f, 0x3d, 0xd2, 0x00, 0x8d, 0xc7, 0x5a, 0x2f, 0x8a, 0x54, 0xfc, 0x76, 0x0f, 0x7a, 0x76, + 0x0f, 0xfb, 0x2f, 0x1c, 0x0a, 0x3b, 0x3f, 0xd6, 0xad, 0xfc, 0xcf, 0x68, 0x6b, 0x0b, 0xae, 0x9c, + 0xda, 0xeb, 0x8d, 0x8f, 0x7f, 0x7d, 0x1a, 0x55, 0x28, 0x90, 0xa8, 0xc0, 0x04, 0x25, 0xa2, 0x7b, + 0xb3, 0x3b, 0xd0, 0x9d, 0x79, 0xc0, 0xb5, 0x7f, 0x84, 0x7c, 0x85, 0xda, 0x59, 0xda, 0xfb, 0xb3, + 0xab, 0x26, 0x51, 0x9e, 0x92, 0x6f, 0xce, 0x53, 0x8c, 0xf8, 0x72, 0x1b, 0xcf, 0x31, 0x41, 0x04, + 0x9f, 0x7e, 0x8f, 0x9e, 0xc4, 0xfe, 0x56, 0xd3, 0x54, 0x1e, 0x1d, 0xe8, 0x3e, 0x49, 0xd3, 0x41, + 0xf1, 0x37, 0x1e, 0xb1, 0xa9, 0x5d, 0x59, 0x5f, 0x17, 0x34, 0x0a, 0x86, 0x01, 0xb5, 0x71, 0xa0, + 0x22, 0xe7, 0x35, 0x6f, 0xf1, 0x50, 0x55, 0x38, 0xa6, 0x4e, 0x80, 0x8a, 0xd4, 0x25, 0x67, 0x81, + 0xa5, 0xc6, 0x3c, 0x45, 0x31, 0xf4, 0x1d, 0x31, 0x69, 0xf3, 0x25, 0xe2, 0xde, 0x0f, 0xb3, 0xc6, + 0x44, 0x73, 0x7a, 0xd0, 0xf2, 0xac, 0x2e, 0xbf, 0xf7, 0xad, 0x8c, 0xe1, 0x33, 0x66, 0xf2, 0x03, + 0x67, 0xbe, 0x4a, 0xbf, 0x4e, 0x3a, 0xf5, 0x99, 0x15, 0x55, 0x8f, 0xac, 0xe2, 0xa4, 0x82, 0x4e, + 0x44, 0xbb, 0xd8, 0xa1, 0x26, 0x32, 0x5f, 0xf8, 0x54, 0x16, 0x96, 0x43, 0x37, 0x3d, 0x98, 0x6e, + 0xec, 0x3a, 0xa4, 0x66, 0x65, 0x6a, 0xbc, 0x1e, 0xd1, 0xe8, 0xde, 0x44, 0x74, 0x1f, 0x32, 0x12, + 0x3c, 0xe7, 0x4c, 0x1c, 0x15, 0x46, 0x9c, 0xa2, 0x27, 0x54, 0x64, 0x48, 0xe4, 0x36, 0xc2, 0x7d, + 0xb4, 0xd7, 0xc9, 0xf7, 0xd2, 0x5c, 0x80, 0x0b, 0xe6, 0x52, 0x96, 0x42, 0x9e, 0xb3, 0x03, 0x60, + 0x67, 0x29, 0x4f, 0x6a, 0xab, 0x62, 0x32, 0x0d, 0x9c, 0x20, 0x9e, 0xa9, 0x6c, 0x48, 0x51, 0x70, + 0xe6, 0x17, 0x83, 0xfc, 0x56, 0xf4, 0xcc, 0xba, 0x06, 0x9d, 0x37, 0x7a, 0x55, 0xe3, 0xf0, 0xda, + 0xe7, 0x27, 0x57, 0x3b, 0x35, 0x32, 0x9e, 0x13, 0xa5, 0x14, 0x2e, 0x1f, 0x88, 0xe5, 0xb8, 0x2c, + 0x45, 0x16, 0x24, 0x7d, 0x1e, 0x28, 0x63, 0xdb, 0x67, 0x43, 0xcf, 0xda, 0x19, 0x99, 0x96, 0x3d, + 0x6d, 0x06, 0x65, 0x8c, 0xce, 0x73, 0x51, 0x8c, 0x4f, 0xaf, 0x5c, 0xa8, 0x85, 0xce, 0x12, 0xe6, + 0xf0, 0xfe, 0x20, 0x09, 0x08, 0xd0, 0x18, 0xdb, 0x61, 0x0e, 0x95, 0x5f, 0xa0, 0x48, 0xb9, 0xbb, + 0xfe, 0x45, 0x15, 0x7d, 0x2f, 0x74, 0x88, 0x24, 0x14, 0xb3, 0x60, 0x39, 0x7b, 0x86, 0x3c, 0x8a, + 0x3c, 0x81, 0x01, 0xc7, 0xbf, 0xc6, 0xd3, 0xf8, 0x36, 0xc7, 0x8b, 0x52, 0xec, 0x86, 0x9c, 0x01, + 0x5b, 0xb6, 0x1a, 0x97, 0xc9, 0xc9, 0x5d, 0x26, 0x35, 0xb1, 0x33, 0x5b, 0x7b, 0xd3, 0x94, 0xb8, + 0xe6, 0x32, 0xb6, 0x8c, 0x92, 0x95, 0x10, 0x8f, 0x20, 0xe9, 0x07, 0xf8, 0x4b, 0xb6, 0x45, 0xd0, + 0x39, 0xed, 0xdb, 0xe5, 0x51, 0xf7, 0xa4, 0x02, 0x91, 0x29, 0x7c, 0xe6, 0x14, 0x52, 0x2a, 0x79, + 0xcf, 0xe0, 0xcf, 0x16, 0x48, 0x90, 0x44, 0xcd, 0x34, 0x65, 0xef, 0x1f, 0xea, 0x26, 0xfd, 0x19, + 0x0c, 0xea, 0x4b, 0x34, 0x2d, 0x39, 0x08, 0xd5, 0x48, 0xbf, 0xdc, 0x41, 0x7d, 0xb6, 0xa5, 0x92, + 0x2a, 0xde, 0xf9, 0x99, 0xbe, 0xc8, 0x36, 0xd3, 0x31, 0x77, 0x3c, 0x2b, 0x2f, 0xa9, 0x1c, 0x80, + 0x5b, 0xc9, 0x40, 0x21, 0xb8, 0x3e, 0xa4, 0x2f, 0x01, 0xe7, 0x2c, 0xce, 0x64, 0xdc, 0x1b, 0xfb, + 0x10, 0xc5, 0x08, 0x18, 0x3a, 0x3b, 0x0d, 0x41, 0x32, 0xd3, 0x7c, 0x13, 0xb9, 0x85, 0x59, 0x94, + 0x5e, 0x27, 0x0b, 0x77, 0x34, 0x33, 0xd7, 0x59, 0xee, 0x65, 0xab, 0xc3, 0xaf, 0xd2, 0xd3, 0x19, + 0x6e, 0xcb, 0x09, 0x30, 0x46, 0x14, 0x69, 0x91, 0xb5, 0x0b, 0x61, 0x40, 0x55, 0xce, 0x49, 0x5d, + 0x95, 0xfe, 0x81, 0xcb, 0xbe, 0x20, 0x59, 0x11, 0xa8, 0x89, 0xc1, 0xab, 0xf2, 0xcf, 0x8f, 0xf5, + 0xe1, 0x67, 0x03, 0xb0, 0xf8, 0x5b, 0x23, 0x5b, 0x9c, 0x73, 0xb3, 0xb4, 0xb3, 0x71, 0x6e, 0xd7, + 0x46, 0xed, 0x61, 0x1d, 0xd2, 0x37, 0x99, 0xa4, 0xe9, 0x3b, 0x60, 0xf1, 0x33, 0x7d, 0x6b, 0xda, + 0xb7, 0xd9, 0x7c, 0xc6, 0x5d, 0x89, 0xbd, 0xcf, 0xc4, 0x94, 0x51, 0xc2, 0x94, 0xed, 0x09, 0x04, + 0x4a, 0x98, 0x96, 0xd5, 0x96, 0xc5, 0xcc, 0x14, 0xc4, 0x37, 0xae, 0x61, 0x04, 0xe4, 0x20, 0xef, + 0x75, 0x90, 0x84, 0xcb, 0x9f, 0xca, 0x6a, 0xb0, 0x00, 0xfb, 0x37, 0xfb, 0x95, 0xe1, 0xe1, 0xbc, + 0xee, 0x71, 0xd1, 0xdb, 0xa9, 0x53, 0xf7, 0x5c, 0x81, 0x27, 0x72, 0x90, 0x2f, 0x06, 0x2c, 0xbf, + 0x7a, 0x0a, 0xf0, 0x10, 0xb7, 0xd2, 0x31, 0xbd, 0xc8, 0x80, 0x90, 0x27, 0x87, 0x0a, 0x61, 0x67, + 0x76, 0x4d, 0xeb, 0x96, 0xb7, 0x83, 0xfe, 0xf0, 0xac, 0x70, 0x59, 0xf8, 0xd6, 0x51, 0xe3, 0xb9, + 0x02, 0x3e, 0xbc, 0xef, 0xdf, 0xc2, 0x08, 0x17, 0x72, 0x2c, 0xa5, 0xf8, 0xf8, 0xb6, 0xfb, 0x1b, + 0x58, 0x47, 0x03, 0x92, 0xb0, 0xa9, 0xfd, 0x18, 0xd1, 0x6d, 0xad, 0x1d, 0xca, 0x71, 0xff, 0x3c, + 0x1b, 0xa8, 0x61, 0xa8, 0x18, 0xad, 0x4a, 0xe8, 0xbb, 0xb9, 0x34, 0xda, 0xa3, 0x30, 0x2e, 0xd9, + 0x30, 0x6b, 0x4d, 0xc9, 0xb7, 0xc8, 0x76, 0xd1, 0xe5, 0x51, 0x14, 0x1c, 0x17, 0x3e, 0x52, 0xf6, + 0xd7, 0x70, 0xde, 0xe7, 0x25, 0xa6, 0x27, 0x6f, 0xba, 0x13, 0xc3, 0x91, 0x99, 0xaa, 0x42, 0x3d, + 0xb2, 0xa3, 0x0b, 0xbe, 0x9a, 0xa7, 0x51, 0x75, 0xcf, 0x54, 0x4f, 0x39, 0x62, 0xe0, 0x72, 0x82, + 0x24, 0x19, 0x69, 0x6e, 0x23, 0x2d, 0x7c, 0xfb, 0xd6, 0xf9, 0x68, 0xa3, 0x5d, 0x71, 0x5d, 0x21, + 0x47, 0x05, 0x08, 0x0f, 0xed, 0x47, 0xa1, 0xd9, 0x6b, 0x42, 0xcf, 0x8e, 0xb8, 0x73, 0x12, 0x58, + 0x90, 0x71, 0x0f, 0xf6, 0xfc, 0x4a, 0x33, 0xc9, 0xc9, 0xd6, 0xc6, 0xd7, 0x71, 0x3b, 0xfb, 0xd4, + 0xbf, 0x87, 0x43, 0x37, 0xf6, 0x18, 0xe6, 0x5c, 0xaa, 0x0f, 0x33, 0x02, 0x9e, 0x34, 0xd4, 0xb0, + 0xa8, 0x7c, 0xdb, 0x37, 0x2d, 0x8a, 0xf3, 0xba, 0x57, 0xb8, 0xc1, 0xcb, 0xea, 0x40, 0x26, 0x28, + 0xae, 0xda, 0xe4, 0x96, 0x09, 0xea, 0x78, 0xe3, 0x70, 0xc6, 0x61, 0x17, 0x47, 0x9f, 0xd4, 0xd8, + 0x01, 0x0c, 0x78, 0xc6, 0xba, 0x5a, 0xc2, 0x20, 0x33, 0x60, 0xe1, 0x4f, 0x59, 0x45, 0x41, 0xda, + 0x75, 0xcb, 0x5f, 0x46, 0x1c, 0xdd, 0xa2, 0x2e, 0xd5, 0x5d, 0xba, 0x49, 0x7a, 0x34, 0x6b, 0x02, + 0x7e, 0xe6, 0xaa, 0x08, 0x74, 0x60, 0xa9, 0x6d, 0xab, 0x9f, 0xfe, 0x72, 0xbf, 0x98, 0x1a, 0xec, + 0x7a, 0x4d, 0x3b, 0xf9, 0x98, 0x6f, 0x58, 0x2c, 0xc9, 0x9c, 0xe2, 0xcc, 0xc0, 0x06, 0x2a, 0x4a, + 0x57, 0x29, 0xdc, 0x83, 0xc9, 0xbd, 0x99, 0x67, 0xcb, 0x97, 0x1c, 0x6a, 0xd6, 0xf2, 0xbe, 0x95, + 0xeb, 0xa4, 0xab, 0xae, 0xb3, 0xb3, 0x0d, 0x3a, 0xfb, 0x63, 0xfe, 0x57, 0xa3, 0xcb, 0x37, 0x3c, + 0x7b, 0xc0, 0xd4, 0xf8, 0x3b, 0x1e, 0x66, 0x1a, 0xa4, 0xb0, 0xa6, 0x2f, 0x1b, 0x2f, 0x8a, 0xfd, + 0x5e, 0xe7, 0x91, 0x5b, 0x38, 0x32, 0x08, 0xab, 0xad, 0xa0, 0x39, 0xab, 0xe7, 0xb1, 0x25, 0xfb, + 0x57, 0x5e, 0xff, 0xc8, 0x98, 0xe2, 0xde, 0xd7, 0x82, 0x21, 0x86, 0x66, 0x04, 0xf3, 0x73, 0x82, + 0x7b, 0x10, 0x11, 0x33, 0x7d, 0x44, 0x6e, 0xc4, 0x67, 0xf8, 0xca, 0x4d, 0x30, 0x29, 0xfe, 0x24, + 0xa3, 0x2d, 0xd5, 0xfa, 0x48, 0x25, 0x9e, 0xa4, 0x1f, 0xc0, 0x43, 0xdb, 0x9c, 0x7e, 0x89, 0xe9, + 0xf9, 0x9a, 0x5c, 0x16, 0xf3, 0xef, 0x59, 0xe9, 0xdf, 0x0f, 0x5d, 0xda, 0x61, 0x8d, 0x4c, 0xc1, + 0x0e, 0xb4, 0xa2, 0x4d, 0x0d, 0xb3, 0x55, 0x31, 0x95, 0xa2, 0xf9, 0xaa, 0xee, 0xa8, 0xa6, 0xc9, + 0x47, 0xec, 0x97, 0xe6, 0x10, 0xb5, 0x3f, 0xc5, 0xcf, 0x90, 0x46, 0xf6, 0xb0, 0xb5, 0xa3, 0x24, + 0x35, 0xa5, 0x9a, 0xde, 0xe0, 0xda, 0x18, 0xd6, 0xdb, 0x47, 0x8b, 0xa0, 0x5c, 0x43, 0x6c, 0x9d, + 0x44, 0x3d, 0xb5, 0xb5, 0x26, 0x13, 0xda, 0xe8, 0x60, 0x42, 0xa5, 0x85, 0x5b, 0x7e, 0x3a, 0x34, + 0xb1, 0x28, 0x83, 0x8c, 0x09, 0x34, 0xd8, 0x2c, 0x74, 0xa9, 0x42, 0x9b, 0xa8, 0xd4, 0xb7, 0xa9, + 0x4b, 0xdf, 0xa6, 0x6e, 0x2b, 0x44, 0xae, 0xb9, 0x36, 0xb8, 0xc9, 0x22, 0x03, 0xd7, 0x20, 0x59, + 0x90, 0x8a, 0x92, 0xab, 0x88, 0x18, 0x8c, 0xeb, 0x72, 0x88, 0xa1, 0x96, 0x46, 0xad, 0x94, 0x92, + 0xb6, 0x69, 0x73, 0x93, 0xe0, 0xd9, 0x79, 0x7b, 0x48, 0xb0, 0xa1, 0x28, 0x2d, 0x2d, 0x92, 0x84, + 0x60, 0x37, 0x8b, 0xc6, 0x35, 0x8d, 0x70, 0x6a, 0x18, 0x12, 0xd6, 0xce, 0x58, 0x58, 0x6e, 0x67, + 0xea, 0xb0, 0xdc, 0x79, 0x86, 0xe2, 0x5c, 0x6a, 0x39, 0x08, 0x38, 0x01, 0x31, 0x78, 0xcc, 0x18, + 0x88, 0xde, 0x36, 0xbc, 0x82, 0xd2, 0xb4, 0x21, 0x67, 0x4e, 0x8d, 0x5a, 0x4a, 0x53, 0xbf, 0x77, + 0x86, 0xf7, 0xf5, 0x6c, 0x47, 0x18, 0xee, 0xe6, 0xd3, 0xde, 0x2b, 0xcf, 0x1d, 0x39, 0x79, 0x7c, + 0xd5, 0x52, 0xaf, 0x58, 0xbf, 0x6f, 0xfd, 0x62, 0x36, 0x33, 0xf2, 0xb1, 0x08, 0x7d, 0x67, 0x64, + 0xea, 0x96, 0x48, 0x5f, 0xf6, 0x9e, 0x63, 0x51, 0xdc, 0x14, 0xae, 0x76, 0xbc, 0x8e, 0x89, 0x37, + 0x9e, 0x1e, 0xae, 0xaa, 0x11, 0x9c, 0x11, 0xc2, 0x7e, 0xab, 0x32, 0x90, 0xdf, 0xb4, 0x02, 0x93, + 0x45, 0x33, 0x81, 0x83, 0x00, 0x28, 0x78, 0xf6, 0x17, 0xad, 0x0c, 0x73, 0x19, 0x7b, 0x32, 0x5b, + 0xe6, 0x9a, 0x35, 0x3d, 0x12, 0xe0, 0x29, 0xdd, 0xb4, 0xb5, 0xce, 0xcf, 0xc1, 0x75, 0xe9, 0x24, + 0x8b, 0x02, 0x91, 0xdb, 0x1c, 0xb5, 0x03, 0xc7, 0xf0, 0xfd, 0xc5, 0xa0, 0x5e, 0xea, 0xa2, 0xfb, + 0x80, 0xd2, 0xc4, 0x78, 0xd8, 0xb8, 0x85, 0x42, 0xc1, 0x3b, 0xf2, 0x46, 0x61, 0x32, 0xdb, 0xec, + 0x57, 0x68, 0x56, 0x6d, 0x8e, 0x35, 0x56, 0x37, 0x92, 0x36, 0x73, 0x6c, 0xcd, 0x63, 0x82, 0x4f, + 0xda, 0x29, 0xd7, 0x75, 0x8f, 0xef, 0x9a, 0xe3, 0x3d, 0x5c, 0xf5, 0x37, 0xf3, 0xd1, 0x82, 0x55, + 0xeb, 0xcc, 0xa4, 0x22, 0x5e, 0x72, 0x9b, 0xcd, 0xdb, 0x9d, 0x49, 0x00, 0xeb, 0xe1, 0x43, 0x93, + 0xdc, 0x5c, 0x18, 0x0a, 0xbb, 0xfb, 0x78, 0x26, 0xaf, 0x0a, 0x6a, 0x11, 0x52, 0xe0, 0xf5, 0xd3, + 0xbc, 0x5d, 0x32, 0xbe, 0x69, 0xa6, 0x13, 0x67, 0xae, 0xf1, 0x7f, 0x00, 0x0d, 0x5a, 0xaa, 0x8c, + 0x4a, 0xee, 0x44, 0x27, 0xa3, 0x02, 0x25, 0x7e, 0x5b, 0xb6, 0xcd, 0xd2, 0xea, 0x15, 0x2b, 0x6b, + 0x9e, 0x66, 0x23, 0x31, 0x80, 0xb7, 0xee, 0x01, 0x80, 0x0d, 0x85, 0x51, 0xd7, 0x10, 0x6d, 0x0e, + 0x64, 0x38, 0x3e, 0x3b, 0x87, 0x9c, 0x5e, 0xfc, 0xea, 0xb6, 0xd1, 0x9a, 0x46, 0x83, 0x53, 0x14, + 0x85, 0x13, 0xce, 0x8f, 0x96, 0xf5, 0xa1, 0x6a, 0x2f, 0x68, 0x3f, 0xd4, 0xd7, 0xb2, 0x22, 0x3d, + 0x3c, 0xf7, 0x0f, 0x90, 0x52, 0x73, 0xbb, 0x17, 0x7c, 0x76, 0xe1, 0x4f, 0x21, 0xed, 0x7a, 0xce, + 0x0c, 0xf7, 0x7d, 0x38, 0x7f, 0xa3, 0x7b, 0x11, 0xbb, 0x0f, 0x81, 0xbe, 0xde, 0x98, 0x99, 0x0e, + 0x7e, 0xeb, 0x0a, 0x21, 0x09, 0x32, 0xcf, 0xc2, 0x53, 0x47, 0x45, 0xfa, 0x16, 0x84, 0x3f, 0xf5, + 0x8b, 0x11, 0x4a, 0x46, 0xa9, 0xbb, 0x5d, 0x2d, 0xa4, 0xeb, 0x6a, 0x8b, 0x5f, 0xc8, 0xab, 0xb1, + 0xe1, 0xe4, 0x3d, 0x2b, 0xdd, 0x34, 0xd3, 0x35, 0x2a, 0x86, 0xf5, 0x5f, 0xf0, 0xd3, 0xc1, 0x6d, + 0xd3, 0x6a, 0xec, 0x1d, 0x79, 0x4c, 0xdd, 0xa0, 0x3d, 0x8a, 0x8b, 0xa1, 0xc7, 0x4b, 0x3a, 0x94, + 0x48, 0x9e, 0x88, 0xfe, 0xfd, 0x1c, 0x32, 0x75, 0xae, 0x7b, 0xaa, 0xe4, 0x06, 0xc8, 0x5a, 0x00, + 0xc0, 0x66, 0x69, 0x46, 0xd2, 0x45, 0xd7, 0xc0, 0x9b, 0xe7, 0xb5, 0xd6, 0x45, 0x4f, 0xd5, 0x04, + 0xd1, 0xa3, 0x33, 0xbb, 0x9b, 0x6d, 0xc2, 0xa1, 0xb1, 0x83, 0x5e, 0x9f, 0xd7, 0x94, 0xca, 0xe2, + 0x7a, 0x00, 0x60, 0xf2, 0x8b, 0x68, 0xe2, 0xb2, 0x4e, 0x83, 0x7a, 0x5b, 0xa0, 0x68, 0xa1, 0xa8, + 0x51, 0x3d, 0x52, 0x71, 0xe5, 0x04, 0x0e, 0x07, 0x26, 0xec, 0x5e, 0x71, 0xfa, 0x0b, 0x31, 0xbc, + 0xbb, 0xc2, 0xf7, 0x7e, 0x2b, 0xca, 0xb7, 0xe7, 0x17, 0x24, 0x47, 0x5e, 0x78, 0x86, 0xf7, 0xd7, + 0xe6, 0x9b, 0x7f, 0x6a, 0x72, 0xb0, 0x36, 0xf0, 0xdd, 0x86, 0x92, 0x01, 0x0e, 0xf3, 0xa0, 0x09, + 0x4f, 0xd6, 0xbb, 0x68, 0x28, 0x3d, 0x5e, 0x93, 0x09, 0x59, 0x64, 0xa3, 0xa0, 0xad, 0x42, 0x4d, + 0x65, 0xf7, 0xf4, 0x29, 0xea, 0x4f, 0x67, 0x23, 0xf3, 0x92, 0x3a, 0x08, 0x29, 0xe4, 0xdc, 0x73, + 0x26, 0xa1, 0xd6, 0x4c, 0x13, 0x82, 0x3d, 0xe1, 0x9b, 0x8f, 0x5e, 0x5c, 0x9e, 0x49, 0xe5, 0x0e, + 0x63, 0xd4, 0x7e, 0xd5, 0x46, 0x6f, 0xfd, 0xc1, 0x0f, 0x35, 0x3d, 0x37, 0xf8, 0xe3, 0x19, 0xe7, + 0x7d, 0x3a, 0x79, 0x42, 0x9e, 0xc8, 0xff, 0x91, 0xbd, 0xdc, 0x62, 0xe5, 0xc8, 0x7a, 0xd2, 0x2f, + 0xd0, 0xbf, 0x01, 0xad, 0x0f, 0x69, 0x54, 0x2e, 0x06, 0x41, 0xd0, 0x2b, 0x12, 0x4f, 0x4a, 0x13, + 0xcd, 0xe7, 0x04, 0x49, 0x1b, 0x0a, 0x09, 0x11, 0xcc, 0x35, 0x33, 0xb6, 0xb9, 0xec, 0xc9, 0x39, + 0xf5, 0x5f, 0x30, 0x7a, 0x9d, 0x2f, 0xbf, 0xee, 0xf8, 0xf0, 0x5e, 0x27, 0x3c, 0x82, 0xee, 0xbc, + 0xc9, 0xa6, 0xec, 0x42, 0x1c, 0x5a, 0x57, 0x50, 0x47, 0xa6, 0x17, 0x2f, 0x68, 0x0a, 0xba, 0xe1, + 0x8e, 0x39, 0x15, 0xf2, 0x33, 0x41, 0x2d, 0x6c, 0xe2, 0xac, 0x49, 0x81, 0x35, 0x4d, 0xb9, 0xf3, + 0x0b, 0xf1, 0x49, 0xda, 0x68, 0x91, 0xf5, 0x9a, 0x09, 0x6b, 0x14, 0x49, 0x59, 0x60, 0x64, 0x43, + 0x71, 0xa3, 0xff, 0xff, 0x82, 0xa7, 0xb9, 0x8d, 0x7d, 0x0d, 0x91, 0x9f, 0x05, 0xb0, 0xdd, 0xa8, + 0x4b, 0xf5, 0xb7, 0xbd, 0x68, 0xed, 0xce, 0xa9, 0x66, 0x16, 0x67, 0x82, 0xc9, 0x7c, 0x22, 0xe4, + 0x34, 0xab, 0xb9, 0x34, 0x5a, 0x5f, 0x67, 0x89, 0x34, 0x6b, 0x53, 0x4c, 0x2f, 0xb9, 0xf6, 0x11, + 0x1e, 0x2f, 0xe3, 0xa6, 0x26, 0x42, 0x45, 0xe1, 0x62, 0x68, 0xbd, 0x16, 0xe1, 0xed, 0x74, 0xfa, + 0x0c, 0xa5, 0x87, 0xd9, 0xbc, 0x80, 0xe2, 0xb8, 0xc1, 0x53, 0xe7, 0x66, 0x7f, 0x7c, 0x67, 0x1d, + 0x43, 0x74, 0x9b, 0x94, 0x57, 0xd9, 0xb1, 0x86, 0x0d, 0xa1, 0xcf, 0x07, 0x87, 0x94, 0x0d, 0xca, + 0xac, 0x01, 0xa5, 0x81, 0x09, 0xfc, 0x0a, 0x62, 0x7a, 0xe5, 0x31, 0xcc, 0xb9, 0x9f, 0xc2, 0x40, + 0xd3, 0x33, 0xbc, 0x95, 0xce, 0x9f, 0x85, 0xf6, 0xf4, 0xbc, 0x44, 0xe5, 0x20, 0xa8, 0xba, 0x9b, + 0x5c, 0x7d, 0x58, 0x8c, 0x9f, 0x35, 0xe7, 0x91, 0x64, 0xb8, 0x1f, 0x86, 0xe6, 0xca, 0xe5, 0x73, + 0x08, 0xe5, 0x0b, 0xd2, 0x7b, 0x98, 0xe1, 0xb8, 0x6d, 0x19, 0x9e, 0xe5, 0xa7, 0x54, 0x7b, 0xdd, + 0x24, 0x80, 0xd5, 0x6c, 0x27, 0x36, 0x75, 0x0b, 0x57, 0xc7, 0xd8, 0xde, 0xa6, 0xee, 0x02, 0xeb, + 0xa2, 0x9d, 0xa3, 0xa2, 0x35, 0x5f, 0x65, 0xca, 0x24, 0x9a, 0xe1, 0xe0, 0x99, 0x6a, 0xd1, 0x25, + 0x50, 0xd6, 0xed, 0x3e, 0x20, 0x52, 0xe6, 0xec, 0x14, 0x41, 0xf7, 0xbb, 0x2c, 0x53, 0x95, 0x70, + 0x08, 0x02, 0xd3, 0x3c, 0xd2, 0x21, 0xa4, 0x8d, 0xaa, 0xc9, 0x31, 0x8e, 0x9e, 0xc9, 0x9d, 0x40, + 0x8b, 0x8b, 0xc0, 0x63, 0x5a, 0xeb, 0xcb, 0x71, 0xa9, 0x7b, 0x30, 0xc3, 0xc0, 0xd6, 0x57, 0x00, + 0x4b, 0x58, 0x9a, 0xce, 0x36, 0xd1, 0x06, 0xfb, 0xc2, 0xcd, 0x34, 0x2f, 0x6d, 0x14, 0x75, 0x46, + 0xa0, 0xe2, 0x68, 0x9c, 0x5e, 0xcd, 0x13, 0xaf, 0xb4, 0xb3, 0xa3, 0xec, 0x48, 0x3a, 0x17, 0x8d, + 0x98, 0xe3, 0xdc, 0x41, 0x62, 0x14, 0x17, 0xcc, 0x55, 0x7d, 0xdb, 0xd8, 0x96, 0x07, 0x02, 0xb0, + 0x2a, 0xb8, 0x71, 0xc2, 0x79, 0x50, 0x5b, 0x7a, 0x84, 0x43, 0x4a, 0xc4, 0x14, 0xd3, 0x18, 0x7e, + 0x5e, 0x4a, 0x9f, 0x90, 0x0e, 0x37, 0xbf, 0xcf, 0x15, 0xcd, 0xfd, 0x33, 0x91, 0x58, 0xdc, 0x78, + 0x9e, 0x7f, 0x9a, 0xbc, 0xb5, 0x6e, 0x66, 0xa4, 0xed, 0x7d, 0xd7, 0x51, 0x7b, 0x21, 0x3b, 0x5b, + 0x2c, 0xc3, 0xa3, 0x4f, 0x33, 0x5c, 0x49, 0xc2, 0x81, 0xf7, 0xc6, 0x78, 0x89, 0x93, 0x2b, 0xd2, + 0xbf, 0x4b, 0x40, 0x26, 0xf5, 0x39, 0x18, 0xc9, 0x2c, 0xc1, 0xae, 0xb4, 0xa9, 0x20, 0xab, 0x6f, + 0x89, 0x46, 0x56, 0xb7, 0xc6, 0xfc, 0xbb, 0x3a, 0x15, 0x73, 0x68, 0x12, 0xab, 0xfa, 0x76, 0x1d, + 0x9f, 0x80, 0x78, 0xdf, 0x1e, 0x52, 0xc5, 0xa1, 0x73, 0xc4, 0x88, 0xf6, 0xb3, 0xe4, 0x94, 0x10, + 0x1c, 0xe5, 0x70, 0x3f, 0x26, 0xf5, 0x46, 0x78, 0x97, 0xb6, 0xaf, 0x75, 0xf9, 0x2d, 0x5f, 0x13, + 0x56, 0xb5, 0x27, 0x2e, 0x3c, 0x36, 0x18, 0xad, 0x10, 0x8e, 0xa9, 0x92, 0x39, 0x7d, 0x8b, 0x81, + 0x43, 0x03, 0xbd, 0x65, 0x22, 0xd3, 0x1b, 0x80, 0xc6, 0xbc, 0xbd, 0x90, 0x1f, 0x59, 0xf8, 0xd7, + 0xa4, 0xdc, 0x29, 0xfc, 0xd2, 0xb2, 0x73, 0x6b, 0x60, 0xd6, 0x2e, 0xe1, 0x1e, 0xc7, 0x1e, 0xf7, + 0xea, 0xd1, 0x19, 0xfb, 0x5a, 0x23, 0x57, 0x9d, 0xbf, 0xdb, 0x41, 0xb9, 0x44, 0xe0, 0x8e, 0xe1, + 0xc9, 0x9b, 0x6c, 0x0b, 0x33, 0xf5, 0x92, 0xe7, 0x33, 0xbc, 0x3b, 0x00, 0x00, 0x3f, 0x22, 0xd5, + 0x27, 0xf0, 0xf7, 0x9f, 0x9a, 0x88, 0xc3, 0x3f, 0x0d, 0x5c, 0xff, 0x7b, 0x30, 0xd0, 0x58, 0x8d, + 0xea, 0x52, 0xac, 0x57, 0xa8, 0x7f, 0x19, 0x84, 0x80, 0x70, 0x18, 0x6d, 0xb5, 0x8c, 0xfa, 0x03, + 0x1c, 0xad, 0x0b, 0x75, 0x3f, 0xe9, 0x19, 0xf0, 0xb2, 0xb9, 0x64, 0xb4, 0xfe, 0xd8, 0x93, 0x09, + 0xd9, 0x52, 0xde, 0x8a, 0x8d, 0x33, 0xf6, 0xfe, 0x03, 0xd6, 0x6f, 0x4a, 0x57, 0xcb, 0xc7, 0x80, + 0x2b, 0x10, 0xed, 0xe7, 0x2d, 0x32, 0xf4, 0x15, 0x06, 0xf6, 0xf9, 0xa4, 0x70, 0x69, 0xd2, 0x74, + 0x91, 0x33, 0xa0, 0xb6, 0xc9, 0x31, 0x8a, 0x46, 0xe3, 0xa9, 0x15, 0x04, 0xc5, 0xc4, 0xec, 0x04, + 0x53, 0x1b, 0x0e, 0xe0, 0xf2, 0x8d, 0x78, 0x1c, 0xdc, 0x49, 0x91, 0x6f, 0x36, 0xd3, 0xf7, 0xe3, + 0x3b, 0x69, 0x2a, 0xdb, 0x53, 0xdf, 0x2f, 0xb8, 0xe2, 0xdc, 0x20, 0x67, 0x09, 0x10, 0x81, 0xcf, + 0xde, 0x25, 0xdd, 0xcf, 0x2d, 0x3c, 0x62, 0xff, 0xaf, 0x7d, 0xb0, 0xbe, 0x1b, 0x09, 0x62, 0xdb, + 0x45, 0xc9, 0x2c, 0x56, 0x58, 0xe6, 0x2b, 0xed, 0x28, 0x12, 0xe6, 0x92, 0x7d, 0x77, 0x9c, 0x61, + 0xe7, 0xbc, 0xa7, 0x4b, 0x2d, 0xb1, 0x79, 0xf8, 0x09, 0x6a, 0x7e, 0x9f, 0xf1, 0x68, 0x2c, 0x58, + 0x4b, 0xa9, 0x28, 0x70, 0x3e, 0x17, 0xa3, 0x5b, 0xaf, 0xc0, 0x1d, 0x9c, 0x12, 0xa5, 0xd5, 0x77, + 0x20, 0x24, 0x52, 0xcb, 0xd4, 0xbb, 0xd2, 0x1f, 0x6b, 0x0a, 0x60, 0x9c, 0x21, 0xa0, 0x3e, 0xd3, + 0x1e, 0xf2, 0xae, 0x47, 0xe3, 0xf3, 0x70, 0x6f, 0x02, 0x1b, 0x35, 0xd4, 0xf6, 0x5a, 0xad, 0x94, + 0xd6, 0xab, 0x1f, 0x52, 0x3f, 0x34, 0xfc, 0x9d, 0x4b, 0x65, 0x1c, 0x23, 0xaa, 0x7a, 0x5a, 0x65, + 0x15, 0x0e, 0x71, 0xa4, 0x06, 0x18, 0xfc, 0xa6, 0xa4, 0xc3, 0x7f, 0x7c, 0x58, 0x3a, 0xbd, 0x91, + 0x20, 0xe0, 0xdd, 0xf9, 0x35, 0xe4, 0x2b, 0x06, 0x1c, 0x60, 0x91, 0x1d, 0x8a, 0x3b, 0xea, 0x00, + 0xb4, 0x2f, 0xcb, 0xd5, 0x92, 0xa4, 0x66, 0xc6, 0x54, 0x60, 0x15, 0x76, 0xbf, 0x9c, 0x73, 0xaf, + 0x64, 0xab, 0x41, 0xc7, 0x54, 0xbf, 0xca, 0x97, 0xef, 0x1f, 0xc5, 0x55, 0xaf, 0x08, 0x52, 0x36, + 0x64, 0xf4, 0x29, 0x9f, 0xa8, 0x53, 0xd6, 0x7e, 0x91, 0xd2, 0x17, 0xfa, 0x9e, 0xf7, 0x37, 0x09, + 0x7d, 0x01, 0xf6, 0xd4, 0x29, 0x8c, 0xfd, 0x56, 0x56, 0x2f, 0x5f, 0xf5, 0xbe, 0x6f, 0xe1, 0xb9, + 0x82, 0x00, 0x15, 0x1d, 0xdb, 0x4a, 0xde, 0xa1, 0x34, 0x80, 0x2e, 0x4a, 0xc9, 0xc5, 0x06, 0x60, + 0xd2, 0x80, 0x3a, 0x71, 0x6a, 0x9f, 0x5a, 0x54, 0xa2, 0x2b, 0xf2, 0x0d, 0xcc, 0x46, 0x3e, 0x7c, + 0x0c, 0x6c, 0x15, 0xe1, 0xe1, 0x5b, 0x3f, 0xe9, 0x76, 0x01, 0x00, 0x60, 0xc2, 0x61, 0x4f, 0xa1, + 0x0e, 0x50, 0xc4, 0x28, 0xd4, 0xe6, 0x11, 0x2e, 0xcc, 0x8f, 0xf8, 0x40, 0x7a, 0x69, 0x47, 0x58, + 0xd4, 0x31, 0xb9, 0xe7, 0x85, 0x76, 0xe3, 0x6c, 0x7a, 0x4b, 0xe6, 0x4b, 0x75, 0xe1, 0x6a, 0xa0, + 0x7c, 0x30, 0xa5, 0x18, 0xc1, 0xb4, 0xf8, 0xc1, 0x3e, 0x13, 0x69, 0x0f, 0xc1, 0xef, 0xe2, 0x8c, + 0x13, 0x0d, 0xbe, 0x09, 0x1c, 0x00, 0x8d, 0xc8, 0x95, 0x79, 0xe7, 0x18, 0xb2, 0x59, 0xc4, 0x0d, + 0xba, 0xbe, 0x06, 0x3a, 0x97, 0x42, 0xd7, 0x00, 0x53, 0x49, 0x85, 0xf6, 0xb5, 0x4f, 0x6a, 0x9f, + 0x81, 0xca, 0x49, 0x2d, 0xb3, 0x28, 0x81, 0x27, 0x8d, 0xec, 0x0a, 0x62, 0x95, 0xce, 0x1d, 0xf9, + 0x24, 0xd5, 0x87, 0xb1, 0x82, 0x2f, 0xd5, 0x27, 0xb9, 0xbb, 0xb7, 0x36, 0x2d, 0xbc, 0xe7, 0xa7, + 0xca, 0xf2, 0xaf, 0x61, 0x82, 0x3d, 0x1f, 0x05, 0x3e, 0x0b, 0x61, 0xf0, 0xd6, 0x37, 0x65, 0x61, + 0xad, 0x5d, 0x4c, 0x4b, 0x3e, 0xee, 0x1e, 0xed, 0xaa, 0x28, 0x27, 0x4c, 0x89, 0x76, 0x84, 0x88, + 0x46, 0xee, 0x7a, 0x9a, 0x7c, 0x66, 0x80, 0xa9, 0x0c, 0x90, 0xc9, 0x6e, 0x51, 0x33, 0x49, 0xdb, + 0x2d, 0xde, 0x20, 0x03, 0xc0, 0x07, 0x31, 0x6f, 0xc6, 0x30, 0xd8, 0x3b, 0xdd, 0xe1, 0x51, 0x22, + 0xb6, 0x73, 0x2a, 0x02, 0x49, 0x5e, 0xa9, 0x63, 0x4f, 0xbd, 0xb6, 0x40, 0x45, 0x79, 0x2f, 0x98, + 0xd3, 0x72, 0xbd, 0x16, 0xed, 0xa0, 0x29, 0xcb, 0x08, 0xf3, 0x01, 0x48, 0x20, 0xb2, 0x9a, 0x94, + 0x87, 0xf8, 0x1c, 0x26, 0x76, 0xa5, 0x96, 0x39, 0xd4, 0x12, 0xe2, 0xae, 0x8b, 0x32, 0xde, 0xcc, + 0x05, 0x02, 0x76, 0x8f, 0x2b, 0x06, 0xc8, 0xfa, 0xe6, 0xd5, 0xbd, 0x79, 0x8d, 0xc3, 0x4d, 0xb4, + 0x29, 0x9e, 0x24, 0x20, 0x13, 0x5c, 0xc2, 0xec, 0xc4, 0x53, 0x89, 0x6c, 0x25, 0xc0, 0xa9, 0xcc, + 0xab, 0x09, 0x45, 0x6e, 0x78, 0x50, 0x2d, 0xae, 0xdd, 0x2b, 0xc7, 0xe6, 0x03, 0x15, 0xdc, 0xd6, + 0x51, 0x58, 0x21, 0x50, 0xc2, 0x32, 0x98, 0x80, 0x7c, 0x37, 0x37, 0x10, 0x3f, 0x08, 0x93, 0x63, + 0x5c, 0x91, 0x41, 0xe1, 0xd4, 0x6e, 0xaa, 0xaa, 0x37, 0x02, 0x42, 0xc9, 0x81, 0xad, 0x74, 0x34, + 0x2e, 0x9c, 0xd3, 0x33, 0xf1, 0xe2, 0x28, 0xce, 0x9e, 0x26, 0x66, 0xdf, 0x19, 0x93, 0xea, 0x51, + 0x51, 0x4f, 0x49, 0x70, 0xc2, 0x77, 0x0d, 0x28, 0xe2, 0x91, 0xf1, 0xf0, 0xe3, 0x54, 0x71, 0x42, + 0x4b, 0xa7, 0xd1, 0x91, 0x15, 0x0e, 0x4e, 0x3c, 0x6f, 0x13, 0xd5, 0xc9, 0xae, 0xd4, 0x38, 0xef, + 0xb1, 0x9d, 0x71, 0x58, 0x44, 0xa8, 0xdf, 0xd3, 0x2e, 0x7e, 0x2d, 0x59, 0xc2, 0x4f, 0x07, 0x6c, + 0xc1, 0xc0, 0x5e, 0xcd, 0x14, 0x49, 0x88, 0x58, 0xc3, 0xa7, 0x55, 0x06, 0xed, 0x40, 0xab, 0xfc, + 0x31, 0x71, 0xf3, 0x21, 0xad, 0xf4, 0xe9, 0x56, 0x59, 0x16, 0xc2, 0x19, 0xf9, 0x69, 0x67, 0x2c, + 0xfa, 0xff, 0x36, 0x40, 0x79, 0x9c, 0x8f, 0xf7, 0xd8, 0xae, 0x03, 0x0b, 0x4b, 0x90, 0xad, 0x46, + 0xbb, 0x90, 0x17, 0xad, 0xfb, 0xd8, 0xed, 0x87, 0xa8, 0xad, 0x9b, 0x20, 0x2d, 0xc0, 0x1f, 0x87, + 0xe3, 0x8c, 0x7a, 0x34, 0x36, 0xc1, 0x33, 0x66, 0xad, 0x37, 0xd9, 0x94, 0xe0, 0x82, 0xbd, 0xca, + 0xa9, 0xf5, 0xcc, 0xc0, 0xf5, 0x9a, 0xbf, 0xfa, 0x1b, 0x92, 0x39, 0x94, 0x29, 0x58, 0xd3, 0x87, + 0x7c, 0x02, 0x54, 0xe0, 0x07, 0xbc, 0x3a, 0xb9, 0xd4, 0x16, 0x5a, 0x66, 0x96, 0x45, 0xe8, 0xed, + 0x20, 0x2e, 0xf3, 0x60, 0x3e, 0x28, 0x1c, 0xfb, 0xd9, 0x20, 0xf2, 0x6b, 0x8c, 0x3b, 0x3e, 0x19, + 0x3d, 0x3a, 0xad, 0xe5, 0xe6, 0x3d, 0x14, 0x04, 0x46, 0x39, 0xef, 0xba, 0x6f, 0x90, 0x9c, 0x3a, + 0x2d, 0x34, 0x80, 0xbb, 0x8a, 0xbe, 0xe2, 0xd0, 0x9e, 0x06, 0xfb, 0xc8, 0xd6, 0x10, 0x19, 0xd3, + 0x16, 0xd0, 0x3e, 0xa9, 0x7a, 0x54, 0xec, 0xa4, 0x11, 0x61, 0xbb, 0xc1, 0x16, 0x30, 0xa5, 0xe8, + 0x70, 0xfb, 0x7d, 0xaf, 0x16, 0x36, 0x4e, 0xd7, 0x90, 0x2e, 0xc3, 0x80, 0x4b, 0xa0, 0xf0, 0x64, + 0x4b, 0xa2, 0x6f, 0x19, 0x1a, 0x8a, 0x53, 0x86, 0xf5, 0x58, 0x81, 0xe1, 0x85, 0xc6, 0xe0, 0x7e, + 0x1e, 0xf0, 0x53, 0x45, 0x52, 0x08, 0xbc, 0x42, 0xc2, 0x99, 0x4b, 0xc8, 0x7f, 0xbe, 0xb6, 0xdc, + 0x80, 0xd9, 0xe7, 0x4d, 0x4f, 0x29, 0x24, 0xca, 0x5f, 0x32, 0xf7, 0x65, 0xad, 0x66, 0xf6, 0x24, + 0x7e, 0x91, 0xae, 0xbc, 0xfb, 0xea, 0x8b, 0x1a, 0x8a, 0x37, 0xc2, 0x47, 0x4f, 0xe9, 0xdd, 0xcd, + 0x4b, 0x10, 0x23, 0x7b, 0xee, 0x0f, 0x54, 0x09, 0x77, 0xd3, 0x67, 0xe1, 0x54, 0x20, 0x51, 0x2b, + 0xfa, 0xc7, 0x9a, 0xec, 0xfe, 0x28, 0x1c, 0xc7, 0x96, 0x75, 0x8c, 0x6d, 0x07, 0xf5, 0xa2, 0xb9, + 0x55, 0x74, 0xd1, 0x43, 0x5e, 0x52, 0x6c, 0xfb, 0xf1, 0xcb, 0x4a, 0x47, 0x2a, 0xe8, 0xf9, 0x5e, + 0x89, 0x43, 0x51, 0x3c, 0x3e, 0xe1, 0xd2, 0xa4, 0x6e, 0xe2, 0x3f, 0x4c, 0x52, 0x17, 0x93, 0xd1, + 0x2e, 0x63, 0xd4, 0x4e, 0x59, 0xd6, 0x9f, 0xa8, 0x9d, 0x2e, 0x04, 0x76, 0x06, 0x40, 0x9f, 0xe4, + 0xc8, 0x11, 0xcb, 0x78, 0xf3, 0xf5, 0x66, 0xd9, 0xce, 0xe7, 0x1f, 0x43, 0x93, 0x7a, 0xca, 0xe5, + 0x6d, 0x00, 0xfc, 0x18, 0xf6, 0xc4, 0xe3, 0x92, 0x2d, 0x46, 0xd4, 0x95, 0x70, 0x95, 0xae, 0x70, + 0x8a, 0x78, 0xf4, 0x94, 0x74, 0x8f, 0x39, 0x8e, 0x7e, 0xdd, 0xc7, 0x69, 0x1a, 0x55, 0x77, 0xde, + 0xff, 0xbb, 0x9a, 0x86, 0x43, 0x19, 0x78, 0xca, 0xbd, 0xff, 0x26, 0x88, 0xd9, 0xf7, 0x9f, 0x01, + 0x37, 0xc4, 0x5c, 0xfc, 0xe6, 0x3f, 0x02, 0x01, 0x94, 0x90, 0xa4, 0xd2, 0xa2, 0xb4, 0xc0, 0x1a, + 0xe5, 0x2e, 0xcf, 0x3a, 0x2e, 0x20, 0xb5, 0x40, 0xf7, 0x93, 0x82, 0x41, 0x9e, 0xfc, 0xeb, 0x02, + 0xc6, 0x92, 0x07, 0xdb, 0x07, 0x3e, 0xe7, 0x8f, 0x9d, 0x2d, 0xff, 0x6d, 0x5f, 0x20, 0xee, 0x61, + 0x15, 0xd8, 0xc1, 0xcc, 0xf0, 0x43, 0xdc, 0xe6, 0x70, 0xfd, 0x63, 0x76, 0xae, 0x09, 0xcb, 0x4d, + 0x0a, 0x2c, 0x3c, 0x9f, 0xfe, 0xca, 0xb2, 0x5f, 0x1d, 0x37, 0xe9, 0x52, 0xcd, 0x90, 0x79, 0x45, + 0x0f, 0x87, 0x3a, 0xb4, 0xd7, 0x90, 0xdd, 0x3e, 0x94, 0xf9, 0x51, 0x75, 0xdc, 0xff, 0xd9, 0xec, + 0x4b, 0x6f, 0x61, 0x4d, 0xcb, 0x88, 0xf6, 0xaa, 0x78, 0xb1, 0xa1, 0xd4, 0xb1, 0xa6, 0x41, 0xdf, + 0x96, 0xef, 0x16, 0x31, 0x49, 0x58, 0x7b, 0xdc, 0x94, 0x18, 0x8d, 0x15, 0xad, 0xff, 0x81, 0xa9, + 0x66, 0x22, 0x12, 0x84, 0x9e, 0x59, 0xd3, 0x13, 0xcb, 0xad, 0x27, 0x3b, 0xbe, 0x2b, 0x2b, 0xaf, + 0x2e, 0xfe, 0x6f, 0x73, 0x5f, 0x8c, 0xd2, 0x83, 0x5d, 0x60, 0xbc, 0x3b, 0xf5, 0x77, 0xdc, 0xe4, + 0x03, 0xbe, 0xce, 0x8b, 0xf4, 0x28, 0x56, 0x53, 0x20, 0x2d, 0x7c, 0x8e, 0x66, 0x69, 0x4b, 0x12, + 0xc4, 0x6e, 0xff, 0x6b, 0x6a, 0x0e, 0xba, 0x0a, 0x99, 0x43, 0xe3, 0x74, 0xf0, 0xe8, 0x5d, 0x3c, + 0x32, 0x01, 0x3d, 0xf4, 0x96, 0xcd, 0x37, 0x69, 0xd3, 0x86, 0x71, 0xce, 0x58, 0xd9, 0xf2, 0x3d, + 0xd8, 0x1b, 0xa0, 0x27, 0xcd, 0xd7, 0xb1, 0xcf, 0xac, 0xf1, 0x1f, 0x00, 0x8a, 0x84, 0x57, 0x1c, + 0x47, 0xac, 0x31, 0x14, 0xf7, 0x06, 0x86, 0xcc, 0x4e, 0x00, 0x3e, 0x5b, 0xdf, 0x87, 0xe7, 0x98, + 0x26, 0xd6, 0x90, 0xd5, 0x89, 0xa0, 0xcb, 0xa9, 0x58, 0x60, 0xfb, 0xd5, 0xc8, 0x1c, 0x85, 0x54, + 0x5b, 0xf7, 0x2c, 0xde, 0xd9, 0x3c, 0xd1, 0xca, 0xfb, 0xc2, 0x71, 0x51, 0xe7, 0x91, 0xb0, 0x6d, + 0x65, 0xea, 0x84, 0xd1, 0x3b, 0x4b, 0xb0, 0xd4, 0x2e, 0xe5, 0xc8, 0xcc, 0x4a, 0x0e, 0xc1, 0x73, + 0x4d, 0x3b, 0x55, 0xfc, 0x96, 0xeb, 0xfa, 0x79, 0xd2, 0xe9, 0xe3, 0xfa, 0xef, 0x2c, 0x6f, 0xbf, + 0x1a, 0x27, 0x4d, 0x3e, 0x35, 0x3a, 0x76, 0xbe, 0xde, 0xe7, 0x4a, 0x00, 0x5e, 0xf9, 0x7b, 0xcf, + 0xb4, 0x17, 0x1e, 0xc6, 0x67, 0x5e, 0xb1, 0x65, 0xb5, 0x49, 0xba, 0xdc, 0xd3, 0x39, 0x7d, 0xab, + 0x47, 0x42, 0x0a, 0xfa, 0x73, 0xb4, 0x25, 0x41, 0xbc, 0xb4, 0xfe, 0x38, 0xd1, 0xed, 0xc6, 0x64, + 0x96, 0xe6, 0x61, 0x41, 0xfd, 0xfc, 0x6f, 0xd0, 0x03, 0xe9, 0x2d, 0x02, 0x06, 0xdc, 0x67, 0xf4, + 0xbf, 0x8a, 0xaf, 0x0d, 0x47, 0x66, 0x77, 0xed, 0x12, 0x4c, 0x85, 0x23, 0xf7, 0xc4, 0x91, 0x8a, + 0x9a, 0x18, 0xd2, 0x38, 0x8f, 0x16, 0xb4, 0xe5, 0xc1, 0xff, 0x72, 0xa6, 0x05, 0x3a, 0xa0, 0x30, + 0x83, 0x78, 0x2f, 0xe4, 0x68, 0xbd, 0xbe, 0x6e, 0xce, 0x11, 0x82, 0x3c, 0x43, 0x66, 0xa0, 0xf4, + 0x25, 0x59, 0xdd, 0xd5, 0x85, 0xd6, 0x0a, 0xdc, 0x0a, 0x51, 0x3c, 0xe7, 0xb4, 0x66, 0x87, 0xfe, + 0x69, 0x75, 0xc1, 0x33, 0x5b, 0xce, 0x89, 0x76, 0xa8, 0x51, 0xd2, 0x6d, 0x6f, 0x07, 0x88, 0x7f, + 0xe0, 0xfa, 0xbf, 0x1b, 0x00, 0x64, 0x19, 0xc1, 0x48, 0x35, 0x6f, 0x8d, 0x64, 0x9e, 0xc1, 0x5d, + 0xee, 0x1b, 0xa7, 0xf3, 0xcd, 0xff, 0x40, 0x1a, 0xac, 0xd0, 0xc9, 0x76, 0xfe, 0xdf, 0xca, 0x49, + 0x9b, 0xb0, 0xdd, 0x2f, 0x7d, 0x1f, 0x3c, 0x7c, 0x85, 0xf9, 0x49, 0x9c, 0x01, 0x28, 0x1c, 0xfe, + 0x73, 0x5c, 0xc7, 0x3c, 0xa0, 0xeb, 0xd8, 0xc6, 0x2b, 0x80, 0xe7, 0x66, 0x57, 0xa2, 0x2c, 0xd1, + 0x5c, 0x34, 0x3e, 0x66, 0xeb, 0xee, 0xca, 0x78, 0x4f, 0x96, 0xeb, 0x00, 0x5c, 0x42, 0x21, 0x7f, + 0x9e, 0xee, 0xdd, 0xca, 0x5f, 0x4f, 0x46, 0x6c, 0x68, 0x5f, 0xbf, 0x6e, 0xa7, 0x38, 0x9b, 0x3a, + 0xa1, 0xfd, 0xf8, 0xdd, 0xa1, 0x66, 0x12, 0x36, 0x3c, 0x81, 0xc5, 0x80, 0x9b, 0xf2, 0x52, 0x0e, + 0xac, 0xf4, 0xbc, 0xc2, 0x6d, 0x48, 0x0c, 0x90, 0x41, 0xab, 0xa8, 0xce, 0xdd, 0x72, 0x3a, 0x59, + 0x3a, 0x5c, 0xd4, 0xff, 0x76, 0xef, 0x05, 0x8e, 0x33, 0xf9, 0x63, 0x5c, 0x32, 0x52, 0x8a, 0xf0, + 0xd3, 0x09, 0x77, 0x02, 0x34, 0x25, 0x23, 0x3c, 0x90, 0x01, 0x74, 0xdc, 0x6e, 0x78, 0x58, 0x90, + 0x63, 0x4b, 0x8d, 0x38, 0x7a, 0x4a, 0x3f, 0x19, 0x4f, 0xfb, 0xdb, 0x31, 0x2c, 0xac, 0xd9, 0x84, + 0x4d, 0x27, 0x4f, 0x9b, 0xdc, 0x97, 0xdd, 0xae, 0x6a, 0x97, 0xf3, 0x9e, 0xe6, 0xf2, 0xf9, 0x68, + 0x68, 0xd1, 0x68, 0x4e, 0x1b, 0x78, 0xdd, 0xa6, 0xec, 0xf2, 0xe0, 0xf2, 0xa0, 0xc2, 0x74, 0xff, + 0x62, 0xdd, 0xdf, 0xa0, 0x56, 0x86, 0x09, 0x89, 0x4b, 0x14, 0x61, 0x9a, 0x5a, 0x08, 0x14, 0xb2, + 0xad, 0x6e, 0x5e, 0x4b, 0x55, 0x95, 0x11, 0x21, 0x8f, 0xbb, 0x01, 0xe7, 0x76, 0x18, 0x7a, 0x88, + 0x0d, 0x36, 0xa4, 0x84, 0x0d, 0xbd, 0xa9, 0x1f, 0xf4, 0x78, 0x82, 0x72, 0xc2, 0x0c, 0x4c, 0xa2, + 0x9b, 0x9a, 0xbe, 0xf7, 0x8e, 0xc4, 0xf1, 0xe3, 0xfe, 0xf8, 0x1a, 0x8f, 0xb8, 0xca, 0x2f, 0xb3, + 0xf3, 0xb3, 0xc7, 0xfd, 0x05, 0x30, 0x1a, 0xc9, 0x03, 0x0c, 0xe2, 0x9e, 0xa3, 0x86, 0x45, 0x20, + 0x78, 0x3a, 0xa4, 0xd6, 0xfb, 0xd7, 0xda, 0xe0, 0x1c, 0xe9, 0x85, 0x42, 0xa5, 0xab, 0xdf, 0x69, + 0x8e, 0x45, 0xe6, 0x67, 0x0f, 0xc9, 0xd0, 0x20, 0xfd, 0xf5, 0x84, 0x00, 0xd3, 0x9c, 0xb9, 0x08, + 0xe9, 0x75, 0xfe, 0xe9, 0x69, 0x79, 0x08, 0xb9, 0xc1, 0x3c, 0x46, 0x87, 0x02, 0xfc, 0x72, 0x65, + 0x22, 0x2a, 0x76, 0x59, 0xcb, 0xd0, 0x70, 0xcf, 0xc7, 0xae, 0xd2, 0x34, 0x1d, 0x43, 0x8d, 0x47, + 0x76, 0x10, 0x73, 0xf1, 0x84, 0x4c, 0x8d, 0x61, 0x5b, 0x42, 0x96, 0xdd, 0xa9, 0x1e, 0x47, 0x68, + 0x22, 0xca, 0x3f, 0xfe, 0xb4, 0xfe, 0x80, 0xec, 0xcb, 0x1e, 0xa3, 0xbf, 0x77, 0x84, 0x04, 0x72, + 0x48, 0x7a, 0xcf, 0x0a, 0xda, 0xe8, 0x24, 0xab, 0x58, 0x79, 0x3a, 0x9f, 0x33, 0x02, 0x82, 0xe7, + 0x38, 0xe9, 0x31, 0x2e, 0x7a, 0x65, 0x25, 0x70, 0xfc, 0xe6, 0x93, 0x94, 0xf4, 0xfa, 0x20, 0x2a, + 0xaa, 0x64, 0x85, 0xf7, 0xac, 0x7f, 0xdc, 0xc0, 0x0b, 0xa4, 0x34, 0x94, 0x33, 0xd9, 0x35, 0x35, + 0x4c, 0x84, 0x55, 0x87, 0x7b, 0xa3, 0xb8, 0x55, 0x26, 0xec, 0x1d, 0x8e, 0xf6, 0x5d, 0x0b, 0x52, + 0x37, 0x29, 0x69, 0x18, 0x2d, 0xcf, 0x37, 0xf9, 0x9d, 0x3d, 0x85, 0x4a, 0x81, 0xab, 0xd0, 0x2b, + 0x2a, 0x0a, 0x8e, 0x17, 0xf9, 0x91, 0xfe, 0x91, 0x07, 0xfd, 0xe6, 0x2a, 0x07, 0xa1, 0x53, 0x06, + 0xdf, 0x8f, 0x90, 0xb4, 0xbd, 0xfe, 0x8b, 0x93, 0xd8, 0xa2, 0x4c, 0x6a, 0xba, 0x0a, 0x6d, 0x09, + 0x93, 0xb3, 0xaf, 0xd5, 0x5a, 0xad, 0xac, 0x97, 0x03, 0x1d, 0xea, 0x00, 0x1a, 0x60, 0x24, 0x6a, + 0x5d, 0xcb, 0xa3, 0xd9, 0xd7, 0x67, 0xb3, 0xea, 0x21, 0x49, 0xc7, 0x14, 0x5a, 0x43, 0x68, 0xa6, + 0x2e, 0xd7, 0xbf, 0x42, 0x95, 0x4c, 0x2e, 0xa6, 0x9e, 0xac, 0xf6, 0xf6, 0xb2, 0xb7, 0xe6, 0xa9, + 0x3c, 0x7d, 0xd6, 0x74, 0x31, 0x7b, 0x9c, 0xab, 0x31, 0x33, 0xfc, 0xce, 0x39, 0x9b, 0x28, 0xd6, + 0xd2, 0x97, 0x6c, 0xb4, 0xb4, 0x16, 0xd1, 0x9d, 0xff, 0x17, 0x0b, 0x49, 0x33, 0xec, 0x74, 0x49, + 0x44, 0xa5, 0xa1, 0x24, 0x9a, 0x34, 0x77, 0x50, 0x2c, 0x4a, 0x25, 0x40, 0x64, 0xb3, 0x1a, 0x50, + 0x0d, 0x0b, 0x1e, 0xca, 0xb5, 0x55, 0x68, 0x84, 0x9c, 0x4f, 0xdc, 0x68, 0xea, 0x9b, 0x58, 0x9a, + 0x8d, 0x73, 0x9e, 0x82, 0xff, 0x39, 0xca, 0x76, 0x57, 0x7a, 0x7d, 0x3a, 0x71, 0x8c, 0x61, 0x5e, + 0x20, 0x03, 0x58, 0xd5, 0x9f, 0x75, 0x1a, 0xec, 0xfb, 0x00, 0x81, 0x38, 0xdf, 0x0e, 0x43, 0x80, + 0x05, 0xe0, 0xc9, 0xa0, 0xec, 0xe2, 0x6a, 0x5d, 0xbc, 0x46, 0xb4, 0xce, 0xf2, 0xdc, 0x3e, 0x99, + 0x32, 0xd1, 0x3e, 0xf6, 0xd7, 0x88, 0x1f, 0xb8, 0x6a, 0x10, 0x2e, 0x7a, 0xd1, 0x51, 0xcb, 0xe4, + 0x72, 0xd8, 0x12, 0x5d, 0x81, 0xf8, 0x66, 0x76, 0x94, 0x9f, 0x15, 0xce, 0x62, 0xa6, 0x63, 0x15, + 0x85, 0x89, 0x6c, 0xbb, 0x18, 0x5d, 0xdf, 0x67, 0xdc, 0xc6, 0x23, 0xae, 0xb9, 0xa6, 0x0b, 0x65, + 0xf4, 0xb0, 0xd6, 0x16, 0xf4, 0xae, 0xbe, 0x03, 0x04, 0xc6, 0xfa, 0x2a, 0x67, 0x07, 0x53, 0x0d, + 0xb3, 0x9b, 0x73, 0x59, 0xa5, 0x17, 0x0c, 0x0b, 0x15, 0x25, 0xda, 0x3f, 0xe1, 0x89, 0x89, 0x09, + 0xe6, 0x50, 0xec, 0x38, 0xc5, 0x4e, 0xae, 0xbd, 0xe7, 0x09, 0x7a, 0xc5, 0x3a, 0x09, 0xa5, 0xac, + 0x22, 0x78, 0xca, 0x7b, 0xca, 0xe0, 0xee, 0x74, 0x61, 0xdb, 0xf5, 0xaf, 0xfb, 0x31, 0x08, 0x84, + 0xb7, 0x63, 0xa6, 0x25, 0xc2, 0x0f, 0x2a, 0x6d, 0xf4, 0x4c, 0xf4, 0xae, 0x71, 0xe5, 0x9b, 0x1f, + 0xd5, 0x1b, 0x76, 0x7b, 0xc7, 0xa1, 0x84, 0xdb, 0xa6, 0x4a, 0x82, 0xbe, 0x0c, 0x5d, 0xb4, 0x3a, + 0x81, 0xb8, 0x75, 0x76, 0x72, 0xd8, 0xd4, 0x51, 0x86, 0x90, 0x28, 0x0f, 0xe6, 0xc8, 0xe3, 0xc3, + 0xaf, 0x92, 0xa8, 0x36, 0xb2, 0x17, 0x65, 0x27, 0x87, 0xca, 0xe5, 0xdd, 0xea, 0x9a, 0x56, 0xaf, + 0xf3, 0x1b, 0xa6, 0xd3, 0xbc, 0xb1, 0x60, 0xb4, 0x1c, 0xd1, 0xff, 0x6f, 0x25, 0x3e, 0x4d, 0x62, + 0x14, 0x25, 0x27, 0xbd, 0x41, 0x76, 0xea, 0xeb, 0xb0, 0x01, 0xaa, 0xce, 0x4f, 0xe4, 0xd9, 0x0c, + 0x6e, 0x4d, 0xe8, 0x83, 0x19, 0xf3, 0x34, 0x65, 0x47, 0x4b, 0x74, 0x91, 0x6b, 0xac, 0xcc, 0x2c, + 0xe3, 0x6e, 0xef, 0x22, 0x74, 0x29, 0x9a, 0xc9, 0xe3, 0x58, 0xfa, 0xe0, 0x92, 0x0e, 0x65, 0x74, + 0x58, 0x98, 0x2f, 0x61, 0x72, 0x29, 0xd3, 0x2e, 0x6d, 0x72, 0x5b, 0xc4, 0x45, 0x15, 0xd9, 0xca, + 0xfe, 0x35, 0x3c, 0xf0, 0x18, 0xfc, 0xa5, 0xa9, 0x56, 0x4d, 0x80, 0xc9, 0xcd, 0xb5, 0x2c, 0x7c, + 0x02, 0xff, 0x22, 0x4a, 0x1b, 0xef, 0x03, 0xe6, 0xd8, 0xfd, 0x68, 0x9d, 0x32, 0xdc, 0x92, 0x9f, + 0x83, 0xef, 0xfb, 0xcc, 0xad, 0xfa, 0x27, 0x40, 0x2f, 0x17, 0x70, 0x5c, 0x0b, 0x78, 0xac, 0x5f, + 0x9f, 0x72, 0xdb, 0x02, 0x24, 0xe6, 0x15, 0x1c, 0x35, 0xa3, 0xff, 0xff, 0x5c, 0xaf, 0x2e, 0x80, + 0x03, 0x6f, 0x1f, 0x68, 0x35, 0x5d, 0x5a, 0xf3, 0x9e, 0x1e, 0xa5, 0x72, 0x50, 0x45, 0x43, 0x4e, + 0x4a, 0x1e, 0x7f, 0x29, 0x39, 0xf7, 0xa8, 0x6d, 0x44, 0x40, 0x7e, 0x09, 0x53, 0x25, 0xb8, 0x82, + 0xec, 0xa6, 0x79, 0x73, 0xf2, 0x9c, 0x57, 0xd8, 0xd6, 0x1b, 0x80, 0x84, 0x63, 0x47, 0xcb, 0xa8, + 0x76, 0xd4, 0x4f, 0x18, 0xeb, 0xa0, 0xc8, 0xdd, 0xb4, 0x1d, 0xc5, 0xb0, 0x4d, 0x11, 0xaa, 0xdc, + 0x94, 0x73, 0xf9, 0x33, 0x68, 0x43, 0x77, 0x71, 0x08, 0xde, 0xa1, 0x80, 0xeb, 0x42, 0xad, 0x44, + 0x34, 0xf3, 0x13, 0x05, 0x7c, 0x1c, 0x9c, 0x34, 0xc6, 0xb5, 0x8f, 0xe7, 0xb3, 0xf8, 0x75, 0x0a, + 0x28, 0x8b, 0x6b, 0x5f, 0xc8, 0xd5, 0x4e, 0x40, 0xfc, 0xc1, 0x20, 0xf4, 0xe9, 0x90, 0x74, 0x4c, + 0x84, 0x4b, 0x10, 0xd8, 0x6f, 0xbf, 0xc7, 0x3c, 0xab, 0x3f, 0xec, 0xa2, 0xbf, 0x09, 0xf4, 0xf4, + 0x35, 0xaa, 0xbb, 0x02, 0x21, 0x86, 0x83, 0xc6, 0x06, 0x9c, 0x10, 0x5c, 0x65, 0xc6, 0x06, 0x7a, + 0xa7, 0xd5, 0x71, 0x2d, 0x5b, 0xc4, 0xdf, 0x70, 0xe3, 0x46, 0x81, 0x2c, 0x98, 0xd0, 0xb3, 0x72, + 0x9c, 0xe4, 0xfd, 0xec, 0x69, 0x49, 0x57, 0x9c, 0xf0, 0x49, 0x55, 0x31, 0x19, 0xaa, 0xf7, 0xc8, + 0x53, 0xe5, 0xb6, 0xc4, 0xd7, 0x3c, 0xab, 0xc7, 0x98, 0x4b, 0x63, 0x3b, 0xd6, 0x7f, 0x98, 0xef, + 0x1e, 0x0d, 0xa8, 0xaa, 0xca, 0x79, 0xb4, 0xb0, 0x89, 0x50, 0xbf, 0x6f, 0x42, 0x9b, 0x16, 0x66, + 0x86, 0xf6, 0x6a, 0x4a, 0x64, 0x9b, 0x1a, 0x9d, 0x33, 0x17, 0x2e, 0x4e, 0xdc, 0xa2, 0x7a, 0xfa, + 0x17, 0xca, 0x33, 0x9e, 0xe7, 0xdd, 0x0c, 0x13, 0x3b, 0xf2, 0xc9, 0x8d, 0xc6, 0xae, 0x2d, 0x6f, + 0x3e, 0xdc, 0xcb, 0x7f, 0xdd, 0xf0, 0x1e, 0x1b, 0xa3, 0xc7, 0x8f, 0x61, 0x94, 0xfb, 0x8c, 0xdf, + 0xce, 0x5a, 0xac, 0x2b, 0x40, 0x98, 0x55, 0x93, 0xe8, 0xb5, 0x2a, 0x4c, 0xa0, 0x20, 0x00, 0x36, + 0x2f, 0x17, 0x7f, 0x63, 0x48, 0xf6, 0xbc, 0x3b, 0xc2, 0x20, 0x17, 0x1a, 0x56, 0x3d, 0x68, 0x6d, + 0xd7, 0x75, 0xd1, 0x9b, 0xf1, 0x62, 0x2d, 0xf9, 0x98, 0xe8, 0x7f, 0xf8, 0x63, 0xf8, 0x9f, 0x3c, + 0x76, 0xd4, 0x91, 0x1a, 0x9b, 0x73, 0x30, 0xd8, 0xf6, 0xf5, 0x58, 0xac, 0xb4, 0x29, 0xda, 0xa1, + 0x66, 0xfe, 0x1f, 0x49, 0x0f, 0x66, 0xa1, 0x4f, 0x31, 0x3b, 0x65, 0x93, 0xf8, 0x19, 0x2d, 0xe0, + 0x8b, 0x79, 0xcf, 0x4a, 0x20, 0x2c, 0x52, 0x61, 0x37, 0x7c, 0xae, 0x8a, 0x52, 0xd4, 0x66, 0x50, + 0xa7, 0xd9, 0x20, 0x96, 0x3f, 0xa5, 0x17, 0x31, 0x93, 0x29, 0xbc, 0xdb, 0x18, 0x6f, 0xdb, 0xc6, + 0x0a, 0xa6, 0xb0, 0x0d, 0x41, 0xc1, 0x37, 0xab, 0x1e, 0xa4, 0x75, 0xe7, 0x33, 0x9d, 0x1a, 0x90, + 0x29, 0x6e, 0x4e, 0x85, 0x57, 0x4b, 0x64, 0x0d, 0x7e, 0x98, 0x19, 0xa8, 0x1a, 0x84, 0xc9, 0x2b, + 0xac, 0x83, 0x66, 0x28, 0x09, 0x2c, 0x8e, 0x16, 0x91, 0x13, 0xf5, 0x1a, 0x5e, 0xcc, 0xc7, 0x60, + 0xfb, 0xea, 0x8f, 0xa5, 0x77, 0xf4, 0xa3, 0x31, 0xb8, 0x5f, 0x7a, 0x0a, 0xd7, 0x19, 0x13, 0x17, + 0x5c, 0xc3, 0x64, 0x21, 0xba, 0x27, 0xef, 0xc9, 0xf9, 0xab, 0x51, 0x8d, 0x5a, 0x44, 0x4c, 0x79, + 0x34, 0x05, 0xe0, 0xf7, 0x5b, 0xc8, 0x8e, 0xe7, 0xcf, 0x91, 0xe9, 0x35, 0x75, 0x0b, 0xc5, 0x5b, + 0xad, 0xbd, 0x2e, 0xe6, 0xe2, 0x42, 0x70, 0x3d, 0x6d, 0xc4, 0x4b, 0xe1, 0x9c, 0x9c, 0x22, 0x9b, + 0x9e, 0x85, 0x66, 0x85, 0x81, 0xf7, 0x3e, 0xf5, 0x59, 0x79, 0x6d, 0x2e, 0xc8, 0x80, 0x12, 0xd5, + 0x53, 0xc7, 0x56, 0x61, 0xb2, 0xf9, 0x94, 0x86, 0xe3, 0xfd, 0x2b, 0x99, 0xdc, 0xeb, 0xb8, 0xeb, + 0x73, 0xe0, 0xd7, 0xe2, 0xdc, 0xe8, 0x5d, 0x9e, 0x13, 0x5f, 0x66, 0x4e, 0x89, 0x4b, 0x41, 0x3d, + 0xdf, 0xb8, 0x70, 0xe6, 0xce, 0xb3, 0x54, 0x91, 0xec, 0x53, 0x97, 0x6c, 0x01, 0xb2, 0xc8, 0x89, + 0x9d, 0xad, 0x24, 0xfc, 0x58, 0x63, 0xc8, 0x4b, 0x39, 0xfb, 0xe4, 0x6a, 0x76, 0x9c, 0x11, 0x06, + 0x37, 0x73, 0xc0, 0x35, 0x9a, 0x36, 0x62, 0x70, 0xe9, 0xb6, 0xc6, 0x9f, 0x53, 0xcf, 0x5d, 0x39, + 0x13, 0x48, 0x49, 0x5c, 0xbb, 0xfd, 0x05, 0x2f, 0xb5, 0x00, 0x16, 0xe6, 0x59, 0x8c, 0x05, 0x86, + 0xaf, 0x25, 0xe5, 0x4d, 0x64, 0x6f, 0x73, 0x6b, 0x8e, 0xad, 0x06, 0x37, 0x03, 0xaa, 0xa9, 0x0e, + 0x39, 0x73, 0xac, 0xdd, 0x52, 0x5c, 0xea, 0x1e, 0x07, 0x6a, 0x7a, 0x58, 0x32, 0x84, 0xbb, 0x78, + 0xa4, 0xa9, 0x7c, 0xfa, 0xcc, 0xa8, 0xa0, 0x10, 0xcf, 0x8c, 0xbd, 0x36, 0x34, 0x03, 0x6d, 0xe8, + 0xba, 0xd5, 0x17, 0x88, 0x51, 0xb1, 0x8f, 0xd8, 0x8d, 0x4a, 0xa4, 0xf8, 0x19, 0xb6, 0x69, 0x68, + 0xa8, 0x03, 0x89, 0x18, 0x99, 0xdb, 0x82, 0xd9, 0x78, 0x97, 0x6e, 0x31, 0xcb, 0xc3, 0x18, 0x8b, + 0xc9, 0x2a, 0x3c, 0x4d, 0x64, 0x95, 0x88, 0x86, 0x4a, 0xca, 0xc3, 0xa5, 0x9a, 0x9b, 0xf4, 0xcf, + 0x73, 0x0a, 0xb2, 0xd8, 0x33, 0x5a, 0x02, 0x84, 0xaa, 0xdd, 0x4f, 0xc6, 0xdf, 0x68, 0xca, 0xe0, + 0x29, 0x73, 0x30, 0xd0, 0xe6, 0x9e, 0x5a, 0xb6, 0xb4, 0x4f, 0x09, 0xa8, 0x19, 0x3f, 0x90, 0xba, + 0x73, 0x8c, 0xa5, 0xb8, 0x7d, 0xc4, 0x82, 0xb5, 0xfa, 0x3c, 0x00, 0x1b, 0xac, 0x94, 0x28, 0x89, + 0x43, 0x0d, 0xbd, 0x88, 0x9d, 0xc7, 0xe4, 0xd9, 0xdc, 0x62, 0x8a, 0x5d, 0x39, 0x45, 0xa1, 0x12, + 0xc9, 0xb0, 0x2f, 0x53, 0xf6, 0xd9, 0xee, 0xd6, 0x7a, 0xcf, 0x2f, 0xab, 0xdb, 0xa3, 0xec, 0x4a, + 0x69, 0xa3, 0x77, 0x73, 0x84, 0x9f, 0x4b, 0x27, 0xfc, 0x01, 0xe1, 0x95, 0x92, 0xc7, 0x0c, 0x88, + 0x88, 0xaa, 0x6f, 0xcf, 0x75, 0xd7, 0x1f, 0xb5, 0xb5, 0xaf, 0xca, 0x77, 0x28, 0x6e, 0xa8, 0xd1, + 0x06, 0x25, 0x04, 0x32, 0xe9, 0x47, 0x28, 0x35, 0xab, 0xaf, 0x7b, 0x0b, 0x24, 0x0f, 0xbf, 0x58, + 0xde, 0xb8, 0x24, 0x12, 0xeb, 0x74, 0xf9, 0x40, 0xc6, 0xcd, 0x24, 0x2d, 0x62, 0x7b, 0xbf, 0x35, + 0x76, 0xf2, 0x6a, 0x62, 0xe2, 0x5a, 0x25, 0x13, 0x63, 0x52, 0x4d, 0x28, 0x55, 0x59, 0x6e, 0x14, + 0x5c, 0x77, 0x0d, 0x39, 0xfd, 0x5d, 0xbe, 0xe4, 0x0f, 0x51, 0x2a, 0xc1, 0xe2, 0x04, 0x9a, 0x83, + 0x6f, 0x78, 0x4b, 0x44, 0x70, 0xc2, 0x4b, 0x97, 0xae, 0xfe, 0x87, 0x85, 0xc0, 0xb8, 0x82, 0x95, + 0xc3, 0x8e, 0x2a, 0x63, 0x05, 0x1a, 0x30, 0x9f, 0xcd, 0x95, 0x66, 0xc0, 0x1d, 0x37, 0x80, 0x41, + 0x61, 0xe7, 0xea, 0xb8, 0x37, 0x61, 0x9b, 0x4b, 0xe8, 0xec, 0x01, 0x48, 0x3f, 0xbd, 0xfb, 0x3a, + 0x0d, 0x7a, 0x2c, 0x5c, 0x27, 0xed, 0x8e, 0x14, 0xa1, 0x43, 0xd7, 0x22, 0x5e, 0xe4, 0x76, 0xe0, + 0x78, 0xb3, 0x09, 0xeb, 0xf3, 0x10, 0xcf, 0x60, 0x9a, 0x88, 0xb0, 0xaa, 0xa8, 0x87, 0x0a, 0xf5, + 0xd6, 0xf5, 0x42, 0xbc, 0x82, 0x89, 0x55, 0xd1, 0x03, 0x98, 0xa6, 0x47, 0x76, 0x03, 0x62, 0x5d, + 0x19, 0xa5, 0x21, 0x99, 0x46, 0x12, 0x5d, 0x26, 0x17, 0xc4, 0xbe, 0x3c, 0x86, 0xac, 0xe3, 0x17, + 0xc7, 0xf5, 0x5d, 0x88, 0x0f, 0x45, 0x0b, 0xf2, 0x71, 0x31, 0xe3, 0x7b, 0x15, 0xc1, 0x98, 0x51, + 0xb0, 0xd2, 0xe3, 0x78, 0x50, 0x3d, 0x97, 0x55, 0x9d, 0x74, 0xc3, 0x1c, 0x47, 0x54, 0xb4, 0xb2, + 0xfd, 0xe6, 0x7d, 0xa1, 0x09, 0x58, 0xe6, 0x1e, 0x99, 0xb3, 0x2d, 0xe3, 0xe7, 0x84, 0xdc, 0xd2, + 0xa0, 0x92, 0x58, 0x00, 0x6c, 0x1f, 0x0c, 0xd5, 0xe1, 0x3e, 0x75, 0x77, 0x92, 0x34, 0x94, 0xac, + 0x2f, 0x0c, 0xfb, 0xf8, 0x66, 0x52, 0x86, 0x61, 0xcf, 0x64, 0x13, 0xf8, 0xa0, 0x3e, 0x0e, 0xc8, + 0xf0, 0xed, 0xeb, 0xa0, 0x60, 0x9f, 0x19, 0xdc, 0x3c, 0x79, 0xfe, 0x79, 0x6a, 0x96, 0x5b, 0x2e, + 0x24, 0x12, 0x56, 0xc9, 0xf3, 0x66, 0x81, 0x8f, 0x50, 0xd7, 0x5c, 0x5f, 0x7a, 0x42, 0xec, 0x5a, + 0xa0, 0x22, 0xc3, 0x07, 0xb5, 0x95, 0xdc, 0x3f, 0x2b, 0xca, 0x40, 0x3a, 0x23, 0xac, 0xdd, 0x1d, + 0x44, 0x2b, 0xb4, 0x09, 0x3c, 0x1b, 0xd5, 0xee, 0xe0, 0xc4, 0x19, 0x57, 0x36, 0x13, 0xf2, 0x2e, + 0xb8, 0xf4, 0xfd, 0xc5, 0x76, 0x69, 0xa8, 0xc9, 0x4f, 0x52, 0x40, 0x8a, 0x86, 0x71, 0xf4, 0xc1, + 0x8d, 0x11, 0xcf, 0xba, 0xc7, 0x60, 0x7e, 0xc4, 0xb1, 0x96, 0xa3, 0x0d, 0xc4, 0x71, 0x69, 0x07, + 0x66, 0x13, 0xa1, 0x10, 0x73, 0x98, 0xb4, 0xe8, 0xf4, 0x77, 0x39, 0xe6, 0xe2, 0x00, 0x1b, 0x1d, + 0x09, 0x4a, 0x74, 0xaa, 0x62, 0xba, 0x36, 0x60, 0x83, 0xa5, 0xad, 0xfa, 0xfb, 0xac, 0xde, 0x25, + 0x0f, 0x7d, 0x63, 0xc6, 0x8f, 0xa5, 0xd3, 0x52, 0xec, 0xc6, 0xde, 0x56, 0x18, 0x95, 0x3d, 0x3b, + 0xdf, 0xd8, 0x0e, 0x0e, 0x89, 0xa1, 0xb0, 0xc6, 0x94, 0x02, 0x5a, 0x7f, 0x83, 0x32, 0x02, 0x1e, + 0x31, 0x2e, 0x96, 0x5f, 0xb6, 0xb7, 0x39, 0x65, 0x94, 0xbc, 0xf2, 0x81, 0x7b, 0xd6, 0xc6, 0xcc, + 0x7f, 0x0a, 0x26, 0x26, 0x0a, 0x9b, 0xbe, 0xa8, 0x39, 0x7d, 0xc3, 0x76, 0x33, 0x82, 0x83, 0x57, + 0x8b, 0x5c, 0x25, 0xf7, 0x3b, 0xb1, 0x93, 0xa8, 0xd7, 0x72, 0x2d, 0x8e, 0xf2, 0xdc, 0x16, 0xb4, + 0x37, 0x1f, 0x24, 0x2b, 0x27, 0xe2, 0x6d, 0x7c, 0xed, 0x4c, 0xde, 0x1e, 0xe7, 0x61, 0xd9, 0x1b, + 0xc4, 0x78, 0xc9, 0xa2, 0x87, 0x5e, 0xed, 0xfa, 0x76, 0x5e, 0x25, 0x17, 0xd6, 0x5c, 0x61, 0xc6, + 0x2c, 0x0a, 0x33, 0xfe, 0xc7, 0x47, 0xa3, 0x23, 0xa8, 0x07, 0x00, 0x0a, 0x52, 0x8a, 0xca, 0xd4, + 0x7c, 0xc5, 0xe4, 0xf9, 0x79, 0x8d, 0xd8, 0x69, 0x79, 0x5a, 0x32, 0x6e, 0x19, 0x06, 0x5c, 0x22, + 0xfe, 0x6e, 0xb9, 0x95, 0x07, 0x7b, 0x04, 0xdd, 0xbd, 0x09, 0x07, 0xa4, 0x86, 0x02, 0xd5, 0xcc, + 0xdb, 0xef, 0xd4, 0xcb, 0x33, 0xce, 0xfd, 0x88, 0xc2, 0x36, 0x15, 0x76, 0xed, 0xe2, 0xa9, 0x23, + 0xee, 0x23, 0x3e, 0xaf, 0x69, 0x0f, 0xb6, 0x43, 0x5e, 0x44, 0x3c, 0x37, 0x60, 0xe6, 0xe6, 0xe8, + 0xed, 0x2b, 0x08, 0xf9, 0x63, 0x50, 0x0b, 0x86, 0x96, 0x07, 0xaa, 0xee, 0xa7, 0xae, 0x92, 0x8a, + 0x5c, 0x4f, 0xdc, 0x74, 0x0f, 0xa2, 0xbd, 0x82, 0x46, 0x11, 0xbb, 0x36, 0x7d, 0x66, 0xf6, 0x88, + 0x9b, 0x6c, 0x0d, 0x59, 0xcb, 0x99, 0x0b, 0xc2, 0x81, 0x88, 0xc7, 0xf3, 0x97, 0x2c, 0xae, 0x3a, + 0x74, 0x3e, 0x32, 0x2b, 0x36, 0xd8, 0x43, 0xdc, 0x36, 0x07, 0x07, 0x49, 0xae, 0x36, 0x48, 0xad, + 0x81, 0x76, 0xcd, 0xd4, 0xde, 0x8f, 0xb6, 0x8e, 0x8b, 0xf3, 0x3c, 0x22, 0xbf, 0xad, 0xad, 0x26, + 0x9d, 0x37, 0xd7, 0xb3, 0x1c, 0x22, 0x9e, 0x4f, 0xaf, 0x86, 0x4b, 0xa6, 0x66, 0xe4, 0x3e, 0x91, + 0xdb, 0xfe, 0xf0, 0x60, 0x49, 0x92, 0x83, 0x8b, 0xa2, 0x56, 0xb7, 0xac, 0x62, 0x2b, 0xfd, 0x0c, + 0xde, 0x51, 0x26, 0x81, 0xf6, 0x8a, 0x8b, 0x5e, 0x41, 0xd1, 0x86, 0x48, 0x8c, 0x69, 0x44, 0x28, + 0xc8, 0xdd, 0x74, 0xe6, 0xbf, 0xdf, 0x69, 0x5a, 0xcb, 0xd2, 0x0b, 0xcc, 0x84, 0x45, 0x17, 0xc7, + 0x2c, 0x14, 0xf6, 0x79, 0x9d, 0xac, 0x03, 0x8f, 0x11, 0x8d, 0xf3, 0xef, 0x79, 0xa3, 0x00, 0xaf, + 0xcd, 0x8c, 0x57, 0xe2, 0x0f, 0x31, 0x77, 0x9f, 0x5e, 0x59, 0xcb, 0x50, 0xd2, 0xdf, 0x36, 0x90, + 0xb0, 0x9e, 0xbe, 0xf8, 0xc0, 0xac, 0xea, 0xa2, 0x8f, 0xae, 0xfd, 0x06, 0xe8, 0x19, 0x0b, 0x06, + 0xec, 0x86, 0x6c, 0xd2, 0x41, 0xab, 0x60, 0x7f, 0x76, 0xb7, 0x88, 0x1e, 0xcc, 0xab, 0x5a, 0x46, + 0x43, 0x4b, 0x94, 0x33, 0xa6, 0x5b, 0x5d, 0x6e, 0xb6, 0xa0, 0x78, 0x99, 0xf6, 0x15, 0xb4, 0x07, + 0x71, 0xbc, 0xd1, 0x9f, 0x0e, 0xa8, 0x1e, 0xa9, 0x73, 0x60, 0x8e, 0x76, 0xe8, 0x8d, 0x01, 0x91, + 0x4f, 0x18, 0x43, 0xab, 0x11, 0xe8, 0x6b, 0xa6, 0x02, 0xe3, 0x8e, 0xe4, 0xca, 0x7f, 0x79, 0x52, + 0x44, 0x47, 0x05, 0x1e, 0x75, 0x72, 0x00, 0xdf, 0x0c, 0x25, 0x4d, 0xaf, 0xc7, 0x61, 0x2f, 0x76, + 0x29, 0x95, 0x5c, 0x0d, 0x92, 0x67, 0xd9, 0xc7, 0x8a, 0xe8, 0x30, 0x68, 0x3e, 0x48, 0x0d, 0x17, + 0x5a, 0x65, 0x70, 0xce, 0x84, 0xba, 0x23, 0x81, 0x42, 0xd2, 0x01, 0x23, 0x02, 0xf0, 0xb8, 0x2a, + 0x6f, 0xa3, 0xc3, 0x97, 0x42, 0x18, 0xcd, 0xab, 0x37, 0x48, 0x55, 0x4b, 0x5a, 0x1a, 0xd5, 0x23, + 0xf8, 0xe8, 0x2e, 0xc7, 0xb1, 0x05, 0x37, 0xac, 0xb7, 0x4a, 0xe9, 0xfb, 0xc2, 0xb6, 0x80, 0x82, + 0x48, 0xd6, 0x71, 0xaa, 0xe8, 0x78, 0xca, 0x8b, 0x5e, 0x69, 0x5a, 0x02, 0x89, 0x5b, 0x0c, 0x67, + 0x7a, 0x93, 0x05, 0x31, 0x23, 0x82, 0x4e, 0xf5, 0x59, 0xf3, 0xf4, 0xc2, 0xb1, 0x47, 0xc6, 0xd8, + 0xc1, 0xcd, 0x2b, 0x4b, 0x59, 0x1a, 0xcd, 0xdd, 0x03, 0x52, 0x14, 0x28, 0x94, 0xf6, 0xdc, 0xb2, + 0xfd, 0x4e, 0xa5, 0x5e, 0xeb, 0x03, 0x4e, 0x7c, 0x4b, 0x9a, 0x23, 0x4f, 0x8c, 0xb4, 0xf3, 0x7f, + 0x3e, 0x84, 0x04, 0x70, 0x6f, 0x04, 0x35, 0x2a, 0x66, 0xcf, 0xab, 0x51, 0x3f, 0xef, 0xb2, 0x5c, + 0xba, 0xaa, 0x88, 0xf4, 0x80, 0xb1, 0x35, 0x83, 0xdc, 0xe4, 0xb7, 0xa8, 0xe9, 0x5e, 0x08, 0x91, + 0x10, 0xf9, 0x7b, 0x97, 0x54, 0x60, 0x40, 0x83, 0xc8, 0xb8, 0xa8, 0x6c, 0xc3, 0x19, 0xf2, 0xbb, + 0xc6, 0xea, 0xa2, 0x5e, 0x5f, 0x56, 0xba, 0xfc, 0x46, 0x32, 0xa7, 0x78, 0x0a, 0x8e, 0x0d, 0x2f, + 0x74, 0xc4, 0x76, 0x01, 0x7f, 0x01, 0x83, 0xac, 0xa6, 0x96, 0x39, 0xff, 0xe3, 0x1f, 0x63, 0x26, + 0x8d, 0x33, 0xb2, 0x22, 0xab, 0x97, 0x7d, 0xcf, 0x6b, 0x88, 0x41, 0x3c, 0x70, 0x5a, 0x73, 0x70, + 0x2d, 0x72, 0x9a, 0xcf, 0x0d, 0xc1, 0x03, 0x8b, 0x81, 0x43, 0xa0, 0xd5, 0xac, 0xa7, 0xab, 0xfb, + 0xc4, 0x6b, 0xf7, 0x06, 0xf6, 0x4a, 0xff, 0x2f, 0xad, 0x42, 0x50, 0xa9, 0x88, 0x02, 0x98, 0xf3, + 0xd2, 0x6e, 0xc6, 0xe0, 0x2b, 0xf9, 0x2b, 0x8e, 0x6f, 0x4e, 0x47, 0x85, 0xe2, 0x67, 0xfb, 0xd7, + 0xb9, 0x17, 0x6c, 0x9e, 0x26, 0xde, 0x56, 0xce, 0xf0, 0x77, 0xaa, 0xe8, 0xfd, 0x9c, 0x60, 0x34, + 0x92, 0x36, 0x3d, 0xfc, 0xf6, 0xc6, 0xf0, 0xbd, 0xb7, 0x59, 0x96, 0x3d, 0xdd, 0xcf, 0x93, 0x30, + 0xf3, 0xed, 0x3c, 0x69, 0xa0, 0x4e, 0xa8, 0x02, 0xcf, 0x87, 0xde, 0x94, 0x23, 0x1e, 0x68, 0xe6, + 0xb6, 0x4f, 0xee, 0x59, 0xdc, 0xfe, 0x1f, 0xc9, 0xff, 0x02, 0x02, 0x0b, 0x10, 0x23, 0xee, 0xde, + 0xe0, 0x18, 0x79, 0x78, 0x6f, 0x0f, 0x19, 0x8c, 0x8c, 0x8e, 0x2f, 0x7f, 0x22, 0xab, 0xab, 0x37, + 0x89, 0xc7, 0x4b, 0x85, 0x68, 0x66, 0xd8, 0x37, 0x23, 0x17, 0x71, 0xc5, 0x4b, 0x6d, 0xe6, 0x92, + 0xe5, 0xbf, 0xbc, 0x1f, 0xa4, 0x34, 0x19, 0x70, 0x59, 0x0b, 0x47, 0x4f, 0xa5, 0x60, 0x75, 0xb2, + 0xc8, 0x11, 0x28, 0x22, 0x53, 0xfd, 0x6f, 0xf0, 0x22, 0xb0, 0x5b, 0xed, 0x8b, 0xd0, 0xbd, 0x54, + 0xd3, 0x0f, 0x89, 0xf7, 0xd8, 0xde, 0x14, 0x15, 0x57, 0x2e, 0xf8, 0xe9, 0x54, 0xd9, 0xde, 0x5e, + 0xa8, 0x3f, 0x0e, 0xf1, 0xbe, 0x16, 0x35, 0x37, 0x11, 0xab, 0xc2, 0xaa, 0x2e, 0x29, 0x5f, 0xb2, + 0x93, 0x70, 0x73, 0x10, 0x03, 0xa1, 0x4c, 0x79, 0x0d, 0xd7, 0x62, 0x18, 0x41, 0xcc, 0x6d, 0x17, + 0x03, 0x5f, 0x75, 0xb0, 0x7d, 0x11, 0x18, 0x46, 0x4f, 0x3c, 0xf0, 0xdc, 0x1b, 0x28, 0xc9, 0xbb, + 0x62, 0x49, 0x4d, 0xfc, 0xba, 0xae, 0xff, 0xf3, 0x12, 0x9e, 0x4c, 0x86, 0x17, 0x38, 0x2e, 0x45, + 0x48, 0xc0, 0x9b, 0x27, 0x3e, 0x7b, 0x91, 0xd2, 0xa0, 0xad, 0x77, 0x69, 0x22, 0x56, 0xad, 0x0b, + 0xd3, 0xc6, 0x50, 0x57, 0xd5, 0xc7, 0x57, 0x35, 0xff, 0xb5, 0x5d, 0xb4, 0xa0, 0x05, 0x31, 0xf2, + 0x55, 0x50, 0x98, 0xf3, 0x99, 0xbc, 0x23, 0x66, 0x64, 0x20, 0x1b, 0xaf, 0xa3, 0xdb, 0xc7, 0xe3, + 0xdc, 0xd4, 0xb3, 0x73, 0x1a, 0xf1, 0x9d, 0xd9, 0x8a, 0xab, 0x85, 0x26, 0xf9, 0xab, 0xf4, 0xec, + 0xca, 0x35, 0x08, 0x0e, 0x7b, 0xca, 0xf9, 0xa9, 0xb0, 0x42, 0xca, 0x1c, 0x33, 0xec, 0x97, 0x15, + 0xad, 0x28, 0x8f, 0x01, 0x50, 0xc1, 0xdd, 0xb5, 0xcc, 0xd2, 0xf9, 0xb6, 0x03, 0xf8, 0x5b, 0x41, + 0xf6, 0x98, 0x55, 0xf6, 0xfe, 0xe9, 0x4a, 0x11, 0xac, 0xed, 0xc1, 0x18, 0x95, 0xeb, 0x7b, 0x7c, + 0xf6, 0xc8, 0x10, 0xe5, 0xfd, 0x0d, 0x78, 0xcf, 0x73, 0x20, 0xab, 0xed, 0xad, 0x89, 0x29, 0x58, + 0x7e, 0x47, 0x0d, 0x0e, 0x19, 0x2b, 0xc6, 0x93, 0x46, 0x5d, 0xb0, 0xd1, 0x73, 0x8c, 0x41, 0x0a, + 0xb4, 0x38, 0x04, 0x1b, 0x14, 0x02, 0xf5, 0x23, 0x08, 0xea, 0xac, 0x2f, 0x50, 0xfd, 0x13, 0xe8, + 0xb7, 0xbc, 0x4c, 0x57, 0xfa, 0x12, 0xc1, 0x47, 0x48, 0x9d, 0xe3, 0xff, 0x69, 0x35, 0x22, 0xc0, + 0x47, 0x83, 0x1d, 0x25, 0x6c, 0x2c, 0x16, 0xe4, 0x0f, 0x43, 0x69, 0x7b, 0xa0, 0x4d, 0x5e, 0x53, + 0x6f, 0x35, 0xcd, 0x3c, 0xcb, 0x89, 0x2f, 0x9e, 0xdf, 0x88, 0x6d, 0xeb, 0xda, 0xcd, 0x91, 0x22, + 0xf9, 0xd3, 0x13, 0xb1, 0xd4, 0xfe, 0x15, 0xe2, 0xcb, 0x14, 0x5d, 0x41, 0x79, 0xce, 0xbb, 0x71, + 0xb0, 0x96, 0xba, 0x07, 0x36, 0xa6, 0xe2, 0x91, 0xda, 0x19, 0xe0, 0x8d, 0x0b, 0xcb, 0x42, 0xd0, + 0x6c, 0xcf, 0x44, 0xa6, 0x8e, 0x1b, 0x9c, 0x2b, 0x02, 0xdb, 0xec, 0xd0, 0x5b, 0xbe, 0x30, 0x8a, + 0xd0, 0x1c, 0x61, 0x02, 0x2a, 0x9c, 0x1a, 0xc8, 0x71, 0x47, 0xa3, 0x49, 0x45, 0x92, 0x4c, 0xea, + 0xd4, 0x9c, 0x96, 0xf2, 0x6c, 0xf0, 0x53, 0x63, 0xcc, 0x70, 0xe2, 0x38, 0x0f, 0xc3, 0x22, 0xd5, + 0x91, 0x27, 0xc3, 0x98, 0x16, 0xb8, 0x1d, 0xbf, 0x13, 0x69, 0x77, 0x97, 0x87, 0x87, 0x23, 0xc5, + 0xe1, 0x66, 0x94, 0x4c, 0x9f, 0x27, 0x32, 0x88, 0x3d, 0xef, 0xfb, 0xcc, 0x71, 0x4f, 0x24, 0xb1, + 0x06, 0xdb, 0xc3, 0x88, 0x33, 0xc5, 0x47, 0xca, 0xbc, 0x16, 0x6e, 0xdc, 0x55, 0x75, 0x2a, 0xa1, + 0x28, 0x73, 0xb3, 0x7e, 0xe8, 0x1c, 0x23, 0x2a, 0xee, 0x69, 0x5f, 0xf8, 0x5c, 0x79, 0x73, 0x87, + 0x7f, 0x4d, 0x72, 0xba, 0x7e, 0x5e, 0xdc, 0x47, 0xba, 0xc4, 0x83, 0xd7, 0x62, 0x9c, 0x89, 0x62, + 0xea, 0xbe, 0xc5, 0x45, 0xee, 0xa3, 0xde, 0x89, 0x03, 0x16, 0x1f, 0xee, 0x48, 0x94, 0x9e, 0x5a, + 0xb4, 0x06, 0x70, 0x3d, 0xe0, 0x58, 0xe4, 0xd6, 0xc7, 0xf3, 0xdc, 0x31, 0xa1, 0xa2, 0x9f, 0x93, + 0x41, 0x45, 0x98, 0x23, 0xc8, 0x69, 0x34, 0x9e, 0x8e, 0xf5, 0x01, 0x61, 0x4a, 0xbc, 0x94, 0xa9, + 0x69, 0x40, 0xea, 0x9f, 0xa0, 0xd8, 0xb4, 0x96, 0x0d, 0xf7, 0x78, 0xd6, 0xdf, 0xdc, 0x45, 0x26, + 0xfc, 0x39, 0x83, 0xde, 0xa3, 0x94, 0x27, 0xf9, 0xed, 0x72, 0xae, 0xd9, 0x40, 0x27, 0xe3, 0xc6, + 0x3c, 0x69, 0x98, 0x6a, 0xd9, 0x8f, 0x4d, 0x7d, 0x71, 0xd4, 0xc8, 0x42, 0xfa, 0x37, 0xaa, 0x68, + 0x7e, 0x7d, 0xab, 0x40, 0xfd, 0x8b, 0x88, 0xae, 0x4d, 0xe4, 0x0f, 0x20, 0x3e, 0x61, 0x35, 0x62, + 0xe2, 0xf0, 0x19, 0x84, 0xf8, 0x77, 0x85, 0x9d, 0x9f, 0xb7, 0x5c, 0x07, 0x89, 0x80, 0x7f, 0xa6, + 0x64, 0xf3, 0x33, 0xdc, 0x27, 0x8b, 0x08, 0xe6, 0xf0, 0xb2, 0xc7, 0xd1, 0x30, 0xe5, 0x72, 0xb1, + 0x24, 0x6d, 0x5d, 0xcb, 0x45, 0x77, 0x7a, 0xbf, 0x61, 0x8b, 0xaf, 0xd1, 0x80, 0xf2, 0x6a, 0x63, + 0xb5, 0x15, 0xe4, 0x86, 0xc5, 0xa7, 0x82, 0x28, 0x99, 0x78, 0x03, 0xcb, 0x53, 0x80, 0xf4, 0xb4, + 0x7d, 0x5a, 0x26, 0x2a, 0x04, 0xb5, 0x57, 0xdf, 0x02, 0x16, 0x3b, 0xa0, 0x24, 0x39, 0xdd, 0x9b, + 0xd4, 0x27, 0x3a, 0x3b, 0xd6, 0x0d, 0x6f, 0xa6, 0x8d, 0x36, 0xc5, 0x20, 0x6b, 0x5b, 0xc0, 0x68, + 0xd6, 0x32, 0x29, 0x91, 0x0c, 0xbe, 0xf4, 0x50, 0xeb, 0xbf, 0xb2, 0x72, 0xa4, 0xcc, 0xcd, 0x90, + 0x36, 0x56, 0xee, 0x4e, 0xd3, 0x2f, 0x22, 0x27, 0x97, 0x7f, 0xd1, 0xb2, 0x8a, 0x84, 0xce, 0xee, + 0xd0, 0x57, 0xb6, 0xea, 0xf6, 0x01, 0x7e, 0x69, 0xd8, 0xcb, 0xe0, 0x91, 0xfa, 0x8d, 0xed, 0xee, + 0x5f, 0xdb, 0x2d, 0xb3, 0xc8, 0x78, 0x69, 0x93, 0x35, 0x0c, 0x2a, 0x26, 0x22, 0xa8, 0x4d, 0xea, + 0x95, 0x8c, 0x94, 0x84, 0x70, 0xd1, 0xfc, 0x4c, 0xbb, 0xf7, 0xca, 0xce, 0x47, 0x16, 0xa2, 0x9e, + 0x49, 0x3b, 0x3e, 0x13, 0xd3, 0xf0, 0xa3, 0xc2, 0x56, 0x29, 0xb2, 0xa3, 0xee, 0x55, 0x7a, 0x42, + 0x9b, 0x01, 0xd7, 0x59, 0xe8, 0x34, 0xa5, 0x6b, 0xb0, 0xf0, 0x76, 0xff, 0x59, 0xb5, 0x09, 0x47, + 0x1c, 0x88, 0xd4, 0xb8, 0xec, 0x3b, 0x75, 0xf7, 0xbc, 0x13, 0x80, 0x95, 0x0c, 0x9b, 0x5d, 0x43, + 0xa4, 0x59, 0xa5, 0xd9, 0x08, 0xe3, 0x39, 0x23, 0xf9, 0xb7, 0xdb, 0x60, 0xbe, 0x4d, 0xd9, 0x8a, + 0x94, 0xb7, 0xb6, 0x5c, 0x5f, 0x2d, 0x02, 0xeb, 0x90, 0x31, 0x91, 0x22, 0xc2, 0x9d, 0xcf, 0xaa, + 0x41, 0x31, 0xf9, 0x8b, 0x91, 0x18, 0x70, 0x36, 0xbe, 0x50, 0x10, 0x02, 0xf1, 0x56, 0x15, 0x7c, + 0x18, 0x28, 0x31, 0x70, 0xed, 0x29, 0x69, 0xde, 0xb4, 0xf5, 0x35, 0x6d, 0x99, 0x38, 0xcf, 0x20, + 0x18, 0xc3, 0xf4, 0x1d, 0xde, 0xdc, 0x90, 0x67, 0x61, 0xba, 0x8a, 0x45, 0xc2, 0xf9, 0xad, 0x6e, + 0x41, 0x4f, 0x07, 0x75, 0xe3, 0x18, 0xb0, 0xe7, 0x4a, 0xe3, 0x03, 0xf7, 0xfe, 0x69, 0x69, 0x3b, + 0xea, 0x74, 0x4c, 0xc8, 0x47, 0x9f, 0x70, 0xe9, 0x00, 0xc4, 0xce, 0xcc, 0x90, 0x73, 0x45, 0xb1, + 0xe6, 0xee, 0xd5, 0x74, 0xce, 0xca, 0x39, 0x5c, 0xcd, 0x9a, 0xe3, 0x70, 0x70, 0x91, 0x5b, 0xc3, + 0x49, 0x99, 0x71, 0x67, 0x7e, 0x4f, 0x37, 0xf3, 0x92, 0x75, 0xc8, 0x2b, 0x1a, 0x33, 0xf7, 0xd7, + 0x6b, 0x83, 0x35, 0xac, 0xba, 0x36, 0x1b, 0x66, 0x30, 0xee, 0x66, 0x8b, 0xeb, 0x82, 0xc7, 0x1d, + 0x9c, 0xdf, 0xeb, 0x2c, 0x60, 0x4c, 0xb5, 0x41, 0xe0, 0x3e, 0xe3, 0xeb, 0x79, 0x57, 0x0a, 0x1c, + 0x02, 0x05, 0xba, 0xc0, 0xcd, 0x78, 0x60, 0xa3, 0x87, 0x99, 0x65, 0x04, 0x3b, 0x62, 0x01, 0x06, + 0x7f, 0xe0, 0xe9, 0x36, 0x25, 0xf9, 0x97, 0x1b, 0x77, 0x33, 0x97, 0xdc, 0x12, 0x42, 0x50, 0xe5, + 0x95, 0xb5, 0x7e, 0xf2, 0x70, 0xb3, 0x06, 0x60, 0x7f, 0xd7, 0x5e, 0xc6, 0xff, 0x73, 0x22, 0x03, + 0x6b, 0xc7, 0x05, 0x98, 0x5b, 0x7e, 0xc5, 0x54, 0xaf, 0x9d, 0xe5, 0xa1, 0xc9, 0x64, 0xca, 0x43, + 0xca, 0xec, 0xfa, 0x74, 0xaa, 0x50, 0x82, 0x68, 0x8c, 0xd1, 0x01, 0x60, 0x02, 0xce, 0x97, 0x09, + 0x7e, 0x3a, 0xc3, 0x6b, 0x8a, 0x67, 0x91, 0x34, 0x06, 0xbc, 0xc5, 0x3e, 0xf9, 0x7e, 0xe6, 0xdd, + 0x84, 0xa8, 0xbc, 0xc4, 0x5c, 0xcc, 0xb4, 0xaa, 0xd0, 0xe1, 0x06, 0xc1, 0x9d, 0x06, 0xdd, 0x4a, + 0xa1, 0x39, 0x30, 0x02, 0xe8, 0xfc, 0x40, 0x85, 0x96, 0x10, 0x14, 0x14, 0x54, 0xc9, 0x9e, 0x9c, + 0x5b, 0xe8, 0x13, 0x2e, 0xaa, 0x93, 0x71, 0xde, 0xb3, 0x71, 0xbf, 0x6a, 0x12, 0xac, 0x26, 0x70, + 0x55, 0x62, 0x04, 0x49, 0x2e, 0x05, 0xbc, 0x57, 0x1c, 0xa9, 0xe6, 0x57, 0xdc, 0x9a, 0xea, 0x92, + 0x76, 0xe9, 0x4a, 0x5e, 0x09, 0x0f, 0x2e, 0xd1, 0x0d, 0xc2, 0x54, 0xf3, 0x14, 0xcb, 0x8b, 0xe3, + 0x05, 0x0a, 0xdd, 0x2e, 0xeb, 0x7e, 0x2b, 0x2c, 0xb0, 0x53, 0xf1, 0xd2, 0x2c, 0x76, 0x6a, 0xa9, + 0x06, 0x77, 0x15, 0x70, 0x9a, 0x71, 0x0d, 0x3a, 0x27, 0x1b, 0x00, 0x09, 0x35, 0xeb, 0x07, 0x74, + 0xb3, 0x1c, 0x77, 0x77, 0x5c, 0xc8, 0xe3, 0xe5, 0xb1, 0xa9, 0x35, 0x69, 0xc9, 0x49, 0xad, 0xeb, + 0xbb, 0x52, 0x50, 0x8c, 0x03, 0x6f, 0x40, 0x20, 0xc0, 0xdd, 0xbe, 0xe8, 0x60, 0x23, 0xdc, 0x2c, + 0x69, 0x35, 0x8a, 0xfa, 0x4a, 0x40, 0xee, 0xf6, 0xc0, 0xd7, 0xce, 0x54, 0x4a, 0x99, 0x81, 0x81, + 0xef, 0x95, 0xec, 0x1b, 0x1d, 0xd5, 0xcf, 0xf2, 0xf2, 0xd3, 0xa2, 0x93, 0x84, 0xa9, 0x36, 0xd9, + 0x1a, 0x41, 0xff, 0xe8, 0x25, 0xfd, 0xf8, 0x49, 0xef, 0xb1, 0x1a, 0xf3, 0x54, 0x31, 0xcf, 0x4e, + 0xc7, 0x12, 0xbc, 0xac, 0xa2, 0x98, 0xa9, 0x7a, 0xa9, 0x47, 0x65, 0x0e, 0xf0, 0x29, 0xc5, 0xf3, + 0x2c, 0x90, 0x20, 0x29, 0xcc, 0x28, 0x9c, 0x02, 0x22, 0x2d, 0x07, 0xab, 0x30, 0xfd, 0x52, 0x0b, + 0xde, 0x85, 0x00, 0x01, 0xdf, 0x8a, 0x2d, 0x22, 0xcb, 0x7e, 0xce, 0xe0, 0xf3, 0x12, 0x19, 0x14, + 0x78, 0x88, 0x19, 0x3e, 0x11, 0x66, 0x22, 0x00, 0x20, 0x85, 0x98, 0xa2, 0xd3, 0x92, 0x56, 0x68, + 0x6e, 0x44, 0xc2, 0xc2, 0x2e, 0x56, 0x1c, 0x3e, 0x47, 0x87, 0x95, 0x6c, 0xe4, 0x11, 0xea, 0xf6, + 0x0b, 0x84, 0x2f, 0xce, 0x0f, 0x62, 0x00, 0xa5, 0x4a, 0x5d, 0xda, 0x68, 0x66, 0x20, 0xe5, 0x24, + 0xaf, 0x08, 0xe0, 0x6f, 0xdd, 0xa5, 0xc1, 0x62, 0x11, 0x27, 0x0f, 0xd4, 0x88, 0x8f, 0x4e, 0x9c, + 0xfc, 0x52, 0x41, 0x93, 0x93, 0x43, 0xcf, 0xec, 0x73, 0x0a, 0x26, 0x7d, 0x9e, 0x1d, 0x16, 0xc5, + 0xf6, 0x4d, 0x24, 0x3c, 0xdd, 0x5f, 0x4d, 0x14, 0xb7, 0x90, 0x63, 0xa9, 0x59, 0x57, 0x66, 0x81, + 0xd5, 0x29, 0x09, 0x8d, 0x9d, 0x08, 0xf2, 0xbe, 0xb2, 0xe2, 0xed, 0x09, 0xda, 0x2b, 0x4a, 0x86, + 0xbf, 0x85, 0xb7, 0x5c, 0x91, 0x38, 0x32, 0x4c, 0xcc, 0x26, 0x72, 0x97, 0xa9, 0xcb, 0x50, 0x75, + 0x52, 0xc4, 0x99, 0x75, 0xef, 0x04, 0x9e, 0xf0, 0xff, 0xe8, 0x11, 0xcd, 0x85, 0x3b, 0xfb, 0x98, + 0xcb, 0x65, 0x4a, 0xe3, 0x3d, 0xf6, 0x05, 0x67, 0x72, 0x5e, 0x24, 0xb2, 0x89, 0x0e, 0x19, 0xc9, + 0xeb, 0x4e, 0x34, 0xc6, 0xc6, 0xe5, 0xc2, 0x93, 0xca, 0x1c, 0xc4, 0x47, 0x2b, 0x21, 0xe6, 0x5b, + 0x0d, 0x0d, 0x38, 0xb1, 0xbd, 0xd4, 0xe1, 0x38, 0xce, 0x53, 0xcc, 0xa8, 0xf3, 0x2a, 0x16, 0x55, + 0x10, 0x77, 0xe1, 0xe9, 0x63, 0xdd, 0xe0, 0xd0, 0xd2, 0xff, 0x87, 0x21, 0xca, 0x09, 0xd9, 0xd1, + 0xc6, 0x35, 0x24, 0x26, 0x22, 0xdf, 0xc0, 0xe6, 0x7f, 0xe7, 0x33, 0xbf, 0x7b, 0x54, 0x98, 0x7b, + 0x88, 0x3c, 0x3a, 0x0c, 0x1e, 0x9f, 0x39, 0x02, 0xc1, 0xce, 0x06, 0xbe, 0x2e, 0xb7, 0xb6, 0x21, + 0xe6, 0x4b, 0xb4, 0x65, 0x3a, 0x77, 0xe3, 0xca, 0xe0, 0x83, 0x75, 0xd4, 0x5d, 0xbc, 0x77, 0x24, + 0x69, 0x9b, 0xd4, 0x77, 0x23, 0x49, 0x0e, 0x9a, 0xf3, 0x26, 0x9d, 0xa9, 0x31, 0x81, 0x0d, 0xba, + 0x94, 0x58, 0x9a, 0x82, 0x8a, 0x4e, 0x6a, 0x65, 0x90, 0xbf, 0x4a, 0x85, 0x51, 0x65, 0x3a, 0x1d, + 0xac, 0xbf, 0x39, 0x11, 0xf6, 0xe2, 0x1f, 0x6c, 0xeb, 0x96, 0xde, 0x7a, 0x59, 0x83, 0x6d, 0x8f, + 0x3b, 0xd5, 0xb9, 0x54, 0x5a, 0x05, 0xe7, 0x11, 0xd8, 0x52, 0x12, 0x2e, 0xf5, 0x44, 0x99, 0x55, + 0xf7, 0xcd, 0xb8, 0x37, 0x16, 0xa7, 0xaa, 0xc0, 0x9a, 0x64, 0x44, 0x1e, 0xd7, 0x48, 0x40, 0x52, + 0xdd, 0xcc, 0x99, 0x98, 0x33, 0x06, 0xe7, 0xec, 0x00, 0x91, 0x81, 0x48, 0x27, 0xdf, 0xb2, 0xe1, + 0xfd, 0x87, 0x22, 0x66, 0x81, 0xde, 0x0b, 0xcd, 0xb2, 0xaf, 0x8c, 0xaf, 0xd4, 0xe6, 0xc9, 0xb9, + 0xd9, 0xb9, 0x16, 0x84, 0xcb, 0xb3, 0x65, 0xb9, 0x6c, 0x00, 0xcb, 0x31, 0x22, 0x36, 0xa9, 0x1a, + 0xfb, 0xf7, 0x3a, 0xd2, 0x70, 0xf7, 0x97, 0x63, 0xbf, 0x35, 0x8c, 0x17, 0xd7, 0x10, 0x05, 0x32, + 0xfe, 0x80, 0xd9, 0x04, 0x02, 0x1a, 0xc9, 0xb1, 0xcf, 0xa6, 0x26, 0x0e, 0x99, 0xf8, 0x6c, 0x32, + 0x27, 0x2f, 0xac, 0xf2, 0x17, 0x95, 0xcf, 0x11, 0x97, 0x10, 0x26, 0x17, 0xe8, 0x78, 0xc2, 0xaf, + 0x3a, 0x53, 0x71, 0x96, 0x41, 0x55, 0x6a, 0xdc, 0x9a, 0xbc, 0x57, 0x5c, 0x5a, 0x10, 0x97, 0x50, + 0xa4, 0x08, 0x4c, 0x21, 0x6c, 0x95, 0xfa, 0xff, 0xdd, 0xf8, 0xd2, 0xf0, 0x6d, 0x6d, 0x24, 0x19, + 0x9a, 0x42, 0x0a, 0xe8, 0xef, 0x90, 0xf7, 0xb0, 0xe0, 0xfa, 0xbe, 0xf8, 0xf1, 0x47, 0xff, 0xe6, + 0x23, 0x23, 0x97, 0x42, 0xde, 0x35, 0x89, 0xf0, 0xd2, 0x1b, 0xee, 0x1f, 0x2c, 0xd1, 0xb1, 0x85, + 0xbf, 0x1a, 0x08, 0x15, 0xc1, 0x7e, 0xcc, 0x85, 0xc2, 0xec, 0x50, 0x8c, 0x97, 0xe4, 0xf7, 0x5d, + 0x0a, 0x39, 0x00, 0x57, 0x56, 0x0f, 0x35, 0x0b, 0x7d, 0x8d, 0x68, 0x32, 0x85, 0x70, 0x55, 0x83, + 0x9a, 0x31, 0x62, 0x25, 0x01, 0xb2, 0xc6, 0x54, 0xbc, 0xf0, 0x98, 0xdd, 0x78, 0xe9, 0xa1, 0x6c, + 0x8e, 0x2c, 0x74, 0x17, 0xe9, 0xec, 0x0e, 0x7b, 0x64, 0xa0, 0x70, 0xe7, 0xab, 0x12, 0xf0, 0x5f, + 0xa6, 0x7d, 0x9b, 0xa6, 0x86, 0xbc, 0x4c, 0x22, 0x88, 0x11, 0x54, 0x53, 0x6a, 0x55, 0x09, 0x7f, + 0xd9, 0xab, 0xaf, 0x2e, 0x29, 0xa3, 0xc0, 0x75, 0xbe, 0x67, 0x8e, 0x49, 0x1c, 0xb5, 0x59, 0x85, + 0xbf, 0xfe, 0x68, 0x84, 0x75, 0xf5, 0xa6, 0xd1, 0xe5, 0x29, 0xd9, 0x43, 0xf6, 0xc2, 0x8a, 0xd8, + 0xe8, 0xfa, 0x14, 0x4f, 0x71, 0xa7, 0x24, 0x5a, 0xff, 0xe8, 0x01, 0x50, 0x5e, 0x37, 0x00, 0x96, + 0xbf, 0x17, 0xf6, 0x17, 0xce, 0x18, 0xd0, 0x25, 0x07, 0x6a, 0x8a, 0x51, 0xd4, 0x4a, 0xde, 0x16, + 0x10, 0x83, 0x1f, 0x68, 0xcf, 0xe6, 0xcb, 0xea, 0xe0, 0x8d, 0x43, 0x46, 0x41, 0x7c, 0xf2, 0x40, + 0xcb, 0xa8, 0x79, 0x00, 0xe5, 0xec, 0xb3, 0x4d, 0x74, 0x7f, 0x3e, 0xee, 0xee, 0x70, 0x33, 0xfc, + 0x94, 0x6c, 0x08, 0x8a, 0xb2, 0x75, 0x74, 0x3e, 0xc7, 0x90, 0xd2, 0xdd, 0x4a, 0x5d, 0x51, 0x5b, + 0xa5, 0x3a, 0xb4, 0x4b, 0xd9, 0xf4, 0xf0, 0xe5, 0xc5, 0x54, 0x74, 0x16, 0x03, 0x99, 0x0b, 0x92, + 0x4a, 0x91, 0x93, 0x29, 0x83, 0x9c, 0x89, 0x41, 0xb0, 0x88, 0x5c, 0x10, 0x55, 0xda, 0x32, 0x2c, + 0x07, 0x37, 0x4a, 0xee, 0x4b, 0xc2, 0xaf, 0x42, 0x7b, 0x68, 0x7e, 0xc3, 0xe1, 0x2c, 0x1f, 0x81, + 0xf2, 0xee, 0xea, 0x89, 0x4a, 0xf4, 0x9c, 0x60, 0x75, 0xea, 0x90, 0x0a, 0x7f, 0x89, 0x7e, 0xbd, + 0x05, 0x6e, 0x81, 0xc1, 0x9c, 0x8d, 0x65, 0xa0, 0x52, 0xb5, 0xc4, 0x74, 0x97, 0x47, 0xff, 0x55, + 0x85, 0x8c, 0x78, 0x99, 0xb7, 0x32, 0xda, 0x11, 0x7a, 0xf4, 0x4f, 0x29, 0xd9, 0x3f, 0x51, 0x82, + 0xac, 0xdb, 0x5e, 0x1a, 0xef, 0x9b, 0xbf, 0x97, 0xad, 0x0c, 0x42, 0x2e, 0xe2, 0x17, 0x52, 0x25, + 0xa9, 0x2d, 0xcb, 0xa4, 0x0a, 0x2f, 0xb7, 0xe0, 0xe4, 0xdc, 0xab, 0xe0, 0x4d, 0x88, 0xf3, 0x00, + 0x15, 0x52, 0x2e, 0x4d, 0x52, 0xe1, 0xe0, 0x84, 0x61, 0xcd, 0x78, 0x42, 0x38, 0x2e, 0xa2, 0x57, + 0xc5, 0x56, 0x7c, 0x5e, 0x90, 0xfa, 0x77, 0xa3, 0x0c, 0x86, 0xc1, 0x2b, 0x8e, 0x2a, 0x80, 0x64, + 0x69, 0x10, 0xcb, 0x0e, 0x09, 0xd6, 0x40, 0x60, 0x28, 0x76, 0x01, 0x18, 0xb0, 0x7f, 0xf6, 0x30, + 0x5f, 0x04, 0x2c, 0x51, 0x01, 0xfa, 0xc1, 0x3a, 0x07, 0x60, 0x52, 0x44, 0xfe, 0xc9, 0x69, 0xcd, + 0x52, 0x5a, 0xa8, 0x1d, 0x67, 0xc6, 0xee, 0x79, 0x98, 0x5a, 0xff, 0x80, 0x5b, 0x3a, 0x57, 0x49, + 0xfa, 0x18, 0xf6, 0x6d, 0x51, 0x15, 0xc6, 0x0e, 0xb9, 0x35, 0xff, 0x88, 0xef, 0xa9, 0x4f, 0xf5, + 0x0f, 0x87, 0x5a, 0x58, 0x30, 0x3e, 0xde, 0xee, 0xff, 0x06, 0x7b, 0xa6, 0x20, 0x24, 0xd6, 0x12, + 0x4c, 0x3f, 0x1d, 0x3d, 0x4d, 0xc9, 0xd9, 0x23, 0x4d, 0x18, 0x92, 0xf7, 0xa8, 0x45, 0xb0, 0x18, + 0x47, 0x66, 0xd1, 0x30, 0x0d, 0x8d, 0x14, 0x6c, 0xdd, 0xf8, 0x34, 0x05, 0x25, 0x11, 0x1e, 0x3b, + 0xf6, 0xb2, 0xe1, 0xdf, 0x77, 0xba, 0xd1, 0x82, 0x2d, 0xe7, 0xc2, 0x92, 0x38, 0x6e, 0xda, 0x53, + 0xa3, 0xba, 0x92, 0x3e, 0x55, 0xd8, 0x6a, 0xf0, 0xfa, 0x88, 0x4c, 0x1f, 0xaf, 0x73, 0x59, 0x33, + 0x88, 0xa5, 0xe8, 0xe5, 0x85, 0x4f, 0x4d, 0x93, 0x1c, 0x89, 0x88, 0x71, 0xff, 0x47, 0x0b, 0xf8, + 0xfb, 0x20, 0x44, 0x26, 0x57, 0x01, 0x45, 0x08, 0xf5, 0x4a, 0x51, 0x67, 0x4a, 0xc7, 0xe4, 0x4d, + 0xd6, 0x93, 0x42, 0x6b, 0x90, 0x0b, 0x09, 0x18, 0x02, 0x23, 0x5b, 0x05, 0x45, 0x0e, 0xda, 0x57, + 0xc1, 0xa8, 0x7b, 0xe4, 0x98, 0x80, 0x12, 0x2d, 0x11, 0xaf, 0x8c, 0x0c, 0xb9, 0xb2, 0x2f, 0xf5, + 0xad, 0xce, 0x4c, 0x3a, 0x0a, 0x32, 0x67, 0x87, 0x1c, 0x85, 0x57, 0x1d, 0x4a, 0x26, 0x52, 0xe6, + 0x89, 0xef, 0x75, 0x19, 0x08, 0x9d, 0x05, 0x9d, 0x08, 0xa9, 0xc0, 0x15, 0x39, 0x98, 0x44, 0x71, + 0x35, 0xa3, 0xe2, 0x94, 0x37, 0x00, 0x11, 0x6d, 0xed, 0x20, 0x83, 0x51, 0x21, 0xd1, 0x60, 0x94, + 0xe8, 0x41, 0x91, 0x8a, 0x4b, 0xc7, 0x80, 0x2d, 0x46, 0xfe, 0x57, 0xed, 0x5c, 0x37, 0xeb, 0xaa, + 0x8a, 0x73, 0x64, 0xd6, 0xa3, 0x9d, 0x6b, 0x7f, 0x57, 0xf0, 0x2d, 0xae, 0xfb, 0x11, 0x62, 0x6a, + 0x61, 0x5a, 0x48, 0xa5, 0x07, 0xb1, 0x4d, 0x79, 0x40, 0x5c, 0x34, 0x2d, 0xcc, 0x87, 0xbb, 0xcd, + 0xe5, 0x7f, 0xa6, 0x09, 0xcd, 0x90, 0xdb, 0xf6, 0xdc, 0x3a, 0xa7, 0xa4, 0x20, 0x9c, 0x3f, 0x4c, + 0x24, 0x10, 0x7c, 0x75, 0x35, 0x10, 0x4a, 0xc5, 0x6f, 0x2e, 0xc4, 0x98, 0x84, 0x0d, 0x86, 0xf3, + 0xc6, 0xb1, 0x4a, 0x54, 0xac, 0x08, 0x6e, 0x13, 0xd2, 0xbe, 0x14, 0x39, 0xb9, 0xa9, 0x4f, 0xb9, + 0x85, 0xbf, 0xf5, 0x18, 0x4b, 0x4f, 0x26, 0x2a, 0x39, 0x50, 0xf5, 0x01, 0x58, 0x8a, 0xbd, 0x22, + 0xd0, 0x29, 0xa6, 0x53, 0x40, 0xc0, 0x73, 0xdc, 0xd9, 0x03, 0x6a, 0xfd, 0x57, 0xdc, 0x2b, 0x4b, + 0xd0, 0xe7, 0x4c, 0xed, 0xa7, 0x2a, 0x88, 0x37, 0x4f, 0x75, 0x43, 0x8b, 0x5e, 0xae, 0x1c, 0xc5, + 0xad, 0xbb, 0xbe, 0x43, 0x59, 0xc4, 0x5d, 0xa1, 0x1f, 0xb0, 0xbb, 0x71, 0xb5, 0x13, 0x74, 0xce, + 0x0b, 0x62, 0x36, 0x66, 0x9d, 0x0d, 0xe5, 0x5a, 0x34, 0xd1, 0x6d, 0xec, 0xab, 0x92, 0x7c, 0xf1, + 0xed, 0x5c, 0xe5, 0x61, 0x14, 0xf5, 0x72, 0xe5, 0xbf, 0x92, 0xc2, 0xb3, 0x3a, 0x82, 0xcb, 0xef, + 0xa0, 0xbf, 0xa7, 0x88, 0x06, 0x6a, 0x20, 0x9d, 0xb8, 0x04, 0xb1, 0x52, 0x5f, 0x7f, 0x16, 0x74, + 0x98, 0xbe, 0xf6, 0x02, 0x0c, 0x42, 0x91, 0xaf, 0x8d, 0x1e, 0x24, 0x19, 0x04, 0x27, 0x2b, 0x8a, + 0x73, 0xb5, 0x7a, 0x61, 0x86, 0x4b, 0x1d, 0xa2, 0xff, 0xe9, 0xe9, 0x04, 0x50, 0x04, 0x22, 0xa6, + 0xe1, 0xa2, 0xa6, 0xfd, 0xc5, 0x87, 0xbf, 0x2e, 0xab, 0x92, 0xc4, 0xf1, 0xf5, 0x9d, 0xe8, 0xfa, + 0x67, 0x3a, 0xb1, 0x75, 0x38, 0x76, 0x2c, 0xce, 0x4a, 0x55, 0xc5, 0xa9, 0x0b, 0x91, 0x72, 0x40, + 0x78, 0x61, 0x87, 0xb1, 0x3d, 0x85, 0xfc, 0x59, 0x5f, 0x80, 0x9b, 0x9d, 0xc8, 0x07, 0x93, 0x4a, + 0x61, 0x7f, 0xed, 0xaa, 0x01, 0x2d, 0x2d, 0x5b, 0x49, 0xf6, 0xa9, 0x91, 0x6c, 0xda, 0x67, 0xe5, + 0xcb, 0x64, 0xc5, 0x12, 0x14, 0xa4, 0x6e, 0x04, 0x68, 0xa9, 0xe2, 0xc2, 0x58, 0xe8, 0x95, 0xe5, + 0x35, 0x73, 0xbf, 0x85, 0x09, 0x21, 0xb9, 0xd3, 0x57, 0xda, 0xb7, 0xa5, 0xfe, 0x12, 0x7f, 0xf4, + 0xa5, 0x75, 0x03, 0xe5, 0x6b, 0x1a, 0x4e, 0x10, 0xcc, 0x06, 0x6e, 0x7f, 0xac, 0x14, 0x8b, 0xdd, + 0xa7, 0x52, 0xa5, 0xfb, 0xc7, 0x5c, 0xe5, 0x3c, 0x6d, 0xd8, 0xf4, 0xaa, 0x28, 0x42, 0xb3, 0x78, + 0x2c, 0x37, 0x00, 0x3e, 0xb2, 0x12, 0x44, 0x91, 0x43, 0xa0, 0xe4, 0xcc, 0x3a, 0x46, 0xa4, 0x69, + 0xe8, 0x41, 0xb5, 0xee, 0x1e, 0xbb, 0x24, 0xa3, 0x2f, 0xf8, 0x8c, 0x02, 0x90, 0xae, 0x05, 0xb4, + 0xd5, 0xaa, 0x76, 0x5b, 0x66, 0x5e, 0x3e, 0x45, 0x0e, 0x6a, 0xd6, 0xbd, 0x5c, 0xab, 0x7a, 0xb8, + 0x71, 0xa1, 0xf5, 0xf0, 0x96, 0xc7, 0xa6, 0x1b, 0xf7, 0x71, 0xbc, 0xa6, 0x71, 0x10, 0x9f, 0x35, + 0xca, 0x1d, 0xf6, 0x24, 0x22, 0x49, 0xd5, 0xdc, 0xbf, 0x35, 0x01, 0xc4, 0x69, 0xce, 0x31, 0x72, + 0x38, 0xee, 0x05, 0x18, 0x75, 0xcd, 0xed, 0x40, 0xd7, 0x14, 0xa3, 0x53, 0x74, 0x47, 0xc6, 0x40, + 0x60, 0x5c, 0x34, 0x1a, 0x98, 0x31, 0x37, 0xa7, 0x5e, 0x21, 0x20, 0xaf, 0x9e, 0xc8, 0x59, 0x54, + 0x2a, 0xde, 0x34, 0xc4, 0x3a, 0x9d, 0x66, 0x64, 0x8b, 0x1f, 0x1d, 0x4a, 0xad, 0x6b, 0xb1, 0x7e, + 0x8c, 0x17, 0x18, 0x4d, 0x41, 0x32, 0x68, 0xf8, 0x44, 0x0d, 0x7f, 0x21, 0x77, 0x95, 0x09, 0x70, + 0xc3, 0xe3, 0xe3, 0xf8, 0x01, 0xe3, 0xa4, 0xdd, 0x53, 0x96, 0x1b, 0x2e, 0xcd, 0xd3, 0xc3, 0xf1, + 0x5c, 0xdf, 0xf9, 0x78, 0xd5, 0x2b, 0xfc, 0x6f, 0xbe, 0xe8, 0x3f, 0x64, 0x2b, 0xc1, 0xd9, 0xf7, + 0xc3, 0xad, 0xad, 0x44, 0x55, 0xa4, 0xac, 0xab, 0xfa, 0xe8, 0x39, 0xd7, 0xd3, 0xfa, 0x28, 0x7f, + 0x7f, 0xca, 0x98, 0xbf, 0x2a, 0xe6, 0xef, 0xd0, 0x4d, 0xb4, 0x52, 0x5b, 0x34, 0x38, 0x8f, 0x96, + 0xa3, 0x76, 0x4d, 0x73, 0x43, 0xe9, 0x1d, 0x36, 0x2b, 0xc4, 0xb3, 0x0b, 0xe8, 0x4c, 0xb2, 0xca, + 0x5a, 0x00, 0xdf, 0x84, 0x83, 0xaf, 0x74, 0xfe, 0xe4, 0x17, 0x00, 0x28, 0xe8, 0xb4, 0x51, 0x0d, + 0xc0, 0xb8, 0x32, 0xbb, 0xc0, 0xb0, 0xd7, 0x8b, 0x95, 0x82, 0xe4, 0xf2, 0x30, 0xac, 0x80, 0x5e, + 0x07, 0xe5, 0xe7, 0x33, 0x6c, 0xc4, 0xd2, 0x25, 0xe7, 0x73, 0x7c, 0x33, 0xe8, 0x2e, 0x47, 0xca, + 0x90, 0x72, 0x4d, 0x58, 0xad, 0x09, 0xbb, 0x69, 0x19, 0x64, 0x08, 0xd9, 0x0c, 0xdc, 0x13, 0x47, + 0x8b, 0xe3, 0x0d, 0x83, 0xcc, 0x32, 0x8f, 0xf5, 0x53, 0xec, 0x6f, 0xe9, 0xa7, 0xa3, 0x48, 0x92, + 0x91, 0x4b, 0xe2, 0xc0, 0x5f, 0x0e, 0xe2, 0x4b, 0xd0, 0xaa, 0x33, 0x05, 0x5f, 0x88, 0x77, 0xc0, + 0x5c, 0x06, 0xa3, 0x2f, 0x4e, 0x7d, 0x9e, 0xbf, 0x10, 0x18, 0x68, 0x74, 0x54, 0x09, 0xb0, 0x52, + 0x21, 0x72, 0x1c, 0x6b, 0x6f, 0x22, 0x9c, 0x7c, 0xe8, 0x0b, 0x98, 0x1a, 0x96, 0x0a, 0xd4, 0xd4, + 0x5a, 0x08, 0x3c, 0xf9, 0x93, 0x2c, 0xde, 0x49, 0x3d, 0xed, 0xe4, 0x7a, 0xeb, 0x31, 0x51, 0x47, + 0xa9, 0xcd, 0xd5, 0x1d, 0xaa, 0x8e, 0x95, 0x03, 0x2c, 0x7e, 0xd3, 0x24, 0x1c, 0x4d, 0xeb, 0x5d, + 0xda, 0x57, 0x6e, 0xb0, 0x5a, 0xf2, 0x1a, 0x2a, 0x78, 0x5c, 0xcf, 0x3c, 0xc0, 0xe1, 0x2d, 0x2b, + 0xb3, 0xe6, 0xde, 0x25, 0x0f, 0x61, 0x5a, 0x9a, 0x88, 0xba, 0x91, 0x0d, 0xd1, 0x63, 0x96, 0x20, + 0x59, 0xa0, 0xe8, 0x14, 0x40, 0x42, 0x3f, 0xa5, 0x4b, 0xf1, 0x0e, 0xc0, 0xa1, 0x7f, 0x92, 0xd6, + 0x89, 0xd6, 0x64, 0x12, 0x31, 0x75, 0xb5, 0x82, 0x82, 0xab, 0xba, 0xbd, 0xdf, 0x0d, 0x7e, 0x53, + 0x39, 0x84, 0x8d, 0x8c, 0x2e, 0xa6, 0xc3, 0xa4, 0x3c, 0x68, 0x5a, 0x8c, 0xff, 0x47, 0xca, 0xca, + 0x27, 0x43, 0x5a, 0x7b, 0x0b, 0xbe, 0xff, 0x02, 0x7d, 0x42, 0xe6, 0x44, 0xb5, 0x73, 0xdc, 0xa9, + 0x6d, 0x54, 0x0e, 0x4e, 0x04, 0x24, 0x01, 0x87, 0x6f, 0x10, 0x2b, 0x43, 0x08, 0xf2, 0x8a, 0xe7, + 0x60, 0xb9, 0xd4, 0x09, 0xce, 0x66, 0x42, 0xde, 0xa7, 0xa6, 0xaa, 0x4a, 0xc7, 0x81, 0x5b, 0xdc, + 0x66, 0xd0, 0x7a, 0x90, 0x24, 0xf5, 0x6a, 0xf1, 0x7e, 0xe8, 0x35, 0x0d, 0x66, 0x15, 0x9b, 0x54, + 0xe8, 0xbe, 0x99, 0xcf, 0x59, 0x0f, 0x30, 0x43, 0x36, 0x6c, 0xb0, 0xb9, 0xf5, 0xcc, 0x32, 0x19, + 0x11, 0x06, 0x6c, 0x7f, 0xec, 0x34, 0x0c, 0xf6, 0xab, 0x31, 0xaa, 0xe0, 0xd5, 0xd4, 0x99, 0xd7, + 0x39, 0x22, 0x3f, 0xa8, 0x7e, 0x79, 0xf1, 0x0e, 0x33, 0x0b, 0xe2, 0x28, 0xbf, 0xfb, 0x94, 0x3c, + 0x58, 0xf8, 0x79, 0xb3, 0x4b, 0xbc, 0x1c, 0x50, 0xe9, 0x39, 0x41, 0xd5, 0xe3, 0x6c, 0x5c, 0x07, + 0x9a, 0x12, 0x74, 0x71, 0x54, 0xaf, 0x14, 0x3a, 0x67, 0x0b, 0xb8, 0x40, 0xe1, 0x64, 0x96, 0x2a, + 0x28, 0x9a, 0x86, 0xe6, 0x0f, 0x48, 0x57, 0x60, 0xd9, 0xf4, 0x95, 0xd5, 0x02, 0xa7, 0x80, 0x2c, + 0xfd, 0x33, 0xf5, 0xb7, 0xc6, 0x30, 0xf4, 0x1f, 0xee, 0xdc, 0x60, 0xcc, 0x8a, 0xfa, 0x85, 0x23, + 0x00, 0x3a, 0x04, 0xc0, 0xf3, 0x8f, 0xd6, 0x59, 0xf5, 0x1a, 0xcf, 0x07, 0xaf, 0xac, 0xab, 0x01, + 0x5b, 0xf7, 0x3d, 0x5b, 0xeb, 0xf4, 0x01, 0xf3, 0xa3, 0x1f, 0xb9, 0xea, 0xf1, 0xcc, 0xb4, 0x10, + 0x46, 0x2f, 0x46, 0xb3, 0xd2, 0x36, 0x40, 0x9c, 0x8c, 0xa4, 0xdc, 0xb3, 0x8c, 0xfc, 0xa8, 0xdd, + 0xce, 0x82, 0xe3, 0x4c, 0x08, 0xf7, 0x94, 0x0a, 0x4d, 0x92, 0x1e, 0x62, 0xfb, 0xfa, 0x90, 0xf4, + 0x10, 0x4e, 0x65, 0x04, 0x7b, 0x8e, 0xd7, 0x18, 0x02, 0x24, 0xf5, 0xf3, 0x93, 0xe8, 0x5b, 0x00, + 0x94, 0xc8, 0xbb, 0x7e, 0xd6, 0x7b, 0xa5, 0x85, 0x3f, 0x56, 0xe1, 0x37, 0xb0, 0x47, 0x98, 0x5d, + 0x9e, 0x22, 0x7e, 0x25, 0x3a, 0x7c, 0x44, 0xb1, 0xbf, 0xfd, 0x09, 0x61, 0xbb, 0x86, 0x45, 0xa4, + 0xbc, 0x7c, 0x6c, 0xb3, 0x25, 0xb1, 0x45, 0x5c, 0x92, 0x3e, 0x4b, 0xf4, 0xa3, 0x7f, 0x5d, 0x0a, + 0x58, 0xee, 0x28, 0xbc, 0xac, 0x77, 0x4f, 0xcf, 0xb8, 0x72, 0x1d, 0x2c, 0x2c, 0x2e, 0x3d, 0x41, + 0xb7, 0xe3, 0x77, 0xe4, 0x31, 0xdd, 0x6e, 0xf2, 0x6a, 0x20, 0x0b, 0x2a, 0x55, 0xdf, 0x29, 0x9a, + 0xfd, 0xf9, 0x15, 0x2b, 0x3e, 0xe9, 0xa8, 0xb3, 0xff, 0x85, 0x4c, 0x53, 0xb7, 0x8a, 0xb8, 0x99, + 0xde, 0x88, 0x27, 0xa6, 0xa9, 0xd2, 0x4a, 0xe1, 0xac, 0xb4, 0xff, 0x12, 0xc8, 0x55, 0xe2, 0x58, + 0x95, 0xf5, 0xdd, 0x3d, 0xcf, 0xa0, 0xba, 0x8a, 0x20, 0xb7, 0xe8, 0x2b, 0x7e, 0xd9, 0x5a, 0x07, + 0xa0, 0x1f, 0xec, 0x0f, 0x89, 0x1c, 0xc4, 0xae, 0xcd, 0xdd, 0x97, 0x08, 0x02, 0xca, 0x02, 0x70, + 0x24, 0xc4, 0x83, 0xcb, 0xc8, 0x19, 0x52, 0x6f, 0xe7, 0x9a, 0x05, 0xa7, 0x89, 0xa4, 0xc1, 0xc4, + 0x15, 0x12, 0x95, 0x04, 0x16, 0xc8, 0x07, 0xe2, 0xb2, 0x76, 0x5c, 0x67, 0x96, 0x35, 0x23, 0xda, + 0x1a, 0xd7, 0xe8, 0xb5, 0xa9, 0x98, 0x31, 0x5f, 0x6d, 0xfd, 0xae, 0xf1, 0xc2, 0x44, 0x49, 0x7f, + 0x58, 0x9b, 0x07, 0x4c, 0x84, 0xf4, 0x24, 0x70, 0x1e, 0xe0, 0xfb, 0xa3, 0xa1, 0xfc, 0x6c, 0x8d, + 0xaa, 0x2f, 0xef, 0xa7, 0x2d, 0x2f, 0x01, 0x2b, 0xed, 0x73, 0xf6, 0xc6, 0x89, 0x52, 0x2e, 0xf5, + 0x91, 0x87, 0x00, 0x79, 0x3a, 0xec, 0xb9, 0xe9, 0x71, 0x98, 0xdf, 0x7b, 0x01, 0x8e, 0x21, 0x1f, + 0x50, 0xab, 0xd4, 0x2a, 0x82, 0x62, 0xbf, 0x8a, 0x8d, 0x24, 0x13, 0x95, 0xd0, 0xe9, 0x93, 0x39, + 0x3e, 0x73, 0x1a, 0x4e, 0xb4, 0x41, 0xca, 0x08, 0x79, 0xea, 0x14, 0x29, 0xaa, 0x0d, 0xff, 0x12, + 0x85, 0x5c, 0xc2, 0x5e, 0xea, 0x54, 0xa2, 0x4c, 0xf1, 0x3f, 0xdc, 0x73, 0x38, 0x12, 0xec, 0x02, + 0x67, 0x8e, 0x7b, 0xca, 0x41, 0x15, 0xfe, 0xa1, 0x59, 0x12, 0x5d, 0xd4, 0x23, 0x12, 0x19, 0x81, + 0x2c, 0x58, 0x5b, 0x1a, 0x78, 0x51, 0xe3, 0xb7, 0xb2, 0xdc, 0xbd, 0x9b, 0xa4, 0x74, 0x6d, 0xa5, + 0xda, 0x5d, 0x6c, 0xbf, 0x0c, 0x50, 0xd4, 0xf9, 0x34, 0xab, 0x9f, 0x2f, 0xc2, 0x81, 0x48, 0x2f, + 0x09, 0x23, 0x0f, 0xbf, 0x58, 0x07, 0x20, 0x53, 0x88, 0xe1, 0x54, 0x1e, 0x17, 0xe9, 0x04, 0xdf, + 0x48, 0xc3, 0x04, 0x89, 0xa9, 0x5e, 0x4f, 0x0e, 0xb8, 0xc4, 0x67, 0x0d, 0x7e, 0x55, 0xe6, 0x1b, + 0x1a, 0x3e, 0xd4, 0x1f, 0x94, 0xf4, 0x56, 0x2f, 0x70, 0x68, 0x6d, 0xa0, 0xaa, 0xa0, 0x5b, 0xf2, + 0x97, 0xa7, 0x0a, 0x56, 0x7a, 0xa3, 0x4b, 0x9d, 0x48, 0xce, 0xe0, 0xac, 0xe2, 0x1e, 0xb4, 0x73, + 0x55, 0xdd, 0xad, 0x09, 0xb0, 0x5a, 0x6d, 0x8c, 0x34, 0xd0, 0x20, 0x6b, 0x71, 0x18, 0x4c, 0xb9, + 0x7f, 0x8e, 0xdc, 0x05, 0x2d, 0xea, 0x77, 0xe5, 0xa4, 0xab, 0xbb, 0x33, 0xb9, 0x03, 0x87, 0x62, + 0x60, 0x13, 0xfd, 0x3b, 0x4e, 0x3f, 0x20, 0x1c, 0xb2, 0x11, 0x42, 0xda, 0xc7, 0xe5, 0x1c, 0x4e, + 0x40, 0xfd, 0x61, 0xa6, 0x07, 0x51, 0x97, 0x91, 0x31, 0xd1, 0xf6, 0xe7, 0xed, 0xaa, 0x56, 0xcf, + 0x91, 0x17, 0xa5, 0x7f, 0x7e, 0xce, 0xd2, 0x31, 0x54, 0xb7, 0xca, 0xf8, 0xdd, 0x05, 0x4a, 0xf5, + 0x81, 0xd3, 0x6b, 0x49, 0x18, 0x57, 0xfa, 0x0e, 0x9b, 0xdb, 0xf5, 0x16, 0x51, 0xc4, 0xa4, 0x4a, + 0xe6, 0x64, 0x86, 0xe7, 0x2b, 0x66, 0x53, 0x1e, 0x71, 0xe7, 0x37, 0xf3, 0xb6, 0x06, 0x0e, 0x3e, + 0x98, 0x09, 0x9e, 0x97, 0xc6, 0x26, 0xc8, 0x3f, 0x4a, 0x27, 0xbc, 0xd5, 0x32, 0x0b, 0x9c, 0xba, + 0xe1, 0xc7, 0xaf, 0x1f, 0x30, 0x3d, 0xf2, 0xf0, 0x4f, 0x34, 0x45, 0x88, 0x3f, 0xb5, 0x7c, 0x44, + 0xc2, 0x68, 0x5e, 0xe0, 0x36, 0x3a, 0x82, 0x93, 0xd7, 0x89, 0xb6, 0xbd, 0x2b, 0xb9, 0x02, 0x9d, + 0x31, 0x55, 0x30, 0xf6, 0xe2, 0x7f, 0x1e, 0x65, 0x70, 0xf6, 0x41, 0x7f, 0x33, 0x3c, 0xa2, 0x31, + 0x35, 0x66, 0x1b, 0x51, 0xb2, 0xa0, 0xf8, 0x9a, 0x8a, 0xa9, 0xa8, 0x48, 0x6d, 0x8b, 0xeb, 0x70, + 0x46, 0x55, 0xd5, 0x81, 0x0b, 0xdf, 0x3f, 0xe5, 0xf7, 0xb4, 0xd1, 0x58, 0xe5, 0x7e, 0xc3, 0xc5, + 0x69, 0x19, 0xa7, 0xdf, 0xc0, 0x4c, 0xf0, 0x05, 0x2c, 0x8b, 0xbb, 0x01, 0xe2, 0x21, 0x96, 0x57, + 0x06, 0x22, 0xe1, 0xcf, 0x59, 0x61, 0x8a, 0x7f, 0x9c, 0x30, 0xf1, 0x63, 0xca, 0x47, 0xfd, 0x77, + 0xf0, 0x00, 0xff, 0xa0, 0xe8, 0xd4, 0xc1, 0x9c, 0xb9, 0xba, 0x48, 0xb9, 0x3d, 0xef, 0x54, 0xd7, + 0xe3, 0x8c, 0x25, 0x3a, 0x2b, 0x8d, 0x1c, 0x67, 0xc7, 0xe9, 0xf4, 0x22, 0x37, 0xa9, 0xa7, 0x9f, + 0xd9, 0x0c, 0x4d, 0xea, 0x84, 0x70, 0xfb, 0x7f, 0x8c, 0x7d, 0xbe, 0x28, 0x88, 0x50, 0xff, 0x87, + 0xcd, 0x85, 0x5f, 0x15, 0xac, 0xc2, 0x97, 0xb0, 0x6e, 0x83, 0x9b, 0xe5, 0x7e, 0xc2, 0x54, 0x38, + 0x0b, 0xeb, 0x7a, 0x22, 0xb2, 0xe7, 0x1f, 0x3d, 0xe6, 0x7f, 0x2e, 0x34, 0x5f, 0xea, 0x27, 0x7e, + 0x17, 0xd5, 0xf1, 0xcc, 0x25, 0x90, 0x9d, 0xa3, 0x87, 0xf8, 0x3b, 0xf3, 0x3e, 0x55, 0x3a, 0xbd, + 0xdd, 0x76, 0x26, 0x30, 0x45, 0xa1, 0x2c, 0x1f, 0x2b, 0x64, 0xd2, 0xf1, 0x1a, 0x6d, 0x54, 0x53, + 0x55, 0x5e, 0xde, 0x63, 0x86, 0x90, 0x6b, 0x37, 0x29, 0xc2, 0xb1, 0x75, 0x82, 0xf6, 0x59, 0xc2, + 0x40, 0xc1, 0x95, 0x6f, 0x85, 0xbc, 0x22, 0x64, 0x97, 0xba, 0x56, 0x63, 0x9b, 0x3f, 0xe8, 0xda, + 0x68, 0xe1, 0xed, 0x4c, 0x53, 0xb8, 0x8f, 0x12, 0x59, 0x12, 0xf1, 0x52, 0x91, 0x06, 0x17, 0x01, + 0x64, 0xa8, 0xe2, 0xa7, 0x48, 0xb7, 0x99, 0x00, 0x6f, 0x67, 0x59, 0x3d, 0x82, 0x34, 0xfe, 0x7d, + 0x82, 0xd9, 0x79, 0x4a, 0xbd, 0xad, 0x91, 0x3c, 0xb2, 0xd2, 0xde, 0x1e, 0x46, 0xae, 0xd0, 0x2b, + 0xe7, 0x2f, 0x60, 0x72, 0x0b, 0x07, 0xc8, 0x05, 0x4b, 0xed, 0xeb, 0x31, 0x83, 0x9d, 0x48, 0x06, + 0x24, 0x4f, 0x9c, 0xcb, 0x35, 0x63, 0x1c, 0x01, 0x8f, 0x75, 0xa1, 0x65, 0xd1, 0xac, 0xe1, 0x26, + 0x92, 0x43, 0xb8, 0x2d, 0x1a, 0x30, 0xf9, 0x9f, 0x82, 0xdc, 0xbf, 0x84, 0xc4, 0x72, 0x2b, 0x42, + 0x9e, 0xc9, 0x55, 0x14, 0x35, 0xf3, 0x40, 0xbb, 0x20, 0x8a, 0xbf, 0x2c, 0x3a, 0x2f, 0x80, 0x00, + 0xe3, 0x80, 0x0f, 0x91, 0x7a, 0xfd, 0xf6, 0xf2, 0x36, 0x24, 0x42, 0x36, 0xdd, 0xdd, 0xf3, 0x68, + 0x7a, 0xf3, 0x75, 0x63, 0x50, 0x0b, 0x34, 0x22, 0x70, 0xa3, 0x51, 0x9a, 0x2f, 0x47, 0xbf, 0x76, + 0x26, 0x74, 0x3e, 0xf2, 0x9b, 0x4b, 0x7a, 0x82, 0x2b, 0x48, 0x99, 0x90, 0x91, 0xd4, 0xb4, 0xc4, + 0xcd, 0x09, 0xe0, 0x56, 0x1f, 0x0b, 0x88, 0x2f, 0xfb, 0xc7, 0x41, 0x39, 0x2e, 0x98, 0xd3, 0xc1, + 0x9b, 0xd2, 0xba, 0x9d, 0xd3, 0xf3, 0x08, 0xce, 0x64, 0x0f, 0x85, 0xd1, 0x17, 0x6d, 0x11, 0xbf, + 0x1b, 0x07, 0x07, 0x6d, 0x1d, 0x4b, 0x71, 0xd0, 0x86, 0xa6, 0x30, 0x0f, 0x44, 0xa5, 0x6b, 0x41, + 0x78, 0x9e, 0xe8, 0xc9, 0x1c, 0xa0, 0x54, 0x04, 0x4a, 0x8b, 0x7f, 0x1b, 0x41, 0xe3, 0x13, 0xe3, + 0xca, 0xf1, 0x4b, 0x6a, 0xa4, 0x16, 0x77, 0x02, 0xe2, 0x69, 0x8d, 0x02, 0x5a, 0xe2, 0x46, 0x29, + 0x3e, 0xee, 0x14, 0x59, 0xd0, 0x05, 0x9a, 0x67, 0xda, 0x01, 0x0a, 0xce, 0x95, 0xb3, 0x90, 0xef, + 0x47, 0x3d, 0x86, 0xab, 0xa3, 0xed, 0x71, 0xa7, 0xb7, 0x3e, 0xfd, 0x88, 0x6a, 0xe8, 0xf1, 0x1e, + 0x65, 0x63, 0x39, 0x3f, 0x06, 0x9b, 0x81, 0x6c, 0x22, 0x69, 0x67, 0xb9, 0x02, 0x1b, 0x16, 0x5e, + 0xe8, 0x7b, 0xf7, 0x5c, 0x37, 0x78, 0x0c, 0x84, 0x43, 0xef, 0x4d, 0xf7, 0xf0, 0xe6, 0x3d, 0xde, + 0x8c, 0xbb, 0x7d, 0xcc, 0xe3, 0x3a, 0xf8, 0x97, 0xab, 0xe8, 0xed, 0xdf, 0x67, 0x46, 0xfc, 0x6f, + 0x07, 0x02, 0xaa, 0x83, 0xbe, 0xd0, 0x0b, 0xe3, 0x7d, 0x4f, 0xaa, 0xf1, 0x1d, 0x70, 0x5b, 0x7b, + 0xb4, 0xab, 0x35, 0xc3, 0x3e, 0x36, 0x8b, 0xb0, 0x18, 0x3d, 0x3c, 0x89, 0x3d, 0x3b, 0xdf, 0x89, + 0xed, 0x6c, 0x21, 0xc3, 0xc9, 0x57, 0x11, 0x42, 0x55, 0xb2, 0x51, 0x7b, 0x5e, 0x04, 0x8c, 0x20, + 0xea, 0xa0, 0xfd, 0x57, 0xf4, 0x2e, 0x5f, 0xee, 0x07, 0x10, 0xd5, 0xa9, 0x89, 0x23, 0x84, 0x5c, + 0x7d, 0x12, 0x8b, 0x83, 0x70, 0x77, 0x40, 0x5a, 0x60, 0xa3, 0x13, 0x9d, 0x14, 0x5f, 0xaf, 0x74, + 0x83, 0xfe, 0xda, 0xcc, 0xf7, 0xfb, 0x7d, 0x62, 0xbd, 0x42, 0x55, 0x44, 0xc5, 0xde, 0x55, 0xd3, + 0xb0, 0x0b, 0xd3, 0xea, 0x7d, 0x96, 0xe5, 0xee, 0xe1, 0x45, 0x6d, 0xe0, 0x3d, 0x9e, 0x62, 0xd4, + 0xef, 0xb5, 0x0a, 0x32, 0x05, 0xcd, 0x38, 0x99, 0x61, 0xdd, 0xf6, 0xf3, 0x85, 0xce, 0x1a, 0xb3, + 0x57, 0xfc, 0xd1, 0x63, 0x7c, 0x84, 0xb6, 0xa2, 0x84, 0xf4, 0x3e, 0x34, 0xb9, 0x3f, 0xb9, 0x8e, + 0xd0, 0x30, 0x23, 0x0a, 0x27, 0x3c, 0x19, 0xc6, 0xd2, 0x8e, 0xb9, 0x55, 0xb7, 0x34, 0xab, 0x60, + 0x52, 0xd3, 0x45, 0x09, 0xde, 0x0b, 0x41, 0x66, 0x04, 0x71, 0x1e, 0x4e, 0xba, 0x09, 0x7b, 0xab, + 0x3a, 0x85, 0x7d, 0xfc, 0x95, 0x9b, 0x71, 0xb9, 0x78, 0x3f, 0x41, 0x44, 0x5c, 0xd2, 0x5f, 0x9f, + 0xe7, 0xc7, 0xf4, 0x6c, 0x52, 0x07, 0xda, 0xb2, 0x39, 0xc8, 0xd9, 0x77, 0x60, 0x12, 0xd3, 0x7b, + 0x70, 0x5a, 0x7e, 0x66, 0xb1, 0x0b, 0x4e, 0x86, 0xa4, 0x31, 0x47, 0x1c, 0x72, 0x8a, 0x89, 0x96, + 0x8e, 0x24, 0xa4, 0x1f, 0x07, 0x11, 0x50, 0xc3, 0x05, 0x77, 0x82, 0xfa, 0x98, 0xba, 0xec, 0xa0, + 0x71, 0x59, 0x95, 0x6f, 0xa3, 0x2d, 0x1f, 0x26, 0xc0, 0x73, 0x2e, 0x13, 0x38, 0xdc, 0x57, 0x46, + 0xec, 0x4d, 0x4f, 0x11, 0xa4, 0x35, 0x5e, 0x37, 0x0e, 0x1b, 0xe7, 0x32, 0x02, 0xf8, 0x81, 0x67, + 0xb1, 0x51, 0x1f, 0x34, 0xe5, 0xad, 0xa0, 0x07, 0xd8, 0xc0, 0xae, 0x52, 0xed, 0x4e, 0xbe, 0x6e, + 0xe8, 0x92, 0x85, 0x76, 0x8d, 0x71, 0xd6, 0xac, 0x21, 0x61, 0x14, 0x75, 0xf3, 0xb7, 0x66, 0x8e, + 0xf5, 0xd1, 0x8b, 0x7a, 0xfd, 0xc6, 0x39, 0x2d, 0x0a, 0x0e, 0x63, 0x86, 0x1e, 0x0c, 0x55, 0xbc, + 0xf3, 0x52, 0xf8, 0x8e, 0x9e, 0x94, 0xae, 0xa9, 0x29, 0x28, 0x98, 0x8c, 0x64, 0x2a, 0x8c, 0x87, + 0x21, 0x01, 0x5d, 0xd3, 0x79, 0xbf, 0x09, 0x1f, 0x8c, 0xe4, 0xa2, 0xf7, 0xc6, 0x49, 0xa9, 0xe1, + 0xea, 0x6d, 0x6d, 0xc6, 0x40, 0x4a, 0x02, 0x25, 0x2a, 0xb2, 0xc5, 0x29, 0x87, 0x00, 0x21, 0x40, + 0x88, 0x6b, 0x18, 0xea, 0x19, 0x09, 0xec, 0x39, 0x54, 0x33, 0xea, 0x10, 0x6b, 0x5a, 0x10, 0x50, + 0x3b, 0x5a, 0xd6, 0x1e, 0x12, 0x02, 0xc4, 0x09, 0x12, 0x01, 0xc1, 0x2a, 0x31, 0xd1, 0x73, 0xa3, + 0xf8, 0xcf, 0x28, 0x05, 0xe5, 0xb3, 0x46, 0x90, 0x35, 0xf2, 0x7f, 0xd5, 0x1b, 0x5f, 0xe5, 0x11, + 0x5a, 0x47, 0x6f, 0xa0, 0xf8, 0x59, 0x94, 0xeb, 0xd7, 0x08, 0x64, 0x6f, 0x3a, 0x97, 0x86, 0xeb, + 0xad, 0xa0, 0x72, 0x8d, 0xac, 0x55, 0xc5, 0xd1, 0xd4, 0xa0, 0xb9, 0x0e, 0xc0, 0x9b, 0x03, 0xd3, + 0x01, 0xef, 0xdd, 0xa9, 0x2a, 0x98, 0x11, 0xfa, 0xd6, 0x2b, 0xc2, 0x51, 0xe8, 0xed, 0x0e, 0x34, + 0x2a, 0x16, 0x04, 0xbf, 0x6f, 0x46, 0x15, 0x57, 0x26, 0xee, 0xd1, 0x6b, 0xd9, 0x06, 0x1d, 0x8c, + 0x52, 0xf3, 0xa0, 0x56, 0xe8, 0x5d, 0xb2, 0xbd, 0x95, 0x0f, 0x08, 0x14, 0xa0, 0x5b, 0x08, 0xd9, + 0x89, 0x21, 0x38, 0x39, 0x5f, 0x1a, 0x22, 0xc1, 0x20, 0x00, 0x8f, 0x98, 0x8d, 0xd1, 0x5e, 0xc7, + 0xc0, 0x97, 0x59, 0xb4, 0xe4, 0xe5, 0x69, 0xbd, 0x33, 0x75, 0xbe, 0x86, 0x0d, 0xbb, 0x28, 0xe0, + 0x3e, 0xf5, 0x09, 0xb7, 0x8f, 0xbd, 0xca, 0x27, 0x5d, 0x1d, 0x9b, 0x80, 0x89, 0x44, 0xc2, 0xc6, + 0xc6, 0x93, 0x9c, 0x3f, 0x1e, 0x5d, 0x41, 0xc4, 0xb3, 0x73, 0x1f, 0x22, 0x0d, 0x49, 0x6b, 0x68, + 0x5d, 0xb2, 0x4a, 0xba, 0x9e, 0xe8, 0x63, 0x3c, 0xa3, 0x67, 0x59, 0x5e, 0xea, 0x88, 0x35, 0xbf, + 0xc4, 0xfe, 0xb4, 0xa5, 0x93, 0x1f, 0x1e, 0x8e, 0x79, 0x5e, 0x0c, 0x64, 0x12, 0x9e, 0xf5, 0x04, + 0xf2, 0x9c, 0x29, 0x01, 0xb9, 0xf3, 0xc2, 0x33, 0xa5, 0xbb, 0xc5, 0x1f, 0x72, 0x1c, 0x73, 0x78, + 0xc1, 0x21, 0x50, 0x1d, 0x41, 0x47, 0xad, 0x5c, 0x0e, 0x7b, 0x55, 0xb9, 0x75, 0x8f, 0x56, 0xd3, + 0x0d, 0xb2, 0x4c, 0x61, 0x40, 0x83, 0xe8, 0xd7, 0xa6, 0x7b, 0x67, 0xd6, 0xac, 0x60, 0xb2, 0x04, + 0x6d, 0x1c, 0x3a, 0x59, 0x28, 0x20, 0x23, 0x6a, 0xdc, 0x1c, 0x59, 0xc2, 0x0f, 0xc4, 0xb4, 0xe9, + 0x31, 0xec, 0x91, 0xa8, 0x31, 0xb9, 0x28, 0x86, 0xb4, 0xe4, 0x15, 0xf2, 0x71, 0x71, 0xcc, 0xfc, + 0x7d, 0xf7, 0x6d, 0x6a, 0x21, 0x1b, 0x36, 0x35, 0x3e, 0xe9, 0x81, 0x3b, 0x65, 0xdd, 0x2b, 0x59, + 0xd6, 0x26, 0xf3, 0xb0, 0x02, 0xc8, 0x89, 0x4a, 0xf8, 0x12, 0x87, 0x97, 0xb8, 0x05, 0x8d, 0xea, + 0xff, 0x07, 0xe6, 0x22, 0x58, 0x34, 0x4c, 0x13, 0xf1, 0x9e, 0xf4, 0x39, 0x49, 0x60, 0x92, 0x63, + 0x21, 0x53, 0x17, 0x2d, 0x48, 0x18, 0xf4, 0x19, 0x71, 0xf1, 0xae, 0x18, 0x67, 0x33, 0xbc, 0x97, + 0xcf, 0x83, 0x5f, 0x05, 0xf1, 0xe6, 0x61, 0x07, 0x1d, 0x8c, 0xd6, 0x6e, 0x5a, 0xb9, 0xdd, 0xdc, + 0xa7, 0x58, 0x25, 0xa2, 0x32, 0xee, 0x48, 0x49, 0x86, 0x1b, 0x15, 0x5e, 0x56, 0x31, 0x91, 0x28, + 0x94, 0xf8, 0xde, 0x07, 0x70, 0x30, 0x98, 0x67, 0xa9, 0x47, 0xc0, 0x19, 0x82, 0xcf, 0x0b, 0x55, + 0x2a, 0xe6, 0x7f, 0xd2, 0x96, 0x14, 0x2a, 0xbe, 0xb5, 0x4b, 0x82, 0xe7, 0x80, 0x4b, 0x11, 0xeb, + 0x25, 0xfe, 0xdd, 0xc8, 0xdc, 0xb6, 0xa2, 0x74, 0x8c, 0x61, 0xab, 0xc5, 0x08, 0x4a, 0xcd, 0x51, + 0x94, 0x2b, 0xf6, 0xcc, 0x1c, 0x09, 0xc7, 0x84, 0xb5, 0x96, 0x24, 0xdf, 0x5a, 0x2d, 0x73, 0xb0, + 0xe1, 0xaa, 0x19, 0xca, 0x0f, 0x31, 0x28, 0xd1, 0xea, 0xe4, 0x48, 0x12, 0x0b, 0xe0, 0xb5, 0x31, + 0x70, 0x58, 0xd9, 0x80, 0xf1, 0x31, 0xff, 0xa3, 0x60, 0x0c, 0x58, 0x7d, 0x18, 0x06, 0x4d, 0x54, + 0x04, 0x3e, 0x8d, 0xb1, 0x5b, 0x4c, 0xde, 0x1c, 0x35, 0xf7, 0xab, 0x5a, 0x5e, 0x1e, 0x25, 0x41, + 0x22, 0xc4, 0xd7, 0x46, 0x52, 0x6c, 0xe3, 0xbf, 0xd6, 0xc0, 0x4a, 0x9a, 0x66, 0x0f, 0xe0, 0xa9, + 0xcb, 0x0f, 0x7b, 0xcb, 0x3e, 0xa2, 0x8f, 0xd3, 0x93, 0x2c, 0xec, 0x92, 0xf1, 0x51, 0x51, 0x6f, + 0x5e, 0x84, 0x4c, 0x41, 0x07, 0x8c, 0xa6, 0x82, 0x63, 0x80, 0x7e, 0x95, 0x94, 0xaf, 0x63, 0xc6, + 0x2a, 0x26, 0x0d, 0x01, 0x8d, 0x6a, 0x86, 0x7c, 0xaf, 0x55, 0x3b, 0x6b, 0xc6, 0x81, 0xfb, 0xe8, + 0x64, 0x12, 0xef, 0x81, 0x38, 0x2b, 0xaf, 0xd9, 0x57, 0x56, 0xb6, 0xe2, 0x83, 0x7e, 0x7d, 0x19, + 0x63, 0xd5, 0x10, 0x4f, 0x14, 0xfe, 0xb0, 0x57, 0x87, 0x5e, 0x6e, 0xe7, 0xb3, 0xb6, 0xd3, 0x0d, + 0x6e, 0x18, 0xcf, 0xa5, 0x0f, 0x5d, 0x71, 0x8d, 0x6b, 0xc7, 0xb4, 0xb1, 0x54, 0x0e, 0xe4, 0x2d, + 0xf2, 0xff, 0x0a, 0xa0, 0x75, 0xee, 0xc7, 0x37, 0xd0, 0xbd, 0xba, 0xd7, 0x35, 0x89, 0xf8, 0x7d, + 0x4b, 0x32, 0x83, 0x4f, 0x41, 0xca, 0xd9, 0xc7, 0x4b, 0xee, 0x1d, 0x95, 0xf7, 0xab, 0xdf, 0x8f, + 0x53, 0xaf, 0xac, 0x77, 0x47, 0xea, 0x92, 0x47, 0xa4, 0x25, 0xd7, 0x19, 0x8c, 0x99, 0xf7, 0x59, + 0x74, 0xb4, 0x9b, 0xe2, 0xcc, 0x6c, 0x56, 0xdc, 0xc1, 0x30, 0xa1, 0x85, 0x5b, 0xdd, 0xfa, 0x91, + 0x59, 0x2d, 0xd9, 0xce, 0x93, 0x0c, 0x31, 0xa8, 0x85, 0xcf, 0xb3, 0xb4, 0x64, 0x32, 0xa3, 0x7b, + 0xc7, 0xd4, 0x16, 0xc2, 0x57, 0x20, 0x60, 0x9b, 0x5b, 0x79, 0x4a, 0xab, 0xe1, 0xc3, 0x41, 0x30, + 0xc9, 0xe2, 0x4d, 0x60, 0x8f, 0xab, 0x0a, 0xbf, 0x42, 0x80, 0xc2, 0xc6, 0x51, 0xa2, 0xa2, 0x6a, + 0x9d, 0x5f, 0xab, 0x69, 0x7f, 0x5c, 0x7d, 0x3a, 0x13, 0xce, 0x99, 0x31, 0x55, 0x59, 0x09, 0x89, + 0xda, 0x17, 0x7d, 0x1e, 0xea, 0x7a, 0xe0, 0x75, 0x4b, 0xba, 0xb1, 0x93, 0xbc, 0xc7, 0xc5, 0x84, + 0xc7, 0x15, 0xb0, 0x9e, 0xc1, 0xd5, 0x36, 0x67, 0xe6, 0x27, 0xb4, 0xb2, 0xcc, 0xd8, 0x9b, 0x8d, + 0x58, 0x62, 0x90, 0x3b, 0x89, 0x3c, 0x84, 0x0a, 0x69, 0x7a, 0xc9, 0x24, 0x52, 0xf3, 0x50, 0x51, + 0x23, 0x52, 0x0d, 0x3d, 0xbf, 0x12, 0x0a, 0x92, 0x50, 0xae, 0xb1, 0xb5, 0xa9, 0xc9, 0x46, 0x0c, + 0xf6, 0x09, 0xdc, 0x86, 0x6b, 0x67, 0x2e, 0x8d, 0x8d, 0x93, 0x21, 0x85, 0x34, 0xdb, 0x98, 0x21, + 0x6a, 0x32, 0xa1, 0x9d, 0xec, 0x09, 0xc0, 0x92, 0x60, 0x65, 0xd8, 0xad, 0xad, 0x7b, 0xda, 0xd6, + 0xb2, 0xe5, 0xe5, 0x33, 0xd0, 0xe6, 0x85, 0x9e, 0xf6, 0x34, 0xba, 0x5e, 0xf2, 0x9f, 0x05, 0x6e, + 0x95, 0xd6, 0xfd, 0xc6, 0x18, 0x22, 0x74, 0x1a, 0x33, 0xa6, 0xad, 0x68, 0x13, 0x85, 0x05, 0xdc, + 0xb3, 0xc1, 0x76, 0xee, 0xf5, 0x6f, 0xd9, 0x27, 0x82, 0xa5, 0x28, 0x80, 0xf7, 0x0d, 0xf9, 0x80, + 0xeb, 0x41, 0x66, 0xe9, 0x7f, 0x53, 0x1c, 0x1d, 0x1c, 0x53, 0xfa, 0x55, 0xe6, 0xc0, 0x2b, 0x80, + 0xe1, 0x47, 0x5a, 0xce, 0x4b, 0x6e, 0xab, 0x20, 0xa5, 0x43, 0x34, 0xec, 0x24, 0x12, 0xc8, 0x40, + 0x86, 0x54, 0x82, 0x46, 0xe4, 0x1f, 0x8b, 0x0b, 0x5f, 0x54, 0xa1, 0xfc, 0xfd, 0xee, 0x71, 0x64, + 0x49, 0xc8, 0xd7, 0x38, 0x89, 0xea, 0x6e, 0xf4, 0x66, 0x8d, 0x1c, 0xee, 0x8d, 0xa8, 0xa0, 0x6c, + 0x15, 0xdc, 0xe6, 0x41, 0xac, 0x6b, 0x9a, 0xbb, 0x9e, 0xe7, 0x10, 0xea, 0x6e, 0x37, 0xe1, 0x9f, + 0x3d, 0x17, 0xa5, 0x93, 0x54, 0x92, 0xc2, 0x2e, 0xe9, 0x08, 0x57, 0x6c, 0x46, 0xff, 0x2e, 0xd9, + 0x80, 0x03, 0xdf, 0x99, 0xa4, 0xf4, 0xde, 0x11, 0xc6, 0x5b, 0xe0, 0x88, 0x0f, 0x87, 0x6b, 0x20, + 0x61, 0xf5, 0x37, 0x74, 0x64, 0x35, 0x62, 0xb9, 0x36, 0xcc, 0x95, 0x2a, 0xaf, 0x0e, 0x95, 0x09, + 0xe2, 0x61, 0xb2, 0xa3, 0x85, 0x21, 0x24, 0xd6, 0x5d, 0xeb, 0x7d, 0x13, 0xe4, 0xd9, 0x2e, 0xec, + 0x64, 0x24, 0x2d, 0x01, 0x07, 0xc2, 0xba, 0x5c, 0xc1, 0x2a, 0x77, 0x88, 0xf0, 0x01, 0x75, 0xf1, + 0x7b, 0xe3, 0x63, 0x67, 0x5a, 0x7c, 0x97, 0x61, 0x43, 0x36, 0x40, 0x43, 0x31, 0x40, 0x76, 0x2c, + 0x26, 0x62, 0xb1, 0xc3, 0x82, 0xc3, 0xc1, 0xec, 0xe4, 0xd6, 0x3f, 0x57, 0x41, 0xfb, 0xbc, 0x00, + 0xa4, 0x49, 0xf5, 0xd1, 0x16, 0x3a, 0x2b, 0x7c, 0x67, 0x52, 0x7a, 0x03, 0xa7, 0xf3, 0xb2, 0xa1, + 0x31, 0x18, 0x67, 0x41, 0x26, 0x59, 0x26, 0xc9, 0x1f, 0x94, 0x37, 0x72, 0xfd, 0xf8, 0x75, 0xae, + 0x63, 0xe2, 0x6b, 0xb0, 0x33, 0x6d, 0x14, 0x15, 0xf3, 0x63, 0xc4, 0xe0, 0x10, 0x77, 0xf8, 0xc8, + 0x3b, 0xc2, 0xd5, 0x5a, 0x8a, 0x6f, 0xea, 0x2a, 0xa2, 0xa0, 0xcf, 0x2f, 0xd2, 0xaf, 0x03, 0x51, + 0x97, 0x31, 0x55, 0x75, 0x4e, 0xa3, 0xa5, 0xe7, 0x2b, 0xb9, 0x1f, 0x31, 0x23, 0x78, 0x7f, 0xff, + 0x63, 0x63, 0x77, 0x5b, 0x28, 0x2d, 0xe1, 0x12, 0x6a, 0xe7, 0xf3, 0xca, 0xd0, 0x20, 0x18, 0x86, + 0x9e, 0x1b, 0xbc, 0xb4, 0x0e, 0x94, 0xbb, 0x64, 0xf3, 0x38, 0x70, 0x55, 0x6b, 0xf4, 0x5f, 0xfb, + 0x1c, 0x66, 0x4c, 0xb1, 0xe4, 0x7c, 0xea, 0x26, 0x39, 0x24, 0xe6, 0xda, 0x1f, 0x7e, 0x7f, 0x13, + 0x18, 0xf1, 0x8b, 0x5d, 0x53, 0xd3, 0xc1, 0xf9, 0xe9, 0x7c, 0x4d, 0x62, 0xeb, 0x21, 0x63, 0x90, + 0xe0, 0x5b, 0x14, 0x63, 0xed, 0xa6, 0xfc, 0x69, 0xd4, 0x29, 0x03, 0xb8, 0xfd, 0x14, 0x30, 0xd3, + 0x45, 0x18, 0x40, 0x58, 0xb5, 0x93, 0xe7, 0x5e, 0x97, 0xcf, 0x77, 0x7a, 0x14, 0x5a, 0x9c, 0x92, + 0xb5, 0xe0, 0x63, 0xa0, 0x89, 0x41, 0xf2, 0xfe, 0xe2, 0x96, 0x7e, 0x63, 0x70, 0xec, 0x72, 0x91, + 0x57, 0x6b, 0xe1, 0x3e, 0x44, 0x87, 0xdd, 0x42, 0xd2, 0x41, 0x4e, 0x9e, 0x6d, 0x6f, 0x75, 0x87, + 0xca, 0x35, 0xab, 0x46, 0xe3, 0xa4, 0x69, 0x55, 0x92, 0x60, 0x66, 0x26, 0x33, 0x66, 0xbd, 0x52, + 0x64, 0x44, 0xcf, 0x67, 0x12, 0xaa, 0x65, 0x90, 0x39, 0xe6, 0x3b, 0x7d, 0xdf, 0x77, 0xb3, 0xaa, + 0x4b, 0x31, 0x0f, 0x90, 0x76, 0x55, 0x7b, 0xd0, 0xfc, 0x6c, 0x44, 0x96, 0xd7, 0xf1, 0xd0, 0x4e, + 0xa3, 0x6c, 0xf4, 0xf5, 0xdd, 0xa9, 0xb2, 0x79, 0x32, 0x9a, 0xc7, 0x71, 0xac, 0xd1, 0x88, 0x91, + 0x11, 0x1b, 0x87, 0x08, 0x46, 0xca, 0x53, 0xed, 0x3c, 0x06, 0xed, 0x5f, 0xd7, 0xd5, 0xe9, 0x5b, + 0xdb, 0xb9, 0xfa, 0xc1, 0x90, 0x2a, 0xb2, 0x75, 0xbb, 0xb4, 0xd3, 0xf7, 0xa2, 0xd7, 0x28, 0xbe, + 0x5d, 0xa6, 0x1d, 0x02, 0x33, 0x6b, 0x43, 0x82, 0x08, 0x49, 0xe0, 0x62, 0x1c, 0x9d, 0x54, 0x1b, + 0x6b, 0xa9, 0x75, 0xe5, 0xf8, 0x17, 0xf4, 0x0f, 0x1f, 0x8b, 0x5d, 0x02, 0x6c, 0xca, 0x2a, 0x99, + 0x88, 0xa7, 0xcf, 0x05, 0xe9, 0x40, 0xe6, 0x46, 0xa5, 0xf6, 0x8a, 0x1c, 0x84, 0x1f, 0x2a, 0x17, + 0x01, 0xc8, 0xd0, 0x9d, 0x9f, 0xd2, 0x41, 0x91, 0xe6, 0xdb, 0xd2, 0xc0, 0x9c, 0xf3, 0x27, 0xe1, + 0x45, 0x75, 0x7d, 0x31, 0x25, 0x14, 0x8c, 0xc5, 0xb0, 0x76, 0x35, 0xa3, 0x93, 0xf4, 0xcc, 0xd8, + 0xa1, 0x1e, 0x10, 0x5c, 0x17, 0x9d, 0x7d, 0xc1, 0x37, 0xb7, 0xa1, 0xd7, 0xbf, 0x3a, 0x58, 0x7e, + 0x30, 0x3b, 0x24, 0xbd, 0x4d, 0xa7, 0x96, 0xa7, 0x5a, 0x48, 0xc6, 0x91, 0x7b, 0x03, 0x05, 0xf1, + 0xa8, 0xd8, 0x1b, 0xd4, 0xf1, 0x3d, 0xc0, 0x02, 0x2d, 0xc8, 0xec, 0x74, 0x18, 0xc9, 0x77, 0xd0, + 0x18, 0x2f, 0xba, 0x2e, 0x1b, 0x5b, 0xe8, 0x68, 0x7b, 0xec, 0xe7, 0xde, 0x59, 0xe0, 0x10, 0x9e, + 0x9d, 0xd8, 0x7e, 0x41, 0x6d, 0xc3, 0x23, 0x21, 0x84, 0xa5, 0x90, 0xb9, 0x35, 0x69, 0x43, 0x0c, + 0x03, 0xc2, 0x82, 0x52, 0xbe, 0x69, 0x2f, 0x25, 0x4c, 0x8b, 0x1b, 0x6f, 0xe9, 0xf4, 0x51, 0xce, + 0xe7, 0xe4, 0x96, 0x57, 0x6b, 0x51, 0x6c, 0x2f, 0x1e, 0xd5, 0x4d, 0xea, 0xdf, 0xbf, 0x06, 0x12, + 0x84, 0x9d, 0xe5, 0x7e, 0x98, 0x49, 0xff, 0xa5, 0x1b, 0x3c, 0x72, 0x30, 0xac, 0xe3, 0xf4, 0xba, + 0xe4, 0x07, 0x59, 0xba, 0x57, 0x41, 0x21, 0x5f, 0xc2, 0x4d, 0x2c, 0x3f, 0xcf, 0x74, 0xdf, 0xc9, + 0xf4, 0x50, 0x0a, 0x20, 0x24, 0x56, 0xec, 0xec, 0xd3, 0xfd, 0x3c, 0xdb, 0x46, 0x86, 0x4d, 0x0b, + 0x8c, 0xc0, 0xe0, 0x67, 0x4c, 0x78, 0x25, 0x9a, 0xc8, 0xfc, 0x77, 0xa8, 0xf4, 0xf8, 0x43, 0x87, + 0xdc, 0x66, 0xbd, 0x34, 0x26, 0x06, 0xc8, 0x5d, 0x66, 0x63, 0x80, 0x45, 0x09, 0x8f, 0x57, 0xfd, + 0xd9, 0x80, 0x67, 0x8e, 0x62, 0xf1, 0x70, 0xee, 0x7e, 0x43, 0xd5, 0x3d, 0x11, 0x35, 0x5b, 0xf9, + 0xb9, 0xb7, 0x56, 0x4c, 0x9c, 0x59, 0x71, 0x80, 0xfb, 0x35, 0xcb, 0x58, 0xb3, 0xdb, 0x0c, 0xf3, + 0x29, 0xe6, 0x38, 0x93, 0x72, 0xef, 0x19, 0x24, 0x71, 0xa4, 0x7e, 0xc2, 0x0f, 0xa7, 0x88, 0x60, + 0xa7, 0x0e, 0x65, 0x7f, 0xd7, 0x60, 0x30, 0x7a, 0xe8, 0xf0, 0x37, 0xee, 0x68, 0x87, 0x31, 0xc8, + 0x32, 0xe4, 0xa1, 0x71, 0xd2, 0xdb, 0x86, 0x9b, 0xe2, 0xf5, 0x63, 0xe6, 0x70, 0x79, 0x79, 0xa6, + 0x79, 0xab, 0x44, 0xdc, 0xe5, 0xe7, 0xe2, 0x95, 0x9a, 0x07, 0x50, 0x4a, 0xc9, 0x95, 0xa7, 0x39, + 0x8b, 0xcb, 0xb7, 0xa2, 0xf1, 0xc5, 0x37, 0x96, 0x58, 0x29, 0xd7, 0x05, 0x9b, 0xf7, 0x39, 0x9c, + 0xef, 0xbb, 0x0d, 0xde, 0xb7, 0xb1, 0xab, 0xa1, 0x31, 0xc2, 0xe1, 0x01, 0xfb, 0x76, 0xfe, 0x2a, + 0x61, 0x35, 0x8f, 0x50, 0x93, 0x48, 0xbb, 0x44, 0xb0, 0xfc, 0x78, 0xd7, 0xef, 0x34, 0x98, 0x49, + 0xbb, 0x96, 0x59, 0x25, 0x37, 0x26, 0x04, 0x86, 0x97, 0x0c, 0x0f, 0xd4, 0x20, 0xb1, 0x80, 0x23, + 0xd2, 0x33, 0x98, 0xad, 0x1d, 0xb5, 0xc4, 0x7d, 0x74, 0x69, 0xa8, 0x73, 0xba, 0xb5, 0x71, 0xfe, + 0xd9, 0x5c, 0xfe, 0xd2, 0x4b, 0x6a, 0xa9, 0x0d, 0xfc, 0x19, 0x2f, 0x7c, 0x6e, 0x73, 0xab, 0xa9, + 0xbb, 0x1e, 0xe4, 0x50, 0xc0, 0x58, 0xab, 0xef, 0xf6, 0xe8, 0x48, 0x04, 0x8a, 0x97, 0xbb, 0x0d, + 0x8c, 0x10, 0x9c, 0x68, 0xed, 0xe7, 0x18, 0x8b, 0xcd, 0x6d, 0xcb, 0x14, 0x5b, 0xba, 0x08, 0x61, + 0x0d, 0xbb, 0x4a, 0xe1, 0x13, 0x67, 0xca, 0x68, 0x4d, 0x36, 0x69, 0xe3, 0xab, 0x01, 0x00, 0x97, + 0x1e, 0x7e, 0xb0, 0x09, 0x24, 0x13, 0xf2, 0xce, 0xda, 0x34, 0xdf, 0x91, 0x60, 0x2b, 0xdc, 0x58, + 0xe2, 0xf1, 0x39, 0xe0, 0x6c, 0x7d, 0x38, 0xd0, 0x6a, 0xeb, 0xa7, 0xb1, 0x6e, 0xa6, 0x2a, 0x62, + 0x25, 0x41, 0xb3, 0x30, 0x96, 0x34, 0xb0, 0x46, 0x0d, 0x37, 0x4c, 0x28, 0x66, 0x49, 0x5a, 0x5e, + 0x86, 0x3b, 0x3d, 0x02, 0xa3, 0x4a, 0x08, 0xd8, 0xb1, 0xdd, 0x64, 0x61, 0xaa, 0xb9, 0x41, 0xdb, + 0x60, 0xe7, 0xc1, 0x40, 0x90, 0xe1, 0xce, 0x48, 0x5a, 0x13, 0x58, 0xd2, 0x55, 0x07, 0x08, 0xa4, + 0xeb, 0x7c, 0x43, 0x17, 0x31, 0x5c, 0xb2, 0x28, 0x76, 0x37, 0x81, 0x50, 0x94, 0xf8, 0xa3, 0x3a, + 0x0f, 0xe1, 0x36, 0x01, 0x68, 0xe5, 0x0d, 0x27, 0x88, 0xeb, 0xec, 0x56, 0x69, 0x31, 0xd7, 0x18, + 0xb9, 0x02, 0x95, 0xb0, 0xe9, 0xca, 0x32, 0x69, 0xd1, 0x27, 0x3a, 0x9b, 0x07, 0xdc, 0x2f, 0xc4, + 0x70, 0x68, 0x5d, 0xbd, 0x11, 0x83, 0x4c, 0x71, 0x1a, 0x5d, 0x0a, 0xde, 0xc2, 0x14, 0x52, 0xc6, + 0x7a, 0xa5, 0x73, 0x3e, 0x78, 0x16, 0xaa, 0x76, 0x77, 0xeb, 0x99, 0x13, 0xfe, 0x9b, 0x2b, 0x7b, + 0x4d, 0x86, 0xc7, 0x1e, 0x4e, 0x05, 0x10, 0x6a, 0xc9, 0x29, 0xb0, 0xa9, 0xbe, 0x20, 0x01, 0x87, + 0x21, 0x70, 0xf8, 0xe1, 0x69, 0xe9, 0xd0, 0x96, 0x4f, 0x03, 0xd3, 0x76, 0xa8, 0x0b, 0x71, 0x6d, + 0x9b, 0x5e, 0x9f, 0xd0, 0x50, 0x19, 0x8a, 0x39, 0x71, 0x78, 0xab, 0x7f, 0xbf, 0x3d, 0xae, 0x8a, + 0xb7, 0xfe, 0xe8, 0x38, 0x53, 0xab, 0xfb, 0x2f, 0x04, 0xc5, 0x2e, 0x72, 0xde, 0x74, 0x7f, 0x01, + 0x50, 0x01, 0xf9, 0x8f, 0x8b, 0x34, 0x41, 0xe6, 0x6f, 0x9f, 0x98, 0xa4, 0xb1, 0x7d, 0x2e, 0x78, + 0xbc, 0x8e, 0xce, 0x8f, 0xe2, 0x28, 0xbd, 0x24, 0x8b, 0x3e, 0x6b, 0x9c, 0xad, 0x16, 0x85, 0x48, + 0x34, 0x52, 0xeb, 0x5e, 0x32, 0x79, 0x42, 0xaa, 0x97, 0xd8, 0x32, 0x46, 0x38, 0x22, 0x69, 0x81, + 0x11, 0xdc, 0xf3, 0x65, 0x03, 0xa7, 0x98, 0xdf, 0xd3, 0x1b, 0xfd, 0x89, 0x45, 0x89, 0x60, 0xb4, + 0x53, 0xd4, 0xb8, 0xec, 0xae, 0x33, 0x41, 0x56, 0x62, 0x57, 0x7c, 0x55, 0x2f, 0x2b, 0x31, 0x20, + 0xef, 0xc1, 0x23, 0x55, 0x01, 0xc5, 0xf3, 0x99, 0x41, 0x05, 0xc1, 0x12, 0x02, 0x02, 0x27, 0xcb, + 0x63, 0x41, 0x5f, 0x66, 0x3c, 0xce, 0x2a, 0x1f, 0xe8, 0xc4, 0x82, 0x8e, 0xf7, 0x06, 0xa8, 0x17, + 0xc6, 0xf7, 0x13, 0xca, 0xf0, 0x10, 0x92, 0xec, 0xa9, 0xf3, 0x74, 0x9d, 0xf7, 0xdb, 0x71, 0xb5, + 0x51, 0x9d, 0xe0, 0xfd, 0x76, 0x90, 0x3f, 0x05, 0x22, 0xf4, 0xf2, 0x21, 0x81, 0x75, 0xdb, 0x5c, + 0x2b, 0xd1, 0x08, 0xbe, 0x9c, 0x5b, 0x7b, 0x28, 0xc5, 0xf9, 0xe9, 0xb2, 0xd2, 0x12, 0xaa, 0x74, + 0xad, 0xde, 0xfb, 0xbe, 0xc0, 0x1c, 0x96, 0xce, 0x7d, 0xef, 0xf4, 0xf8, 0x5f, 0xf6, 0x75, 0xa9, + 0x2f, 0x5d, 0xa4, 0x7d, 0xb0, 0xb3, 0xbc, 0x95, 0x23, 0xd4, 0x19, 0xfd, 0x00, 0xed, 0xf7, 0x05, + 0x0a, 0x66, 0x36, 0x58, 0x0f, 0x83, 0xdb, 0x9e, 0x33, 0x35, 0x52, 0x7d, 0x7f, 0xe5, 0xa9, 0x76, + 0xe2, 0x6b, 0x67, 0x41, 0xf9, 0x1f, 0x37, 0x8e, 0xd2, 0x16, 0x08, 0x64, 0x3f, 0xff, 0xd5, 0x09, + 0x21, 0xa9, 0xf5, 0xcc, 0xd6, 0x33, 0x97, 0x17, 0xfd, 0x01, 0x2b, 0xf8, 0xf6, 0xe7, 0xd6, 0xfd, + 0xa6, 0xcc, 0x7a, 0xcc, 0xac, 0x69, 0x6e, 0x03, 0x02, 0x32, 0xd1, 0x24, 0xfa, 0x6e, 0xd5, 0xbc, + 0x0b, 0x38, 0x9b, 0x46, 0xdc, 0x88, 0x84, 0x55, 0x5c, 0x44, 0x4d, 0x87, 0xac, 0xb4, 0xc4, 0x23, + 0xda, 0x69, 0x74, 0x85, 0xb6, 0xca, 0xce, 0xec, 0x0a, 0x0e, 0x74, 0x2d, 0xff, 0x87, 0x6f, 0xa6, + 0xf3, 0xc2, 0xcb, 0x64, 0x5e, 0x5c, 0x4f, 0xde, 0xb0, 0x2b, 0xb7, 0x16, 0x0f, 0x4c, 0xea, 0x5f, + 0x45, 0x6f, 0x50, 0x9c, 0xc8, 0x3c, 0x4e, 0xb4, 0x0a, 0xb2, 0xbb, 0xf7, 0xf4, 0xa3, 0x28, 0x72, + 0xe3, 0x0b, 0xed, 0x4e, 0x9d, 0x06, 0x95, 0xbd, 0xc5, 0x14, 0x29, 0x0a, 0x34, 0x97, 0xdb, 0x2e, + 0xa7, 0x85, 0xcd, 0xa5, 0x95, 0xdc, 0x05, 0x0d, 0xea, 0xaa, 0x2f, 0x25, 0x48, 0xca, 0x69, 0xa4, + 0xaa, 0xec, 0x34, 0xae, 0x68, 0x1a, 0x93, 0x2f, 0x84, 0x96, 0xa8, 0x50, 0x48, 0x89, 0x44, 0x62, + 0xa9, 0xcf, 0x20, 0x8d, 0xfa, 0x38, 0x41, 0x56, 0xf4, 0xb8, 0x86, 0xce, 0x15, 0xcc, 0x25, 0xfb, + 0xe1, 0xa2, 0x1a, 0x4b, 0x49, 0x80, 0x64, 0x37, 0x60, 0x3c, 0xb3, 0x67, 0xee, 0x48, 0xf0, 0xfd, + 0x0e, 0x92, 0x57, 0x68, 0xf4, 0xf1, 0x57, 0x9c, 0x73, 0x9c, 0xe7, 0xc8, 0x1d, 0xa0, 0x10, 0xf4, + 0x0d, 0x38, 0x06, 0x41, 0x7a, 0x60, 0x6e, 0x37, 0xc5, 0x50, 0x62, 0xbe, 0x4e, 0x59, 0x3a, 0xba, + 0x70, 0x43, 0xc5, 0x51, 0xec, 0x7b, 0xb5, 0xa2, 0xb8, 0x88, 0x4d, 0xb2, 0xf7, 0x11, 0xe0, 0xa3, + 0x04, 0xd0, 0xe7, 0x0b, 0x37, 0xa4, 0xf3, 0xa1, 0xb1, 0x15, 0xa0, 0x1f, 0x03, 0x8f, 0xeb, 0xa2, + 0x50, 0x58, 0x93, 0x49, 0xa8, 0x0b, 0x20, 0x23, 0x3c, 0x3f, 0xd7, 0xc3, 0xf1, 0xac, 0x40, 0x46, + 0x9e, 0xf6, 0xa7, 0x34, 0x22, 0xd8, 0x39, 0x2e, 0x7b, 0xb2, 0x1d, 0x81, 0x36, 0x63, 0x4b, 0x37, + 0x5d, 0x22, 0x6a, 0x74, 0x21, 0x7a, 0x9a, 0xc9, 0x96, 0x2d, 0xaa, 0x6a, 0xa3, 0x42, 0x23, 0x63, + 0xfc, 0xe1, 0x2c, 0xba, 0x79, 0x9c, 0x9f, 0xf6, 0x07, 0x04, 0xdd, 0xcc, 0xed, 0xf5, 0x21, 0x54, + 0xf9, 0xf4, 0x4d, 0xb6, 0xe7, 0x78, 0xd5, 0x0a, 0xc7, 0x16, 0x93, 0x00, 0x7b, 0x30, 0xc9, 0x33, + 0xa6, 0x39, 0xa8, 0x07, 0x32, 0xeb, 0xf9, 0x3c, 0x6a, 0xee, 0x85, 0xbe, 0x6e, 0x27, 0xd2, 0x15, + 0xa0, 0xbd, 0x14, 0xac, 0x7a, 0x14, 0xf6, 0xea, 0xcd, 0xda, 0xdd, 0x75, 0xf2, 0x66, 0xbf, 0xef, + 0x56, 0x06, 0x09, 0xbc, 0xab, 0x64, 0x6b, 0xf6, 0x7e, 0x14, 0x9f, 0x84, 0x4d, 0x63, 0xd3, 0xc9, + 0x85, 0x94, 0x44, 0x84, 0xeb, 0xae, 0x5f, 0xd2, 0xba, 0xfa, 0xd7, 0xf5, 0x60, 0x17, 0x84, 0xd9, + 0x15, 0xc8, 0x54, 0x6c, 0x57, 0x69, 0x82, 0xc1, 0xe7, 0xd8, 0xfa, 0xcd, 0x67, 0x2a, 0x3c, 0xbe, + 0x5d, 0xd4, 0x4a, 0xfd, 0xa6, 0x0a, 0xa6, 0x8a, 0xfa, 0xbb, 0x2e, 0x3b, 0x05, 0xaa, 0xc2, 0xd9, + 0x9a, 0x54, 0x7a, 0xc0, 0x27, 0x15, 0x97, 0xda, 0x59, 0xd7, 0x24, 0x08, 0x6a, 0x92, 0xd4, 0xee, + 0x31, 0xf2, 0x6c, 0x1f, 0x19, 0xe6, 0x9d, 0x3e, 0xab, 0xa6, 0x47, 0xb3, 0xab, 0x66, 0x81, 0xa3, + 0x2a, 0xda, 0x66, 0xf4, 0x4e, 0x54, 0xe5, 0xcc, 0x58, 0x8c, 0x56, 0x74, 0xc3, 0xb4, 0x96, 0x43, + 0x9f, 0x3d, 0x2a, 0x73, 0x97, 0xcb, 0x75, 0xf1, 0x54, 0x75, 0x0b, 0x7a, 0xce, 0x12, 0xb2, 0x3f, + 0x22, 0xfe, 0xc3, 0x99, 0x14, 0xd4, 0x8b, 0x52, 0x8d, 0xc2, 0x33, 0xe2, 0xfb, 0x28, 0xfd, 0xc0, + 0xec, 0x55, 0x88, 0x09, 0xd8, 0x3a, 0x70, 0xf4, 0x13, 0x46, 0xe6, 0x39, 0x65, 0x25, 0x19, 0xbb, + 0x2a, 0xc4, 0x9e, 0x79, 0x11, 0xac, 0x58, 0xd3, 0x43, 0x12, 0x2b, 0x58, 0xe6, 0xad, 0x70, 0x6f, + 0x03, 0xfc, 0xf2, 0xd0, 0x13, 0x69, 0xd6, 0xe2, 0x97, 0x49, 0xbd, 0xe9, 0x76, 0x3d, 0x5e, 0xd7, + 0xf1, 0xae, 0x3a, 0xab, 0xa3, 0xa9, 0xbe, 0x25, 0x4f, 0xdd, 0xf3, 0xdd, 0x85, 0xd8, 0xad, 0x3c, + 0x86, 0xe2, 0x32, 0x1d, 0xd9, 0x42, 0x04, 0x66, 0x48, 0x90, 0xfb, 0x69, 0x3d, 0x84, 0x03, 0xa0, + 0xc2, 0x1d, 0x35, 0xcb, 0xd9, 0xf3, 0xc7, 0xa6, 0x4a, 0x49, 0x68, 0x5e, 0x6e, 0xa6, 0x09, 0x89, + 0xa6, 0x3f, 0xb5, 0xc4, 0x15, 0x9a, 0xb5, 0x9b, 0xa8, 0x7c, 0xe8, 0x23, 0x8e, 0x1c, 0x9a, 0xaa, + 0xf5, 0x2b, 0xf2, 0xfa, 0x74, 0x54, 0x8d, 0xe7, 0xfa, 0x23, 0x70, 0x31, 0x0e, 0x42, 0xfc, 0xad, + 0x55, 0x68, 0x97, 0x79, 0xf0, 0xf4, 0xa7, 0xed, 0x91, 0x78, 0xac, 0xe6, 0x84, 0x55, 0xf8, 0x27, + 0x22, 0x3d, 0xcb, 0x44, 0xb7, 0x44, 0xe9, 0xa8, 0xe4, 0x68, 0xc2, 0xa1, 0xbd, 0x8d, 0xec, 0x48, + 0xa1, 0x07, 0x23, 0x66, 0xbd, 0x2b, 0x4b, 0x32, 0x49, 0xb2, 0x61, 0x84, 0x6b, 0xb3, 0x46, 0xbf, + 0xbb, 0x5d, 0x21, 0xe0, 0x84, 0x1c, 0x43, 0x35, 0xb9, 0x45, 0x58, 0x24, 0xa0, 0x83, 0xac, 0xb8, + 0x9d, 0xa3, 0x1d, 0xa4, 0xd5, 0x2c, 0x67, 0x2a, 0x6a, 0x44, 0x57, 0xc4, 0x12, 0x64, 0x5f, 0xb2, + 0xa6, 0xa9, 0x53, 0x24, 0xa0, 0x19, 0x37, 0x08, 0x33, 0x1e, 0x91, 0x5f, 0x8f, 0x44, 0x55, 0xf2, + 0xb8, 0x0b, 0x39, 0xac, 0x26, 0x4a, 0x4e, 0x8d, 0xbc, 0xbf, 0x59, 0x85, 0xa9, 0x5e, 0x04, 0x4f, + 0x30, 0x48, 0x7f, 0xac, 0x37, 0x1b, 0x44, 0x2b, 0xac, 0x48, 0xc1, 0x07, 0xec, 0xc8, 0x9d, 0xc6, + 0x59, 0x6f, 0x4b, 0xa2, 0x56, 0x0a, 0xba, 0x77, 0xbe, 0x84, 0xba, 0x63, 0x43, 0xb4, 0xd9, 0xa7, + 0xa8, 0xaf, 0x17, 0xc9, 0x3e, 0xa1, 0xfc, 0xc9, 0xf1, 0x86, 0x85, 0x25, 0x0e, 0x81, 0x1c, 0x25, + 0x1a, 0x6d, 0x36, 0x89, 0x7e, 0xe8, 0x63, 0x46, 0x55, 0x3a, 0x99, 0x50, 0xa6, 0xbf, 0xef, 0x72, + 0x5f, 0xb6, 0x48, 0x7d, 0x5e, 0x40, 0x7f, 0x21, 0x81, 0xbc, 0x0d, 0x0b, 0xad, 0x57, 0xdc, 0x4d, + 0xbe, 0x7c, 0x7d, 0x54, 0x18, 0x34, 0xf3, 0x40, 0xc2, 0xc9, 0x93, 0xf1, 0x50, 0x23, 0xcd, 0x18, + 0x68, 0xf0, 0xad, 0x52, 0x9d, 0x90, 0x07, 0x8d, 0x5f, 0x60, 0xca, 0xb2, 0xb6, 0x35, 0x3a, 0xe5, + 0xe7, 0x80, 0x44, 0xd3, 0x62, 0x12, 0x25, 0x0d, 0x0c, 0xc5, 0x8c, 0x39, 0x3e, 0x59, 0x1c, 0x70, + 0x76, 0x99, 0x8a, 0x29, 0x4b, 0xbe, 0x09, 0x58, 0x19, 0x99, 0xaa, 0x7f, 0x78, 0x2b, 0xc8, 0x55, + 0x9e, 0xd6, 0xef, 0x18, 0xb9, 0xd7, 0xd2, 0x47, 0x8c, 0xdd, 0xbd, 0x80, 0xed, 0x9b, 0x79, 0x80, + 0x46, 0x35, 0x1c, 0xbb, 0x4b, 0xbd, 0x14, 0x6f, 0x68, 0x87, 0x26, 0x34, 0xf6, 0x76, 0x3f, 0x47, + 0x67, 0xa1, 0x19, 0x4e, 0x46, 0x91, 0xc0, 0x37, 0xa3, 0xd3, 0x4d, 0xdd, 0x54, 0xd4, 0x5a, 0x2b, + 0x7d, 0xad, 0x42, 0x0d, 0x35, 0x9a, 0xca, 0xd9, 0x61, 0x9a, 0xf4, 0x52, 0x51, 0x94, 0x4b, 0xa2, + 0x08, 0xde, 0xa8, 0x4b, 0xe9, 0xe6, 0x7f, 0x93, 0xa0, 0x7c, 0x7b, 0x39, 0x59, 0xc8, 0xc2, 0xa3, + 0xc7, 0x46, 0xf0, 0x99, 0xdb, 0x62, 0x57, 0x01, 0x91, 0x20, 0xe6, 0x8d, 0x14, 0xc1, 0x13, 0xfd, + 0xd1, 0x5d, 0x84, 0xb7, 0xf5, 0xd3, 0x56, 0x49, 0x6d, 0x32, 0x24, 0x1a, 0x4e, 0xbd, 0x19, 0xb0, + 0x90, 0x12, 0x32, 0x2f, 0x89, 0x72, 0x66, 0xc3, 0x2a, 0x18, 0x44, 0xea, 0x6e, 0x6c, 0x28, 0x20, + 0x8e, 0x59, 0x93, 0xc2, 0x9b, 0x94, 0xea, 0x6f, 0x85, 0x32, 0xff, 0x4a, 0xce, 0xd6, 0x20, 0x8d, + 0x43, 0x24, 0x8c, 0xf1, 0x48, 0xec, 0x63, 0x95, 0xd3, 0x26, 0xb5, 0xc0, 0xc4, 0xe9, 0xdc, 0x95, + 0x66, 0xef, 0xd8, 0xf3, 0x82, 0x1c, 0xf0, 0x5b, 0xb5, 0xf0, 0xd9, 0x8e, 0x8b, 0x62, 0xd8, 0x81, + 0xd1, 0xd6, 0x17, 0xca, 0x22, 0x79, 0x11, 0xcd, 0x09, 0x1d, 0x66, 0x80, 0xdf, 0xe4, 0xc3, 0x17, + 0x30, 0x27, 0x15, 0x7a, 0x22, 0x42, 0xa2, 0x21, 0x24, 0x6f, 0x63, 0xb3, 0xb1, 0x18, 0x03, 0x30, + 0xb1, 0x5e, 0x9d, 0x79, 0xeb, 0xaf, 0x24, 0x3c, 0xc7, 0xaf, 0x3b, 0x5b, 0xac, 0xf1, 0xdf, 0x9f, + 0x3d, 0xfa, 0x52, 0xae, 0x91, 0x0b, 0xe0, 0x2e, 0x93, 0x6f, 0x6b, 0xac, 0x5b, 0xe3, 0x3c, 0x0d, + 0x2a, 0x95, 0x89, 0x12, 0xa5, 0x6b, 0xb7, 0xdc, 0xc7, 0x22, 0xac, 0xce, 0xe9, 0xf6, 0x08, 0xe9, + 0x16, 0xcf, 0x03, 0x4a, 0xdb, 0x43, 0x47, 0x82, 0x4e, 0x55, 0x46, 0x20, 0x4b, 0xeb, 0xc4, 0xd6, + 0x0e, 0xc1, 0xff, 0xb7, 0x40, 0x4d, 0xfb, 0x49, 0xc0, 0xbb, 0xdb, 0x4e, 0xa3, 0x64, 0x36, 0x7c, + 0x69, 0xe6, 0xf4, 0x1b, 0xad, 0x4f, 0xa5, 0xcf, 0x68, 0xd2, 0xbc, 0x71, 0x18, 0xad, 0xbc, 0x35, + 0xab, 0x4e, 0xd2, 0xcd, 0x26, 0xe8, 0x27, 0x82, 0xc5, 0x37, 0xeb, 0x90, 0xa1, 0x4d, 0x2a, 0xf7, + 0xf5, 0x40, 0xf9, 0x28, 0xc8, 0x96, 0x9b, 0xa4, 0xff, 0x4f, 0x6f, 0x1e, 0x6b, 0x51, 0xa5, 0xc1, + 0xe1, 0x11, 0xba, 0x00, 0xa8, 0x63, 0xc6, 0xd1, 0xaa, 0x97, 0x61, 0x6d, 0xb2, 0xf1, 0x2f, 0x9b, + 0x90, 0x32, 0xd8, 0x6b, 0xba, 0x00, 0xa7, 0xcb, 0xe1, 0xcd, 0xb7, 0xb8, 0x80, 0x5b, 0x60, 0x9a, + 0x04, 0xb1, 0x59, 0x00, 0x1f, 0x45, 0xc7, 0x2a, 0x08, 0xcb, 0xc1, 0xee, 0x0d, 0xb4, 0x71, 0xdf, + 0x7a, 0xdc, 0xa6, 0xbb, 0xfe, 0xa0, 0x4d, 0x49, 0xbb, 0x2c, 0x13, 0x25, 0x2e, 0x9f, 0x55, 0xaa, + 0x73, 0x16, 0x39, 0xd5, 0x83, 0x35, 0x2f, 0xb4, 0xef, 0x69, 0x9e, 0x3e, 0x4c, 0x67, 0x00, 0x05, + 0x59, 0xc3, 0x38, 0x77, 0x1e, 0x9d, 0x93, 0xfa, 0x3f, 0x49, 0x9f, 0x58, 0x1d, 0xa3, 0x05, 0xec, + 0xd7, 0x51, 0x30, 0xe1, 0x34, 0x83, 0xb3, 0xd1, 0x54, 0x84, 0x63, 0xd6, 0xb7, 0x0c, 0x61, 0xa5, + 0x36, 0x12, 0xf8, 0x6d, 0xc6, 0xb8, 0xdc, 0x5d, 0x97, 0x9a, 0x7a, 0x81, 0xaa, 0x39, 0xfa, 0xef, + 0x46, 0x82, 0x7c, 0xc0, 0x5b, 0xbe, 0x66, 0xd9, 0x06, 0xe5, 0xe1, 0x91, 0xdb, 0xa6, 0x33, 0x80, + 0x69, 0x8c, 0xcd, 0x9d, 0x52, 0x59, 0x95, 0x06, 0xa5, 0x26, 0x62, 0x38, 0xa0, 0x20, 0x6b, 0x98, + 0x14, 0xed, 0xf2, 0xda, 0x70, 0x10, 0x6c, 0x79, 0x6b, 0x4c, 0x18, 0xa4, 0x72, 0x08, 0x27, 0x8b, + 0x42, 0x27, 0x4f, 0x0a, 0x0c, 0xf1, 0xe6, 0x5d, 0x0b, 0xda, 0x6c, 0x2c, 0x18, 0x91, 0xbe, 0x62, + 0xfe, 0x2f, 0xee, 0xdf, 0x12, 0xcb, 0x16, 0xcc, 0x73, 0x4a, 0x13, 0xe9, 0x31, 0x3b, 0xbe, 0x68, + 0x2d, 0x1c, 0xa0, 0xfc, 0x70, 0x11, 0x45, 0xcd, 0x47, 0x6c, 0x3e, 0x6f, 0xdc, 0xc6, 0xa3, 0x25, + 0x0e, 0xa5, 0xff, 0xff, 0x3d, 0x55, 0x04, 0xbc, 0xfe, 0x60, 0x3d, 0xbd, 0x31, 0x95, 0xa5, 0x02, + 0xdc, 0x42, 0x26, 0x15, 0x6f, 0x33, 0x77, 0x67, 0xb2, 0x36, 0x46, 0x1d, 0x1c, 0x3e, 0x2b, 0x80, + 0x59, 0xac, 0x12, 0xa8, 0x0f, 0x64, 0xb3, 0xa9, 0x8b, 0x58, 0xef, 0x27, 0x43, 0xcc, 0x99, 0x7e, + 0x38, 0x61, 0xcb, 0x47, 0xbe, 0x1f, 0x00, 0xe5, 0x2a, 0xb2, 0x1b, 0x56, 0x56, 0x7c, 0xfe, 0xcb, + 0x0a, 0x89, 0xf6, 0xfc, 0x83, 0xe8, 0x82, 0xf2, 0xbe, 0xc8, 0xca, 0x32, 0xf0, 0x9c, 0x7a, 0x84, + 0x4f, 0xef, 0xc0, 0xdf, 0x99, 0xf5, 0x7b, 0x51, 0xd6, 0x4f, 0x9d, 0xac, 0xb0, 0x28, 0x6b, 0x0c, + 0x47, 0x12, 0xc0, 0xf8, 0x79, 0xec, 0x6f, 0x7a, 0x7c, 0xa6, 0x37, 0xd2, 0xe2, 0x8a, 0x74, 0x45, + 0x5a, 0x49, 0x7b, 0xb2, 0x74, 0x96, 0xb4, 0x9f, 0xeb, 0x3d, 0x45, 0x8e, 0x4d, 0x7e, 0x67, 0x97, + 0x06, 0x9a, 0x8c, 0xac, 0x43, 0x55, 0xa1, 0x9a, 0x60, 0xb9, 0xa1, 0x79, 0xcd, 0xa2, 0xef, 0x72, + 0x45, 0xe3, 0x79, 0xab, 0x6f, 0x7a, 0xa1, 0x9e, 0x11, 0x88, 0x14, 0xe8, 0xce, 0xd1, 0xce, 0x52, + 0x5c, 0x4d, 0xa6, 0xf8, 0x78, 0x71, 0x26, 0xb0, 0x56, 0xcf, 0xdc, 0x87, 0xb9, 0xc1, 0xf0, 0xdf, + 0x71, 0x4b, 0xfb, 0x9c, 0x9e, 0xce, 0x2d, 0x32, 0x85, 0xd4, 0x89, 0x1f, 0x1e, 0x42, 0x3f, 0xd4, + 0x75, 0xfa, 0x41, 0x1d, 0x9f, 0x47, 0x9e, 0x4b, 0x3a, 0x71, 0xdf, 0x8d, 0x5a, 0x9a, 0x3a, 0x94, + 0x46, 0xe0, 0xe6, 0x10, 0xcf, 0x6b, 0xe1, 0x37, 0x94, 0x2b, 0x18, 0xbd, 0x41, 0x18, 0x06, 0xdd, + 0x1d, 0x3c, 0x57, 0x9f, 0x42, 0xcc, 0x1b, 0xfa, 0x0b, 0x2b, 0xc8, 0xb4, 0x14, 0x3c, 0x2d, 0x4b, + 0x90, 0x23, 0xf3, 0xcf, 0xca, 0x8d, 0x14, 0x2d, 0xcd, 0x3a, 0x5d, 0x4e, 0x30, 0x72, 0x87, 0x4b, + 0xd7, 0xe0, 0xf1, 0x2d, 0x0c, 0x20, 0xd4, 0x9d, 0x58, 0xa2, 0xf2, 0x1b, 0x7b, 0xa5, 0x99, 0x55, + 0x4a, 0x1a, 0xe8, 0x56, 0xf6, 0xa8, 0x2a, 0x79, 0xc9, 0xb5, 0x6a, 0x35, 0x41, 0x0a, 0x74, 0x84, + 0xca, 0x13, 0xdc, 0x9d, 0x6f, 0xae, 0x69, 0x4a, 0x11, 0xa2, 0x51, 0x65, 0x26, 0x80, 0x8f, 0x7a, + 0x24, 0xd4, 0x4f, 0x51, 0xe1, 0x4e, 0xa9, 0x1c, 0xe5, 0x2a, 0x5e, 0x64, 0x0e, 0x8b, 0x8d, 0xf9, + 0xa9, 0x8b, 0x5d, 0x65, 0x05, 0xe1, 0xf6, 0xc4, 0x8d, 0x47, 0x3d, 0x9a, 0xc8, 0xdc, 0x58, 0xb6, + 0x8a, 0x68, 0x30, 0x9b, 0x03, 0x8d, 0x21, 0x3c, 0xa8, 0x40, 0x7b, 0x57, 0x69, 0xec, 0xbc, 0xcf, + 0x5e, 0x20, 0x3d, 0x30, 0xd7, 0x55, 0x5c, 0x51, 0xd4, 0x39, 0x4e, 0xf0, 0x01, 0xca, 0x68, 0x20, + 0xec, 0x78, 0x8a, 0xf0, 0x54, 0x56, 0xe3, 0xa7, 0x87, 0x58, 0xcc, 0x1d, 0x15, 0xe5, 0x3d, 0x0b, + 0x76, 0x21, 0x05, 0xd8, 0xcd, 0x60, 0x38, 0x3f, 0x6c, 0x20, 0xc7, 0x56, 0xe8, 0x3c, 0x9c, 0x54, + 0xc4, 0xd1, 0x17, 0x36, 0xce, 0xaa, 0x69, 0xbc, 0x4d, 0x43, 0x90, 0x80, 0x7d, 0xf9, 0xd3, 0x2c, + 0x46, 0x0c, 0x9e, 0x02, 0x91, 0xbb, 0x51, 0x9b, 0x45, 0x3f, 0xe2, 0xc0, 0x8c, 0x35, 0xc7, 0x98, + 0xb9, 0xe1, 0xc6, 0x5f, 0x26, 0x40, 0xa7, 0x4e, 0x01, 0xa9, 0xae, 0x28, 0xd1, 0x05, 0xaa, 0xe9, + 0x8e, 0xc4, 0x68, 0xb6, 0xe4, 0x01, 0x9a, 0x3c, 0x6c, 0x55, 0x3e, 0x39, 0x2c, 0x7e, 0xee, 0x48, + 0xda, 0x2d, 0x4e, 0xb1, 0xd6, 0x3e, 0xb9, 0xfc, 0x91, 0x36, 0x77, 0xb1, 0xaf, 0x8d, 0x92, 0xca, + 0xb3, 0xbc, 0xc6, 0x88, 0xfc, 0xe8, 0x2e, 0xa5, 0x6b, 0x63, 0xc3, 0xe4, 0xd3, 0xbf, 0xd0, 0xe9, + 0x55, 0x3d, 0x97, 0x69, 0x7a, 0xf7, 0xa6, 0x4d, 0x96, 0xb7, 0x37, 0x22, 0x86, 0x39, 0x72, 0x2a, + 0x4f, 0x96, 0xf7, 0x9e, 0x99, 0xf6, 0x8f, 0x71, 0xec, 0xee, 0x0e, 0xe7, 0x85, 0x04, 0xd3, 0x06, + 0xd5, 0xe8, 0x13, 0xe0, 0x9c, 0x2a, 0xef, 0x3e, 0x2d, 0xdd, 0x08, 0x89, 0x43, 0x3e, 0x93, 0xe2, + 0x9e, 0x17, 0xbc, 0xd6, 0x0f, 0xbd, 0x72, 0x93, 0xd0, 0x79, 0xcf, 0xd8, 0xce, 0x3c, 0x28, 0x45, + 0x73, 0x49, 0x1c, 0x89, 0x76, 0xeb, 0x1c, 0xc9, 0x1f, 0xb9, 0x4c, 0xf2, 0x2b, 0x22, 0x40, 0xef, + 0xe1, 0x03, 0xd0, 0x5b, 0xb4, 0x60, 0xb4, 0x39, 0x7b, 0x63, 0x24, 0xba, 0x1a, 0x32, 0xc8, 0x50, + 0xbb, 0x39, 0x10, 0xe6, 0x26, 0x36, 0x82, 0x37, 0x04, 0xd1, 0x33, 0x32, 0x4e, 0x01, 0x02, 0x1e, + 0x6b, 0x15, 0xc9, 0x6a, 0xf9, 0x59, 0x28, 0x90, 0x3b, 0xa9, 0xb0, 0xf8, 0x31, 0x00, 0xbd, 0xa8, + 0xe3, 0x26, 0x42, 0x89, 0xfe, 0x84, 0xfb, 0xab, 0xb9, 0xc1, 0x31, 0xca, 0x04, 0xcf, 0x72, 0x9b, + 0x44, 0xa7, 0xd5, 0x5b, 0x43, 0x93, 0x51, 0x17, 0x73, 0x02, 0x64, 0x98, 0xd0, 0xfd, 0x23, 0x0f, + 0x6d, 0x50, 0x30, 0x9f, 0xaa, 0xaf, 0xc7, 0x7b, 0x7c, 0x4b, 0xa1, 0x94, 0xd4, 0x0e, 0xa3, 0x8f, + 0xe5, 0x1c, 0xf9, 0x2a, 0xf8, 0xe4, 0x7f, 0xd2, 0x75, 0x31, 0xfa, 0x7d, 0x50, 0x4d, 0x1c, 0x47, + 0x8d, 0x50, 0x31, 0xd4, 0x97, 0x08, 0xb2, 0x57, 0x83, 0xaf, 0x99, 0x6c, 0x54, 0xb0, 0x6a, 0x91, + 0xf1, 0x3d, 0xf3, 0x99, 0x7e, 0x6d, 0x35, 0xc7, 0xee, 0x09, 0xa2, 0xf7, 0x5e, 0xba, 0x4a, 0x50, + 0x8c, 0xbe, 0xd0, 0x74, 0x66, 0x18, 0xcb, 0x94, 0x44, 0xbf, 0x48, 0x9f, 0x35, 0xde, 0xe8, 0x68, + 0x2b, 0x4c, 0x1e, 0x2a, 0x27, 0x33, 0x0c, 0x1c, 0x12, 0x27, 0xd3, 0x54, 0x77, 0xc3, 0xba, 0x51, + 0xfe, 0xf9, 0x22, 0xcb, 0x11, 0x6d, 0x03, 0xbe, 0xad, 0x35, 0x3d, 0x8c, 0x8a, 0x9a, 0x18, 0x0a, + 0xbb, 0x97, 0xf5, 0xa3, 0x77, 0x10, 0xa1, 0x8a, 0x65, 0x9c, 0x50, 0x41, 0xdf, 0xcf, 0x41, 0xf0, + 0x26, 0xb5, 0x40, 0xa7, 0x87, 0xbe, 0xdb, 0x61, 0xce, 0x19, 0x75, 0x8d, 0xa3, 0x25, 0x14, 0x70, + 0x40, 0x2a, 0x51, 0x7c, 0x4b, 0x40, 0x05, 0x48, 0x90, 0x65, 0xcc, 0x52, 0x40, 0x9f, 0xe6, 0x66, + 0x0c, 0xa7, 0x35, 0xe3, 0xc3, 0x74, 0x10, 0x60, 0x45, 0x9e, 0xef, 0x1b, 0x10, 0xf0, 0x00, 0x76, + 0x8f, 0xf0, 0x4d, 0x7e, 0x11, 0x49, 0x1b, 0x6a, 0x4e, 0xcf, 0xc9, 0xde, 0x0e, 0x53, 0x99, 0x24, + 0x26, 0x77, 0xaf, 0x74, 0x0d, 0x9c, 0x22, 0xd8, 0x49, 0x8c, 0x7b, 0x8b, 0x99, 0x45, 0xfe, 0x03, + 0xf4, 0x63, 0xe0, 0xf0, 0x15, 0xf9, 0x94, 0xd4, 0x4a, 0xc0, 0xcd, 0x06, 0xaf, 0xee, 0x6d, 0x27, + 0xae, 0xcc, 0xa7, 0x30, 0xae, 0x04, 0x63, 0xca, 0x32, 0x35, 0x92, 0x4c, 0xed, 0xcb, 0x61, 0x9b, + 0xfe, 0x3e, 0x6d, 0x05, 0x33, 0x26, 0xee, 0xaa, 0x90, 0xb1, 0x43, 0x70, 0x38, 0x98, 0x94, 0x46, + 0xfd, 0x10, 0x1e, 0xdf, 0xe8, 0x8e, 0x25, 0x63, 0x90, 0x6f, 0x73, 0xc3, 0xc8, 0x91, 0x17, 0xad, + 0x75, 0xf4, 0x0e, 0x98, 0x81, 0x40, 0x63, 0xb8, 0x30, 0xae, 0x1b, 0xc4, 0x07, 0xe6, 0x61, 0x23, + 0xc1, 0x99, 0x18, 0x73, 0xd6, 0xa8, 0xee, 0x69, 0xa3, 0xec, 0x03, 0x8a, 0x46, 0x44, 0x52, 0x9a, + 0x24, 0xe2, 0xc7, 0x50, 0xe4, 0xf4, 0xe2, 0xbd, 0x35, 0x41, 0xd7, 0x52, 0x6d, 0xb3, 0x49, 0xcf, + 0x14, 0xc0, 0x73, 0xc8, 0x8e, 0xf6, 0x49, 0xf3, 0x35, 0xf9, 0x76, 0x20, 0x27, 0x82, 0x77, 0xae, + 0xba, 0x6e, 0xc6, 0xba, 0x9d, 0xe1, 0x1e, 0xee, 0x87, 0x50, 0x56, 0x6a, 0x38, 0xfb, 0xc6, 0x0b, + 0xd2, 0x8a, 0x17, 0x48, 0x28, 0x51, 0x5a, 0xa4, 0xbb, 0x7f, 0x4e, 0xb8, 0xc3, 0x26, 0x07, 0x24, + 0xa6, 0x4a, 0x41, 0xf2, 0x5f, 0x75, 0xa1, 0x2b, 0x86, 0xc7, 0x29, 0xba, 0xac, 0x5f, 0x02, 0xec, + 0xac, 0x9b, 0xa9, 0x7f, 0x89, 0xea, 0x53, 0xc1, 0x12, 0xe1, 0x34, 0xde, 0xe5, 0xd3, 0x7f, 0x5d, + 0x16, 0x51, 0xba, 0xed, 0xda, 0xf8, 0x3a, 0xe8, 0x84, 0xfe, 0xde, 0xf0, 0x83, 0xbd, 0x10, 0xa3, + 0xcf, 0xdc, 0x2f, 0x25, 0xe0, 0x94, 0x0a, 0x30, 0xda, 0x62, 0x31, 0xd5, 0x7e, 0xa3, 0xfb, 0xe0, + 0xe0, 0x2d, 0x26, 0xe9, 0x14, 0xa2, 0x6f, 0x4e, 0x19, 0xf5, 0x09, 0xba, 0x67, 0x89, 0x79, 0x6f, + 0x14, 0xe0, 0xd6, 0xac, 0x94, 0x2d, 0x65, 0x10, 0x76, 0x62, 0xb9, 0xa3, 0xcd, 0x20, 0xfe, 0xeb, + 0x10, 0x5c, 0xe0, 0x75, 0xd3, 0x5d, 0xad, 0x39, 0x07, 0xd9, 0x1d, 0x6e, 0xb0, 0xe5, 0xa5, 0x79, + 0x0d, 0xc3, 0xb9, 0xdd, 0xca, 0xbb, 0xa0, 0x5d, 0xa0, 0x16, 0xb6, 0xb9, 0xd6, 0x4c, 0xdb, 0x6f, + 0xb2, 0x5a, 0xa9, 0x55, 0x00, 0x96, 0x14, 0xec, 0x31, 0xe6, 0x79, 0x0f, 0xd1, 0x9d, 0xde, 0xbb, + 0x27, 0x8d, 0x44, 0xee, 0xec, 0xf2, 0xa3, 0x80, 0xbb, 0x21, 0xd3, 0xe7, 0xd3, 0xbe, 0xb3, 0x86, + 0x6c, 0xa8, 0x7a, 0xab, 0xbf, 0xa7, 0x22, 0xcd, 0x4c, 0x25, 0x36, 0x03, 0x02, 0xe4, 0x11, 0xbf, + 0xed, 0x06, 0x90, 0x0c, 0xf0, 0x30, 0xc7, 0x86, 0x7e, 0xaa, 0xc5, 0x84, 0x14, 0x54, 0xf7, 0x56, + 0x17, 0x02, 0x88, 0xf5, 0xe1, 0xe7, 0xa7, 0xef, 0xe6, 0x71, 0xbc, 0x65, 0x65, 0x1e, 0x40, 0x97, + 0x86, 0x5f, 0x8c, 0x44, 0xda, 0xa1, 0x38, 0x54, 0x1e, 0xdd, 0x39, 0xaa, 0x9e, 0x9e, 0xa6, 0x41, + 0x4a, 0xf3, 0xb6, 0xde, 0x19, 0x74, 0x00, 0xfc, 0x2f, 0xf6, 0x0c, 0x00, 0x95, 0xfb, 0x50, 0x66, + 0xa9, 0xc2, 0x3f, 0xaa, 0x48, 0x00, 0xa1, 0x4d, 0x6a, 0x80, 0x03, 0x00, 0x96, 0xcf, 0x1b, 0x9a, + 0xb8, 0x9f, 0xde, 0x10, 0x98, 0x3e, 0x37, 0xf4, 0xc3, 0x30, 0xe6, 0xed, 0x7c, 0x2e, 0x53, 0x0e, + 0xf4, 0xbe, 0xe2, 0x7e, 0xf6, 0x7d, 0xa7, 0x50, 0x43, 0xd7, 0x33, 0x15, 0xc5, 0x62, 0xae, 0xe5, + 0xe2, 0xc5, 0x40, 0xe6, 0xa3, 0x63, 0x0f, 0x85, 0xd2, 0x33, 0xe6, 0x8d, 0xdc, 0x80, 0x3d, 0x79, + 0x27, 0x21, 0x9c, 0x4f, 0xae, 0x14, 0x36, 0x4d, 0x36, 0x30, 0xa1, 0x1e, 0xf5, 0x8e, 0xb5, 0xbd, + 0xa8, 0xc5, 0xe4, 0xb7, 0x96, 0xed, 0x10, 0x5b, 0x8c, 0xee, 0xc6, 0x8c, 0x93, 0xe9, 0xd9, 0x72, + 0xb3, 0x10, 0xd1, 0x3e, 0x5b, 0x31, 0xc1, 0x27, 0xa4, 0x84, 0xe3, 0xc0, 0xf0, 0x1f, 0x27, 0xb7, + 0x1f, 0x05, 0xed, 0x7c, 0xcd, 0x65, 0x01, 0xbf, 0x8d, 0x56, 0xe9, 0xfe, 0x9e, 0x53, 0x71, 0x93, + 0x6c, 0xe0, 0x9c, 0x6e, 0x99, 0x56, 0xbb, 0x45, 0x87, 0x1f, 0x6a, 0x96, 0xac, 0x24, 0xf9, 0x7f, + 0xbf, 0x10, 0x8c, 0x5e, 0x08, 0x12, 0x07, 0xcf, 0x8b, 0x4b, 0xcb, 0xd1, 0x6a, 0xce, 0x3d, 0x92, + 0x81, 0x5d, 0x1d, 0x96, 0x72, 0xa8, 0xef, 0xdd, 0xb2, 0x13, 0xa8, 0xc6, 0xea, 0x07, 0x64, 0x8b, + 0xd2, 0xe1, 0x79, 0x24, 0x0a, 0xf2, 0x92, 0xa8, 0x37, 0xe2, 0x5c, 0x89, 0xd3, 0x09, 0x60, 0x7d, + 0xbf, 0xac, 0xff, 0xde, 0xe6, 0x8b, 0x1b, 0x38, 0x33, 0xd7, 0xa1, 0x9d, 0x05, 0xe8, 0x69, 0x27, + 0xd9, 0xb7, 0xae, 0x72, 0xbb, 0x05, 0xee, 0x77, 0x96, 0x48, 0xa2, 0x02, 0x0d, 0x88, 0x1c, 0x4f, + 0x22, 0xf9, 0xcd, 0xd3, 0xe1, 0x50, 0x08, 0xb6, 0xea, 0x2a, 0x96, 0x43, 0xf3, 0x8a, 0x92, 0x3b, + 0x2b, 0x5e, 0xbc, 0xa0, 0x4f, 0xd3, 0xf1, 0xcc, 0x1c, 0xde, 0xc4, 0x91, 0x35, 0x33, 0x51, 0xe5, + 0xe0, 0xa9, 0x75, 0xfe, 0x0a, 0x5d, 0xc8, 0x8b, 0x63, 0x33, 0xd9, 0xe0, 0x73, 0xcb, 0xdb, 0x70, + 0x0a, 0x82, 0xb7, 0x7a, 0x5c, 0x27, 0xbf, 0xd1, 0xdc, 0x62, 0xa3, 0x20, 0x63, 0x5f, 0x54, 0x4a, + 0xaf, 0xa3, 0xe0, 0x77, 0xbb, 0xcd, 0xab, 0x62, 0x73, 0x31, 0x72, 0x2a, 0x1d, 0x02, 0x87, 0x88, + 0x02, 0x24, 0x10, 0x9c, 0x35, 0x5c, 0x72, 0x04, 0x1c, 0x1a, 0xea, 0x44, 0xf4, 0x41, 0xc6, 0x20, + 0xde, 0x91, 0xf7, 0x0c, 0x4a, 0xae, 0xca, 0xb7, 0x73, 0x59, 0xf6, 0xdd, 0x8e, 0x58, 0xae, 0x8a, + 0xcd, 0x62, 0xa6, 0x22, 0xef, 0x79, 0xbb, 0xf9, 0x4b, 0xf9, 0x71, 0x6b, 0xab, 0xe5, 0x02, 0x13, + 0xe3, 0x35, 0xd9, 0xea, 0x95, 0x33, 0x1a, 0x22, 0x1c, 0x45, 0xe6, 0x9b, 0xfb, 0x61, 0xaf, 0x3d, + 0xbe, 0xbe, 0x9f, 0xb8, 0x83, 0x33, 0x31, 0x5b, 0x14, 0x38, 0x2d, 0xcf, 0xe7, 0xce, 0xd3, 0xab, + 0xca, 0xbc, 0xec, 0x30, 0x17, 0x36, 0x1d, 0x1a, 0xb7, 0x2b, 0xee, 0x53, 0x34, 0xfc, 0x63, 0x9f, + 0x95, 0xe1, 0xf0, 0x8b, 0xdb, 0x74, 0x0c, 0x44, 0xd3, 0x04, 0x76, 0x3a, 0x41, 0xdf, 0xd0, 0x8f, + 0xa9, 0x93, 0xd6, 0x14, 0x73, 0xc7, 0x7f, 0x2b, 0xa6, 0xb2, 0x79, 0xe4, 0x4a, 0xc8, 0xb0, 0x5e, + 0x9a, 0xce, 0xc4, 0xf6, 0x8a, 0xeb, 0x8c, 0xa7, 0x86, 0xa6, 0x4f, 0x5f, 0x48, 0xff, 0xb4, 0x05, + 0xf3, 0xc8, 0x81, 0x75, 0x37, 0xd5, 0x8b, 0x40, 0xdf, 0x3e, 0x20, 0x37, 0xf5, 0x5a, 0xcf, 0xbe, + 0x6f, 0x7e, 0x22, 0xc4, 0xf7, 0xfa, 0x34, 0x4a, 0x81, 0x0a, 0x44, 0x3d, 0x1d, 0xe9, 0x6c, 0xb1, + 0xe1, 0xd6, 0x81, 0xd4, 0x98, 0x7c, 0x65, 0xa2, 0x26, 0x97, 0x84, 0x80, 0x76, 0x58, 0x53, 0x0b, + 0x94, 0x82, 0x08, 0x66, 0x80, 0x63, 0xf9, 0x01, 0x4a, 0xee, 0xb5, 0xe2, 0x8a, 0xfa, 0xce, 0xee, + 0x7c, 0x97, 0xb6, 0x91, 0xe9, 0xb3, 0x5e, 0x14, 0x50, 0xd5, 0xf1, 0xdf, 0x8f, 0x5d, 0x0e, 0x78, + 0x2f, 0xdd, 0xb2, 0x82, 0x98, 0x73, 0xc5, 0xf4, 0x32, 0x1c, 0x65, 0x6d, 0xa4, 0xe3, 0xba, 0xdb, + 0xfa, 0x65, 0x37, 0xee, 0x57, 0x2b, 0xfa, 0x38, 0x2f, 0x14, 0x2d, 0xf6, 0x19, 0x0b, 0xe0, 0x59, + 0xb9, 0x95, 0x02, 0xfa, 0x2f, 0x84, 0x56, 0x41, 0x76, 0xa3, 0xca, 0x30, 0xf5, 0x4b, 0x97, 0x2d, + 0x33, 0x3b, 0x71, 0x09, 0x49, 0x48, 0x46, 0xa0, 0x79, 0xd3, 0xce, 0x32, 0x35, 0xa4, 0xb2, 0x05, + 0x5d, 0xaf, 0x1f, 0x22, 0x48, 0xcb, 0xca, 0x5b, 0xaa, 0x69, 0x6e, 0x6f, 0x23, 0x6f, 0xcd, 0x67, + 0x06, 0x71, 0xf1, 0x6a, 0x5f, 0x65, 0xbe, 0xb0, 0x5f, 0x7b, 0xec, 0x9e, 0x1d, 0xa4, 0xf2, 0x4b, + 0xbc, 0xde, 0xc0, 0x84, 0x87, 0xa3, 0x2f, 0x97, 0x12, 0xc5, 0xf9, 0x34, 0x54, 0x0a, 0xf1, 0x7c, + 0x95, 0x16, 0xe7, 0xf9, 0x83, 0x40, 0xcf, 0x42, 0xc9, 0x5b, 0xff, 0x0e, 0x01, 0xf0, 0x1b, 0xe5, + 0x75, 0xee, 0x7c, 0x33, 0x1f, 0x00, 0x03, 0x2f, 0x92, 0xa7, 0x3d, 0x51, 0xac, 0x43, 0x67, 0xb8, + 0x45, 0x4f, 0xde, 0x10, 0xee, 0xeb, 0x5b, 0x62, 0x65, 0x6b, 0x70, 0xc3, 0x3d, 0x46, 0x1f, 0x00, + 0x0f, 0x08, 0xeb, 0xca, 0x33, 0xd5, 0x7d, 0x97, 0x84, 0x88, 0x8a, 0x24, 0x4d, 0x02, 0xcd, 0xee, + 0xa0, 0x11, 0xb1, 0x2d, 0xb6, 0xf5, 0x18, 0x68, 0xb5, 0x79, 0x15, 0x5b, 0x44, 0xb3, 0xba, 0x8b, + 0x78, 0x28, 0x08, 0x32, 0xf1, 0x25, 0x4f, 0xde, 0x48, 0x80, 0x5e, 0x9f, 0x1b, 0xc9, 0x39, 0xd3, + 0x87, 0x9f, 0xae, 0x66, 0xf2, 0x12, 0x92, 0x17, 0xec, 0xaa, 0xbd, 0x00, 0x93, 0x00, 0x09, 0x76, + 0xab, 0xfb, 0x2a, 0xda, 0x34, 0xe5, 0xa6, 0x2a, 0xfa, 0x9a, 0x88, 0x39, 0x66, 0xa2, 0x47, 0x2f, + 0x71, 0x40, 0xa6, 0x7e, 0x7d, 0x52, 0x1d, 0x12, 0x21, 0x5f, 0xca, 0xe8, 0xba, 0x5a, 0x80, 0x88, + 0x5f, 0xb0, 0x1f, 0xc1, 0x12, 0x58, 0xbd, 0x35, 0x13, 0xfb, 0x7d, 0x38, 0xea, 0x5a, 0x79, 0x4f, + 0x37, 0x87, 0xd0, 0xbe, 0x92, 0xe1, 0x5b, 0xbe, 0x84, 0x2a, 0x40, 0x13, 0xd1, 0xe1, 0xdf, 0x39, + 0x0b, 0x11, 0x45, 0xe9, 0x0e, 0x09, 0x9d, 0xfc, 0xeb, 0xc4, 0xc3, 0xf8, 0x26, 0xbd, 0x80, 0x38, + 0xf7, 0x04, 0x13, 0x4f, 0x3c, 0x3d, 0x7e, 0xa3, 0xbe, 0x54, 0x1b, 0x1f, 0xf6, 0xc2, 0x11, 0x93, + 0xd9, 0x41, 0x0f, 0x64, 0x3a, 0x1c, 0x6e, 0x19, 0x6e, 0xbf, 0x79, 0x3b, 0xbd, 0xa8, 0x03, 0xae, + 0xf2, 0x62, 0x7f, 0xda, 0xf6, 0xe8, 0x84, 0xd9, 0xd9, 0xdb, 0xfd, 0xa2, 0x6a, 0x38, 0x60, 0x2a, + 0x30, 0xf2, 0x1f, 0x1f, 0x63, 0xb1, 0x46, 0x7e, 0x78, 0x3e, 0x2c, 0xd9, 0xf4, 0x56, 0xdb, 0xa7, + 0x5e, 0x67, 0x8a, 0x16, 0x9b, 0xc8, 0xea, 0x78, 0x35, 0xc2, 0xef, 0x1a, 0xb5, 0x17, 0x4e, 0xba, + 0x17, 0x04, 0xb8, 0xd7, 0x70, 0x30, 0xb4, 0x4f, 0xb0, 0x91, 0x92, 0x73, 0x2f, 0x0a, 0xff, 0xd7, + 0x8b, 0xcf, 0x43, 0x7d, 0xfe, 0x9e, 0xca, 0xfa, 0x69, 0x12, 0x0f, 0x51, 0xe9, 0xa4, 0x13, 0x6a, + 0x2a, 0x4f, 0xaa, 0x5f, 0x13, 0xef, 0x45, 0x05, 0xd9, 0xaa, 0xc8, 0x28, 0x84, 0x7e, 0xc9, 0xca, + 0xba, 0x3d, 0x93, 0xb1, 0x38, 0x16, 0x3f, 0xf1, 0x18, 0x1b, 0x32, 0xa8, 0xc2, 0xdf, 0xe3, 0x21, + 0x8e, 0x8b, 0x70, 0x6e, 0x58, 0x65, 0x70, 0x93, 0xa5, 0xcc, 0x15, 0x2a, 0xd6, 0xb0, 0xc3, 0xcf, + 0x6b, 0xf5, 0x09, 0xa4, 0x6c, 0x29, 0xc7, 0xcd, 0x19, 0xf6, 0x4d, 0x15, 0xb1, 0x77, 0x65, 0xdb, + 0x7e, 0x55, 0x24, 0x05, 0x39, 0xa7, 0xf8, 0xdc, 0x16, 0x44, 0xf5, 0xf2, 0x69, 0x9f, 0x6f, 0x8e, + 0xaf, 0x6e, 0xfc, 0x9a, 0x75, 0x57, 0x22, 0x2f, 0x33, 0xf8, 0xaa, 0x3d, 0x4e, 0x70, 0x2d, 0x74, + 0x33, 0xbc, 0xea, 0xcf, 0x48, 0xe7, 0xb8, 0xd0, 0xf5, 0xda, 0xd3, 0xe3, 0xa7, 0x43, 0x4f, 0xdd, + 0x7c, 0x80, 0x07, 0x69, 0xc9, 0x2d, 0x2c, 0x58, 0xa1, 0x4d, 0x9c, 0xd7, 0x20, 0xb6, 0xaf, 0xb0, + 0x5f, 0x3d, 0x5b, 0x35, 0x3f, 0xf4, 0x51, 0x52, 0x47, 0xc5, 0xaa, 0x9c, 0x4d, 0x9c, 0xa4, 0x73, + 0x35, 0xd9, 0xa0, 0xa4, 0x52, 0x0a, 0x7b, 0xcb, 0x6c, 0xef, 0xb4, 0x65, 0x06, 0xc4, 0x95, 0x3b, + 0x59, 0xf2, 0xd1, 0x09, 0x0b, 0x22, 0x9c, 0x72, 0xac, 0x4d, 0xb1, 0xb6, 0x3b, 0x72, 0xcd, 0xad, + 0x91, 0x95, 0x49, 0x30, 0x43, 0x54, 0x0e, 0xf3, 0x53, 0x89, 0xd2, 0x13, 0x40, 0xca, 0x44, 0x90, + 0x37, 0x11, 0xf8, 0x9a, 0xbf, 0xf5, 0x6f, 0x0b, 0xa4, 0x47, 0x03, 0x59, 0x6a, 0x48, 0xdc, 0x11, + 0xeb, 0x51, 0x1b, 0x56, 0x42, 0x03, 0xc9, 0x4e, 0xbc, 0x4c, 0x3f, 0x05, 0x48, 0x32, 0x48, 0x7d, + 0x5b, 0x77, 0x4b, 0x75, 0xbf, 0x14, 0x72, 0x31, 0x86, 0x10, 0x99, 0x87, 0x33, 0x4c, 0x3c, 0xc2, + 0x8a, 0x76, 0x36, 0xfc, 0x44, 0x19, 0xe4, 0xd1, 0x9d, 0x29, 0x7c, 0x17, 0xea, 0xa6, 0x3a, 0x90, + 0x4b, 0x01, 0x5b, 0x37, 0x45, 0xc6, 0x4f, 0x59, 0xb0, 0x6a, 0xeb, 0xe4, 0x2c, 0x0c, 0x87, 0x91, + 0x06, 0x6d, 0xeb, 0xea, 0x3b, 0x3d, 0xbc, 0x1a, 0x0a, 0xd8, 0x1b, 0xd6, 0x71, 0xa5, 0x6c, 0x4c, + 0x1c, 0xde, 0x46, 0xb4, 0x2c, 0x15, 0xc3, 0xe8, 0x7d, 0x70, 0x96, 0x85, 0x1d, 0xc3, 0x53, 0x3c, + 0xdc, 0x1b, 0x4f, 0xe2, 0x79, 0x39, 0x74, 0xe5, 0x49, 0x8e, 0xd4, 0xb5, 0x59, 0x19, 0xc1, 0xe9, + 0x37, 0xbd, 0xad, 0x90, 0x33, 0x9f, 0xaf, 0x46, 0xfe, 0xd8, 0xcd, 0x30, 0x04, 0x1d, 0x96, 0xf8, + 0x2d, 0xe6, 0xc4, 0xfb, 0xac, 0x56, 0xb1, 0x26, 0x33, 0xc0, 0x38, 0x19, 0x3b, 0xe3, 0xf4, 0xaf, + 0x4f, 0x77, 0x5c, 0xe3, 0xc0, 0x0b, 0x81, 0x29, 0x7f, 0xd4, 0x43, 0x4d, 0x7b, 0x87, 0xd4, 0x28, + 0x37, 0x22, 0xbb, 0x16, 0x54, 0xe6, 0xe2, 0x55, 0x11, 0xda, 0xf4, 0xc5, 0xe1, 0xbb, 0xdb, 0xf9, + 0xb4, 0xd7, 0x25, 0x27, 0x09, 0x4d, 0x37, 0x82, 0x9b, 0x64, 0x31, 0xbc, 0x3d, 0x2c, 0x66, 0xcd, + 0x60, 0x3a, 0x74, 0x7d, 0xfd, 0xdb, 0x74, 0x31, 0x4e, 0x35, 0x98, 0x76, 0x84, 0x87, 0x49, 0x2d, + 0xce, 0x50, 0x57, 0xbd, 0x12, 0x65, 0xfb, 0xa4, 0x7b, 0x4e, 0xb6, 0x8a, 0x4d, 0x73, 0xf2, 0xfb, + 0xc0, 0x35, 0xcf, 0xf7, 0x79, 0xb2, 0x5d, 0x8d, 0xbc, 0xd3, 0x7d, 0x0c, 0xa7, 0xd1, 0xf1, 0xdb, + 0x10, 0xa3, 0x91, 0xae, 0x99, 0xc5, 0xed, 0x80, 0x15, 0xb7, 0x5e, 0xea, 0x11, 0xa7, 0xb1, 0x64, + 0x7c, 0x3b, 0x08, 0xfd, 0xf0, 0xa1, 0x2a, 0x9f, 0xaf, 0xf0, 0x9b, 0x43, 0x43, 0x4f, 0xc1, 0xd5, + 0x39, 0xba, 0xda, 0x3f, 0x49, 0x5d, 0x13, 0x53, 0xa1, 0x3d, 0x34, 0xc4, 0xd2, 0xdb, 0xf5, 0x76, + 0x42, 0x37, 0x07, 0x2e, 0xd6, 0x0a, 0x3d, 0x12, 0xe4, 0x6f, 0x68, 0x4e, 0x70, 0x0d, 0x29, 0x9e, + 0x54, 0x07, 0x48, 0xba, 0xc7, 0xfa, 0xfd, 0x73, 0x7d, 0x6d, 0x0d, 0x07, 0x98, 0xeb, 0x5e, 0x67, + 0xa5, 0x6a, 0x6a, 0x91, 0x87, 0x23, 0x59, 0xf6, 0x9c, 0x90, 0xa2, 0xd7, 0x07, 0x93, 0xb6, 0xed, + 0xe2, 0x38, 0x2b, 0xc0, 0x2d, 0x08, 0x98, 0x6c, 0x11, 0x45, 0x05, 0x8d, 0xa8, 0x17, 0xf1, 0x10, + 0xcb, 0xca, 0xf5, 0x90, 0x41, 0x15, 0x75, 0x22, 0x62, 0xd2, 0x0c, 0xc2, 0xf7, 0x5a, 0xb0, 0x64, + 0xbe, 0xf7, 0x6d, 0x57, 0xa6, 0x64, 0x28, 0x12, 0x1d, 0x98, 0x93, 0x2b, 0xf5, 0xd7, 0xa2, 0x3f, + 0x35, 0x1b, 0xd4, 0x49, 0x68, 0x15, 0xa9, 0x19, 0xa1, 0x8c, 0x03, 0xe7, 0x83, 0x4d, 0x2d, 0xf3, + 0xe8, 0xc3, 0xbd, 0xec, 0x1d, 0x7e, 0x3f, 0x68, 0x3a, 0x66, 0xac, 0xbe, 0xb5, 0xcc, 0xd3, 0x57, + 0xf7, 0x84, 0xac, 0xd4, 0x32, 0x21, 0xed, 0xb1, 0x2b, 0xe7, 0x4c, 0x8d, 0x5a, 0xeb, 0xf6, 0x06, + 0xcd, 0xa7, 0xad, 0x7e, 0x78, 0xc5, 0x1f, 0xce, 0x35, 0x02, 0x47, 0xd3, 0x20, 0x73, 0x0f, 0x26, + 0xfc, 0x23, 0xa8, 0x84, 0xf5, 0x58, 0xc0, 0xc1, 0x43, 0x60, 0x47, 0x61, 0x1f, 0x8a, 0xe7, 0xe9, + 0x9a, 0x6e, 0x7f, 0xba, 0xb4, 0x06, 0xc3, 0x9b, 0x1e, 0x5b, 0x98, 0xbc, 0x0e, 0x52, 0x3f, 0x4c, + 0x40, 0xd9, 0xbc, 0x7b, 0x85, 0x9e, 0x39, 0x36, 0xba, 0x2a, 0x63, 0xa5, 0xe4, 0x97, 0xad, 0xfc, + 0xbd, 0xa2, 0xd1, 0x80, 0x3b, 0x0c, 0xe6, 0xc8, 0x08, 0x62, 0xe1, 0x24, 0x9a, 0x90, 0x7e, 0xb2, + 0x6f, 0x09, 0xac, 0xbc, 0x89, 0xc2, 0x8b, 0xc5, 0x07, 0xc7, 0x4e, 0x20, 0xf1, 0xe8, 0x81, 0x61, + 0x67, 0xf1, 0x7d, 0x93, 0xdb, 0xb8, 0x31, 0xde, 0xd4, 0x90, 0x8e, 0x49, 0x30, 0xeb, 0xc1, 0xff, + 0x9f, 0x73, 0xd6, 0x75, 0x0e, 0x2f, 0x38, 0xe5, 0x86, 0xb6, 0x5f, 0x35, 0x35, 0x0e, 0xd9, 0xea, + 0x73, 0xe8, 0xf3, 0xe2, 0x7a, 0x08, 0xe0, 0x9c, 0x9a, 0xbd, 0xc8, 0x5d, 0xd3, 0xda, 0x4c, 0x7b, + 0x13, 0xac, 0x71, 0x28, 0xf6, 0x8f, 0xcf, 0xcb, 0x4d, 0x70, 0x7e, 0x8f, 0x02, 0x44, 0xfa, 0xdf, + 0x41, 0x18, 0x02, 0xa4, 0x3f, 0xed, 0xdc, 0x0a, 0x5c, 0x84, 0x45, 0xaa, 0x2c, 0x35, 0x97, 0x4d, + 0x29, 0x7d, 0x78, 0xc8, 0x04, 0xe4, 0x8c, 0xb5, 0xa9, 0xed, 0xd9, 0x54, 0x25, 0xca, 0x9a, 0x91, + 0xb4, 0x98, 0xd9, 0x5e, 0xba, 0x54, 0x3b, 0x8b, 0xec, 0x3c, 0xa3, 0xcc, 0xfa, 0x08, 0xa0, 0x2e, + 0xe3, 0x0d, 0xa3, 0x21, 0xaa, 0x9a, 0x3d, 0x7f, 0xdd, 0x09, 0xfc, 0xae, 0xa8, 0x4f, 0xd1, 0x4d, + 0xd2, 0xc6, 0x8b, 0x17, 0xae, 0x3c, 0xb7, 0x38, 0xcc, 0xd0, 0xa1, 0x21, 0x98, 0x20, 0xbd, 0xbb, + 0x03, 0xa4, 0x47, 0x24, 0x37, 0x7f, 0xd5, 0xdb, 0xdf, 0x84, 0x5d, 0xd9, 0x19, 0x17, 0xde, 0xb8, + 0x51, 0x09, 0xed, 0x02, 0xc6, 0x72, 0x9a, 0xd2, 0xfa, 0x01, 0x81, 0xe6, 0xbd, 0x7a, 0x58, 0x17, + 0xed, 0x88, 0xb1, 0x83, 0x16, 0x82, 0x73, 0xf0, 0xa7, 0xc2, 0xe6, 0x67, 0x8e, 0x4a, 0xb1, 0xac, + 0x76, 0x66, 0xa8, 0xe2, 0x35, 0xcc, 0x13, 0xfe, 0x5b, 0xed, 0x9d, 0x60, 0x24, 0x5b, 0x74, 0x3c, + 0x81, 0xd6, 0x1c, 0x31, 0xdf, 0xc8, 0xd5, 0x74, 0xbf, 0xcb, 0x4f, 0x53, 0x68, 0x05, 0x90, 0xa5, + 0xba, 0xd5, 0x4f, 0x80, 0x43, 0x50, 0x65, 0x29, 0x42, 0xf2, 0x1a, 0x88, 0xb8, 0x61, 0xbf, 0x65, + 0x59, 0xad, 0x2f, 0x2e, 0xf1, 0x4f, 0xef, 0xe4, 0xc0, 0xde, 0x37, 0xb5, 0xfb, 0xd9, 0x2e, 0x50, + 0x2a, 0x3e, 0xac, 0xe4, 0x45, 0xa4, 0xd5, 0x2f, 0xac, 0x9a, 0xc1, 0x7c, 0xd4, 0x95, 0xe1, 0x86, + 0x4d, 0xae, 0x2b, 0x5e, 0x11, 0x7b, 0xe7, 0x38, 0x5e, 0x93, 0x53, 0x95, 0x9c, 0x65, 0xcc, 0x8b, + 0x78, 0x6a, 0x0e, 0x28, 0x68, 0xba, 0x50, 0xd0, 0x74, 0x5d, 0x7c, 0x62, 0x2b, 0xa3, 0xb4, 0xe0, + 0x96, 0x8e, 0x2b, 0x0b, 0xcc, 0xbc, 0x0c, 0x4f, 0xcb, 0xe6, 0x89, 0x4e, 0xd0, 0x2e, 0x17, 0x9a, + 0x37, 0x13, 0x55, 0x68, 0x2c, 0x67, 0xf2, 0x12, 0x92, 0x35, 0x08, 0x93, 0x17, 0xaf, 0x70, 0x8b, + 0x08, 0x8e, 0x4e, 0x5e, 0x91, 0x1d, 0x8e, 0x8e, 0x5a, 0xb3, 0xf8, 0xa0, 0x11, 0x1f, 0xe0, 0xfb, + 0xf3, 0xf1, 0xb2, 0x1c, 0x56, 0x97, 0x6d, 0xd4, 0x6d, 0xa3, 0x19, 0x50, 0x00, 0xf4, 0xef, 0x7c, + 0x90, 0xe8, 0x89, 0x33, 0x6d, 0xf9, 0x90, 0x44, 0xa0, 0x7d, 0xa2, 0x6e, 0xab, 0x87, 0xe5, 0xc9, + 0xe8, 0xc5, 0x28, 0x64, 0xf6, 0x29, 0x95, 0xf4, 0x69, 0xb3, 0xa1, 0xbc, 0x14, 0xc2, 0x2f, 0x30, + 0x50, 0x80, 0x08, 0x58, 0xae, 0x0d, 0x72, 0x66, 0x2c, 0x30, 0x43, 0xfe, 0x07, 0x0d, 0xa3, 0x1d, + 0x58, 0x1c, 0x16, 0x5e, 0x1d, 0x80, 0xf6, 0x99, 0x53, 0x92, 0xd6, 0x57, 0x6c, 0x83, 0xae, 0x80, + 0x83, 0x69, 0xa9, 0x22, 0x7b, 0xbc, 0x6f, 0x11, 0x94, 0x8c, 0xab, 0xa5, 0x25, 0x8d, 0x52, 0x66, + 0x33, 0x09, 0xb6, 0x67, 0x93, 0x9d, 0x44, 0x09, 0xf8, 0xf0, 0xdc, 0x06, 0x5d, 0xb3, 0x49, 0x50, + 0xcc, 0x9a, 0xf8, 0x85, 0xc1, 0x5f, 0xf7, 0x43, 0xa4, 0x72, 0xb9, 0x05, 0xad, 0xcd, 0x5e, 0x29, + 0x1c, 0x37, 0xd2, 0x0b, 0xac, 0x73, 0xd4, 0x75, 0x4f, 0x26, 0x06, 0x1e, 0x4b, 0x9f, 0xef, 0xea, + 0xb0, 0xee, 0x3f, 0xd9, 0xb4, 0x11, 0xd0, 0x25, 0x18, 0x00, 0x09, 0x21, 0xe2, 0x60, 0x67, 0x18, + 0x7e, 0x87, 0x87, 0xb0, 0x14, 0xaf, 0x4d, 0xa2, 0x88, 0x81, 0x77, 0x71, 0x33, 0x5c, 0xb8, 0x0d, + 0x12, 0x3c, 0x5e, 0xb0, 0x52, 0xb0, 0x29, 0x39, 0xf2, 0xed, 0x6a, 0xe0, 0x94, 0x58, 0xd7, 0x23, + 0x4b, 0xa7, 0x3d, 0x93, 0xc9, 0x05, 0x06, 0xba, 0x32, 0x73, 0x00, 0x1e, 0xeb, 0x6f, 0x64, 0xd5, + 0x89, 0x17, 0x45, 0xcd, 0x91, 0x13, 0x42, 0xb5, 0xd3, 0x6f, 0x9d, 0xa2, 0xde, 0xbc, 0x07, 0x23, + 0x4f, 0x1d, 0xf9, 0x89, 0x99, 0x8c, 0x9e, 0xde, 0xa4, 0x7f, 0xab, 0xfc, 0x54, 0x04, 0x0f, 0x11, + 0x5c, 0xbc, 0xd6, 0xd3, 0x54, 0x13, 0xe9, 0x7a, 0x99, 0x04, 0x57, 0xf2, 0xf0, 0x7c, 0xb7, 0x56, + 0x5c, 0x9c, 0x37, 0xbd, 0xfc, 0xa5, 0xb0, 0x8d, 0x3d, 0x02, 0x0e, 0x61, 0xdd, 0x20, 0xd6, 0x44, + 0x8a, 0x0b, 0x58, 0xd8, 0x33, 0x17, 0x2d, 0x85, 0x0c, 0xb1, 0x7f, 0x6a, 0xb1, 0xca, 0x37, 0xb8, + 0xba, 0x10, 0x09, 0x12, 0x28, 0xac, 0x00, 0x2b, 0x3e, 0x5e, 0x0e, 0x92, 0xe3, 0x6b, 0xef, 0xe6, + 0xc6, 0x8e, 0x28, 0xfa, 0xc2, 0x58, 0x55, 0x09, 0x94, 0xe9, 0xaa, 0xad, 0x4e, 0x2d, 0x93, 0xd7, + 0x2d, 0xdb, 0xfb, 0xce, 0x3b, 0x7d, 0x47, 0x4c, 0xa7, 0x1f, 0x07, 0x8d, 0x6b, 0x09, 0x81, 0xf8, + 0x72, 0x76, 0x84, 0xc8, 0xc1, 0xf9, 0x95, 0x4b, 0x8e, 0xb0, 0xaa, 0xe6, 0x37, 0xad, 0xcd, 0x21, + 0x92, 0xd8, 0x45, 0x2d, 0xda, 0xda, 0xa1, 0x2f, 0x85, 0x89, 0x16, 0x68, 0x5d, 0x41, 0x8a, 0x98, + 0x09, 0x8c, 0xcc, 0x32, 0xa2, 0xc8, 0xfc, 0xea, 0x3d, 0x55, 0xda, 0x4d, 0x53, 0x17, 0x93, 0xbc, + 0x5b, 0x59, 0x9f, 0x50, 0x5c, 0xcf, 0x03, 0x6b, 0x94, 0x5d, 0xbc, 0x6d, 0xe7, 0x9c, 0x6d, 0x62, + 0x95, 0xaa, 0x35, 0xa3, 0x23, 0x42, 0x9f, 0xfb, 0x5e, 0xc1, 0xd7, 0x49, 0x89, 0xbd, 0xc4, 0xe8, + 0xcf, 0x22, 0xd3, 0xcf, 0x3d, 0x2f, 0x6d, 0x08, 0x0c, 0x4c, 0x17, 0x5b, 0x87, 0x44, 0x9f, 0x8b, + 0x73, 0xe0, 0xe9, 0x36, 0xb7, 0x92, 0x5b, 0xfd, 0x62, 0x76, 0x7b, 0x67, 0xc0, 0x47, 0xff, 0x68, + 0x01, 0x91, 0x85, 0x3a, 0x95, 0xc7, 0x19, 0xf7, 0xb0, 0x72, 0x83, 0x88, 0x5a, 0xdc, 0x58, 0x14, + 0xe8, 0xa7, 0x53, 0x9e, 0x69, 0xe4, 0x6c, 0x39, 0x3d, 0xbe, 0x5f, 0x72, 0x6b, 0xb4, 0xd5, 0x80, + 0xfb, 0x44, 0x24, 0x88, 0x08, 0x14, 0xf6, 0xe8, 0xd8, 0x2c, 0x1a, 0x5c, 0xf0, 0x86, 0x79, 0xc4, + 0x40, 0x5c, 0xc8, 0xab, 0x53, 0x27, 0xd3, 0xce, 0x00, 0x99, 0x7f, 0x6a, 0x91, 0x35, 0x81, 0x90, + 0x8a, 0x5f, 0x2d, 0xf6, 0x12, 0x06, 0xa5, 0x75, 0x04, 0x85, 0x35, 0x66, 0x23, 0x5f, 0xc6, 0x00, + 0x69, 0x67, 0xf6, 0x5e, 0x7b, 0x18, 0x92, 0x80, 0x26, 0x03, 0xb0, 0x73, 0xcb, 0x8e, 0xba, 0xf7, + 0xda, 0x6f, 0xee, 0x8f, 0x6c, 0x3f, 0xcd, 0xc6, 0x73, 0x51, 0x5d, 0xdc, 0x55, 0x69, 0xcd, 0x02, + 0x24, 0x52, 0x62, 0x83, 0xba, 0x27, 0xaa, 0x73, 0x15, 0xe7, 0xd4, 0x7a, 0xc1, 0xd5, 0x8e, 0xad, + 0xb4, 0x68, 0xb9, 0x40, 0xcb, 0x5d, 0x9e, 0x67, 0x84, 0x2b, 0x14, 0x78, 0xcd, 0xa5, 0xc2, 0x81, + 0x91, 0x3b, 0x0f, 0x70, 0x43, 0x26, 0xba, 0x24, 0x3d, 0x14, 0x08, 0x13, 0xba, 0xf9, 0x7c, 0x38, + 0x55, 0x51, 0x57, 0x6e, 0xef, 0xf0, 0x92, 0xd1, 0x06, 0xb4, 0x06, 0xd5, 0xf1, 0xf5, 0xb4, 0xda, + 0x1b, 0xad, 0x52, 0xc2, 0x6d, 0x1e, 0x82, 0xb0, 0x04, 0x5f, 0x5d, 0x92, 0x8d, 0x98, 0x9d, 0x30, + 0x24, 0x5f, 0x47, 0x9f, 0x34, 0x02, 0x9a, 0x83, 0x82, 0x5e, 0xcd, 0xeb, 0x13, 0x40, 0x15, 0xa5, + 0x13, 0xd3, 0xff, 0x19, 0x1c, 0x67, 0x74, 0xf5, 0xf3, 0x50, 0xb9, 0xbf, 0xa9, 0x64, 0x8a, 0x90, + 0x69, 0xc2, 0x93, 0xf9, 0xfc, 0xca, 0xa5, 0x2a, 0xb7, 0x99, 0x70, 0x93, 0x2a, 0x4b, 0x57, 0x77, + 0x8f, 0xc9, 0x58, 0xc5, 0x18, 0xff, 0x8d, 0xdc, 0x02, 0x41, 0xac, 0x93, 0xee, 0x5b, 0x14, 0xd8, + 0xfe, 0x92, 0x49, 0x61, 0xc3, 0xda, 0xfe, 0xf9, 0x70, 0x17, 0x87, 0xe2, 0x34, 0xd6, 0xac, 0x96, + 0x49, 0xfc, 0x61, 0xf0, 0x72, 0x44, 0x95, 0x88, 0x34, 0x2c, 0x68, 0x0d, 0x42, 0x62, 0xb2, 0x0a, + 0x53, 0x58, 0xb1, 0x56, 0x14, 0x08, 0x66, 0x86, 0x39, 0x0a, 0xd5, 0x41, 0xb6, 0x24, 0x52, 0xd2, + 0xfb, 0x68, 0x77, 0xac, 0x63, 0xfb, 0x60, 0xe4, 0x31, 0x24, 0xdd, 0x5d, 0x35, 0xc2, 0x64, 0x8a, + 0xd2, 0x2f, 0xe8, 0xd4, 0x22, 0xc2, 0xcc, 0x7e, 0x7d, 0x83, 0x05, 0x58, 0x62, 0xe6, 0xc9, 0x9b, + 0xf9, 0xd4, 0x60, 0xa2, 0x38, 0x4b, 0x6c, 0x3b, 0x50, 0xe3, 0x02, 0x4e, 0xa3, 0x7c, 0x2c, 0x7f, + 0x50, 0xd8, 0x53, 0xa5, 0x88, 0x42, 0x4a, 0x67, 0x76, 0x94, 0x44, 0x08, 0x89, 0x23, 0x1f, 0x99, + 0x5d, 0x53, 0xec, 0x25, 0x38, 0x73, 0x85, 0xd2, 0xe2, 0x15, 0x6a, 0xd6, 0x5d, 0x93, 0xf2, 0xca, + 0x9d, 0x2a, 0x51, 0x39, 0xae, 0xad, 0xe4, 0xb7, 0xf2, 0x44, 0x1c, 0x1f, 0xcf, 0x98, 0xb5, 0x13, + 0x7d, 0xa5, 0x2f, 0xf7, 0x4b, 0x14, 0xab, 0x4d, 0xa7, 0x0c, 0x6c, 0x32, 0x13, 0x86, 0xcf, 0x04, + 0x26, 0x2d, 0xe6, 0x35, 0xef, 0x50, 0xc5, 0x48, 0x7d, 0x72, 0x08, 0x46, 0xc5, 0xa8, 0xdf, 0x0e, + 0x54, 0xe7, 0x19, 0xd2, 0xbc, 0xbf, 0x45, 0x3b, 0x23, 0xed, 0xbb, 0xdd, 0x0d, 0x33, 0x2c, 0x92, + 0x4d, 0x55, 0x80, 0x13, 0xaa, 0xf7, 0x0c, 0xd0, 0x2d, 0xf7, 0x65, 0xaa, 0xac, 0xa5, 0x32, 0xc1, + 0xaa, 0xf4, 0xae, 0x79, 0xc7, 0x57, 0x32, 0xa0, 0x5e, 0xf0, 0x75, 0x87, 0x54, 0xb9, 0x42, 0x6a, + 0xe3, 0x27, 0x52, 0xd9, 0x40, 0x01, 0x0e, 0x86, 0x70, 0x43, 0xd9, 0x47, 0x0a, 0xd4, 0x4a, 0x8a, + 0xd4, 0xd8, 0x57, 0x65, 0x6c, 0x19, 0x5d, 0x4b, 0x87, 0x7e, 0xb3, 0x6e, 0x7c, 0xc6, 0xd6, 0x05, + 0x56, 0xef, 0x34, 0x2c, 0x38, 0xa5, 0x4d, 0xec, 0x30, 0x8f, 0x46, 0x7b, 0x07, 0x7a, 0x6e, 0xdf, + 0x05, 0xfe, 0xeb, 0x1d, 0xe1, 0xae, 0x9e, 0xa4, 0xbd, 0x9d, 0x51, 0x08, 0xd3, 0xf2, 0xa7, 0x3e, + 0x68, 0x33, 0x63, 0xd6, 0x0f, 0xf0, 0xd8, 0x07, 0x4f, 0x52, 0x98, 0x43, 0xb0, 0x2e, 0x95, 0x50, + 0x89, 0x1c, 0x1e, 0x2f, 0xb2, 0xcd, 0xbd, 0x4c, 0xbb, 0x67, 0x35, 0x86, 0x38, 0xa9, 0xd7, 0x38, + 0xa0, 0x19, 0x9c, 0x1f, 0xfd, 0x7d, 0xde, 0x03, 0xab, 0x46, 0xec, 0xf5, 0x62, 0x22, 0xc5, 0xaa, + 0x87, 0xd4, 0x59, 0x57, 0x1a, 0xdb, 0xd4, 0xfa, 0xe3, 0x24, 0xa7, 0x35, 0xa3, 0xf0, 0x35, 0xe6, + 0x8b, 0x95, 0xc2, 0x84, 0xe5, 0x9a, 0x01, 0xc1, 0x1b, 0x31, 0x63, 0x32, 0xa7, 0x6b, 0xeb, 0x89, + 0x1f, 0xab, 0xdd, 0x3f, 0xb9, 0x34, 0xda, 0x2d, 0x3b, 0x5b, 0xb4, 0xf8, 0x04, 0xc8, 0xed, 0x60, + 0xc3, 0x2e, 0x11, 0x38, 0x8b, 0x7a, 0xcd, 0x28, 0xab, 0xee, 0x6b, 0x0c, 0xd0, 0x13, 0x2a, 0x65, + 0xee, 0xc8, 0xfb, 0x6b, 0x87, 0xd3, 0xe5, 0x39, 0x8b, 0xf7, 0xef, 0xab, 0x46, 0xac, 0x56, 0xf9, + 0x4d, 0xc9, 0x2d, 0xa7, 0x69, 0x8b, 0x5f, 0x8e, 0x4d, 0xa4, 0xda, 0xeb, 0x57, 0x44, 0xb2, 0xef, + 0x97, 0xd8, 0xea, 0xed, 0x86, 0x8b, 0xdc, 0x44, 0x83, 0xcc, 0xa3, 0xdf, 0xea, 0xd8, 0xdc, 0x74, + 0xf2, 0x8e, 0xe6, 0x65, 0x26, 0x74, 0x0a, 0x2a, 0x17, 0x11, 0xee, 0x21, 0xc5, 0x0a, 0x06, 0xbb, + 0xc9, 0xaa, 0xee, 0x40, 0x01, 0x12, 0x86, 0x93, 0xdb, 0x90, 0x24, 0x10, 0xad, 0xbf, 0x8d, 0x19, + 0x34, 0x0f, 0xf9, 0xe9, 0xb7, 0x7f, 0xb9, 0xab, 0x9a, 0xf3, 0x71, 0x13, 0x1d, 0x79, 0xcf, 0xe8, + 0xe7, 0x69, 0x67, 0x0f, 0xfe, 0xea, 0x69, 0x4e, 0xb6, 0x2d, 0x36, 0x49, 0x75, 0x45, 0x7e, 0x85, + 0xd2, 0x4c, 0x4f, 0xb3, 0xc9, 0x21, 0xed, 0xb3, 0x17, 0x33, 0xba, 0x40, 0x6f, 0x14, 0x36, 0x49, + 0x84, 0x4b, 0xa7, 0x21, 0x2e, 0x40, 0xd4, 0xb8, 0x05, 0x3a, 0x2e, 0x4f, 0x43, 0xa5, 0x69, 0xdf, + 0xc3, 0x2d, 0x62, 0x41, 0xec, 0x86, 0xcc, 0xd1, 0x81, 0x93, 0x03, 0xb4, 0x5e, 0x2a, 0xed, 0xfa, + 0x77, 0xa4, 0x4e, 0xdd, 0x71, 0xce, 0x7a, 0xe4, 0x45, 0x56, 0x48, 0x08, 0x1b, 0x13, 0xef, 0xc2, + 0x19, 0x53, 0x69, 0xb4, 0xf6, 0xd8, 0x95, 0x9b, 0x46, 0x9d, 0x04, 0x23, 0xbd, 0x9a, 0xf0, 0xe9, + 0x31, 0xe2, 0xa4, 0x93, 0x6b, 0xed, 0xe2, 0x22, 0x81, 0x6e, 0xdb, 0x5e, 0x1a, 0xe9, 0x9a, 0x58, + 0xcb, 0xa7, 0x86, 0x73, 0x3d, 0x5b, 0xed, 0xc4, 0x44, 0x83, 0x4c, 0x0e, 0x9b, 0x8e, 0x82, 0x5d, + 0x5e, 0xae, 0x2a, 0xf5, 0x5b, 0xe5, 0x91, 0xef, 0x53, 0xd9, 0x7e, 0x93, 0xe5, 0x66, 0x9a, 0x63, + 0x78, 0x78, 0x58, 0x8a, 0x63, 0x5f, 0x8c, 0xf6, 0x8a, 0xd9, 0x2d, 0xaa, 0xbe, 0x67, 0x56, 0x67, + 0x20, 0x9d, 0x39, 0xfd, 0x4c, 0xae, 0xd3, 0x70, 0x86, 0x7e, 0x20, 0x78, 0x6d, 0xe2, 0x44, 0x13, + 0x90, 0x62, 0x7f, 0x02, 0xcc, 0xde, 0x97, 0xf4, 0x4e, 0x76, 0xb5, 0xd2, 0xb4, 0x4d, 0x9b, 0x74, + 0x8a, 0xb4, 0x80, 0x83, 0x40, 0xc2, 0x94, 0x02, 0x9a, 0x71, 0xe0, 0x79, 0x3d, 0x77, 0xb5, 0x3d, + 0xb2, 0xea, 0x12, 0x98, 0x05, 0x47, 0x1d, 0x5c, 0x79, 0x94, 0xdc, 0x55, 0xa7, 0x6f, 0x30, 0x7f, + 0x83, 0x50, 0xd1, 0x95, 0x21, 0x87, 0x0b, 0x89, 0x86, 0x15, 0x25, 0x35, 0x74, 0xcd, 0x1d, 0x38, + 0x48, 0x2a, 0xcf, 0xb3, 0x97, 0xbc, 0x2b, 0xb7, 0xab, 0x10, 0x8d, 0x17, 0x5d, 0xef, 0xad, 0xf2, + 0xe3, 0x1b, 0x56, 0x23, 0x8d, 0x2c, 0x33, 0x59, 0x3a, 0x99, 0x86, 0x6e, 0xd6, 0xcb, 0xc5, 0x8c, + 0x43, 0x1b, 0x5e, 0x26, 0x88, 0xf1, 0x3e, 0xf8, 0x3e, 0xa7, 0xb9, 0xc6, 0xb5, 0xac, 0x3b, 0xb7, + 0x38, 0x0d, 0xb2, 0xc5, 0x15, 0xb4, 0x55, 0x97, 0xc3, 0x14, 0x0c, 0x19, 0x93, 0x21, 0xba, 0xb9, + 0xd6, 0x1f, 0x28, 0x8b, 0x87, 0xfe, 0x20, 0x21, 0x08, 0xfb, 0x32, 0x16, 0xf7, 0xa4, 0xa7, 0x30, + 0x6a, 0x02, 0xd5, 0x67, 0xf6, 0xff, 0x37, 0xee, 0xd7, 0x1b, 0x34, 0x6f, 0x0b, 0xc2, 0x94, 0x91, + 0xa6, 0x78, 0x50, 0xf2, 0x9e, 0x58, 0x44, 0x11, 0xe4, 0x8b, 0x23, 0x3c, 0xe6, 0xa2, 0x8c, 0x1e, + 0x96, 0xdf, 0x41, 0x11, 0x47, 0x89, 0x2a, 0x2a, 0xe4, 0xc8, 0xd2, 0x12, 0x98, 0xb0, 0x37, 0x02, + 0xf6, 0xa6, 0x3b, 0xa1, 0xf3, 0x30, 0x9c, 0xda, 0x35, 0x0c, 0xef, 0xc2, 0x36, 0xaf, 0xb7, 0x2c, + 0xe9, 0xf6, 0x64, 0x0d, 0x05, 0x84, 0xf6, 0x8d, 0x61, 0xeb, 0xda, 0x36, 0x05, 0x42, 0x56, 0xde, + 0xfe, 0x36, 0x7c, 0x42, 0x1c, 0x5e, 0xfb, 0x9b, 0xe2, 0x22, 0xcc, 0x42, 0xff, 0xb1, 0xe6, 0xfd, + 0x02, 0x4a, 0x1c, 0x44, 0xa8, 0x78, 0x87, 0xc5, 0x58, 0xed, 0x55, 0x0f, 0x29, 0x3b, 0x50, 0xf8, + 0x93, 0x05, 0xa5, 0x3c, 0x1a, 0xd5, 0x7c, 0xcd, 0x5f, 0xab, 0x8a, 0x95, 0xb0, 0x65, 0x86, 0x86, + 0x3d, 0x8c, 0x05, 0x21, 0x46, 0xfa, 0xf7, 0x7a, 0x2a, 0xa6, 0x09, 0x0f, 0xf4, 0xaa, 0x2d, 0x3d, + 0xf9, 0x63, 0x66, 0x22, 0x9b, 0xc7, 0x74, 0x3f, 0xbc, 0x97, 0x58, 0xbb, 0x41, 0x02, 0x60, 0xd1, + 0xe2, 0xfe, 0x26, 0x22, 0x91, 0x76, 0x44, 0xce, 0x94, 0x2c, 0xd1, 0x13, 0x56, 0x06, 0xc0, 0xa4, + 0xc4, 0x36, 0xe9, 0x84, 0x78, 0xa0, 0xc6, 0x02, 0x97, 0xa5, 0x27, 0xd4, 0x9e, 0x78, 0x51, 0xca, + 0x7e, 0x55, 0x94, 0xcd, 0xf3, 0x64, 0xe9, 0x0f, 0xf5, 0x37, 0xe6, 0x15, 0x09, 0xed, 0x72, 0xd2, + 0x25, 0xd6, 0xf2, 0xde, 0x93, 0xbc, 0xc3, 0x7c, 0x27, 0x63, 0x5e, 0x50, 0x2b, 0xf4, 0x17, 0xd0, + 0x09, 0x3a, 0xca, 0xb5, 0xad, 0x92, 0xf8, 0x9a, 0x52, 0x5d, 0x74, 0x24, 0x6a, 0x3b, 0x59, 0x2a, + 0x88, 0x17, 0xc7, 0xee, 0x78, 0xfb, 0x78, 0x06, 0x16, 0x6a, 0xad, 0x0b, 0xa5, 0x9c, 0xab, 0x5c, + 0x78, 0x3a, 0xc5, 0x7d, 0x9e, 0x1e, 0xb7, 0x82, 0x57, 0x6f, 0xe5, 0xd0, 0x43, 0x2d, 0x71, 0x20, + 0xd7, 0x16, 0x54, 0x59, 0x75, 0x15, 0x8f, 0x47, 0x90, 0x31, 0xb9, 0x9a, 0x0d, 0x85, 0x7d, 0x01, + 0x58, 0x67, 0x40, 0x07, 0xec, 0x72, 0xaf, 0x41, 0x01, 0x3e, 0x61, 0x0c, 0xe4, 0x12, 0x1c, 0x30, + 0xd3, 0x37, 0xf7, 0xdf, 0xf4, 0x2e, 0xa0, 0x62, 0xd5, 0xba, 0x1c, 0xc9, 0x70, 0x31, 0x2e, 0x10, + 0xa9, 0xf0, 0x31, 0x53, 0x69, 0xea, 0x2b, 0xbc, 0xbe, 0x5d, 0xbb, 0xa7, 0xdf, 0x62, 0xf0, 0x28, + 0x18, 0x66, 0xa6, 0xd3, 0x74, 0x86, 0x11, 0x4c, 0x6e, 0x57, 0xdd, 0x0c, 0x86, 0xc2, 0xa5, 0x3b, + 0x0f, 0x92, 0x19, 0x24, 0x90, 0x82, 0xdd, 0xc5, 0x48, 0xdb, 0x72, 0xb8, 0xda, 0x38, 0x95, 0xa8, + 0xa0, 0x80, 0xe2, 0x4e, 0x93, 0x44, 0xb8, 0x4f, 0xe9, 0xc1, 0xd9, 0x2c, 0x90, 0x4e, 0xed, 0x6f, + 0x9d, 0x3e, 0x7b, 0x66, 0x53, 0xa9, 0xd3, 0xc5, 0x18, 0x95, 0x05, 0xbe, 0xfe, 0xbd, 0xee, 0xb6, + 0x2a, 0x1e, 0x29, 0x23, 0xff, 0x44, 0x6b, 0x02, 0x3c, 0xbe, 0xac, 0x12, 0x1f, 0xed, 0x0d, 0x3b, + 0x3b, 0xc9, 0x3e, 0x84, 0xa7, 0x3c, 0x00, 0x0d, 0x15, 0x07, 0x83, 0xa1, 0x7f, 0x4f, 0xc1, 0x13, + 0x51, 0x67, 0x1e, 0x7c, 0xf8, 0xe2, 0xac, 0xb4, 0xd1, 0x49, 0x78, 0xd4, 0x01, 0xb1, 0x55, 0xba, + 0xa5, 0xa4, 0xf8, 0x85, 0x95, 0x7f, 0xf6, 0x4d, 0xda, 0xd3, 0x44, 0x46, 0xfd, 0xac, 0xa5, 0xc1, + 0xd5, 0xfc, 0x87, 0xea, 0x9e, 0xdd, 0xbe, 0xf5, 0x52, 0x58, 0xed, 0xfd, 0xde, 0x80, 0x3a, 0x07, + 0x77, 0x05, 0xcd, 0xd8, 0x29, 0x4e, 0x28, 0x22, 0x66, 0x39, 0x17, 0xcd, 0x56, 0x6b, 0x52, 0x6c, + 0x1c, 0xe8, 0x22, 0x74, 0xa2, 0xcf, 0xc8, 0x72, 0x11, 0x36, 0x4f, 0xe1, 0xf6, 0x52, 0x31, 0xfb, + 0x8b, 0x06, 0x11, 0xf7, 0x89, 0xb9, 0x96, 0x9b, 0x1c, 0x99, 0x7a, 0xd4, 0xa0, 0x8f, 0x2c, 0x26, + 0x62, 0xe7, 0x4e, 0xaf, 0x0e, 0xbd, 0xc3, 0xce, 0x2e, 0x67, 0xd1, 0x86, 0x3b, 0xe9, 0xc4, 0x39, + 0x75, 0x5e, 0xbd, 0x0a, 0x06, 0xac, 0xd9, 0x0d, 0xe4, 0xb0, 0x86, 0xaa, 0x1f, 0xb7, 0x9a, 0x26, + 0x7a, 0xac, 0x5b, 0x38, 0x30, 0x6e, 0x4e, 0xb9, 0xe3, 0xa6, 0x23, 0xe1, 0xa4, 0x73, 0x1d, 0x50, + 0xcc, 0x1c, 0xef, 0xe6, 0x73, 0xf7, 0x8b, 0xeb, 0xbe, 0x69, 0x81, 0xeb, 0x74, 0x87, 0x68, 0x4e, + 0x4a, 0x2b, 0xfc, 0xa0, 0x0b, 0x30, 0x6d, 0x5e, 0x81, 0xe2, 0xd9, 0xa6, 0xba, 0x1e, 0x5b, 0x09, + 0x2e, 0xe3, 0x67, 0x0d, 0x75, 0x65, 0x76, 0x5c, 0x61, 0xf4, 0x19, 0xd8, 0x6d, 0xfa, 0xfe, 0xa6, + 0x11, 0x1a, 0xaf, 0xca, 0x1c, 0xff, 0x74, 0xe7, 0x85, 0xb3, 0x3d, 0xb9, 0x67, 0x7c, 0xf7, 0x16, + 0xf8, 0xf6, 0x6b, 0xac, 0xb8, 0x85, 0x7c, 0x1e, 0x02, 0x53, 0x67, 0xac, 0x29, 0xd2, 0x72, 0x97, + 0x91, 0x43, 0x81, 0xc2, 0xde, 0xc6, 0x41, 0x3c, 0x96, 0xd6, 0xdf, 0x19, 0x3e, 0x18, 0x2e, 0xbf, + 0xcb, 0xb4, 0xec, 0x20, 0xd8, 0xa7, 0x48, 0x46, 0x62, 0x9d, 0x44, 0x23, 0x0e, 0x72, 0x3b, 0xec, + 0x4e, 0x7d, 0x2e, 0x92, 0x71, 0xd7, 0xa8, 0x4b, 0x3c, 0x6c, 0x39, 0x72, 0xb0, 0xc2, 0x97, 0x67, + 0xde, 0x80, 0x30, 0x0a, 0x36, 0x49, 0xe2, 0x31, 0xa3, 0x70, 0x7d, 0xe3, 0x28, 0xf7, 0xa5, 0xe6, + 0xb0, 0xe4, 0xc6, 0x65, 0x43, 0xd3, 0x12, 0x77, 0xa4, 0x1a, 0x92, 0xa6, 0x1c, 0xd7, 0x7d, 0x6d, + 0xc9, 0x49, 0xdb, 0x55, 0x45, 0xf4, 0xae, 0x67, 0x69, 0xc1, 0xf0, 0xe4, 0xa4, 0x3e, 0x18, 0xae, + 0x08, 0x18, 0xc0, 0xf8, 0xa6, 0x87, 0xa8, 0x71, 0xa9, 0xd2, 0x12, 0x3c, 0xa3, 0xd8, 0x9f, 0xe2, + 0x28, 0x30, 0x46, 0xb7, 0x92, 0x33, 0x2d, 0x4b, 0x1a, 0xc7, 0x3e, 0x1f, 0x19, 0x66, 0xd8, 0xd5, + 0x03, 0x34, 0x39, 0x6b, 0xe5, 0x0e, 0xea, 0x0d, 0x90, 0xba, 0x26, 0xbd, 0x53, 0xc3, 0x44, 0xe7, + 0x6c, 0x51, 0x38, 0xc4, 0x73, 0x85, 0xa6, 0x10, 0xa8, 0x36, 0xbe, 0x75, 0x26, 0xe2, 0xfd, 0xd0, + 0x59, 0x8d, 0xf7, 0xb5, 0x81, 0xcd, 0x2b, 0x25, 0x16, 0x7c, 0x0b, 0x5f, 0x24, 0x07, 0x9b, 0x77, + 0x45, 0x63, 0x5a, 0x15, 0x62, 0xaa, 0xa1, 0x44, 0x66, 0x72, 0xda, 0x35, 0x94, 0x6a, 0xe6, 0xa8, + 0x69, 0xcd, 0xe0, 0x64, 0x6b, 0xde, 0xbb, 0xde, 0xae, 0x82, 0x89, 0x36, 0x16, 0xf0, 0x13, 0x41, + 0xa7, 0x42, 0x2e, 0xaf, 0x8a, 0xed, 0x22, 0xd2, 0xc6, 0x91, 0x5f, 0x2a, 0x25, 0x06, 0x52, 0x03, + 0xc5, 0xcb, 0x78, 0xe4, 0x7a, 0xef, 0x1c, 0xb3, 0x3f, 0xbc, 0xfa, 0x29, 0xfc, 0xc6, 0x73, 0x68, + 0x9e, 0x80, 0x0c, 0xc2, 0xfa, 0x11, 0xdc, 0xde, 0xa0, 0x8f, 0x5b, 0x53, 0x80, 0xcd, 0x4e, 0x4c, + 0xd2, 0x15, 0x40, 0xa4, 0x18, 0x4e, 0x70, 0xf7, 0x0c, 0xc5, 0xe8, 0xc4, 0xbd, 0x6f, 0xc4, 0x46, + 0x12, 0x45, 0xfe, 0xa8, 0x11, 0xd0, 0xd1, 0x4c, 0x1a, 0x99, 0x99, 0xf1, 0x3c, 0xdc, 0xb5, 0x8a, + 0xef, 0xa6, 0x22, 0xd4, 0x9e, 0x75, 0x3f, 0x37, 0x73, 0x3c, 0x62, 0xb3, 0xc3, 0xa5, 0x87, 0xdd, + 0xc2, 0x96, 0x8b, 0x02, 0xf1, 0x10, 0xf8, 0xed, 0x8b, 0x56, 0x29, 0x5b, 0xdc, 0x67, 0xbf, 0x39, + 0x8d, 0x01, 0xc8, 0x8a, 0x89, 0x2e, 0xf2, 0x05, 0x43, 0xf6, 0x2b, 0x9b, 0x4e, 0xca, 0xd4, 0xca, + 0x4c, 0xf8, 0xc1, 0xf7, 0xc2, 0x4a, 0x55, 0x87, 0xc0, 0xb4, 0xd4, 0xc6, 0xdf, 0xc5, 0xaf, 0xc0, + 0x23, 0x90, 0x6f, 0x93, 0x25, 0x17, 0x52, 0xa2, 0xed, 0x90, 0x14, 0x8f, 0xdc, 0x74, 0xb1, 0x71, + 0x3c, 0xaa, 0xfb, 0x60, 0x76, 0xd6, 0xc8, 0x17, 0x15, 0x5e, 0xae, 0xa3, 0xb7, 0xdd, 0x2e, 0x10, + 0xe9, 0x3d, 0x33, 0x00, 0x7a, 0xd4, 0x8f, 0xda, 0x3a, 0x03, 0xeb, 0x2e, 0x01, 0x7c, 0xf8, 0xed, + 0x50, 0x01, 0x65, 0x29, 0x94, 0x77, 0xf8, 0x97, 0x20, 0xca, 0xa2, 0xa9, 0x6a, 0xee, 0xbf, 0x4e, + 0x74, 0x52, 0x5f, 0x5f, 0xc4, 0xc1, 0xb7, 0x43, 0x4c, 0x06, 0xd0, 0x2b, 0x77, 0x9a, 0x82, 0x01, + 0x3b, 0x5a, 0x15, 0x6a, 0x40, 0x99, 0x50, 0xdb, 0x0c, 0x95, 0xa4, 0x97, 0xbf, 0x8a, 0x63, 0xd2, + 0xd8, 0x06, 0xf1, 0x2c, 0xe0, 0x5a, 0xe2, 0x0e, 0x9a, 0xca, 0x1a, 0x9f, 0x71, 0xe1, 0x41, 0x86, + 0x92, 0xd2, 0x0d, 0x6c, 0x40, 0xa9, 0x0b, 0xd9, 0x33, 0x0d, 0xaf, 0x6c, 0xdb, 0x69, 0xeb, 0x26, + 0x8e, 0x29, 0xb3, 0xd0, 0x9f, 0x9c, 0xce, 0xb8, 0x95, 0x2f, 0xd0, 0x2b, 0x56, 0x94, 0xf1, 0xe7, + 0x46, 0xff, 0x88, 0xd1, 0x93, 0x65, 0x79, 0x92, 0x57, 0x62, 0x12, 0x1d, 0x82, 0x4f, 0x80, 0xef, + 0x98, 0x45, 0x09, 0xea, 0x7d, 0x04, 0xf1, 0xce, 0x03, 0xe3, 0x6a, 0x22, 0xdd, 0x3b, 0x80, 0x95, + 0x87, 0x7e, 0x8b, 0xfc, 0xd8, 0xf6, 0x32, 0xeb, 0x45, 0xd8, 0x7d, 0xeb, 0x81, 0x11, 0xcb, 0x5d, + 0x10, 0x35, 0x6b, 0xbe, 0x9c, 0x01, 0x7c, 0xfb, 0xb5, 0xc6, 0xb5, 0x9c, 0x87, 0x1b, 0xd9, 0xe0, + 0xe4, 0x45, 0x67, 0xca, 0xd8, 0xf9, 0x18, 0x05, 0xea, 0x48, 0x8b, 0x45, 0x19, 0x03, 0xda, 0x5b, + 0x68, 0x45, 0x23, 0xaf, 0xf7, 0xce, 0xae, 0x4e, 0xd8, 0xf8, 0xd3, 0x7c, 0xde, 0x41, 0x61, 0x01, + 0xbe, 0xcf, 0x2b, 0x11, 0x6c, 0x40, 0xb3, 0x50, 0x0e, 0x77, 0xf5, 0xd8, 0x59, 0xac, 0x18, 0x95, + 0xb5, 0x92, 0xa1, 0xce, 0x5c, 0x4b, 0xe5, 0xd2, 0x95, 0xef, 0xf4, 0x31, 0x6d, 0x45, 0x50, 0xe1, + 0xbf, 0x43, 0x24, 0xbb, 0xe5, 0xb7, 0x1e, 0x92, 0x25, 0x7b, 0x39, 0x1d, 0x34, 0xd1, 0xdd, 0xf5, + 0x25, 0xb8, 0x4b, 0x4e, 0x1e, 0xe5, 0xce, 0xb1, 0xb2, 0x5b, 0x8e, 0x7e, 0xbf, 0xad, 0xae, 0x61, + 0xf9, 0xdc, 0xc1, 0xc7, 0x92, 0x86, 0xea, 0x2d, 0x2a, 0x1c, 0x07, 0xad, 0x94, 0xf2, 0x15, 0x6d, + 0x61, 0xb0, 0xf1, 0xe8, 0x23, 0xdf, 0x0b, 0x79, 0x7b, 0x43, 0xda, 0x88, 0x74, 0xd4, 0xaf, 0x37, + 0x16, 0xdb, 0x81, 0x1b, 0xf8, 0x0f, 0x3b, 0x7b, 0x2a, 0x0b, 0xbe, 0x7c, 0xd0, 0x92, 0x8c, 0x43, + 0xc8, 0x95, 0xf8, 0x7f, 0xc0, 0x2a, 0x6d, 0xf5, 0xbc, 0xaf, 0x2e, 0x7f, 0xdb, 0xa2, 0xfe, 0x37, + 0xc6, 0xe1, 0x6b, 0x8a, 0x38, 0xea, 0x60, 0x94, 0x2f, 0xb7, 0xdd, 0x14, 0x5a, 0x9a, 0xf6, 0x21, + 0xda, 0x30, 0xbe, 0x1f, 0xe4, 0xa2, 0xc1, 0x3b, 0xfa, 0x5d, 0x98, 0xf3, 0x56, 0x7f, 0xe8, 0xb2, + 0x33, 0x25, 0xce, 0xff, 0x64, 0xeb, 0xd8, 0x4c, 0xb9, 0x0c, 0x5d, 0xae, 0xc8, 0x43, 0x8e, 0x4c, + 0x4c, 0x09, 0x7a, 0x42, 0x06, 0xe0, 0x04, 0xcc, 0x09, 0xe5, 0x68, 0x1a, 0x55, 0x5c, 0xfc, 0x15, + 0x86, 0xe3, 0xe7, 0xf2, 0xb6, 0x15, 0x31, 0x56, 0xaf, 0xa7, 0x13, 0x35, 0x90, 0xe7, 0xec, 0xfa, + 0x82, 0xea, 0x54, 0x22, 0xfc, 0x08, 0x1a, 0xb0, 0x55, 0xf3, 0x75, 0x08, 0x94, 0x33, 0x08, 0x6f, + 0xfd, 0x1d, 0x69, 0x8c, 0x63, 0xb3, 0x4a, 0xd5, 0x50, 0xe9, 0xca, 0xeb, 0x42, 0xf1, 0x7c, 0x39, + 0x1c, 0xcd, 0x95, 0x0a, 0xd3, 0xa0, 0xcd, 0xed, 0x43, 0x35, 0x05, 0x3e, 0x35, 0x21, 0x01, 0x6d, + 0x23, 0x11, 0xd7, 0x49, 0xdb, 0xf2, 0xb7, 0xbe, 0x33, 0x38, 0x85, 0x74, 0xa6, 0x2c, 0x0b, 0x17, + 0x4e, 0xd4, 0x12, 0x0d, 0xcb, 0xd7, 0x91, 0xad, 0x4f, 0xab, 0x53, 0x43, 0x50, 0x10, 0xf7, 0xc3, + 0x02, 0x4e, 0xe8, 0x72, 0xef, 0x00, 0xd2, 0x9a, 0xd7, 0x9e, 0x3f, 0x2b, 0x33, 0x6a, 0x71, 0xc4, + 0x6b, 0x21, 0x10, 0x1a, 0x0b, 0x8e, 0xe8, 0xcb, 0x34, 0x07, 0xa9, 0xf4, 0xb2, 0x55, 0x0b, 0x44, + 0x35, 0x08, 0xbd, 0x21, 0xe6, 0x7a, 0x6f, 0xd2, 0xda, 0xc0, 0x09, 0x04, 0xda, 0xeb, 0x99, 0x35, + 0x0c, 0xd4, 0x5f, 0xca, 0x32, 0x4f, 0xad, 0x5c, 0xe3, 0x1c, 0x4b, 0x10, 0x48, 0xf7, 0xa7, 0x1d, + 0x30, 0xa2, 0x5b, 0xba, 0x2c, 0x36, 0x77, 0x99, 0x15, 0x18, 0xe2, 0xe0, 0x14, 0x30, 0x77, 0xb1, + 0xed, 0xee, 0x1f, 0x28, 0x91, 0xf8, 0x55, 0xbe, 0xd7, 0xe4, 0x76, 0x04, 0x5f, 0x6b, 0xbb, 0xbf, + 0xfe, 0xfe, 0xec, 0x70, 0x54, 0xaf, 0xf2, 0x8f, 0x69, 0x93, 0x1a, 0x5d, 0x0e, 0xf0, 0xd6, 0x30, + 0x71, 0xa6, 0xdd, 0x20, 0x3b, 0x9f, 0xa7, 0xac, 0xe7, 0x83, 0xe9, 0x7b, 0x41, 0x9f, 0x82, 0xd9, + 0xe2, 0x50, 0x65, 0xe1, 0x2a, 0x1c, 0xee, 0x8d, 0x84, 0xc9, 0xe8, 0x08, 0x0e, 0x0a, 0x33, 0x01, + 0xd3, 0x76, 0x54, 0x99, 0x16, 0x2d, 0x72, 0xfd, 0x69, 0xf4, 0xe1, 0xd3, 0xd6, 0xf3, 0xa4, 0x8f, + 0xc7, 0xb7, 0x2b, 0x59, 0x23, 0xcb, 0xf3, 0x1a, 0xe1, 0xad, 0x8b, 0x48, 0xc0, 0x39, 0x38, 0xae, + 0x84, 0xc6, 0x75, 0xa6, 0x04, 0x2b, 0x29, 0xc1, 0xc3, 0x2a, 0x4f, 0x05, 0x1f, 0xb0, 0xa7, 0x0c, + 0x6a, 0xe2, 0xec, 0x44, 0x44, 0x35, 0x39, 0xbc, 0x16, 0x82, 0x52, 0xcc, 0x92, 0xe9, 0x4b, 0x16, + 0x23, 0x6a, 0xcc, 0x1d, 0xfe, 0xd1, 0xc4, 0xd7, 0xe6, 0x26, 0xd1, 0xa8, 0x4d, 0x3c, 0x8f, 0x9d, + 0x6c, 0xab, 0xb3, 0x79, 0x09, 0xd6, 0xd4, 0x31, 0xc4, 0x1c, 0xd7, 0x4a, 0xda, 0x46, 0x43, 0xa4, + 0x16, 0x21, 0xff, 0xc9, 0x43, 0xe5, 0x27, 0x4f, 0x32, 0x05, 0x0b, 0x03, 0x76, 0x36, 0x7a, 0xf6, + 0x8a, 0x90, 0x20, 0xfa, 0xaa, 0x69, 0x2d, 0x0a, 0x49, 0x87, 0xfc, 0xf1, 0xb2, 0x2c, 0xf2, 0xba, + 0xeb, 0xaa, 0x61, 0xed, 0x35, 0x18, 0xa4, 0x41, 0x4a, 0xf7, 0x89, 0x45, 0xc2, 0xdf, 0x80, 0x44, + 0x8a, 0xcb, 0x49, 0xef, 0x61, 0x5e, 0xa6, 0x22, 0x2c, 0x55, 0x77, 0x0e, 0xe0, 0xfc, 0x35, 0xc3, + 0x56, 0xdb, 0xe0, 0x19, 0xe2, 0xe1, 0xb0, 0xe3, 0x39, 0xa1, 0xc4, 0xcc, 0xa4, 0xdf, 0xca, 0xd2, + 0x75, 0x9d, 0x99, 0x41, 0xc3, 0x98, 0xfd, 0xd8, 0x19, 0x20, 0x51, 0x37, 0xec, 0x8d, 0x74, 0x13, + 0x0f, 0x42, 0x11, 0x75, 0x68, 0x58, 0x65, 0xcd, 0xbf, 0xfc, 0x16, 0xea, 0x37, 0xd6, 0x56, 0x59, + 0xc3, 0x69, 0x4d, 0x49, 0x4d, 0x7c, 0x98, 0xaf, 0x85, 0x93, 0x8e, 0x2a, 0xea, 0x86, 0x19, 0x0c, + 0x64, 0x2d, 0xc5, 0x79, 0xd8, 0xbd, 0xdc, 0x91, 0x53, 0x3c, 0x48, 0x41, 0xad, 0xd8, 0xdd, 0x09, + 0x2e, 0xfd, 0x32, 0x71, 0xe3, 0xd7, 0x81, 0x26, 0x34, 0xeb, 0xc8, 0x5c, 0x68, 0x67, 0xd4, 0x5e, + 0x1f, 0x47, 0xbc, 0xd5, 0x96, 0x72, 0x6a, 0xfb, 0x23, 0x3a, 0xbd, 0xdc, 0x32, 0x09, 0x61, 0x0a, + 0xb1, 0xbf, 0x02, 0x51, 0x1b, 0x24, 0xe7, 0x4d, 0x27, 0xd3, 0x38, 0x1e, 0x7a, 0x76, 0x2c, 0xbe, + 0xdc, 0x11, 0x8f, 0x6a, 0x82, 0x6e, 0xf5, 0x55, 0xf7, 0xf7, 0x8e, 0x2c, 0x5d, 0xa1, 0x52, 0xe5, + 0xb0, 0x3e, 0xaa, 0x39, 0xa1, 0x04, 0xf1, 0x09, 0xec, 0xa6, 0x34, 0x1c, 0xaa, 0xaa, 0x3a, 0xdf, + 0xad, 0x65, 0xce, 0x2f, 0x19, 0x30, 0x34, 0x38, 0x44, 0x7c, 0xd6, 0x4d, 0x46, 0x8a, 0xd6, 0xcd, + 0xd0, 0xcd, 0x36, 0xb2, 0x28, 0xa2, 0x44, 0xe9, 0xda, 0x1c, 0xa5, 0xd5, 0xa6, 0x90, 0x48, 0xf6, + 0xf4, 0xad, 0x4b, 0x02, 0x89, 0x81, 0xcc, 0x90, 0x57, 0x0c, 0x0c, 0xf5, 0x28, 0xf5, 0xfc, 0xca, + 0x66, 0x5b, 0x61, 0x2c, 0x7c, 0x3e, 0x3d, 0x2e, 0x35, 0x9f, 0xc2, 0xb1, 0x72, 0x77, 0x7b, 0x3b, + 0x00, 0x15, 0x51, 0x59, 0xd5, 0xc8, 0x21, 0x5c, 0x36, 0xf0, 0xa2, 0x9d, 0xdb, 0xd9, 0x8b, 0xef, + 0x95, 0xbd, 0x9b, 0x0e, 0x4a, 0xb7, 0xfd, 0x27, 0xe1, 0x36, 0xab, 0x02, 0x07, 0x5e, 0xba, 0x55, + 0x26, 0x02, 0xc3, 0xd6, 0xde, 0xfd, 0x15, 0x5f, 0xef, 0x10, 0x5a, 0x93, 0x3e, 0x68, 0x5f, 0x19, + 0xbd, 0x8e, 0x6a, 0x4b, 0x7f, 0x82, 0x93, 0x62, 0x42, 0x8d, 0x0e, 0x7c, 0x42, 0x98, 0x2d, 0x48, + 0x8e, 0x02, 0x40, 0xa7, 0xa1, 0xc0, 0x0b, 0x7a, 0xe0, 0x79, 0x65, 0x8c, 0x02, 0xa7, 0x3e, 0x4e, + 0x1d, 0xca, 0x14, 0x8d, 0x1b, 0xde, 0x0a, 0x80, 0xc4, 0x0c, 0xef, 0xeb, 0x05, 0xa0, 0x18, 0x05, + 0x83, 0xa5, 0x3d, 0xd8, 0x19, 0xd3, 0x36, 0xa3, 0x8d, 0x96, 0xbe, 0x2a, 0xa4, 0x6e, 0x7a, 0x78, + 0xa1, 0xb9, 0x1c, 0x44, 0xaf, 0x62, 0x7d, 0x1b, 0x32, 0xd0, 0x81, 0x06, 0x9c, 0x98, 0x3c, 0x4f, + 0x87, 0x34, 0x05, 0x11, 0xb4, 0x86, 0x6e, 0x73, 0x63, 0xb1, 0xe0, 0x8c, 0x2a, 0x4d, 0xb0, 0xec, + 0x7b, 0xba, 0x19, 0x0b, 0x61, 0x1d, 0xa4, 0xa6, 0xd8, 0x53, 0xcf, 0x0b, 0x97, 0xf4, 0x55, 0xca, + 0x02, 0xbf, 0x8a, 0x3d, 0xb7, 0x4d, 0x32, 0x61, 0xbc, 0xee, 0x2b, 0x86, 0x67, 0xc1, 0x15, 0x10, + 0xcf, 0xbd, 0x62, 0x69, 0xca, 0x9f, 0xe5, 0xcb, 0x18, 0xd4, 0x2d, 0xd5, 0xd9, 0x03, 0x44, 0x1f, + 0xa3, 0xdb, 0x71, 0x2c, 0x74, 0x14, 0x06, 0x52, 0x9e, 0xf8, 0x4b, 0x35, 0x78, 0xe4, 0x27, 0xf2, + 0x60, 0x22, 0x31, 0x80, 0x3b, 0xd7, 0x95, 0xa2, 0xc4, 0x89, 0xfb, 0x0b, 0x23, 0xf0, 0x4c, 0x48, + 0x5e, 0x19, 0x92, 0x35, 0x3c, 0x58, 0x47, 0x55, 0x35, 0x31, 0x31, 0x2f, 0x96, 0x6f, 0xa8, 0xe9, + 0x66, 0x78, 0x8b, 0x0f, 0x7e, 0x7e, 0xcd, 0x75, 0x85, 0x34, 0x67, 0xb1, 0xcf, 0x47, 0x3d, 0x39, + 0x2a, 0x3f, 0x40, 0x6c, 0x40, 0x03, 0xa8, 0xd9, 0x73, 0xc0, 0xc9, 0xa9, 0x06, 0xb0, 0x57, 0x98, + 0xd7, 0xab, 0xaf, 0x4c, 0xa0, 0x28, 0x4a, 0x09, 0xe3, 0x21, 0xd6, 0xa3, 0x7b, 0x9e, 0xae, 0x69, + 0x72, 0x42, 0xd8, 0xac, 0xe7, 0x20, 0x57, 0x82, 0x42, 0xd0, 0xb8, 0x05, 0x7d, 0xb3, 0xb1, 0x57, + 0x0a, 0x60, 0xa2, 0xa0, 0x42, 0x2e, 0x18, 0x84, 0x29, 0xc7, 0xdc, 0xfb, 0x34, 0x7f, 0x41, 0xc8, + 0x29, 0x31, 0xe5, 0x00, 0x1c, 0x11, 0x23, 0x30, 0x84, 0xd4, 0x8e, 0xf4, 0x24, 0xfb, 0x51, 0xb6, + 0x33, 0xac, 0x37, 0x4d, 0x42, 0xa5, 0x18, 0x05, 0x79, 0x61, 0x19, 0xeb, 0xc0, 0x1f, 0x62, 0x79, + 0x7e, 0x1c, 0xf0, 0xa2, 0x72, 0x5a, 0xaf, 0x90, 0xe5, 0x14, 0x90, 0xb3, 0xe7, 0x6a, 0x29, 0xde, + 0xe3, 0x0a, 0xc3, 0x8e, 0x3d, 0x5d, 0x7a, 0xab, 0x5e, 0x04, 0xa1, 0xda, 0x73, 0xde, 0x24, 0x04, + 0xe0, 0x92, 0xe5, 0x40, 0x46, 0x6e, 0x0c, 0xec, 0xd0, 0x1d, 0xf9, 0x45, 0x12, 0xb5, 0xf3, 0x23, + 0x0c, 0xd7, 0x3a, 0x5c, 0xbb, 0x72, 0x57, 0x32, 0x7c, 0x3b, 0x94, 0x67, 0x80, 0x2e, 0x5b, 0xbc, + 0x61, 0x15, 0x6f, 0xa0, 0x5b, 0xcb, 0xef, 0x91, 0x46, 0xcf, 0xd5, 0x35, 0xf0, 0x2e, 0x9e, 0xc6, + 0x9b, 0x93, 0x6d, 0x52, 0xf3, 0xa1, 0xf6, 0x70, 0x04, 0xd7, 0x9d, 0x81, 0xad, 0xb6, 0x9c, 0x67, + 0x26, 0x28, 0x4e, 0x79, 0x12, 0xac, 0x72, 0x2f, 0x38, 0xe8, 0xe2, 0x9e, 0xcb, 0xca, 0x47, 0xc5, + 0x0f, 0xc5, 0x5e, 0x7e, 0x67, 0xd9, 0x0a, 0xa8, 0xda, 0x3b, 0xaf, 0xed, 0x2d, 0x77, 0xf5, 0x48, + 0xc6, 0x32, 0x96, 0x2a, 0xf2, 0x71, 0x65, 0x90, 0x82, 0xae, 0xe6, 0xf3, 0x2b, 0x72, 0x96, 0x88, + 0xe8, 0x14, 0x5b, 0x42, 0x92, 0xcb, 0xf8, 0x86, 0x22, 0xab, 0x38, 0x1c, 0x13, 0x8b, 0xf8, 0xe3, + 0xd2, 0xe0, 0xe7, 0x5a, 0xea, 0xb0, 0x48, 0xda, 0x2e, 0xe5, 0x2e, 0x3f, 0x71, 0xe8, 0x7d, 0x5a, + 0x1d, 0x7d, 0xea, 0x98, 0x77, 0xe1, 0x38, 0xa7, 0x3b, 0xa4, 0xb4, 0xb1, 0xa7, 0x19, 0xa0, 0x08, + 0x5a, 0x9a, 0xb9, 0x6d, 0x60, 0xb0, 0xf2, 0x8c, 0xb8, 0x5e, 0x69, 0x6a, 0x8d, 0xdd, 0xcb, 0x5f, + 0xe2, 0x6b, 0x28, 0x13, 0xd3, 0xcb, 0xb2, 0x64, 0xa0, 0x98, 0x38, 0x91, 0x4c, 0x87, 0x52, 0xad, + 0x35, 0x25, 0x12, 0x4f, 0x85, 0xb1, 0x10, 0x4f, 0x2f, 0x26, 0xfc, 0x20, 0xc4, 0x6f, 0xd2, 0xf0, + 0x19, 0x54, 0xb4, 0xa0, 0xbc, 0xb3, 0x8d, 0xaa, 0xbf, 0xb4, 0xec, 0x1e, 0x53, 0x03, 0x1b, 0xcb, + 0xd0, 0xa0, 0xb7, 0xbd, 0xf7, 0x79, 0x07, 0xc2, 0x0c, 0xde, 0x77, 0x78, 0xa3, 0x3a, 0x90, 0x72, + 0x15, 0x74, 0x8f, 0xeb, 0x3e, 0x75, 0xa9, 0x4d, 0x09, 0x1b, 0xb7, 0xd0, 0xcf, 0x3e, 0x2d, 0x41, + 0x74, 0x66, 0x6f, 0xb2, 0x48, 0x9f, 0xf3, 0xe7, 0x32, 0x2d, 0x60, 0xde, 0x84, 0x35, 0xd3, 0xbf, + 0xd6, 0xd3, 0x03, 0x7b, 0xbc, 0xa0, 0x6d, 0x0b, 0xf9, 0xd9, 0x20, 0x06, 0xad, 0xac, 0x8a, 0x8d, + 0xaa, 0x10, 0xdb, 0xe9, 0x12, 0x4a, 0xc4, 0xc0, 0xa4, 0xee, 0x69, 0x83, 0xd6, 0xf8, 0x10, 0x1d, + 0xf6, 0x2f, 0xc1, 0xd2, 0x50, 0x8a, 0x18, 0xc9, 0xca, 0x76, 0x98, 0x98, 0x92, 0xbe, 0xb2, 0xf2, + 0x44, 0x6d, 0x6e, 0xf1, 0xf6, 0xe0, 0x1b, 0x44, 0x7f, 0xe9, 0x7e, 0x2b, 0x10, 0x96, 0xb6, 0x2b, + 0xd5, 0x55, 0xd4, 0x68, 0x3a, 0x7b, 0xb4, 0x94, 0xda, 0xbe, 0xec, 0xb0, 0xbd, 0x5a, 0xab, 0x15, + 0xcf, 0x7d, 0x3b, 0x8c, 0x15, 0x89, 0xb2, 0x0c, 0x0c, 0xa7, 0x3b, 0xba, 0x32, 0x47, 0x25, 0x69, + 0x55, 0xbb, 0xf7, 0x59, 0x2a, 0xfb, 0x77, 0x80, 0xf8, 0x16, 0xe4, 0xd6, 0xa7, 0x3e, 0x61, 0xc7, + 0xce, 0xd2, 0x9c, 0x76, 0x85, 0x4f, 0x41, 0x66, 0x4b, 0x21, 0xf1, 0x69, 0x41, 0x4a, 0x79, 0x3a, + 0x84, 0x96, 0x3d, 0x92, 0xa2, 0x1b, 0x08, 0x26, 0x29, 0x63, 0x42, 0x98, 0x1a, 0xdc, 0xa7, 0x84, + 0x74, 0xc9, 0x65, 0xf2, 0x2f, 0x74, 0xab, 0xa6, 0xfc, 0x86, 0xcd, 0x61, 0xba, 0xcd, 0x1a, 0x4e, + 0xdf, 0xfb, 0x79, 0x2c, 0x5c, 0x9e, 0x40, 0x36, 0x07, 0x5f, 0xc6, 0x08, 0x32, 0x36, 0x7a, 0x82, + 0xa9, 0x42, 0x8b, 0x8b, 0x9e, 0xe2, 0xfc, 0xaf, 0x59, 0x53, 0xeb, 0x73, 0xbe, 0xc2, 0x9b, 0xc2, + 0xa8, 0x36, 0x79, 0xcb, 0xd7, 0x2d, 0x95, 0xcd, 0xf3, 0x32, 0xa1, 0xde, 0x37, 0x2d, 0x4b, 0x31, + 0x6f, 0x6b, 0x72, 0x23, 0x92, 0xe9, 0x8c, 0x7b, 0xc5, 0x0b, 0x66, 0x43, 0xaf, 0xa4, 0x4b, 0xc0, + 0x58, 0xe4, 0xc4, 0x3d, 0x70, 0x4b, 0x44, 0x39, 0xc3, 0xcd, 0x63, 0xbb, 0x9d, 0xe6, 0xf9, 0xfb, + 0x31, 0x38, 0x18, 0x94, 0xb0, 0xaa, 0x5a, 0x76, 0xf1, 0xd2, 0xe1, 0xac, 0x71, 0x31, 0xb7, 0x6e, + 0xf8, 0x4e, 0x78, 0x50, 0xc1, 0x13, 0x6e, 0xac, 0x59, 0x66, 0x62, 0xbc, 0xf4, 0x30, 0x3f, 0xda, + 0xb2, 0xff, 0x8d, 0x6c, 0x93, 0xb9, 0xd8, 0x54, 0x2c, 0x21, 0xd2, 0x34, 0xd2, 0x65, 0xd3, 0xd2, + 0x30, 0x3f, 0x36, 0x20, 0x28, 0x65, 0xb9, 0xa4, 0x68, 0x4c, 0x1f, 0x4f, 0xe3, 0xca, 0xa5, 0xbe, + 0x0f, 0x28, 0x9a, 0xf8, 0xf8, 0xe3, 0xdf, 0xa6, 0xc9, 0x9d, 0x95, 0x09, 0x6f, 0xc6, 0x37, 0xf8, + 0x20, 0xd2, 0x51, 0xf2, 0xc0, 0x6d, 0x33, 0x75, 0xd3, 0x00, 0xea, 0x3d, 0xf7, 0x1e, 0xc0, 0x5b, + 0xf0, 0x17, 0xff, 0x14, 0x8c, 0xa8, 0xf0, 0xb5, 0xfe, 0xc9, 0x53, 0x08, 0xca, 0x48, 0xa4, 0x6c, + 0xc7, 0x7e, 0x4a, 0x5c, 0x31, 0x01, 0xce, 0xa6, 0x68, 0x97, 0x9b, 0xc6, 0x1f, 0xe2, 0x20, 0x54, + 0x3d, 0xde, 0xc8, 0x80, 0x86, 0xe9, 0xc5, 0x0a, 0x2c, 0xb6, 0x2e, 0xb3, 0xb6, 0x1d, 0xbf, 0x79, + 0x12, 0x27, 0x69, 0x1f, 0xc2, 0x1f, 0xa3, 0xd5, 0x22, 0xab, 0x4f, 0x1c, 0x9f, 0x35, 0xc1, 0xe3, + 0x0d, 0xd5, 0x5b, 0xd5, 0xa4, 0x72, 0x8c, 0x7c, 0x5c, 0x8b, 0xd0, 0x1c, 0xfc, 0x8f, 0x2e, 0x95, + 0x59, 0x0f, 0x2e, 0xc5, 0xd7, 0x7b, 0x58, 0xbe, 0x27, 0x91, 0x2b, 0x09, 0x4a, 0x7c, 0x3b, 0x21, + 0x19, 0x07, 0x32, 0xc5, 0x37, 0xc2, 0x69, 0x7f, 0x10, 0x53, 0xa7, 0xcf, 0x2e, 0x0b, 0x87, 0xb4, + 0x39, 0x6e, 0x49, 0xb7, 0xfb, 0x1d, 0x29, 0xf1, 0x9e, 0x70, 0xdd, 0x61, 0x70, 0xe1, 0x63, 0x23, + 0xcd, 0x7f, 0x7e, 0x33, 0xf0, 0x29, 0x5a, 0x5e, 0x19, 0xe4, 0xc7, 0xed, 0xf1, 0x80, 0x9e, 0xaa, + 0xe9, 0xa8, 0xd8, 0x07, 0x4a, 0x03, 0xab, 0x13, 0x50, 0x72, 0x59, 0x26, 0x62, 0x0e, 0xff, 0xa4, + 0xaf, 0x05, 0x73, 0x0e, 0xf6, 0xdc, 0x06, 0xa2, 0xb8, 0xd3, 0x64, 0x22, 0xa8, 0x58, 0x6b, 0x44, + 0xa7, 0x9e, 0x14, 0xde, 0x79, 0x87, 0xed, 0x13, 0xee, 0xad, 0xbd, 0x87, 0xed, 0xe8, 0x82, 0xa7, + 0x20, 0x8c, 0x81, 0xd4, 0x7b, 0x45, 0xe1, 0x19, 0xda, 0x17, 0x4a, 0xdb, 0xc6, 0xb3, 0xf7, 0x6b, + 0xc9, 0x17, 0x53, 0x96, 0x58, 0x00, 0x21, 0x5a, 0x52, 0xdd, 0xf7, 0xb7, 0xf3, 0x64, 0x8b, 0xfd, + 0x40, 0x70, 0x10, 0xd7, 0xd3, 0x7e, 0xa7, 0x6b, 0xb2, 0xb5, 0xbf, 0x02, 0x0a, 0x63, 0xb8, 0x6c, + 0xa9, 0xb0, 0x6d, 0x84, 0x1e, 0x81, 0x1d, 0x69, 0xe5, 0x02, 0xd2, 0x81, 0x63, 0x28, 0x9e, 0x58, + 0xfc, 0x20, 0xcc, 0xaa, 0xbc, 0x3e, 0x0b, 0x61, 0x24, 0xea, 0x41, 0x6c, 0xf5, 0x24, 0x64, 0x4e, + 0xee, 0x3a, 0xaf, 0xb3, 0xec, 0xf3, 0xe2, 0x73, 0x66, 0x7f, 0x1d, 0x1e, 0xd3, 0x5d, 0xfc, 0x0c, + 0x20, 0xb9, 0xca, 0xe8, 0x61, 0x8a, 0x82, 0xb7, 0xc3, 0x80, 0x3c, 0x5e, 0x09, 0x08, 0x88, 0x5a, + 0x92, 0xdd, 0xfc, 0x42, 0xa0, 0xb1, 0x42, 0x6d, 0xbf, 0xd8, 0x06, 0x6b, 0x5a, 0xa3, 0x9a, 0x1b, + 0xf7, 0x97, 0x35, 0xef, 0x31, 0xb0, 0x05, 0x95, 0x89, 0x5a, 0x37, 0xd2, 0x4c, 0x77, 0xe2, 0x51, + 0xc9, 0x54, 0x6e, 0xab, 0x0d, 0x69, 0xa6, 0xa0, 0xa0, 0x20, 0xa7, 0xfc, 0xa9, 0x6c, 0x1b, 0x19, + 0x97, 0x8d, 0xa6, 0xac, 0xed, 0x6f, 0x25, 0xbc, 0xac, 0x5d, 0x2c, 0x95, 0xc3, 0xaa, 0xca, 0x9b, + 0x7d, 0x4b, 0x88, 0x72, 0x6a, 0x2f, 0xe8, 0x50, 0x70, 0x45, 0xf3, 0x09, 0xfe, 0x5e, 0xb8, 0xe5, + 0xe8, 0x4b, 0xc8, 0xc1, 0xc8, 0x07, 0x5c, 0x94, 0xe2, 0xc6, 0x8e, 0xdd, 0x50, 0xa2, 0xee, 0x67, + 0x85, 0xac, 0x0a, 0x91, 0x69, 0x9f, 0xc4, 0x02, 0x66, 0x59, 0xd8, 0x7c, 0x37, 0xb3, 0xab, 0x93, + 0xc4, 0x83, 0xfc, 0xa0, 0x72, 0x0e, 0x3d, 0x16, 0x5a, 0x9e, 0xf8, 0xb6, 0x9b, 0xeb, 0x68, 0xa2, + 0xa4, 0xd5, 0x93, 0x16, 0x4e, 0x69, 0xd5, 0xca, 0xa5, 0x5b, 0x33, 0xce, 0x91, 0x0f, 0x8a, 0xc3, + 0x1c, 0x80, 0xbe, 0x66, 0x1d, 0xc9, 0xec, 0x17, 0x46, 0x51, 0x50, 0x92, 0x1c, 0x31, 0x7d, 0xfc, + 0x72, 0x25, 0xb3, 0x38, 0xe6, 0x8a, 0x08, 0xc7, 0x1a, 0x8a, 0x7e, 0x51, 0x35, 0xe7, 0x8b, 0xec, + 0xb7, 0x2f, 0xf7, 0x10, 0x10, 0x37, 0x16, 0x5c, 0xfe, 0xc0, 0xf3, 0x68, 0x50, 0x7a, 0x46, 0x5c, + 0x5e, 0xbe, 0x97, 0xc3, 0xde, 0x11, 0xfc, 0x9d, 0x0d, 0x3a, 0xd5, 0xfd, 0x76, 0xeb, 0x89, 0xd7, + 0x2d, 0xb7, 0x65, 0x3f, 0xd5, 0x23, 0xad, 0xba, 0xb7, 0xca, 0x4a, 0x4f, 0x79, 0x8d, 0x3b, 0x64, + 0xf5, 0xf5, 0xfa, 0x80, 0xb0, 0xf3, 0x24, 0x9e, 0x5a, 0x91, 0xb1, 0xb5, 0x20, 0x06, 0x56, 0x70, + 0xb4, 0x57, 0x6f, 0x0f, 0xad, 0x06, 0x3b, 0xc0, 0xa5, 0x59, 0xf6, 0x1b, 0x03, 0x4e, 0xe6, 0xb8, + 0x9f, 0xff, 0xe8, 0x41, 0x78, 0xd1, 0x98, 0xc1, 0xaa, 0x70, 0xd0, 0xc3, 0x10, 0xcd, 0x49, 0x1b, + 0x68, 0x20, 0x89, 0x00, 0x52, 0xf0, 0xa5, 0x5c, 0xfe, 0x75, 0x69, 0x43, 0x29, 0x9e, 0x54, 0xdc, + 0xfc, 0x6b, 0xee, 0xe7, 0x9e, 0xba, 0x19, 0xe3, 0x9c, 0x32, 0xbf, 0xde, 0xec, 0xc3, 0x59, 0xdc, + 0x2a, 0x76, 0x85, 0x4c, 0x5d, 0x78, 0x28, 0xda, 0xca, 0xd8, 0xa2, 0xf2, 0x2a, 0xc2, 0x0e, 0x88, + 0xb5, 0x66, 0x4b, 0x3f, 0xca, 0x43, 0xd0, 0x46, 0x8c, 0xb0, 0xe1, 0x81, 0x64, 0x07, 0x41, 0xa5, + 0x21, 0xed, 0x9a, 0x56, 0x5e, 0x36, 0x4a, 0x5c, 0xf5, 0xa7, 0x3f, 0xd9, 0x9a, 0xb8, 0x8a, 0xea, + 0x5a, 0x7a, 0x7b, 0x2d, 0x3d, 0xc9, 0x70, 0x43, 0x7f, 0x42, 0xf8, 0xa5, 0xf3, 0x00, 0x32, 0x0e, + 0xf8, 0x20, 0x90, 0xc1, 0x72, 0xbc, 0x12, 0xcb, 0x22, 0xa3, 0xf3, 0x97, 0xb8, 0x58, 0xea, 0xeb, + 0xea, 0xd0, 0x8c, 0x34, 0xb3, 0x36, 0x37, 0x1c, 0x43, 0xe7, 0x7c, 0x93, 0x65, 0x41, 0x00, 0xf0, + 0xb2, 0xe4, 0xae, 0x31, 0x58, 0x06, 0x7a, 0x35, 0x89, 0xdf, 0x6e, 0x38, 0x96, 0x3f, 0xb0, 0xa5, + 0x5c, 0xcb, 0x87, 0x96, 0x9b, 0x64, 0xa0, 0x7a, 0xfd, 0x48, 0x8b, 0xd3, 0xf0, 0xa1, 0x67, 0x32, + 0x77, 0x0b, 0x24, 0x21, 0x79, 0xb0, 0xef, 0x66, 0x6d, 0x1a, 0x53, 0x11, 0xad, 0x0d, 0xd8, 0x31, + 0x8c, 0xc0, 0xb3, 0x2c, 0xf0, 0x44, 0x45, 0x0a, 0xc0, 0x7b, 0xa5, 0xf0, 0x37, 0x3f, 0xea, 0xb3, + 0xf5, 0x58, 0x18, 0x51, 0x04, 0x7f, 0x23, 0xf8, 0xbb, 0xcc, 0x6a, 0xdc, 0xf0, 0x30, 0xfa, 0x87, + 0x3d, 0xc4, 0x75, 0x04, 0x1e, 0x2d, 0x45, 0xf0, 0xe2, 0x42, 0x67, 0xd2, 0x88, 0xc0, 0x04, 0x44, + 0xe7, 0xab, 0x02, 0xf0, 0xbe, 0x86, 0x1a, 0x1d, 0xc0, 0x9b, 0x28, 0x04, 0x05, 0x39, 0x28, 0xf2, + 0xfb, 0x3f, 0x2d, 0x79, 0x3e, 0xcf, 0x0a, 0xef, 0x65, 0x23, 0xf4, 0x3c, 0x41, 0xbc, 0xb0, 0x0f, + 0xae, 0x26, 0xb8, 0x58, 0xa1, 0x75, 0xdf, 0x27, 0xcd, 0x4a, 0xbd, 0xa3, 0x6a, 0x9e, 0xe7, 0x32, + 0x13, 0x65, 0x71, 0x75, 0x21, 0xa6, 0xbe, 0xb3, 0xcd, 0x9c, 0x42, 0xa1, 0x62, 0x6b, 0x9c, 0x79, + 0xbf, 0xef, 0x93, 0xc3, 0x7c, 0xf2, 0x57, 0x70, 0x68, 0x14, 0x5d, 0xf1, 0xb7, 0x2a, 0x71, 0x11, + 0xfc, 0x7a, 0xdd, 0x0e, 0xdf, 0xa1, 0xef, 0xca, 0x5e, 0xb3, 0x2e, 0x67, 0xf1, 0x82, 0x25, 0x84, + 0x20, 0x11, 0x07, 0x6a, 0xe5, 0x4d, 0x63, 0xe9, 0xb0, 0x39, 0xf3, 0x42, 0x13, 0x8e, 0xc3, 0x39, + 0x0a, 0x18, 0x8c, 0x15, 0x37, 0x1b, 0xec, 0x2d, 0x9b, 0x4b, 0x97, 0x20, 0x8b, 0x67, 0x34, 0xcb, + 0xa2, 0x5b, 0x3d, 0xce, 0xdd, 0xb5, 0xd6, 0xbe, 0xf1, 0x75, 0x3c, 0x15, 0x93, 0xd7, 0x47, 0xd8, + 0x0a, 0x97, 0xd1, 0xe4, 0x68, 0xb8, 0x16, 0xa8, 0x64, 0xb7, 0x9e, 0x8e, 0x55, 0x2c, 0x45, 0xab, + 0xc4, 0xb8, 0xaa, 0xc7, 0x26, 0x69, 0x92, 0x7d, 0x47, 0x53, 0x11, 0x07, 0x04, 0x18, 0x70, 0x7b, + 0xcb, 0xbb, 0x5f, 0x60, 0x55, 0x07, 0xbb, 0x28, 0x2a, 0x74, 0x09, 0x2f, 0x6f, 0x91, 0x19, 0xf3, + 0x5c, 0xcb, 0x29, 0x1e, 0xef, 0x87, 0xd4, 0xa4, 0x83, 0x1c, 0xe7, 0x8a, 0x61, 0xb4, 0xfe, 0x7a, + 0xa4, 0x2c, 0xc0, 0x63, 0x47, 0x53, 0x93, 0x24, 0xde, 0x1e, 0x46, 0x62, 0x7e, 0xb2, 0x76, 0x58, + 0x39, 0x80, 0x3a, 0x54, 0x41, 0xa4, 0xa5, 0xaf, 0xa5, 0x7f, 0x18, 0xcf, 0xca, 0xe6, 0x17, 0x5e, + 0xc8, 0x0a, 0x54, 0x9e, 0x24, 0x35, 0xa5, 0x85, 0x1e, 0x4e, 0xe4, 0x00, 0xd4, 0xfc, 0xb2, 0x08, + 0x5d, 0xef, 0x99, 0x28, 0xe9, 0xcf, 0x5c, 0xa2, 0x89, 0x4c, 0x10, 0xba, 0x4c, 0xa3, 0x35, 0x35, + 0x99, 0xb7, 0x5e, 0xfd, 0x5e, 0x5e, 0x63, 0xd5, 0x3a, 0x6e, 0xf9, 0x2a, 0xf1, 0x0b, 0x34, 0xfc, + 0x40, 0x8f, 0xe8, 0x85, 0xc5, 0x82, 0x16, 0xa0, 0xfc, 0x39, 0x94, 0xbb, 0xb0, 0x6a, 0x3d, 0x9a, + 0xe0, 0x04, 0xf4, 0x90, 0x04, 0x57, 0x70, 0x99, 0xc3, 0x98, 0x35, 0x37, 0x3f, 0x2e, 0x36, 0x27, + 0x81, 0x27, 0xbb, 0x5f, 0x33, 0x32, 0xe3, 0x93, 0xd3, 0x1d, 0x79, 0xa9, 0x0e, 0x43, 0x0b, 0x02, + 0xa5, 0x31, 0x2f, 0x96, 0x93, 0x8f, 0xea, 0x2a, 0x84, 0x68, 0x52, 0x2f, 0x89, 0x1a, 0xfe, 0xb4, + 0xc6, 0x11, 0xd5, 0x64, 0xe3, 0x44, 0xc5, 0xe9, 0xfe, 0x17, 0x7f, 0x03, 0xd6, 0x9b, 0x62, 0xff, + 0xd0, 0xf5, 0xdc, 0x9f, 0x04, 0x0c, 0xe3, 0x0f, 0x41, 0x6f, 0x48, 0x62, 0x79, 0x6d, 0xd2, 0xc1, + 0x51, 0x76, 0xc3, 0x4e, 0x6b, 0x54, 0x54, 0x42, 0xb9, 0xa5, 0x82, 0x47, 0x48, 0x8b, 0x91, 0x63, + 0xba, 0xcb, 0x34, 0x8c, 0x2e, 0x36, 0x09, 0x85, 0x44, 0x1e, 0x1d, 0x1f, 0x28, 0x90, 0x60, 0xbc, + 0x58, 0xb9, 0xd7, 0xfe, 0xe6, 0x12, 0xe8, 0xe2, 0x5f, 0x4b, 0x80, 0x0b, 0x90, 0x10, 0x39, 0xd2, + 0x2e, 0x84, 0xd1, 0x99, 0x3d, 0xe6, 0x84, 0xdb, 0x41, 0x17, 0x73, 0x28, 0xfc, 0xc5, 0x15, 0x08, + 0xb0, 0x15, 0x61, 0x69, 0x90, 0x29, 0xea, 0xdb, 0xa9, 0xac, 0xe6, 0x4f, 0x26, 0xbb, 0xde, 0x50, + 0xa0, 0xcc, 0xd8, 0x3d, 0x4b, 0x5d, 0xe2, 0xb7, 0x87, 0x3f, 0x42, 0x81, 0x67, 0x91, 0xc4, 0x54, + 0x18, 0xe7, 0x39, 0x6a, 0x3a, 0xc9, 0xc9, 0x87, 0xd5, 0x55, 0x54, 0x06, 0xab, 0xd1, 0x44, 0xf0, + 0x9d, 0x03, 0x78, 0x9b, 0x7a, 0xd0, 0x40, 0x72, 0xd8, 0x37, 0xc5, 0x77, 0x3d, 0xbf, 0x7f, 0x2c, + 0xc4, 0xce, 0x96, 0x16, 0x17, 0xe6, 0x12, 0x6b, 0x84, 0x20, 0x82, 0x47, 0xbc, 0xc3, 0x9b, 0x21, + 0xed, 0x60, 0x75, 0x37, 0xac, 0x94, 0x71, 0x46, 0xb3, 0xdc, 0x6e, 0x6a, 0x71, 0x84, 0x5d, 0xef, + 0x0e, 0x92, 0x87, 0x21, 0xc4, 0x1a, 0x06, 0xad, 0xff, 0x0f, 0x34, 0xfa, 0x75, 0x10, 0xc8, 0x08, + 0x3b, 0x7a, 0x8b, 0x0d, 0x16, 0xb6, 0x9c, 0x93, 0xe3, 0x42, 0xc4, 0x65, 0x5d, 0x40, 0x62, 0x7f, + 0xc6, 0x3e, 0xd1, 0xd5, 0x3e, 0x39, 0x34, 0xfe, 0xb7, 0x96, 0xd7, 0xaf, 0xc3, 0xa4, 0x1c, 0x8c, + 0x11, 0xa8, 0xd9, 0xce, 0x54, 0x03, 0x8c, 0xc9, 0x93, 0xfc, 0xbf, 0x06, 0xe0, 0x66, 0xbf, 0xb7, + 0xca, 0x54, 0xf4, 0x9e, 0x98, 0x14, 0x53, 0x78, 0x3b, 0xf8, 0x3a, 0x7f, 0xa2, 0x36, 0xa1, 0x3c, + 0xf0, 0x3d, 0x61, 0x20, 0x6c, 0x89, 0x63, 0x83, 0x22, 0xd6, 0xae, 0xef, 0x90, 0x70, 0x88, 0x89, + 0xa6, 0xca, 0x38, 0x7f, 0x12, 0x8c, 0x31, 0x6d, 0x0e, 0xc9, 0x73, 0x61, 0xa9, 0x39, 0x4b, 0x14, + 0x5b, 0xcc, 0xea, 0xd7, 0xe1, 0xaf, 0x01, 0x9f, 0x89, 0x12, 0xe5, 0x9d, 0xa9, 0x4e, 0xf0, 0xbf, + 0x6d, 0xff, 0x97, 0x48, 0x3c, 0xd9, 0x20, 0x61, 0x2c, 0x87, 0x6e, 0x2b, 0xcb, 0x0f, 0x87, 0x36, + 0xc0, 0x12, 0x9f, 0xa1, 0xad, 0x33, 0x59, 0x7c, 0x12, 0x5a, 0x8a, 0xe0, 0x54, 0x58, 0xe6, 0x4c, + 0x08, 0x01, 0x8d, 0xb9, 0x27, 0x4d, 0x9c, 0xbc, 0xca, 0x14, 0x39, 0x71, 0x43, 0xf1, 0xa7, 0x02, + 0x58, 0x85, 0x99, 0x54, 0x41, 0x14, 0xb2, 0xab, 0xdf, 0x7e, 0x89, 0xc2, 0x96, 0x24, 0xeb, 0x67, + 0x8b, 0x43, 0xda, 0x27, 0x91, 0xe1, 0x2a, 0x0f, 0xf5, 0xc9, 0x25, 0x21, 0xc8, 0x5c, 0xe3, 0x81, + 0x02, 0x3c, 0xa1, 0xbf, 0x99, 0x16, 0x69, 0x63, 0x68, 0xf3, 0xa1, 0xe9, 0x2e, 0xd4, 0xb9, 0xda, + 0x28, 0x00, 0x06, 0x8a, 0xc1, 0xbe, 0xaf, 0x89, 0xa2, 0x79, 0x06, 0xb8, 0x64, 0x9f, 0x79, 0xbb, + 0xe7, 0x34, 0x69, 0x73, 0x79, 0xc1, 0xac, 0x2f, 0x69, 0x64, 0x90, 0x7a, 0x02, 0x99, 0x4d, 0xe9, + 0x7c, 0xab, 0x57, 0x7a, 0x3c, 0x38, 0x0a, 0xd0, 0x57, 0x74, 0x1e, 0x1e, 0x57, 0xdb, 0xe4, 0x8d, + 0x44, 0x22, 0x08, 0xc3, 0x55, 0xbf, 0xb9, 0xeb, 0xd9, 0xdf, 0xc3, 0x98, 0x8a, 0x83, 0x62, 0x94, + 0x95, 0x61, 0xa2, 0x3b, 0x71, 0x7e, 0x18, 0x5b, 0x92, 0x79, 0x69, 0xc8, 0x4b, 0xea, 0x25, 0x81, + 0xb8, 0xfa, 0xcb, 0x42, 0x41, 0xea, 0xb8, 0xe8, 0xb3, 0xf2, 0x34, 0x96, 0x7b, 0xcf, 0x29, 0x15, + 0xd4, 0x9f, 0xc1, 0x14, 0xb1, 0x57, 0x59, 0xa1, 0xb0, 0xaa, 0xd6, 0xaf, 0x74, 0xd7, 0xde, 0x34, + 0xa5, 0x09, 0x43, 0x88, 0x72, 0x43, 0x6d, 0x13, 0xb3, 0xcb, 0xb9, 0xaf, 0x45, 0xb4, 0x7f, 0xe3, + 0xe5, 0x7f, 0xb3, 0x14, 0x06, 0x39, 0xfe, 0x52, 0xdf, 0x6a, 0x0b, 0x40, 0x1a, 0xf4, 0x8e, 0xd2, + 0x9b, 0xa6, 0x3d, 0x96, 0x4d, 0xce, 0x54, 0x0c, 0x65, 0x41, 0x8e, 0x56, 0x8f, 0xcb, 0x00, 0x8f, + 0xba, 0xdb, 0x17, 0x1b, 0x94, 0xa1, 0xd8, 0x9e, 0xfb, 0x63, 0x8c, 0x01, 0xd4, 0x89, 0xf5, 0x81, + 0x16, 0xfa, 0x43, 0xd6, 0xfe, 0x4c, 0x44, 0x3d, 0x16, 0x26, 0x4c, 0x58, 0x07, 0x9f, 0xcd, 0xb5, + 0x35, 0xb3, 0xf9, 0xd4, 0xb3, 0x90, 0x43, 0x04, 0x74, 0x20, 0x2a, 0xfe, 0x62, 0xfa, 0x17, 0x97, + 0xbe, 0x0a, 0xa3, 0xb7, 0x48, 0xe7, 0x67, 0x32, 0xaa, 0x9c, 0x64, 0x99, 0x8a, 0x1b, 0x07, 0x3a, + 0x0e, 0x3c, 0x0f, 0x84, 0x5b, 0x01, 0x10, 0x85, 0x9e, 0x27, 0x09, 0xd4, 0xae, 0x91, 0xdb, 0x65, + 0xcd, 0xdd, 0xe2, 0xf1, 0x08, 0x00, 0x3b, 0xe4, 0xe4, 0x2c, 0xf7, 0x5e, 0xfe, 0x45, 0x19, 0x9a, + 0x69, 0x7c, 0x61, 0xdb, 0x29, 0xf8, 0x97, 0xd7, 0x49, 0x52, 0xde, 0x80, 0x2c, 0x5e, 0x55, 0x60, + 0xc9, 0xbc, 0x9a, 0x56, 0x4d, 0x01, 0x6e, 0x4e, 0x36, 0x85, 0x4a, 0x11, 0x12, 0x5e, 0xb7, 0x7d, + 0x96, 0x23, 0x89, 0x3c, 0x14, 0x14, 0x0f, 0xad, 0x40, 0x7f, 0x0c, 0x88, 0xb8, 0x07, 0xa2, 0x70, + 0x2c, 0x69, 0xa9, 0xec, 0x87, 0x45, 0x99, 0x33, 0x06, 0xca, 0xad, 0xb4, 0x5c, 0x44, 0x1c, 0x37, + 0x7b, 0xfb, 0x6a, 0x3b, 0x23, 0x74, 0x60, 0xc5, 0xa6, 0x69, 0x9c, 0x0c, 0x23, 0x95, 0x69, 0x27, + 0x39, 0xb8, 0x29, 0x81, 0x55, 0x59, 0x53, 0xc2, 0xe9, 0xf3, 0x25, 0x63, 0xa0, 0x25, 0xc3, 0x79, + 0x78, 0x62, 0x7f, 0x37, 0x0f, 0xe9, 0x8c, 0xec, 0xf1, 0x43, 0x4d, 0x40, 0x6c, 0x4f, 0xa1, 0xff, + 0xe7, 0x1c, 0xb2, 0xe4, 0xde, 0x7b, 0x34, 0xb1, 0x4b, 0x16, 0x3d, 0x7f, 0xba, 0xac, 0x99, 0xd8, + 0xa8, 0xa1, 0x7f, 0xf5, 0xfc, 0x08, 0x14, 0xb6, 0x5c, 0x62, 0x1a, 0x53, 0x7b, 0x76, 0x00, 0x32, + 0xbe, 0xba, 0xbb, 0x50, 0xb9, 0xa2, 0x4c, 0xf2, 0x4a, 0x00, 0xc5, 0xc6, 0x7c, 0x91, 0xb9, 0xa6, + 0x86, 0x72, 0x35, 0x2d, 0xe1, 0x7a, 0xb9, 0xd2, 0xd0, 0x62, 0x22, 0xf0, 0x87, 0xe4, 0xbc, 0x89, + 0x3b, 0xb8, 0xac, 0xb2, 0x91, 0xa1, 0xdc, 0x4c, 0xdd, 0xab, 0x2b, 0xcd, 0x0e, 0x94, 0xb4, 0x17, + 0x4b, 0x01, 0xcf, 0xec, 0x76, 0xe9, 0x2f, 0x0f, 0x56, 0xc4, 0x75, 0x76, 0x9d, 0xfe, 0x44, 0x5c, + 0x63, 0x5d, 0x5d, 0xd9, 0x9a, 0x59, 0x6f, 0xba, 0xf4, 0x96, 0xa1, 0x47, 0xee, 0x94, 0xe9, 0xe6, + 0x0a, 0x55, 0x00, 0x89, 0x8d, 0x2d, 0x69, 0x1b, 0x34, 0x4a, 0xd2, 0x3f, 0xa8, 0x3c, 0x9c, 0x1a, + 0x66, 0x25, 0x68, 0x4b, 0xdc, 0x84, 0xe2, 0xe1, 0xc1, 0xbf, 0xc2, 0xe3, 0x5d, 0xc5, 0xd7, 0x34, + 0x03, 0xd1, 0x8f, 0xf0, 0xae, 0x1b, 0x25, 0x13, 0x45, 0xc1, 0x64, 0x18, 0x55, 0x27, 0x2d, 0xac, + 0xd3, 0x5d, 0x94, 0xab, 0x66, 0xb4, 0xef, 0x1c, 0xca, 0x95, 0x44, 0xb1, 0x95, 0xd2, 0x73, 0x66, + 0x3e, 0x7c, 0xc7, 0x5f, 0x86, 0x0e, 0xb4, 0x81, 0x15, 0xa8, 0x0f, 0xba, 0x0c, 0x0e, 0xf1, 0x1b, + 0xec, 0x3f, 0x2f, 0x08, 0x26, 0xef, 0x2b, 0x13, 0x96, 0x98, 0xec, 0x16, 0x88, 0xe8, 0x30, 0x49, + 0xe8, 0xa7, 0x69, 0x3c, 0x10, 0x7d, 0x3c, 0x5c, 0x73, 0xd2, 0x9d, 0xf3, 0xd6, 0x3e, 0x8a, 0xcb, + 0x05, 0xb0, 0x24, 0x3b, 0x99, 0xa7, 0x2b, 0x05, 0x96, 0x9a, 0x7d, 0x1e, 0xbd, 0x93, 0x0a, 0x2d, + 0x79, 0xdf, 0x4f, 0xb3, 0x43, 0xf0, 0x44, 0x4f, 0xe0, 0xac, 0x78, 0x9c, 0x64, 0x85, 0x9b, 0x5e, + 0x11, 0x0e, 0xea, 0x78, 0x59, 0xf1, 0xaf, 0x80, 0x10, 0xf4, 0xd9, 0x74, 0x0b, 0x18, 0x56, 0x58, + 0xaa, 0xd7, 0xea, 0xc6, 0xd7, 0x8d, 0x72, 0x0b, 0x82, 0x44, 0x1e, 0x41, 0x9a, 0xbe, 0x41, 0x9b, + 0xe4, 0x36, 0x27, 0x02, 0x5d, 0xd3, 0x00, 0x60, 0xaa, 0xa1, 0x16, 0x5c, 0xa7, 0x22, 0x2b, 0x2a, + 0xcb, 0xe0, 0xed, 0xd2, 0xfb, 0xfd, 0x7a, 0x82, 0x21, 0xc0, 0x5d, 0xa6, 0x68, 0x5c, 0x81, 0xe0, + 0xa4, 0xf8, 0xb5, 0x25, 0x7f, 0xfc, 0x72, 0x8a, 0x91, 0x1f, 0xad, 0x86, 0xcc, 0xa9, 0xe8, 0x67, + 0x60, 0xfa, 0xdc, 0x07, 0x0e, 0x38, 0x4c, 0x6e, 0x6e, 0x2f, 0xad, 0xcc, 0x43, 0x92, 0x73, 0xe4, + 0xa7, 0x05, 0x96, 0x43, 0x44, 0x30, 0x75, 0x8c, 0x18, 0xd0, 0x78, 0x04, 0xcb, 0x03, 0xf3, 0x2c, + 0xce, 0x19, 0xc6, 0x15, 0xd1, 0x9c, 0x14, 0xd5, 0xf5, 0x3e, 0x57, 0x16, 0x15, 0xa8, 0xeb, 0xa7, + 0xac, 0x18, 0x86, 0x41, 0x16, 0x55, 0x48, 0x3d, 0xa9, 0xb2, 0xdf, 0xc7, 0x6b, 0xef, 0xbf, 0x6c, + 0xa1, 0x59, 0x59, 0x2c, 0xa7, 0x57, 0xad, 0x35, 0xe8, 0x75, 0x3e, 0xe3, 0x7b, 0xae, 0x48, 0xf4, + 0x41, 0x1b, 0x84, 0xae, 0x7c, 0xeb, 0x85, 0x07, 0x2f, 0x65, 0xef, 0x55, 0x4d, 0x82, 0x9c, 0xef, + 0xaa, 0xcc, 0x66, 0x6e, 0xc4, 0xdb, 0x15, 0xf7, 0x7b, 0x62, 0x42, 0x0b, 0x3a, 0x1d, 0xd3, 0x18, + 0x12, 0xdb, 0x08, 0x50, 0xb2, 0x37, 0xd8, 0x2c, 0x55, 0x47, 0xb6, 0xf6, 0xc1, 0x3a, 0x9b, 0x59, + 0x00, 0xe4, 0x25, 0x6e, 0x40, 0xdf, 0xb4, 0x38, 0x1f, 0x00, 0x17, 0x6c, 0x20, 0x59, 0x97, 0x46, + 0xb9, 0xff, 0xea, 0x9e, 0x57, 0x34, 0x19, 0x54, 0xdd, 0x7f, 0xa0, 0x5f, 0x74, 0x72, 0x1b, 0xf2, + 0xc1, 0x93, 0xed, 0x91, 0xa8, 0x15, 0x5e, 0x10, 0xfc, 0x24, 0xe1, 0xe6, 0x9b, 0xdb, 0x52, 0x2c, + 0x44, 0x5c, 0xef, 0xdb, 0x6e, 0xc4, 0x50, 0x3f, 0x11, 0xd6, 0x7b, 0x36, 0xfc, 0x05, 0xb2, 0x55, + 0x53, 0x2e, 0xb5, 0x43, 0x50, 0xd7, 0x56, 0x95, 0xc4, 0x5c, 0xe1, 0x26, 0xe3, 0x82, 0x63, 0x4f, + 0xb3, 0x9e, 0x4c, 0x87, 0x3e, 0xab, 0x89, 0x33, 0x77, 0xab, 0xb9, 0xcf, 0xba, 0x1e, 0x7c, 0xc3, + 0x41, 0x2f, 0xe2, 0x2b, 0x14, 0xd6, 0xd3, 0x55, 0x7f, 0x68, 0x37, 0x0c, 0x42, 0x2d, 0xbf, 0x9a, + 0x51, 0x6c, 0xfe, 0x70, 0x45, 0xc2, 0x4f, 0x5d, 0xf4, 0x0a, 0x08, 0x2a, 0xd8, 0x89, 0xf1, 0x08, + 0x2e, 0xbd, 0x70, 0x5b, 0xf5, 0x53, 0xf8, 0x5e, 0xc6, 0xec, 0x5c, 0x7b, 0xdc, 0x81, 0x16, 0xba, + 0xc7, 0x52, 0x64, 0x7b, 0x0f, 0x2d, 0x41, 0x22, 0x60, 0x15, 0x58, 0x3d, 0xa0, 0x45, 0x16, 0x7d, + 0xdd, 0xcc, 0xe5, 0x00, 0xc5, 0xd8, 0x0e, 0x9b, 0x88, 0x99, 0xde, 0xa4, 0xcd, 0x8b, 0x3c, 0xeb, + 0x6c, 0x3f, 0x98, 0xec, 0xf9, 0x9a, 0x21, 0xb0, 0xd4, 0xd1, 0x42, 0x0c, 0xe0, 0x09, 0x79, 0x2a, + 0x28, 0xf9, 0x2e, 0x25, 0x6e, 0xf4, 0x5d, 0xc5, 0xd5, 0xba, 0x0d, 0x94, 0xd5, 0x02, 0xfa, 0xa3, + 0xab, 0xcf, 0xb6, 0xf5, 0xab, 0x1d, 0x32, 0xc3, 0x98, 0xc8, 0x54, 0x4c, 0xd1, 0xff, 0xfe, 0x4d, + 0x5e, 0xc8, 0xeb, 0x18, 0x7e, 0xa7, 0x09, 0x54, 0xf5, 0x20, 0x39, 0x36, 0xee, 0x6c, 0x67, 0x9c, + 0x88, 0x08, 0xf4, 0xdf, 0xae, 0x77, 0x4a, 0x14, 0x29, 0x5e, 0x13, 0xc4, 0x18, 0x55, 0x8e, 0xdf, + 0x1b, 0x91, 0xb7, 0x6f, 0x43, 0x92, 0x00, 0x0d, 0xd0, 0xcf, 0xdb, 0x32, 0x70, 0xc0, 0xf3, 0x51, + 0xea, 0xa8, 0xf8, 0xb9, 0x97, 0x16, 0x68, 0xa6, 0xf3, 0xc1, 0xbf, 0xdb, 0x59, 0x71, 0xb2, 0xb0, + 0x94, 0xbc, 0x2f, 0xdf, 0xf9, 0xa3, 0x4d, 0x29, 0x04, 0xfe, 0xf6, 0xf0, 0x2f, 0x51, 0x58, 0xe9, + 0xa2, 0x5b, 0x2a, 0xc0, 0xcf, 0x35, 0xba, 0x35, 0x5a, 0x4f, 0x66, 0x7f, 0x4d, 0xa5, 0x25, 0x75, + 0x5d, 0xff, 0x53, 0x02, 0x8b, 0x0b, 0x4d, 0x50, 0x7a, 0x9e, 0xf2, 0x94, 0xb8, 0x61, 0x35, 0x87, + 0xc5, 0x7f, 0x89, 0x4f, 0xeb, 0xc6, 0x2a, 0x48, 0x22, 0xe4, 0x2f, 0x78, 0x7e, 0xa0, 0x2d, 0x98, + 0x21, 0x62, 0xd8, 0xf7, 0xbd, 0x2b, 0xde, 0x77, 0x07, 0xde, 0x55, 0xa2, 0xb2, 0xb9, 0x4a, 0x68, + 0x5e, 0x4a, 0x0a, 0x0b, 0xc9, 0x49, 0x8e, 0xce, 0x57, 0x83, 0xb5, 0xca, 0xa0, 0x1c, 0x9b, 0xbb, + 0x5f, 0x6a, 0xf1, 0x92, 0xac, 0x04, 0x8c, 0x1b, 0x46, 0x15, 0x99, 0x14, 0xe6, 0x06, 0xd1, 0x46, + 0x77, 0x76, 0x3f, 0x2e, 0x37, 0x5b, 0x39, 0xdd, 0x3d, 0x96, 0x95, 0xd9, 0xe5, 0x8c, 0x03, 0x86, + 0xc6, 0x02, 0x17, 0x95, 0x9a, 0x1c, 0x8c, 0x77, 0xe4, 0x47, 0xfe, 0xe3, 0x87, 0xe5, 0x28, 0xd5, + 0xcf, 0x48, 0xce, 0x1c, 0x2f, 0xda, 0x23, 0x6c, 0xbc, 0xdf, 0xa7, 0x3f, 0x24, 0x82, 0x65, 0xb7, + 0xe1, 0x49, 0x07, 0x0f, 0x67, 0x5d, 0x25, 0x05, 0x23, 0xb3, 0x5f, 0xe1, 0xf3, 0xb2, 0x5d, 0xf2, + 0x22, 0x0b, 0xa3, 0x16, 0xc3, 0xdc, 0xa0, 0xa8, 0x29, 0xb3, 0xf2, 0xc6, 0xdc, 0x98, 0x98, 0xd0, + 0x78, 0x83, 0xda, 0xea, 0x5e, 0x17, 0x37, 0x30, 0xcf, 0xb0, 0x5c, 0xec, 0xa1, 0xee, 0x70, 0xd5, + 0x19, 0x0d, 0x86, 0x07, 0x2f, 0x4a, 0x97, 0x5e, 0xa2, 0xf4, 0x53, 0x4b, 0x38, 0x15, 0x53, 0x5b, + 0xe5, 0xa1, 0x08, 0x43, 0xf8, 0x44, 0x04, 0x5e, 0xe4, 0xf7, 0x68, 0xcf, 0x85, 0xca, 0x25, 0x10, + 0xed, 0xcc, 0xfa, 0x69, 0x1a, 0x39, 0x51, 0x1f, 0x92, 0xbd, 0xbe, 0xc7, 0x90, 0x1e, 0xb8, 0xde, + 0x26, 0x2b, 0xc7, 0x5e, 0xb9, 0x2c, 0x36, 0x51, 0xe2, 0x6e, 0x1c, 0xe0, 0xd6, 0x4c, 0x0c, 0x11, + 0x0d, 0x8f, 0x47, 0x6d, 0xb5, 0xc2, 0xb1, 0xfb, 0x0a, 0xef, 0xec, 0x0e, 0x2b, 0x00, 0xef, 0x1f, + 0x0d, 0x5b, 0xd8, 0x6a, 0xba, 0xdb, 0x09, 0x3c, 0x6c, 0x50, 0x7a, 0x80, 0xda, 0xd1, 0xbc, 0x11, + 0x91, 0xd6, 0x6c, 0xf5, 0x04, 0x9b, 0x0c, 0xbc, 0xc9, 0x15, 0x7e, 0x03, 0xbe, 0xe6, 0x6a, 0x31, + 0x23, 0xef, 0x02, 0xfb, 0xb6, 0xc4, 0xfa, 0xf7, 0xe0, 0xf7, 0x29, 0x7f, 0x75, 0x71, 0x4d, 0x07, + 0xea, 0x81, 0xea, 0x16, 0x70, 0xd6, 0xea, 0xb1, 0x6b, 0x44, 0x7d, 0xe8, 0xeb, 0x14, 0xfb, 0x7e, + 0xd8, 0x68, 0xb4, 0x41, 0x60, 0x47, 0xa9, 0x93, 0xc5, 0x78, 0xc2, 0xc7, 0xb5, 0xcd, 0xe7, 0x6f, + 0x11, 0x9c, 0x72, 0x6b, 0x99, 0x9f, 0xc0, 0x9c, 0x32, 0x01, 0x64, 0x1b, 0x7f, 0x0d, 0x00, 0xbf, + 0x1d, 0xa1, 0x81, 0x51, 0x0f, 0x96, 0x2e, 0x02, 0x80, 0x26, 0xc1, 0x90, 0x70, 0x81, 0xfd, 0x20, + 0x79, 0xd1, 0x61, 0x06, 0x0a, 0xab, 0x43, 0x02, 0xc1, 0x80, 0x0e, 0xbb, 0x1a, 0xb1, 0xfa, 0x98, + 0x64, 0xcc, 0xbb, 0xe3, 0xf3, 0x58, 0x23, 0x7e, 0xfa, 0x91, 0x22, 0x5e, 0x61, 0x11, 0xe5, 0xff, + 0xfa, 0xe5, 0x64, 0xa4 +}; + +fastimage_t bfin_logo = { + DEF_BFIN_LOGO_DATA, + DEF_BFIN_LOGO_WIDTH, + DEF_BFIN_LOGO_HEIGHT, + DEF_BFIN_LOGO_BPP, + DEF_BFIN_LOGO_PIXEL_SIZE, + DEF_BFIN_LOGO_SIZE +}; diff --git a/arch/blackfin/include/asm/bfin_logo_rgb565_230x230.h b/arch/blackfin/include/asm/bfin_logo_rgb565_230x230_gzip.h index c5b0be9..c5b0be9 100644 --- a/arch/blackfin/include/asm/bfin_logo_rgb565_230x230.h +++ b/arch/blackfin/include/asm/bfin_logo_rgb565_230x230_gzip.h diff --git a/arch/blackfin/include/asm/bfin_logo_rgb565_230x230_lzma.h b/arch/blackfin/include/asm/bfin_logo_rgb565_230x230_lzma.h new file mode 100644 index 0000000..1955f66 --- /dev/null +++ b/arch/blackfin/include/asm/bfin_logo_rgb565_230x230_lzma.h @@ -0,0 +1,1079 @@ +/* + * Generated by EasyLogo, (C) 2000 by Paolo Scaffardi + * + * To use this, include it and call: easylogo_plot(screen,&bfin_logo, width,x,y) + * + * Where: 'screen' is the pointer to the frame buffer + * 'width' is the screen width + * 'x' is the horizontal position + * 'y' is the vertical position + */ + +#define EASYLOGO_ENABLE_LZMA 16703 + +static unsigned char EASYLOGO_DECOMP_BUFFER[105800]; + +#include <video_easylogo.h> + +#define DEF_BFIN_LOGO_WIDTH 230 +#define DEF_BFIN_LOGO_HEIGHT 230 +#define DEF_BFIN_LOGO_PIXELS 52900 +#define DEF_BFIN_LOGO_BPP 16 +#define DEF_BFIN_LOGO_PIXEL_SIZE 2 +#define DEF_BFIN_LOGO_SIZE 105800 + +unsigned char DEF_BFIN_LOGO_DATA[] = { + 0x5d, 0x00, 0x00, 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x6f, + 0xfd, 0xff, 0xff, 0x86, 0x51, 0xd0, 0x3c, 0xfc, 0x65, 0xea, 0x02, 0x56, 0x77, 0x71, 0xde, 0xb1, + 0x96, 0x62, 0x13, 0xa4, 0x11, 0xbb, 0x19, 0xd3, 0x9a, 0xab, 0x0c, 0x4c, 0x38, 0xa6, 0xe4, 0x24, + 0x50, 0x2c, 0xfd, 0x3f, 0xd2, 0xc8, 0x41, 0x4b, 0xb3, 0x73, 0x7a, 0xdd, 0x22, 0x8d, 0x88, 0xd2, + 0x32, 0x18, 0x2e, 0x8a, 0x93, 0x47, 0xf5, 0x99, 0xc7, 0x3f, 0x9c, 0xf5, 0xe7, 0x24, 0xbe, 0xe2, + 0xbd, 0x73, 0xa7, 0x5a, 0xa6, 0x8d, 0x39, 0xa0, 0x0b, 0xfc, 0x62, 0x94, 0x5d, 0x17, 0xa1, 0x97, + 0x72, 0xa9, 0xd4, 0xc5, 0xe3, 0x2e, 0x63, 0x86, 0x09, 0x55, 0x3c, 0xd5, 0xc2, 0xe4, 0x56, 0x1d, + 0x05, 0xc5, 0x76, 0xe7, 0x35, 0x0c, 0x83, 0xbd, 0x33, 0x9b, 0x9f, 0xed, 0x10, 0xb2, 0x96, 0x1a, + 0xe3, 0x9f, 0x16, 0x88, 0x0b, 0x5b, 0x7e, 0x9c, 0x8e, 0xd4, 0xd1, 0xc0, 0x1b, 0x36, 0xee, 0x23, + 0xf3, 0xf9, 0xd7, 0x6e, 0xe0, 0x42, 0xe2, 0x99, 0xbe, 0x90, 0xb0, 0x6c, 0xc7, 0x2c, 0xa3, 0x75, + 0xf6, 0xb6, 0x9d, 0x30, 0x18, 0x87, 0x9c, 0x49, 0x07, 0xf7, 0x78, 0x49, 0x72, 0xa3, 0x62, 0x28, + 0x7d, 0xa1, 0xc9, 0x15, 0x76, 0x75, 0x63, 0xf7, 0xdf, 0xf4, 0x99, 0x81, 0xa7, 0x1f, 0xfd, 0x93, + 0xfa, 0x71, 0x91, 0x1b, 0xbe, 0x3e, 0x38, 0xcf, 0x84, 0x51, 0x34, 0x43, 0x23, 0xa7, 0x31, 0x61, + 0x44, 0x1b, 0x4d, 0x5c, 0x17, 0xcb, 0x39, 0xc6, 0x81, 0x8f, 0x10, 0xb1, 0x73, 0xa0, 0x51, 0x3e, + 0xba, 0x38, 0xd1, 0x0f, 0x9a, 0x84, 0xc3, 0xa6, 0x30, 0x30, 0x27, 0x4a, 0x01, 0xf8, 0xca, 0xbf, + 0xea, 0x0e, 0x6f, 0xe3, 0xeb, 0x7d, 0x8a, 0x59, 0x22, 0x07, 0x15, 0xe0, 0xcf, 0x04, 0xb6, 0x03, + 0xdd, 0x71, 0xef, 0x6a, 0x25, 0xc2, 0x9d, 0x8f, 0xc1, 0x63, 0x2a, 0xec, 0xb8, 0x3e, 0x32, 0xee, + 0xda, 0x98, 0x28, 0xc0, 0x60, 0x42, 0xe7, 0x0d, 0x38, 0x1b, 0xd0, 0xaa, 0x4c, 0xc4, 0x93, 0x19, + 0x7a, 0x42, 0x41, 0xe5, 0xf8, 0xa8, 0x42, 0xbc, 0x9c, 0xb4, 0xd8, 0xd2, 0x85, 0xe6, 0x2d, 0xd6, + 0xad, 0x5c, 0x6d, 0xaa, 0xf8, 0xa5, 0x81, 0xf8, 0x38, 0x05, 0xd9, 0x7c, 0xe2, 0x37, 0x5a, 0x47, + 0x9d, 0xe7, 0x60, 0x1c, 0xbc, 0x02, 0x2b, 0x66, 0x3a, 0x49, 0xdb, 0xa0, 0xd3, 0x5d, 0x4c, 0xaf, + 0x8c, 0x01, 0x4d, 0xe3, 0xce, 0xe7, 0x5a, 0xf1, 0x5e, 0x82, 0xd6, 0xcf, 0x69, 0x0c, 0x74, 0x42, + 0x0a, 0xb3, 0xa3, 0x5a, 0x30, 0x40, 0xee, 0xf6, 0xea, 0xa6, 0xcc, 0x30, 0x44, 0x8c, 0x0f, 0xbc, + 0x68, 0x0c, 0x49, 0x76, 0x06, 0x1c, 0x76, 0x91, 0xe2, 0xd4, 0x53, 0xc4, 0x29, 0x74, 0x2d, 0x81, + 0x2e, 0x1f, 0x55, 0x27, 0x36, 0x73, 0x50, 0x24, 0x75, 0xcb, 0x5b, 0x3a, 0xc8, 0x82, 0x0a, 0xf7, + 0x93, 0x25, 0x94, 0x3d, 0x4a, 0x85, 0x6c, 0xcc, 0x84, 0x1c, 0x5b, 0x58, 0xa9, 0x61, 0xe0, 0xde, + 0xc2, 0x9e, 0xc6, 0x35, 0xaa, 0x9f, 0x2c, 0x98, 0x5b, 0xd7, 0x74, 0x10, 0x9f, 0x61, 0x8c, 0x67, + 0x04, 0x3a, 0x1c, 0x37, 0x69, 0x3d, 0xb0, 0x07, 0x8c, 0xfc, 0x22, 0x65, 0x2d, 0x7c, 0x83, 0x91, + 0x02, 0xc7, 0x4c, 0x59, 0xd3, 0x9e, 0x63, 0x44, 0x64, 0x3f, 0xb8, 0xc4, 0x24, 0x8e, 0xe4, 0xb9, + 0x64, 0x11, 0x8a, 0x4e, 0x4f, 0xd7, 0x88, 0xb3, 0x5d, 0xb8, 0xe0, 0x19, 0x04, 0xf7, 0x47, 0xec, + 0xf9, 0xa8, 0x4f, 0x6a, 0xa6, 0x66, 0x49, 0x1b, 0x34, 0xe9, 0xf9, 0x3c, 0x44, 0x51, 0x05, 0x1d, + 0xb6, 0x81, 0x82, 0xc8, 0xc1, 0x26, 0x3c, 0x1d, 0x8a, 0xa8, 0x2d, 0x80, 0xc7, 0xc9, 0x47, 0x32, + 0x67, 0x32, 0x05, 0xc1, 0xb1, 0x0a, 0x7e, 0x9b, 0x1e, 0x62, 0xb6, 0x6c, 0x1a, 0x82, 0xf2, 0x49, + 0xbf, 0x14, 0x0d, 0x7f, 0x0f, 0x61, 0xf9, 0x6e, 0x9f, 0xfa, 0x6b, 0x63, 0x18, 0xfd, 0x36, 0x46, + 0x1b, 0xc4, 0x76, 0x0e, 0x30, 0x60, 0x29, 0x31, 0x23, 0x42, 0x95, 0x99, 0xbd, 0x9f, 0x5b, 0xe3, + 0xc8, 0xbd, 0xa4, 0xf9, 0xae, 0xce, 0xcf, 0x9e, 0x43, 0x8f, 0xe3, 0x9d, 0x5b, 0x3b, 0x4e, 0x87, + 0xe9, 0x58, 0xda, 0x8d, 0xd7, 0x78, 0x43, 0x78, 0x52, 0x01, 0xf2, 0x31, 0xa4, 0x43, 0xeb, 0x84, + 0x00, 0xf7, 0x5f, 0x2b, 0x63, 0x9d, 0xb9, 0x34, 0x86, 0x9c, 0x94, 0x33, 0xa4, 0x60, 0x36, 0xe0, + 0x17, 0xf3, 0x6a, 0x7c, 0x0d, 0x3b, 0xe7, 0x7d, 0x2c, 0xc2, 0x92, 0x83, 0x5f, 0xc7, 0x39, 0x2d, + 0xc6, 0x48, 0x61, 0xc4, 0xde, 0x32, 0x49, 0x8e, 0xbc, 0x7c, 0xf0, 0x18, 0xda, 0xe7, 0x7c, 0xef, + 0x49, 0xd1, 0xa7, 0xf9, 0xa9, 0x11, 0x67, 0x33, 0x28, 0xee, 0x65, 0x47, 0x99, 0xa7, 0x83, 0xdf, + 0x3f, 0x8c, 0x23, 0x2f, 0xb5, 0x55, 0xff, 0x79, 0x0b, 0xc0, 0xc7, 0x3d, 0x1e, 0x2b, 0xf9, 0x20, + 0x93, 0x6b, 0x05, 0x50, 0x94, 0x0c, 0x5c, 0x3f, 0x94, 0x4b, 0x99, 0x10, 0x25, 0x4b, 0xb7, 0x1a, + 0x8c, 0xe1, 0xaf, 0xe9, 0x8b, 0xde, 0x89, 0x50, 0xa8, 0x08, 0xbb, 0x1a, 0xec, 0xdf, 0xe8, 0x95, + 0x06, 0x51, 0xe6, 0xb7, 0x26, 0x07, 0xeb, 0x5b, 0x8e, 0x4b, 0x50, 0x64, 0x5c, 0x8d, 0xb5, 0x52, + 0x30, 0xf5, 0xc9, 0x07, 0xf2, 0x54, 0x4f, 0x7c, 0xb0, 0xfb, 0xa4, 0x48, 0xfd, 0x3c, 0x50, 0xbb, + 0xcb, 0x39, 0xbe, 0x9a, 0x74, 0x44, 0x85, 0x01, 0x0f, 0x77, 0x1d, 0x86, 0x1f, 0x9a, 0x35, 0x06, + 0x14, 0x48, 0x08, 0x6d, 0xc1, 0x89, 0xc6, 0x38, 0x5c, 0x8f, 0x1a, 0xc4, 0x89, 0xe7, 0x29, 0xa2, + 0x87, 0x8a, 0xf2, 0xf7, 0x13, 0x5c, 0x2b, 0x0c, 0x17, 0x22, 0xc6, 0x02, 0x97, 0x5c, 0xe9, 0x10, + 0xc4, 0xbd, 0x6b, 0x91, 0x9a, 0x0b, 0x70, 0x85, 0xd3, 0x91, 0xce, 0x12, 0x34, 0xef, 0xe3, 0xf7, + 0xf6, 0xbf, 0x55, 0x0a, 0x67, 0xdd, 0x42, 0x7c, 0xa0, 0x46, 0xad, 0x30, 0xa1, 0xdf, 0x73, 0x6d, + 0x93, 0x26, 0x57, 0xae, 0x2a, 0xe6, 0xea, 0x2c, 0xe5, 0xf3, 0x09, 0xaa, 0xdd, 0x09, 0xc7, 0xa0, + 0x0c, 0xef, 0x86, 0xa8, 0x42, 0x93, 0x5e, 0x61, 0xe4, 0xa4, 0x08, 0xaa, 0x37, 0x4b, 0xd4, 0x94, + 0x83, 0xe1, 0x42, 0x06, 0x65, 0x11, 0x4e, 0xbf, 0xc3, 0xfb, 0xbf, 0x86, 0x4f, 0x01, 0x69, 0x93, + 0xd5, 0xc8, 0xb4, 0x5d, 0x23, 0x79, 0x38, 0x8a, 0x6b, 0x9f, 0xfb, 0x56, 0xb0, 0x16, 0x6e, 0x9f, + 0xdf, 0x40, 0x96, 0x9c, 0x92, 0x17, 0xae, 0xdb, 0xba, 0x4e, 0xd6, 0x88, 0x44, 0x2f, 0xaf, 0x84, + 0xa3, 0xb6, 0x04, 0xa1, 0x59, 0x42, 0x3f, 0xd4, 0x45, 0x0d, 0x76, 0xb2, 0x67, 0x6f, 0xab, 0xad, + 0xe8, 0xda, 0x1d, 0x8e, 0x07, 0x96, 0xc5, 0x1c, 0xf9, 0x97, 0xe2, 0x21, 0x97, 0xd9, 0x4c, 0x79, + 0x02, 0xe5, 0x0c, 0x57, 0x59, 0x1b, 0xcb, 0x09, 0x9a, 0xb3, 0x34, 0xc7, 0x0b, 0x66, 0x8a, 0xc9, + 0x38, 0xa6, 0x2c, 0x27, 0xac, 0x20, 0xbd, 0x69, 0x54, 0xa1, 0x33, 0x9a, 0x70, 0x4f, 0x9d, 0xe2, + 0x6e, 0x79, 0x72, 0x17, 0xfc, 0x12, 0xe9, 0x96, 0x0c, 0x12, 0x5d, 0x44, 0xb7, 0x71, 0x87, 0x03, + 0xeb, 0x2d, 0x30, 0x1f, 0xe8, 0xa0, 0x70, 0x60, 0xb4, 0x4d, 0x98, 0xcb, 0xa3, 0x58, 0x94, 0x04, + 0xa2, 0xae, 0x14, 0xca, 0xf4, 0x6b, 0x22, 0x12, 0x04, 0xcc, 0x28, 0x7e, 0xea, 0x66, 0xb6, 0x18, + 0x86, 0xdc, 0xcc, 0xef, 0xeb, 0x3a, 0x3e, 0x4e, 0xcc, 0xd5, 0x94, 0xc7, 0x5e, 0xdd, 0x1f, 0x96, + 0xd0, 0x8f, 0x18, 0xe9, 0xbf, 0xe0, 0xda, 0x0c, 0x80, 0xaa, 0x29, 0xef, 0x31, 0xd7, 0x69, 0xfc, + 0x35, 0xa5, 0xb6, 0x91, 0x0f, 0x44, 0x8f, 0x32, 0x34, 0x69, 0x6d, 0xc7, 0x44, 0xa7, 0xa6, 0x58, + 0x01, 0xef, 0x51, 0x41, 0xef, 0x5c, 0xa6, 0xff, 0x92, 0xcd, 0xc7, 0x4c, 0xc8, 0x2a, 0x0d, 0x9c, + 0xdb, 0x05, 0x55, 0x31, 0xfb, 0x74, 0x2b, 0x87, 0x3b, 0x2e, 0x38, 0x71, 0x15, 0xff, 0xa2, 0x51, + 0xcc, 0x3d, 0xa7, 0xfc, 0xc3, 0xfd, 0x8e, 0x24, 0x1d, 0x5f, 0x61, 0x4a, 0x4b, 0x5d, 0xd8, 0x9b, + 0x46, 0x72, 0x48, 0xf3, 0xcf, 0xbc, 0x41, 0xde, 0xc7, 0x44, 0xf1, 0x29, 0xfc, 0x14, 0xa6, 0x76, + 0x5a, 0xec, 0x23, 0x38, 0xa1, 0xee, 0xd8, 0x46, 0x2a, 0x6e, 0xf2, 0x0e, 0x45, 0xa6, 0x11, 0x21, + 0xfd, 0x3a, 0xc2, 0x1b, 0xdb, 0xb3, 0x0b, 0x1f, 0xe0, 0xc4, 0xf6, 0x75, 0xf7, 0x0f, 0xee, 0x15, + 0xc3, 0x83, 0x65, 0xc4, 0x0c, 0x59, 0x6e, 0xdc, 0x43, 0x25, 0x2a, 0x66, 0x6d, 0x32, 0x3b, 0x0c, + 0xb6, 0x78, 0xe3, 0xde, 0x21, 0xc3, 0xcf, 0xb8, 0x70, 0x8d, 0xcf, 0xd8, 0x5e, 0x18, 0xb1, 0x89, + 0x6e, 0x99, 0xb6, 0x02, 0x36, 0xde, 0x1b, 0x85, 0xb4, 0xd7, 0x71, 0x89, 0x0e, 0x70, 0x4d, 0x7f, + 0x44, 0xa0, 0xcc, 0x2d, 0xb3, 0xfb, 0x3a, 0x99, 0x7e, 0xea, 0x16, 0xda, 0x1d, 0x88, 0x8b, 0x03, + 0xf6, 0x74, 0x1c, 0xd9, 0x2b, 0x84, 0xb4, 0xa9, 0x65, 0xab, 0x5d, 0xa6, 0x7f, 0x1f, 0x29, 0x3b, + 0x9c, 0x85, 0x08, 0x75, 0x85, 0x6e, 0xb8, 0xc9, 0x0c, 0x50, 0xb9, 0x04, 0x3d, 0x38, 0x90, 0x78, + 0x55, 0x27, 0x71, 0xc4, 0xec, 0x18, 0x6e, 0x60, 0xd5, 0xa0, 0x63, 0xd0, 0x93, 0xa0, 0x5f, 0x51, + 0xf0, 0x1f, 0x6a, 0x9b, 0x5a, 0xb4, 0x65, 0x6a, 0x67, 0x4e, 0x1d, 0x40, 0xaa, 0x9a, 0x31, 0x84, + 0xf4, 0xd2, 0xd7, 0x4f, 0x09, 0x0f, 0x02, 0xe9, 0xc6, 0x1b, 0x20, 0x9a, 0xe5, 0x11, 0x21, 0x0d, + 0x13, 0x5c, 0xc6, 0x93, 0x26, 0xb5, 0xb3, 0x95, 0x3b, 0xf0, 0x93, 0x7e, 0x8c, 0xdc, 0xe1, 0xfe, + 0x58, 0x18, 0xb1, 0xb0, 0xd9, 0x0f, 0x9e, 0xad, 0x51, 0x05, 0x41, 0x24, 0xb6, 0xb8, 0xbe, 0xc2, + 0x84, 0x30, 0x82, 0xf6, 0x3b, 0x4e, 0x84, 0xf7, 0xe6, 0xc5, 0x20, 0x1e, 0x53, 0x42, 0xad, 0x0b, + 0x39, 0x97, 0x70, 0xbf, 0x59, 0xf9, 0x24, 0xbb, 0x03, 0x07, 0xed, 0xc2, 0xf0, 0xf0, 0x91, 0x8f, + 0x6b, 0x1f, 0x70, 0x49, 0x0a, 0x52, 0x99, 0x4e, 0xcf, 0x9b, 0x22, 0x0b, 0x26, 0xae, 0x0d, 0xe6, + 0x23, 0x36, 0x7c, 0xd5, 0xbe, 0x65, 0x1c, 0xdb, 0x68, 0x2d, 0x12, 0xe2, 0x1a, 0xc8, 0xd9, 0x74, + 0x25, 0x3a, 0x44, 0x8e, 0x84, 0x35, 0xf6, 0x6c, 0x96, 0x71, 0x19, 0xdf, 0x58, 0x6a, 0xf2, 0xbc, + 0x6f, 0x5a, 0xfe, 0xd2, 0x77, 0x68, 0x8e, 0xae, 0xab, 0x9e, 0x3c, 0xd7, 0xc5, 0x15, 0xe4, 0xc2, + 0xe1, 0xa2, 0xb1, 0xa8, 0xfe, 0x7b, 0xb1, 0x0e, 0x21, 0x39, 0xa9, 0xe4, 0xa8, 0xcc, 0xa7, 0x12, + 0xc6, 0x64, 0x6b, 0xf8, 0x85, 0xed, 0xfc, 0x8e, 0x17, 0x7c, 0x8e, 0xd0, 0x7a, 0xfb, 0x53, 0x99, + 0x1c, 0x36, 0xe3, 0x39, 0x32, 0xd2, 0x56, 0x16, 0xcb, 0xba, 0x03, 0x05, 0xfc, 0x65, 0x25, 0x83, + 0xec, 0xe6, 0x92, 0x84, 0xbf, 0x8b, 0x4f, 0x89, 0x75, 0x4f, 0x5b, 0x9e, 0xd4, 0x79, 0x1e, 0xc7, + 0xee, 0xb2, 0x44, 0xcd, 0x59, 0x45, 0x34, 0xc9, 0xe8, 0x03, 0xca, 0x99, 0x19, 0x56, 0x62, 0x51, + 0xc5, 0x40, 0xd2, 0xfb, 0x85, 0xb2, 0xf0, 0x02, 0xab, 0x58, 0x98, 0x60, 0x42, 0xda, 0x81, 0xbb, + 0x63, 0x45, 0x85, 0x62, 0x21, 0x6b, 0xa9, 0x95, 0x12, 0x0a, 0x25, 0xb3, 0x99, 0xfa, 0x5f, 0x3a, + 0xb2, 0xc5, 0xdb, 0x92, 0x21, 0x19, 0x8d, 0x38, 0x45, 0xbb, 0xa4, 0xa3, 0xf2, 0xb5, 0xdf, 0xe2, + 0x94, 0xd8, 0xed, 0xf7, 0xf8, 0x85, 0x80, 0xb5, 0x87, 0xf1, 0x1a, 0xd0, 0xfb, 0x71, 0x4e, 0x2b, + 0xd8, 0xdf, 0x96, 0x73, 0x31, 0xf2, 0x3f, 0x4b, 0x76, 0xac, 0xd1, 0xdd, 0x0c, 0x47, 0x78, 0x4e, + 0xc6, 0x13, 0x14, 0x13, 0xf5, 0xa5, 0xde, 0x87, 0x55, 0xd1, 0xdc, 0x13, 0x56, 0x54, 0x8a, 0x17, + 0xd8, 0x0d, 0x72, 0x6a, 0x60, 0x84, 0xd1, 0x07, 0xfd, 0x0b, 0x99, 0x77, 0x66, 0x96, 0x9b, 0x22, + 0x23, 0x04, 0xc1, 0x21, 0x1c, 0x90, 0x65, 0x24, 0x63, 0xc8, 0xaf, 0x1a, 0xdb, 0xe0, 0xe0, 0x66, + 0xf4, 0x34, 0xeb, 0x35, 0x28, 0x61, 0xbc, 0x20, 0x7a, 0xdc, 0x77, 0x1b, 0xf0, 0xd4, 0xbd, 0xb8, + 0xb3, 0xaa, 0x61, 0x59, 0x45, 0x9e, 0x89, 0x77, 0xc4, 0xfd, 0xbc, 0x5c, 0xb0, 0xcf, 0x76, 0x0f, + 0x49, 0xa8, 0xa4, 0x23, 0x34, 0x81, 0x41, 0xc7, 0xc8, 0x81, 0x5a, 0xb8, 0xf7, 0x20, 0x8c, 0xed, + 0xc2, 0x59, 0x97, 0xa0, 0x9e, 0x1c, 0x27, 0xaf, 0x43, 0xcd, 0x8a, 0xb0, 0x6c, 0x6d, 0xbc, 0x75, + 0x4c, 0x8f, 0x66, 0x6a, 0x7c, 0xb7, 0x8a, 0x40, 0xcb, 0xed, 0xce, 0xe7, 0x82, 0xfe, 0x33, 0x6e, + 0xc2, 0xf6, 0xa0, 0x9a, 0xcb, 0x01, 0xa2, 0xd6, 0xb0, 0xf8, 0x2a, 0x97, 0xfb, 0x8e, 0xbd, 0x39, + 0xd5, 0xfb, 0x95, 0xdf, 0xe3, 0x3b, 0x72, 0x46, 0x06, 0x5f, 0xd5, 0xb2, 0x70, 0xb8, 0x9d, 0x9b, + 0xee, 0x7e, 0xeb, 0x9b, 0x84, 0xb2, 0x47, 0x56, 0xc7, 0xc6, 0x3e, 0xcd, 0x0d, 0x83, 0x83, 0x5c, + 0x0f, 0x2b, 0x37, 0x7b, 0x09, 0x35, 0xc7, 0x9c, 0x96, 0x00, 0xbe, 0x91, 0xaf, 0x3e, 0xa4, 0xff, + 0xd9, 0x73, 0x3f, 0x19, 0x57, 0xd1, 0xf6, 0xcc, 0x72, 0xbc, 0x5a, 0xfd, 0x15, 0x57, 0xd0, 0x0b, + 0x79, 0xfb, 0x14, 0x3e, 0x67, 0x19, 0x9f, 0xec, 0x07, 0xe2, 0x48, 0x51, 0x1d, 0x4d, 0x70, 0xfa, + 0x0d, 0xe5, 0xa7, 0x9c, 0x05, 0x8a, 0x81, 0x7d, 0x94, 0x0d, 0x96, 0x69, 0xf7, 0xc7, 0x7c, 0xe1, + 0x26, 0xf8, 0x58, 0xf5, 0xad, 0x41, 0x36, 0xdd, 0xc2, 0xe6, 0x34, 0xa3, 0x2e, 0x35, 0x2a, 0x80, + 0x12, 0x3b, 0x71, 0x86, 0xb5, 0x14, 0xc9, 0x38, 0x50, 0x6a, 0xd4, 0xa1, 0x24, 0x8c, 0xe8, 0xa6, + 0x20, 0x6a, 0xfa, 0x3e, 0xc3, 0x64, 0xc4, 0x02, 0xa3, 0xe8, 0xa3, 0xb8, 0x6a, 0x29, 0xfe, 0x76, + 0xbb, 0x3e, 0xaa, 0x11, 0xc5, 0x64, 0x76, 0xcc, 0x75, 0xc1, 0xfe, 0xe6, 0x8b, 0xf3, 0x47, 0x80, + 0x11, 0xf3, 0x69, 0x2b, 0x90, 0x31, 0xb5, 0xc6, 0x85, 0x08, 0xe6, 0xb6, 0x2e, 0xe2, 0x05, 0xf5, + 0x64, 0xbe, 0x2d, 0xb9, 0xba, 0xcb, 0x84, 0xba, 0x30, 0x5e, 0xb1, 0xbe, 0x59, 0xa7, 0x7e, 0x0d, + 0x9f, 0xc0, 0xb0, 0x5e, 0x21, 0x3b, 0x18, 0xf2, 0x98, 0x23, 0x78, 0xfd, 0xbd, 0xb8, 0xbf, 0x54, + 0xaf, 0xe8, 0xe4, 0x40, 0x60, 0xfa, 0x41, 0x65, 0xc2, 0x41, 0x5f, 0x59, 0xd4, 0xef, 0xb1, 0x20, + 0x0c, 0x5a, 0xf2, 0xa0, 0x90, 0xfc, 0x21, 0xec, 0xa1, 0x78, 0xd4, 0x89, 0xc2, 0x55, 0x55, 0x0c, + 0x50, 0x65, 0x80, 0x5f, 0x0a, 0x9b, 0xd1, 0xa7, 0xdd, 0xc4, 0x8b, 0x62, 0xe5, 0xfd, 0x80, 0x19, + 0x33, 0x92, 0x0a, 0xad, 0xac, 0x7d, 0x16, 0xe3, 0xe2, 0xcb, 0xc3, 0x53, 0x66, 0x94, 0xe1, 0xbe, + 0x84, 0xd1, 0xcd, 0xbf, 0x21, 0x8b, 0x83, 0x44, 0xde, 0xa6, 0x73, 0x45, 0x40, 0xf6, 0x63, 0xc7, + 0x07, 0x20, 0x35, 0x98, 0xc2, 0x03, 0x2d, 0xd7, 0xdd, 0xb8, 0xe6, 0x77, 0x37, 0xfb, 0x00, 0x18, + 0x47, 0x0b, 0x22, 0xaa, 0x1e, 0x97, 0x5c, 0x57, 0x44, 0xa5, 0x86, 0xb5, 0x0f, 0xdc, 0x2c, 0x17, + 0x37, 0xbe, 0x8c, 0x55, 0x5c, 0x09, 0x4b, 0xa5, 0x82, 0xce, 0x2f, 0xd4, 0xa9, 0x1b, 0x87, 0x85, + 0x36, 0xde, 0x43, 0x4d, 0xab, 0xc8, 0xa7, 0xc6, 0x13, 0xe0, 0xbe, 0x56, 0x6e, 0xeb, 0xa9, 0xeb, + 0xad, 0x39, 0x8b, 0x46, 0x4a, 0xc3, 0xa7, 0xe3, 0x6f, 0xca, 0x48, 0x2c, 0x9d, 0x33, 0x49, 0xc3, + 0xf6, 0xc9, 0x50, 0xc4, 0x85, 0x6a, 0x0f, 0x07, 0x3d, 0x65, 0x1c, 0x36, 0xe9, 0x3a, 0x68, 0x79, + 0x53, 0x41, 0xc0, 0x28, 0x04, 0x34, 0x03, 0xbc, 0x56, 0xe6, 0x7e, 0x8b, 0x98, 0x15, 0xb8, 0x21, + 0x55, 0x39, 0x79, 0x44, 0xb9, 0x39, 0x9e, 0x7a, 0xd6, 0xde, 0x70, 0x59, 0xe4, 0x5f, 0x54, 0x14, + 0xae, 0x3c, 0xd5, 0x59, 0x28, 0x21, 0x71, 0xa4, 0xa0, 0xc7, 0xf5, 0x09, 0xa0, 0xa2, 0x5f, 0x88, + 0x56, 0xe7, 0xb5, 0x10, 0x4d, 0xf5, 0x9d, 0x27, 0xb0, 0x45, 0x91, 0x6c, 0x85, 0x41, 0xc6, 0x05, + 0x5e, 0x90, 0x58, 0x65, 0x6b, 0x3b, 0x8a, 0x44, 0xff, 0xdd, 0xeb, 0x1b, 0xb7, 0xfd, 0x0c, 0xef, + 0x7d, 0x19, 0xc8, 0x13, 0x0b, 0x5c, 0x93, 0x73, 0x8a, 0x7e, 0x5a, 0x1f, 0x87, 0x37, 0x36, 0xd2, + 0xc5, 0x1f, 0xfb, 0xc9, 0x7c, 0x15, 0xf5, 0xc9, 0x5e, 0xec, 0x14, 0x07, 0xcf, 0x9b, 0xd4, 0x99, + 0xa8, 0x48, 0xa1, 0xf1, 0xbe, 0xc6, 0xdd, 0xde, 0x94, 0x38, 0x2a, 0xfe, 0x1a, 0xf0, 0x43, 0x9d, + 0x14, 0x98, 0x8c, 0xec, 0xc1, 0xd2, 0x09, 0xab, 0xc2, 0xd1, 0x16, 0x7c, 0xe7, 0xf5, 0x63, 0x09, + 0xb5, 0xdc, 0x4e, 0xea, 0x22, 0xff, 0xd2, 0x16, 0x02, 0x66, 0x12, 0x54, 0x74, 0xe5, 0x51, 0xa0, + 0xc8, 0x66, 0x80, 0x0b, 0x6f, 0x0a, 0x03, 0x5a, 0x01, 0xd8, 0xf1, 0x4e, 0xf1, 0x5e, 0xff, 0x42, + 0x2e, 0x6d, 0x30, 0x59, 0x5a, 0x66, 0xe0, 0x8f, 0xb2, 0x98, 0x97, 0x48, 0x55, 0x0a, 0x65, 0x7d, + 0xdd, 0x2b, 0x1d, 0xcb, 0x7b, 0x5b, 0x06, 0x0c, 0xfe, 0xf3, 0x41, 0x2f, 0x2d, 0xa5, 0xc6, 0xc0, + 0xf4, 0xdb, 0xb0, 0xe1, 0xe1, 0xed, 0xbe, 0x20, 0x48, 0xdb, 0x97, 0x69, 0x2b, 0x10, 0x24, 0x77, + 0x66, 0x65, 0xeb, 0x91, 0x85, 0xc6, 0x23, 0xcf, 0xbc, 0xb7, 0x2c, 0x6a, 0x9d, 0x68, 0xce, 0xa7, + 0x47, 0x09, 0x48, 0xa4, 0xc3, 0xec, 0x33, 0x91, 0xf6, 0x8e, 0x65, 0x25, 0xe8, 0x2f, 0xa9, 0xeb, + 0xf8, 0x3b, 0x12, 0xdd, 0xaa, 0x27, 0x5e, 0x40, 0xa8, 0x6f, 0xc4, 0xf4, 0x97, 0x50, 0xbf, 0xd2, + 0xc0, 0x37, 0x73, 0xdb, 0x01, 0x87, 0x03, 0xc3, 0x50, 0x85, 0x60, 0xae, 0x52, 0x8c, 0xf2, 0x7b, + 0xe8, 0x3b, 0x63, 0xc0, 0x62, 0x62, 0x23, 0x24, 0xb9, 0xe8, 0x9a, 0xd7, 0xb5, 0xd9, 0x0c, 0x1e, + 0x0d, 0xf1, 0xdd, 0xb6, 0xf1, 0xde, 0x1e, 0x79, 0xa7, 0xf1, 0xfb, 0x94, 0xb3, 0x6e, 0x96, 0x8c, + 0x6d, 0xdd, 0x05, 0x0c, 0xa3, 0xc6, 0xce, 0x52, 0xe8, 0x55, 0x4a, 0xef, 0x6b, 0x00, 0x96, 0x13, + 0x8a, 0x2c, 0xfe, 0xab, 0x4f, 0xed, 0xb3, 0x64, 0xd6, 0x72, 0x54, 0x36, 0x2f, 0x85, 0xb6, 0x8b, + 0xfd, 0x91, 0x37, 0xec, 0x72, 0xb1, 0xf0, 0xe6, 0xc1, 0x21, 0x3d, 0x1c, 0x45, 0x05, 0x37, 0x9f, + 0xbe, 0x2d, 0x32, 0xfa, 0x30, 0xa9, 0x1d, 0x02, 0x14, 0xe4, 0x94, 0xaa, 0x61, 0x32, 0x23, 0x2a, + 0x47, 0x01, 0xba, 0x7c, 0x80, 0x80, 0xaa, 0xfa, 0xa8, 0xaf, 0xba, 0xfe, 0xdc, 0x3d, 0x75, 0x85, + 0x49, 0x34, 0x04, 0x13, 0xbf, 0xfa, 0x87, 0x2e, 0x17, 0x48, 0xef, 0xcb, 0xc9, 0x63, 0xad, 0xae, + 0x97, 0xb9, 0x2e, 0x9d, 0x4a, 0xcc, 0x3f, 0x10, 0x8a, 0x9e, 0x62, 0x5a, 0x9f, 0x3c, 0x52, 0x5d, + 0xf0, 0xa9, 0xb9, 0x64, 0x4c, 0xad, 0x4d, 0x12, 0x99, 0xb7, 0x30, 0x8a, 0x59, 0xb8, 0xff, 0xcd, + 0x96, 0xc1, 0x0d, 0x22, 0xef, 0xd1, 0x45, 0xa5, 0x95, 0x5d, 0x24, 0x15, 0x59, 0x28, 0x09, 0xfe, + 0x9b, 0xa7, 0x5c, 0x10, 0x23, 0x75, 0x57, 0xcc, 0x12, 0x69, 0xc2, 0x89, 0x9b, 0xac, 0x01, 0x8b, + 0x20, 0x24, 0x77, 0x7c, 0x74, 0x6d, 0x7e, 0x34, 0x9c, 0x6b, 0xf8, 0x39, 0x2f, 0x8f, 0x16, 0x85, + 0x84, 0xa5, 0x43, 0x90, 0xe2, 0xd2, 0x89, 0x1e, 0xa4, 0x3a, 0x27, 0x8f, 0xfc, 0xe2, 0x00, 0xbd, + 0x12, 0x66, 0x63, 0x65, 0x85, 0xc2, 0x79, 0x4a, 0xf6, 0xb2, 0xbb, 0x45, 0x1e, 0x6e, 0xe8, 0x09, + 0x91, 0xe4, 0x68, 0x5d, 0x2a, 0x0e, 0xc4, 0xab, 0x31, 0x99, 0xf2, 0x68, 0x01, 0x0a, 0x18, 0xab, + 0xb4, 0x3a, 0xb5, 0x3e, 0x4c, 0xb8, 0x87, 0x9c, 0xff, 0xa5, 0x35, 0xfd, 0x5b, 0xf0, 0x17, 0xc1, + 0x58, 0xff, 0xfe, 0xcb, 0x54, 0x72, 0x4f, 0xdc, 0xbf, 0xd8, 0x14, 0x6d, 0xfb, 0x7f, 0xbc, 0xd9, + 0xc3, 0x7b, 0x87, 0x55, 0x7a, 0x1f, 0x71, 0xae, 0xe7, 0xd9, 0x17, 0xc3, 0x34, 0x49, 0x82, 0x92, + 0x25, 0xd2, 0xce, 0xba, 0x17, 0x98, 0x48, 0x9e, 0x04, 0x4c, 0x67, 0xb1, 0xfa, 0x3d, 0xe5, 0x8d, + 0xa1, 0x08, 0x79, 0x7c, 0xd0, 0x22, 0x57, 0xc4, 0x16, 0x11, 0xd3, 0xb1, 0xe4, 0xac, 0x7d, 0x38, + 0xee, 0x3a, 0xf2, 0x47, 0x6b, 0xf9, 0x7f, 0x88, 0xbe, 0x86, 0x10, 0x6f, 0x19, 0x52, 0x86, 0x7c, + 0x25, 0xbc, 0x13, 0x4f, 0x02, 0x30, 0x85, 0xca, 0x2b, 0x62, 0x41, 0x7e, 0xd3, 0x69, 0x76, 0x9f, + 0xb6, 0x17, 0x68, 0x36, 0xd3, 0x87, 0x59, 0x9d, 0x8c, 0x62, 0xa9, 0x4b, 0x0c, 0x68, 0x76, 0xaf, + 0xc1, 0x0e, 0xb9, 0x36, 0xea, 0x4f, 0xd1, 0x29, 0x68, 0xfc, 0x55, 0x7b, 0xac, 0x35, 0xb3, 0xff, + 0xa3, 0xcd, 0x5e, 0xf4, 0x63, 0x9c, 0x51, 0x92, 0x66, 0x9b, 0x45, 0xf0, 0x5f, 0xce, 0x9f, 0x63, + 0x04, 0x42, 0x1c, 0x07, 0x6f, 0xa7, 0x6e, 0xbf, 0xd6, 0xd1, 0x96, 0x74, 0x76, 0x8d, 0x82, 0xb1, + 0x2b, 0x50, 0xcd, 0xfa, 0x3b, 0x16, 0x9a, 0xf6, 0x92, 0xb5, 0xa2, 0x6f, 0x95, 0x87, 0xf0, 0xc7, + 0x07, 0x0d, 0x75, 0x0c, 0x21, 0x94, 0xf5, 0x6a, 0x3a, 0x7f, 0xc1, 0xcd, 0x1a, 0x10, 0x1c, 0x94, + 0x18, 0x02, 0x4c, 0xa5, 0x17, 0x1e, 0x26, 0x1c, 0x38, 0x02, 0x5d, 0x5a, 0xd7, 0x9b, 0xf2, 0xfd, + 0x49, 0x09, 0x64, 0xf5, 0x27, 0x66, 0x06, 0x75, 0x59, 0x66, 0xf2, 0xc5, 0xf3, 0xdb, 0x25, 0x16, + 0x05, 0x6d, 0xc2, 0xf7, 0xbb, 0x27, 0xa2, 0x20, 0x40, 0x9e, 0x0d, 0xe8, 0x30, 0x9c, 0xfb, 0xff, + 0xc2, 0xee, 0xc1, 0x13, 0x18, 0x8a, 0x57, 0x3b, 0x8f, 0x36, 0xc8, 0x56, 0xfe, 0xfb, 0x79, 0x3b, + 0x3d, 0xbf, 0x21, 0x89, 0x7f, 0x8e, 0xcd, 0xdd, 0x25, 0x1f, 0x82, 0xca, 0x36, 0x9a, 0x17, 0x60, + 0xb1, 0x12, 0xd3, 0x12, 0x0b, 0x9d, 0x29, 0xcf, 0x2c, 0xe5, 0xa6, 0xe5, 0xbe, 0xe2, 0xba, 0x0b, + 0xc2, 0x05, 0x30, 0xa6, 0x25, 0x25, 0xa1, 0xfa, 0xff, 0x50, 0xae, 0x1a, 0xed, 0x57, 0xc6, 0x48, + 0x1f, 0x60, 0x76, 0xe9, 0xfc, 0x95, 0xbb, 0x4e, 0xea, 0x6d, 0xeb, 0xf7, 0xb9, 0x9e, 0x55, 0x3d, + 0xad, 0x27, 0x11, 0x55, 0x71, 0xc7, 0x5f, 0x29, 0xc8, 0xbf, 0x9d, 0xcb, 0x66, 0x4f, 0xc3, 0x8a, + 0x9b, 0x9d, 0x4e, 0x45, 0x00, 0x7d, 0x6c, 0xf8, 0xb9, 0x53, 0x23, 0x7a, 0x28, 0xaf, 0x7c, 0x7a, + 0xcf, 0x40, 0xf7, 0x90, 0xeb, 0x8c, 0x5b, 0x62, 0x0a, 0x63, 0x31, 0xa0, 0x1e, 0x42, 0xf2, 0x9c, + 0xa6, 0x87, 0x68, 0x8d, 0xad, 0x77, 0x6f, 0xed, 0x11, 0x5e, 0x94, 0x09, 0x30, 0x78, 0x4c, 0xae, + 0x8c, 0xdf, 0xda, 0x48, 0xd3, 0x2e, 0x61, 0x90, 0x77, 0x33, 0xe8, 0x78, 0xa4, 0xdd, 0x3b, 0x73, + 0xd7, 0xc6, 0xb3, 0xbc, 0x9d, 0x72, 0x8d, 0x2d, 0xec, 0x46, 0x1f, 0x4e, 0xe3, 0xc3, 0x69, 0x0e, + 0x67, 0xe3, 0x04, 0x55, 0x3b, 0xb0, 0x7e, 0xb3, 0x68, 0x67, 0x3f, 0x2e, 0xd8, 0xee, 0x40, 0xfd, + 0xbc, 0x77, 0xd8, 0x83, 0xa5, 0x9d, 0xde, 0xd8, 0x93, 0x89, 0x22, 0xdb, 0x05, 0x01, 0x1d, 0x14, + 0x71, 0x84, 0xed, 0x8f, 0x36, 0x14, 0x12, 0x6f, 0xfa, 0x89, 0x60, 0x79, 0x73, 0x0c, 0xaa, 0x49, + 0x29, 0xce, 0xb9, 0x76, 0x53, 0x6d, 0xe0, 0x0a, 0xe2, 0x36, 0xc2, 0xb7, 0x4b, 0x82, 0x9f, 0xce, + 0x81, 0xb5, 0xc4, 0xf1, 0xd4, 0x58, 0x42, 0x5f, 0xb4, 0xcc, 0x24, 0xcd, 0x18, 0x3c, 0x66, 0xf1, + 0xab, 0x68, 0x6d, 0x36, 0xed, 0x32, 0x40, 0xa2, 0x07, 0x7a, 0x7e, 0x45, 0x53, 0x6c, 0xcb, 0x27, + 0xd4, 0x81, 0x36, 0x1b, 0x4b, 0x00, 0x7d, 0x1f, 0xf3, 0xb0, 0x79, 0xc6, 0x48, 0xdd, 0x6c, 0x6a, + 0xd3, 0x9f, 0xf4, 0xad, 0xc4, 0xcd, 0x45, 0xa7, 0xaf, 0xdc, 0x13, 0x66, 0xe2, 0xaf, 0xca, 0xa3, + 0x42, 0x5c, 0xbf, 0x08, 0x79, 0x20, 0x07, 0xc5, 0xd6, 0x82, 0x34, 0x39, 0x2c, 0xe3, 0xd3, 0x8d, + 0x12, 0x1d, 0x9f, 0x98, 0xe8, 0x1a, 0xcc, 0x0d, 0xbf, 0xc5, 0x2f, 0x62, 0xbb, 0x0e, 0x23, 0x50, + 0x92, 0x92, 0xf0, 0xce, 0x70, 0x5d, 0x51, 0x38, 0x2c, 0x9c, 0xc8, 0xc0, 0xbb, 0xa4, 0x9b, 0x81, + 0x83, 0xa9, 0x32, 0xe7, 0x3a, 0x47, 0x2a, 0xd3, 0xbc, 0x09, 0xd4, 0x5a, 0x1f, 0xf1, 0x72, 0xb8, + 0xaf, 0xba, 0x24, 0x2f, 0x25, 0xd9, 0xc0, 0x76, 0xe1, 0xee, 0x7d, 0x7f, 0x60, 0x42, 0xfc, 0xec, + 0xe3, 0x32, 0x13, 0x46, 0x7e, 0x5c, 0x8e, 0xa1, 0x46, 0xe8, 0x93, 0x14, 0xd7, 0x90, 0xf9, 0x80, + 0xfa, 0x4f, 0xd7, 0x03, 0x0d, 0x97, 0x22, 0xc0, 0x6b, 0xbd, 0x97, 0xb3, 0x0e, 0xf4, 0xc5, 0x92, + 0x42, 0x6b, 0x1b, 0xeb, 0xdc, 0x13, 0x13, 0x01, 0x42, 0x1c, 0xf0, 0x88, 0x31, 0x2c, 0x42, 0x59, + 0x67, 0x7e, 0xff, 0x77, 0xab, 0xc1, 0x47, 0x50, 0x51, 0x64, 0x7d, 0x8f, 0xec, 0x68, 0xcc, 0x34, + 0x76, 0xbf, 0x65, 0x89, 0x9c, 0x18, 0x7b, 0x21, 0x86, 0xbf, 0x3d, 0x79, 0xae, 0x6f, 0xc2, 0x12, + 0x21, 0x3a, 0x95, 0x62, 0x65, 0xc9, 0xcc, 0xee, 0x08, 0x3a, 0xaf, 0xe9, 0x31, 0xe5, 0x6a, 0xa2, + 0x27, 0x30, 0x34, 0x7b, 0x04, 0xf0, 0xe7, 0xd5, 0x14, 0x95, 0xd5, 0xbc, 0x05, 0x94, 0x4e, 0xb9, + 0xa9, 0x1d, 0x10, 0x20, 0xe9, 0xbd, 0xf8, 0x44, 0xbe, 0x95, 0xb0, 0x2b, 0x9e, 0x3c, 0xd2, 0x5c, + 0x47, 0x89, 0x0a, 0xee, 0xa9, 0xb8, 0xc9, 0xb5, 0x3f, 0x19, 0xf5, 0xf8, 0x33, 0x18, 0x9d, 0xa9, + 0x01, 0xcf, 0xdc, 0xa2, 0x6c, 0x85, 0xde, 0x19, 0x24, 0xdd, 0x36, 0x19, 0x1a, 0x54, 0x9f, 0x52, + 0xd3, 0xf8, 0xf5, 0x88, 0x73, 0x9f, 0xf7, 0x98, 0xa6, 0x41, 0x0d, 0xe0, 0xfe, 0xf8, 0x18, 0xb2, + 0xe9, 0x2a, 0x60, 0x0e, 0xf3, 0xbe, 0x56, 0x8b, 0xee, 0x17, 0x8e, 0x56, 0x5e, 0x62, 0x7d, 0xb6, + 0x18, 0x95, 0xba, 0xb5, 0xb3, 0x0e, 0x1c, 0x1b, 0x28, 0xb8, 0x8d, 0x0c, 0x63, 0x14, 0x37, 0x41, + 0xa2, 0xe7, 0xf6, 0x63, 0x2e, 0xf8, 0x6c, 0x63, 0x45, 0xfc, 0x95, 0xb0, 0x90, 0xd3, 0x1e, 0x4f, + 0x58, 0xfd, 0x40, 0xad, 0x6a, 0x1a, 0x82, 0x4c, 0x57, 0xae, 0x10, 0x69, 0x1f, 0xe0, 0xca, 0x67, + 0x53, 0x6b, 0xb4, 0x8c, 0x5c, 0x67, 0x4b, 0x1d, 0x2f, 0x24, 0x50, 0xbd, 0xa8, 0xf3, 0x50, 0x23, + 0xd2, 0xab, 0x48, 0x8f, 0x87, 0x01, 0xc0, 0x2d, 0x4d, 0x67, 0xee, 0x31, 0x87, 0x29, 0xd1, 0xd5, + 0x49, 0x29, 0x86, 0x2b, 0x07, 0x05, 0xaa, 0x88, 0x15, 0xbc, 0xb0, 0x70, 0x0f, 0x75, 0x90, 0x35, + 0xde, 0x09, 0x43, 0xe5, 0xa1, 0x11, 0x53, 0x60, 0x4f, 0x46, 0x1a, 0x58, 0xf1, 0x9f, 0x56, 0xef, + 0x2e, 0xb8, 0x4a, 0xce, 0x4a, 0x86, 0x22, 0x59, 0x99, 0x4c, 0x81, 0xfd, 0x67, 0xf1, 0x19, 0xc4, + 0xb3, 0x82, 0xd7, 0xd5, 0x6b, 0xc2, 0xe3, 0xbc, 0x1b, 0x84, 0x91, 0x09, 0x9f, 0x17, 0x85, 0x5c, + 0xb4, 0x4d, 0x4f, 0x43, 0x0c, 0xae, 0x49, 0x98, 0xa4, 0x94, 0xf9, 0x63, 0x77, 0x16, 0x71, 0xc6, + 0xc5, 0x74, 0xdc, 0xb9, 0xd2, 0x63, 0x64, 0x4c, 0xb4, 0x96, 0x44, 0x0b, 0x9a, 0x43, 0xb7, 0x74, + 0xf6, 0xe3, 0x37, 0x2d, 0xc9, 0x93, 0xcd, 0x5a, 0x6e, 0x47, 0xd2, 0xed, 0x9b, 0x39, 0x06, 0xc7, + 0xde, 0x49, 0xa8, 0x66, 0x0f, 0x54, 0xac, 0x57, 0xb6, 0xe5, 0x92, 0x81, 0xb1, 0xb0, 0x8c, 0xd5, + 0xe5, 0x7b, 0x61, 0x1b, 0x2b, 0x63, 0xdd, 0x55, 0xe5, 0x6e, 0xa2, 0x60, 0xf5, 0x80, 0x15, 0x87, + 0xd6, 0x78, 0x6c, 0x70, 0x69, 0x23, 0x6b, 0x34, 0x3f, 0x6c, 0x4a, 0x52, 0xe1, 0x59, 0xeb, 0x95, + 0x2a, 0x75, 0x4f, 0x06, 0x15, 0x7f, 0xb6, 0x20, 0x81, 0xdf, 0x93, 0x7d, 0x37, 0x59, 0xd7, 0x9d, + 0x6d, 0x1b, 0x00, 0x0b, 0x69, 0x92, 0x47, 0xe0, 0xde, 0xab, 0xaa, 0xa1, 0x54, 0x03, 0x50, 0xfa, + 0x5c, 0xb3, 0xfb, 0xcf, 0xfb, 0xad, 0x5c, 0xfd, 0xd6, 0xfd, 0x73, 0x9b, 0x25, 0x77, 0xae, 0x5e, + 0x75, 0x5a, 0xbd, 0xb4, 0x7c, 0xa9, 0xc4, 0xea, 0x22, 0xd9, 0xc3, 0x53, 0xd9, 0x3c, 0xb3, 0xc3, + 0x45, 0x58, 0x02, 0x62, 0x3a, 0x79, 0x83, 0xbd, 0x91, 0x78, 0xa5, 0xd9, 0x0c, 0x08, 0x31, 0x55, + 0x9c, 0x14, 0x89, 0x2f, 0xf4, 0x0d, 0x2c, 0x5c, 0x55, 0xe2, 0x82, 0xb9, 0x66, 0x22, 0xb3, 0xff, + 0xfd, 0xf2, 0x5f, 0x71, 0xab, 0x47, 0x45, 0xc1, 0xf4, 0x84, 0x2d, 0x6d, 0xcd, 0xc2, 0xa9, 0x38, + 0x29, 0xf5, 0x3c, 0xb2, 0xef, 0xa7, 0x44, 0x98, 0xb7, 0x84, 0xa0, 0xde, 0xda, 0xa9, 0x99, 0x25, + 0x83, 0x11, 0x93, 0xcd, 0x2c, 0x5a, 0xa2, 0x9a, 0xff, 0xb0, 0x4a, 0x80, 0x3e, 0x2c, 0x52, 0xf3, + 0x8f, 0xbd, 0xdd, 0xc5, 0x17, 0xea, 0x6b, 0xb4, 0x75, 0xa7, 0x22, 0xe9, 0xc1, 0xbd, 0x74, 0x80, + 0x62, 0x6a, 0x55, 0x46, 0x4d, 0xf4, 0x47, 0x5a, 0x25, 0xc2, 0x67, 0x9b, 0xdc, 0xf8, 0x1b, 0xe7, + 0xff, 0xd1, 0x44, 0xe6, 0xbe, 0x6c, 0xa4, 0x9d, 0xc3, 0x6e, 0x44, 0xfb, 0x54, 0xd5, 0x53, 0xec, + 0xe4, 0x03, 0x9c, 0x22, 0xa0, 0xa1, 0xd1, 0x1a, 0x6e, 0xa3, 0x10, 0xf9, 0xd0, 0x14, 0xa6, 0x20, + 0x8c, 0xe0, 0x35, 0x72, 0x92, 0x41, 0x43, 0x83, 0x93, 0x11, 0xec, 0x3d, 0x74, 0x43, 0x4a, 0x92, + 0xe4, 0x91, 0xb7, 0xf2, 0xed, 0x9a, 0x6f, 0xd4, 0x23, 0x67, 0x07, 0xfb, 0x90, 0xb1, 0xb0, 0x23, + 0x14, 0x7a, 0x50, 0x48, 0xdf, 0x89, 0x19, 0xa0, 0xdb, 0xf5, 0xff, 0x38, 0xfa, 0x97, 0x6b, 0x7b, + 0xd3, 0x50, 0x77, 0xcf, 0xce, 0x4e, 0x6d, 0x79, 0x93, 0xc5, 0x49, 0xad, 0x17, 0x55, 0xa6, 0xd4, + 0x82, 0x7d, 0x17, 0x2d, 0x0b, 0x76, 0x55, 0x90, 0x83, 0x56, 0x72, 0x76, 0xac, 0xe4, 0x24, 0x91, + 0x4f, 0x85, 0xf7, 0xc7, 0x9d, 0x38, 0xd0, 0x92, 0x30, 0x91, 0x99, 0x25, 0x8a, 0x6c, 0xaa, 0x2d, + 0xbb, 0x88, 0x30, 0x8c, 0xf2, 0xa6, 0x23, 0x60, 0x89, 0x44, 0x02, 0x1e, 0x18, 0xb4, 0xd9, 0xab, + 0x4b, 0xa4, 0x57, 0xef, 0x49, 0x3c, 0x02, 0xe5, 0x7d, 0x38, 0x36, 0x49, 0x5b, 0xcd, 0x2d, 0x6f, + 0x9d, 0x90, 0x63, 0xe0, 0x56, 0xa6, 0x9a, 0xf9, 0xf8, 0x65, 0xc1, 0x88, 0x8d, 0x43, 0x5b, 0xe0, + 0xc2, 0x90, 0xaa, 0x22, 0xd2, 0x40, 0xe2, 0x94, 0x2d, 0x48, 0x75, 0xcb, 0x67, 0x84, 0xa5, 0xe1, + 0xc3, 0x08, 0x30, 0xfa, 0xd7, 0xfd, 0x27, 0x9c, 0xb1, 0x03, 0x0f, 0x58, 0x15, 0x5a, 0x15, 0x4a, + 0xa8, 0x48, 0x23, 0x74, 0xec, 0xc4, 0xe9, 0x83, 0xa6, 0xc3, 0x82, 0x7a, 0x0f, 0x2c, 0x17, 0x93, + 0x14, 0x21, 0x03, 0xc2, 0xba, 0x4f, 0x47, 0xae, 0x53, 0xa7, 0x54, 0x53, 0xed, 0x79, 0xe0, 0x05, + 0xa3, 0x27, 0xf8, 0xae, 0x99, 0xd5, 0x03, 0x01, 0x86, 0x92, 0xab, 0x03, 0xc2, 0x6a, 0xc3, 0xe8, + 0x15, 0xc8, 0x40, 0x7b, 0x11, 0xc7, 0x89, 0xb5, 0x6d, 0x4d, 0x22, 0x61, 0x2d, 0x5a, 0x12, 0x5a, + 0x48, 0x28, 0x0e, 0xeb, 0x5e, 0xde, 0x8b, 0x3f, 0x52, 0xb0, 0xeb, 0x8c, 0x0b, 0x83, 0x9e, 0x56, + 0x6e, 0x66, 0xa4, 0xc7, 0xc1, 0x7c, 0x02, 0x85, 0x16, 0xe0, 0x64, 0x88, 0x04, 0x5a, 0xaa, 0xfb, + 0xb3, 0xc1, 0xf7, 0x7d, 0x41, 0xc3, 0xf6, 0x00, 0x56, 0x61, 0xb8, 0xe7, 0xb5, 0x01, 0x05, 0x1d, + 0x51, 0x99, 0x1d, 0xd9, 0x63, 0x24, 0x05, 0x4e, 0xfe, 0xe0, 0x26, 0xbb, 0xd6, 0xbb, 0x88, 0x33, + 0x31, 0x20, 0x6d, 0x97, 0x69, 0x31, 0x5e, 0x03, 0xac, 0x13, 0x39, 0xa8, 0x5b, 0x18, 0x9b, 0x18, + 0xbe, 0xf1, 0x54, 0x7d, 0xff, 0xa3, 0x61, 0xb3, 0x0c, 0x12, 0xf8, 0xde, 0xad, 0x3f, 0x50, 0xd1, + 0xfc, 0x24, 0x94, 0x8a, 0x7e, 0xbd, 0xe5, 0xbe, 0x03, 0x74, 0xfb, 0xe5, 0xbb, 0x40, 0xcd, 0x09, + 0xe2, 0x25, 0x30, 0xac, 0x2f, 0xc0, 0x73, 0x3a, 0x26, 0x5a, 0xbc, 0x3f, 0xc0, 0x90, 0xff, 0xc0, + 0xe0, 0x14, 0xc5, 0x30, 0x1f, 0x21, 0x33, 0x77, 0xa6, 0xe5, 0xd3, 0x24, 0xca, 0xe4, 0x95, 0x01, + 0x42, 0xa7, 0x7c, 0xe1, 0x8e, 0xd6, 0x6c, 0x00, 0xea, 0x5c, 0x83, 0x62, 0xb6, 0x19, 0xb6, 0xbf, + 0x0a, 0xeb, 0x79, 0x15, 0x5a, 0x32, 0xa1, 0xa3, 0x76, 0xc2, 0x03, 0x28, 0xb7, 0x48, 0xc8, 0x25, + 0xaa, 0xc5, 0x78, 0x93, 0x1f, 0x94, 0x6c, 0xdd, 0xca, 0x34, 0xf4, 0xee, 0xa4, 0xb1, 0x90, 0x66, + 0xc9, 0x5f, 0xf0, 0x1c, 0x0e, 0x25, 0x72, 0x94, 0xa0, 0xa6, 0x66, 0x43, 0x01, 0xd4, 0x10, 0xe1, + 0x07, 0x17, 0x9d, 0x51, 0xf0, 0xbd, 0xd8, 0x89, 0x33, 0xd5, 0xb3, 0x8c, 0xfd, 0x77, 0x8c, 0xc9, + 0xa0, 0x8f, 0x7a, 0x07, 0x34, 0x3a, 0xfc, 0x86, 0x0f, 0x37, 0x03, 0x39, 0x2a, 0x5c, 0x0b, 0x69, + 0x3c, 0xd6, 0xce, 0x88, 0x50, 0xe2, 0x20, 0x2e, 0x1e, 0xea, 0x66, 0x9d, 0xdf, 0x5a, 0xd2, 0x6a, + 0xcb, 0x3d, 0xf9, 0xda, 0x58, 0x8e, 0xaf, 0x73, 0x3a, 0xd5, 0x6f, 0x7b, 0x9a, 0x44, 0x8b, 0xde, + 0x92, 0xa4, 0x08, 0xf1, 0xae, 0xb1, 0x7c, 0xa9, 0x42, 0x2f, 0xc1, 0x83, 0x07, 0x9b, 0x0f, 0x65, + 0xaf, 0x3e, 0x33, 0xbe, 0xf4, 0x21, 0x5d, 0xf8, 0x3c, 0x50, 0x1d, 0xe8, 0x9f, 0x43, 0xa1, 0x79, + 0x11, 0x19, 0x8c, 0x48, 0xf7, 0xe2, 0x9d, 0x72, 0x73, 0xfc, 0x95, 0x12, 0x0f, 0x37, 0x5e, 0x7a, + 0x71, 0xa0, 0xa0, 0x0e, 0x6a, 0x16, 0xfd, 0xbf, 0xa3, 0x63, 0x4a, 0x46, 0xa9, 0xe9, 0xb7, 0x8a, + 0x00, 0xbd, 0x14, 0xe7, 0x39, 0x08, 0xe0, 0x24, 0xe5, 0x66, 0xd7, 0xa3, 0x95, 0xbf, 0x34, 0x08, + 0x06, 0x57, 0x55, 0x9e, 0xd3, 0x21, 0x39, 0xe5, 0xe1, 0x0e, 0x6e, 0xa0, 0x83, 0x5e, 0xa7, 0x83, + 0xf7, 0x38, 0x19, 0x15, 0xd3, 0xfe, 0x69, 0xb7, 0x8e, 0x52, 0x0b, 0x06, 0xf3, 0xf4, 0xa7, 0x21, + 0x8a, 0x6c, 0x79, 0x4d, 0x56, 0x50, 0xed, 0xc0, 0xce, 0xda, 0xf0, 0xdf, 0xb7, 0x88, 0x53, 0x47, + 0xda, 0x4b, 0x20, 0x2e, 0xf8, 0xc9, 0xb7, 0xf2, 0x38, 0x44, 0x7a, 0x52, 0x23, 0x80, 0x4f, 0x50, + 0x83, 0x05, 0x63, 0xcd, 0xad, 0x0d, 0x1e, 0xa2, 0x22, 0xe4, 0xf3, 0x16, 0xfc, 0x6e, 0x85, 0x52, + 0x46, 0x37, 0xd2, 0x52, 0xb3, 0x50, 0x4b, 0x27, 0x74, 0xe4, 0xb0, 0xac, 0x18, 0xdd, 0x4b, 0x30, + 0x20, 0x0b, 0x20, 0x12, 0x2b, 0x45, 0xd7, 0xf8, 0xa8, 0xba, 0x65, 0x21, 0x81, 0x4e, 0x82, 0xc1, + 0xa1, 0x6c, 0xad, 0x92, 0x2c, 0x5d, 0x10, 0xd6, 0x9d, 0xa3, 0x7d, 0x08, 0x7e, 0xd9, 0x14, 0xaa, + 0x90, 0x5e, 0x8f, 0xd4, 0xcd, 0x51, 0xd9, 0xa6, 0x61, 0x58, 0x0c, 0x21, 0xd2, 0x5e, 0x17, 0x10, + 0xe7, 0x2a, 0x1f, 0xa4, 0x63, 0x1d, 0x0f, 0xec, 0xc5, 0x76, 0x93, 0x36, 0x47, 0x31, 0x45, 0x3b, + 0x87, 0x65, 0x9d, 0xee, 0x26, 0x4e, 0x42, 0x97, 0x74, 0x00, 0x9e, 0x26, 0x95, 0x64, 0x19, 0x2b, + 0x3b, 0x14, 0x18, 0xeb, 0xd7, 0xfc, 0x20, 0x21, 0xcf, 0x1b, 0x25, 0xa7, 0x89, 0xfb, 0x7c, 0xeb, + 0x91, 0xfd, 0xe7, 0x77, 0x6e, 0x4a, 0xa4, 0xb6, 0x4c, 0xe5, 0x9f, 0x3e, 0x46, 0x28, 0x41, 0x58, + 0xab, 0x82, 0x12, 0x61, 0x75, 0x74, 0xb1, 0x6a, 0xbd, 0xeb, 0x3f, 0x56, 0x24, 0x83, 0xc9, 0x6c, + 0x30, 0x1f, 0xd2, 0x78, 0x22, 0xb6, 0x16, 0xb6, 0x59, 0xaf, 0xee, 0xc3, 0x3a, 0x77, 0xfb, 0xe0, + 0x40, 0x3d, 0x33, 0xcf, 0x39, 0x43, 0xa0, 0x6e, 0xb7, 0xa5, 0x85, 0xf7, 0xaa, 0xfa, 0x25, 0xea, + 0x7c, 0x6c, 0xf7, 0xfd, 0x87, 0x11, 0xb1, 0x69, 0x1e, 0xa9, 0x92, 0x28, 0x73, 0x82, 0xf8, 0xa9, + 0x26, 0x6f, 0x45, 0x31, 0x11, 0x49, 0x36, 0xb5, 0x35, 0x16, 0x40, 0x37, 0xb4, 0xe3, 0xf9, 0x8e, + 0x8c, 0x32, 0x92, 0x2b, 0xef, 0x9c, 0xb0, 0xd1, 0x57, 0xea, 0xbe, 0xf0, 0xb1, 0x73, 0xb1, 0xad, + 0xe6, 0x42, 0xb6, 0xed, 0xf2, 0x04, 0x07, 0xa2, 0x49, 0xf8, 0x73, 0x88, 0x2d, 0x99, 0x8c, 0x24, + 0xb7, 0xd1, 0x10, 0xf8, 0xe4, 0xbf, 0xb6, 0x12, 0x07, 0xf9, 0xad, 0x2c, 0xb1, 0x82, 0xc5, 0xe6, + 0x83, 0x22, 0xa6, 0xce, 0xbd, 0xb0, 0xb0, 0xf1, 0x79, 0x83, 0xc9, 0xaa, 0xa0, 0xc2, 0x69, 0x7f, + 0x51, 0xfd, 0xc6, 0x17, 0xfe, 0x96, 0x9f, 0x1f, 0xce, 0x83, 0xfe, 0xd6, 0x68, 0x9e, 0x0c, 0xbb, + 0x1c, 0x9f, 0x40, 0x97, 0x03, 0x88, 0x8c, 0x2c, 0xa7, 0x4a, 0xb6, 0xef, 0xb9, 0xe0, 0x59, 0xc6, + 0x1e, 0x98, 0x31, 0x52, 0x22, 0x41, 0xf6, 0xb7, 0x5e, 0x5b, 0x2e, 0xa0, 0xbf, 0x3e, 0x99, 0xaa, + 0x63, 0x97, 0xa7, 0x0a, 0xc5, 0x14, 0x33, 0x95, 0x01, 0xc1, 0x80, 0x75, 0xd3, 0xe8, 0x27, 0x3c, + 0xf5, 0x7c, 0x00, 0x46, 0x14, 0x0c, 0xd8, 0x6d, 0x25, 0x20, 0x77, 0x0b, 0xaa, 0xb3, 0xa7, 0xe0, + 0xe6, 0x88, 0x31, 0x7e, 0xcc, 0x1e, 0xee, 0xe4, 0xbe, 0x66, 0x2a, 0x8a, 0xa7, 0x68, 0x94, 0x4f, + 0xa2, 0xb8, 0x3c, 0x3d, 0x75, 0x72, 0xf0, 0x8f, 0x94, 0xcf, 0x2c, 0x13, 0xbd, 0x6a, 0x53, 0x57, + 0xac, 0x4f, 0x0b, 0x3d, 0x9c, 0x15, 0x32, 0x05, 0x7e, 0xfa, 0xf5, 0xb8, 0x53, 0xdb, 0x01, 0x8d, + 0x35, 0x5a, 0x01, 0x98, 0xca, 0x47, 0x90, 0x51, 0xa8, 0x1a, 0x84, 0xcd, 0x86, 0x81, 0x8e, 0x53, + 0x40, 0x4d, 0x76, 0xa8, 0xbd, 0x8b, 0x96, 0xd6, 0xb9, 0xc8, 0xd9, 0x71, 0x6f, 0x58, 0x2a, 0x70, + 0xab, 0x11, 0x84, 0x70, 0x36, 0xc0, 0xc1, 0x5f, 0x2b, 0x2c, 0xa3, 0x5a, 0x32, 0x56, 0x1a, 0xb4, + 0xdd, 0xaf, 0x4b, 0x6e, 0x4c, 0x4e, 0xa4, 0xdf, 0x2f, 0xdb, 0x0d, 0x01, 0xe0, 0xc7, 0x1c, 0x09, + 0x78, 0x09, 0xaa, 0x51, 0xf0, 0x0f, 0x08, 0x6b, 0x61, 0x2a, 0x7b, 0x30, 0xa2, 0xf1, 0x26, 0xcc, + 0xf0, 0x04, 0x38, 0xd1, 0xf5, 0x6c, 0x21, 0xf7, 0x8e, 0x6b, 0xc0, 0xb6, 0x9c, 0x8d, 0xb7, 0x7c, + 0xff, 0x33, 0x28, 0x48, 0x06, 0x7b, 0x47, 0x05, 0xbb, 0xe2, 0x23, 0xb3, 0x00, 0x72, 0x43, 0xbe, + 0xbe, 0xee, 0x8d, 0xb7, 0xa5, 0x26, 0x93, 0x61, 0x7a, 0x1f, 0x46, 0x1e, 0x13, 0x76, 0x35, 0x87, + 0x75, 0x87, 0x7d, 0xe0, 0x71, 0xc1, 0x9b, 0xdc, 0x54, 0x56, 0x3f, 0xa1, 0x47, 0x63, 0xed, 0x08, + 0x77, 0xe0, 0x6e, 0xbe, 0xe6, 0x83, 0xc0, 0xae, 0x96, 0x0e, 0xcf, 0x61, 0xb2, 0x6f, 0x8b, 0x04, + 0x24, 0x9f, 0xa8, 0x0a, 0xf2, 0xb2, 0x77, 0x7b, 0x1c, 0xac, 0x97, 0x16, 0x4a, 0x28, 0xdf, 0x3e, + 0xe9, 0xcb, 0x0d, 0x8a, 0x28, 0x86, 0xf0, 0x33, 0x17, 0x8e, 0x0b, 0xfa, 0x49, 0x4c, 0x84, 0x38, + 0x3a, 0x05, 0xc2, 0xef, 0xba, 0xe0, 0xec, 0x83, 0xfd, 0x6f, 0x68, 0x60, 0xc8, 0xe6, 0x45, 0xca, + 0x71, 0x82, 0x7b, 0xc2, 0xa6, 0x08, 0x2d, 0xa0, 0xc4, 0x20, 0x6c, 0x85, 0x74, 0x6f, 0x52, 0xa5, + 0xcb, 0xaf, 0x01, 0x15, 0xab, 0x5d, 0x4f, 0x1f, 0x1b, 0xe5, 0xe9, 0x07, 0x9a, 0xb6, 0x41, 0xde, + 0x68, 0xdc, 0x65, 0xaa, 0x7b, 0x93, 0xea, 0xba, 0x60, 0xc4, 0xb6, 0xef, 0x23, 0x6e, 0xb2, 0xa1, + 0xce, 0xdc, 0xf5, 0xe8, 0xd4, 0x8c, 0x24, 0xdd, 0xda, 0xaa, 0x8c, 0x8c, 0x7b, 0xa9, 0x70, 0xeb, + 0x8b, 0xb2, 0xe5, 0xc4, 0x66, 0x5f, 0xcf, 0x66, 0x39, 0x6d, 0xfd, 0x64, 0x59, 0x34, 0x5b, 0x6b, + 0x56, 0xbe, 0x64, 0x89, 0x1e, 0x3c, 0x29, 0x55, 0xcf, 0x28, 0xce, 0x7f, 0xb6, 0xb8, 0xb7, 0x84, + 0x82, 0x7e, 0xd4, 0xee, 0x67, 0x8f, 0x74, 0xf4, 0x0f, 0x30, 0x11, 0xc1, 0x21, 0xb5, 0x97, 0xcb, + 0xb0, 0xa6, 0x4e, 0xb1, 0x39, 0x6b, 0xed, 0xb8, 0xb4, 0x1d, 0x9b, 0x88, 0xb4, 0x65, 0x9a, 0x5c, + 0x55, 0x4e, 0x8d, 0xbd, 0x3e, 0x6a, 0xad, 0x79, 0xae, 0x56, 0x17, 0xfd, 0x6c, 0xdb, 0x95, 0x20, + 0x90, 0xbc, 0xa0, 0x51, 0x8d, 0x82, 0x83, 0x70, 0x36, 0x94, 0x8f, 0x43, 0x5a, 0x9d, 0xc2, 0xa0, + 0x08, 0x9a, 0xad, 0xb6, 0x0c, 0x8e, 0xa1, 0x7d, 0x69, 0xfb, 0x36, 0x36, 0xa6, 0x9c, 0x6f, 0xa1, + 0x14, 0x37, 0xfe, 0xaa, 0xd7, 0xab, 0xd9, 0xeb, 0x8c, 0x2b, 0x86, 0xa8, 0x2f, 0x72, 0x32, 0x3c, + 0x9a, 0x9b, 0x75, 0x19, 0x64, 0xe4, 0x21, 0xd9, 0xdc, 0xd8, 0x99, 0xf6, 0xdb, 0x1a, 0xe7, 0x7e, + 0xdf, 0x5b, 0x38, 0x82, 0xe8, 0x6b, 0x3f, 0x3e, 0x56, 0x14, 0x5e, 0x85, 0xce, 0x20, 0xee, 0x05, + 0x41, 0xa9, 0xb1, 0x09, 0xc0, 0xa9, 0xc2, 0x30, 0xa2, 0x54, 0xd5, 0x76, 0x14, 0xfb, 0x20, 0x8d, + 0x66, 0xd6, 0x76, 0xa4, 0xa0, 0xe7, 0x92, 0x15, 0xd9, 0x25, 0x73, 0x00, 0x7b, 0x2f, 0xd6, 0x59, + 0x5d, 0x3a, 0x94, 0xe0, 0x39, 0xe7, 0xe8, 0xbe, 0x2d, 0x3e, 0x30, 0x26, 0x18, 0xb5, 0x95, 0x7a, + 0x92, 0x55, 0x31, 0x0b, 0x21, 0xc0, 0x92, 0xb3, 0x3e, 0x96, 0x3c, 0xe0, 0x53, 0xe3, 0x9d, 0xcc, + 0x7b, 0xdc, 0x8e, 0xd1, 0x46, 0xf9, 0x7b, 0x1e, 0x3c, 0x00, 0x48, 0x97, 0x37, 0xef, 0x4d, 0x4a, + 0x85, 0xdd, 0xab, 0x32, 0xec, 0xe2, 0x60, 0xd0, 0xee, 0x75, 0x02, 0xca, 0xf6, 0xb1, 0x0e, 0x1e, + 0x9d, 0x6e, 0x20, 0x9f, 0xcd, 0x5e, 0x7f, 0xb1, 0x13, 0x3c, 0x07, 0xd4, 0x0a, 0x43, 0xff, 0x40, + 0xd2, 0xc5, 0x9b, 0x5b, 0x5e, 0x89, 0x5e, 0x48, 0x28, 0x5b, 0xe0, 0x3a, 0x18, 0x6c, 0x83, 0xa7, + 0x82, 0x7f, 0xb5, 0xd7, 0xbf, 0xcd, 0x09, 0x70, 0x36, 0xe5, 0xaf, 0x60, 0x0a, 0x98, 0x7c, 0x70, + 0x7d, 0xac, 0x46, 0xb4, 0x30, 0x19, 0xf1, 0x3c, 0xc7, 0x55, 0xfd, 0x6f, 0x7a, 0x4b, 0xe5, 0x53, + 0xcf, 0x06, 0x83, 0xca, 0x76, 0x30, 0x86, 0x27, 0x66, 0xf8, 0x3f, 0xea, 0x0e, 0x1d, 0xce, 0x01, + 0xb3, 0x04, 0x62, 0xb3, 0xb3, 0x3f, 0xfe, 0x5f, 0x8a, 0x03, 0xc9, 0xfd, 0xb9, 0x8f, 0xc4, 0xa6, + 0x60, 0x6e, 0xd9, 0x64, 0xe1, 0x51, 0x46, 0xb5, 0x09, 0xa3, 0x6a, 0x5c, 0x9e, 0xc2, 0xa4, 0xcc, + 0xe6, 0xe1, 0x5f, 0xb4, 0x25, 0x1c, 0x19, 0x10, 0x25, 0xb7, 0x57, 0x6a, 0xbd, 0xd1, 0x6e, 0x32, + 0xc7, 0xe4, 0xb1, 0x38, 0x93, 0x8c, 0x25, 0xfc, 0x13, 0x69, 0x44, 0xaf, 0x21, 0x0e, 0x66, 0xcc, + 0x84, 0x62, 0xe3, 0x40, 0xd1, 0x6e, 0x7e, 0xc5, 0xd7, 0xcf, 0xdb, 0x37, 0x28, 0x74, 0xdb, 0x95, + 0x3f, 0x72, 0xbd, 0x69, 0xe4, 0x48, 0xe4, 0xb7, 0xc5, 0xcc, 0xf5, 0x0a, 0x7a, 0xb5, 0x3f, 0x9f, + 0x56, 0x4b, 0x6a, 0x13, 0xc6, 0x49, 0x54, 0x4a, 0x29, 0x85, 0xd4, 0x6f, 0x87, 0xa0, 0x8b, 0x48, + 0x36, 0x28, 0xad, 0x9e, 0xa6, 0x54, 0x25, 0x54, 0x52, 0x22, 0xeb, 0x56, 0x26, 0x66, 0x2d, 0x70, + 0x99, 0xa6, 0xfa, 0x14, 0x6f, 0x38, 0xc5, 0xe3, 0x87, 0xaf, 0x7d, 0x8d, 0x41, 0x63, 0x4b, 0x37, + 0xe1, 0x18, 0xe9, 0xfa, 0x5f, 0x35, 0xdc, 0x14, 0x1f, 0x47, 0x4d, 0x23, 0x7c, 0x72, 0x29, 0xa3, + 0x05, 0xbd, 0xbf, 0xd4, 0x5e, 0x12, 0x5e, 0x65, 0x63, 0x5f, 0xf9, 0xd9, 0xe3, 0x96, 0x0c, 0x7d, + 0x56, 0xd1, 0x4b, 0xfc, 0xd2, 0x14, 0xec, 0x46, 0xd0, 0x1a, 0xbb, 0x76, 0xa9, 0x6f, 0xfe, 0xe7, + 0x9d, 0xe9, 0x3f, 0x51, 0x5c, 0xaf, 0x51, 0x49, 0x2e, 0x1d, 0x2b, 0xbb, 0x63, 0xe7, 0x2d, 0xf4, + 0x40, 0x92, 0x7b, 0xdf, 0x92, 0x78, 0xbd, 0xb3, 0x67, 0x73, 0x8e, 0xa1, 0xb8, 0x77, 0x95, 0x43, + 0xb2, 0x2b, 0xa9, 0x64, 0xa3, 0xf0, 0xf6, 0xe9, 0xd9, 0x52, 0xef, 0x7a, 0xc5, 0x58, 0x07, 0xf5, + 0x80, 0xfb, 0xd4, 0xc1, 0xe3, 0xad, 0xf7, 0x9c, 0xbd, 0x3b, 0xb9, 0xa0, 0xbd, 0xa9, 0xad, 0x6d, + 0xac, 0x58, 0xe8, 0xec, 0x42, 0xee, 0xc0, 0x81, 0x03, 0x62, 0x2c, 0x20, 0xd2, 0x84, 0xff, 0x80, + 0xbc, 0x02, 0x5f, 0x84, 0x7e, 0x76, 0x2f, 0xe6, 0x23, 0x4c, 0x26, 0x24, 0x11, 0xd8, 0x3b, 0xfb, + 0x4d, 0xc4, 0x9a, 0x1d, 0x7f, 0x08, 0x80, 0xa4, 0xc2, 0x0e, 0x98, 0xd9, 0x09, 0x86, 0x74, 0xa2, + 0xc5, 0x9a, 0xac, 0xe8, 0x5a, 0xe0, 0x82, 0xeb, 0x72, 0xec, 0xe6, 0x20, 0xc3, 0x79, 0xd6, 0xef, + 0x70, 0x64, 0x47, 0x4f, 0xae, 0xbc, 0x1e, 0x88, 0x28, 0x0a, 0xdb, 0xcc, 0x99, 0xf6, 0x03, 0xe3, + 0x61, 0x92, 0xbb, 0x8a, 0xff, 0x23, 0x3d, 0xef, 0x19, 0x4a, 0xa8, 0xe6, 0x8c, 0x27, 0x2e, 0x60, + 0xe6, 0xdd, 0xc7, 0x08, 0x71, 0x61, 0xf7, 0x7e, 0x5e, 0x2c, 0xea, 0x00, 0x96, 0x61, 0x8e, 0xac, + 0x14, 0xad, 0xec, 0x73, 0xe2, 0xba, 0xbf, 0xf0, 0xc5, 0x68, 0x14, 0x5b, 0x75, 0x4a, 0xba, 0x8a, + 0xd6, 0x8b, 0xe2, 0xe4, 0x45, 0x9e, 0xcf, 0xef, 0x34, 0xa3, 0x55, 0xe3, 0x3d, 0x4b, 0x19, 0xd7, + 0x8d, 0x7a, 0x9f, 0x51, 0xe4, 0xf6, 0x16, 0xf4, 0xaa, 0x7f, 0x65, 0x17, 0x32, 0x05, 0x05, 0x82, + 0x73, 0x06, 0xc7, 0x87, 0x3d, 0xc4, 0x07, 0x54, 0xa5, 0x34, 0x0e, 0xd0, 0x3c, 0xbc, 0x92, 0x79, + 0x4f, 0x50, 0xa4, 0xe0, 0xa5, 0xaf, 0xda, 0xfc, 0xb9, 0x1b, 0x12, 0x38, 0x0e, 0x9a, 0x6c, 0x4e, + 0x6a, 0x3a, 0x67, 0x60, 0x3f, 0x54, 0x9a, 0x9a, 0xfe, 0x7e, 0xd0, 0x51, 0x71, 0x99, 0xa6, 0xd9, + 0xe6, 0x0b, 0x4a, 0x1a, 0x03, 0xce, 0xcb, 0xf6, 0x48, 0x93, 0xd1, 0x22, 0x06, 0x53, 0x82, 0x47, + 0x16, 0x6c, 0x67, 0xb1, 0xf4, 0x59, 0x15, 0x7e, 0xcc, 0x2f, 0x50, 0xbe, 0x0a, 0x46, 0x6b, 0x98, + 0xd0, 0x2c, 0xa6, 0x96, 0x8c, 0x90, 0x69, 0xab, 0x03, 0x4a, 0x2a, 0xab, 0xea, 0x2c, 0x32, 0xfa, + 0x53, 0x39, 0x82, 0x67, 0x72, 0xf4, 0x9a, 0xfc, 0x83, 0x07, 0xdd, 0xb6, 0xe3, 0xcb, 0x69, 0x27, + 0x16, 0x54, 0xf4, 0x4f, 0x9f, 0x0f, 0x00, 0x9b, 0xd4, 0x50, 0xa3, 0xf6, 0x4d, 0x4f, 0x0f, 0x46, + 0x29, 0x7c, 0x3e, 0x46, 0x8a, 0x86, 0x12, 0xab, 0xdc, 0x65, 0x4b, 0xa4, 0x2c, 0x79, 0x14, 0x63, + 0x87, 0x94, 0x61, 0x15, 0x4e, 0x5d, 0xab, 0xc3, 0x74, 0x83, 0xf6, 0x1f, 0xaa, 0x95, 0x43, 0x55, + 0xc2, 0x01, 0x86, 0x2f, 0x2a, 0xfd, 0x4a, 0x97, 0x15, 0x7b, 0x26, 0xb3, 0x78, 0xf3, 0x89, 0xd2, + 0x12, 0xe5, 0x78, 0xa4, 0x56, 0x36, 0x1d, 0x3f, 0xce, 0x77, 0x66, 0xdf, 0xeb, 0x82, 0xb5, 0xf9, + 0x1c, 0x1c, 0xec, 0x29, 0x85, 0xc3, 0xc0, 0xc8, 0xe3, 0xbf, 0x30, 0x84, 0x0a, 0x70, 0x74, 0x1b, + 0xb6, 0x77, 0xdb, 0x8a, 0x2c, 0xbe, 0x42, 0x13, 0xb1, 0x02, 0x4f, 0xff, 0xe9, 0x92, 0xa3, 0xb3, + 0x6c, 0xd3, 0x3f, 0xc0, 0xd0, 0x32, 0x57, 0x94, 0xb8, 0x7a, 0x8f, 0xa2, 0xef, 0xfc, 0x31, 0xe7, + 0x50, 0x09, 0x49, 0xe1, 0x4d, 0xd0, 0x09, 0x1e, 0x52, 0xb4, 0x8b, 0x01, 0xf2, 0xf8, 0x38, 0xb7, + 0xa9, 0xf3, 0xd9, 0xbe, 0x4a, 0x8e, 0x66, 0x2d, 0x2e, 0x3a, 0x7f, 0x36, 0x45, 0xef, 0xfa, 0x90, + 0x02, 0xb0, 0xfa, 0x19, 0x04, 0xf2, 0x41, 0x74, 0xcf, 0x6c, 0x5b, 0x6a, 0x40, 0x33, 0x30, 0xb9, + 0x0f, 0x3d, 0x62, 0xe9, 0x26, 0x69, 0xf1, 0x3e, 0x3c, 0x29, 0x84, 0xd7, 0xb1, 0xb1, 0x53, 0x0f, + 0x99, 0x80, 0xfe, 0x77, 0x6d, 0xd1, 0xdd, 0xe9, 0x37, 0xb9, 0x54, 0x45, 0xe6, 0x44, 0x9c, 0x9f, + 0x68, 0x5b, 0x45, 0x47, 0xdf, 0x5d, 0xa2, 0xe9, 0x67, 0x1c, 0x37, 0x10, 0xcb, 0xb7, 0x1a, 0xcc, + 0x58, 0x0f, 0xe8, 0x92, 0x01, 0x43, 0x23, 0xc6, 0xce, 0x7c, 0xeb, 0x57, 0xb1, 0x12, 0xaa, 0xef, + 0x82, 0x21, 0x9a, 0x28, 0x44, 0x1c, 0xf0, 0x75, 0xf6, 0xc0, 0x68, 0x69, 0x71, 0x2f, 0xb1, 0x17, + 0x57, 0xee, 0x50, 0x32, 0x64, 0x73, 0x4a, 0xae, 0x91, 0xae, 0xb6, 0xa7, 0xc2, 0xcb, 0x33, 0xb3, + 0x8b, 0x82, 0xea, 0x42, 0xdb, 0x9b, 0xbd, 0xd0, 0xc8, 0x27, 0xfc, 0xb9, 0x32, 0xc9, 0xe0, 0x06, + 0x5d, 0xd3, 0xd1, 0x02, 0x5b, 0x7b, 0x29, 0x96, 0x19, 0x52, 0x0f, 0xd9, 0x4f, 0x6f, 0x0a, 0x61, + 0xc6, 0x95, 0xe4, 0x85, 0x33, 0x42, 0xea, 0xa4, 0xba, 0x0e, 0x96, 0xc9, 0x1f, 0x49, 0xaf, 0x53, + 0x6e, 0xe4, 0x2b, 0x95, 0x37, 0x11, 0xa3, 0x88, 0xb2, 0x98, 0xa5, 0x1f, 0xc0, 0xe5, 0xa4, 0x95, + 0xa3, 0x0b, 0x80, 0x4c, 0x9d, 0x8a, 0x1e, 0x9f, 0x6e, 0x23, 0x61, 0x5d, 0x3a, 0x2d, 0x64, 0xe3, + 0x76, 0x50, 0xf1, 0xe0, 0x4f, 0x54, 0x22, 0xb9, 0x1f, 0x9a, 0x80, 0xfc, 0xdf, 0xf4, 0x69, 0xb3, + 0xa2, 0x11, 0xb1, 0x9e, 0x55, 0xd1, 0x3d, 0x0a, 0x4b, 0x98, 0x3e, 0x8e, 0x7e, 0x50, 0x48, 0x62, + 0xf6, 0xcd, 0x14, 0x24, 0xf0, 0xe0, 0x36, 0x69, 0x95, 0xae, 0x34, 0x58, 0xeb, 0xd7, 0xaa, 0x93, + 0xdd, 0xfd, 0x92, 0x03, 0xdb, 0xaf, 0xc4, 0x7f, 0xdd, 0x35, 0xe6, 0x13, 0xaa, 0x51, 0xb0, 0x05, + 0xb1, 0xf8, 0x46, 0xf7, 0x66, 0x5c, 0xeb, 0x97, 0x7c, 0xb3, 0x33, 0xc0, 0x26, 0x58, 0x36, 0x4f, + 0x93, 0x2c, 0xe1, 0x49, 0x02, 0xca, 0xa3, 0x97, 0x2e, 0x03, 0x8f, 0x61, 0xaa, 0x7d, 0xf3, 0xa1, + 0xbc, 0xa3, 0xa0, 0x06, 0x18, 0x38, 0x75, 0x75, 0x6a, 0x96, 0xab, 0x39, 0x23, 0xad, 0x2b, 0x9e, + 0xcd, 0x42, 0x74, 0xf8, 0xe6, 0x01, 0xfc, 0xf1, 0x51, 0x06, 0x23, 0xef, 0x8c, 0xab, 0xba, 0x67, + 0x8c, 0xf2, 0x88, 0x29, 0x86, 0x3a, 0x5c, 0xc3, 0x0e, 0xcf, 0xf6, 0x56, 0xb9, 0xc3, 0xb2, 0xc5, + 0xfb, 0x1b, 0x58, 0xfe, 0xaf, 0x8b, 0x67, 0x98, 0x77, 0x89, 0xaf, 0xda, 0xff, 0x64, 0x46, 0xaf, + 0x6a, 0xbe, 0x52, 0x62, 0xc4, 0x98, 0x8e, 0x52, 0x2e, 0x38, 0xcc, 0x2e, 0x63, 0x82, 0x20, 0x93, + 0x54, 0xb0, 0x03, 0x70, 0x46, 0xe5, 0x66, 0x7f, 0xf0, 0xf7, 0x0e, 0xe3, 0xf0, 0x37, 0x72, 0xfe, + 0xfe, 0x18, 0x51, 0x93, 0xc4, 0x39, 0xbf, 0xa1, 0xaf, 0x13, 0xcf, 0xff, 0x84, 0xb4, 0x2c, 0x52, + 0xaf, 0xc6, 0x53, 0x29, 0xe3, 0xd8, 0xe9, 0x64, 0x4e, 0xf5, 0x58, 0x90, 0xcd, 0xa9, 0x4f, 0x75, + 0x30, 0x6d, 0xf2, 0x2a, 0xe4, 0xbc, 0x53, 0x13, 0xfd, 0xf4, 0xdb, 0xaa, 0x09, 0xe5, 0xcb, 0x7a, + 0x97, 0xd0, 0x19, 0xcc, 0xe4, 0x8e, 0xc0, 0x28, 0xea, 0xef, 0xbd, 0xef, 0xc1, 0x4b, 0xd0, 0xd0, + 0x95, 0xb7, 0x2a, 0x0f, 0x2c, 0x30, 0xe7, 0xac, 0x96, 0x22, 0x89, 0x7c, 0xfe, 0xa6, 0xf6, 0xd4, + 0x46, 0xd2, 0xc3, 0x84, 0x68, 0x4e, 0x66, 0xfc, 0xba, 0x0a, 0x68, 0x43, 0xbc, 0xd7, 0xef, 0xcc, + 0x3e, 0xc6, 0xb8, 0xa7, 0x77, 0x33, 0x0f, 0x91, 0x0d, 0xd0, 0xe3, 0xe9, 0xcb, 0xd2, 0x17, 0x61, + 0xd7, 0x03, 0xee, 0xce, 0xce, 0xa4, 0xd8, 0x21, 0x14, 0xab, 0x0b, 0x8f, 0x8e, 0x89, 0x68, 0x23, + 0x0d, 0x39, 0x5c, 0x95, 0x6b, 0xaf, 0xa8, 0x3c, 0x11, 0xfe, 0x66, 0xeb, 0xa4, 0xfd, 0xeb, 0x2b, + 0x9c, 0xac, 0xa9, 0xc5, 0x29, 0x5b, 0x21, 0xd8, 0x50, 0x0c, 0x84, 0xc3, 0x3b, 0x0c, 0xbb, 0xbc, + 0xca, 0x08, 0x79, 0xf6, 0x2b, 0xc0, 0x2d, 0xa0, 0x71, 0x8a, 0xed, 0x55, 0x4c, 0xd7, 0xb1, 0x3f, + 0x29, 0xb1, 0xa7, 0x5b, 0xeb, 0xf4, 0x7b, 0xf7, 0xb9, 0x64, 0x8c, 0x8c, 0x04, 0x77, 0x78, 0x2c, + 0xee, 0x99, 0x81, 0x95, 0xee, 0x55, 0x34, 0x0e, 0xc0, 0x7a, 0x67, 0xb1, 0x83, 0x46, 0x31, 0x58, + 0xf6, 0x12, 0x8e, 0x6c, 0x24, 0x2a, 0xc1, 0xfc, 0xe7, 0x23, 0x0b, 0x21, 0x4a, 0x2a, 0xde, 0xf5, + 0xa4, 0xe9, 0x78, 0xde, 0x10, 0xef, 0x74, 0x7a, 0xa9, 0x1f, 0x49, 0xe5, 0x3f, 0x6d, 0xb5, 0xa5, + 0x5d, 0xaa, 0x11, 0x4f, 0x7d, 0x1e, 0x0e, 0xe1, 0xc3, 0x70, 0xb5, 0xb5, 0x9a, 0x62, 0x99, 0x91, + 0xb0, 0x9e, 0x22, 0x4a, 0x17, 0x67, 0xdf, 0xad, 0x1f, 0xa7, 0x18, 0xeb, 0x3c, 0x99, 0xef, 0x1c, + 0xbe, 0xed, 0xb2, 0x93, 0xd5, 0x93, 0xdf, 0xae, 0x61, 0x16, 0x6f, 0x42, 0x5b, 0x87, 0xb2, 0x33, + 0x08, 0x30, 0xcf, 0x5a, 0xc1, 0xc5, 0x86, 0x4f, 0xe8, 0x81, 0x31, 0xf4, 0x50, 0xa8, 0xe7, 0x30, + 0x24, 0x42, 0xf2, 0x4e, 0xa5, 0xa1, 0x03, 0x46, 0xb9, 0xd9, 0x50, 0xb9, 0xfa, 0xfb, 0xd4, 0x87, + 0xd0, 0xcb, 0x22, 0xdc, 0xcc, 0x5b, 0xad, 0xa7, 0x50, 0xaa, 0xb1, 0xed, 0x8b, 0xbf, 0x8a, 0xda, + 0x4b, 0x6a, 0xac, 0x34, 0xc4, 0xb5, 0xd1, 0x92, 0x17, 0xad, 0x4f, 0x2c, 0x43, 0x57, 0x2e, 0xf3, + 0x44, 0x52, 0x10, 0x78, 0x50, 0x31, 0x4b, 0x4e, 0x0f, 0x21, 0x95, 0x84, 0x65, 0x63, 0x8d, 0x05, + 0x68, 0x43, 0xe6, 0xf9, 0x01, 0xa6, 0xdb, 0xf1, 0xbe, 0xc4, 0x45, 0x66, 0x24, 0x15, 0xd3, 0x96, + 0xf6, 0xa7, 0x40, 0xe9, 0x36, 0xa7, 0x2a, 0x18, 0x44, 0x1c, 0x27, 0x06, 0x6f, 0xf0, 0x6f, 0xbb, + 0x2f, 0xf5, 0x47, 0x9f, 0xf9, 0xa4, 0x11, 0x22, 0xee, 0x14, 0x8d, 0xde, 0xe7, 0x4c, 0x9d, 0xad, + 0x05, 0x5d, 0xf7, 0xf1, 0x58, 0xf8, 0x49, 0xac, 0x7a, 0xa1, 0x7b, 0x79, 0xfd, 0x0a, 0xbd, 0xf8, + 0x86, 0x61, 0x14, 0x09, 0x4c, 0x14, 0x25, 0x57, 0x87, 0x4c, 0x85, 0x4b, 0x4e, 0x89, 0x52, 0xf9, + 0x82, 0xfe, 0x70, 0x3f, 0x21, 0x73, 0x44, 0xf5, 0x5a, 0x77, 0xf6, 0xda, 0x57, 0xe0, 0xe3, 0xed, + 0xb0, 0x3f, 0xb0, 0x34, 0x12, 0xdf, 0x24, 0x91, 0x2e, 0xe3, 0x2f, 0x75, 0xe7, 0x88, 0xfa, 0xb5, + 0xd1, 0x67, 0xc4, 0x75, 0xf8, 0xa8, 0x67, 0x70, 0x91, 0x3b, 0x4c, 0xcb, 0x1b, 0x99, 0x90, 0x99, + 0x0b, 0x45, 0x1c, 0xef, 0xeb, 0x90, 0x40, 0xb5, 0xc2, 0x63, 0xc6, 0x35, 0x8c, 0xdf, 0xd6, 0xfb, + 0x3d, 0x12, 0x23, 0x39, 0x6a, 0x47, 0x6a, 0x1d, 0xf7, 0x5b, 0x84, 0x0b, 0x1d, 0x45, 0x53, 0xa3, + 0x46, 0x33, 0x93, 0x73, 0x02, 0xb3, 0xef, 0xc3, 0x78, 0xfe, 0x28, 0xcc, 0x12, 0x60, 0x64, 0xb6, + 0xf8, 0x57, 0xf3, 0x8a, 0xc3, 0x3b, 0xdc, 0xf6, 0xb8, 0x4b, 0x72, 0x78, 0x68, 0xcc, 0x72, 0xf6, + 0xd9, 0x12, 0x9f, 0xe5, 0xdc, 0xb0, 0x9a, 0x5d, 0xb3, 0x2e, 0x47, 0x34, 0xdb, 0x86, 0x14, 0x64, + 0x7a, 0x05, 0x78, 0xde, 0xb2, 0xd9, 0x15, 0xa7, 0xa2, 0x80, 0x83, 0x06, 0x40, 0x0f, 0x80, 0xef, + 0xe9, 0xb8, 0xc0, 0x3e, 0x28, 0x1f, 0x87, 0x9a, 0x9a, 0xb1, 0x50, 0xc6, 0x08, 0x83, 0x59, 0xca, + 0xe7, 0x1f, 0x90, 0xeb, 0x11, 0x4d, 0x10, 0x5e, 0x20, 0x80, 0xa1, 0xdf, 0xdd, 0x30, 0x80, 0xb1, + 0xa2, 0x16, 0xcc, 0x2b, 0x7c, 0x13, 0x44, 0xbc, 0x36, 0xf6, 0x28, 0x31, 0xb8, 0xa1, 0xaf, 0x4c, + 0xb7, 0x4d, 0x2a, 0xdc, 0xb5, 0x6e, 0x4c, 0x81, 0xe9, 0xe4, 0x83, 0xdb, 0xbb, 0x1c, 0x65, 0x8f, + 0x8d, 0x4e, 0xfb, 0x02, 0xab, 0x81, 0x08, 0x56, 0x9f, 0x86, 0x0c, 0x16, 0xb9, 0xd1, 0xf6, 0x2c, + 0xbe, 0xbb, 0xa0, 0x3e, 0x9a, 0x73, 0x19, 0xf7, 0xfc, 0xfc, 0xfd, 0x7e, 0xd3, 0x13, 0xad, 0x78, + 0xdb, 0x3c, 0xac, 0xb2, 0xfb, 0xe9, 0xc8, 0xa5, 0xfc, 0x67, 0xd1, 0xa4, 0x3d, 0x67, 0x00, 0x52, + 0x40, 0x58, 0xa5, 0x82, 0xe6, 0x7b, 0x57, 0x10, 0x57, 0x71, 0x06, 0x71, 0x88, 0xdd, 0xd0, 0xf5, + 0x9f, 0x20, 0x2a, 0x7c, 0x73, 0xdf, 0x68, 0xda, 0xe5, 0x97, 0xe3, 0x35, 0x3b, 0xb8, 0x35, 0xed, + 0x0b, 0xa4, 0x3a, 0x44, 0x0c, 0x18, 0x7d, 0x94, 0x98, 0x80, 0xdf, 0x41, 0xac, 0xd2, 0xc3, 0xd6, + 0xa1, 0xfa, 0xce, 0x82, 0x95, 0x42, 0x59, 0x33, 0x3d, 0x81, 0x9f, 0xe9, 0x3c, 0xfa, 0xfe, 0x05, + 0x61, 0x6f, 0xde, 0xa1, 0x0f, 0x86, 0x1a, 0xcb, 0x13, 0x3d, 0x94, 0x92, 0x27, 0x44, 0xa6, 0x55, + 0xb3, 0x0e, 0x01, 0x26, 0x7e, 0x62, 0x82, 0xc2, 0x88, 0x05, 0x09, 0xac, 0xda, 0xa1, 0x09, 0x60, + 0x25, 0xda, 0x86, 0x96, 0x54, 0xfa, 0xf8, 0x38, 0x05, 0x67, 0x1c, 0x52, 0x6a, 0x03, 0x1a, 0x54, + 0x21, 0x50, 0x3f, 0x84, 0xbb, 0x2c, 0x3a, 0x40, 0x2b, 0x9b, 0xeb, 0x82, 0x25, 0x79, 0x4e, 0x37, + 0x19, 0x07, 0x6b, 0x71, 0x8b, 0xaa, 0x6f, 0x32, 0x29, 0x31, 0x52, 0xc6, 0x7b, 0xec, 0xfe, 0xbe, + 0xf8, 0x6e, 0x9b, 0x73, 0x13, 0xd7, 0xa9, 0xb8, 0x9f, 0x40, 0x38, 0x3e, 0x68, 0x7a, 0xd8, 0x82, + 0xe2, 0xe0, 0x8a, 0xac, 0x69, 0x85, 0x90, 0x2c, 0xbd, 0x7a, 0x8e, 0xa1, 0xef, 0x47, 0x09, 0x8d, + 0xb9, 0x1a, 0x90, 0xa5, 0x22, 0xc1, 0xa8, 0xe5, 0x92, 0x28, 0xd7, 0xf5, 0x8a, 0x95, 0x83, 0x0c, + 0x97, 0x16, 0x1d, 0xc8, 0x1b, 0x40, 0x80, 0x2b, 0x7f, 0x4b, 0x76, 0xe7, 0x6c, 0x69, 0x99, 0xd3, + 0x75, 0xee, 0xb0, 0x00, 0xb6, 0xa8, 0x87, 0x85, 0xf5, 0x63, 0x4e, 0xc4, 0xfc, 0x4c, 0x2e, 0x3c, + 0x23, 0x8f, 0xa6, 0x79, 0x97, 0x07, 0xe4, 0x80, 0xf8, 0xde, 0xf5, 0x46, 0x60, 0x62, 0xd7, 0x5d, + 0x23, 0x7b, 0xe4, 0xbd, 0x06, 0x66, 0x2a, 0x16, 0x31, 0x55, 0x04, 0xde, 0x5c, 0x14, 0x8b, 0x25, + 0x0a, 0x0e, 0x14, 0xe6, 0xf3, 0xb8, 0x88, 0xf9, 0xc0, 0x5e, 0xeb, 0xef, 0x41, 0x69, 0x2a, 0x1c, + 0x2e, 0x05, 0x1c, 0x88, 0x2d, 0xd5, 0x38, 0x48, 0xe6, 0x0c, 0x17, 0x58, 0xbb, 0xc9, 0xd8, 0xd7, + 0xa3, 0xbc, 0x63, 0x5b, 0x9c, 0xa9, 0xf1, 0x99, 0x1e, 0xcb, 0x56, 0x9c, 0xfb, 0x17, 0xe0, 0x64, + 0x78, 0x3d, 0xd5, 0x0b, 0x92, 0x29, 0x8a, 0xd7, 0x73, 0xbd, 0x16, 0xc6, 0x7d, 0x41, 0x52, 0xb2, + 0x46, 0x04, 0xc7, 0xbc, 0x59, 0xe2, 0x33, 0xb8, 0x15, 0x06, 0x81, 0x85, 0x66, 0x38, 0x56, 0x33, + 0xf6, 0x50, 0xc5, 0x11, 0xd6, 0xec, 0x4a, 0x45, 0x4f, 0x05, 0x21, 0x9a, 0x8b, 0xc2, 0xb9, 0x5f, + 0x54, 0x7e, 0x2a, 0x44, 0xa6, 0xd4, 0x5a, 0xd9, 0x93, 0x20, 0x87, 0xbc, 0xc9, 0x80, 0x3a, 0x46, + 0x99, 0x54, 0x57, 0x7a, 0x8a, 0xb5, 0x11, 0xbf, 0x9c, 0xa7, 0xc3, 0xac, 0xea, 0xb1, 0x54, 0xd3, + 0xe7, 0x2e, 0x31, 0xc0, 0x0e, 0x48, 0x8e, 0xb9, 0x31, 0xd3, 0x2a, 0xf9, 0xdf, 0xa7, 0xcd, 0x99, + 0x48, 0xc1, 0x29, 0x8d, 0xe1, 0x49, 0x58, 0xd7, 0xd4, 0x1d, 0x61, 0xf6, 0xc0, 0xca, 0x47, 0x6f, + 0x6a, 0x55, 0x49, 0xf3, 0xe0, 0xe0, 0x4c, 0xf1, 0xe5, 0x32, 0xc0, 0x4c, 0xe2, 0xac, 0x1f, 0xea, + 0x4f, 0xf3, 0x8d, 0xe1, 0x4d, 0xf6, 0xf0, 0xf4, 0x6c, 0x34, 0x17, 0x17, 0xdd, 0x0d, 0xa2, 0x02, + 0xad, 0xcf, 0xc7, 0x15, 0x54, 0xdc, 0xeb, 0x04, 0x26, 0xf4, 0x01, 0xa9, 0x33, 0x8f, 0x8a, 0xe1, + 0x66, 0xfe, 0xb6, 0x2b, 0x95, 0xcd, 0x1f, 0x62, 0x81, 0x54, 0x70, 0x68, 0x88, 0x53, 0x89, 0x69, + 0x4a, 0x31, 0xcc, 0x48, 0x8d, 0xaf, 0x83, 0x7f, 0xf9, 0xa8, 0x7f, 0x63, 0x9f, 0x0c, 0x24, 0xc7, + 0x9f, 0x21, 0x8a, 0x0d, 0xb4, 0xcd, 0xfe, 0xd4, 0x8a, 0xc5, 0x3d, 0xf5, 0x17, 0x73, 0x44, 0x40, + 0xee, 0x08, 0x94, 0x0d, 0x56, 0x78, 0xae, 0x00, 0x61, 0xa4, 0x94, 0xc8, 0xd1, 0x4c, 0xbd, 0xdb, + 0x27, 0xf8, 0x05, 0x84, 0x27, 0xaf, 0x88, 0xbd, 0x41, 0x97, 0x82, 0x4e, 0x07, 0x11, 0xc0, 0xf2, + 0xff, 0xa4, 0x51, 0x7f, 0x86, 0x8e, 0xe8, 0x72, 0x93, 0xb2, 0x24, 0xbc, 0x60, 0xd0, 0xbf, 0xad, + 0x6c, 0xaf, 0xa7, 0x8c, 0x04, 0x50, 0x1d, 0x83, 0xac, 0x7c, 0x25, 0xf6, 0x07, 0x70, 0xd8, 0xe2, + 0x8e, 0x13, 0x5d, 0x22, 0x4e, 0x3e, 0xec, 0xf7, 0xf8, 0x93, 0x40, 0x1e, 0x8a, 0xed, 0x48, 0x05, + 0x1c, 0xe4, 0x8f, 0xa5, 0x56, 0x82, 0x53, 0xf7, 0x18, 0x76, 0x4e, 0xa4, 0x2b, 0xde, 0x64, 0xcf, + 0xc8, 0x39, 0x33, 0x52, 0x8a, 0x35, 0x78, 0xd9, 0x8e, 0x72, 0x1a, 0x86, 0x58, 0x8c, 0xba, 0x8d, + 0xe2, 0x8e, 0xab, 0x8e, 0xbd, 0x9e, 0x33, 0x41, 0x40, 0x42, 0x76, 0x45, 0x91, 0x2c, 0x79, 0xfc, + 0x32, 0xa9, 0x76, 0x2e, 0x42, 0x99, 0xa2, 0x7a, 0xbc, 0xe8, 0xcd, 0x64, 0xb9, 0x00, 0x87, 0xb1, + 0xe3, 0x48, 0xa4, 0x25, 0x8d, 0x6a, 0x5b, 0xf0, 0x89, 0xf8, 0x24, 0x11, 0x1a, 0x2f, 0x2d, 0x99, + 0xf8, 0x72, 0x38, 0xd8, 0xec, 0xef, 0xfe, 0x13, 0x9f, 0x5e, 0x3b, 0x0b, 0xd6, 0x83, 0xb7, 0x03, + 0xb8, 0x7b, 0xe6, 0x34, 0xa7, 0x0b, 0xc3, 0x9d, 0x48, 0xdf, 0x8f, 0xe1, 0xc3, 0x62, 0x6b, 0xd4, + 0xb1, 0x6c, 0xff, 0xf5, 0x45, 0xe4, 0xf5, 0x0d, 0xda, 0xc8, 0x96, 0x02, 0x30, 0x93, 0xcb, 0x76, + 0x40, 0xfe, 0xea, 0x25, 0x66, 0xe8, 0xde, 0x30, 0x90, 0xed, 0x46, 0x56, 0x5c, 0xcf, 0x0d, 0x2a, + 0xd3, 0x00, 0xa4, 0xfd, 0x84, 0x48, 0x5d, 0x5d, 0xe5, 0x8e, 0x45, 0x6f, 0x1d, 0xb4, 0x3d, 0x88, + 0x92, 0x47, 0x3e, 0xfc, 0x97, 0x21, 0x3f, 0x03, 0x14, 0xef, 0x1e, 0xc4, 0xe5, 0x76, 0x87, 0x33, + 0x35, 0x1b, 0x2d, 0xfe, 0x4f, 0xf0, 0x0f, 0xdf, 0x50, 0xcb, 0x4a, 0xb1, 0x1d, 0xed, 0x87, 0x14, + 0x18, 0xa3, 0x6b, 0xc2, 0xd9, 0x2c, 0x3d, 0x69, 0xdf, 0xd5, 0x07, 0x10, 0x55, 0x8a, 0xab, 0xe5, + 0xa7, 0x26, 0x27, 0xa2, 0xe6, 0xb3, 0xac, 0x75, 0x77, 0x37, 0xb8, 0xf3, 0xcb, 0x39, 0xa7, 0x98, + 0xe3, 0x3a, 0x1d, 0x3b, 0xce, 0xcb, 0x51, 0x71, 0x5e, 0xfd, 0x98, 0x72, 0xa5, 0x6b, 0xec, 0x16, + 0x7a, 0x8c, 0xec, 0xa4, 0xfa, 0x6e, 0xf3, 0x75, 0xac, 0x32, 0xb7, 0x37, 0x16, 0xba, 0xf3, 0x78, + 0xf3, 0x4b, 0xb2, 0x0f, 0xec, 0x3a, 0xab, 0x52, 0x25, 0xc6, 0xcc, 0x6f, 0xc1, 0xb1, 0xc9, 0x82, + 0xc2, 0x34, 0xd4, 0xd9, 0x11, 0x0b, 0x67, 0x7e, 0x72, 0x30, 0xd6, 0x40, 0xf4, 0xa4, 0xdc, 0xe7, + 0x21, 0x5c, 0x3e, 0x25, 0xd4, 0xd4, 0x74, 0xea, 0x5a, 0xb8, 0x0a, 0x6a, 0x15, 0x1c, 0xa9, 0x96, + 0xd8, 0x77, 0x23, 0x00, 0x73, 0xad, 0x26, 0x8a, 0x34, 0x2f, 0x5c, 0x08, 0x8b, 0x66, 0xa1, 0x47, + 0x53, 0x1d, 0xd6, 0x31, 0x49, 0xca, 0x72, 0xd8, 0x9f, 0x41, 0x0a, 0x91, 0xe7, 0xad, 0x97, 0xc9, + 0x58, 0xe2, 0x31, 0x15, 0x01, 0xbd, 0x53, 0xf4, 0x3a, 0xb1, 0x1f, 0xef, 0xce, 0x7d, 0xb0, 0x47, + 0xb9, 0x66, 0xf3, 0x12, 0x80, 0xfb, 0x81, 0x7d, 0xba, 0x87, 0xca, 0x55, 0xcf, 0x60, 0x40, 0xdf, + 0xad, 0xf9, 0x20, 0xbe, 0x04, 0x44, 0x32, 0x34, 0x71, 0xdc, 0x9b, 0x8f, 0xa0, 0x8b, 0xf8, 0x48, + 0xbe, 0x35, 0xc9, 0xa9, 0x7b, 0x79, 0x81, 0x3e, 0xee, 0x14, 0x5b, 0x91, 0xa4, 0xa8, 0xbe, 0x27, + 0x2b, 0x85, 0xdc, 0xf4, 0x7d, 0xf5, 0x09, 0xbe, 0x9e, 0x70, 0x18, 0xb1, 0x03, 0xde, 0x95, 0x92, + 0x49, 0xd1, 0xc8, 0xd5, 0xbf, 0x88, 0xd3, 0xd8, 0x9c, 0x09, 0xfe, 0x2d, 0x91, 0x61, 0x37, 0xaa, + 0x8c, 0x9c, 0x6a, 0x73, 0x48, 0xbc, 0x36, 0xd2, 0x58, 0x38, 0x9b, 0xdc, 0x51, 0x04, 0xdd, 0xe5, + 0xce, 0x64, 0x77, 0x3c, 0x08, 0x40, 0x35, 0x92, 0xfa, 0x74, 0xb9, 0xd6, 0xeb, 0xcf, 0x85, 0xf9, + 0x9a, 0xf5, 0x29, 0xa9, 0x22, 0xb7, 0xd7, 0x8b, 0xd8, 0xc6, 0x9f, 0xdb, 0xd1, 0x34, 0x38, 0x3f, + 0xa8, 0xfd, 0xe5, 0x26, 0xb5, 0x3a, 0x5c, 0x30, 0xcc, 0xca, 0x33, 0x5d, 0xc5, 0x0f, 0x36, 0x0c, + 0xe6, 0xa9, 0x2b, 0xe7, 0x7c, 0x9a, 0xcc, 0x3d, 0x87, 0xbd, 0x62, 0x81, 0x0d, 0xf7, 0x9c, 0xc2, + 0x0e, 0xb9, 0xec, 0x39, 0xc0, 0xa4, 0xf2, 0x61, 0x67, 0x4f, 0x16, 0x2d, 0x2b, 0x8f, 0xdb, 0xb3, + 0xea, 0x2d, 0x62, 0x84, 0x2c, 0xb3, 0x1f, 0xb7, 0x4b, 0x5b, 0xff, 0x83, 0x30, 0x50, 0x1f, 0xd8, + 0xc5, 0x73, 0x65, 0x14, 0x84, 0x9a, 0xc3, 0xee, 0xda, 0xba, 0xc9, 0xc5, 0xe7, 0x6e, 0x7d, 0xb6, + 0xaf, 0xb9, 0xba, 0x8b, 0x87, 0x71, 0x00, 0x84, 0x1a, 0xd8, 0x85, 0xa1, 0xb5, 0x78, 0xe5, 0xd7, + 0x08, 0x70, 0xa3, 0xef, 0x2d, 0x81, 0xe1, 0x5e, 0xb1, 0xe4, 0x84, 0x70, 0x05, 0x6d, 0x2e, 0x3a, + 0x7e, 0x8d, 0x08, 0x04, 0x81, 0x37, 0xd0, 0xf8, 0x24, 0x13, 0x66, 0xd7, 0xef, 0xe9, 0x7b, 0xc7, + 0x01, 0xb1, 0x89, 0xcc, 0xf6, 0x09, 0x07, 0xdd, 0x7b, 0xf1, 0x29, 0x34, 0xd3, 0x3e, 0xbf, 0x44, + 0x66, 0x52, 0xc8, 0x62, 0x65, 0xf9, 0x7f, 0x7d, 0x1b, 0x58, 0xdb, 0xcc, 0xea, 0x78, 0x85, 0x45, + 0x30, 0x1b, 0xb7, 0x57, 0x46, 0xf6, 0x22, 0x4f, 0x59, 0x02, 0x2a, 0xbf, 0xa8, 0x8d, 0xa7, 0xa8, + 0x9d, 0x20, 0x9d, 0x63, 0x3a, 0xdb, 0xe3, 0x74, 0xcd, 0x73, 0x43, 0x6f, 0xda, 0x1c, 0x94, 0xac, + 0x24, 0x2f, 0xc8, 0xef, 0x0e, 0xff, 0xe4, 0xf2, 0xc6, 0x76, 0xd0, 0xe1, 0xbe, 0x09, 0xc2, 0xcb, + 0xfb, 0x43, 0x9c, 0xa1, 0xf6, 0x66, 0x1d, 0x0a, 0xdc, 0xf7, 0x1d, 0xc3, 0x18, 0x36, 0xd5, 0x9f, + 0x7b, 0xd0, 0xfa, 0xd2, 0xad, 0x55, 0x98, 0xe9, 0x8a, 0x7b, 0x80, 0xf4, 0xea, 0xba, 0xde, 0xf1, + 0x08, 0xb2, 0xf2, 0xaf, 0x27, 0x1a, 0xf3, 0xe0, 0xef, 0x00, 0x10, 0x7f, 0xd1, 0xd5, 0x32, 0x10, + 0x25, 0x95, 0x93, 0xf3, 0xd0, 0x9e, 0x31, 0xad, 0x26, 0x32, 0x53, 0xe2, 0x4e, 0x64, 0x69, 0xad, + 0xa3, 0xf3, 0xd3, 0x92, 0x94, 0x72, 0xd4, 0xb3, 0xaf, 0x89, 0xf6, 0x02, 0x69, 0x8a, 0x4d, 0xf2, + 0x91, 0x06, 0xbf, 0xf1, 0x66, 0x7f, 0xc3, 0x87, 0x9c, 0xec, 0x45, 0x42, 0x0c, 0x40, 0x79, 0x0e, + 0xbe, 0x43, 0xe6, 0x11, 0xe9, 0x0b, 0x69, 0x0d, 0x89, 0x07, 0xef, 0xf7, 0x59, 0x43, 0x81, 0xe3, + 0xfb, 0xee, 0x59, 0xb0, 0x48, 0x67, 0x64, 0x8e, 0x06, 0x24, 0xc1, 0x08, 0xe0, 0xb2, 0xb5, 0x1f, + 0x48, 0xb9, 0x6e, 0x9d, 0x6b, 0x5c, 0xf8, 0x9c, 0xd6, 0x18, 0xbd, 0xc3, 0x21, 0x78, 0xda, 0x88, + 0x0a, 0x59, 0xb1, 0xcb, 0x7d, 0xba, 0x7a, 0xe5, 0x1f, 0x8e, 0xb1, 0x2f, 0x20, 0x4b, 0xde, 0x5c, + 0xfe, 0x0d, 0xfe, 0x4c, 0x5f, 0x12, 0x41, 0xd4, 0xc8, 0xb2, 0xdb, 0xa5, 0xa1, 0x3b, 0xc2, 0x05, + 0xbc, 0x27, 0x55, 0x47, 0xef, 0x67, 0xd7, 0x2b, 0x94, 0x5b, 0x2d, 0x0c, 0xda, 0x92, 0xe1, 0x37, + 0x80, 0xea, 0x3a, 0x5e, 0xb6, 0x45, 0xef, 0x5f, 0xb0, 0xec, 0xe5, 0x45, 0x06, 0x05, 0xc4, 0x83, + 0x75, 0x3c, 0x58, 0xea, 0xfc, 0xe2, 0x53, 0xa6, 0x6b, 0xc9, 0x9e, 0x05, 0xbd, 0x85, 0x5d, 0x19, + 0xb0, 0xd4, 0xa1, 0x00, 0xd3, 0xde, 0x5d, 0xfe, 0x0e, 0x57, 0x48, 0xd4, 0x87, 0xde, 0xd9, 0xf4, + 0x40, 0x24, 0xeb, 0xe4, 0xec, 0x6d, 0xcb, 0xcc, 0xf1, 0xd8, 0xa3, 0xc8, 0x12, 0x9b, 0x0a, 0xc6, + 0x85, 0xec, 0x63, 0x48, 0xcb, 0x0e, 0x91, 0x30, 0x1e, 0x45, 0xb3, 0x2a, 0xc7, 0xe0, 0xb5, 0x8f, + 0x93, 0xf0, 0xbf, 0xd5, 0x9e, 0x83, 0xbd, 0x51, 0x9a, 0xda, 0x11, 0xe0, 0xb0, 0xfe, 0x19, 0xd9, + 0xec, 0xed, 0xa7, 0x1d, 0xf2, 0x41, 0xc9, 0x27, 0xaa, 0xef, 0x41, 0x1c, 0x79, 0xb9, 0x65, 0x20, + 0x64, 0x54, 0x9b, 0xd6, 0xdb, 0xee, 0x5e, 0x3e, 0xa1, 0x0f, 0x4a, 0x89, 0xac, 0x2c, 0xdf, 0x20, + 0x35, 0x83, 0xf2, 0x15, 0x39, 0xf0, 0xb5, 0xc5, 0xc6, 0x27, 0x9c, 0x23, 0x57, 0xbe, 0x31, 0x5e, + 0x7c, 0xfd, 0x25, 0x3a, 0xac, 0xca, 0x80, 0xed, 0x73, 0x27, 0x73, 0x3d, 0xe4, 0xec, 0xc1, 0xf4, + 0x7c, 0x41, 0xcd, 0x92, 0xc4, 0x05, 0x09, 0xaf, 0x7c, 0x3c, 0x51, 0xd1, 0x01, 0x46, 0x26, 0x08, + 0xfb, 0x44, 0xca, 0x8b, 0x19, 0xd8, 0x53, 0x46, 0x45, 0x3d, 0xca, 0x7a, 0x3d, 0x7a, 0xb6, 0x50, + 0xfa, 0x3f, 0x1a, 0xd0, 0x3d, 0x53, 0xb5, 0x0f, 0xfc, 0xa5, 0x0f, 0x8a, 0xdd, 0x64, 0x80, 0x17, + 0x73, 0xcf, 0xd4, 0x16, 0x41, 0x29, 0xee, 0xbb, 0x6d, 0x10, 0xd4, 0xd7, 0x90, 0xde, 0x78, 0x3b, + 0xe2, 0x46, 0xdc, 0xe9, 0x37, 0xf9, 0x32, 0xc5, 0xf1, 0xe0, 0x9c, 0x9d, 0x45, 0x46, 0x47, 0xd7, + 0xc7, 0x00, 0x04, 0xeb, 0xf5, 0xd7, 0x8a, 0x05, 0xc5, 0x6c, 0x8c, 0x9b, 0x03, 0x4d, 0x49, 0xca, + 0xc7, 0x61, 0x9f, 0xdb, 0x56, 0xee, 0x6b, 0xf2, 0x9f, 0x98, 0xd4, 0xce, 0xb6, 0x59, 0x51, 0x1f, + 0x3e, 0x41, 0xe1, 0xc0, 0x3e, 0x38, 0xd6, 0x86, 0x62, 0xe6, 0x58, 0xc6, 0x7a, 0xda, 0x7c, 0xe8, + 0x7a, 0x8a, 0xdc, 0xdb, 0x58, 0x67, 0x49, 0x81, 0x0b, 0x9a, 0x97, 0x22, 0xba, 0xcd, 0xb6, 0xe3, + 0x41, 0x80, 0x68, 0x5c, 0x0d, 0x8f, 0x0f, 0xb0, 0x0e, 0xab, 0xc6, 0xb7, 0x29, 0x0f, 0x07, 0x3c, + 0x88, 0x1b, 0x41, 0x5d, 0x33, 0x2e, 0xa7, 0x2d, 0x1d, 0xae, 0x6b, 0x5d, 0x37, 0x48, 0x2e, 0xa3, + 0x82, 0xd5, 0xc9, 0x28, 0xbc, 0x72, 0x7c, 0xad, 0x9a, 0x7d, 0xe0, 0x24, 0x31, 0x36, 0x8b, 0x49, + 0x33, 0x44, 0x5a, 0xc8, 0x26, 0x82, 0x5f, 0x21, 0xf0, 0xdf, 0x2e, 0x97, 0x8d, 0x0a, 0x01, 0xa9, + 0xec, 0x00, 0x8d, 0xbb, 0x9c, 0xff, 0x0b, 0x77, 0x99, 0xab, 0x1d, 0x29, 0xbe, 0x62, 0x6f, 0x1d, + 0x68, 0xb4, 0x00, 0x61, 0xa9, 0x90, 0x55, 0x89, 0xd9, 0x31, 0x5d, 0x80, 0xd9, 0xb7, 0x53, 0xbe, + 0xd3, 0x29, 0x1c, 0x75, 0x7f, 0x4c, 0x56, 0x73, 0x7f, 0xb5, 0x42, 0xfb, 0xb6, 0xc1, 0x2d, 0x86, + 0xd6, 0x73, 0xa1, 0xa3, 0xe1, 0xe6, 0x8e, 0x47, 0x10, 0xbc, 0xce, 0xb2, 0x85, 0xef, 0xfd, 0x33, + 0x1f, 0x18, 0xe9, 0x87, 0x36, 0xc2, 0x5e, 0x22, 0xb8, 0x62, 0x67, 0x33, 0xbc, 0xc8, 0x46, 0x53, + 0x55, 0xd7, 0xef, 0x82, 0x98, 0xb7, 0x21, 0x12, 0x04, 0xd3, 0x0f, 0x80, 0x52, 0xe0, 0x35, 0xa7, + 0x04, 0xc2, 0x47, 0x6a, 0xc8, 0xdc, 0xda, 0x9f, 0xe3, 0x18, 0x3c, 0x5d, 0x97, 0x31, 0x3b, 0x45, + 0x56, 0xdc, 0xe3, 0x82, 0xb6, 0x7d, 0xcf, 0x60, 0x2b, 0xbe, 0x6a, 0x8b, 0xcc, 0x68, 0x55, 0xfb, + 0x57, 0x7b, 0x80, 0x78, 0x07, 0xdd, 0xae, 0xf6, 0xb7, 0xac, 0x77, 0x9c, 0x71, 0x12, 0xbe, 0xf5, + 0xf8, 0xda, 0xd2, 0xfd, 0x4f, 0x2d, 0xe3, 0xa0, 0xb2, 0xde, 0x67, 0x61, 0x4e, 0x79, 0xd0, 0xa1, + 0x42, 0xc3, 0x0b, 0x27, 0x70, 0xd8, 0x2f, 0xaa, 0x28, 0x96, 0x65, 0x6e, 0x61, 0xe2, 0x2f, 0x52, + 0xc7, 0x96, 0x4d, 0x96, 0x96, 0xeb, 0x37, 0xcb, 0xdd, 0x90, 0xab, 0xc7, 0x74, 0xd0, 0x09, 0xcc, + 0x25, 0x52, 0x88, 0xee, 0x91, 0xd5, 0xdc, 0xcc, 0x20, 0x51, 0x24, 0x22, 0x1c, 0x8c, 0xad, 0xc2, + 0x85, 0x36, 0x6b, 0xcc, 0x07, 0x7e, 0x17, 0x2b, 0xaf, 0x98, 0x30, 0x3c, 0xb2, 0xf4, 0x4b, 0x0b, + 0x57, 0x10, 0x2e, 0x35, 0x64, 0x16, 0xf0, 0x3a, 0xf6, 0xab, 0x6f, 0x5f, 0x0a, 0x2b, 0xa7, 0x4b, + 0xec, 0xf2, 0x02, 0x2b, 0x0a, 0xcf, 0x35, 0xd1, 0xf0, 0xc3, 0x4b, 0x0c, 0x8e, 0x1b, 0x08, 0xcf, + 0x45, 0xf1, 0x98, 0x8c, 0xf7, 0x60, 0x60, 0xf6, 0x69, 0x22, 0x49, 0x70, 0x48, 0xbe, 0x2c, 0xb2, + 0xba, 0xfd, 0x92, 0x1f, 0xfd, 0xfd, 0xdb, 0x93, 0x73, 0x6d, 0xb2, 0x7f, 0xe8, 0xe3, 0x4c, 0xa8, + 0x7f, 0x12, 0x9a, 0xde, 0xe3, 0xee, 0x30, 0xc8, 0xcc, 0xcb, 0xa2, 0x99, 0xcf, 0x7e, 0xa2, 0x9f, + 0xba, 0x1f, 0xd6, 0x38, 0x08, 0xc3, 0x45, 0xbd, 0x55, 0x47, 0x69, 0xbd, 0xd2, 0x42, 0x69, 0xf3, + 0xb3, 0x68, 0xb7, 0xe5, 0x58, 0x4d, 0xb7, 0xd4, 0x47, 0x32, 0x45, 0xa1, 0x8c, 0x46, 0x76, 0xa2, + 0x1d, 0x7a, 0x80, 0x1f, 0xde, 0xbd, 0x15, 0x96, 0x8a, 0xf9, 0xa6, 0xdb, 0x62, 0x98, 0x49, 0xef, + 0xa7, 0x35, 0x4a, 0x19, 0x91, 0x23, 0x66, 0xa9, 0x3c, 0x64, 0x4c, 0x1f, 0xde, 0x93, 0x6e, 0x2b, + 0x0e, 0xb1, 0xca, 0xa6, 0x2e, 0x3c, 0x24, 0x46, 0x88, 0x31, 0xe3, 0x11, 0x5b, 0x50, 0x63, 0xb2, + 0x87, 0xca, 0x8c, 0x89, 0x09, 0x81, 0x52, 0x32, 0xc1, 0x5c, 0xa9, 0xbe, 0x1b, 0x77, 0xad, 0x67, + 0x4d, 0xd2, 0x64, 0x24, 0x32, 0x9a, 0x00, 0xcf, 0xad, 0xd2, 0x04, 0x79, 0xde, 0x34, 0xb8, 0xdd, + 0xef, 0x12, 0xaa, 0x35, 0x35, 0xa8, 0xca, 0x5e, 0xf3, 0x0b, 0xe3, 0x0f, 0xb4, 0x79, 0x67, 0xf2, + 0x0f, 0x52, 0xa2, 0xe1, 0x12, 0x57, 0xa0, 0x33, 0xf3, 0xb8, 0x75, 0xcc, 0xd2, 0x29, 0xed, 0x21, + 0x19, 0x41, 0xda, 0x67, 0x39, 0x60, 0x54, 0x2d, 0x51, 0x78, 0xc5, 0x34, 0x3b, 0x4b, 0xd5, 0x0a, + 0x26, 0xa8, 0xde, 0x30, 0x3b, 0x60, 0xf1, 0x5b, 0x99, 0xff, 0xa3, 0x06, 0x71, 0x98, 0xca, 0xfa, + 0x6f, 0x23, 0x74, 0x4d, 0x19, 0x49, 0xb2, 0x9b, 0x04, 0x68, 0x98, 0x03, 0xa8, 0x75, 0x5f, 0x44, + 0x14, 0xe9, 0xa0, 0xa7, 0x23, 0x01, 0x3b, 0x77, 0x3e, 0xa1, 0x83, 0xc8, 0x44, 0xe6, 0x20, 0xab, + 0x28, 0x48, 0xa1, 0xa0, 0xf0, 0x41, 0xc1, 0x83, 0x03, 0x62, 0x4e, 0x9f, 0x41, 0xfc, 0xb0, 0x93, + 0x86, 0xc2, 0x12, 0x72, 0x42, 0xaf, 0xd3, 0x72, 0x6d, 0x89, 0xad, 0x54, 0xc9, 0xba, 0x29, 0xd7, + 0x0e, 0x9d, 0x58, 0x3a, 0xb0, 0x85, 0x5d, 0x09, 0x1d, 0x1f, 0x03, 0xed, 0x9c, 0xce, 0xf3, 0x00, + 0x42, 0xcb, 0xca, 0x06, 0x97, 0xff, 0xb6, 0xbc, 0x9b, 0xdc, 0xd5, 0x36, 0xf8, 0xd8, 0xd2, 0xc7, + 0xfd, 0xf6, 0x07, 0x3c, 0x60, 0x12, 0x6c, 0x6d, 0xa3, 0x7d, 0xdd, 0x55, 0x7b, 0xf2, 0x31, 0xc3, + 0x53, 0x8e, 0x30, 0xcc, 0x43, 0x08, 0xe6, 0x7a, 0x33, 0xca, 0xae, 0x24, 0x70, 0x80, 0x86, 0x59, + 0xa2, 0x7c, 0x37, 0xc1, 0x2d, 0x54, 0x2b, 0x49, 0xc4, 0x5c, 0x7e, 0x47, 0xb7, 0xac, 0xac, 0x69, + 0xa0, 0x22, 0x9b, 0xa0, 0xdc, 0xfa, 0x3f, 0xfe, 0xa4, 0x95, 0xca, 0x72, 0xa6, 0xdc, 0x84, 0x52, + 0x51, 0xcb, 0x12, 0x72, 0xb8, 0xd5, 0x60, 0x95, 0x41, 0x91, 0x70, 0x6c, 0x68, 0x7c, 0xac, 0xa2, + 0x0f, 0xe1, 0x3e, 0xc7, 0x22, 0x31, 0xba, 0x1b, 0x6d, 0x24, 0xa6, 0x2f, 0xf1, 0x75, 0xf3, 0x66, + 0x13, 0x28, 0xb4, 0x1e, 0x86, 0x98, 0x47, 0x95, 0xc9, 0x0a, 0x40, 0x0b, 0xc4, 0x08, 0x80, 0x90, + 0x7a, 0x9f, 0x66, 0x1b, 0x42, 0x8a, 0xa6, 0xb8, 0x7a, 0xc3, 0xab, 0x50, 0xc0, 0x83, 0x8b, 0xc8, + 0x31, 0xc3, 0xee, 0x75, 0x91, 0x45, 0x80, 0xb8, 0x5d, 0x07, 0x08, 0xbc, 0x03, 0x22, 0x99, 0xac, + 0x92, 0xab, 0x01, 0x87, 0x3e, 0xe5, 0xcc, 0x7d, 0xe4, 0x14, 0x28, 0x3b, 0xf5, 0x8e, 0x9f, 0x45, + 0x24, 0xb0, 0x62, 0xd3, 0x02, 0x99, 0xb0, 0xe0, 0xeb, 0x03, 0xb8, 0x46, 0x8f, 0x47, 0x85, 0x6c, + 0x65, 0x9d, 0x31, 0x80, 0xb8, 0x2f, 0x31, 0xff, 0xa8, 0x3a, 0x89, 0x47, 0xf9, 0x40, 0x06, 0xd3, + 0xc3, 0x6b, 0x84, 0x01, 0x41, 0x1f, 0x4b, 0xee, 0x80, 0xed, 0xb2, 0xaa, 0xe9, 0x3d, 0x39, 0xa6, + 0xe6, 0xf0, 0x70, 0x1f, 0xe6, 0x4e, 0xcf, 0xa1, 0x3d, 0xf3, 0x60, 0xd4, 0x39, 0xb8, 0x4b, 0x47, + 0xb0, 0xc7, 0x7c, 0xae, 0x7b, 0x8d, 0x03, 0x23, 0xbb, 0xd8, 0x02, 0x85, 0x4e, 0x03, 0x5e, 0xf2, + 0x0b, 0x0b, 0xc9, 0xec, 0x9a, 0x17, 0x23, 0x5f, 0x75, 0x1e, 0x64, 0x1d, 0x8a, 0x2e, 0xb4, 0x74, + 0x6e, 0x4e, 0xff, 0x3a, 0xf2, 0x85, 0x5b, 0xe0, 0x43, 0xe9, 0x00, 0x99, 0xa3, 0x83, 0xe6, 0x2e, + 0x3e, 0xa2, 0xd6, 0x00, 0x58, 0x6b, 0x9e, 0x4c, 0xe0, 0x03, 0xe3, 0x16, 0x15, 0x66, 0x64, 0x4a, + 0x0d, 0xa8, 0xb9, 0x2c, 0x79, 0xdc, 0x55, 0xce, 0x4b, 0x5c, 0xc5, 0xf6, 0x5d, 0xf5, 0x5f, 0x36, + 0x72, 0xe6, 0x26, 0x5e, 0xda, 0xe3, 0xef, 0xa8, 0xc5, 0x87, 0xce, 0x9f, 0x95, 0x5e, 0xc2, 0x9a, + 0xf8, 0xd4, 0xf6, 0x56, 0x11, 0x98, 0x5a, 0xfb, 0x8f, 0x99, 0x4d, 0x54, 0x30, 0x94, 0xb4, 0x01, + 0x0d, 0x58, 0x7a, 0xdb, 0x7d, 0x3b, 0x06, 0x2b, 0x76, 0x3a, 0xba, 0xf2, 0x87, 0x7d, 0x96, 0xf9, + 0x9f, 0x4c, 0x10, 0x31, 0xec, 0xb0, 0x8f, 0x60, 0x9d, 0x06, 0x3a, 0x72, 0x2b, 0xa1, 0x95, 0x2d, + 0x96, 0xf5, 0xe7, 0x1d, 0x82, 0x61, 0xc4, 0x5f, 0x60, 0xf2, 0x65, 0x2c, 0x4c, 0x79, 0xa5, 0x99, + 0xdf, 0x24, 0x5f, 0x70, 0xed, 0x20, 0xca, 0x2b, 0x6d, 0xe0, 0x23, 0xc1, 0xfb, 0x4f, 0x65, 0xeb, + 0xd3, 0xc2, 0xe3, 0x10, 0x5d, 0x85, 0xbe, 0xc1, 0xdc, 0x41, 0x92, 0xb6, 0xb6, 0x7e, 0xf1, 0x40, + 0x0c, 0xfd, 0x8c, 0x3c, 0xad, 0x03, 0x57, 0x04, 0x35, 0xa2, 0x2f, 0x6c, 0x01, 0x81, 0x41, 0x99, + 0xcc, 0xd7, 0xb6, 0x3b, 0x5d, 0xb7, 0xf9, 0x24, 0x47, 0x13, 0xe4, 0xc7, 0x30, 0xc0, 0xdb, 0x17, + 0xfb, 0xa4, 0x5f, 0xae, 0x03, 0xf6, 0xe0, 0xed, 0x21, 0xec, 0x40, 0x39, 0xcd, 0xfa, 0x69, 0xde, + 0x75, 0xa9, 0xe1, 0x42, 0x9c, 0xb0, 0xef, 0x8d, 0xa5, 0x17, 0x38, 0xe9, 0xca, 0x20, 0x62, 0xfb, + 0x57, 0x15, 0x63, 0xbe, 0x3f, 0x72, 0x91, 0xc1, 0xd8, 0xe9, 0xab, 0x65, 0x1b, 0x64, 0x47, 0xb0, + 0xad, 0x4c, 0xcc, 0xc5, 0x0c, 0x19, 0x9d, 0x96, 0xe6, 0x70, 0x9a, 0x00, 0x59, 0x1b, 0x3c, 0x5e, + 0xc2, 0xcb, 0xb2, 0x18, 0xc7, 0xee, 0xe2, 0xe3, 0xd5, 0xa4, 0xb0, 0x96, 0x0f, 0x92, 0xea, 0x27, + 0x29, 0xd2, 0x17, 0x7e, 0x2d, 0x58, 0x6e, 0x25, 0x62, 0x17, 0x84, 0x8c, 0x04, 0xc7, 0xc9, 0x04, + 0x75, 0x96, 0x8f, 0xe0, 0xb6, 0x4f, 0xeb, 0x2f, 0xec, 0x8f, 0x09, 0x5a, 0xab, 0x7e, 0x61, 0xcd, + 0xcf, 0xfc, 0xac, 0x92, 0x59, 0xb4, 0xfe, 0x31, 0xbb, 0x25, 0xd2, 0x0a, 0x68, 0xce, 0xb2, 0x4c, + 0x61, 0x7e, 0xc5, 0x64, 0xa0, 0x9c, 0xa7, 0x3d, 0xbf, 0xfb, 0x63, 0x8a, 0xbc, 0x7f, 0x8c, 0x8d, + 0x82, 0xfd, 0xd7, 0x7f, 0x6e, 0x20, 0x8a, 0x25, 0x36, 0x43, 0x25, 0x4c, 0x9f, 0x05, 0x57, 0xe0, + 0x19, 0x25, 0xf4, 0x14, 0x5d, 0xe4, 0x3f, 0x3b, 0x76, 0x3e, 0xc8, 0xba, 0xc8, 0x8b, 0xca, 0x06, + 0x3a, 0xa0, 0x06, 0x6e, 0x22, 0x47, 0xba, 0x97, 0x45, 0x06, 0x63, 0x23, 0x1b, 0x0f, 0xb3, 0x6f, + 0x09, 0x77, 0x8f, 0x49, 0x01, 0x4d, 0x3f, 0x52, 0xa6, 0x3c, 0x4b, 0xdb, 0x95, 0x3d, 0x1b, 0xbe, + 0xef, 0x50, 0x63, 0xaa, 0x3e, 0xca, 0xd6, 0x51, 0x43, 0xa9, 0x61, 0xe6, 0xec, 0xc2, 0x88, 0xca, + 0x39, 0x68, 0x0d, 0xfc, 0xbe, 0xe4, 0xab, 0xaa, 0x78, 0x85, 0x77, 0xb1, 0x89, 0xbd, 0xf0, 0x4c, + 0x1a, 0xaf, 0x41, 0x5f, 0xb3, 0xfe, 0x95, 0x96, 0x47, 0x76, 0x8c, 0xbe, 0x27, 0xd5, 0x5c, 0x1f, + 0x48, 0x09, 0xc7, 0x23, 0x0c, 0x52, 0x82, 0x94, 0xd1, 0x60, 0x76, 0x67, 0x22, 0x84, 0x6c, 0x5b, + 0x8a, 0xa3, 0x19, 0x92, 0xe4, 0xa4, 0x4f, 0xc8, 0x56, 0x47, 0xda, 0xfe, 0x95, 0xc9, 0x57, 0x08, + 0xa6, 0x1f, 0x0a, 0x98, 0x0f, 0xcc, 0xc2, 0xff, 0x58, 0x1f, 0xb8, 0x5c, 0x0c, 0xd5, 0x68, 0xa4, + 0x30, 0xc5, 0x66, 0x5c, 0x4d, 0x17, 0x78, 0xec, 0x8a, 0x6c, 0xe0, 0x9f, 0x4f, 0x74, 0xbf, 0xe3, + 0x6c, 0xdb, 0x98, 0x27, 0x2c, 0xb8, 0x71, 0xe4, 0x72, 0x71, 0xf4, 0xa1, 0x33, 0x3a, 0xc9, 0x4d, + 0xa5, 0x10, 0x03, 0xa7, 0xa6, 0x5e, 0xa3, 0x85, 0xed, 0xfa, 0x5b, 0x7d, 0x63, 0x43, 0x39, 0xe8, + 0x29, 0x97, 0xc1, 0x83, 0xe2, 0x8d, 0x1d, 0xa2, 0x27, 0xbd, 0xa1, 0xe6, 0x68, 0xb9, 0x9b, 0xab, + 0x9f, 0x46, 0x50, 0x1a, 0x0b, 0x25, 0x6f, 0x05, 0xc5, 0xc4, 0x1e, 0x29, 0x02, 0x6b, 0x2c, 0xb6, + 0x74, 0x7c, 0xcb, 0x4c, 0x77, 0xab, 0xc3, 0xc6, 0xc8, 0xa2, 0x81, 0xaa, 0x6f, 0xe0, 0xba, 0x36, + 0xa7, 0x05, 0xc7, 0xd0, 0x76, 0x6a, 0x55, 0x67, 0x59, 0x9d, 0xff, 0x75, 0xdb, 0x35, 0x2c, 0xe2, + 0x51, 0x82, 0xce, 0x1f, 0x2c, 0x49, 0xdd, 0x04, 0x9e, 0xcf, 0xa2, 0xa1, 0x03, 0xf3, 0x3a, 0x79, + 0xda, 0x59, 0xbc, 0x75, 0x76, 0xdd, 0xb0, 0xe3, 0x3e, 0xe3, 0xbc, 0x0b, 0xfe, 0x62, 0xed, 0xd5, + 0x9a, 0x5f, 0x08, 0xb1, 0xab, 0xf3, 0xa9, 0x95, 0xa7, 0x5c, 0xe3, 0x7b, 0x58, 0xfb, 0xc1, 0x34, + 0x09, 0x56, 0xb2, 0xab, 0x31, 0x46, 0xac, 0x3c, 0x56, 0x08, 0xcb, 0x0c, 0x08, 0xa0, 0x82, 0xf3, + 0xc0, 0x91, 0xcd, 0xd0, 0x5d, 0x43, 0xa8, 0xbe, 0x46, 0x36, 0x8a, 0xfb, 0x25, 0x92, 0x18, 0x8d, + 0xdd, 0x9d, 0xd6, 0xce, 0x99, 0xcc, 0x6d, 0x36, 0xa0, 0x8c, 0xab, 0x8f, 0xe0, 0x2f, 0x29, 0xbc, + 0x02, 0xef, 0x25, 0xb6, 0xb2, 0xfc, 0x9f, 0x8f, 0xe8, 0xc1, 0x49, 0x0c, 0x5b, 0x77, 0x46, 0xf6, + 0x60, 0xac, 0x9d, 0xd8, 0xd8, 0x6f, 0xee, 0xf0, 0x93, 0x9f, 0xe8, 0x38, 0x1f, 0x25, 0x3e, 0x9e, + 0x5d, 0xef, 0x93, 0xef, 0xd4, 0x4d, 0x8a, 0xff, 0xa0, 0x78, 0xac, 0x91, 0x52, 0x02, 0x86, 0x60, + 0x5a, 0xcb, 0x31, 0x6a, 0x29, 0xf8, 0xe9, 0xee, 0xec, 0x05, 0xf8, 0x4d, 0xdd, 0x70, 0xdc, 0x65, + 0x84, 0x44, 0xac, 0x71, 0xdc, 0x74, 0x3a, 0xac, 0xa2, 0x09, 0xfd, 0x47, 0xb3, 0x0c, 0xef, 0x99, + 0x43, 0x46, 0xc9, 0x2b, 0x95, 0x43, 0xc0, 0x59, 0xda, 0x3a, 0x43, 0x26, 0x99, 0x8a, 0x57, 0xf3, + 0x5e, 0x41, 0x1f, 0x3e, 0x22, 0xf4, 0x57, 0x54, 0x98, 0x5a, 0xf5, 0x8c, 0x37, 0x0c, 0xca, 0xd4, + 0x29, 0xb4, 0x9d, 0x1a, 0xf4, 0x45, 0x28, 0x2e, 0xe7, 0xfd, 0x52, 0xef, 0x3a, 0xee, 0xbe, 0x6e, + 0xfc, 0xe1, 0x15, 0x3e, 0xfb, 0x89, 0x93, 0x81, 0xfe, 0x67, 0xa0, 0xaa, 0xe2, 0x11, 0x9e, 0xaa, + 0xdf, 0x5a, 0x11, 0x6e, 0xae, 0x7c, 0xb5, 0xa6, 0x0f, 0xe8, 0x34, 0x00, 0x0d, 0x85, 0x8a, 0xfc, + 0x2b, 0xa5, 0x7a, 0x3f, 0xf4, 0x17, 0x00, 0xde, 0x1c, 0x8b, 0x18, 0x2c, 0xc9, 0x8c, 0x02, 0x52, + 0x77, 0x29, 0xd5, 0x92, 0x84, 0x70, 0xe7, 0xca, 0xfa, 0xe5, 0xc5, 0xe2, 0xaf, 0xdd, 0x73, 0x3c, + 0xe8, 0x59, 0x2b, 0xf4, 0x2f, 0x3a, 0xe9, 0x40, 0x3d, 0xb4, 0x13, 0x12, 0x65, 0x36, 0xa5, 0x82, + 0x2c, 0xd4, 0xa5, 0x0e, 0xcf, 0x8e, 0x63, 0x57, 0xff, 0xfc, 0x75, 0x87, 0x86, 0xda, 0xa8, 0x5e, + 0x54, 0xde, 0xc2, 0x40, 0x9a, 0x4e, 0xfd, 0xd6, 0x41, 0xdf, 0x39, 0x03, 0x8a, 0x0a, 0xf1, 0x8a, + 0x21, 0x74, 0x71, 0x83, 0x0e, 0x49, 0x64, 0x92, 0xce, 0x27, 0x3d, 0xed, 0x53, 0x48, 0x96, 0x13, + 0x1d, 0xfb, 0x8b, 0x07, 0x56, 0x05, 0x13, 0x96, 0x47, 0x96, 0x5a, 0x92, 0x6b, 0x19, 0xef, 0x36, + 0xaf, 0x6d, 0x98, 0x47, 0x85, 0x20, 0x0f, 0xed, 0xfe, 0xb6, 0xba, 0x45, 0xca, 0x42, 0x1f, 0xf5, + 0x0d, 0x55, 0xe8, 0x24, 0x26, 0x6c, 0x30, 0xff, 0xe6, 0x55, 0xd7, 0xeb, 0xed, 0x12, 0x99, 0x14, + 0x8e, 0xfb, 0x5b, 0x38, 0xb9, 0xfc, 0xdb, 0x9c, 0x70, 0x8d, 0x63, 0x1d, 0xc6, 0xef, 0x5b, 0x9b, + 0xa4, 0x30, 0x4d, 0x23, 0x17, 0xb6, 0x0e, 0xf0, 0x8a, 0xd2, 0x50, 0x7e, 0x44, 0x34, 0x59, 0xe9, + 0xc9, 0x34, 0x3e, 0xf6, 0x75, 0x6d, 0xfc, 0xc0, 0x8a, 0xfd, 0xf9, 0x73, 0xb4, 0x0c, 0xe1, 0x23, + 0xcd, 0x45, 0x62, 0xec, 0x3e, 0xaa, 0x8e, 0xd3, 0x86, 0xcf, 0x53, 0xd7, 0x93, 0x62, 0x47, 0x23, + 0xd9, 0x18, 0x06, 0xa2, 0x35, 0xef, 0x73, 0x57, 0x50, 0xc9, 0xdc, 0xbb, 0xb7, 0x05, 0xc6, 0x52, + 0x44, 0xe8, 0x15, 0x6b, 0x5b, 0xd2, 0xf3, 0xf3, 0xd4, 0x1c, 0xa4, 0xaf, 0x73, 0x6a, 0x91, 0x81, + 0x0b, 0xe8, 0x15, 0xed, 0x54, 0x60, 0xc2, 0x0e, 0xc8, 0xf9, 0x69, 0xbb, 0xac, 0x55, 0xcc, 0x36, + 0xaf, 0x04, 0x3c, 0x2f, 0xc9, 0xbf, 0x1c, 0xc6, 0x99, 0x48, 0x0c, 0x5d, 0xd7, 0x16, 0xf0, 0x46, + 0x8d, 0x59, 0x7b, 0x78, 0x49, 0xa4, 0xb5, 0x4c, 0x60, 0xa1, 0x24, 0x58, 0x61, 0x38, 0xa1, 0x46, + 0x37, 0x02, 0xd0, 0x73, 0x52, 0xa5, 0x4b, 0xb3, 0xc9, 0xd9, 0x32, 0x43, 0xa6, 0x6a, 0xce, 0x14, + 0xba, 0xe5, 0x71, 0xfc, 0x5e, 0xd6, 0xc3, 0x46, 0x4a, 0x4e, 0xfd, 0x6b, 0xa1, 0x75, 0xd0, 0x22, + 0x6b, 0xe6, 0x1f, 0xc4, 0x1d, 0x1f, 0x22, 0x69, 0x09, 0x24, 0x1b, 0x92, 0x38, 0x42, 0xaa, 0x67, + 0x52, 0x76, 0xba, 0xae, 0x9e, 0x3e, 0x68, 0x66, 0x96, 0xd4, 0x79, 0xb0, 0xeb, 0xe6, 0x86, 0x29, + 0x2b, 0x74, 0x16, 0x22, 0x9f, 0xb6, 0xe6, 0xbd, 0xe3, 0xf9, 0xaa, 0x5f, 0xcf, 0xe1, 0xcb, 0xdb, + 0xd4, 0x91, 0x13, 0xb2, 0x30, 0x52, 0xe1, 0xde, 0xbc, 0xef, 0x94, 0xe9, 0x2c, 0xfe, 0xd0, 0xdb, + 0x44, 0x46, 0x24, 0xeb, 0x2f, 0xf7, 0x54, 0x7c, 0x49, 0x50, 0x1f, 0x64, 0xdb, 0xc1, 0xa6, 0x98, + 0x5e, 0xd6, 0xce, 0xc2, 0xec, 0x76, 0x39, 0xa7, 0x27, 0xc3, 0x9c, 0x2f, 0xc9, 0xf8, 0xd0, 0xa3, + 0xb4, 0x77, 0xea, 0xd6, 0xab, 0xbd, 0x64, 0xaf, 0x07, 0x77, 0x8f, 0x20, 0x59, 0x9e, 0x48, 0x02, + 0x74, 0xb5, 0x45, 0x93, 0x74, 0x52, 0xba, 0x9c, 0x3b, 0xcd, 0x75, 0x7f, 0x4b, 0x4d, 0x15, 0x4a, + 0x65, 0x90, 0x67, 0x3f, 0xdc, 0x55, 0x29, 0x69, 0xbb, 0x4d, 0x5a, 0xe9, 0x1d, 0xf4, 0x5d, 0xf5, + 0x8a, 0x9f, 0x62, 0x2d, 0x12, 0xb3, 0x31, 0xdf, 0x52, 0x77, 0xfe, 0x34, 0xf5, 0xdf, 0xa3, 0xb7, + 0x04, 0x94, 0x8e, 0xc2, 0xa7, 0xd4, 0xfa, 0x8f, 0xd9, 0x86, 0x56, 0x8b, 0x1b, 0xf0, 0x64, 0xea, + 0x3b, 0x08, 0x59, 0x58, 0x23, 0xeb, 0x9a, 0x3d, 0xb7, 0xea, 0xb4, 0x28, 0xbe, 0x15, 0x6d, 0x0e, + 0x0b, 0x25, 0x4d, 0x5e, 0x2d, 0xf7, 0x65, 0xdf, 0x21, 0x26, 0x89, 0x75, 0x1b, 0xbe, 0x94, 0x10, + 0xb4, 0x77, 0xee, 0x03, 0xc6, 0x34, 0x98, 0xdb, 0x82, 0x02, 0xac, 0x50, 0x2e, 0xec, 0x94, 0x2e, + 0xb3, 0x7b, 0x78, 0x82, 0xa9, 0x48, 0x82, 0xff, 0xa8, 0x7b, 0x82, 0x9f, 0xf1, 0xa8, 0x7e, 0x57, + 0x82, 0xad, 0xab, 0x88, 0x8b, 0x8f, 0xc0, 0x9c, 0xa1, 0x26, 0xb5, 0xa4, 0xc0, 0x0c, 0xf0, 0x46, + 0x4c, 0x9f, 0x04, 0x79, 0x80, 0x33, 0x3b, 0x9b, 0x91, 0x34, 0x67, 0x06, 0x2f, 0x89, 0x46, 0xf3, + 0x90, 0x7a, 0xba, 0x7f, 0x03, 0x0d, 0xcb, 0xad, 0xa9, 0x4c, 0xd3, 0x50, 0x1d, 0x8a, 0x26, 0x16, + 0x05, 0x30, 0x76, 0x8a, 0x77, 0x06, 0x86, 0x01, 0x43, 0x9d, 0xbf, 0xf8, 0xfe, 0xe8, 0xfc, 0xe3, + 0xd2, 0x52, 0xf7, 0x71, 0xfa, 0x14, 0xb0, 0x62, 0xe4, 0x76, 0x4c, 0xba, 0x6f, 0x35, 0x55, 0xf1, + 0x3b, 0x0a, 0xcb, 0x6c, 0x4e, 0x2d, 0x1d, 0x50, 0xb1, 0x99, 0xa4, 0x57, 0xd1, 0x26, 0x2f, 0x90, + 0x66, 0x9c, 0xb2, 0x40, 0xb4, 0xb6, 0xa4, 0xb9, 0xa4, 0xff, 0x4b, 0x88, 0x1e, 0xbc, 0xe2, 0xd8, + 0xba, 0xc9, 0x14, 0xbb, 0x79, 0x85, 0x27, 0xdc, 0xb1, 0xde, 0xd7, 0x0a, 0x0f, 0x92, 0xf7, 0x7c, + 0xe9, 0xe9, 0x9a, 0x67, 0xeb, 0x6a, 0xf5, 0x67, 0xbc, 0x3b, 0xf3, 0x12, 0xd9, 0x4e, 0x26, 0x8c, + 0x82, 0x17, 0x3f, 0x4d, 0x75, 0xdb, 0x6a, 0xb7, 0x4e, 0x4b, 0x78, 0x32, 0xbe, 0x22, 0x11, 0x99, + 0x23, 0x5e, 0xfa, 0xda, 0xd8, 0x20, 0x25, 0x2f, 0x49, 0x0e, 0x04, 0xbe, 0xe2, 0x95, 0x7f, 0x5d, + 0xc0, 0x05, 0x41, 0x55, 0xc2, 0x15, 0x43, 0x38, 0xb1, 0xf6, 0x38, 0xb2, 0x3a, 0x6f, 0x91, 0x05, + 0x5a, 0xf9, 0xfa, 0xce, 0x79, 0x56, 0x16, 0xfd, 0x41, 0xe1, 0x42, 0x89, 0x77, 0x3e, 0x63, 0x69, + 0xd4, 0x06, 0x43, 0x81, 0x25, 0x10, 0x4b, 0x5c, 0x3b, 0xbb, 0x5c, 0x19, 0x77, 0x01, 0x01, 0xad, + 0x58, 0xa7, 0x88, 0x7e, 0x1c, 0x04, 0x00, 0x13, 0xa5, 0x65, 0x91, 0x3b, 0xb8, 0x4a, 0x4d, 0xe1, + 0x9c, 0x7d, 0x91, 0x74, 0x64, 0x36, 0x15, 0xff, 0xe8, 0xf7, 0x0d, 0x86, 0x7d, 0xcb, 0x55, 0xbc, + 0x09, 0x01, 0x71, 0xd5, 0x91, 0xd2, 0xd9, 0x83, 0xa1, 0x82, 0x69, 0xeb, 0x93, 0x99, 0x51, 0x40, + 0xfe, 0xc4, 0xbe, 0x95, 0x16, 0x95, 0x42, 0x9c, 0xfa, 0x30, 0x87, 0x72, 0x92, 0x46, 0x42, 0x20, + 0xa2, 0x9c, 0xae, 0xdb, 0x5a, 0x26, 0xc9, 0x1a, 0x9c, 0x0a, 0xed, 0xa9, 0x48, 0x61, 0x3c, 0xa3, + 0x6a, 0xa9, 0xef, 0x2b, 0x67, 0x8f, 0xe4, 0x8f, 0xef, 0xd2, 0xd5, 0xf6, 0x9f, 0x63, 0x5d, 0x8c, + 0x4f, 0x28, 0xc1, 0xc8, 0x3c, 0x20, 0x22, 0x58, 0x53, 0x3d, 0xab, 0xbd, 0x76, 0x54, 0x40, 0xe2, + 0xdb, 0xc6, 0x79, 0xdf, 0x47, 0x61, 0xfe, 0x3c, 0xf6, 0x0e, 0xe2, 0x1f, 0xd4, 0x4a, 0x3d, 0x4a, + 0x1a, 0xbe, 0x45, 0x27, 0x74, 0xd7, 0xe9, 0x74, 0x7d, 0xd1, 0x54, 0x56, 0xd6, 0xd7, 0xcf, 0xa0, + 0x5c, 0x70, 0xbd, 0xa3, 0xbb, 0x91, 0x98, 0x23, 0x4c, 0x57, 0xc7, 0xcf, 0xc8, 0x0e, 0x91, 0x1f, + 0x3c, 0x2f, 0x1e, 0x98, 0x2c, 0xf6, 0xe2, 0x13, 0x67, 0x95, 0xb4, 0xb4, 0xdc, 0x4e, 0x69, 0x9f, + 0x99, 0x3d, 0x1c, 0xb6, 0x80, 0xe8, 0xc9, 0x38, 0xd2, 0x29, 0xca, 0x0a, 0x18, 0x53, 0xdc, 0x5b, + 0x4b, 0x91, 0x8b, 0xde, 0x3f, 0xd1, 0x3b, 0x01, 0x83, 0xb5, 0xf5, 0xd3, 0x13, 0x7a, 0x0e, 0xcf, + 0xa5, 0x3d, 0xba, 0x9f, 0x5d, 0xb4, 0x40, 0x21, 0x79, 0x22, 0x7d, 0xbd, 0xca, 0x0c, 0x1f, 0xb9, + 0xcd, 0x7d, 0x44, 0x86, 0x23, 0xc3, 0xa8, 0x36, 0xda, 0xc4, 0xb1, 0xf5, 0x77, 0x96, 0xa4, 0x5e, + 0x85, 0x55, 0x95, 0x05, 0x3b, 0x9c, 0x12, 0x95, 0x4a, 0x30, 0xed, 0x5e, 0xc0, 0xb4, 0x2d, 0xed, + 0xda, 0x63, 0x49, 0xc7, 0xed, 0x96, 0xa3, 0xc0, 0xf4, 0x02, 0x5f, 0x41, 0x99, 0x79, 0xf2, 0x16, + 0x42, 0x20, 0x14, 0x3a, 0x89, 0xa0, 0x4b, 0x52, 0x88, 0xdf, 0x1d, 0xf2, 0x5f, 0x5c, 0x8d, 0xb3, + 0xf0, 0x58, 0x37, 0x3d, 0xfd, 0xb9, 0x23, 0xb5, 0xe0, 0xbb, 0xa9, 0x59, 0x60, 0x2a, 0xa9, 0xcc, + 0xfd, 0xef, 0xc0, 0x08, 0xcf, 0x54, 0xc0, 0xed, 0xa9, 0xd3, 0x3c, 0xbe, 0x24, 0xe7, 0xb9, 0xd1, + 0x7d, 0xd1, 0x08, 0xa1, 0xd0, 0xe2, 0x6f, 0x20, 0x8d, 0xa3, 0x87, 0x20, 0x83, 0x82, 0x24, 0x3f, + 0x3b, 0x15, 0x48, 0x10, 0x89, 0x04, 0xc6, 0x1e, 0x46, 0xba, 0x49, 0x88, 0x05, 0x15, 0xcf, 0xd8, + 0xc8, 0xa7, 0xdb, 0xca, 0x46, 0x07, 0x6a, 0x94, 0x60, 0xbc, 0x9b, 0x2b, 0xa6, 0xb0, 0x24, 0x31, + 0xe9, 0x5a, 0x11, 0x96, 0x22, 0x48, 0x63, 0xb6, 0xb1, 0x43, 0x97, 0xf4, 0x98, 0x09, 0xd4, 0xf3, + 0x99, 0xd1, 0xfd, 0xb6, 0xe1, 0x3e, 0x27, 0x4a, 0xc4, 0x96, 0x7f, 0x0d, 0x18, 0xd4, 0xd9, 0x31, + 0x3a, 0x80, 0xfc, 0x64, 0x62, 0x86, 0x8c, 0xdd, 0xd8, 0x45, 0x2c, 0x43, 0x53, 0x03, 0x93, 0x46, + 0xf9, 0x38, 0x08, 0x7d, 0xc0, 0xb1, 0x5d, 0xc9, 0xe3, 0xff, 0x06, 0x5e, 0x13, 0x3e, 0x9d, 0x7a, + 0x7e, 0x58, 0x61, 0xb9, 0xc8, 0x9f, 0xf0, 0xaf, 0x9f, 0xe9, 0x6b, 0x3d, 0x66, 0xd2, 0xb0, 0x90, + 0x8f, 0xd4, 0x79, 0xa9, 0xbd, 0x49, 0x2e, 0x9b, 0xd9, 0xe6, 0x87, 0x34, 0x13, 0x84, 0x70, 0xf8, + 0xe1, 0x6a, 0x64, 0x18, 0x3f, 0xf2, 0xed, 0x77, 0xc1, 0xf7, 0xbc, 0xaf, 0xf3, 0xb3, 0x21, 0x26, + 0x22, 0x72, 0x49, 0x26, 0x07, 0xd1, 0x99, 0x47, 0x54, 0x4d, 0x52, 0xa7, 0xe2, 0x60, 0xa3, 0x7a, + 0xb2, 0x24, 0x94, 0xe0, 0xe4, 0xc2, 0xcc, 0x3e, 0x7c, 0x8f, 0x7f, 0x81, 0x61, 0xb4, 0xa4, 0x81, + 0x54, 0xa0, 0xfa, 0xdf, 0xb5, 0x5f, 0xee, 0xe2, 0xc2, 0x3b, 0x29, 0x2a, 0x70, 0xc5, 0x77, 0x81, + 0x40, 0x01, 0x67, 0x9f, 0x75, 0x2b, 0x05, 0xa2, 0x5a, 0x8d, 0x71, 0x60, 0x17, 0x53, 0xf8, 0x8c, + 0xe8, 0x8b, 0x54, 0x85, 0xdd, 0x18, 0x23, 0x94, 0x75, 0x84, 0x89, 0x74, 0x67, 0xd1, 0xfd, 0xe3, + 0xca, 0x07, 0xf9, 0x08, 0x95, 0xbc, 0xe3, 0xce, 0xf5, 0x58, 0xed, 0x0e, 0xc4, 0x46, 0xc2, 0x20, + 0xcd, 0x10, 0xb9, 0x3b, 0x46, 0x87, 0xda, 0xa7, 0x7d, 0x64, 0x65, 0x06, 0x0a, 0xda, 0xf2, 0xa3, + 0x3e, 0xc4, 0x84, 0xe0, 0x4d, 0x27, 0xc1, 0xde, 0x6d, 0x06, 0x51, 0x20, 0x9c, 0xc0, 0x17, 0x89, + 0xbf, 0x24, 0x22, 0xdd, 0x71, 0x20, 0xfa, 0xc6, 0xc1, 0x09, 0x55, 0xce, 0xc7, 0x91, 0x64, 0xcc, + 0x00, 0xa1, 0xd6, 0x62, 0xbf, 0x1b, 0x76, 0x16, 0x00, 0x4e, 0xa2, 0x20, 0xf7, 0x22, 0x6b, 0xa0, + 0x63, 0xa8, 0x5d, 0x35, 0xd6, 0xbb, 0xfb, 0xb8, 0x08, 0xed, 0x89, 0x04, 0xc9, 0xb1, 0x91, 0xe5, + 0x7e, 0xe1, 0xf1, 0x21, 0x30, 0xed, 0x01, 0x3a, 0x04, 0x01, 0x11, 0xc9, 0x6d, 0x67, 0xb2, 0x68, + 0x09, 0x14, 0xa6, 0x10, 0x39, 0x9d, 0xcc, 0x87, 0x98, 0x0a, 0x6b, 0xd7, 0x7d, 0xd3, 0xce, 0x77, + 0x56, 0x0b, 0x5f, 0xdf, 0x6a, 0x04, 0xf1, 0x13, 0x8b, 0x54, 0x11, 0x2b, 0x31, 0xc8, 0xff, 0xcf, + 0x52, 0xab, 0xdb, 0x13, 0xfc, 0x06, 0xed, 0xcc, 0x31, 0x00, 0xbf, 0xd8, 0x7b, 0x9b, 0xea, 0xcf, + 0x80, 0xc9, 0x3c, 0x95, 0xe2, 0x07, 0x39, 0x8c, 0x70, 0x54, 0x70, 0x3e, 0x4a, 0x8d, 0xa1, 0xfc, + 0x82, 0x4b, 0xc2, 0x14, 0xb0, 0xc9, 0x86, 0x66, 0x0b, 0x9d, 0xce, 0xf0, 0x3b, 0x04, 0xd0, 0xc1, + 0x83, 0x40, 0x4e, 0x7b, 0x6f, 0x1b, 0x55, 0x11, 0x76, 0x91, 0x16, 0x66, 0xaa, 0x24, 0x99, 0x95, + 0xb4, 0x26, 0x1f, 0x29, 0xc3, 0x05, 0x7f, 0x0a, 0x72, 0x83, 0x6a, 0x4c, 0xa7, 0x1a, 0xd0, 0x6e, + 0xab, 0xeb, 0xbf, 0x17, 0x1f, 0x15, 0x3e, 0xac, 0xdd, 0x1d, 0x30, 0xc2, 0x1c, 0x2c, 0xd3, 0xf3, + 0x68, 0xd7, 0x8e, 0x11, 0x52, 0x45, 0x8f, 0xd9, 0xd6, 0x0f, 0x4c, 0x4f, 0x8d, 0x0a, 0x4c, 0x80, + 0x0d, 0x4d, 0x1b, 0x14, 0x9f, 0x26, 0xa0, 0x5f, 0x7d, 0xd4, 0xbb, 0x83, 0x36, 0x5a, 0xd7, 0x4a, + 0x61, 0xd5, 0x34, 0x8a, 0x89, 0xd5, 0x4c, 0x76, 0xda, 0x68, 0x79, 0xf4, 0x33, 0x05, 0x9a, 0x6e, + 0xbb, 0x87, 0x65, 0xed, 0x62, 0x6c, 0xfa, 0x9d, 0xc9, 0xcc, 0x98, 0xe4, 0x38, 0xd4, 0xec, 0xbb, + 0x8a, 0x28, 0x87, 0x23, 0x7a, 0x00, 0x8c, 0x15, 0x5d, 0x78, 0x61, 0xf3, 0xf7, 0x44, 0x64, 0xbb, + 0x38, 0x65, 0xd9, 0x84, 0x0c, 0x56, 0xf7, 0x43, 0xc5, 0x96, 0x64, 0xcb, 0xef, 0x85, 0xa8, 0x2a, + 0x9d, 0x1e, 0x47, 0x23, 0xf5, 0x14, 0x0f, 0xbf, 0x6f, 0x23, 0x12, 0x64, 0x38, 0xa8, 0x87, 0x96, + 0xa2, 0x3d, 0xfd, 0x52, 0xb0, 0x49, 0x4c, 0xae, 0x09, 0xf0, 0x4e, 0x28, 0x5b, 0xb5, 0xe1, 0x7f, + 0x10, 0xd1, 0x84, 0x43, 0xde, 0xb7, 0xd3, 0xdb, 0x9b, 0x1f, 0x78, 0x8e, 0xd9, 0x19, 0x11, 0x08, + 0x7b, 0x3a, 0xd1, 0x97, 0xb4, 0xc7, 0x75, 0x4d, 0x79, 0xf5, 0xf0, 0x6b, 0xfe, 0xc7, 0x54, 0x17, + 0x37, 0x70, 0x38, 0x92, 0xc3, 0x9c, 0xee, 0xca, 0xfe, 0xf5, 0xb3, 0x26, 0x45, 0xfa, 0x37, 0x80, + 0x28, 0x5c, 0xda, 0x6e, 0x06, 0x98, 0x75, 0xd6, 0x2c, 0x79, 0xe0, 0xe3, 0x9a, 0x07, 0x3c, 0x57, + 0xf6, 0xbd, 0x7b, 0xca, 0x91, 0x70, 0xfb, 0x00, 0xc9, 0x5b, 0x6d, 0x09, 0xf8, 0x4f, 0xd5, 0x4a, + 0x9d, 0x3f, 0x00, 0xfe, 0x4f, 0x59, 0x9f, 0xa1, 0x5b, 0xe2, 0x40, 0x65, 0x8f, 0xba, 0x1a, 0xd6, + 0x87, 0x68, 0x6d, 0xda, 0x87, 0x78, 0x08, 0xa8, 0x23, 0xdf, 0xdb, 0xa9, 0x85, 0x9d, 0x91, 0xe1, + 0x77, 0x72, 0xc3, 0x74, 0x55, 0x6a, 0x56, 0xdf, 0x33, 0xf1, 0x15, 0x05, 0x7d, 0xd7, 0x69, 0x96, + 0xf9, 0x08, 0xa4, 0x4b, 0xd0, 0x11, 0xa2, 0xe2, 0xf6, 0x0a, 0x94, 0x8c, 0x1a, 0x14, 0x52, 0xe8, + 0xf2, 0xa9, 0x89, 0x23, 0x01, 0x0a, 0xa8, 0xf3, 0xaa, 0x7e, 0x9a, 0x1e, 0x70, 0xb3, 0xaf, 0xf6, + 0x77, 0xf8, 0xc5, 0x81, 0x6e, 0x2c, 0xbd, 0x2a, 0x6c, 0x13, 0x9e, 0xd1, 0x30, 0xde, 0xe1, 0xd8, + 0xc7, 0x43, 0xa6, 0x39, 0x6d, 0x80, 0xc1, 0x51, 0x30, 0x30, 0x7e, 0xe5, 0x2b, 0x04, 0x76, 0x5d, + 0x41, 0x5c, 0x15, 0x11, 0xb9, 0x0d, 0xe9, 0x8b, 0xd3, 0x6e, 0x35, 0x79, 0xd1, 0x69, 0x75, 0xe6, + 0x08, 0x0c, 0x8e, 0x90, 0x00, 0xa0, 0x4d, 0x78, 0x19, 0xa5, 0x5f, 0x41, 0x38, 0x16, 0xea, 0x1b, + 0x19, 0xce, 0xba, 0xb8, 0x6e, 0x46, 0x31, 0x9a, 0x38, 0x91, 0xd2, 0xbe, 0x9b, 0x9d, 0xbc, 0x3b, + 0x75, 0x37, 0x04, 0x95, 0x27, 0x50, 0x95, 0x9a, 0x79, 0x63, 0x36, 0x91, 0xc4, 0x6e, 0x0d, 0x77, + 0xb7, 0x53, 0xe9, 0x16, 0x01, 0xc6, 0x03, 0x6b, 0x8f, 0xb7, 0xb6, 0x36, 0x01, 0x11, 0x20, 0x87, + 0x5c, 0x5d, 0x62, 0xbf, 0x2f, 0x7b, 0x05, 0xdd, 0x3a, 0x09, 0x4b, 0xdc, 0x30, 0x8f, 0x38, 0x1e, + 0xc1, 0xee, 0xd1, 0x0f, 0xe6, 0xe4, 0x95, 0x0a, 0x13, 0x0e, 0x45, 0xf9, 0xf3, 0xcd, 0xee, 0x52, + 0x38, 0x0e, 0x86, 0x9b, 0xc4, 0x23, 0x2d, 0x49, 0xac, 0x77, 0x9b, 0x48, 0xf0, 0xde, 0x9b, 0x14, + 0xd0, 0x3f, 0xba, 0x6a, 0x74, 0xb0, 0x9f, 0x52, 0xc9, 0xb0, 0x7e, 0xbe, 0xa5, 0xaf, 0xa9, 0x9b, + 0x03, 0xc9, 0x30, 0x08, 0x66, 0x41, 0xf8, 0x22, 0x37, 0x69, 0x06, 0x34, 0xd5, 0xc2, 0xc6, 0x0a, + 0x25, 0x6c, 0xaf, 0xed, 0x72, 0xb1, 0x71, 0xb3, 0xcb, 0xd9, 0x2d, 0xba, 0xb2, 0x13, 0x34, 0xf5, + 0x09, 0xa3, 0xe5, 0x1a, 0x24, 0xcb, 0x47, 0x28, 0x1e, 0xcf, 0xf9, 0x29, 0x89, 0x22, 0xa9, 0xbf, + 0x1d, 0x94, 0x03, 0x69, 0x7f, 0xeb, 0xa5, 0x4b, 0x39, 0x59, 0xfa, 0xbd, 0xec, 0x3e, 0xb7, 0x33, + 0x62, 0x51, 0x65, 0xa9, 0x78, 0x6c, 0xdc, 0xb7, 0xca, 0x7f, 0xfa, 0x54, 0x25, 0x00, 0xe9, 0x9f, + 0xa6, 0x4b, 0x0e, 0x24, 0x34, 0xee, 0x0f, 0x17, 0x9b, 0x6a, 0xe3, 0xe4, 0xee, 0x4d, 0x83, 0xa4, + 0x79, 0x75, 0x8c, 0x46, 0x12, 0x6f, 0x28, 0x50, 0xef, 0x1f, 0x70, 0x9c, 0x49, 0x70, 0x7c, 0xd9, + 0x19, 0x30, 0x43, 0x07, 0x49, 0x1f, 0xba, 0x7f, 0x1b, 0x17, 0xec, 0x01, 0x92, 0xcf, 0xd9, 0x32, + 0xfa, 0xf2, 0xd9, 0x40, 0xf2, 0xb8, 0xaf, 0xa2, 0x42, 0xeb, 0x11, 0x36, 0xf9, 0x6b, 0x7c, 0x27, + 0x68, 0x4c, 0xd6, 0x18, 0x76, 0x40, 0x31, 0xaf, 0x76, 0x38, 0x82, 0x97, 0x8b, 0xc5, 0x15, 0x41, + 0x80, 0xdd, 0xab, 0xf1, 0x67, 0x00, 0x42, 0xfc, 0x37, 0x37, 0xe8, 0x29, 0x39, 0xea, 0x8c, 0x1c, + 0x48, 0xe6, 0xb0, 0x5d, 0xa3, 0xae, 0x17, 0x6a, 0xe6, 0x5b, 0x5c, 0x71, 0x40, 0xc4, 0x5a, 0x8c, + 0xee, 0x95, 0x0a, 0x0e, 0xcd, 0x4b, 0xbb, 0x4d, 0x66, 0x81, 0x9a, 0xc7, 0xf6, 0xe8, 0xf7, 0x99, + 0x2e, 0x77, 0x3f, 0x3a, 0x4d, 0xa9, 0x12, 0xcc, 0x2a, 0x7d, 0xe3, 0xe8, 0x37, 0x6b, 0x9e, 0xd4, + 0x38, 0x53, 0x30, 0x18, 0xbd, 0xf5, 0xb7, 0x61, 0x59, 0x64, 0xea, 0x9e, 0x55, 0x86, 0xe6, 0x1a, + 0xce, 0x94, 0xe1, 0x34, 0x82, 0x6b, 0xcf, 0x3b, 0x5f, 0x86, 0x76, 0x74, 0xdf, 0x72, 0xf5, 0xa8, + 0x08, 0x87, 0x50, 0x27, 0xc2, 0x9a, 0x98, 0x78, 0xe4, 0x09, 0x14, 0xc2, 0x65, 0x4b, 0x7a, 0xc9, + 0xd9, 0x62, 0x1d, 0xb2, 0xa1, 0xc1, 0xab, 0x7e, 0xa0, 0x08, 0x9b, 0xd7, 0xb6, 0xcd, 0xe0, 0x40, + 0xf7, 0xc6, 0xea, 0x41, 0xf1, 0xf4, 0x27, 0x93, 0x7e, 0xf6, 0x5f, 0x23, 0x76, 0x79, 0x48, 0x91, + 0x45, 0x09, 0x08, 0xd8, 0xa2, 0x37, 0x49, 0x49, 0x85, 0x47, 0xa6, 0xdc, 0x21, 0x3d, 0xd0, 0x58, + 0xac, 0x9e, 0xd2, 0x06, 0x02, 0x28, 0xbb, 0xb8, 0xd7, 0xb4, 0x35, 0x5d, 0x10, 0x95, 0xd6, 0xc8, + 0x1c, 0xc5, 0x02, 0x8e, 0x57, 0x83, 0x51, 0x28, 0x25, 0xfd, 0x21, 0xd5, 0x3b, 0xe8, 0x22, 0x77, + 0xe2, 0x99, 0x18, 0x61, 0x85, 0xce, 0x11, 0x70, 0x71, 0x2f, 0x99, 0x6e, 0x35, 0x43, 0xfa, 0x77, + 0x24, 0xf8, 0x60, 0xb7, 0x06, 0x9c, 0x9a, 0xad, 0x55, 0xe6, 0x13, 0xa2, 0x28, 0x47, 0xb5, 0x17, + 0x6c, 0xca, 0x9a, 0x97, 0x24, 0x52, 0x8a, 0xcb, 0x93, 0x85, 0x59, 0x52, 0x8a, 0x7a, 0xd6, 0xde, + 0xc3, 0x10, 0x7e, 0x5d, 0x90, 0xe3, 0xb0, 0x8f, 0x51, 0x29, 0x36, 0xec, 0x9d, 0x7b, 0xd5, 0xed, + 0x09, 0xd6, 0x23, 0x5b, 0xdc, 0x23, 0x4e, 0xeb, 0x28, 0x69, 0x66, 0xb5, 0x95, 0x05, 0x55, 0x2e, + 0x5e, 0x2e, 0x90, 0x62, 0x1f, 0xdf, 0x7b, 0x71, 0xe7, 0x49, 0xb9, 0xda, 0x40, 0x59, 0x77, 0xc3, + 0xde, 0x82, 0x16, 0xb2, 0x37, 0x1d, 0x37, 0x73, 0xae, 0xdd, 0xe0, 0x89, 0x44, 0x3e, 0x0f, 0x30, + 0x73, 0xb4, 0x70, 0x18, 0xb2, 0x4f, 0xe1, 0x75, 0x97, 0x56, 0x16, 0x21, 0x77, 0x89, 0xb8, 0x13, + 0x17, 0xf9, 0xdb, 0xee, 0xbe, 0x43, 0x1c, 0xd6, 0x62, 0x74, 0x4f, 0x0d, 0xb7, 0xb1, 0x35, 0x94, + 0x44, 0x6b, 0x88, 0xf8, 0xd3, 0x00, 0x07, 0x5d, 0x17, 0x97, 0x68, 0x20, 0x22, 0x2d, 0xee, 0xd5, + 0xf5, 0x55, 0x0d, 0xad, 0xfc, 0x7a, 0xbd, 0xd9, 0xa9, 0xa3, 0xb9, 0xda, 0x78, 0xa5, 0x06, 0x8a, + 0x1e, 0x9a, 0x4b, 0xf1, 0x6c, 0x14, 0xca, 0x5b, 0x9d, 0x54, 0x46, 0x71, 0xa4, 0xf9, 0x29, 0xa9, + 0xf6, 0x29, 0x7c, 0xec, 0x3d, 0xc9, 0x2d, 0x8d, 0xa0, 0xb6, 0x5e, 0xc5, 0x5a, 0x74, 0xde, 0xda, + 0x0f, 0x7e, 0xe6, 0x73, 0x58, 0x2f, 0x5b, 0x51, 0x40, 0xbd, 0xfd, 0x91, 0x9e, 0xa3, 0x71, 0x09, + 0xef, 0x77, 0xce, 0xc5, 0xd5, 0x6c, 0x87, 0xf2, 0xcd, 0xf0, 0x0b, 0xdc, 0x29, 0xe8, 0x95, 0x55, + 0x4a, 0x23, 0x03, 0x86, 0x9d, 0x16, 0xfe, 0x97, 0x86, 0xc1, 0xc9, 0x28, 0xf1, 0x0b, 0x98, 0x31, + 0xe4, 0xea, 0xee, 0xe3, 0xf0, 0xa2, 0x9e, 0x43, 0xbe, 0x2c, 0x46, 0xa1, 0x09, 0x08, 0x26, 0x08, + 0x6f, 0x50, 0x94, 0x0e, 0x37, 0xb3, 0xce, 0xa3, 0xde, 0x5b, 0xee, 0x33, 0x86, 0x5a, 0x22, 0xa9, + 0xe6, 0x64, 0x9a, 0xba, 0x8d, 0xf2, 0xb0, 0x9e, 0xc2, 0xc8, 0x04, 0x6d, 0xe8, 0x65, 0xa0, 0x16, + 0xb0, 0x01, 0x93, 0x60, 0x6d, 0x1c, 0xcf, 0xff, 0x85, 0xde, 0xe4, 0xc1, 0x66, 0x43, 0x0e, 0x77, + 0xaf, 0xe2, 0xd2, 0xae, 0x31, 0xa2, 0x9e, 0x9c, 0x01, 0x0a, 0x0e, 0xe6, 0x39, 0xa4, 0xe1, 0x8c, + 0x88, 0xd5, 0x5e, 0x64, 0x7d, 0x0f, 0xed, 0x5e, 0x98, 0xc1, 0x49, 0xdc, 0x62, 0xe4, 0x61, 0xcf, + 0x1b, 0x1e, 0xea, 0x83, 0x11, 0x42, 0x5d, 0x80, 0x06, 0xcc, 0x0b, 0xa1, 0x53, 0x45, 0xab, 0x6d, + 0xe9, 0x00, 0x47, 0xf8, 0xda, 0xea, 0x27, 0xc1, 0x6c, 0x03, 0x2b, 0xaf, 0xcd, 0x54, 0xbc, 0x27, + 0x5b, 0x07, 0xef, 0x6c, 0xfb, 0xce, 0x3a, 0xe0, 0x98, 0x5f, 0x99, 0xb8, 0xb2, 0x08, 0xdd, 0xc6, + 0xbc, 0x94, 0xb5, 0x56, 0x25, 0x8d, 0x8d, 0x99, 0x24, 0x09, 0x37, 0x3f, 0x21, 0xae, 0x03, 0x69, + 0x84, 0x73, 0xd9, 0xd9, 0xda, 0x8f, 0xc6, 0x23, 0x95, 0xfa, 0xff, 0xec, 0x91, 0x4b, 0x81, 0x3e, + 0xbb, 0x2f, 0xc2, 0x7a, 0x3d, 0x65, 0xfc, 0x21, 0xc7, 0xcb, 0xec, 0x47, 0x63, 0x18, 0x33, 0xd1, + 0x45, 0x5d, 0x72, 0xbe, 0x89, 0xbb, 0x08, 0x41, 0xf3, 0xcc, 0xd6, 0xc7, 0xfa, 0xa6, 0xe1, 0x91, + 0x42, 0xf1, 0x96, 0xe6, 0x0e, 0x2b, 0x48, 0xfe, 0x5b, 0x09, 0x11, 0x44, 0xab, 0x24, 0x55, 0xef, + 0x68, 0x8a, 0x3f, 0xc9, 0x9e, 0x13, 0x7a, 0x8b, 0x4b, 0x96, 0x20, 0x3b, 0xbf, 0xcc, 0x8c, 0x55, + 0xe9, 0xe6, 0x6b, 0x28, 0xa0, 0x88, 0x68, 0x80, 0x66, 0x6e, 0x61, 0xb0, 0xdb, 0x2e, 0xf7, 0x93, + 0x53, 0x33, 0xdc, 0xb2, 0xfb, 0x00, 0xbe, 0x65, 0x5b, 0x1a, 0x28, 0x9d, 0xcd, 0xb2, 0xb4, 0x25, + 0xdf, 0x4f, 0x7c, 0xfc, 0x61, 0xd4, 0x2e, 0xcc, 0x50, 0x6a, 0x0c, 0xee, 0xd5, 0x0c, 0x9d, 0x7e, + 0xbd, 0x4c, 0x03, 0x6b, 0xf4, 0x8d, 0xbf, 0xeb, 0xa3, 0x0e, 0x24, 0x13, 0x6c, 0xc6, 0x3b, 0x1c, + 0xc2, 0x97, 0x04, 0x3d, 0xb2, 0x11, 0xbf, 0x29, 0x9a, 0x58, 0xd4, 0x56, 0xb4, 0x09, 0xa9, 0x81, + 0x03, 0x05, 0x62, 0x87, 0x8e, 0x34, 0x5b, 0xd5, 0x06, 0x06, 0x39, 0x1a, 0x9f, 0x04, 0xe8, 0x4a, + 0xf7, 0x0c, 0x91, 0xeb, 0x81, 0xb8, 0x95, 0x55, 0x2e, 0xa1, 0x69, 0xbb, 0x29, 0x5a, 0xd1, 0xb6, + 0x39, 0x5c, 0x2a, 0xe9, 0x76, 0x2e, 0x08, 0x48, 0x55, 0x73, 0x60, 0x69, 0xf8, 0x43, 0x39, 0xee, + 0xe8, 0xc6, 0xf6, 0xd7, 0xdb, 0xf9, 0x65, 0x84, 0x30, 0x1d, 0x75, 0x48, 0x29, 0xd1, 0xf4, 0xbb, + 0x76, 0x5c, 0x5c, 0x40, 0xbb, 0x46, 0xcb, 0x45, 0xe6, 0x4b, 0x10, 0x37, 0xb9, 0xe9, 0xc7, 0x91, + 0x3f, 0x0f, 0x9c, 0x02, 0x91, 0x9a, 0x27, 0x18, 0xbd, 0x26, 0xbf, 0x38, 0xc0, 0xf9, 0x14, 0xf5, + 0xf3, 0xe9, 0xb1, 0x14, 0x56, 0xc0, 0x7b, 0xdd, 0xa1, 0x43, 0x4d, 0xca, 0x68, 0x24, 0xb2, 0x23, + 0x47, 0xd5, 0x10, 0x7c, 0xb0, 0x51, 0x95, 0x7c, 0x54, 0xc2, 0x4d, 0xce, 0xc0, 0xa0, 0x62, 0xc2, + 0xa0, 0x8d, 0x52, 0x26, 0xea, 0x8f, 0x36, 0xf5, 0x9f, 0x26, 0x2b, 0x68, 0x20, 0x93, 0xa3, 0x3c, + 0xdf, 0xf9, 0xa5, 0xff, 0x35, 0x0f, 0x7e, 0xda, 0xc4, 0x5f, 0x5e, 0xca, 0xc6, 0xef, 0x49, 0x78, + 0x1a, 0xec, 0x6b, 0x18, 0x83, 0x50, 0xa1, 0x88, 0x12, 0xff, 0x92, 0x6d, 0x60, 0xff, 0x21, 0x0e, + 0x0c, 0xae, 0xbf, 0x3f, 0x82, 0x60, 0x64, 0x07, 0x1b, 0xd9, 0xbb, 0xb9, 0xea, 0x51, 0x87, 0xf4, + 0x1e, 0xc3, 0x60, 0xba, 0xe1, 0x01, 0x20, 0x30, 0x2b, 0x13, 0xf2, 0x58, 0x9f, 0x3b, 0xde, 0x25, + 0xb8, 0x7a, 0x9d, 0x47, 0xb6, 0x4c, 0x94, 0xb2, 0xb0, 0x7b, 0x28, 0x0b, 0xa5, 0x80, 0x22, 0x67, + 0x14, 0x49, 0x9e, 0x86, 0x0b, 0x69, 0xad, 0x1e, 0x27, 0xac, 0x1e, 0x0e, 0x44, 0x85, 0x2a, 0xa9, + 0x81, 0x9c, 0x35, 0xdf, 0x95, 0xec, 0x12, 0x7d, 0x32, 0x05, 0xfb, 0x72, 0x3f, 0x55, 0x24, 0xc8, + 0xb4, 0x59, 0xaa, 0x39, 0x36, 0xe4, 0x2b, 0x38, 0x14, 0xdb, 0x37, 0x8c, 0xba, 0x69, 0xce, 0xf0, + 0x76, 0x8e, 0x8f, 0x99, 0x4b, 0x3d, 0x07, 0x56, 0xaf, 0x96, 0xf2, 0xe1, 0xad, 0x41, 0x97, 0x09, + 0x52, 0x7c, 0x84, 0xcc, 0xb9, 0x84, 0x61, 0x0c, 0xf6, 0xb8, 0x3f, 0x90, 0x0c, 0xef, 0x2e, 0x6c, + 0xd9, 0x44, 0x9e, 0x17, 0x64, 0x7d, 0x7f, 0x78, 0xe1, 0x45, 0x63, 0xd3, 0x97, 0xfa, 0xd2, 0x3e, + 0x70, 0x6b, 0x36, 0x1f, 0x74, 0x6f, 0x27, 0x97, 0x38, 0xb1, 0x20, 0xdc, 0xb3, 0x8a, 0x33, 0x1b, + 0x62, 0xb1, 0x1a, 0x92, 0x42, 0x55, 0x0e, 0x18, 0xa1, 0xd2, 0xf1, 0xe9, 0xed, 0x03, 0xe9, 0xc9, + 0xdc, 0xa0, 0x18, 0xd7, 0x7f, 0xcf, 0x8b, 0xef, 0x00, 0x1f, 0x50, 0xac, 0x04, 0x2a, 0x93, 0x4e, + 0x00, 0xd2, 0x32, 0xe5, 0xb1, 0xc3, 0x6d, 0xe0, 0x57, 0xf5, 0x0e, 0x6d, 0x1c, 0x5f, 0xb7, 0xf6, + 0xaa, 0xb6, 0xc3, 0x63, 0x7c, 0x34, 0xed, 0x22, 0x9e, 0x61, 0xd7, 0xe0, 0x1c, 0x6c, 0xa7, 0x77, + 0xd2, 0x5e, 0x99, 0xee, 0xa3, 0x24, 0x00, 0xe3, 0x93, 0x2a, 0x62, 0x4b, 0x99, 0x56, 0xf9, 0xfe, + 0x9c, 0x70, 0x91, 0x27, 0x6f, 0x62, 0x39, 0xf9, 0xe0, 0x6e, 0xc0, 0x17, 0xe2, 0x6e, 0xed, 0x67, + 0x18, 0xb3, 0x7b, 0x5f, 0x8f, 0x18, 0x68, 0x8c, 0x29, 0x7b, 0x79, 0x97, 0x73, 0x0d, 0xcd, 0x1b, + 0xfa, 0x08, 0xab, 0x1f, 0x24, 0x71, 0x37, 0x7f, 0x82, 0x6f, 0x29, 0x89, 0xe1, 0x5b, 0x2c, 0xeb, + 0x73, 0xfe, 0x55, 0x91, 0x2c, 0x14, 0xac, 0x9a, 0x43, 0x6d, 0xd5, 0x06, 0x1b, 0xdc, 0x9f, 0x90, + 0x02, 0x6b, 0xf5, 0x6d, 0x8c, 0x3c, 0x04, 0xf0, 0xa7, 0x2d, 0x6a, 0x3a, 0x6b, 0xc7, 0x8d, 0x16, + 0x78, 0xa4, 0x06, 0x1b, 0x9f, 0x0d, 0x62, 0x6b, 0x81, 0x63, 0xb9, 0x22, 0xd4, 0x2c, 0xfb, 0x70, + 0xdd, 0x78, 0x46, 0xf0, 0x7b, 0x37, 0x64, 0x5f, 0xf8, 0xfd, 0x9d, 0x3a, 0x4e, 0xb9, 0x56, 0x02, + 0x0b, 0x3e, 0x19, 0x02, 0x5a, 0x12, 0x14, 0x95, 0x4e, 0x88, 0x58, 0xa1, 0x55, 0xd4, 0xde, 0xae, + 0x1d, 0x4b, 0xd3, 0x5b, 0x8f, 0xb9, 0x63, 0xfa, 0x3a, 0xe3, 0x5e, 0x76, 0xd6, 0x4b, 0x7e, 0x30, + 0xce, 0xf7, 0x37, 0xa9, 0x53, 0x3b, 0x61, 0x0c, 0x62, 0x73, 0x85, 0xfa, 0x7b, 0x93, 0x85, 0x75, + 0x90, 0x9e, 0x15, 0x1d, 0x88, 0x9d, 0x3c, 0x76, 0xa8, 0x9c, 0xe0, 0x3e, 0xda, 0xf3, 0x2c, 0x99, + 0x98, 0x6a, 0x41, 0x01, 0xd8, 0xb2, 0xdd, 0x43, 0x23, 0x64, 0xd8, 0xa7, 0x27, 0xdf, 0xbc, 0x3d, + 0xb7, 0xa3, 0x5a, 0xda, 0x6f, 0xdc, 0x0f, 0x30, 0xd1, 0xaa, 0x72, 0x61, 0xde, 0xc6, 0xa2, 0xba, + 0x9e, 0x01, 0x1b, 0x3f, 0x42, 0x82, 0xb3, 0x0b, 0xe1, 0xf1, 0x63, 0x96, 0xf5, 0x3b, 0x0b, 0xd9, + 0x14, 0x1d, 0x79, 0x2f, 0x76, 0xf4, 0xaf, 0x0f, 0x4c, 0x3b, 0xe0, 0xe7, 0xb8, 0xe1, 0x9f, 0x9f, + 0x80, 0x8a, 0xb3, 0x03, 0xe4, 0x90, 0x84, 0x9b, 0x7d, 0xa4, 0x2b, 0x61, 0x76, 0x85, 0x03, 0xd4, + 0x31, 0xbb, 0xba, 0x94, 0x0e, 0xf5, 0x05, 0xda, 0x83, 0x99, 0x55, 0xfc, 0x1e, 0x86, 0x5e, 0xf9, + 0x52, 0x66, 0x60, 0x78, 0x04, 0x70, 0xc5, 0x2d, 0x24, 0xd6, 0x1d, 0xcb, 0x05, 0xd6, 0xc1, 0x9d, + 0xc4, 0xd0, 0x2e, 0xb9, 0x06, 0x9d, 0xb9, 0x11, 0x80, 0x09, 0x5f, 0x57, 0x0b, 0x58, 0xf7, 0x98, + 0xfe, 0xcb, 0xaf, 0x5c, 0x59, 0xcb, 0xbc, 0x5c, 0x8e, 0xf7, 0x66, 0x2b, 0x69, 0xdf, 0xa3, 0x3d, + 0xb7, 0xad, 0xd0, 0x1b, 0x2d, 0x77, 0x75, 0xd5, 0x30, 0xaf, 0xd3, 0x05, 0xc6, 0x97, 0xdf, 0x75, + 0xcd, 0x2c, 0xfa, 0x4b, 0x6a, 0xe5, 0x3e, 0x11, 0xb3, 0xfc, 0x7d, 0xda, 0xd0, 0x2b, 0xa8, 0xd5, + 0xf9, 0xf4, 0x1a, 0x6b, 0x32, 0xce, 0x94, 0x9d, 0xa2, 0xc0, 0xca, 0x7c, 0x47, 0x30, 0x38, 0x0d, + 0xca, 0x46, 0xea, 0x8d, 0x3d, 0xe1, 0xf7, 0x29, 0xd5, 0x39, 0x02, 0x92, 0x83, 0x6f, 0xdb, 0x42, + 0xdd, 0xab, 0xe7, 0x03, 0x5d, 0x34, 0x0f, 0x91, 0x38, 0x7d, 0x46, 0x1c, 0x28, 0xe5, 0x77, 0xc6, + 0xb5, 0xd8, 0x1b, 0x5a, 0xca, 0xd8, 0x4c, 0xbd, 0xb8, 0x14, 0x5b, 0x1a, 0xdf, 0x17, 0x73, 0x90, + 0x4b, 0x01, 0xf6, 0x7e, 0xd0, 0x7a, 0x0e, 0xcc, 0x4c, 0x58, 0xfa, 0x41, 0x51, 0xbe, 0x96, 0x2d, + 0x38, 0xfd, 0x68, 0x3f, 0x4b, 0xad, 0x6f, 0xb4, 0x0e, 0x4f, 0x29, 0xc8, 0xf9, 0x2c, 0x7d, 0xca, + 0x07, 0xb6, 0x29, 0xc5, 0x04, 0x72, 0xc1, 0x69, 0xc4, 0xee, 0xd4, 0x22, 0x96, 0xb5, 0x1b, 0x0b, + 0xbe, 0x9e, 0x39, 0x2a, 0xf7, 0x5f, 0x36, 0x7f, 0xeb, 0x75, 0xd4, 0x4b, 0x8b, 0x58, 0xab, 0x61, + 0x25, 0x4e, 0xc4, 0x56, 0x5e, 0x76, 0x16, 0x9f, 0xcb, 0xee, 0xc7, 0xd9, 0x36, 0xfa, 0x71, 0x14, + 0x65, 0x2b, 0xe0, 0x34, 0xbb, 0x42, 0xcf, 0x9e, 0xac, 0xa4, 0x17, 0x52, 0x77, 0x5b, 0x92, 0x9b, + 0xfa, 0xb6, 0x09, 0x53, 0x71, 0x28, 0x70, 0xa2, 0x6d, 0xb8, 0x79, 0x1a, 0x98, 0x82, 0xde, 0x94, + 0xdb, 0xe6, 0x4d, 0x1c, 0x46, 0x26, 0x7e, 0x33, 0x61, 0x92, 0x24, 0xae, 0x66, 0xcf, 0xa8, 0x62, + 0xac, 0xd9, 0x96, 0xce, 0xd6, 0xc7, 0xc2, 0x10, 0x16, 0x95, 0x82, 0xab, 0x12, 0x4c, 0x03, 0x14, + 0x3b, 0x74, 0x0d, 0x01, 0x7a, 0x4a, 0x53, 0x24, 0xec, 0xf1, 0xdb, 0xd6, 0x5a, 0xf0, 0x2c, 0xb5, + 0x80, 0x8c, 0x37, 0x39, 0x5f, 0x87, 0x65, 0x97, 0x60, 0x47, 0x73, 0x89, 0x4f, 0xb2, 0x35, 0x9c, + 0xe5, 0x89, 0x47, 0x06, 0x09, 0xd5, 0x81, 0x7b, 0x3e, 0x64, 0xd2, 0xcd, 0xa3, 0xb9, 0x8e, 0x31, + 0xde, 0x7e, 0xf8, 0xbf, 0x8a, 0x58, 0x5c, 0xf1, 0xd6, 0x3c, 0xd4, 0x0f, 0x6a, 0xbd, 0x95, 0xc2, + 0x51, 0x7a, 0x8f, 0x57, 0x3a, 0x72, 0x2a, 0x00, 0xcd, 0x5e, 0xf3, 0x94, 0x99, 0x82, 0x82, 0x4b, + 0x87, 0x8f, 0xee, 0xbe, 0xb7, 0xf2, 0xca, 0xff, 0x0a, 0xd6, 0x98, 0x12, 0xd6, 0xb4, 0x5f, 0x57, + 0xb4, 0xd3, 0xc0, 0xa4, 0xc3, 0xd2, 0xfe, 0x74, 0x65, 0x82, 0xcc, 0x2e, 0xad, 0x66, 0x4c, 0x53, + 0x3d, 0x17, 0xcd, 0xf7, 0xb1, 0x98, 0x9f, 0x9a, 0xd1, 0xa9, 0x01, 0x09, 0x9f, 0x3f, 0x9c, 0x97, + 0x1e, 0xf6, 0xd8, 0x6b, 0xf8, 0x50, 0x82, 0x5d, 0xfe, 0x77, 0x05, 0x49, 0xaa, 0xa8, 0xcd, 0x93, + 0xb1, 0x2b, 0xb5, 0xeb, 0xd0, 0x08, 0x11, 0x0c, 0x77, 0xcb, 0x8d, 0xc6, 0xfa, 0x16, 0x42, 0xbd, + 0x00, 0xae, 0x16, 0x9b, 0xd8, 0x40, 0xc8, 0xca, 0xcb, 0x20, 0x7a, 0x37, 0xb4, 0x01, 0x09, 0x79, + 0xc5, 0xb9, 0x73, 0xd8, 0xe1, 0x3b, 0x65, 0x7c, 0x8e, 0x30, 0xc3, 0xef, 0x25, 0x4e, 0xc4, 0x83, + 0x95, 0x95, 0x73, 0x97, 0xd9, 0x4f, 0x63, 0xed, 0x2a, 0x9d, 0x2f, 0xbf, 0x42, 0x4f, 0xd5, 0xfe, + 0x93, 0x18, 0xff, 0x42, 0xcd, 0x4f, 0x0d, 0x99, 0x33, 0x31, 0x0f, 0x19, 0x36, 0xfb, 0x50, 0x17, + 0x1e, 0x1f, 0xb6, 0xe9, 0x6e, 0x51, 0x76, 0x41, 0x18, 0x5e, 0xea, 0x6c, 0x9a, 0x42, 0xfa, 0xbf, + 0x68, 0x50, 0x07, 0xc7, 0xf9, 0xef, 0x3e, 0x4e, 0x34, 0xb4, 0x3e, 0xe5, 0x69, 0xc8, 0xbb, 0x98, + 0xd8, 0xcc, 0x9a, 0x10, 0xc0, 0x4e, 0x62, 0x40, 0x8b, 0x03, 0xf4, 0xc1, 0x7b, 0x62, 0xdc, 0x53, + 0xa6, 0xad, 0xe4, 0x91, 0xf5, 0xb3, 0xa3, 0xf8, 0x84, 0xa7, 0x25, 0x19, 0x44, 0x68, 0xbc, 0x7b, + 0x4e, 0x05, 0x6b, 0x7e, 0x3e, 0xb4, 0x8b, 0xea, 0x4d, 0x3b, 0x71, 0xe2, 0x06, 0xf3, 0xcb, 0xda, + 0x52, 0xae, 0xa5, 0x44, 0x8e, 0x7e, 0x78, 0xbe, 0x3c, 0xa9, 0x57, 0xaf, 0x47, 0x06, 0xf5, 0xf2, + 0x8f, 0xe3, 0x5f, 0xbe, 0x9e, 0x1b, 0x6f, 0xfc, 0xbf, 0xc1, 0x82, 0x45, 0x85, 0xca, 0x08, 0xa6, + 0xd1, 0xfe, 0x9f, 0xc2, 0x37, 0x31, 0x6a, 0x67, 0x2c, 0x4d, 0x45, 0x95, 0xba, 0xca, 0x0b, 0xdf, + 0x81, 0xf0, 0x68, 0x32, 0xa0, 0x6c, 0xc0, 0x92, 0x87, 0x3d, 0x85, 0xe4, 0x81, 0xe2, 0xd3, 0x80, + 0x0c, 0x3b, 0xb0, 0xb9, 0x45, 0x6e, 0x0e, 0xdb, 0xc0, 0xcf, 0x48, 0xf7, 0x04, 0xb3, 0x54, 0xb7, + 0x71, 0xf9, 0x2d, 0xe2, 0xf2, 0xea, 0x5e, 0xa1, 0xe7, 0x05, 0x92, 0xe2, 0xfa, 0xe7, 0x9b, 0xea, + 0x37, 0xb3, 0x55, 0xbf, 0xec, 0xd8, 0x61, 0xa8, 0x2a, 0x76, 0x54, 0x45, 0x0c, 0xf3, 0xc1, 0xb5, + 0xf5, 0xc5, 0xf9, 0x00, 0x4b, 0xd3, 0x47, 0xf4, 0xa8, 0xe8, 0x0c, 0x77, 0x85, 0xe5, 0xc3, 0x69, + 0xed, 0xc3, 0x30, 0xaf, 0xfd, 0x0b, 0x54, 0x46, 0x88, 0x1c, 0x83, 0x76, 0xc4, 0x57, 0xa8, 0x8e, + 0x51, 0xc2, 0xb2, 0x76, 0x08, 0x23, 0x2d, 0x4e, 0x29, 0xae, 0x0f, 0xb4, 0x1f, 0x3a, 0x78, 0x3c, + 0x8b, 0x73, 0x7d, 0x30, 0xb0, 0x75, 0x3e, 0xe0, 0x1a, 0x85, 0x65, 0xa3, 0x21, 0xb9, 0x53, 0x04, + 0xbd, 0xfb, 0x20, 0x31, 0xfe, 0xbd, 0xf5, 0x55, 0x2c, 0xee, 0x1f, 0xab, 0xe6, 0x50, 0xdc, 0x3d, + 0x6e, 0x31, 0x4f, 0xcb, 0xca, 0x3a, 0x4d, 0x19, 0x7b, 0x3b, 0xae, 0xd8, 0xf7, 0xfb, 0xa5, 0x6d, + 0x92, 0x30, 0x26, 0x00, 0x02, 0xda, 0xd0, 0xd8, 0x61, 0x06, 0x81, 0x4e, 0xf9, 0x66, 0x60, 0x0d, + 0x48, 0x6e, 0x58, 0x08, 0xdb, 0xfb, 0xc3, 0x39, 0x5f, 0x90, 0xbf, 0x51, 0xb5, 0x37, 0x9f, 0xc2, + 0x87, 0x63, 0xb8, 0x39, 0x46, 0x6a, 0xdf, 0x3d, 0x48, 0x02, 0xff, 0x01, 0x24, 0x49, 0xf8, 0x5a, + 0x52, 0xbb, 0xfd, 0x56, 0xfa, 0x00, 0x11, 0x97, 0xbb, 0x88, 0xba, 0x2b, 0x54, 0x00, 0xd9, 0xc6, + 0x78, 0x93, 0x3f, 0xab, 0xfa, 0x56, 0x68, 0x5d, 0x73, 0x2b, 0xc7, 0x90, 0xad, 0x51, 0x19, 0x82, + 0x02, 0x42, 0x66, 0x10, 0x40, 0x07, 0x99, 0x87, 0x2f, 0x9c, 0x1c, 0xe6, 0x39, 0x9d, 0x84, 0xab, + 0x08, 0xbc, 0xbf, 0x44, 0x17, 0xbe, 0x41, 0x83, 0x9b, 0xb0, 0x36, 0x15, 0xe1, 0x9d, 0xfb, 0x8a, + 0x87, 0x7a, 0x6f, 0xcc, 0x46, 0x0a, 0xb7, 0xbb, 0x1d, 0x8f, 0xdd, 0xa4, 0x8b, 0xb3, 0x0e, 0x78, + 0x7f, 0x89, 0xd5, 0x49, 0x81, 0xe7, 0x5a, 0x09, 0x5b, 0x5b, 0x98, 0xf2, 0x65, 0xfc, 0x78, 0x09, + 0xa0, 0xe3, 0xd7, 0x66, 0xa5, 0xaf, 0xd5, 0x8e, 0x1c, 0x80, 0x43, 0x56, 0x12, 0x9a, 0x03, 0x72, + 0x5c, 0xcc, 0x82, 0x50, 0xf7, 0x53, 0x97, 0xda, 0xfc, 0xf0, 0x96, 0xda, 0xec, 0x10, 0x57, 0xc2, + 0xc4, 0x02, 0x06, 0xdb, 0x2d, 0xe6, 0x96, 0x29, 0x0b, 0x04, 0x56, 0xf9, 0x39, 0x02, 0x37, 0x3c, + 0x65, 0x9a, 0x76, 0xa1, 0x0b, 0x1c, 0xa3, 0xae, 0x7c, 0xae, 0xb3, 0x68, 0x5c, 0x1b, 0x2f, 0xaf, + 0xfe, 0x9c, 0xb9, 0x64, 0x3d, 0x35, 0x84, 0x2d, 0x26, 0x48, 0xa8, 0x4d, 0x0a, 0x57, 0xec, 0x15, + 0x2f, 0x7b, 0x8d, 0x1a, 0x6d, 0xb4, 0x72, 0xb1, 0xf3, 0xfa, 0x97, 0x9f, 0x3a, 0x8a, 0xe6, 0x5e, + 0xf1, 0xc4, 0xcc, 0x6e, 0x75, 0x25, 0x5b, 0x4d, 0x6b, 0xac, 0x47, 0x30, 0xa5, 0x64, 0x51, 0xf1, + 0x87, 0xf0, 0x85, 0x54, 0x82, 0x23, 0x3e, 0xf8, 0x32, 0xbd, 0x11, 0x17, 0x8a, 0xb3, 0x49, 0xac, + 0xec, 0x6f, 0x59, 0x7e, 0x5f, 0xd0, 0xcd, 0x3f, 0xa8, 0x1e, 0xa8, 0xd6, 0xb8, 0xda, 0x92, 0x03, + 0x4f, 0xc8, 0x12, 0x59, 0x93, 0x8c, 0xb3, 0x48, 0x8a, 0x80, 0xef, 0xbe, 0xb9, 0xd4, 0xfa, 0x90, + 0xd9, 0xf2, 0x1c, 0x7a, 0x3e, 0x73, 0x99, 0x33, 0xaf, 0x6a, 0x79, 0x03, 0xf2, 0x02, 0x5b, 0x1a, + 0x4f, 0xf7, 0x09, 0x9a, 0x7a, 0x07, 0xd4, 0xe8, 0x88, 0xc1, 0x5b, 0xf0, 0x05, 0xd0, 0x30, 0xab, + 0x6c, 0x18, 0x6a, 0x3e, 0x8d, 0x1e, 0xdd, 0x2d, 0xdb, 0x23, 0xa8, 0xdb, 0x7c, 0xaa, 0xd1, 0xd6, + 0xe3, 0xc6, 0xaa, 0xf7, 0x34, 0xad, 0x09, 0xba, 0xf2, 0xa7, 0x16, 0xed, 0x88, 0x7c, 0xe4, 0xe4, + 0xcc, 0x99, 0x7e, 0xa1, 0xb4, 0x8f, 0xaf, 0x35, 0x11, 0x01, 0x42, 0xf2, 0x19, 0x37, 0x51, 0x18, + 0x25, 0xc2, 0x35, 0x43, 0xde, 0x85, 0xd8, 0x43, 0x41, 0x16, 0x59, 0x28, 0x1e, 0xc8, 0x6f, 0xd2, + 0xba, 0xbf, 0x18, 0x52, 0x9c, 0x13, 0x9c, 0x15, 0xe9, 0xbc, 0xd7, 0x21, 0xfa, 0x59, 0x9a, 0x60, + 0x1e, 0xec, 0x64, 0xd9, 0x60, 0x8d, 0x31, 0x8c, 0xd6, 0x1e, 0x7d, 0xc4, 0xa8, 0x81, 0x76, 0x41, + 0xa2, 0x41, 0x37, 0x04, 0xe4, 0x87, 0xc5, 0xe4, 0x58, 0x01, 0x37, 0x93, 0x9a, 0x76, 0xbd, 0x20, + 0x86, 0xc9, 0xb7, 0x52, 0xb6, 0xd3, 0x59, 0x3f, 0x9f, 0xc8, 0xea, 0xbb, 0x9a, 0x71, 0x34, 0x36, + 0x26, 0x83, 0xd2, 0xab, 0xb6, 0x6b, 0x45, 0x58, 0x0b, 0x73, 0xfd, 0x8d, 0x50, 0x0d, 0x81, 0x12, + 0x10, 0x5a, 0xdf, 0x2c, 0x53, 0x6b, 0x48, 0x18, 0x60, 0x10, 0x69, 0xcd, 0x73, 0x52, 0x40, 0xd6, + 0x14, 0x69, 0x68, 0x68, 0x8e, 0xe3, 0x01, 0x54, 0x3c, 0x8e, 0x8b, 0xe0, 0x77, 0x77, 0xdc, 0x5f, + 0xca, 0x01, 0xc6, 0x08, 0x0b, 0xbf, 0x16, 0x5d, 0x71, 0x8f, 0x3e, 0xf7, 0x8e, 0x8f, 0x1f, 0x66, + 0xcf, 0x49, 0xb3, 0xe8, 0x55, 0x00, 0x8d, 0x86, 0xcb, 0x3f, 0x2b, 0x03, 0x61, 0xde, 0x10, 0x4e, + 0x7b, 0x24, 0xb2, 0x08, 0xec, 0x0f, 0xe6, 0xcd, 0x9c, 0xa1, 0xa4, 0x98, 0xe0, 0x0d, 0xcd, 0x20, + 0xfa, 0x3a, 0x83, 0xb5, 0xec, 0x4c, 0x69, 0xa6, 0xfa, 0x2d, 0xe6, 0x76, 0xda, 0x8c, 0xc2, 0xe2, + 0x04, 0x75, 0xfd, 0xb3, 0xdc, 0x8d, 0x93, 0x64, 0xd1, 0xa3, 0xcc, 0xb0, 0xf5, 0xbd, 0x0a, 0xaa, + 0xbe, 0x0e, 0xe8, 0x19, 0x01, 0xb8, 0xc2, 0x4f, 0x5e, 0x78, 0x2f, 0x1a, 0x30, 0xf0, 0xb3, 0x8a, + 0x5d, 0x9d, 0xc5, 0xac, 0xf4, 0x7b, 0x0d, 0xe4, 0xd4, 0x96, 0xea, 0xca, 0x4b, 0x85, 0x81, 0x3a, + 0x0d, 0xe9, 0x0b, 0x37, 0x56, 0x9d, 0x0e, 0xd7, 0x02, 0x67, 0x87, 0x03, 0x09, 0xfd, 0x1b, 0x67, + 0xd5, 0xe4, 0x69, 0xcc, 0xfc, 0xc3, 0xbf, 0x9a, 0x6d, 0x93, 0xc4, 0x45, 0x9c, 0xf8, 0xd9, 0x03, + 0xad, 0x65, 0x70, 0x82, 0x49, 0xd3, 0xac, 0xa7, 0x8a, 0xf3, 0xda, 0x01, 0xbd, 0x26, 0xb3, 0xa4, + 0xd7, 0x8a, 0x91, 0xbf, 0xea, 0x8b, 0x2b, 0xb0, 0x6c, 0xd8, 0x84, 0x7b, 0x4b, 0xf4, 0x2c, 0xbc, + 0x45, 0x30, 0xe1, 0xf0, 0xbf, 0xfc, 0x4c, 0x81, 0xfc, 0x07, 0xa7, 0xea, 0x34, 0xcb, 0x15, 0x55, + 0xa9, 0x9e, 0x70, 0x4f, 0xbb, 0xd8, 0x1b, 0xd6, 0x1b, 0x2d, 0x4e, 0x20, 0x72, 0x44, 0x00, 0x36, + 0x1f, 0x23, 0x06, 0x40, 0x7e, 0xde, 0x3e, 0xd4, 0x61, 0x6f, 0x12, 0x56, 0x04, 0xd7, 0x58, 0x2f, + 0x8d, 0x66, 0x0b, 0xff, 0xd2, 0x23, 0x5c, 0xf4, 0xd4, 0xa3, 0x58, 0xd0, 0x6d, 0xf6, 0x98, 0xab, + 0xc5, 0x53, 0xea, 0xc4, 0x37, 0x47, 0xc3, 0x4a, 0x8d, 0xc6, 0x4c, 0x19, 0x5d, 0x17, 0xb4, 0x39, + 0x71, 0xe9, 0x99, 0x82, 0xe6, 0x5b, 0xc5, 0x90, 0x33, 0xf7, 0x5b, 0x8d, 0x98, 0x4c, 0xcd, 0x7a, + 0x6b, 0xd8, 0xb9, 0x8c, 0x11, 0x34, 0x8d, 0xc0, 0x9a, 0x57, 0x2a, 0x12, 0xd5, 0x7f, 0x3f, 0x94, + 0x70, 0x93, 0x1a, 0x11, 0xe9, 0xf3, 0x99, 0x4f, 0x10, 0x38, 0xc7, 0xc2, 0xec, 0x62, 0xac, 0x59, + 0x90, 0x3a, 0x85, 0x1d, 0xeb, 0xee, 0xa3, 0x90, 0x59, 0xfd, 0x0a, 0x07, 0x0a, 0xc7, 0x32, 0x2d, + 0x11, 0x18, 0x53, 0x70, 0x80, 0x59, 0x59, 0x51, 0x33, 0xd8, 0x29, 0x85, 0xf4, 0x09, 0xf6, 0x76, + 0x1e, 0x49, 0xa6, 0x79, 0xc1, 0x2c, 0xae, 0xa6, 0x54, 0xbe, 0xf6, 0x54, 0xb1, 0x95, 0x39, 0x97, + 0xeb, 0xdc, 0xb2, 0xff, 0x99, 0x19, 0x9a, 0x9b, 0x0e, 0xad, 0x0e, 0x3f, 0xbf, 0xe0, 0x39, 0x8e, + 0x27, 0x37, 0x1c, 0xdc, 0x86, 0x20, 0x1f, 0x21, 0xd5, 0x0e, 0xd6, 0xbc, 0x45, 0x3e, 0x1d, 0x33, + 0x3b, 0x15, 0x35, 0xf9, 0x52, 0x98, 0x6f, 0x9a, 0x44, 0x25, 0x01, 0x6b, 0x3d, 0x47, 0x3b, 0x11, + 0x35, 0x0e, 0x2a, 0xb5, 0x4e, 0xb3, 0xc9, 0x24, 0xe5, 0xae, 0x5b, 0x0e, 0x5f, 0x6a, 0x85, 0x89, + 0xe5, 0x94, 0xd1, 0x74, 0x08, 0x70, 0x8b, 0xbe, 0x4d, 0xb8, 0x77, 0x4c, 0xa3, 0x14, 0x04, 0x09, + 0xfe, 0x17, 0x0a, 0xca, 0xb0, 0x9a, 0x5d, 0x63, 0x01, 0xd0, 0xf3, 0xe9, 0x3d, 0xde, 0xaf, 0x0b, + 0x31, 0x13, 0x61, 0x7a, 0x99, 0xf7, 0x00, 0x17, 0xb0, 0x3a, 0xfc, 0x27, 0x62, 0xfe, 0xd1, 0x36, + 0x87, 0xb5, 0xfe, 0xd2, 0xad, 0xff, 0xfd, 0xfb, 0xb5, 0x38, 0x8b, 0xca, 0x64, 0xdc, 0x55, 0xb5, + 0x4e, 0xed, 0x07, 0x07, 0x97, 0x13, 0x6b, 0xa1, 0x33, 0x42, 0x95, 0xb2, 0xaa, 0x0b, 0xf9, 0x1d, + 0x94, 0x86, 0x37, 0x17, 0xe4, 0x7a, 0x63, 0xe8, 0x99, 0x5b, 0xe9, 0xfc, 0x30, 0x6e, 0x26, 0xed, + 0x21, 0xd2, 0x0a, 0x28, 0xe5, 0xa0, 0xd7, 0x64, 0x02, 0x5e, 0xb1, 0x3a, 0x40, 0x4d, 0x2c, 0x2b, + 0x4e, 0xc9, 0xbe, 0xf3, 0xe6, 0x91, 0x34, 0xe6, 0x71, 0xd5, 0xce, 0xdb, 0x47, 0x40, 0xbd, 0x80, + 0x80, 0x48, 0x9b, 0xaf, 0x81, 0xf4, 0x83, 0x3f, 0x8e, 0x3c, 0x49, 0xf6, 0x29, 0x0c, 0x17, 0x91, + 0xf2, 0x8f, 0x83, 0xfb, 0xb6, 0x04, 0x57, 0x13, 0x2f, 0x59, 0xa1, 0x7b, 0x72, 0xd4, 0x6c, 0x84, + 0x41, 0x36, 0x86, 0x9e, 0x56, 0x7a, 0x73, 0x59, 0x54, 0x47, 0x8c, 0x85, 0x3f, 0x8d, 0x3a, 0xcc, + 0x1b, 0x0b, 0x97, 0x26, 0x7a, 0x53, 0x09, 0x05, 0x37, 0xa1, 0x6d, 0x36, 0x62, 0xe9, 0x43, 0xb1, + 0xf3, 0xe3, 0xb1, 0xc0, 0x80, 0xf7, 0x2e, 0xae, 0x49, 0x7a, 0xe6, 0xba, 0x1b, 0x42, 0x87, 0x5c, + 0xc3, 0xae, 0x2c, 0xd0, 0xd2, 0x98, 0x77, 0x43, 0xd1, 0x81, 0x26, 0x9a, 0xe2, 0xbf, 0xf4, 0x6f, + 0xee, 0x24, 0x52, 0xfb, 0x1f, 0x6a, 0x1f, 0x21, 0xef, 0xf0, 0xc6, 0x02, 0x85, 0xde, 0x1a, 0x4d, + 0x13, 0xff, 0xa1, 0x58, 0x43, 0x79, 0xb7, 0xc9, 0x45, 0x51, 0x3f, 0x90, 0xb6, 0x76, 0xbb, 0xfb, + 0x51, 0x8e, 0x37, 0xab, 0x13, 0x36, 0x84, 0x7b, 0xea, 0xea, 0x68, 0x49, 0xd7, 0x5b, 0x42, 0x64, + 0x09, 0x76, 0x7b, 0x6e, 0xe6, 0x93, 0xd3, 0x27, 0x37, 0xce, 0x2f, 0xd7, 0x3b, 0x1e, 0xf0, 0xd2, + 0x15, 0xb0, 0xc9, 0xb3, 0x09, 0xef, 0xfe, 0x60, 0xa5, 0x79, 0xb5, 0xb6, 0x30, 0x85, 0x0e, 0xcc, + 0xbb, 0x23, 0x53, 0x58, 0x28, 0xf5, 0x66, 0xe7, 0xed, 0x2a, 0x0e, 0x8e, 0xdd, 0x23, 0x0d, 0x36, + 0x84, 0xf3, 0xbe, 0x75, 0xe9, 0xf7, 0x47, 0x07, 0xf4, 0x39, 0x7b, 0x57, 0xe7, 0x1d, 0x94, 0xff, + 0xe7, 0xe4, 0x9b, 0x91, 0x3d, 0x6e, 0xba, 0x28, 0xca, 0x07, 0xbb, 0xc9, 0xb1, 0x84, 0x7c, 0x6a, + 0x50, 0x97, 0xf1, 0xf7, 0x22, 0xa7, 0xa3, 0x36, 0x28, 0xe9, 0x3a, 0x60, 0x30, 0x84, 0x73, 0xe8, + 0x60, 0xbf, 0x26, 0xac, 0x57, 0xa9, 0xab, 0xd2, 0xb1, 0x3f, 0xff, 0xfc, 0x33, 0xe0, 0x8d +}; + +fastimage_t bfin_logo = { + DEF_BFIN_LOGO_DATA, + DEF_BFIN_LOGO_WIDTH, + DEF_BFIN_LOGO_HEIGHT, + DEF_BFIN_LOGO_BPP, + DEF_BFIN_LOGO_PIXEL_SIZE, + DEF_BFIN_LOGO_SIZE +}; diff --git a/arch/nds32/cpu/n1213/ag101/cpu.c b/arch/nds32/cpu/n1213/ag101/cpu.c index c2636b1..a9991e7 100644 --- a/arch/nds32/cpu/n1213/ag101/cpu.c +++ b/arch/nds32/cpu/n1213/ag101/cpu.c @@ -82,115 +82,3 @@ int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) /*NOTREACHED*/ } - -static inline unsigned long CACHE_LINE_SIZE(enum cache_t cache) -{ - if (cache == ICACHE) - return 8 << (((GET_ICM_CFG() & ICM_CFG_MSK_ISZ) \ - >> ICM_CFG_OFF_ISZ) - 1); - else - return 8 << (((GET_DCM_CFG() & DCM_CFG_MSK_DSZ) \ - >> DCM_CFG_OFF_DSZ) - 1); -} - -void dcache_flush_range(unsigned long start, unsigned long end) -{ - unsigned long line_size; - - line_size = CACHE_LINE_SIZE(DCACHE); - - while (end > start) { - __asm__ volatile ("\n\tcctl %0, L1D_VA_WB" : : "r"(start)); - __asm__ volatile ("\n\tcctl %0, L1D_VA_INVAL" : : "r"(start)); - start += line_size; - } -} - -void icache_inval_range(unsigned long start, unsigned long end) -{ - unsigned long line_size; - - line_size = CACHE_LINE_SIZE(ICACHE); - while (end > start) { - __asm__ volatile ("\n\tcctl %0, L1I_VA_INVAL" : : "r"(start)); - start += line_size; - } -} - -void flush_cache(unsigned long addr, unsigned long size) -{ - dcache_flush_range(addr, addr + size); - icache_inval_range(addr, addr + size); -} - -void icache_enable(void) -{ - __asm__ __volatile__ ( - "mfsr $p0, $mr8\n\t" - "ori $p0, $p0, 0x01\n\t" - "mtsr $p0, $mr8\n\t" - "isb\n\t" - ); -} - -void icache_disable(void) -{ - __asm__ __volatile__ ( - "mfsr $p0, $mr8\n\t" - "li $p1, ~0x01\n\t" - "and $p0, $p0, $p1\n\t" - "mtsr $p0, $mr8\n\t" - "isb\n\t" - ); -} - -int icache_status(void) -{ - int ret; - - __asm__ __volatile__ ( - "mfsr $p0, $mr8\n\t" - "andi %0, $p0, 0x01\n\t" - : "=r" (ret) - : - : "memory" - ); - - return ret; -} - -void dcache_enable(void) -{ - __asm__ __volatile__ ( - "mfsr $p0, $mr8\n\t" - "ori $p0, $p0, 0x02\n\t" - "mtsr $p0, $mr8\n\t" - "isb\n\t" - ); -} - -void dcache_disable(void) -{ - __asm__ __volatile__ ( - "mfsr $p0, $mr8\n\t" - "li $p1, ~0x02\n\t" - "and $p0, $p0, $p1\n\t" - "mtsr $p0, $mr8\n\t" - "isb\n\t" - ); -} - -int dcache_status(void) -{ - int ret; - - __asm__ __volatile__ ( - "mfsr $p0, $mr8\n\t" - "andi %0, $p0, 0x02\n\t" - : "=r" (ret) - : - : "memory" - ); - - return ret; -} diff --git a/arch/nds32/cpu/n1213/ag102/cpu.c b/arch/nds32/cpu/n1213/ag102/cpu.c index ed88b52..252b69d 100644 --- a/arch/nds32/cpu/n1213/ag102/cpu.c +++ b/arch/nds32/cpu/n1213/ag102/cpu.c @@ -81,115 +81,3 @@ int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) /*NOTREACHED*/ } - -static inline unsigned long CACHE_LINE_SIZE(enum cache_t cache) -{ - if (cache == ICACHE) - return 8 << (((GET_ICM_CFG() & ICM_CFG_MSK_ISZ) \ - >> ICM_CFG_OFF_ISZ) - 1); - else - return 8 << (((GET_DCM_CFG() & DCM_CFG_MSK_DSZ) \ - >> DCM_CFG_OFF_DSZ) - 1); -} - -void dcache_flush_range(unsigned long start, unsigned long end) -{ - unsigned long line_size; - - line_size = CACHE_LINE_SIZE(DCACHE); - - while (end > start) { - __asm__ volatile ("\n\tcctl %0, L1D_VA_WB" : : "r"(start)); - __asm__ volatile ("\n\tcctl %0, L1D_VA_INVAL" : : "r"(start)); - start += line_size; - } -} - -void icache_inval_range(unsigned long start, unsigned long end) -{ - unsigned long line_size; - - line_size = CACHE_LINE_SIZE(ICACHE); - while (end > start) { - __asm__ volatile ("\n\tcctl %0, L1I_VA_INVAL" : : "r"(start)); - start += line_size; - } -} - -void flush_cache(unsigned long addr, unsigned long size) -{ - dcache_flush_range(addr, addr + size); - icache_inval_range(addr, addr + size); -} - -void icache_enable(void) -{ - __asm__ __volatile__ ( - "mfsr $p0, $mr8\n\t" - "ori $p0, $p0, 0x01\n\t" - "mtsr $p0, $mr8\n\t" - "isb\n\t" - ); -} - -void icache_disable(void) -{ - __asm__ __volatile__ ( - "mfsr $p0, $mr8\n\t" - "li $p1, ~0x01\n\t" - "and $p0, $p0, $p1\n\t" - "mtsr $p0, $mr8\n\t" - "isb\n\t" - ); -} - -int icache_status(void) -{ - int ret; - - __asm__ __volatile__ ( - "mfsr $p0, $mr8\n\t" - "andi %0, $p0, 0x01\n\t" - : "=r" (ret) - : - : "memory" - ); - - return ret; -} - -void dcache_enable(void) -{ - __asm__ __volatile__ ( - "mfsr $p0, $mr8\n\t" - "ori $p0, $p0, 0x02\n\t" - "mtsr $p0, $mr8\n\t" - "isb\n\t" - ); -} - -void dcache_disable(void) -{ - __asm__ __volatile__ ( - "mfsr $p0, $mr8\n\t" - "li $p1, ~0x02\n\t" - "and $p0, $p0, $p1\n\t" - "mtsr $p0, $mr8\n\t" - "isb\n\t" - ); -} - -int dcache_status(void) -{ - int ret; - - __asm__ __volatile__ ( - "mfsr $p0, $mr8\n\t" - "andi %0, $p0, 0x02\n\t" - : "=r" (ret) - : - : "memory" - ); - - return ret; -} diff --git a/arch/nds32/lib/Makefile b/arch/nds32/lib/Makefile index e5c31c3..581a2e7 100644 --- a/arch/nds32/lib/Makefile +++ b/arch/nds32/lib/Makefile @@ -29,7 +29,7 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(ARCH).o -OBJS := board.o bootm.o interrupts.o +OBJS := board.o bootm.o cache.o interrupts.o all: $(LIB) diff --git a/arch/nds32/lib/cache.c b/arch/nds32/lib/cache.c new file mode 100644 index 0000000..0f1a886 --- /dev/null +++ b/arch/nds32/lib/cache.c @@ -0,0 +1,157 @@ +/* + * Copyright (C) 2012 Andes Technology Corporation + * Shawn Lin, Andes Technology Corporation <nobuhiro@andestech.com> + * Macpaul Lin, Andes Technology Corporation <macpaul@andestech.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include <common.h> + +static inline unsigned long CACHE_LINE_SIZE(enum cache_t cache) +{ + if (cache == ICACHE) + return 8 << (((GET_ICM_CFG() & ICM_CFG_MSK_ISZ) \ + >> ICM_CFG_OFF_ISZ) - 1); + else + return 8 << (((GET_DCM_CFG() & DCM_CFG_MSK_DSZ) \ + >> DCM_CFG_OFF_DSZ) - 1); +} + +void flush_dcache_range(unsigned long start, unsigned long end) +{ + unsigned long line_size; + + line_size = CACHE_LINE_SIZE(DCACHE); + + while (end > start) { + asm volatile ( + "\n\tcctl %0, L1D_VA_WB" + "\n\tcctl %0, L1D_VA_INVAL" + : + : "r" (start) + ); + start += line_size; + } +} + +void invalidate_icache_range(unsigned long start, unsigned long end) +{ + unsigned long line_size; + + line_size = CACHE_LINE_SIZE(ICACHE); + while (end > start) { + asm volatile ( + "\n\tcctl %0, L1I_VA_INVAL" + : + : "r"(start) + ); + start += line_size; + } +} + +void invalidate_dcache_range(unsigned long start, unsigned long end) +{ + unsigned long line_size; + + line_size = CACHE_LINE_SIZE(DCACHE); + while (end > start) { + asm volatile ( + "\n\tcctl %0, L1D_VA_INVAL" + : + : "r"(start) + ); + start += line_size; + } +} + +void flush_cache(unsigned long addr, unsigned long size) +{ + flush_dcache_range(addr, addr + size); + invalidate_icache_range(addr, addr + size); +} + +void icache_enable(void) +{ + asm volatile ( + "mfsr $p0, $mr8\n\t" + "ori $p0, $p0, 0x01\n\t" + "mtsr $p0, $mr8\n\t" + "isb\n\t" + ); +} + +void icache_disable(void) +{ + asm volatile ( + "mfsr $p0, $mr8\n\t" + "li $p1, ~0x01\n\t" + "and $p0, $p0, $p1\n\t" + "mtsr $p0, $mr8\n\t" + "isb\n\t" + ); +} + +int icache_status(void) +{ + int ret; + + asm volatile ( + "mfsr $p0, $mr8\n\t" + "andi %0, $p0, 0x01\n\t" + : "=r" (ret) + : + : "memory" + ); + + return ret; +} + +void dcache_enable(void) +{ + asm volatile ( + "mfsr $p0, $mr8\n\t" + "ori $p0, $p0, 0x02\n\t" + "mtsr $p0, $mr8\n\t" + "isb\n\t" + ); +} + +void dcache_disable(void) +{ + asm volatile ( + "mfsr $p0, $mr8\n\t" + "li $p1, ~0x02\n\t" + "and $p0, $p0, $p1\n\t" + "mtsr $p0, $mr8\n\t" + "isb\n\t" + ); +} + +int dcache_status(void) +{ + int ret; + + asm volatile ( + "mfsr $p0, $mr8\n\t" + "andi %0, $p0, 0x02\n\t" + : "=r" (ret) + : + : "memory" + ); + + return ret; +} diff --git a/arch/nios2/lib/board.c b/arch/nios2/lib/board.c index ca8a3e5..1e495d4 100644 --- a/arch/nios2/lib/board.c +++ b/arch/nios2/lib/board.c @@ -87,17 +87,15 @@ void board_init (void) { bd_t *bd; init_fnc_t **init_fnc_ptr; + static gd_t gd_data; + static bd_t bd_data; - /* Pointer is writable since we allocated a register for it. - * Nios treats CONFIG_SYS_GBL_DATA_OFFSET as an address. - */ - gd = (gd_t *)CONFIG_SYS_GBL_DATA_OFFSET; + /* Pointer is writable since we allocated a register for it. */ + gd = &gd_data; /* compiler optimization barrier needed for GCC >= 3.4 */ __asm__ __volatile__("": : :"memory"); - memset( gd, 0, GENERATED_GBL_DATA_SIZE ); - - gd->bd = (bd_t *)(gd+1); /* At end of global data */ + gd->bd = &bd_data; gd->baudrate = CONFIG_BAUDRATE; gd->cpu_clk = CONFIG_SYS_CLK_FREQ; diff --git a/arch/powerpc/cpu/mpc83xx/Makefile b/arch/powerpc/cpu/mpc83xx/Makefile index 012ab6b0..687f5e9 100644 --- a/arch/powerpc/cpu/mpc83xx/Makefile +++ b/arch/powerpc/cpu/mpc83xx/Makefile @@ -42,7 +42,7 @@ COBJS-$(CONFIG_PCIE) += pcie.o COBJS-$(CONFIG_OF_LIBFDT) += fdt.o # Stub implementations of cache management functions for USB -COBJS-$(CONFIG_USB_EHCI) += cache.o +COBJS-y += cache.o ifdef CONFIG_FSL_DDR2 COBJS_LN-$(CONFIG_MPC8349) += ddr-gen2.o diff --git a/arch/powerpc/cpu/mpc83xx/serdes.c b/arch/powerpc/cpu/mpc83xx/serdes.c index a88fab9..2d5ee03 100644 --- a/arch/powerpc/cpu/mpc83xx/serdes.c +++ b/arch/powerpc/cpu/mpc83xx/serdes.c @@ -1,7 +1,7 @@ /* * Freescale SerDes initialization routine * - * Copyright (C) 2007,2011 Freescale Semicondutor, Inc. + * Copyright 2007,2011 Freescale Semiconductor, Inc. * Copyright (C) 2008 MontaVista Software, Inc. * * Author: Li Yang <leoli@freescale.com> diff --git a/arch/powerpc/cpu/mpc85xx/Makefile b/arch/powerpc/cpu/mpc85xx/Makefile index c512b33..34f6c54 100644 --- a/arch/powerpc/cpu/mpc85xx/Makefile +++ b/arch/powerpc/cpu/mpc85xx/Makefile @@ -70,6 +70,7 @@ COBJS-$(CONFIG_PPC_P3041) += ddr-gen3.o COBJS-$(CONFIG_PPC_P3060) += ddr-gen3.o COBJS-$(CONFIG_PPC_P4080) += ddr-gen3.o COBJS-$(CONFIG_PPC_P5020) += ddr-gen3.o +COBJS-$(CONFIG_BSC9131) += ddr-gen3.o COBJS-$(CONFIG_CPM2) += ether_fcc.o COBJS-$(CONFIG_OF_LIBFDT) += fdt.o @@ -130,7 +131,7 @@ COBJS += tlb.o COBJS += traps.o # Stub implementations of cache management functions for USB -COBJS-$(CONFIG_USB_EHCI) += cache.o +COBJS += cache.o SRCS := $(START:.o=.S) $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS)) diff --git a/arch/powerpc/cpu/mpc85xx/cmd_errata.c b/arch/powerpc/cpu/mpc85xx/cmd_errata.c index 2ed5a98..4e1a54a 100644 --- a/arch/powerpc/cpu/mpc85xx/cmd_errata.c +++ b/arch/powerpc/cpu/mpc85xx/cmd_errata.c @@ -33,9 +33,7 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (IS_SVR_REV(svr, 1, 0)) { switch (SVR_SOC_VER(svr)) { case SVR_P1013: - case SVR_P1013_E: case SVR_P1022: - case SVR_P1022_E: puts("Work-around for Erratum SATA A001 enabled\n"); } } @@ -51,7 +49,16 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) puts("Work-around for Erratum SERDES-A005 enabled\n"); #endif #if defined(CONFIG_SYS_P4080_ERRATUM_CPU22) - puts("Work-around for Erratum CPU22 enabled\n"); + if (SVR_MAJ(svr) < 3) + puts("Work-around for Erratum CPU22 enabled\n"); +#endif +#ifdef CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011 + /* + * NMG_CPU_A011 applies to P4080 rev 1.0, 2.0, fixed in 3.0 + * also applies to P3041 rev 1.0, 1.1, P2041 rev 1.0, 1.1 + */ + if (SVR_SOC_VER(svr) != SVR_P4080 || SVR_MAJ(svr) < 3) + puts("Work-around for Erratum CPU-A011 enabled\n"); #endif #if defined(CONFIG_SYS_FSL_ERRATUM_CPU_A003999) puts("Work-around for Erratum CPU-A003999 enabled\n"); diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init.c b/arch/powerpc/cpu/mpc85xx/cpu_init.c index 2cd5db7..fc6c287 100644 --- a/arch/powerpc/cpu/mpc85xx/cpu_init.c +++ b/arch/powerpc/cpu/mpc85xx/cpu_init.c @@ -308,10 +308,18 @@ int cpu_init_r(void) volatile fsl_lbc_t *lbc = LBC_BASE_ADDR; #endif -#if defined(CONFIG_SYS_P4080_ERRATUM_CPU22) - flush_dcache(); - mtspr(L1CSR2, (mfspr(L1CSR2) | L1CSR2_DCWS)); - sync(); +#if defined(CONFIG_SYS_P4080_ERRATUM_CPU22) || \ + defined(CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011) + /* + * CPU22 applies to P4080 rev 1.0, 2.0, fixed in 3.0 + * NMG_CPU_A011 applies to P4080 rev 1.0, 2.0, fixed in 3.0 + * also applies to P3041 rev 1.0, 1.1, P2041 rev 1.0, 1.1 + */ + if (SVR_SOC_VER(svr) != SVR_P4080 || SVR_MAJ(svr) < 3) { + flush_dcache(); + mtspr(L1CSR2, (mfspr(L1CSR2) | L1CSR2_DCWS)); + sync(); + } #endif puts ("L2: "); @@ -354,8 +362,7 @@ int cpu_init_r(void) break; case 0x1: if (ver == SVR_8540 || ver == SVR_8560 || - ver == SVR_8541 || ver == SVR_8541_E || - ver == SVR_8555 || ver == SVR_8555_E) { + ver == SVR_8541 || ver == SVR_8555) { puts("128 KB "); /* set L2E=1, L2I=1, & L2BLKSZ=1 (128 Kbyte) */ cache_ctl = 0xc4000000; @@ -366,8 +373,7 @@ int cpu_init_r(void) break; case 0x2: if (ver == SVR_8540 || ver == SVR_8560 || - ver == SVR_8541 || ver == SVR_8541_E || - ver == SVR_8555 || ver == SVR_8555_E) { + ver == SVR_8541 || ver == SVR_8555) { puts("256 KB "); /* set L2E=1, L2I=1, & L2BLKSZ=2 (256 Kbyte) */ cache_ctl = 0xc8000000; @@ -403,8 +409,7 @@ int cpu_init_r(void) puts("enabled\n"); } #elif defined(CONFIG_BACKSIDE_L2_CACHE) - if ((SVR_SOC_VER(svr) == SVR_P2040) || - (SVR_SOC_VER(svr) == SVR_P2040_E)) { + if (SVR_SOC_VER(svr) == SVR_P2040) { puts("N/A\n"); goto skip_l2; } @@ -506,9 +511,7 @@ skip_l2: */ if (IS_SVR_REV(svr, 1, 0) && ((SVR_SOC_VER(svr) == SVR_P1022) || - (SVR_SOC_VER(svr) == SVR_P1022_E) || - (SVR_SOC_VER(svr) == SVR_P1013) || - (SVR_SOC_VER(svr) == SVR_P1013_E))) { + (SVR_SOC_VER(svr) == SVR_P1013))) { fsl_sata_reg_t *reg; /* first SATA controller */ @@ -537,7 +540,7 @@ void arch_preboot_os(void) * disabled by the time we get called. */ msr = mfmsr(); - msr &= ~(MSR_ME|MSR_CE|MSR_DE); + msr &= ~(MSR_ME|MSR_CE); mtmsr(msr); setup_ivors(); diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init_early.c b/arch/powerpc/cpu/mpc85xx/cpu_init_early.c index 091af7c..dacfdd1 100644 --- a/arch/powerpc/cpu/mpc85xx/cpu_init_early.c +++ b/arch/powerpc/cpu/mpc85xx/cpu_init_early.c @@ -1,5 +1,5 @@ /* - * Copyright 2009-2011 Freescale Semiconductor, Inc + * Copyright 2009-2012 Freescale Semiconductor, Inc * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -53,6 +53,36 @@ void setup_ifc(void) asm volatile("isync;msync;tlbwe;isync"); +#if defined(CONFIG_SYS_PPC_E500_DEBUG_TLB) +/* + * TLB entry for debuggging in AS1 + * Create temporary TLB entry in AS0 to handle debug exception + * As on debug exception MSR is cleared i.e. Address space is changed + * to 0. A TLB entry (in AS0) is required to handle debug exception generated + * in AS1. + * + * TLB entry is created for IVPR + IVOR15 to map on valid OP code address + * bacause flash's physical address is going to change as + * CONFIG_SYS_FLASH_BASE_PHYS. + */ + _mas0 = MAS0_TLBSEL(1) | + MAS0_ESEL(CONFIG_SYS_PPC_E500_DEBUG_TLB); + _mas1 = MAS1_VALID | MAS1_TID(0) | MAS1_IPROT | + MAS1_TSIZE(BOOKE_PAGESZ_4M); + _mas2 = FSL_BOOKE_MAS2(CONFIG_SYS_TEXT_BASE, MAS2_I|MAS2_G); + _mas3 = FSL_BOOKE_MAS3(flash_phys, 0, MAS3_SW|MAS3_SR|MAS3_SX); + _mas7 = FSL_BOOKE_MAS7(flash_phys); + + mtspr(MAS0, _mas0); + mtspr(MAS1, _mas1); + mtspr(MAS2, _mas2); + mtspr(MAS3, _mas3); + mtspr(MAS7, _mas7); + + asm volatile("isync;msync;tlbwe;isync"); +#endif + + /* Change flash's physical address */ out_be32(&(ifc_regs->cspr_cs[0].cspr), CONFIG_SYS_CSPR0); out_be32(&(ifc_regs->csor_cs[0].csor), CONFIG_SYS_CSOR0); out_be32(&(ifc_regs->amask_cs[0].amask), CONFIG_SYS_AMASK0); diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init_nand.c b/arch/powerpc/cpu/mpc85xx/cpu_init_nand.c index f33db02..bf7a6f6 100644 --- a/arch/powerpc/cpu/mpc85xx/cpu_init_nand.c +++ b/arch/powerpc/cpu/mpc85xx/cpu_init_nand.c @@ -26,32 +26,6 @@ void cpu_init_f(void) { -#ifdef CONFIG_FSL_LBC - fsl_lbc_t *lbc = LBC_BASE_ADDR; - - /* - * LCRR - Clock Ratio Register - set up local bus timing - * when needed - */ - out_be32(&lbc->lcrr, LCRR_DBYP | LCRR_CLKDIV_8); - -#if defined(CONFIG_SYS_NAND_BR_PRELIM) && defined(CONFIG_SYS_NAND_OR_PRELIM) - set_lbc_br(0, CONFIG_SYS_NAND_BR_PRELIM); - set_lbc_or(0, CONFIG_SYS_NAND_OR_PRELIM); -#else -#error CONFIG_SYS_NAND_BR_PRELIM, CONFIG_SYS_NAND_OR_PRELIM must be defined -#endif -#endif -#ifdef CONFIG_FSL_IFC -#ifndef CONFIG_SYS_FSL_ERRATUM_IFC_A003399 -#if defined(CONFIG_SYS_CSPR0) && defined(CONFIG_SYS_CSOR0) - set_ifc_cspr(IFC_CS0, CONFIG_SYS_CSPR0); - set_ifc_amask(IFC_CS0, CONFIG_SYS_AMASK0); - set_ifc_csor(IFC_CS0, CONFIG_SYS_CSOR0); -#endif -#endif -#endif - #if defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SYS_INIT_L2_ADDR) ccsr_l2cache_t *l2cache = (void *)CONFIG_SYS_MPC85xx_L2_ADDR; diff --git a/arch/powerpc/cpu/mpc85xx/fdt.c b/arch/powerpc/cpu/mpc85xx/fdt.c index 977770e..21c3ad4 100644 --- a/arch/powerpc/cpu/mpc85xx/fdt.c +++ b/arch/powerpc/cpu/mpc85xx/fdt.c @@ -139,16 +139,14 @@ static inline u32 l2cache_size(void) break; case 0x1: if (ver == SVR_8540 || ver == SVR_8560 || - ver == SVR_8541 || ver == SVR_8541_E || - ver == SVR_8555 || ver == SVR_8555_E) + ver == SVR_8541 || ver == SVR_8555) return 128; else return 256; break; case 0x2: if (ver == SVR_8540 || ver == SVR_8560 || - ver == SVR_8541 || ver == SVR_8541_E || - ver == SVR_8555 || ver == SVR_8555_E) + ver == SVR_8541 || ver == SVR_8555) return 256; else return 512; @@ -231,8 +229,7 @@ static inline void ft_fixup_l2cache(void *blob) int has_l2 = 1; /* P2040/P2040E has no L2, so dont set any L2 props */ - if ((SVR_SOC_VER(get_svr()) == SVR_P2040) || - (SVR_SOC_VER(get_svr()) == SVR_P2040_E)) + if (SVR_SOC_VER(get_svr()) == SVR_P2040) has_l2 = 0; size = (l2cfg0 & 0x3fff) * 64 * 1024; @@ -407,7 +404,7 @@ static void ft_fixup_qe_snum(void *blob) unsigned int svr; svr = mfspr(SPRN_SVR); - if (SVR_SOC_VER(svr) == SVR_8569_E) { + if (SVR_SOC_VER(svr) == SVR_8569) { if(IS_SVR_REV(svr, 1, 0)) do_fixup_by_compat_u32(blob, "fsl,qe", "fsl,qe-num-snums", 46, 1); diff --git a/arch/powerpc/cpu/mpc85xx/p2041_serdes.c b/arch/powerpc/cpu/mpc85xx/p2041_serdes.c index f68f281..eec4ffe 100644 --- a/arch/powerpc/cpu/mpc85xx/p2041_serdes.c +++ b/arch/powerpc/cpu/mpc85xx/p2041_serdes.c @@ -78,7 +78,7 @@ enum srds_prtcl serdes_get_prtcl(int cfg, int lane) prtcl = serdes_cfg_tbl[cfg][lane]; /* P2040[e] does not support XAUI */ - if (((ver == SVR_P2040) || (ver == SVR_P2040_E)) && (prtcl == XAUI_FM1)) + if (ver == SVR_P2040 && prtcl == XAUI_FM1) prtcl = NONE; return prtcl; @@ -94,7 +94,7 @@ int is_serdes_prtcl_valid(u32 prtcl) return 0; /* P2040[e] does not support XAUI */ - if (((ver == SVR_P2040) || (ver == SVR_P2040_E)) && (prtcl == XAUI_FM1)) + if (ver == SVR_P2040 && prtcl == XAUI_FM1) return 0; for (i = 0; i < SRDS_MAX_LANES; i++) { diff --git a/arch/powerpc/cpu/mpc85xx/release.S b/arch/powerpc/cpu/mpc85xx/release.S index c81e19c..1860684 100644 --- a/arch/powerpc/cpu/mpc85xx/release.S +++ b/arch/powerpc/cpu/mpc85xx/release.S @@ -143,23 +143,40 @@ __secondary_start_page: mtspr L1CSR2,r8 #endif -#if defined(CONFIG_SYS_P4080_ERRATUM_CPU22) - mfspr r8,L1CSR2 - oris r8,r8,(L1CSR2_DCWS)@h - mtspr L1CSR2,r8 +#if defined(CONFIG_SYS_P4080_ERRATUM_CPU22) || \ + defined(CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011) + /* + * CPU22 applies to P4080 rev 1.0, 2.0, fixed in 3.0 + * NMG_CPU_A011 applies to P4080 rev 1.0, 2.0, fixed in 3.0 + * also appleis to P3041 rev 1.0, 1.1, P2041 rev 1.0, 1.1 + */ + mfspr r3,SPRN_SVR + rlwinm r6,r3,24,~0x800 /* clear E bit */ + + lis r5,SVR_P4080@h + ori r5,r5,SVR_P4080@l + cmpw r6,r5 + bne 1f + + rlwinm r3,r3,0,0xf0 + li r5,0x30 + cmpw r3,r5 + bge 2f +1: + mfspr r3,L1CSR2 + oris r3,r3,(L1CSR2_DCWS)@h + mtspr L1CSR2,r3 +2: #endif #ifdef CONFIG_BACKSIDE_L2_CACHE /* skip L2 setup on P2040/P2040E as they have no L2 */ - mfspr r2,SPRN_SVR + mfspr r3,SPRN_SVR + rlwinm r6,r3,24,~0x800 /* clear E bit of SVR */ + lis r3,SVR_P2040@h ori r3,r3,SVR_P2040@l - cmpw r2,r3 - beq 3f - - lis r3,SVR_P2040_E@h - ori r3,r3,SVR_P2040_E@l - cmpw r2,r3 + cmpw r6,r3 beq 3f /* Enable/invalidate the L2 cache */ diff --git a/arch/powerpc/cpu/mpc85xx/start.S b/arch/powerpc/cpu/mpc85xx/start.S index 8e99ef6..6aabc30 100644 --- a/arch/powerpc/cpu/mpc85xx/start.S +++ b/arch/powerpc/cpu/mpc85xx/start.S @@ -82,6 +82,9 @@ .globl _start_e500 _start_e500: +/* Enable debug exception */ + li r1,MSR_DE + mtmsr r1 #if defined(CONFIG_SECURE_BOOT) && defined(CONFIG_E500MC) /* ISBC uses L2 as stack. @@ -179,6 +182,72 @@ l2_disabled: andi. r1,r3,L1CSR0_DCE@l beq 2b +#if defined(CONFIG_SYS_PPC_E500_DEBUG_TLB) && !defined(CONFIG_NAND_SPL) +/* + * TLB entry for debuggging in AS1 + * Create temporary TLB entry in AS0 to handle debug exception + * As on debug exception MSR is cleared i.e. Address space is changed + * to 0. A TLB entry (in AS0) is required to handle debug exception generated + * in AS1. + */ + + lis r6,FSL_BOOKE_MAS0(1, + CONFIG_SYS_PPC_E500_DEBUG_TLB, 0)@h + ori r6,r6,FSL_BOOKE_MAS0(1, + CONFIG_SYS_PPC_E500_DEBUG_TLB, 0)@l + +#if !defined(CONFIG_SYS_RAMBOOT) && !defined(CONFIG_SECURE_BOOT) +/* + * TLB entry is created for IVPR + IVOR15 to map on valid OP code address + * bacause flash's virtual address maps to 0xff800000 - 0xffffffff. + * and this window is outside of 4K boot window. + */ + lis r7,FSL_BOOKE_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_4M)@h + ori r7,r7,FSL_BOOKE_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_4M)@l + + lis r8,FSL_BOOKE_MAS2(CONFIG_SYS_MONITOR_BASE & 0xffc00000, + (MAS2_I|MAS2_G))@h + ori r8,r8,FSL_BOOKE_MAS2(CONFIG_SYS_MONITOR_BASE & 0xffc00000, + (MAS2_I|MAS2_G))@l + + /* The 85xx has the default boot window 0xff800000 - 0xffffffff */ + lis r9,FSL_BOOKE_MAS3(0xffc00000, 0, (MAS3_SX|MAS3_SW|MAS3_SR))@h + ori r9,r9,FSL_BOOKE_MAS3(0xffc00000, 0, (MAS3_SX|MAS3_SW|MAS3_SR))@l +#elif !defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SECURE_BOOT) + lis r7,FSL_BOOKE_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_1M)@h + ori r7,r7,FSL_BOOKE_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_1M)@l + + lis r8,FSL_BOOKE_MAS2(CONFIG_SYS_MONITOR_BASE,(MAS2_I|MAS2_G))@h + ori r8,r8,FSL_BOOKE_MAS2(CONFIG_SYS_MONITOR_BASE,(MAS2_I|MAS2_G))@l + + lis r9,FSL_BOOKE_MAS3(CONFIG_SYS_PBI_FLASH_WINDOW, 0, + (MAS3_SX|MAS3_SW|MAS3_SR))@h + ori r9,r9,FSL_BOOKE_MAS3(CONFIG_SYS_PBI_FLASH_WINDOW, 0, + (MAS3_SX|MAS3_SW|MAS3_SR))@l +#else +/* + * TLB entry is created for IVPR + IVOR15 to map on valid OP code address + * because "nexti" will resize TLB to 4K + */ + lis r7,FSL_BOOKE_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_256K)@h + ori r7,r7,FSL_BOOKE_MAS1(1, 1, 0, 0, BOOKE_PAGESZ_256K)@l + + lis r8,FSL_BOOKE_MAS2(CONFIG_SYS_MONITOR_BASE, (MAS2_I))@h + ori r8,r8,FSL_BOOKE_MAS2(CONFIG_SYS_MONITOR_BASE, + (MAS2_I))@l + lis r9,FSL_BOOKE_MAS3(CONFIG_SYS_MONITOR_BASE, 0, + (MAS3_SX|MAS3_SW|MAS3_SR))@h + ori r9,r9,FSL_BOOKE_MAS3(CONFIG_SYS_MONITOR_BASE, 0, + (MAS3_SX|MAS3_SW|MAS3_SR))@l +#endif + mtspr MAS0,r6 + mtspr MAS1,r7 + mtspr MAS2,r8 + mtspr MAS3,r9 + tlbwe + isync +#endif + /* * Ne need to setup interrupt vector for NAND SPL * because NAND SPL never compiles it. @@ -733,8 +802,8 @@ create_init_ram_area: msync tlbwe - lis r6,MSR_IS|MSR_DS@h - ori r6,r6,MSR_IS|MSR_DS@l + lis r6,MSR_IS|MSR_DS|MSR_DE@h + ori r6,r6,MSR_IS|MSR_DS|MSR_DE@l lis r7,switch_as@h ori r7,r7,switch_as@l @@ -1372,17 +1441,24 @@ relocate_code: 7: sync /* Wait for all icbi to complete on bus */ isync - /* - * Re-point the IVPR at RAM - */ - mtspr IVPR,r10 - /* * We are done. Do not return, instead branch to second part of board * initialization, now running from RAM. */ addi r0,r10,in_ram - _start + _START_OFFSET + + /* + * As IVPR is going to point RAM address, + * Make sure IVOR15 has valid opcode to support debugger + */ + mtspr IVOR15,r0 + + /* + * Re-point the IVPR at RAM + */ + mtspr IVPR,r10 + mtlr r0 blr /* NEVER RETURNS! */ .globl in_ram diff --git a/arch/powerpc/cpu/mpc8xx/cpu.c b/arch/powerpc/cpu/mpc8xx/cpu.c index 5cbf9a6..b3fcfe5 100644 --- a/arch/powerpc/cpu/mpc8xx/cpu.c +++ b/arch/powerpc/cpu/mpc8xx/cpu.c @@ -41,6 +41,7 @@ #include <netdev.h> #include <asm/cache.h> #include <linux/compiler.h> +#include <asm/io.h> #if defined(CONFIG_OF_LIBFDT) #include <libfdt.h> @@ -253,7 +254,7 @@ static int check_CPU (long clock, uint pvr, uint immr) if ((pvr >> 16) != 0x0050) return -1; - k = (immr << 16) | *((ushort *) & immap->im_cpm.cp_dparam[0xB0]); + k = (immr << 16) | in_be16((ushort *)&immap->im_cpm.cp_dparam[0xB0]); m = 0; switch (k) { diff --git a/arch/powerpc/cpu/mpc8xxx/cpu.c b/arch/powerpc/cpu/mpc8xxx/cpu.c index 0365ca8..cbc6742 100644 --- a/arch/powerpc/cpu/mpc8xxx/cpu.c +++ b/arch/powerpc/cpu/mpc8xxx/cpu.c @@ -1,5 +1,5 @@ /* - * Copyright 2009-2011 Freescale Semiconductor, Inc. + * Copyright 2009-2012 Freescale Semiconductor, Inc. * * This file is derived from arch/powerpc/cpu/mpc85xx/cpu.c and * arch/powerpc/cpu/mpc86xx/cpu.c. Basically this file contains @@ -37,82 +37,47 @@ DECLARE_GLOBAL_DATA_PTR; struct cpu_type cpu_type_list [] = { #if defined(CONFIG_MPC85xx) CPU_TYPE_ENTRY(8533, 8533, 1), - CPU_TYPE_ENTRY(8533, 8533_E, 1), CPU_TYPE_ENTRY(8535, 8535, 1), - CPU_TYPE_ENTRY(8535, 8535_E, 1), CPU_TYPE_ENTRY(8536, 8536, 1), - CPU_TYPE_ENTRY(8536, 8536_E, 1), CPU_TYPE_ENTRY(8540, 8540, 1), CPU_TYPE_ENTRY(8541, 8541, 1), - CPU_TYPE_ENTRY(8541, 8541_E, 1), CPU_TYPE_ENTRY(8543, 8543, 1), - CPU_TYPE_ENTRY(8543, 8543_E, 1), CPU_TYPE_ENTRY(8544, 8544, 1), - CPU_TYPE_ENTRY(8544, 8544_E, 1), CPU_TYPE_ENTRY(8545, 8545, 1), - CPU_TYPE_ENTRY(8545, 8545_E, 1), - CPU_TYPE_ENTRY(8547, 8547_E, 1), + CPU_TYPE_ENTRY(8547, 8547, 1), CPU_TYPE_ENTRY(8548, 8548, 1), - CPU_TYPE_ENTRY(8548, 8548_E, 1), CPU_TYPE_ENTRY(8555, 8555, 1), - CPU_TYPE_ENTRY(8555, 8555_E, 1), CPU_TYPE_ENTRY(8560, 8560, 1), CPU_TYPE_ENTRY(8567, 8567, 1), - CPU_TYPE_ENTRY(8567, 8567_E, 1), CPU_TYPE_ENTRY(8568, 8568, 1), - CPU_TYPE_ENTRY(8568, 8568_E, 1), CPU_TYPE_ENTRY(8569, 8569, 1), - CPU_TYPE_ENTRY(8569, 8569_E, 1), CPU_TYPE_ENTRY(8572, 8572, 2), - CPU_TYPE_ENTRY(8572, 8572_E, 2), CPU_TYPE_ENTRY(P1010, P1010, 1), - CPU_TYPE_ENTRY(P1010, P1010_E, 1), CPU_TYPE_ENTRY(P1011, P1011, 1), - CPU_TYPE_ENTRY(P1011, P1011_E, 1), CPU_TYPE_ENTRY(P1012, P1012, 1), - CPU_TYPE_ENTRY(P1012, P1012_E, 1), CPU_TYPE_ENTRY(P1013, P1013, 1), - CPU_TYPE_ENTRY(P1013, P1013_E, 1), - CPU_TYPE_ENTRY(P1014, P1014_E, 1), CPU_TYPE_ENTRY(P1014, P1014, 1), - CPU_TYPE_ENTRY(P1015, P1015_E, 1), CPU_TYPE_ENTRY(P1015, P1015, 1), - CPU_TYPE_ENTRY(P1016, P1016_E, 1), CPU_TYPE_ENTRY(P1016, P1016, 1), CPU_TYPE_ENTRY(P1017, P1017, 1), - CPU_TYPE_ENTRY(P1017, P1017_E, 1), CPU_TYPE_ENTRY(P1020, P1020, 2), - CPU_TYPE_ENTRY(P1020, P1020_E, 2), CPU_TYPE_ENTRY(P1021, P1021, 2), - CPU_TYPE_ENTRY(P1021, P1021_E, 2), CPU_TYPE_ENTRY(P1022, P1022, 2), - CPU_TYPE_ENTRY(P1022, P1022_E, 2), CPU_TYPE_ENTRY(P1023, P1023, 2), - CPU_TYPE_ENTRY(P1023, P1023_E, 2), CPU_TYPE_ENTRY(P1024, P1024, 2), - CPU_TYPE_ENTRY(P1024, P1024_E, 2), CPU_TYPE_ENTRY(P1025, P1025, 2), - CPU_TYPE_ENTRY(P1025, P1025_E, 2), CPU_TYPE_ENTRY(P2010, P2010, 1), - CPU_TYPE_ENTRY(P2010, P2010_E, 1), CPU_TYPE_ENTRY(P2020, P2020, 2), - CPU_TYPE_ENTRY(P2020, P2020_E, 2), CPU_TYPE_ENTRY(P2040, P2040, 4), - CPU_TYPE_ENTRY(P2040, P2040_E, 4), CPU_TYPE_ENTRY(P2041, P2041, 4), - CPU_TYPE_ENTRY(P2041, P2041_E, 4), CPU_TYPE_ENTRY(P3041, P3041, 4), - CPU_TYPE_ENTRY(P3041, P3041_E, 4), CPU_TYPE_ENTRY_MASK(P3060, P3060, 6, 0xf3), - CPU_TYPE_ENTRY_MASK(P3060, P3060_E, 6, 0xf3), CPU_TYPE_ENTRY(P4040, P4040, 4), - CPU_TYPE_ENTRY(P4040, P4040_E, 4), CPU_TYPE_ENTRY(P4080, P4080, 8), - CPU_TYPE_ENTRY(P4080, P4080_E, 8), CPU_TYPE_ENTRY(P5010, P5010, 1), - CPU_TYPE_ENTRY(P5010, P5010_E, 1), CPU_TYPE_ENTRY(P5020, P5020, 2), - CPU_TYPE_ENTRY(P5020, P5020_E, 2), + CPU_TYPE_ENTRY(BSC9130, 9130, 1), + CPU_TYPE_ENTRY(BSC9131, 9131, 1), #elif defined(CONFIG_MPC86xx) CPU_TYPE_ENTRY(8610, 8610, 1), CPU_TYPE_ENTRY(8641, 8641, 2), diff --git a/arch/powerpc/include/asm/config_mpc85xx.h b/arch/powerpc/include/asm/config_mpc85xx.h index 191629b..b6c44bb 100644 --- a/arch/powerpc/include/asm/config_mpc85xx.h +++ b/arch/powerpc/include/asm/config_mpc85xx.h @@ -1,5 +1,5 @@ /* - * Copyright 2011 Freescale Semiconductor, Inc. + * Copyright 2011-2012 Freescale Semiconductor, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -122,6 +122,7 @@ #define CONFIG_MAX_CPUS 1 #define CONFIG_FSL_SDHC_V2_3 #define CONFIG_SYS_FSL_NUM_LAWS 12 +#define CONFIG_SYS_PPC_E500_DEBUG_TLB 3 #define CONFIG_TSECV2 #define CONFIG_SYS_FSL_SEC_COMPAT 4 #define CONFIG_FSL_SATA_V2 @@ -138,6 +139,7 @@ #elif defined(CONFIG_P1011) #define CONFIG_MAX_CPUS 1 #define CONFIG_SYS_FSL_NUM_LAWS 12 +#define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 #define CONFIG_TSECV2 #define CONFIG_FSL_PCIE_DISABLE_ASPM #define CONFIG_SYS_FSL_SEC_COMPAT 2 @@ -149,6 +151,7 @@ #elif defined(CONFIG_P1012) #define CONFIG_MAX_CPUS 1 #define CONFIG_SYS_FSL_NUM_LAWS 12 +#define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 #define CONFIG_TSECV2 #define CONFIG_FSL_PCIE_DISABLE_ASPM #define CONFIG_SYS_FSL_SEC_COMPAT 2 @@ -163,6 +166,7 @@ #elif defined(CONFIG_P1013) #define CONFIG_MAX_CPUS 1 #define CONFIG_SYS_FSL_NUM_LAWS 12 +#define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 #define CONFIG_TSECV2 #define CONFIG_SYS_FSL_SEC_COMPAT 2 #define CONFIG_FSL_SATA_V2 @@ -175,6 +179,7 @@ #define CONFIG_MAX_CPUS 1 #define CONFIG_FSL_SDHC_V2_3 #define CONFIG_SYS_FSL_NUM_LAWS 12 +#define CONFIG_SYS_PPC_E500_DEBUG_TLB 3 #define CONFIG_TSECV2 #define CONFIG_SYS_FSL_SEC_COMPAT 4 #define CONFIG_FSL_SATA_V2 @@ -190,6 +195,7 @@ #elif defined(CONFIG_P1015) #define CONFIG_MAX_CPUS 1 #define CONFIG_SYS_FSL_NUM_LAWS 12 +#define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 #define CONFIG_TSECV2 #define CONFIG_FSL_PCIE_DISABLE_ASPM #define CONFIG_SYS_FSL_SEC_COMPAT 2 @@ -201,6 +207,7 @@ #elif defined(CONFIG_P1016) #define CONFIG_MAX_CPUS 1 #define CONFIG_SYS_FSL_NUM_LAWS 12 +#define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 #define CONFIG_TSECV2 #define CONFIG_FSL_PCIE_DISABLE_ASPM #define CONFIG_SYS_FSL_SEC_COMPAT 2 @@ -228,6 +235,7 @@ #elif defined(CONFIG_P1020) #define CONFIG_MAX_CPUS 2 #define CONFIG_SYS_FSL_NUM_LAWS 12 +#define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 #define CONFIG_TSECV2 #define CONFIG_FSL_PCIE_DISABLE_ASPM #define CONFIG_SYS_FSL_SEC_COMPAT 2 @@ -238,6 +246,7 @@ #elif defined(CONFIG_P1021) #define CONFIG_MAX_CPUS 2 #define CONFIG_SYS_FSL_NUM_LAWS 12 +#define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 #define CONFIG_TSECV2 #define CONFIG_FSL_PCIE_DISABLE_ASPM #define CONFIG_SYS_FSL_SEC_COMPAT 2 @@ -251,6 +260,7 @@ #elif defined(CONFIG_P1022) #define CONFIG_MAX_CPUS 2 #define CONFIG_SYS_FSL_NUM_LAWS 12 +#define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 #define CONFIG_TSECV2 #define CONFIG_SYS_FSL_SEC_COMPAT 2 #define CONFIG_FSL_SATA_V2 @@ -276,6 +286,7 @@ #elif defined(CONFIG_P1024) #define CONFIG_MAX_CPUS 2 #define CONFIG_SYS_FSL_NUM_LAWS 12 +#define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 #define CONFIG_TSECV2 #define CONFIG_FSL_PCIE_DISABLE_ASPM #define CONFIG_SYS_FSL_SEC_COMPAT 2 @@ -287,6 +298,7 @@ #elif defined(CONFIG_P1025) #define CONFIG_MAX_CPUS 2 #define CONFIG_SYS_FSL_NUM_LAWS 12 +#define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 #define CONFIG_TSECV2 #define CONFIG_FSL_PCIE_DISABLE_ASPM #define CONFIG_SYS_FSL_SEC_COMPAT 2 @@ -301,6 +313,7 @@ #elif defined(CONFIG_P2010) #define CONFIG_MAX_CPUS 1 #define CONFIG_SYS_FSL_NUM_LAWS 12 +#define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 #define CONFIG_SYS_FSL_SEC_COMPAT 2 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 @@ -309,6 +322,7 @@ #elif defined(CONFIG_P2020) #define CONFIG_MAX_CPUS 2 #define CONFIG_SYS_FSL_NUM_LAWS 12 +#define CONFIG_SYS_PPC_E500_DEBUG_TLB 2 #define CONFIG_SYS_FSL_SEC_COMPAT 2 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 @@ -335,6 +349,7 @@ #define CONFIG_SYS_FSL_USB2_PHY_ENABLE #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 +#define CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011 #define CONFIG_SYS_FSL_ERRATUM_CPU_A003999 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003474 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2 @@ -359,6 +374,7 @@ #define CONFIG_SYS_FSL_USB2_PHY_ENABLE #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 +#define CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011 #define CONFIG_SYS_FSL_ERRATUM_CPU_A003999 #define CONFIG_SYS_FSL_ERRATUM_DDR_A003474 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2 @@ -446,6 +462,7 @@ #define CONFIG_SYS_FSL_ERRATUM_ESDHC135 #define CONFIG_SYS_FSL_ERRATUM_ESDHC136 #define CONFIG_SYS_P4080_ERRATUM_CPU22 +#define CONFIG_SYS_FSL_ERRATUM_NMG_CPU_A011 #define CONFIG_SYS_P4080_ERRATUM_SERDES8 #define CONFIG_SYS_P4080_ERRATUM_SERDES9 #define CONFIG_SYS_P4080_ERRATUM_SERDES_A001 @@ -505,6 +522,18 @@ #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5 +#elif defined(CONFIG_BSC9131) +#define CONFIG_MAX_CPUS 1 +#define CONFIG_FSL_SDHC_V2_3 +#define CONFIG_SYS_FSL_NUM_LAWS 12 +#define CONFIG_TSECV2 +#define CONFIG_SYS_FSL_SEC_COMPAT 4 +#define CONFIG_NUM_DDR_CONTROLLERS 1 +#define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 +#define CONFIG_NAND_FSL_IFC +#define CONFIG_SYS_FSL_ERRATUM_IFC_A003399 +#define CONFIG_SYS_FSL_ERRATUM_ESDHC111 + #else #error Processor type not defined for this platform #endif diff --git a/arch/powerpc/include/asm/immap_85xx.h b/arch/powerpc/include/asm/immap_85xx.h index 632e3c1..53d563e 100644 --- a/arch/powerpc/include/asm/immap_85xx.h +++ b/arch/powerpc/include/asm/immap_85xx.h @@ -1,7 +1,7 @@ /* * MPC85xx Internal Memory Map * - * Copyright 2007-2011 Freescale Semiconductor, Inc. + * Copyright 2007-2012 Freescale Semiconductor, Inc. * * Copyright(c) 2002,2003 Motorola Inc. * Xianghua Xiao (x.xiao@motorola.com) @@ -1934,7 +1934,11 @@ typedef struct ccsr_gur { #define MPC85xx_PORPLLSR_DDR_RATIO 0x3e000000 #define MPC85xx_PORPLLSR_DDR_RATIO_SHIFT 25 #else +#ifdef CONFIG_BSC9131 +#define MPC85xx_PORPLLSR_DDR_RATIO 0x00003f00 +#else #define MPC85xx_PORPLLSR_DDR_RATIO 0x00003e00 +#endif #define MPC85xx_PORPLLSR_DDR_RATIO_SHIFT 9 #endif #define MPC85xx_PORPLLSR_QE_RATIO 0x3e000000 @@ -2081,6 +2085,50 @@ typedef struct ccsr_gur { #define MPC85xx_PMUXCR_SPI_MASK 0x00600000 #define MPC85xx_PMUXCR_SPI 0x00000000 #endif +#if defined(CONFIG_BSC9131) +#define MPC85xx_PMUXCR_TSEC2_DMA_GPIO_IRQ 0x40000000 +#define MPC85xx_PMUXCR_TSEC2_USB 0xC0000000 +#define MPC85xx_PMUXCR_TSEC2_1588_PPS 0x10000000 +#define MPC85xx_PMUXCR_TSEC2_1588_RSVD 0x30000000 +#define MPC85xx_PMUXCR_IFC_AD_GPIO 0x04000000 +#define MPC85xx_PMUXCR_IFC_AD_GPIO_MASK 0x0C000000 +#define MPC85xx_PMUXCR_IFC_AD15_GPIO 0x01000000 +#define MPC85xx_PMUXCR_IFC_AD15_TIMER2 0x02000000 +#define MPC85xx_PMUXCR_IFC_AD16_GPO8 0x00400000 +#define MPC85xx_PMUXCR_IFC_AD16_MSRCID0 0x00800000 +#define MPC85xx_PMUXCR_IFC_AD17_GPO 0x00100000 +#define MPC85xx_PMUXCR_IFC_AD17_GPO_MASK 0x00300000 +#define MPC85xx_PMUXCR_IFC_AD17_MSRCID_DSP 0x00200000 +#define MPC85xx_PMUXCR_IFC_CS2_GPO65 0x00040000 +#define MPC85xx_PMUXCR_IFC_CS2_DSP_TDI 0x00080000 +#define MPC85xx_PMUXCR_SDHC_USIM 0x00010000 +#define MPC85xx_PMUXCR_SDHC_TDM_RFS_RCK 0x00020000 +#define MPC85xx_PMUXCR_SDHC_GPIO77 0x00030000 +#define MPC85xx_PMUXCR_SDHC_RESV 0x00004000 +#define MPC85xx_PMUXCR_SDHC_TDM_TXD_RXD 0x00008000 +#define MPC85xx_PMUXCR_SDHC_GPIO_TIMER4 0x0000C000 +#define MPC85xx_PMUXCR_USB_CLK_UART_SIN 0x00001000 +#define MPC85xx_PMUXCR_USB_CLK_GPIO69 0x00002000 +#define MPC85xx_PMUXCR_USB_CLK_TIMER3 0x00003000 +#define MPC85xx_PMUXCR_USB_UART_GPIO0 0x00000400 +#define MPC85xx_PMUXCR_USB_RSVD 0x00000C00 +#define MPC85xx_PMUXCR_USB_GPIO62_TRIG_IN 0x00000800 +#define MPC85xx_PMUXCR_USB_D1_2_IIC2_SDA_SCL 0x00000100 +#define MPC85xx_PMUXCR_USB_D1_2_GPIO71_72 0x00000200 +#define MPC85xx_PMUXCR_USB_D1_2_RSVD 0x00000300 +#define MPC85xx_PMUXCR_USB_DIR_GPIO2 0x00000040 +#define MPC85xx_PMUXCR_USB_DIR_TIMER1 0x00000080 +#define MPC85xx_PMUXCR_USB_DIR_MCP_B 0x000000C0 +#define MPC85xx_PMUXCR_SPI1_UART3 0x00000010 +#define MPC85xx_PMUXCR_SPI1_SIM 0x00000020 +#define MPC85xx_PMUXCR_SPI1_CKSTP_IN_GPO74 0x00000030 +#define MPC85xx_PMUXCR_SPI1_CS2_CKSTP_OUT_B 0x00000004 +#define MPC85xx_PMUXCR_SPI1_CS2_dbg_adi1_rxen 0x00000008 +#define MPC85xx_PMUXCR_SPI1_CS2_GPO75 0x0000000C +#define MPC85xx_PMUXCR_SPI1_CS3_ANT_TCXO_PWM 0x00000001 +#define MPC85xx_PMUXCR_SPI1_CS3_dbg_adi2_rxen 0x00000002 +#define MPC85xx_PMUXCR_SPI1_CS3_GPO76 0x00000003 +#endif u32 pmuxcr2; /* Alt. function signal multiplex control 2 */ #if defined(CONFIG_P1010) || defined(CONFIG_P1014) #define MPC85xx_PMUXCR2_UART_GPIO 0x40000000 @@ -2111,7 +2159,69 @@ typedef struct ccsr_gur { #define MPC85xx_PMUXCR2_ETSECUSB_MASK 0x001f8000 #define MPC85xx_PMUXCR2_USB 0x00150000 #endif +#if defined(CONFIG_BSC9131) +#define MPC85xx_PMUXCR2_UART_CTS_B0_SIM_PD 0X40000000 +#define MPC85xx_PMUXCR2_UART_CTS_B0_DSP_TMS 0X80000000 +#define MPC85xx_PMUXCR2_UART_CTS_B0_GPIO42 0xC0000000 +#define MPC85xx_PMUXCR2_UART_RTS_B0_PWM2 0x10000000 +#define MPC85xx_PMUXCR2_UART_RTS_B0_DSP_TCK 0x20000000 +#define MPC85xx_PMUXCR2_UART_RTS_B0_GPIO43 0x30000000 +#define MPC85xx_PMUXCR2_UART_CTS_B1_SIM_PD 0x04000000 +#define MPC85xx_PMUXCR2_UART_CTS_B1_SRESET_B 0x08000000 +#define MPC85xx_PMUXCR2_UART_CTS_B1_GPIO44 0x0C000000 +#define MPC85xx_PMUXCR2_UART_RTS_B1_PPS_LED 0x01000000 +#define MPC85xx_PMUXCR2_UART_RTS_B1_RSVD 0x02000000 +#define MPC85xx_PMUXCR2_UART_RTS_B1_GPIO45 0x03000000 +#define MPC85xx_PMUXCR2_TRIG_OUT_ASLEEP 0x00400000 +#define MPC85xx_PMUXCR2_TRIG_OUT_DSP_TRST_B 0x00800000 +#define MPC85xx_PMUXCR2_ANT1_TIMER5 0x00100000 +#define MPC85xx_PMUXCR2_ANT1_TSEC_1588 0x00200000 +#define MPC85xx_PMUXCR2_ANT1_GPIO95_19 0x00300000 +#define MPC85xx_PMUXCR2_ANT1_TX_RX_FRAME_MAX3_LOCK 0x00040000 +#define MPC85xx_PMUXCR2_ANT1_TX_RX_FRAME_RSVD 0x00080000 +#define MPC85xx_PMUXCR2_ANT1_TX_RX_FRAME_GPIO80_20 0x000C0000 +#define MPC85xx_PMUXCR2_ANT1_DIO0_3_SPI3_CS0 0x00010000 +#define MPC85xx_PMUXCR2_ANT1_DIO0_3_ANT2_DO_3 0x00020000 +#define MPC85xx_PMUXCR2_ANT1_DIO0_3_GPIO81_84 0x00030000 +#define MPC85xx_PMUXCR2_ANT1_DIO4_7_SPI4 0x00004000 +#define MPC85xx_PMUXCR2_ANT1_DIO4_7_ANT2_DO4_7 0x00008000 +#define MPC85xx_PMUXCR2_ANT1_DIO4_7_GPIO85_88 0x0000C000 +#define MPC85xx_PMUXCR2_ANT1_DIO8_9_MAX2_1_LOCK 0x00001000 +#define MPC85xx_PMUXCR2_ANT1_DIO8_9_ANT2_DO8_9 0x00002000 +#define MPC85xx_PMUXCR2_ANT1_DIO8_9_GPIO21_22 0x00003000 +#define MPC85xx_PMUXCR2_ANT1_DIO10_11_TIMER6_7 0x00000400 +#define MPC85xx_PMUXCR2_ANT1_DIO10_11_ANT2_DO10_11 0x00000800 +#define MPC85xx_PMUXCR2_ANT1_DIO10_11_GPIO23_24 0x00000C00 +#define MPC85xx_PMUXCR2_ANT2_RSVD 0x00000100 +#define MPC85xx_PMUXCR2_ANT2_GPO90_91_DMA 0x00000300 +#define MPC85xx_PMUXCR2_ANT2_ENABLE_DIO0_10_USB 0x00000040 +#define MPC85xx_PMUXCR2_ANT2_ENABLE_DIO0_10_GPIO 0x000000C0 +#define MPC85xx_PMUXCR2_ANT2_DIO11_RSVD 0x00000010 +#define MPC85xx_PMUXCR2_ANT2_DIO11_TIMER8 0x00000020 +#define MPC85xx_PMUXCR2_ANT2_DIO11_GPIO61 0x00000030 +#define MPC85xx_PMUXCR2_ANT3_AGC_GPO53 0x00000004 +#define MPC85xx_PMUXCR2_ANT3_DO_TDM 0x00000001 +#define MPC85xx_PMUXCR2_ANT3_DO_GPIO46_49 0x00000002 + u32 pmuxcr3; + +#define MPC85xx_PMUXCR3_ANT3_DO4_5_TDM 0x40000000 +#define MPC85xx_PMUXCR3_ANT3_DO4_5_GPIO_50_51 0x80000000 +#define MPC85xx_PMUXCR3_ANT3_DO6_7_TRIG_IN_SRESET_B 0x10000000 +#define MPC85xx_PMUXCR3_ANT3_DO6_7_GPIO_52_53 0x20000000 +#define MPC85xx_PMUXCR3_ANT3_DO8_MCP_B 0x04000000 +#define MPC85xx_PMUXCR3_ANT3_DO8_GPIO54 0x08000000 +#define MPC85xx_PMUXCR3_ANT3_DO9_10_CKSTP_IN_OUT 0x01000000 +#define MPC85xx_PMUXCR3_ANT3_DO9_10_GPIO55_56 0x02000000 +#define MPC85xx_PMUXCR3_ANT3_DO11_IRQ_OUT 0x00400000 +#define MPC85xx_PMUXCR3_ANT3_DO11_GPIO57 0x00800000 +#define MPC85xx_PMUXCR3_SPI2_CS2_GPO93 0x00100000 +#define MPC85xx_PMUXCR3_SPI2_CS3_GPO94 0x00040000 +#define MPC85xx_PMUXCR3_ANT2_AGC_RSVD 0x00010000 +#define MPC85xx_PMUXCR3_ANT2_GPO89 0x00030000 + u32 pmuxcr4; +#else u8 res6[8]; +#endif u32 devdisr; /* Device disable control */ #define MPC85xx_DEVDISR_PCI1 0x80000000 #define MPC85xx_DEVDISR_PCI2 0x40000000 @@ -2166,7 +2276,14 @@ typedef struct ccsr_gur { u32 ddrdllcr; /* DDR DLL control */ u8 res14[12]; u32 lbcdllcr; /* LBC DLL control */ +#if defined(CONFIG_BSC9131) + u8 res15[12]; + u32 halt_req_mask; +#define HALTED_TO_HALT_REQ_MASK_0 0x80000000 + u8 res18[232]; +#else u8 res15[248]; +#endif u32 lbiuiplldcr0; /* LBIU PLL Debug Reg 0 */ u32 lbiuiplldcr1; /* LBIU PLL Debug Reg 1 */ u32 ddrioovcr; /* DDR IO Override Control */ diff --git a/arch/powerpc/include/asm/io.h b/arch/powerpc/include/asm/io.h index 56ac9fe..6b52a94 100644 --- a/arch/powerpc/include/asm/io.h +++ b/arch/powerpc/include/asm/io.h @@ -295,7 +295,7 @@ static inline void * map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags) { #ifdef CONFIG_ADDR_MAP - return (void *)(addrmap_phys_to_virt(paddr)); + return addrmap_phys_to_virt(paddr); #else return (void *)((unsigned long)paddr); #endif diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h index 4e32639..4eb88e9 100644 --- a/arch/powerpc/include/asm/processor.h +++ b/arch/powerpc/include/asm/processor.h @@ -1036,7 +1036,7 @@ #define SVR_MIN(svr) (((svr) >> 0) & 0xF) /* Minor revision field*/ /* Some parts define SVR[0:23] as the SOC version */ -#define SVR_SOC_VER(svr) (((svr) >> 8) & 0xFFFFFF) /* SOC Version fields */ +#define SVR_SOC_VER(svr) (((svr) >> 8) & 0xFFF7FF) /* SOC w/o E bit*/ /* whether MPC8xxxE (i.e. has SEC) */ #if defined(CONFIG_MPC85xx) @@ -1055,87 +1055,55 @@ */ #define SVR_8533 0x803400 -#define SVR_8533_E 0x803C00 #define SVR_8535 0x803701 -#define SVR_8535_E 0x803F01 #define SVR_8536 0x803700 -#define SVR_8536_E 0x803F00 #define SVR_8540 0x803000 #define SVR_8541 0x807200 -#define SVR_8541_E 0x807A00 #define SVR_8543 0x803200 -#define SVR_8543_E 0x803A00 #define SVR_8544 0x803401 -#define SVR_8544_E 0x803C01 #define SVR_8545 0x803102 -#define SVR_8545_E 0x803902 -#define SVR_8547_E 0x803901 +#define SVR_8547 0x803101 #define SVR_8548 0x803100 -#define SVR_8548_E 0x803900 #define SVR_8555 0x807100 -#define SVR_8555_E 0x807900 #define SVR_8560 0x807000 #define SVR_8567 0x807501 -#define SVR_8567_E 0x807D01 #define SVR_8568 0x807500 -#define SVR_8568_E 0x807D00 #define SVR_8569 0x808000 -#define SVR_8569_E 0x808800 #define SVR_8572 0x80E000 -#define SVR_8572_E 0x80E800 #define SVR_P1010 0x80F100 -#define SVR_P1010_E 0x80F900 #define SVR_P1011 0x80E500 -#define SVR_P1011_E 0x80ED00 #define SVR_P1012 0x80E501 -#define SVR_P1012_E 0x80ED01 #define SVR_P1013 0x80E700 -#define SVR_P1013_E 0x80EF00 #define SVR_P1014 0x80F101 -#define SVR_P1014_E 0x80F901 #define SVR_P1015 0x80E502 -#define SVR_P1015_E 0x80ED02 #define SVR_P1016 0x80E503 -#define SVR_P1016_E 0x80ED03 #define SVR_P1017 0x80F700 -#define SVR_P1017_E 0x80FF00 #define SVR_P1020 0x80E400 -#define SVR_P1020_E 0x80EC00 #define SVR_P1021 0x80E401 -#define SVR_P1021_E 0x80EC01 #define SVR_P1022 0x80E600 -#define SVR_P1022_E 0x80EE00 #define SVR_P1023 0x80F600 -#define SVR_P1023_E 0x80FE00 #define SVR_P1024 0x80E402 -#define SVR_P1024_E 0x80EC02 #define SVR_P1025 0x80E403 -#define SVR_P1025_E 0x80EC03 #define SVR_P2010 0x80E300 -#define SVR_P2010_E 0x80EB00 #define SVR_P2020 0x80E200 -#define SVR_P2020_E 0x80EA00 #define SVR_P2040 0x821000 -#define SVR_P2040_E 0x821800 #define SVR_P2041 0x821001 -#define SVR_P2041_E 0x821801 #define SVR_P3041 0x821103 -#define SVR_P3041_E 0x821903 #define SVR_P3060 0x820002 -#define SVR_P3060_E 0x820802 #define SVR_P4040 0x820100 -#define SVR_P4040_E 0x820900 #define SVR_P4080 0x820000 -#define SVR_P4080_E 0x820800 #define SVR_P5010 0x822100 -#define SVR_P5010_E 0x822900 #define SVR_P5020 0x822000 -#define SVR_P5020_E 0x822800 #define SVR_8610 0x80A000 #define SVR_8641 0x809000 #define SVR_8641D 0x809001 +#define SVR_9130 0x860001 +#define SVR_9130_E 0x860801 +#define SVR_9131 0x860000 +#define SVR_9131_E 0x860800 + #define SVR_Unknown 0xFFFFFF #define _GLOBAL(n)\ |