diff --git a/firmware/Makefile b/firmware/Makefile index e6005fe754..e916cd7125 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -3,8 +3,6 @@ # see setup_linux_environment.sh but Windows is also totally fine # -.PHONY: openblt - CHIBIOS = ChibiOS RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk RULESFILE = $(RULESPATH)/rules.mk @@ -113,10 +111,6 @@ ifeq ($(USE_SMART_BUILD),) USE_SMART_BUILD = no endif -ifeq ($(USE_BOOTLOADER),) - USE_BOOTLOADER = no -endif - ifeq ($(USE_OPENBLT),) USE_OPENBLT = no endif @@ -205,18 +199,9 @@ endif include $(PROJECT_DIR)/hw_layer/mass_storage/mass_storage.mk include $(PROJECT_DIR)/common.mk -ifeq ($(BOOTLOADERINC),) - # include default bootloader code - BOOTLOADERINC= $(PROJECT_DIR)/bootloader/ -endif - -ifeq ($(USE_BOOTLOADER),yes) - include $(PROJECT_DIR)/bootloader/bootloader.mk -endif - ifeq ($(USE_OPENBLT),yes) # Reserve start of flash for OpenBLT - USE_OPT += -Wl,--defsym=BOOTLOADER=1 + USE_OPT += -Wl,--defsym=HAS_BOOTLOADER=1 DDEFS += -DEFI_USE_OPENBLT=TRUE endif @@ -235,13 +220,12 @@ CSRC = check.c \ $(BOARDSRC) \ $(CHIBIOS_CONTRIB)/os/various/ramdisk.c \ $(CHIBIOS)/os/various/evtimer.c \ - $(BOOTLOADERSRC) \ ${HW_MASS_STORAGE_SRC_C} \ $(HW_LAYER_EMS) \ $(HW_LAYER_DRIVERS_CORE) \ $(HW_LAYER_DRIVERS) \ $(RUSEFI_LIB_C) \ - main_hardfault.c + $(PROJECT_DIR)/hw_layer/main_hardfault.c # C++ sources that can be compiled in ARM or THUMB mode depending on the global # setting. @@ -279,7 +263,7 @@ TCPPSRC = # List ASM source files here ASMXSRC = $(ALLXASMSRC) \ $(RUSEFIASM) \ - main_hardfault_asm.S + $(PROJECT_DIR)/hw_layer/main_hardfault_asm.S # # WARNING! order of variables is important here - for instance cypress own folders should go before default folders @@ -289,7 +273,6 @@ INCDIR = \ $(BOARDINC) \ $(ALLINC) \ $(TESTINC) \ - $(BOOTLOADERINC) \ $(CHIBIOS)/os/various \ $(RUSEFI_LIB_INC) \ $(CONFDIR) \ @@ -372,12 +355,6 @@ ULIBS = -lm --specs=nano.specs -Wl,--sort-section=alignment include $(RULESFILE) -openblt: - make -f $(PROJECT_DIR)/hw_layer/openblt/openblt.mk BOARD_DIR=$(BOARD_DIR) PROJECT_BOARD=$(PROJECT_BOARD) PROJECT_CPU=$(PROJECT_CPU) - -openblt_clean: - make -f $(PROJECT_DIR)/hw_layer/openblt/openblt.mk clean BOARD_DIR=$(BOARD_DIR) PROJECT_BOARD=$(PROJECT_BOARD) PROJECT_CPU=$(PROJECT_CPU) - # Enable precompiled header include $(PROJECT_DIR)/rusefi_pch.mk include $(PROJECT_DIR)/gitversion.mk diff --git a/firmware/bootloader/!clean_bootloader.bat b/firmware/bootloader/!clean_bootloader.bat deleted file mode 100644 index 1468618362..0000000000 --- a/firmware/bootloader/!clean_bootloader.bat +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -sh.exe clean_bootloader.sh diff --git a/firmware/bootloader/!compile_bootloader.bat b/firmware/bootloader/!compile_bootloader.bat deleted file mode 100644 index 7716a69dc2..0000000000 --- a/firmware/bootloader/!compile_bootloader.bat +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -sh.exe compile_bootloader.sh diff --git a/firmware/bootloader/!compile_bootloader_405.bat b/firmware/bootloader/!compile_bootloader_405.bat deleted file mode 100644 index 85f4db98cf..0000000000 --- a/firmware/bootloader/!compile_bootloader_405.bat +++ /dev/null @@ -1,22 +0,0 @@ -@echo off - -echo Starting compilation for Prometheus-405 - -set PROJECT_BOARD=prometheus/f405 -set PROMETHEUS_BOARD=405 -set EXTRA_PARAMS=-DDUMMY ^ - -DEFI_BOOTLOADER ^ - -DSTM32F405xx ^ - -DEFI_ENABLE_ASSERTS=FALSE ^ - -DCH_DBG_ENABLE_CHECKS=FALSE ^ - -DCH_DBG_ENABLE_ASSERTS=FALSE ^ - -DCH_DBG_ENABLE_STACK_CHECK=FALSE ^ - -DCH_DBG_FILL_THREADS=FALSE ^ - -DBOARD_TLE8888_COUNT=0 ^ - -DBOARD_TLE6240_COUNT=0 ^ - -DBOARD_MC33972_COUNT=0 ^ - -DCH_DBG_THREADS_PROFILING=FALSE -set BOOTLOADER_CODE_DESTINATION_PATH="../Prometheus/405" -set DEBUG_LEVEL_OPT="-O2" - -call !compile_bootloader.bat -r diff --git a/firmware/bootloader/!compile_bootloader_469.bat b/firmware/bootloader/!compile_bootloader_469.bat deleted file mode 100644 index 8ce14aa36a..0000000000 --- a/firmware/bootloader/!compile_bootloader_469.bat +++ /dev/null @@ -1,15 +0,0 @@ -@echo off - -echo Starting compilation for Prometheus-469 - -set PROJECT_BOARD=prometheus/f469 -set PROMETHEUS_BOARD=469 -set EXTRA_PARAMS=-DDUMMY -DEFI_BOOTLOADER -DSTM32F469xx -DEFI_ENABLE_ASSERTS=FALSE -DCH_DBG_ENABLE_CHECKS=FALSE -DCH_DBG_ENABLE_ASSERTS=FALSE -DCH_DBG_ENABLE_STACK_CHECK=FALSE -DCH_DBG_FILL_THREADS=FALSE ^ - -DBOARD_TLE8888_COUNT=0 ^ - -DBOARD_TLE6240_COUNT=0 ^ - -DBOARD_MC33972_COUNT=0 ^ - -DCH_DBG_THREADS_PROFILING=FALSE -set BOOTLOADER_CODE_DESTINATION_PATH="../Prometheus/469" -set DEBUG_LEVEL_OPT="-O2" - -call !compile_bootloader.bat -r diff --git a/firmware/bootloader/STMFlashLoader_all_screenshots.png b/firmware/bootloader/STMFlashLoader_all_screenshots.png deleted file mode 100644 index a663b26cba..0000000000 Binary files a/firmware/bootloader/STMFlashLoader_all_screenshots.png and /dev/null differ diff --git a/firmware/bootloader/bootloader.h b/firmware/bootloader/bootloader.h deleted file mode 100644 index 33c2b54e6d..0000000000 --- a/firmware/bootloader/bootloader.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Used to trick the linker to include bootloader code into the binary. -*/ -int initBootloader(void); - -#ifdef __cplusplus -} -#endif diff --git a/firmware/bootloader/bootloader.mk b/firmware/bootloader/bootloader.mk deleted file mode 100644 index 876b5e676e..0000000000 --- a/firmware/bootloader/bootloader.mk +++ /dev/null @@ -1,15 +0,0 @@ - -# Added if USE_BOOTLOADER=yes in Makefile -BOOTLOADERSRC= $(PROJECT_DIR)/bootloader/bootloader_storage.c - -ifeq ($(BOOTLOADERINC),) - BOOTLOADERINC=$(PROJECT_DIR)/bootloader -endif - -USE_OPT += -Wl,--defsym=BOOTLOADER=1 - -# Add bootloader code to the firmware -DDEFS += -DEFI_BOOTLOADER_INCLUDE_CODE=TRUE - -# Relocate interrupt vectors for the new application start address -DDEFS += -DCORTEX_VTOR_INIT=0x8000 diff --git a/firmware/bootloader/bootloader_generated.hxx b/firmware/bootloader/bootloader_generated.hxx deleted file mode 100644 index 9e62fb623b..0000000000 --- a/firmware/bootloader/bootloader_generated.hxx +++ /dev/null @@ -1,899 +0,0 @@ -// This file was generated by Bin2Header -// Sun Jun 04 21:58:31 EEST 2017 -#ifndef BOOTLOADER_GENERATED_HXX_ -#define BOOTLOADER_GENERATED_HXX_ - -static const volatile uint8_t bootloader_code[] BOOTLOADER_SECTION = { - 0x00, 0x10, 0x00, 0x20, 0xd1, 0x01, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0x21, 0x12, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xb1, 0x1d, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0x71, 0x16, 0x00, 0x08, - 0xa1, 0x16, 0x00, 0x08, 0xe1, 0x16, 0x00, 0x08, 0x21, 0x17, 0x00, 0x08, 0x61, 0x17, 0x00, 0x08, - 0x91, 0x17, 0x00, 0x08, 0xd1, 0x17, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0x71, 0x1f, 0x00, 0x08, 0x91, 0x1f, 0x00, 0x08, 0xb1, 0x1f, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0x11, 0x18, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0x51, 0x18, 0x00, 0x08, 0x81, 0x18, 0x00, 0x08, 0xc1, 0x18, 0x00, 0x08, 0x01, 0x19, 0x00, 0x08, - 0x41, 0x19, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0x71, 0x19, 0x00, 0x08, 0xb1, 0x19, 0x00, 0x08, 0xf1, 0x19, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, 0xf1, 0x04, 0x00, 0x08, - 0x11, 0x27, 0x00, 0x08, 0x41, 0x28, 0x00, 0x08, 0x41, 0x29, 0x00, 0x08, 0x71, 0x2f, 0x00, 0x08, - 0x72, 0xb6, 0x34, 0x48, 0x80, 0xf3, 0x09, 0x88, 0x40, 0xf2, 0x00, 0x00, 0xcc, 0xf2, 0x00, 0x00, - 0x4e, 0xf6, 0x34, 0x71, 0xce, 0xf2, 0x00, 0x01, 0x08, 0x60, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, - 0x6f, 0x8f, 0x40, 0xf2, 0x00, 0x00, 0xc0, 0xf2, 0xf0, 0x00, 0x4e, 0xf6, 0x88, 0x51, 0xce, 0xf2, - 0x00, 0x01, 0x08, 0x60, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0x4f, 0xf0, 0x00, 0x00, - 0xe1, 0xee, 0x10, 0x0a, 0x4e, 0xf6, 0x3c, 0x71, 0xce, 0xf2, 0x00, 0x01, 0x08, 0x60, 0x06, 0x20, - 0x80, 0xf3, 0x14, 0x88, 0xbf, 0xf3, 0x6f, 0x8f, 0x00, 0xf0, 0x1a, 0xf9, 0x01, 0xf0, 0x70, 0xff, - 0x4f, 0xf0, 0x55, 0x30, 0x1c, 0x49, 0x1d, 0x4a, 0x91, 0x42, 0x3c, 0xbf, 0x41, 0xf8, 0x04, 0x0b, - 0xfa, 0xe7, 0x1b, 0x49, 0x17, 0x4a, 0x91, 0x42, 0x3c, 0xbf, 0x41, 0xf8, 0x04, 0x0b, 0xfa, 0xe7, - 0x18, 0x49, 0x19, 0x4a, 0x19, 0x4b, 0x9a, 0x42, 0x3e, 0xbf, 0x51, 0xf8, 0x04, 0x0b, 0x42, 0xf8, - 0x04, 0x0b, 0xf8, 0xe7, 0x00, 0x20, 0x16, 0x49, 0x16, 0x4a, 0x91, 0x42, 0x3c, 0xbf, 0x41, 0xf8, - 0x04, 0x0b, 0xfa, 0xe7, 0x00, 0xf0, 0x0c, 0xf9, 0x00, 0xf0, 0xfa, 0xf8, 0x12, 0x4c, 0x13, 0x4d, - 0xac, 0x42, 0x03, 0xda, 0x54, 0xf8, 0x04, 0x1b, 0x88, 0x47, 0xf9, 0xe7, 0x02, 0xf0, 0x48, 0xfe, - 0x0f, 0x4c, 0x10, 0x4d, 0xac, 0x42, 0x03, 0xda, 0x54, 0xf8, 0x04, 0x1b, 0x88, 0x47, 0xf9, 0xe7, - 0x00, 0xf0, 0xee, 0xb8, 0x00, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x20, - 0x00, 0x10, 0x00, 0x20, 0x78, 0x37, 0x00, 0x08, 0x00, 0x16, 0x00, 0x20, 0x18, 0x16, 0x00, 0x20, - 0x18, 0x16, 0x00, 0x20, 0xec, 0x79, 0x00, 0x20, 0xc0, 0x01, 0x00, 0x08, 0xd0, 0x01, 0x00, 0x08, - 0xd0, 0x01, 0x00, 0x08, 0xd0, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x4f, 0x2d, 0xed, 0x10, 0x8a, 0xc1, 0xf8, 0x0c, 0xd0, 0xc3, 0x68, 0x9d, 0x46, - 0xbd, 0xec, 0x10, 0x8a, 0xbd, 0xe8, 0xf0, 0x8f, 0x00, 0xf0, 0xda, 0xf9, 0x00, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0x28, 0x46, 0xa0, 0x47, 0x00, 0x20, 0x00, 0xf0, 0xb2, 0xfc, 0x00, 0xf0, 0xc0, 0xf9, - 0x00, 0xf0, 0xee, 0xfb, 0x00, 0xf0, 0xcc, 0xf9, 0x00, 0xdf, 0xfe, 0xe7, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x46, 0x41, 0xea, 0x00, 0x03, 0x13, 0xf0, 0x03, 0x03, 0x6d, 0xd1, 0x40, 0x3a, 0x41, 0xd3, - 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, - 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, - 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, - 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, - 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, - 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, - 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, - 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, - 0x40, 0x3a, 0xbd, 0xd2, 0x30, 0x32, 0x11, 0xd3, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, - 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, - 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x10, 0x3a, 0xed, 0xd2, 0x0c, 0x32, 0x05, 0xd3, - 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x04, 0x3a, 0xf9, 0xd2, 0x04, 0x32, 0x08, 0xd0, - 0xd2, 0x07, 0x1c, 0xbf, 0x11, 0xf8, 0x01, 0x3b, 0x00, 0xf8, 0x01, 0x3b, 0x01, 0xd3, 0x0b, 0x88, - 0x03, 0x80, 0x60, 0x46, 0x70, 0x47, 0x00, 0xbf, 0x08, 0x2a, 0x13, 0xd3, 0x8b, 0x07, 0x8d, 0xd0, - 0x10, 0xf0, 0x03, 0x03, 0x8a, 0xd0, 0xc3, 0xf1, 0x04, 0x03, 0xd2, 0x1a, 0xdb, 0x07, 0x1c, 0xbf, - 0x11, 0xf8, 0x01, 0x3b, 0x00, 0xf8, 0x01, 0x3b, 0x80, 0xd3, 0x31, 0xf8, 0x02, 0x3b, 0x20, 0xf8, - 0x02, 0x3b, 0x7b, 0xe7, 0x04, 0x3a, 0xd9, 0xd3, 0x01, 0x3a, 0x11, 0xf8, 0x01, 0x3b, 0x00, 0xf8, - 0x01, 0x3b, 0xf9, 0xd2, 0x0b, 0x78, 0x03, 0x70, 0x4b, 0x78, 0x43, 0x70, 0x8b, 0x78, 0x83, 0x70, - 0x60, 0x46, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xb5, 0x12, 0x4f, 0x12, 0x4d, 0x13, 0x4c, 0x13, 0x4b, 0x14, 0x49, 0x07, 0xf1, 0x80, 0x0e, - 0x00, 0x26, 0x9c, 0x42, 0x11, 0xd9, 0x04, 0x39, 0x1a, 0x46, 0x51, 0xf8, 0x04, 0x0f, 0x42, 0xf8, - 0x04, 0x0b, 0x94, 0x42, 0xf9, 0xd8, 0xda, 0x43, 0x14, 0x44, 0x24, 0xf0, 0x03, 0x04, 0x04, 0x34, - 0x23, 0x44, 0x9d, 0x42, 0x03, 0xd9, 0x43, 0xf8, 0x04, 0x6b, 0x9d, 0x42, 0xfb, 0xd8, 0x10, 0x37, - 0x77, 0x45, 0x02, 0xd2, 0x97, 0xe8, 0x3a, 0x00, 0xe3, 0xe7, 0xf0, 0xbd, 0x20, 0x30, 0x00, 0x08, - 0xec, 0x79, 0x00, 0x20, 0xec, 0x79, 0x00, 0x20, 0xec, 0x79, 0x00, 0x20, 0x90, 0x37, 0x00, 0x08, - 0xfe, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x4b, 0x22, 0x4a, 0x22, 0x48, 0xf0, 0xb5, 0x00, 0x24, 0x9c, 0x60, 0xd9, 0x68, 0x21, 0x4e, - 0x21, 0x4d, 0x4f, 0xf6, 0xff, 0x07, 0x39, 0x40, 0x0a, 0x43, 0xda, 0x60, 0xf2, 0x68, 0x42, 0xf0, - 0x80, 0x72, 0xf2, 0x60, 0x02, 0x68, 0x20, 0x21, 0x42, 0xf0, 0x01, 0x02, 0x10, 0x26, 0x02, 0x60, - 0x83, 0xb0, 0xde, 0x77, 0x83, 0xf8, 0x22, 0x10, 0x00, 0xf0, 0xb2, 0xf9, 0x00, 0xf0, 0x50, 0xf9, - 0x00, 0xf0, 0x1e, 0xfc, 0x00, 0xf0, 0x1c, 0xfe, 0x00, 0xf0, 0x52, 0xfe, 0x40, 0x21, 0x28, 0x46, - 0x00, 0xf0, 0xd6, 0xfa, 0xa5, 0xf1, 0x38, 0x07, 0x01, 0x26, 0x06, 0x77, 0xb8, 0x61, 0x00, 0xf0, - 0x7f, 0xf8, 0x84, 0xf3, 0x11, 0x88, 0x62, 0xb6, 0xbb, 0x69, 0x0c, 0x4a, 0x9a, 0x61, 0x05, 0xf1, - 0x50, 0x00, 0x32, 0x46, 0x00, 0x94, 0x0a, 0x4b, 0x40, 0xf6, 0x18, 0x01, 0x00, 0xf0, 0x28, 0xfb, - 0x08, 0x4b, 0x83, 0x61, 0x03, 0xb0, 0xf0, 0xbd, 0x00, 0xed, 0x00, 0xe0, 0x00, 0x03, 0xfa, 0x05, - 0x00, 0x10, 0x00, 0xe0, 0xf0, 0xed, 0x00, 0xe0, 0x50, 0x16, 0x00, 0x20, 0x10, 0x32, 0x00, 0x08, - 0x01, 0x05, 0x00, 0x08, 0xc0, 0x30, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0x04, 0x46, 0x72, 0xb6, 0xb1, 0x22, 0x02, 0x49, 0x02, 0xf0, 0xc1, 0xf9, 0x02, 0x4b, - 0xdc, 0x62, 0xfe, 0xe7, 0xa0, 0x30, 0x00, 0x08, 0x18, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf8, 0x43, 0x16, 0x4e, 0x00, 0xf0, 0xe3, 0xf8, 0xb2, 0x69, 0x93, 0x7f, 0x0b, 0xb1, - 0x01, 0x3b, 0x93, 0x77, 0x00, 0xf0, 0xdc, 0xf8, 0x12, 0x4f, 0xb3, 0x6a, 0xf4, 0x69, 0x01, 0x33, - 0xbc, 0x42, 0xb3, 0x62, 0x19, 0xd0, 0xa5, 0x68, 0x01, 0x3d, 0xa5, 0x60, 0xad, 0xb9, 0x4f, 0xf0, - 0x20, 0x09, 0x23, 0x68, 0xd4, 0xf8, 0x0c, 0x80, 0xe5, 0x60, 0x5f, 0x60, 0xf3, 0x61, 0x00, 0xf0, - 0x77, 0xf8, 0x85, 0xf3, 0x11, 0x88, 0x20, 0x69, 0xc0, 0x47, 0x89, 0xf3, 0x11, 0x88, 0x00, 0xf0, - 0x57, 0xf8, 0xf4, 0x69, 0xa3, 0x68, 0x00, 0x2b, 0xeb, 0xd0, 0xbd, 0xe8, 0xf8, 0x83, 0x00, 0xbf, - 0x18, 0x16, 0x00, 0x20, 0x34, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x4b, 0x1a, 0x6b, 0x0a, 0xb9, 0x5b, 0x6b, 0x13, 0xb1, 0x03, 0x48, 0xff, 0xf7, 0xb0, 0xbf, - 0x70, 0x47, 0x00, 0xbf, 0x18, 0x16, 0x00, 0x20, 0xd0, 0x30, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x4b, 0x1a, 0x6b, 0x0a, 0xb9, 0x5b, 0x6b, 0x13, 0xb1, 0x03, 0x48, 0xff, 0xf7, 0xa0, 0xbf, - 0x70, 0x47, 0x00, 0xbf, 0x18, 0x16, 0x00, 0x20, 0xe0, 0x30, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x05, 0x4c, 0x23, 0x6b, 0x0b, 0xb9, 0x63, 0x6b, 0x13, 0xb1, 0x03, 0x48, 0xff, 0xf7, - 0x8f, 0xff, 0x01, 0x23, 0x63, 0x63, 0x10, 0xbd, 0x18, 0x16, 0x00, 0x20, 0x10, 0x31, 0x00, 0x08, - 0x10, 0xb5, 0x07, 0x4c, 0x23, 0x6b, 0x2b, 0xb9, 0x63, 0x6b, 0x00, 0x2b, 0x02, 0xdd, 0x00, 0x23, - 0x63, 0x63, 0x10, 0xbd, 0x03, 0x48, 0xff, 0xf7, 0x7b, 0xff, 0x00, 0x23, 0x63, 0x63, 0x10, 0xbd, - 0x18, 0x16, 0x00, 0x20, 0x60, 0x31, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x06, 0x4c, 0x23, 0x6b, 0x00, 0x2b, 0x01, 0xdd, 0x63, 0x6b, 0x13, 0xb1, 0x04, 0x48, - 0xff, 0xf7, 0x66, 0xff, 0x01, 0x23, 0x63, 0x63, 0x10, 0xbd, 0x00, 0xbf, 0x18, 0x16, 0x00, 0x20, - 0x30, 0x31, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x08, 0x4c, 0x23, 0x6b, 0x00, 0x2b, 0x05, 0xdd, 0x63, 0x6b, 0x00, 0x2b, 0x02, 0xdd, - 0x00, 0x23, 0x63, 0x63, 0x10, 0xbd, 0x04, 0x48, 0xff, 0xf7, 0x4a, 0xff, 0x00, 0x23, 0x63, 0x63, - 0x10, 0xbd, 0x00, 0xbf, 0x18, 0x16, 0x00, 0x20, 0x70, 0x31, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x0a, 0x4c, 0x23, 0x6b, 0x00, 0x2b, 0x01, 0xdb, - 0x62, 0x6b, 0x1a, 0xb1, 0x08, 0x48, 0xff, 0xf7, 0x33, 0xff, 0x23, 0x6b, 0x07, 0x4a, 0x11, 0x68, - 0x01, 0x33, 0x8b, 0x42, 0x23, 0x63, 0xc8, 0xbf, 0x13, 0x60, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, - 0x10, 0xbd, 0x00, 0xbf, 0x18, 0x16, 0x00, 0x20, 0xf0, 0x30, 0x00, 0x08, 0x88, 0x31, 0x00, 0x20, - 0x10, 0xb5, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x07, 0x4c, 0x23, 0x6b, 0x00, 0x2b, 0x01, 0xdd, - 0x62, 0x6b, 0x1a, 0xb1, 0x05, 0x48, 0xff, 0xf7, 0x13, 0xff, 0x23, 0x6b, 0x01, 0x3b, 0x23, 0x63, - 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x10, 0xbd, 0x18, 0x16, 0x00, 0x20, 0x00, 0x31, 0x00, 0x08, - 0x05, 0x4b, 0x1a, 0x6b, 0x00, 0x2a, 0x03, 0xdb, 0x5b, 0x6b, 0x00, 0x2b, 0x00, 0xdd, 0x70, 0x47, - 0x02, 0x48, 0xff, 0xf7, 0xfd, 0xbe, 0x00, 0xbf, 0x18, 0x16, 0x00, 0x20, 0x80, 0x31, 0x00, 0x08, - 0x04, 0x4b, 0x1a, 0x6b, 0x1a, 0xb9, 0x5b, 0x6b, 0x00, 0x2b, 0x00, 0xdd, 0x70, 0x47, 0x02, 0x48, - 0xff, 0xf7, 0xee, 0xbe, 0x18, 0x16, 0x00, 0x20, 0xb0, 0x31, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x4b, 0x4f, 0xf0, 0xff, 0x30, 0x03, 0xf1, 0x1c, 0x02, 0x00, 0x21, 0x58, 0x62, 0x99, 0x62, - 0xda, 0x61, 0x1a, 0x62, 0x70, 0x47, 0x00, 0xbf, 0x18, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0x05, 0x46, 0x0c, 0x46, 0x16, 0x46, 0x1f, 0x46, 0xff, 0xf7, 0xc9, 0xff, 0xd5, 0xb1, - 0xce, 0xb1, 0xc4, 0xb1, 0x0e, 0x48, 0x2f, 0x61, 0xc3, 0x69, 0xee, 0x60, 0x9a, 0x68, 0x94, 0x42, - 0x04, 0xd9, 0x1b, 0x68, 0xa4, 0x1a, 0x9a, 0x68, 0xa2, 0x42, 0xfa, 0xd3, 0x5a, 0x68, 0x6a, 0x60, - 0x2b, 0x60, 0x15, 0x60, 0x5d, 0x60, 0xac, 0x60, 0x99, 0x68, 0x4f, 0xf0, 0xff, 0x32, 0x09, 0x1b, - 0x99, 0x60, 0x42, 0x62, 0xf8, 0xbd, 0x03, 0x48, 0xff, 0xf7, 0xb2, 0xfe, 0xe2, 0xe7, 0x00, 0xbf, - 0x18, 0x16, 0x00, 0x20, 0xc0, 0x31, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0x9c, 0xff, 0x7c, 0xb1, 0x23, 0x68, 0xa5, 0x68, 0x9a, 0x68, - 0x61, 0x68, 0x08, 0x48, 0x2a, 0x44, 0x9a, 0x60, 0x0b, 0x60, 0x25, 0x68, 0x00, 0x22, 0x4f, 0xf0, - 0xff, 0x33, 0x69, 0x60, 0xe2, 0x60, 0x43, 0x62, 0x38, 0xbd, 0x03, 0x48, 0xff, 0xf7, 0x90, 0xfe, - 0xeb, 0xe7, 0x00, 0xbf, 0x18, 0x16, 0x00, 0x20, 0xd0, 0x31, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x4b, 0x00, 0x22, 0x1b, 0x60, 0x5b, 0x60, 0x1b, 0x61, 0x5b, 0x61, 0x9a, 0x60, 0x70, 0x47, - 0x18, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0x6c, 0xff, 0x74, 0xb1, 0x00, 0x22, 0xa1, 0x68, 0x08, 0x4b, - 0x22, 0x77, 0x1b, 0x68, 0x9a, 0x68, 0x8a, 0x42, 0xfb, 0xd2, 0x5a, 0x68, 0x62, 0x60, 0x23, 0x60, - 0x20, 0x46, 0x14, 0x60, 0x5c, 0x60, 0x10, 0xbd, 0x02, 0x48, 0xff, 0xf7, 0x61, 0xfe, 0xec, 0xe7, - 0x18, 0x16, 0x00, 0x20, 0xe0, 0x31, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x04, 0x46, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xe1, 0xfe, 0x23, 0x7f, - 0x07, 0x2b, 0x10, 0xd8, 0xdf, 0xe8, 0x03, 0xf0, 0x15, 0x0f, 0x0f, 0x1b, 0x0a, 0x04, 0x0f, 0x0a, - 0x25, 0x6a, 0xff, 0xf7, 0x3d, 0xff, 0xab, 0x68, 0x01, 0x33, 0xab, 0x60, 0x94, 0xe8, 0x0c, 0x00, - 0x1a, 0x60, 0x22, 0x68, 0x53, 0x60, 0x4f, 0xf0, 0xff, 0x33, 0x23, 0x62, 0x20, 0x46, 0xff, 0xf7, - 0xbf, 0xff, 0xff, 0xf7, 0xdd, 0xfe, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x38, 0xbd, 0x23, 0x6a, - 0x00, 0x22, 0x1a, 0x60, 0x4f, 0xf0, 0xff, 0x33, 0x23, 0x62, 0x20, 0x46, 0xff, 0xf7, 0xb0, 0xff, - 0xef, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0x24, 0xff, 0x08, 0x4b, 0x99, 0x69, 0x1a, 0x68, 0x0c, 0x77, - 0x14, 0x20, 0x88, 0x77, 0x10, 0x68, 0x18, 0x60, 0x01, 0x24, 0x43, 0x60, 0x14, 0x77, 0x10, 0x46, - 0xbd, 0xe8, 0x10, 0x40, 0x9a, 0x61, 0xff, 0xf7, 0x9b, 0xbc, 0x00, 0xbf, 0x18, 0x16, 0x00, 0x20, - 0x70, 0xb5, 0x0c, 0x46, 0x86, 0xb0, 0x06, 0x46, 0xff, 0xf7, 0x0a, 0xff, 0x63, 0x1c, 0x14, 0xd0, - 0x0e, 0x4d, 0x0f, 0x4a, 0xab, 0x69, 0x21, 0x46, 0x01, 0xa8, 0xff, 0xf7, 0x21, 0xff, 0x30, 0x46, - 0xff, 0xf7, 0xd6, 0xff, 0xff, 0xf7, 0xec, 0xfe, 0x04, 0x9b, 0x13, 0xb1, 0x01, 0xa8, 0xff, 0xf7, - 0x47, 0xff, 0xab, 0x69, 0x18, 0x6a, 0x06, 0xb0, 0x70, 0xbd, 0x04, 0x4d, 0x30, 0x46, 0xff, 0xf7, - 0xc7, 0xff, 0xab, 0x69, 0x18, 0x6a, 0x06, 0xb0, 0x70, 0xbd, 0x00, 0xbf, 0x18, 0x16, 0x00, 0x20, - 0x11, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x0d, 0x4d, 0x04, 0x46, 0x0e, 0x46, 0xff, 0xf7, 0xda, 0xfe, 0xa8, 0x69, 0x26, 0x62, - 0x83, 0x68, 0xa2, 0x68, 0x9a, 0x42, 0x0a, 0xd9, 0xff, 0xf7, 0x52, 0xff, 0x01, 0x23, 0x23, 0x77, - 0x01, 0x46, 0xac, 0x61, 0x20, 0x46, 0xbd, 0xe8, 0x70, 0x40, 0xff, 0xf7, 0x51, 0xbc, 0x20, 0x46, - 0xbd, 0xe8, 0x70, 0x40, 0xff, 0xf7, 0x44, 0xbf, 0x18, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x4a, 0x93, 0x69, 0x11, 0x68, 0x9a, 0x7f, 0x88, 0x68, 0x9b, 0x68, 0x22, 0xb9, 0x98, 0x42, - 0x34, 0xbf, 0x00, 0x20, 0x01, 0x20, 0x70, 0x47, 0x98, 0x42, 0x94, 0xbf, 0x00, 0x20, 0x01, 0x20, - 0x70, 0x47, 0x00, 0xbf, 0x18, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x0a, 0x4c, 0x23, 0x68, 0xa5, 0x69, 0x1a, 0x68, 0x22, 0x60, 0x14, 0x21, 0x01, 0x26, - 0x54, 0x60, 0x28, 0x46, 0x1e, 0x77, 0xa9, 0x77, 0xa3, 0x61, 0xff, 0xf7, 0x19, 0xff, 0x29, 0x46, - 0xa0, 0x69, 0xbd, 0xe8, 0x70, 0x40, 0xff, 0xf7, 0x1b, 0xbc, 0x00, 0xbf, 0x18, 0x16, 0x00, 0x20, - 0x0d, 0x4a, 0x10, 0x68, 0x70, 0xb4, 0x03, 0x68, 0x94, 0x69, 0x13, 0x60, 0x01, 0x26, 0x00, 0x25, - 0xa1, 0x68, 0x5a, 0x60, 0x06, 0x77, 0x90, 0x61, 0x25, 0x77, 0x00, 0xe0, 0x1b, 0x68, 0x9a, 0x68, - 0x91, 0x42, 0xfb, 0xd3, 0x5a, 0x68, 0x62, 0x60, 0x23, 0x60, 0x21, 0x46, 0x14, 0x60, 0x5c, 0x60, - 0x70, 0xbc, 0xff, 0xf7, 0xfd, 0xbb, 0x00, 0xbf, 0x18, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x4b, 0x9b, 0x69, 0x9b, 0x7f, 0x0b, 0xb1, 0xff, 0xf7, 0xda, 0xbf, 0xff, 0xf7, 0xc0, 0xbf, - 0x18, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xb5, 0x0d, 0x4c, 0xc1, 0x63, 0x65, 0x69, 0x81, 0x60, 0x00, 0x22, 0x00, 0xf1, 0x28, 0x01, - 0x4f, 0xf0, 0x02, 0x0e, 0x14, 0x27, 0x00, 0xf1, 0x24, 0x06, 0x45, 0x61, 0x04, 0x61, 0x80, 0xf8, - 0x1c, 0xe0, 0x87, 0x77, 0x42, 0x77, 0x82, 0x63, 0x42, 0x63, 0x82, 0x61, 0x28, 0x61, 0x60, 0x61, - 0x46, 0x62, 0x81, 0x62, 0xc1, 0x62, 0xf0, 0xbd, 0x18, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf8, 0x43, 0x04, 0x46, 0x0d, 0x46, 0x90, 0x46, 0x99, 0x46, 0xff, 0xf7, 0x28, 0xfe, - 0x14, 0xb1, 0xb5, 0xf5, 0x83, 0x6f, 0x29, 0xd2, 0x18, 0x48, 0xff, 0xf7, 0x29, 0xfd, 0xa5, 0xf1, - 0x64, 0x01, 0x21, 0x44, 0x16, 0x4f, 0x08, 0x9b, 0x7e, 0x69, 0x16, 0x4a, 0xe1, 0x60, 0x02, 0x25, - 0x4b, 0x64, 0x14, 0x20, 0x00, 0x23, 0x0a, 0x66, 0xc1, 0xf8, 0x40, 0x90, 0x04, 0xf1, 0x28, 0x02, - 0xa0, 0x77, 0x04, 0xf1, 0x24, 0x01, 0x25, 0x77, 0x63, 0x77, 0xc4, 0xf8, 0x08, 0x80, 0x27, 0x61, - 0x66, 0x61, 0xc4, 0xf8, 0x3c, 0x80, 0xa3, 0x63, 0x63, 0x63, 0xa3, 0x61, 0x20, 0x46, 0x34, 0x61, - 0x7c, 0x61, 0x61, 0x62, 0xa2, 0x62, 0xe2, 0x62, 0xbd, 0xe8, 0xf8, 0x83, 0xb8, 0xf1, 0x7f, 0x0f, - 0xd2, 0xd8, 0xb9, 0xf1, 0x00, 0x0f, 0xd2, 0xd1, 0xce, 0xe7, 0x00, 0xbf, 0xf0, 0x31, 0x00, 0x08, - 0x18, 0x16, 0x00, 0x20, 0xf9, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x41, 0x82, 0xb0, 0x98, 0x46, 0x04, 0x46, 0x0d, 0x46, 0x16, 0x46, 0x08, 0x9f, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x4b, 0xfd, 0x43, 0x46, 0x32, 0x46, 0x29, 0x46, - 0x00, 0x97, 0x20, 0x46, 0xff, 0xf7, 0xa4, 0xff, 0x00, 0x21, 0x04, 0x46, 0xff, 0xf7, 0x00, 0xff, - 0xff, 0xf7, 0x4e, 0xfd, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x20, 0x46, 0x02, 0xb0, 0xbd, 0xe8, - 0xf0, 0x81, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x0e, 0x4b, 0x9c, 0x69, 0x63, 0x6a, 0x20, 0x62, 0x04, 0xf1, 0x24, 0x05, 0x9d, 0x42, - 0x07, 0xd0, 0x1a, 0x68, 0x62, 0x62, 0x18, 0x46, 0xff, 0xf7, 0x42, 0xfe, 0x63, 0x6a, 0xab, 0x42, - 0xf7, 0xd1, 0x63, 0x7f, 0x9b, 0x07, 0x04, 0xd1, 0x63, 0x69, 0x22, 0x69, 0x1a, 0x61, 0x22, 0x69, - 0x53, 0x61, 0x0f, 0x20, 0xbd, 0xe8, 0x38, 0x40, 0xff, 0xf7, 0x8a, 0xbe, 0x18, 0x16, 0x00, 0x20, - 0x10, 0xb5, 0x20, 0x23, 0x04, 0x46, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x09, 0xfd, 0x20, 0x46, - 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xd4, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x04, 0x46, 0xb8, 0xb1, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xf8, 0xfc, - 0x23, 0x7f, 0x0f, 0x2b, 0x07, 0xd0, 0x0a, 0x4b, 0x62, 0x6a, 0x9b, 0x69, 0x09, 0x20, 0x1a, 0x60, - 0x63, 0x62, 0xff, 0xf7, 0x65, 0xfe, 0x24, 0x6a, 0xff, 0xf7, 0xfa, 0xfc, 0x00, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0x20, 0x46, 0x10, 0xbd, 0x03, 0x48, 0xff, 0xf7, 0x7a, 0xfc, 0xe3, 0xe7, 0x00, 0xbf, - 0x18, 0x16, 0x00, 0x20, 0x00, 0x32, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x69, 0xb1, 0x08, 0x4b, 0x10, 0xb4, 0x02, 0x46, 0x44, 0x68, 0x9b, 0x69, 0x04, 0x20, 0x83, 0xe8, - 0x14, 0x00, 0x23, 0x60, 0x53, 0x60, 0x5d, 0xf8, 0x04, 0x4b, 0xff, 0xf7, 0x59, 0xbe, 0x4f, 0xf0, - 0xff, 0x30, 0x70, 0x47, 0x18, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x68, 0x90, 0x42, 0x0a, 0xd0, 0x10, 0xb4, 0x14, 0x68, 0x04, 0x60, 0x03, 0x46, 0x63, 0x60, - 0x11, 0x62, 0x10, 0x46, 0x5d, 0xf8, 0x04, 0x4b, 0xff, 0xf7, 0xd2, 0xbd, 0x70, 0x47, 0x00, 0xbf, - 0x01, 0x4b, 0x5b, 0x68, 0x83, 0x60, 0x70, 0x47, 0x00, 0x10, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x4b, 0x0f, 0x4a, 0x5b, 0x68, 0xc1, 0x68, 0xf0, 0xb4, 0x87, 0x68, 0xd2, 0xf8, 0x80, 0x60, - 0x42, 0x68, 0xd0, 0xe9, 0x04, 0x45, 0xdb, 0x1b, 0x9b, 0x1b, 0xe4, 0x18, 0x45, 0xf1, 0x00, 0x05, - 0x93, 0x42, 0x02, 0x68, 0x88, 0xbf, 0x43, 0x60, 0x01, 0x31, 0x93, 0x42, 0xc0, 0xe9, 0x04, 0x45, - 0xc1, 0x60, 0x83, 0x60, 0x38, 0xbf, 0x03, 0x60, 0xf0, 0xbc, 0x70, 0x47, 0x00, 0x10, 0x00, 0xe0, - 0x18, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xd0, 0xb5, 0x0d, 0x4c, 0x86, 0xb0, 0x00, 0x23, 0x4f, 0xf0, 0xff, 0x32, 0x68, 0x46, 0x00, 0x26, - 0x00, 0x27, 0xc4, 0xf8, 0x80, 0x30, 0x01, 0x93, 0x02, 0x93, 0x03, 0x93, 0x00, 0x92, 0xcd, 0xe9, - 0x04, 0x67, 0xff, 0xf7, 0xbd, 0xff, 0x68, 0x46, 0xff, 0xf7, 0xc2, 0xff, 0x02, 0x9b, 0xc4, 0xf8, - 0x80, 0x30, 0x06, 0xb0, 0xd0, 0xbd, 0x00, 0xbf, 0x18, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x04, 0x46, 0x20, 0xb1, 0x00, 0x23, 0x24, 0x60, 0x64, 0x60, 0xa3, 0x60, 0x10, 0xbd, - 0x01, 0x48, 0xff, 0xf7, 0xed, 0xfb, 0xf6, 0xe7, 0x30, 0x32, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0xff, 0xf7, 0xdb, 0xfc, 0xb4, 0xb1, 0x61, 0x6b, 0x23, 0x7f, - 0x29, 0x43, 0x0a, 0x2b, 0x61, 0x63, 0x0c, 0xd0, 0x0b, 0x2b, 0x00, 0xd0, 0x38, 0xbd, 0x23, 0x6a, - 0x8b, 0x43, 0xfb, 0xd1, 0x00, 0x23, 0x23, 0x62, 0x20, 0x46, 0xbd, 0xe8, 0x38, 0x40, 0xff, 0xf7, - 0x57, 0xbd, 0x23, 0x6a, 0x19, 0x42, 0xf5, 0xd1, 0x38, 0xbd, 0x02, 0x48, 0xff, 0xf7, 0xc8, 0xfb, - 0xe4, 0xe7, 0x00, 0xbf, 0x60, 0x32, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x06, 0x46, 0x0d, 0x46, 0xff, 0xf7, 0xb3, 0xfc, 0x8e, 0xb1, 0x34, 0x68, 0xa6, 0x42, - 0x0d, 0xd0, 0xe3, 0x68, 0x2b, 0x43, 0xe3, 0x60, 0x15, 0xb1, 0x22, 0x69, 0x13, 0x42, 0x03, 0xd0, - 0xa1, 0x68, 0x60, 0x68, 0xff, 0xf7, 0xc4, 0xff, 0x24, 0x68, 0xa6, 0x42, 0xf1, 0xd1, 0x70, 0xbd, - 0x01, 0x48, 0xff, 0xf7, 0xa5, 0xfb, 0xe9, 0xe7, 0x40, 0x32, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x30, 0xb4, 0x02, 0x9c, 0x04, 0x62, 0x00, 0x25, 0x0a, 0x44, 0x85, 0x60, 0x02, 0x61, 0x00, 0x60, - 0x40, 0x60, 0xc1, 0x60, 0x81, 0x61, 0x41, 0x61, 0xc3, 0x61, 0x30, 0xbc, 0x70, 0x47, 0x00, 0xbf, - 0x38, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0xff, 0xf7, 0x83, 0xfc, 0xff, 0xf7, 0x81, 0xfc, 0x63, 0x69, - 0xa2, 0x69, 0x93, 0x42, 0x11, 0xd0, 0xa2, 0x68, 0x59, 0x1c, 0x01, 0x32, 0xa2, 0x60, 0x61, 0x61, - 0x1d, 0x70, 0x62, 0x69, 0x23, 0x69, 0x9a, 0x42, 0x01, 0xd3, 0xe3, 0x68, 0x63, 0x61, 0x20, 0x46, - 0x00, 0x21, 0xff, 0xf7, 0x1d, 0xff, 0x00, 0x20, 0x38, 0xbd, 0xa2, 0x68, 0x00, 0x2a, 0xea, 0xd0, - 0x6f, 0xf0, 0x03, 0x00, 0x38, 0xbd, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0x04, 0x46, 0x0f, 0x46, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xc8, 0xfb, - 0xe3, 0x69, 0x33, 0xb1, 0x20, 0x46, 0x98, 0x47, 0x03, 0xe0, 0xff, 0xf7, 0xe9, 0xfe, 0x06, 0x1e, - 0x1a, 0xdb, 0xff, 0xf7, 0x4d, 0xfc, 0xa5, 0x68, 0x39, 0x46, 0x20, 0x46, 0x00, 0x2d, 0xf4, 0xd0, - 0xa1, 0x69, 0xa3, 0x68, 0x20, 0x69, 0x4a, 0x1c, 0x01, 0x3b, 0x82, 0x42, 0xa3, 0x60, 0xa2, 0x61, - 0x28, 0xbf, 0xe3, 0x68, 0x0e, 0x78, 0x28, 0xbf, 0xa3, 0x61, 0xff, 0xf7, 0xb9, 0xfb, 0x00, 0x23, - 0x83, 0xf3, 0x11, 0x88, 0x30, 0x46, 0xf8, 0xbd, 0xff, 0xf7, 0xb2, 0xfb, 0x85, 0xf3, 0x11, 0x88, - 0x30, 0x46, 0xf8, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x4f, 0x04, 0x46, 0x83, 0xb0, 0x89, 0x46, 0x1d, 0x46, 0xd0, 0xf8, 0x1c, 0x80, - 0x92, 0x46, 0x00, 0x2a, 0x3b, 0xd0, 0x20, 0x27, 0x87, 0xf3, 0x11, 0x88, 0x00, 0x26, 0xff, 0xf7, - 0x87, 0xfb, 0xb3, 0x46, 0x01, 0x97, 0xb8, 0xf1, 0x00, 0x0f, 0x05, 0xd0, 0x20, 0x46, 0xc0, 0x47, - 0x02, 0xe0, 0xff, 0xf7, 0xa5, 0xfe, 0x10, 0xbb, 0xff, 0xf7, 0x0a, 0xfc, 0xa7, 0x68, 0x29, 0x46, - 0x20, 0x46, 0x00, 0x2f, 0xf5, 0xd0, 0xa2, 0x69, 0xa3, 0x68, 0x51, 0x1c, 0x01, 0x3b, 0xa1, 0x61, - 0xa3, 0x60, 0x13, 0x78, 0x09, 0xf8, 0x01, 0x3b, 0x23, 0x69, 0xa2, 0x69, 0x9a, 0x42, 0x24, 0xbf, - 0xe3, 0x68, 0xa3, 0x61, 0xff, 0xf7, 0x74, 0xfb, 0x8b, 0xf3, 0x11, 0x88, 0x01, 0x36, 0xb2, 0x45, - 0x09, 0xd0, 0x01, 0x9b, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x5a, 0xfb, 0xd3, 0xe7, 0xff, 0xf7, - 0x67, 0xfb, 0x87, 0xf3, 0x11, 0x88, 0x30, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x02, 0x48, - 0xff, 0xf7, 0xe6, 0xfa, 0xbf, 0xe7, 0x00, 0xbf, 0x70, 0x32, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x30, 0xb4, 0x02, 0x9c, 0x04, 0x62, 0x8d, 0x18, 0x05, 0x61, 0x00, 0x60, 0x40, 0x60, 0x82, 0x60, - 0xc1, 0x60, 0x81, 0x61, 0x41, 0x61, 0xc3, 0x61, 0x30, 0xbc, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x41, 0x20, 0x23, 0x04, 0x46, 0x88, 0x46, 0x17, 0x46, 0x83, 0xf3, 0x11, 0x88, - 0xff, 0xf7, 0x2e, 0xfb, 0x03, 0xe0, 0xff, 0xf7, 0x53, 0xfe, 0x06, 0x1e, 0x20, 0xdb, 0xff, 0xf7, - 0xb7, 0xfb, 0xa5, 0x68, 0x39, 0x46, 0x20, 0x46, 0x00, 0x2d, 0xf4, 0xd0, 0x62, 0x69, 0xa3, 0x68, - 0x51, 0x1c, 0x01, 0x3b, 0x61, 0x61, 0xa3, 0x60, 0x82, 0xf8, 0x00, 0x80, 0x23, 0x69, 0x62, 0x69, - 0x9a, 0x42, 0x24, 0xbf, 0xe3, 0x68, 0x63, 0x61, 0xe3, 0x69, 0x0b, 0xb1, 0x20, 0x46, 0x98, 0x47, - 0xff, 0xf7, 0x1e, 0xfb, 0x00, 0x26, 0x86, 0xf3, 0x11, 0x88, 0x30, 0x46, 0xbd, 0xe8, 0xf0, 0x81, - 0xff, 0xf7, 0x16, 0xfb, 0x85, 0xf3, 0x11, 0x88, 0x30, 0x46, 0xbd, 0xe8, 0xf0, 0x81, 0x00, 0xbf, - 0x38, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0x8c, 0xfb, 0xff, 0xf7, 0x8a, 0xfb, 0xa3, 0x69, 0x62, 0x69, - 0x9a, 0x42, 0x10, 0xd0, 0xa2, 0x68, 0x20, 0x69, 0x59, 0x1c, 0x01, 0x32, 0xa2, 0x60, 0xa1, 0x61, - 0x81, 0x42, 0x1d, 0x78, 0x01, 0xd3, 0xe3, 0x68, 0xa3, 0x61, 0x20, 0x46, 0x00, 0x21, 0xff, 0xf7, - 0x27, 0xfe, 0x28, 0x46, 0x38, 0xbd, 0xa2, 0x68, 0x00, 0x2a, 0xeb, 0xd0, 0x6f, 0xf0, 0x02, 0x00, - 0x38, 0xbd, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x4f, 0x83, 0xb0, 0x04, 0x46, 0x0d, 0x46, 0x01, 0x93, 0xd0, 0xf8, 0x1c, 0x90, - 0x16, 0x46, 0x00, 0x2a, 0x44, 0xd0, 0x4f, 0xf0, 0x20, 0x0a, 0x8a, 0xf3, 0x11, 0x88, 0xff, 0xf7, - 0xc7, 0xfa, 0x4f, 0xf0, 0x00, 0x08, 0xc3, 0x46, 0xff, 0xf7, 0x52, 0xfb, 0xa3, 0x68, 0x6f, 0x1c, - 0x20, 0x46, 0x2b, 0xb3, 0x62, 0x69, 0xa3, 0x68, 0x51, 0x1c, 0x01, 0x3b, 0x61, 0x61, 0xa3, 0x60, - 0x2b, 0x78, 0x13, 0x70, 0x23, 0x69, 0x62, 0x69, 0x9a, 0x42, 0x24, 0xbf, 0xe3, 0x68, 0x63, 0x61, - 0xb9, 0xf1, 0x00, 0x0f, 0x00, 0xd0, 0xc8, 0x47, 0xff, 0xf7, 0xba, 0xfa, 0x8b, 0xf3, 0x11, 0x88, - 0x01, 0x3e, 0x08, 0xf1, 0x01, 0x08, 0x17, 0xd0, 0x8a, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xa0, 0xfa, - 0xff, 0xf7, 0x2e, 0xfb, 0xa3, 0x68, 0x3d, 0x46, 0x6f, 0x1c, 0x20, 0x46, 0x00, 0x2b, 0xd9, 0xd1, - 0x01, 0x99, 0x00, 0x93, 0x20, 0x46, 0xff, 0xf7, 0xbb, 0xfd, 0x00, 0x28, 0xcc, 0xd0, 0xff, 0xf7, - 0x9f, 0xfa, 0x00, 0x9b, 0x83, 0xf3, 0x11, 0x88, 0x40, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, - 0x01, 0x48, 0xff, 0xf7, 0x1d, 0xfa, 0xb6, 0xe7, 0x80, 0x32, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x4b, 0x04, 0x49, 0x04, 0x4a, 0x0b, 0x60, 0x03, 0xf5, 0x00, 0x63, 0x13, 0x60, 0x70, 0x47, - 0xb8, 0x1e, 0x00, 0x20, 0xbc, 0x26, 0x00, 0x20, 0xb8, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x20, 0x23, 0x04, 0x46, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x69, 0xfa, 0xff, 0xf7, - 0xf7, 0xfa, 0x0a, 0x49, 0x0a, 0x4b, 0x08, 0x68, 0x1a, 0x68, 0xe3, 0x1d, 0x23, 0xf0, 0x07, 0x03, - 0x12, 0x1a, 0x93, 0x42, 0x9d, 0xbf, 0x1b, 0x18, 0x0b, 0x60, 0x04, 0x46, 0x00, 0x24, 0xff, 0xf7, - 0x67, 0xfa, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x20, 0x46, 0x10, 0xbd, 0xbc, 0x26, 0x00, 0x20, - 0xb8, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x4b, 0x05, 0x4a, 0x1a, 0x60, 0x03, 0xf1, 0x10, 0x00, 0x00, 0x22, 0x9a, 0x60, 0xda, 0x60, - 0xff, 0xf7, 0xde, 0xbd, 0xc0, 0x26, 0x00, 0x20, 0xb1, 0x11, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x80, 0xb4, 0x09, 0x4a, 0x53, 0x68, 0x23, 0xf0, 0x01, 0x03, 0x00, 0xaf, 0x53, 0x60, 0xef, 0xf3, - 0x09, 0x83, 0x68, 0x33, 0x83, 0xf3, 0x09, 0x88, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xbd, 0x46, - 0x5d, 0xf8, 0x04, 0x7b, 0x70, 0x47, 0x00, 0xbf, 0x30, 0xef, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x98, 0xb5, 0x20, 0x23, 0x00, 0xaf, 0x83, 0xf3, 0x11, 0x88, 0x11, 0x4b, 0x5b, 0x68, 0x13, 0xf4, - 0x00, 0x63, 0x02, 0xd1, 0x83, 0xf3, 0x11, 0x88, 0x98, 0xbd, 0xf1, 0xee, 0x10, 0x3a, 0xef, 0xf3, - 0x09, 0x84, 0x0c, 0x4b, 0x4f, 0xf0, 0x80, 0x72, 0xdb, 0x68, 0x44, 0xf8, 0x08, 0x3c, 0x44, 0xf8, - 0x4c, 0x2c, 0xa4, 0xf1, 0x68, 0x03, 0x83, 0xf3, 0x09, 0x88, 0xff, 0xf7, 0xe1, 0xfb, 0x18, 0xb1, - 0x05, 0x4b, 0x44, 0xf8, 0x50, 0x3c, 0x98, 0xbd, 0x04, 0x4b, 0x44, 0xf8, 0x50, 0x3c, 0x98, 0xbd, - 0x00, 0xed, 0x00, 0xe0, 0x30, 0xef, 0x00, 0xe0, 0x0d, 0x03, 0x00, 0x08, 0x18, 0x03, 0x00, 0x08, - 0x08, 0xb5, 0x00, 0xf0, 0x2d, 0xf9, 0x08, 0x48, 0x00, 0xf0, 0xea, 0xfb, 0x00, 0xf0, 0x58, 0xf8, - 0x00, 0xf0, 0xce, 0xf8, 0x00, 0xf0, 0x0c, 0xf8, 0x00, 0xf0, 0xe2, 0xf8, 0x00, 0xf0, 0x28, 0xff, - 0xbd, 0xe8, 0x08, 0x40, 0x00, 0xf0, 0xd4, 0xb8, 0xd0, 0x33, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x30, 0xff, 0xf7, 0x35, 0xbe, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x30, 0x4f, 0xf0, 0xff, 0x33, 0xff, 0xf7, 0x2b, 0xbe, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x30, 0xff, 0xf7, 0xe5, 0xbe, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x30, 0x4f, 0xf0, 0xff, 0x33, 0xff, 0xf7, 0xdb, 0xbe, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x30, 0xff, 0xf7, 0xdd, 0xbd, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x30, 0x4f, 0xf0, 0xff, 0x31, 0xff, 0xf7, 0xd3, 0xbd, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x30, 0xff, 0xf7, 0x65, 0xbe, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x30, 0x4f, 0xf0, 0xff, 0x32, 0xff, 0xf7, 0x5b, 0xbe, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf0, 0x2e, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x0e, 0x4b, 0x04, 0x46, 0x82, 0xb0, 0x40, 0xf8, 0x04, 0x3b, 0x01, 0x26, 0x00, 0x94, - 0x15, 0x46, 0x0b, 0x46, 0x60, 0x60, 0x04, 0xf1, 0x54, 0x01, 0x04, 0xf1, 0x0c, 0x00, 0x26, 0x72, - 0x10, 0x22, 0xff, 0xf7, 0x6d, 0xfd, 0x00, 0x94, 0x2b, 0x46, 0x04, 0xf1, 0x64, 0x01, 0x04, 0xf1, - 0x30, 0x00, 0x10, 0x22, 0xff, 0xf7, 0x24, 0xfe, 0x02, 0xb0, 0x70, 0xbd, 0xc0, 0x32, 0x00, 0x08, - 0x38, 0xb5, 0x0d, 0x46, 0x04, 0x46, 0x80, 0xb1, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, - 0x5f, 0xf9, 0x29, 0x46, 0x20, 0x46, 0x00, 0xf0, 0x2b, 0xfe, 0x02, 0x23, 0x23, 0x72, 0xff, 0xf7, - 0x67, 0xf9, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x38, 0xbd, 0x02, 0x48, 0xff, 0xf7, 0xe8, 0xf8, - 0xea, 0xe7, 0x00, 0xbf, 0xa0, 0x32, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0xff, 0xf7, 0xd3, 0xf9, 0xe4, 0xb1, 0xff, 0xf7, 0xd0, 0xf9, - 0x63, 0x69, 0x3b, 0xb1, 0x29, 0x46, 0x04, 0xf1, 0x0c, 0x00, 0xff, 0xf7, 0x41, 0xfd, 0x00, 0x28, - 0x0b, 0xdb, 0x38, 0xbd, 0x04, 0x21, 0x60, 0x18, 0xff, 0xf7, 0x0a, 0xfd, 0x29, 0x46, 0x04, 0xf1, - 0x0c, 0x00, 0xff, 0xf7, 0x35, 0xfd, 0x00, 0x28, 0xf3, 0xda, 0x20, 0x1d, 0x80, 0x21, 0xbd, 0xe8, - 0x38, 0x40, 0xff, 0xf7, 0xfd, 0xbc, 0x02, 0x48, 0xff, 0xf7, 0xba, 0xf8, 0xde, 0xe7, 0x00, 0xbf, - 0xb0, 0x32, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf0, 0x56, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x01, 0x22, 0x02, 0x70, 0x43, 0x60, 0x83, 0x60, 0x0c, 0x30, 0xff, 0xf7, 0xa8, 0xbc, - 0x00, 0xf0, 0xae, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x09, 0x10, 0xb4, 0x9b, 0x00, 0x00, 0xf1, 0x60, 0x44, 0x04, 0xf5, 0x61, 0x44, 0x03, 0xf1, - 0x60, 0x43, 0x09, 0x01, 0x03, 0xf5, 0x61, 0x43, 0x00, 0xf0, 0x1f, 0x00, 0x01, 0x22, 0xc9, 0xb2, - 0x84, 0xf8, 0x00, 0x13, 0x02, 0xfa, 0x00, 0xf0, 0xc3, 0xf8, 0x80, 0x01, 0x5d, 0xf8, 0x04, 0x4b, - 0x18, 0x60, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0b, 0x28, 0x38, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0x02, 0xd9, 0x05, 0x48, 0xff, 0xf7, 0x68, 0xf8, - 0x04, 0xf1, 0x60, 0x40, 0x00, 0xf5, 0x6d, 0x40, 0x2d, 0x01, 0xed, 0xb2, 0x05, 0x76, 0x38, 0xbd, - 0xe0, 0x32, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x17, 0x4b, 0x4f, 0xf0, 0xff, 0x31, 0x1a, 0x69, 0x00, 0x22, 0x10, 0xb4, 0x19, 0x61, 0x1a, 0x61, - 0x58, 0x69, 0x59, 0x61, 0x5a, 0x61, 0x18, 0x6a, 0x12, 0x4c, 0x60, 0xf0, 0x80, 0x50, 0x18, 0x62, - 0x1a, 0x62, 0x58, 0x6a, 0x59, 0x62, 0x5a, 0x62, 0x19, 0x6c, 0x41, 0xf0, 0x80, 0x51, 0x19, 0x64, - 0x21, 0x68, 0x41, 0xf4, 0x80, 0x71, 0x21, 0x60, 0x19, 0x6f, 0x01, 0xf4, 0x40, 0x71, 0xb1, 0xf5, - 0x00, 0x7f, 0x03, 0xd0, 0x4f, 0xf4, 0x80, 0x31, 0x19, 0x67, 0x1a, 0x67, 0x05, 0x4a, 0x5d, 0xf8, - 0x04, 0x4b, 0x53, 0x68, 0x23, 0xf4, 0x00, 0x73, 0x53, 0x60, 0x00, 0xf0, 0x61, 0xba, 0x00, 0xbf, - 0x00, 0x38, 0x02, 0x40, 0x00, 0x70, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x32, 0x4a, 0x33, 0x4b, 0x4f, 0xf0, 0x80, 0x50, 0x4f, 0xf4, 0x40, 0x41, 0x10, 0x64, 0x19, 0x60, - 0x13, 0x68, 0x43, 0xf0, 0x01, 0x03, 0x13, 0x60, 0x13, 0x68, 0x99, 0x07, 0xfc, 0xd5, 0x93, 0x68, - 0x2a, 0x49, 0x23, 0xf0, 0x03, 0x03, 0x93, 0x60, 0x93, 0x68, 0x93, 0x60, 0x8b, 0x68, 0x13, 0xf0, - 0x0c, 0x03, 0xfb, 0xd1, 0x0a, 0x68, 0x25, 0x48, 0x02, 0xf0, 0xf9, 0x02, 0x0a, 0x60, 0x8b, 0x60, - 0x0b, 0x68, 0x43, 0xf4, 0x80, 0x33, 0x0b, 0x60, 0x03, 0x68, 0x9b, 0x03, 0xfc, 0xd5, 0x43, 0x6f, - 0x1e, 0x4a, 0x43, 0xf0, 0x01, 0x03, 0x43, 0x67, 0x53, 0x6f, 0x99, 0x07, 0xfc, 0xd5, 0x1d, 0x4b, - 0x53, 0x60, 0x13, 0x68, 0x1a, 0x49, 0x43, 0xf0, 0x80, 0x73, 0x13, 0x60, 0x4b, 0x68, 0x5a, 0x04, - 0xfc, 0xd5, 0x16, 0x4a, 0x13, 0x68, 0x9b, 0x01, 0xfc, 0xd5, 0x17, 0x4b, 0x17, 0x49, 0x91, 0x60, - 0x1a, 0x68, 0x17, 0x4b, 0x9a, 0x42, 0x16, 0xd0, 0x16, 0x4b, 0x40, 0xf2, 0x05, 0x72, 0x1a, 0x60, - 0x0e, 0x4a, 0x93, 0x68, 0x43, 0xf0, 0x02, 0x03, 0x93, 0x60, 0x93, 0x68, 0x03, 0xf0, 0x0c, 0x03, - 0x08, 0x2b, 0xfa, 0xd1, 0x53, 0x6c, 0x43, 0xf4, 0x80, 0x43, 0x53, 0x64, 0x53, 0x6e, 0x43, 0xf4, - 0x80, 0x43, 0x53, 0x66, 0x70, 0x47, 0x0c, 0x4a, 0x0c, 0x4b, 0x12, 0x68, 0x9a, 0x42, 0xe3, 0xd1, - 0x08, 0x4b, 0x40, 0xf2, 0x05, 0x12, 0x1a, 0x60, 0xe2, 0xe7, 0x00, 0xbf, 0x00, 0x38, 0x02, 0x40, - 0x00, 0x70, 0x00, 0x40, 0x08, 0x54, 0x40, 0x07, 0x00, 0x20, 0x04, 0xe0, 0x00, 0x94, 0x88, 0x38, - 0x11, 0x64, 0x00, 0x20, 0x00, 0x3c, 0x02, 0x40, 0x00, 0xed, 0x00, 0xe0, 0x41, 0xc2, 0x0f, 0x41, - 0x08, 0xb5, 0xff, 0xf7, 0x65, 0xf8, 0x08, 0x4b, 0x08, 0x4a, 0x19, 0x68, 0x01, 0xf0, 0x3d, 0x01, - 0x99, 0x60, 0x13, 0x68, 0x0b, 0xb1, 0x50, 0x68, 0x98, 0x47, 0xff, 0xf7, 0x79, 0xf8, 0xbd, 0xe8, - 0x08, 0x40, 0xff, 0xf7, 0xdd, 0xbd, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, 0xe0, 0x26, 0x00, 0x20, - 0x10, 0xb5, 0xff, 0xf7, 0x4d, 0xf8, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x82, 0x68, 0x89, 0x09, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x01, 0x9c, 0x60, 0x0a, 0xb1, 0xc0, 0x68, 0x90, 0x47, 0xff, 0xf7, - 0x5f, 0xf8, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xc3, 0xbd, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xe0, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xff, 0xf7, 0x2d, 0xf8, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x02, 0x69, 0x09, 0x0c, - 0x01, 0xf0, 0x3d, 0x01, 0x0c, 0x04, 0x9c, 0x60, 0x0a, 0xb1, 0x40, 0x69, 0x90, 0x47, 0xff, 0xf7, - 0x3f, 0xf8, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xa3, 0xbd, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xe0, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xff, 0xf7, 0x0d, 0xf8, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x82, 0x69, 0x89, 0x0d, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x05, 0x9c, 0x60, 0x0a, 0xb1, 0xc0, 0x69, 0x90, 0x47, 0xff, 0xf7, - 0x1f, 0xf8, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x83, 0xbd, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xe0, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0xed, 0xff, 0x08, 0x4b, 0x08, 0x48, 0x59, 0x68, 0x02, 0x6a, 0x01, 0xf0, - 0x3d, 0x01, 0xd9, 0x60, 0x0a, 0xb1, 0x40, 0x6a, 0x90, 0x47, 0xff, 0xf7, 0x01, 0xf8, 0xbd, 0xe8, - 0x08, 0x40, 0xff, 0xf7, 0x65, 0xbd, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, 0xe0, 0x26, 0x00, 0x20, - 0x10, 0xb5, 0xfe, 0xf7, 0xd5, 0xff, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x82, 0x6a, 0x89, 0x09, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x01, 0xdc, 0x60, 0x0a, 0xb1, 0xc0, 0x6a, 0x90, 0x47, 0xfe, 0xf7, - 0xe7, 0xff, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x4b, 0xbd, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xe0, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0xb5, 0xff, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x02, 0x6b, 0x09, 0x0c, - 0x01, 0xf0, 0x3d, 0x01, 0x0c, 0x04, 0xdc, 0x60, 0x0a, 0xb1, 0x40, 0x6b, 0x90, 0x47, 0xfe, 0xf7, - 0xc7, 0xff, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x2b, 0xbd, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xe0, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0x95, 0xff, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x82, 0x6b, 0x89, 0x0d, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x05, 0xdc, 0x60, 0x0a, 0xb1, 0xc0, 0x6b, 0x90, 0x47, 0xfe, 0xf7, - 0xa7, 0xff, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x0b, 0xbd, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xe0, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0x75, 0xff, 0x08, 0x4b, 0x08, 0x48, 0x19, 0x68, 0x02, 0x6c, 0x01, 0xf0, - 0x3d, 0x01, 0x99, 0x60, 0x0a, 0xb1, 0x40, 0x6c, 0x90, 0x47, 0xfe, 0xf7, 0x89, 0xff, 0xbd, 0xe8, - 0x08, 0x40, 0xff, 0xf7, 0xed, 0xbc, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, 0xe0, 0x26, 0x00, 0x20, - 0x10, 0xb5, 0xfe, 0xf7, 0x5d, 0xff, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x82, 0x6c, 0x89, 0x09, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x01, 0x9c, 0x60, 0x0a, 0xb1, 0xc0, 0x6c, 0x90, 0x47, 0xfe, 0xf7, - 0x6f, 0xff, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xd3, 0xbc, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xe0, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0x3d, 0xff, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x02, 0x6d, 0x09, 0x0c, - 0x01, 0xf0, 0x3d, 0x01, 0x0c, 0x04, 0x9c, 0x60, 0x0a, 0xb1, 0x40, 0x6d, 0x90, 0x47, 0xfe, 0xf7, - 0x4f, 0xff, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xb3, 0xbc, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xe0, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0x1d, 0xff, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x82, 0x6d, 0x89, 0x0d, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x05, 0x9c, 0x60, 0x0a, 0xb1, 0xc0, 0x6d, 0x90, 0x47, 0xfe, 0xf7, - 0x2f, 0xff, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x93, 0xbc, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xe0, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0xfd, 0xfe, 0x08, 0x4b, 0x08, 0x48, 0x59, 0x68, 0x02, 0x6e, 0x01, 0xf0, - 0x3d, 0x01, 0xd9, 0x60, 0x0a, 0xb1, 0x40, 0x6e, 0x90, 0x47, 0xfe, 0xf7, 0x11, 0xff, 0xbd, 0xe8, - 0x08, 0x40, 0xff, 0xf7, 0x75, 0xbc, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, 0xe0, 0x26, 0x00, 0x20, - 0x10, 0xb5, 0xfe, 0xf7, 0xe5, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x82, 0x6e, 0x89, 0x09, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x01, 0xdc, 0x60, 0x0a, 0xb1, 0xc0, 0x6e, 0x90, 0x47, 0xfe, 0xf7, - 0xf7, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x5b, 0xbc, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xe0, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0xc5, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x02, 0x6f, 0x09, 0x0c, - 0x01, 0xf0, 0x3d, 0x01, 0x0c, 0x04, 0xdc, 0x60, 0x0a, 0xb1, 0x40, 0x6f, 0x90, 0x47, 0xfe, 0xf7, - 0xd7, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x3b, 0xbc, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xe0, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0xa5, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x82, 0x6f, 0x89, 0x0d, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x05, 0xdc, 0x60, 0x0a, 0xb1, 0xc0, 0x6f, 0x90, 0x47, 0xfe, 0xf7, - 0xb7, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x1b, 0xbc, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xe0, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x49, 0x0f, 0x4a, 0x0f, 0x48, 0x00, 0x23, 0x10, 0xb4, 0x0b, 0x60, 0x0e, 0x4c, 0x19, 0x46, - 0x01, 0xe0, 0x52, 0xf8, 0x0c, 0x0c, 0x01, 0x60, 0x44, 0xf8, 0x33, 0x10, 0x01, 0x33, 0x10, 0x2b, - 0x02, 0xf1, 0x0c, 0x02, 0xf5, 0xd1, 0x09, 0x49, 0x09, 0x4a, 0x5d, 0xf8, 0x04, 0x4b, 0x4f, 0xf0, - 0xff, 0x33, 0x8b, 0x60, 0xcb, 0x60, 0x93, 0x60, 0xd3, 0x60, 0x70, 0x47, 0x60, 0x27, 0x00, 0x20, - 0x0c, 0x33, 0x00, 0x08, 0x10, 0x60, 0x02, 0x40, 0xe0, 0x26, 0x00, 0x20, 0x00, 0x60, 0x02, 0x40, - 0x00, 0x64, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xb5, 0x65, 0x4d, 0x65, 0x4c, 0x2f, 0x6b, 0x65, 0x49, 0x66, 0x4a, 0x66, 0x4b, 0x40, 0xf2, - 0xff, 0x1e, 0x47, 0xea, 0x0e, 0x07, 0x2f, 0x63, 0x2e, 0x6d, 0x46, 0xea, 0x0e, 0x06, 0x2e, 0x65, - 0x45, 0x68, 0x65, 0x60, 0x85, 0x68, 0xa5, 0x60, 0xc5, 0x68, 0xe5, 0x60, 0x05, 0x69, 0x65, 0x61, - 0x45, 0x69, 0x25, 0x62, 0x85, 0x69, 0x65, 0x62, 0x05, 0x68, 0x25, 0x60, 0x04, 0x6a, 0x4c, 0x60, - 0x44, 0x6a, 0x8c, 0x60, 0x84, 0x6a, 0xcc, 0x60, 0xc4, 0x6a, 0x4c, 0x61, 0x04, 0x6b, 0x0c, 0x62, - 0x44, 0x6b, 0x4c, 0x62, 0xc4, 0x69, 0x0c, 0x60, 0xc1, 0x6b, 0x51, 0x60, 0x01, 0x6c, 0x91, 0x60, - 0x41, 0x6c, 0xd1, 0x60, 0x81, 0x6c, 0x51, 0x61, 0xc1, 0x6c, 0x11, 0x62, 0x01, 0x6d, 0x51, 0x62, - 0x81, 0x6b, 0x11, 0x60, 0x82, 0x6d, 0x5a, 0x60, 0xc2, 0x6d, 0x9a, 0x60, 0x02, 0x6e, 0xda, 0x60, - 0x42, 0x6e, 0x5a, 0x61, 0x82, 0x6e, 0x1a, 0x62, 0xc2, 0x6e, 0x5a, 0x62, 0x42, 0x6d, 0x1a, 0x60, - 0x42, 0x6f, 0xc3, 0xf8, 0x04, 0x24, 0x82, 0x6f, 0xc3, 0xf8, 0x08, 0x24, 0xc2, 0x6f, 0xc3, 0xf8, - 0x0c, 0x24, 0xd0, 0xf8, 0x80, 0x20, 0xc3, 0xf8, 0x14, 0x24, 0xd0, 0xf8, 0x84, 0x20, 0xc3, 0xf8, - 0x20, 0x24, 0xd0, 0xf8, 0x88, 0x20, 0xc3, 0xf8, 0x24, 0x24, 0x02, 0x6f, 0xc3, 0xf8, 0x00, 0x24, - 0xd0, 0xf8, 0x90, 0x20, 0xc3, 0xf8, 0x04, 0x28, 0xd0, 0xf8, 0x94, 0x20, 0xc3, 0xf8, 0x08, 0x28, - 0xd0, 0xf8, 0x98, 0x20, 0xc3, 0xf8, 0x0c, 0x28, 0xd0, 0xf8, 0x9c, 0x20, 0xc3, 0xf8, 0x14, 0x28, - 0xd0, 0xf8, 0xa0, 0x20, 0xc3, 0xf8, 0x20, 0x28, 0xd0, 0xf8, 0xa4, 0x20, 0xc3, 0xf8, 0x24, 0x28, - 0xd0, 0xf8, 0x8c, 0x20, 0xc3, 0xf8, 0x00, 0x28, 0x03, 0xf5, 0x40, 0x63, 0xd0, 0xf8, 0xac, 0x20, - 0x5a, 0x60, 0xd0, 0xf8, 0xb0, 0x20, 0x9a, 0x60, 0xd0, 0xf8, 0xb4, 0x20, 0xda, 0x60, 0xd0, 0xf8, - 0xb8, 0x20, 0x5a, 0x61, 0xd0, 0xf8, 0xbc, 0x20, 0x1a, 0x62, 0xd0, 0xf8, 0xc0, 0x20, 0x5a, 0x62, - 0xd0, 0xf8, 0xa8, 0x20, 0x1a, 0x60, 0xd0, 0xf8, 0xc8, 0x20, 0xc3, 0xf8, 0x04, 0x24, 0xd0, 0xf8, - 0xcc, 0x20, 0xc3, 0xf8, 0x08, 0x24, 0xd0, 0xf8, 0xd0, 0x20, 0xc3, 0xf8, 0x0c, 0x24, 0xd0, 0xf8, - 0xd4, 0x20, 0xc3, 0xf8, 0x14, 0x24, 0xd0, 0xf8, 0xd8, 0x20, 0xc3, 0xf8, 0x20, 0x24, 0xd0, 0xf8, - 0xdc, 0x20, 0xc3, 0xf8, 0x24, 0x24, 0xd0, 0xf8, 0xc4, 0x20, 0xc3, 0xf8, 0x00, 0x24, 0xd0, 0xf8, - 0xe4, 0x20, 0xc3, 0xf8, 0x04, 0x28, 0xd0, 0xf8, 0xe8, 0x20, 0xc3, 0xf8, 0x08, 0x28, 0xd0, 0xf8, - 0xec, 0x20, 0xc3, 0xf8, 0x0c, 0x28, 0xd0, 0xf8, 0xf0, 0x20, 0xc3, 0xf8, 0x14, 0x28, 0xd0, 0xf8, - 0xf4, 0x20, 0xc3, 0xf8, 0x20, 0x28, 0xd0, 0xf8, 0xf8, 0x20, 0xc3, 0xf8, 0x24, 0x28, 0xd0, 0xf8, - 0xe0, 0x20, 0xc3, 0xf8, 0x00, 0x28, 0xf0, 0xbd, 0x00, 0x38, 0x02, 0x40, 0x00, 0x00, 0x02, 0x40, - 0x00, 0x04, 0x02, 0x40, 0x00, 0x08, 0x02, 0x40, 0x00, 0x0c, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x4f, 0x02, 0xf0, 0x03, 0x0a, 0xc2, 0xf3, 0x80, 0x08, 0xc2, 0xf3, 0xc1, 0x0c, - 0xc2, 0xf3, 0x41, 0x1e, 0xd1, 0x46, 0xc2, 0xf3, 0xc3, 0x12, 0x00, 0x27, 0x4f, 0xf0, 0x0f, 0x0b, - 0x0f, 0xe0, 0x03, 0x6a, 0x23, 0xea, 0x04, 0x04, 0x25, 0x43, 0x05, 0x62, 0x49, 0x08, 0x39, 0xd0, - 0x4f, 0xea, 0x48, 0x08, 0x4f, 0xea, 0x8c, 0x0c, 0x4f, 0xea, 0x8e, 0x0e, 0x4f, 0xea, 0x89, 0x09, - 0x01, 0x37, 0xcb, 0x07, 0xf2, 0xd5, 0x43, 0x68, 0x01, 0x24, 0xbc, 0x40, 0x23, 0xea, 0x04, 0x03, - 0x43, 0xea, 0x08, 0x03, 0x43, 0x60, 0x03, 0x25, 0x7b, 0x00, 0x84, 0x68, 0x05, 0xfa, 0x03, 0xf3, - 0xdb, 0x43, 0x1c, 0x40, 0x44, 0xea, 0x0c, 0x04, 0x84, 0x60, 0xc5, 0x68, 0x07, 0xf0, 0x07, 0x04, - 0x1d, 0x40, 0x45, 0xea, 0x0e, 0x05, 0xa4, 0x00, 0xba, 0xf1, 0x02, 0x0f, 0xc5, 0x60, 0x02, 0xfa, - 0x04, 0xf5, 0x0b, 0xfa, 0x04, 0xf4, 0x0f, 0xd0, 0x06, 0x68, 0x33, 0x40, 0x43, 0xea, 0x09, 0x03, - 0x07, 0x2f, 0x03, 0x60, 0xc5, 0xd9, 0x43, 0x6a, 0x23, 0xea, 0x04, 0x04, 0x25, 0x43, 0x49, 0x08, - 0x45, 0x62, 0xc5, 0xd1, 0xbd, 0xe8, 0xf0, 0x8f, 0x07, 0x2f, 0x0a, 0xd8, 0x06, 0x6a, 0x26, 0xea, - 0x04, 0x04, 0x25, 0x43, 0x05, 0x62, 0x04, 0x68, 0x23, 0x40, 0x43, 0xea, 0x09, 0x03, 0x03, 0x60, - 0xb4, 0xe7, 0x46, 0x6a, 0x26, 0xea, 0x04, 0x04, 0x25, 0x43, 0x45, 0x62, 0xf3, 0xe7, 0x00, 0xbf, - 0x2d, 0xe9, 0xf0, 0x41, 0x1a, 0x4f, 0x1b, 0x4b, 0x1b, 0x4c, 0x1c, 0x4e, 0x1c, 0x4d, 0xdf, 0xf8, - 0x8c, 0x80, 0x38, 0x46, 0x4f, 0xf6, 0xff, 0x72, 0x1a, 0x80, 0xff, 0xf7, 0xa1, 0xfb, 0x19, 0x49, - 0x19, 0x4a, 0x1a, 0x4b, 0xf9, 0x61, 0x30, 0x46, 0x04, 0xf1, 0x24, 0x01, 0x3c, 0x62, 0x79, 0x62, - 0xba, 0x62, 0xfb, 0x62, 0xff, 0xf7, 0x94, 0xfb, 0x15, 0x4b, 0x16, 0x4f, 0xf3, 0x61, 0xa4, 0xf1, - 0x3c, 0x02, 0xa4, 0xf1, 0x30, 0x03, 0x28, 0x46, 0x32, 0x62, 0x73, 0x62, 0xc6, 0xf8, 0x28, 0x80, - 0xf7, 0x62, 0xff, 0xf7, 0x85, 0xfb, 0xa4, 0xf1, 0x60, 0x03, 0x0f, 0x4a, 0xc5, 0xf8, 0x28, 0x80, - 0x0c, 0x3c, 0xef, 0x62, 0xea, 0x61, 0x2b, 0x62, 0x6c, 0x62, 0xbd, 0xe8, 0xf0, 0x81, 0x00, 0xbf, - 0x64, 0x27, 0x00, 0x20, 0xf4, 0x27, 0x00, 0x20, 0x60, 0x33, 0x00, 0x08, 0x94, 0x27, 0x00, 0x20, - 0xc4, 0x27, 0x00, 0x20, 0x00, 0x30, 0x01, 0x40, 0x16, 0x00, 0x01, 0x06, 0x46, 0x00, 0x01, 0x06, - 0x00, 0x38, 0x00, 0x40, 0x46, 0x00, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x40, 0x16, 0x00, 0x01, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0xc5, 0xfc, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, 0x90, 0xfc, - 0xfe, 0xf7, 0x0e, 0xfc, 0xfe, 0xf7, 0xa4, 0xfc, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, - 0xd7, 0xfc, 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0x3b, 0xba, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x4b, 0x06, 0x4a, 0x5a, 0x60, 0x00, 0x21, 0x07, 0x22, 0x99, 0x60, 0x0b, 0x20, 0x08, 0x21, - 0x1a, 0x60, 0xff, 0xf7, 0x75, 0xbb, 0x00, 0xbf, 0x10, 0xe0, 0x00, 0xe0, 0x3f, 0x90, 0x02, 0x00, - 0x02, 0x4a, 0xd3, 0x68, 0x43, 0xf0, 0x80, 0x03, 0xd3, 0x60, 0x70, 0x47, 0x00, 0x10, 0x01, 0x40, - 0x02, 0x4a, 0xd3, 0x68, 0x43, 0xf0, 0x80, 0x03, 0xd3, 0x60, 0x70, 0x47, 0x00, 0x44, 0x00, 0x40, - 0x02, 0x4a, 0xd3, 0x68, 0x43, 0xf0, 0x80, 0x03, 0xd3, 0x60, 0x70, 0x47, 0x00, 0x48, 0x00, 0x40, - 0x2d, 0xe9, 0xf0, 0x41, 0x45, 0x6f, 0xd5, 0xf8, 0x0c, 0x80, 0x2b, 0x68, 0xda, 0x05, 0x06, 0x46, - 0x9c, 0xb2, 0x5b, 0xd4, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, 0x49, 0xfc, 0x14, 0xf0, - 0x2f, 0x0f, 0x2b, 0xd0, 0x37, 0x1d, 0x07, 0xe0, 0xa0, 0x06, 0x69, 0x68, 0x1d, 0xd4, 0x2c, 0x68, - 0xa4, 0xb2, 0x14, 0xf0, 0x2f, 0x0f, 0x21, 0xd0, 0x23, 0x07, 0xf5, 0xd0, 0x14, 0xf0, 0x08, 0x0f, - 0x0c, 0xbf, 0x00, 0x21, 0x80, 0x21, 0xe0, 0x07, 0x48, 0xbf, 0x41, 0xf0, 0x20, 0x01, 0xa2, 0x07, - 0x48, 0xbf, 0x41, 0xf0, 0x40, 0x01, 0x63, 0x07, 0x48, 0xbf, 0x41, 0xf4, 0x80, 0x71, 0x38, 0x46, - 0xfe, 0xf7, 0xd6, 0xff, 0xa0, 0x06, 0x69, 0x68, 0xe1, 0xd5, 0xc9, 0xb2, 0x30, 0x46, 0xff, 0xf7, - 0xaf, 0xfa, 0x2c, 0x68, 0xa4, 0xb2, 0x14, 0xf0, 0x2f, 0x0f, 0xdd, 0xd1, 0xfe, 0xf7, 0x30, 0xfc, - 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x18, 0xf0, 0x80, 0x0f, 0x01, 0xd0, 0x22, 0x06, 0x30, 0xd4, - 0x63, 0x06, 0x01, 0xd4, 0xbd, 0xe8, 0xf0, 0x81, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, - 0x07, 0xfc, 0xfe, 0xf7, 0x6d, 0xfc, 0x72, 0x6c, 0xb3, 0x6c, 0x9a, 0x42, 0x33, 0xd0, 0x4f, 0xf6, - 0xbf, 0x73, 0x08, 0xea, 0x03, 0x03, 0x6f, 0xf0, 0x40, 0x02, 0xeb, 0x60, 0x2a, 0x60, 0xfe, 0xf7, - 0x0f, 0xfc, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xbd, 0xe8, 0xf0, 0x81, 0x20, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0xfe, 0xf7, 0xed, 0xfb, 0x30, 0x1d, 0x4f, 0xf4, 0x00, 0x71, 0xfe, 0xf7, 0x98, 0xff, - 0x6f, 0xf4, 0x80, 0x73, 0x2b, 0x60, 0xfe, 0xf7, 0xfb, 0xfb, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, - 0x90, 0xe7, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, 0xda, 0xfb, 0x06, 0xf1, 0x30, 0x00, - 0xff, 0xf7, 0xae, 0xf8, 0x00, 0x28, 0x0e, 0xdb, 0x68, 0x60, 0xfe, 0xf7, 0xe9, 0xfb, 0x00, 0x23, - 0x83, 0xf3, 0x11, 0x88, 0xbc, 0xe7, 0xb3, 0x6b, 0x00, 0x2b, 0xc8, 0xd0, 0x30, 0x1d, 0x10, 0x21, - 0xfe, 0xf7, 0x76, 0xff, 0xc3, 0xe7, 0x08, 0x21, 0x30, 0x1d, 0xfe, 0xf7, 0x71, 0xff, 0x4f, 0xf6, - 0x3f, 0x73, 0x08, 0xea, 0x03, 0x03, 0x43, 0xf0, 0x40, 0x03, 0xeb, 0x60, 0xe5, 0xe7, 0x00, 0xbf, - 0x08, 0xb5, 0xfe, 0xf7, 0xe5, 0xfb, 0x04, 0x48, 0xff, 0xf7, 0x5a, 0xff, 0xfe, 0xf7, 0x00, 0xfc, - 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0x64, 0xb9, 0xf8, 0x27, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0xd5, 0xfb, 0x04, 0x48, 0xff, 0xf7, 0x4a, 0xff, 0xfe, 0xf7, 0xf0, 0xfb, - 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0x54, 0xb9, 0x70, 0x28, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0xc5, 0xfb, 0x04, 0x48, 0xff, 0xf7, 0x3a, 0xff, 0xfe, 0xf7, 0xe0, 0xfb, - 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0x44, 0xb9, 0xe8, 0x28, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x0c, 0x4e, 0x0c, 0x4d, 0x0d, 0x4a, 0x0d, 0x4c, 0x30, 0x46, 0x00, 0x21, 0xff, 0xf7, - 0xcf, 0xf9, 0x0c, 0x4b, 0x0c, 0x4a, 0x73, 0x67, 0x28, 0x46, 0x00, 0x21, 0xff, 0xf7, 0xc8, 0xf9, - 0x0a, 0x4b, 0x0b, 0x4a, 0x6b, 0x67, 0x20, 0x46, 0x00, 0x21, 0xff, 0xf7, 0xc1, 0xf9, 0x09, 0x4b, - 0x63, 0x67, 0x70, 0xbd, 0xf8, 0x27, 0x00, 0x20, 0x70, 0x28, 0x00, 0x20, 0x01, 0x1e, 0x00, 0x08, - 0xe8, 0x28, 0x00, 0x20, 0x00, 0x10, 0x01, 0x40, 0x11, 0x1e, 0x00, 0x08, 0x00, 0x44, 0x00, 0x40, - 0x21, 0x1e, 0x00, 0x08, 0x00, 0x48, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x2c, 0x4c, 0x03, 0x7a, 0x00, 0x29, 0x18, 0xbf, 0x0c, 0x46, 0x01, 0x2b, 0x05, 0x46, - 0x22, 0xd0, 0x6b, 0x6f, 0x28, 0x4a, 0x93, 0x42, 0x31, 0xd0, 0x02, 0xf5, 0x80, 0x62, 0x93, 0x42, - 0x2d, 0xd0, 0x21, 0x68, 0x25, 0x4a, 0xb2, 0xfb, 0xf1, 0xf2, 0x9a, 0x60, 0xa2, 0x88, 0xe0, 0x88, - 0x21, 0x89, 0x42, 0xf4, 0x04, 0x52, 0x40, 0xf0, 0x40, 0x00, 0x42, 0xf0, 0x2c, 0x02, 0x41, 0xf0, - 0x01, 0x01, 0x92, 0xb2, 0x80, 0xb2, 0x89, 0xb2, 0x00, 0x24, 0x18, 0x61, 0x59, 0x61, 0xda, 0x60, - 0x1c, 0x60, 0x1a, 0x68, 0x5b, 0x68, 0x38, 0xbd, 0x19, 0x4b, 0x98, 0x42, 0x15, 0xd0, 0x19, 0x4b, - 0x98, 0x42, 0x1c, 0xd0, 0x18, 0x4b, 0x98, 0x42, 0xd3, 0xd1, 0x18, 0x4a, 0x13, 0x6c, 0x43, 0xf4, - 0x80, 0x23, 0x13, 0x64, 0x06, 0x21, 0x27, 0x20, 0xff, 0xf7, 0xfa, 0xf9, 0xc9, 0xe7, 0x21, 0x68, - 0x13, 0x4a, 0xb2, 0xfb, 0xf1, 0xf2, 0x9a, 0x60, 0xd0, 0xe7, 0x10, 0x4a, 0x53, 0x6c, 0x43, 0xf0, - 0x10, 0x03, 0x53, 0x64, 0x06, 0x21, 0x25, 0x20, 0xff, 0xf7, 0xea, 0xf9, 0xb9, 0xe7, 0x0b, 0x4a, - 0x13, 0x6c, 0x43, 0xf4, 0x00, 0x33, 0x13, 0x64, 0x06, 0x21, 0x26, 0x20, 0xff, 0xf7, 0xe0, 0xf9, - 0xaf, 0xe7, 0x00, 0xbf, 0xc0, 0x33, 0x00, 0x08, 0x00, 0x10, 0x01, 0x40, 0x80, 0xde, 0x80, 0x02, - 0xf8, 0x27, 0x00, 0x20, 0x70, 0x28, 0x00, 0x20, 0xe8, 0x28, 0x00, 0x20, 0x00, 0x38, 0x02, 0x40, - 0x00, 0xbd, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xf7, 0x36, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x28, 0x06, 0xd0, 0x05, 0x38, 0x06, 0x28, 0x94, 0xbf, 0x4f, 0xf4, 0x00, 0x30, 0x00, 0x20, - 0x70, 0x47, 0x4f, 0xf4, 0x80, 0x30, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0x48, 0x4b, 0x1a, 0x69, 0x00, 0x2a, 0x7c, 0xdb, 0x46, 0x4a, 0xd3, 0x68, 0xdb, 0x03, - 0xfc, 0xd4, 0x13, 0x69, 0x23, 0xf4, 0x80, 0x73, 0x13, 0x61, 0x13, 0x69, 0x43, 0xf4, 0x00, 0x73, - 0x13, 0x61, 0x13, 0x69, 0xc1, 0x07, 0x23, 0xf0, 0x78, 0x03, 0x13, 0x61, 0x03, 0xd5, 0x13, 0x69, - 0x43, 0xf0, 0x08, 0x03, 0x13, 0x61, 0x83, 0x07, 0x04, 0xd5, 0x3a, 0x4a, 0x13, 0x69, 0x43, 0xf0, - 0x10, 0x03, 0x13, 0x61, 0x41, 0x07, 0x04, 0xd5, 0x36, 0x4a, 0x13, 0x69, 0x43, 0xf0, 0x20, 0x03, - 0x13, 0x61, 0x02, 0x07, 0x3d, 0xd4, 0x33, 0x4a, 0x13, 0x69, 0x43, 0xf0, 0x02, 0x03, 0x13, 0x61, - 0x13, 0x69, 0x43, 0xf4, 0x80, 0x33, 0x13, 0x61, 0xd3, 0x68, 0xdb, 0x03, 0xfc, 0xd4, 0x13, 0x69, - 0x23, 0xf0, 0x02, 0x03, 0x13, 0x61, 0x13, 0x69, 0x43, 0xf0, 0x00, 0x43, 0x13, 0x61, 0x00, 0x28, - 0x4b, 0xd0, 0x01, 0x46, 0x02, 0x46, 0x4f, 0xf0, 0x00, 0x63, 0x01, 0x3a, 0xd2, 0xb2, 0x03, 0x2a, - 0x10, 0x46, 0x07, 0xd9, 0xff, 0xf7, 0xa4, 0xff, 0x01, 0x3a, 0xd2, 0xb2, 0x03, 0x2a, 0x03, 0x44, - 0x10, 0x46, 0xf7, 0xd8, 0x03, 0xf5, 0x80, 0x43, 0x00, 0x2a, 0xee, 0xd1, 0x03, 0x29, 0x16, 0xd9, - 0x08, 0x46, 0xff, 0xf7, 0x95, 0xff, 0x03, 0x28, 0x05, 0xd8, 0x13, 0xe0, 0x04, 0x38, 0x03, 0x28, - 0x03, 0xf1, 0x04, 0x03, 0x0e, 0xd9, 0x1a, 0x68, 0x01, 0x32, 0xf7, 0xd0, 0x6f, 0xf0, 0x0a, 0x00, - 0x08, 0xbd, 0x14, 0x4a, 0x13, 0x69, 0x43, 0xf0, 0x40, 0x03, 0x13, 0x61, 0xbb, 0xe7, 0x4f, 0xf4, - 0x80, 0x40, 0xf0, 0xe7, 0x00, 0x28, 0xf3, 0xd0, 0x1a, 0x78, 0xff, 0x2a, 0xee, 0xd1, 0x18, 0x44, - 0x01, 0x33, 0x03, 0xe0, 0x13, 0xf8, 0x01, 0x2b, 0xff, 0x2a, 0xe7, 0xd1, 0x83, 0x42, 0xf9, 0xd1, - 0x00, 0x20, 0x08, 0xbd, 0x08, 0x49, 0x09, 0x4a, 0x59, 0x60, 0x5a, 0x60, 0x1b, 0x69, 0x00, 0x2b, - 0xbf, 0xf6, 0x7b, 0xaf, 0x4f, 0xf0, 0xff, 0x30, 0x08, 0xbd, 0x4f, 0xf0, 0x00, 0x63, 0x4f, 0xf4, - 0x80, 0x40, 0xd0, 0xe7, 0x00, 0x3c, 0x02, 0x40, 0x23, 0x01, 0x67, 0x45, 0xab, 0x89, 0xef, 0xcd, - 0x08, 0xb5, 0x0b, 0x46, 0x01, 0x46, 0x18, 0x46, 0xfe, 0xf7, 0x3a, 0xf8, 0x00, 0x20, 0x08, 0xbd, - 0x2d, 0xe9, 0xf0, 0x43, 0x46, 0x4b, 0x1f, 0x69, 0x00, 0x2f, 0x83, 0xb0, 0x06, 0x46, 0x0d, 0x46, - 0x14, 0x46, 0x79, 0xdb, 0x42, 0x4f, 0xfb, 0x68, 0xdb, 0x03, 0xfc, 0xd4, 0x3b, 0x69, 0x23, 0xf4, - 0x80, 0x73, 0x3b, 0x61, 0x3b, 0x69, 0x43, 0xf4, 0x00, 0x73, 0x3b, 0x61, 0x16, 0xf0, 0x03, 0x03, - 0x2e, 0xd1, 0x03, 0x2c, 0x22, 0xd9, 0xa4, 0xf1, 0x04, 0x0e, 0x2e, 0xf0, 0x03, 0x07, 0x06, 0xf1, - 0x04, 0x0c, 0x37, 0x4a, 0x67, 0x44, 0x30, 0x46, 0x29, 0x1f, 0x13, 0x69, 0x51, 0xf8, 0x04, 0x6f, - 0x43, 0xf0, 0x01, 0x03, 0x13, 0x61, 0x40, 0xf8, 0x04, 0x6b, 0xd3, 0x68, 0xde, 0x03, 0xfc, 0xd4, - 0x13, 0x69, 0xb8, 0x42, 0x23, 0xf0, 0x01, 0x03, 0x13, 0x61, 0xee, 0xd1, 0x2e, 0xf0, 0x03, 0x00, - 0x03, 0x1d, 0x00, 0xeb, 0x0c, 0x06, 0x1d, 0x44, 0x04, 0xf0, 0x03, 0x04, 0x6c, 0xbb, 0x28, 0x4a, - 0x13, 0x69, 0x43, 0xf0, 0x00, 0x43, 0x13, 0x61, 0x00, 0x20, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, - 0xa6, 0xeb, 0x03, 0x09, 0x02, 0xa8, 0xc3, 0xf1, 0x04, 0x08, 0xd9, 0xf8, 0x00, 0x20, 0x40, 0xf8, - 0x04, 0x2d, 0xa0, 0x45, 0x28, 0xbf, 0xa0, 0x46, 0x18, 0x44, 0x42, 0x46, 0x29, 0x46, 0xfd, 0xf7, - 0xdf, 0xff, 0x3b, 0x69, 0x01, 0x99, 0x1a, 0x4a, 0x43, 0xf0, 0x01, 0x03, 0x3b, 0x61, 0xc9, 0xf8, - 0x00, 0x10, 0xd3, 0x68, 0xdf, 0x03, 0xfc, 0xd4, 0x13, 0x69, 0x23, 0xf0, 0x01, 0x03, 0x46, 0x44, - 0x45, 0x44, 0xa4, 0xeb, 0x08, 0x04, 0x13, 0x61, 0xab, 0xe7, 0x02, 0xa8, 0x33, 0x68, 0x40, 0xf8, - 0x04, 0x3d, 0x22, 0x46, 0x29, 0x46, 0xfd, 0xf7, 0xc3, 0xff, 0x0d, 0x4a, 0x01, 0x99, 0x13, 0x69, - 0x43, 0xf0, 0x01, 0x03, 0x13, 0x61, 0x31, 0x60, 0xd3, 0x68, 0xdb, 0x03, 0xfc, 0xd4, 0x13, 0x69, - 0x23, 0xf0, 0x01, 0x03, 0x13, 0x61, 0xba, 0xe7, 0x06, 0x49, 0x07, 0x4a, 0x59, 0x60, 0x5a, 0x60, - 0x1b, 0x69, 0x00, 0x2b, 0xbf, 0xf6, 0x7e, 0xaf, 0x4f, 0xf0, 0xff, 0x30, 0xb5, 0xe7, 0x00, 0xbf, - 0x00, 0x3c, 0x02, 0x40, 0x23, 0x01, 0x67, 0x45, 0xab, 0x89, 0xef, 0xcd, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0x16, 0x4d, 0x2b, 0x68, 0x93, 0xf8, 0x79, 0x31, 0x13, 0xf0, 0x01, 0x03, 0x01, 0xd1, - 0x03, 0x60, 0xf8, 0xbd, 0x12, 0x4f, 0x13, 0x4e, 0x04, 0x46, 0x13, 0x48, 0x00, 0xf0, 0xb0, 0xfa, - 0x3b, 0x68, 0x12, 0x48, 0xd3, 0xf8, 0x90, 0x17, 0x40, 0xf2, 0x82, 0x32, 0x00, 0xf0, 0xd0, 0xf9, - 0x3b, 0x68, 0x0f, 0x48, 0xd3, 0xf8, 0x8c, 0x17, 0x40, 0xf2, 0x82, 0x32, 0x00, 0xf0, 0xc8, 0xf9, - 0x0c, 0x48, 0x00, 0xf0, 0x9d, 0xfa, 0x2b, 0x68, 0x0b, 0x49, 0xd3, 0xf8, 0x44, 0x31, 0x0b, 0x60, - 0x30, 0x46, 0xfe, 0xf7, 0xc5, 0xff, 0x26, 0x60, 0xf8, 0xbd, 0x00, 0xbf, 0x0c, 0x16, 0x00, 0x20, - 0x10, 0x16, 0x00, 0x20, 0xe8, 0x28, 0x00, 0x20, 0xd0, 0x34, 0x00, 0x08, 0xe8, 0x34, 0x00, 0x08, - 0xf8, 0x34, 0x00, 0x08, 0x08, 0x35, 0x00, 0x08, 0x00, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x68, 0x88, 0xb1, 0x03, 0x68, 0x70, 0xb5, 0x9d, 0x69, 0x4f, 0xf4, 0x7a, 0x73, 0x14, 0x46, - 0xa8, 0x47, 0x84, 0x42, 0x07, 0xd0, 0x23, 0x46, 0x02, 0x46, 0x04, 0x49, 0x04, 0x48, 0xbd, 0xe8, - 0x70, 0x40, 0x00, 0xf0, 0x75, 0xba, 0x70, 0xbd, 0x70, 0x47, 0x00, 0xbf, 0x20, 0x35, 0x00, 0x08, - 0xe8, 0x78, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x68, 0x30, 0xb1, 0x10, 0xb4, 0x04, 0x68, 0xe4, 0x69, 0xa4, 0x46, 0x5d, 0xf8, 0x04, 0x4b, - 0x60, 0x47, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x6a, 0x49, 0x03, 0x60, 0xf0, 0xb4, 0xff, 0x25, 0x03, 0x71, 0xc3, 0x60, 0x03, 0x74, - 0x83, 0x61, 0x03, 0x77, 0x43, 0x62, 0x80, 0xf8, 0x28, 0x30, 0x03, 0x63, 0x80, 0xf8, 0x34, 0x30, - 0xc3, 0x63, 0x80, 0xf8, 0x40, 0x30, 0x83, 0x64, 0x80, 0xf8, 0x4c, 0x30, 0x43, 0x65, 0x80, 0xf8, - 0x58, 0x30, 0x45, 0x71, 0x45, 0x74, 0x45, 0x77, 0x80, 0xf8, 0x29, 0x50, 0x80, 0xf8, 0x35, 0x50, - 0x80, 0xf8, 0x41, 0x50, 0x80, 0xf8, 0x4d, 0x50, 0x81, 0x60, 0x41, 0x61, 0x01, 0x62, 0xc1, 0x62, - 0x81, 0x63, 0x41, 0x64, 0x01, 0x65, 0xc1, 0x65, 0x1a, 0x46, 0x80, 0xf8, 0x59, 0x50, 0x2c, 0x46, - 0x03, 0x66, 0x80, 0xf8, 0x64, 0x30, 0x80, 0xf8, 0x65, 0x50, 0xc3, 0x66, 0x80, 0xf8, 0x70, 0x30, - 0x80, 0xf8, 0x71, 0x50, 0x83, 0x67, 0x80, 0xf8, 0x7c, 0x30, 0x80, 0xf8, 0x7d, 0x50, 0xc0, 0xf8, - 0x84, 0x30, 0x80, 0xf8, 0x88, 0x30, 0x80, 0xf8, 0x89, 0x50, 0xc0, 0xf8, 0x90, 0x30, 0x80, 0xf8, - 0x94, 0x30, 0x80, 0xf8, 0x95, 0x50, 0xc0, 0xf8, 0xa0, 0x30, 0x80, 0xf8, 0xa4, 0x30, 0x80, 0xf8, - 0xa5, 0x50, 0xc0, 0xf8, 0xac, 0x30, 0x80, 0xf8, 0xb0, 0x30, 0x80, 0xf8, 0xb1, 0x50, 0x81, 0x66, - 0x41, 0x67, 0xc0, 0xf8, 0x80, 0x10, 0xc0, 0xf8, 0x8c, 0x10, 0xc0, 0xf8, 0x98, 0x10, 0xc0, 0xf8, - 0xa8, 0x10, 0xc0, 0xf8, 0xb4, 0x10, 0x00, 0xf1, 0xb8, 0x03, 0x00, 0xf5, 0xbc, 0x75, 0x99, 0x60, - 0x1a, 0x60, 0x1a, 0x71, 0x5c, 0x71, 0x0c, 0x33, 0xab, 0x42, 0xf8, 0xd1, 0xc0, 0xf8, 0x78, 0x21, - 0x80, 0xf8, 0x7c, 0x21, 0x80, 0xf8, 0x7d, 0x41, 0xc0, 0xf8, 0x84, 0x21, 0x80, 0xf8, 0x88, 0x21, - 0x80, 0xf8, 0x89, 0x41, 0xc0, 0xf8, 0x90, 0x21, 0x80, 0xf8, 0x94, 0x21, 0x80, 0xf8, 0x95, 0x41, - 0xc0, 0xf8, 0x80, 0x11, 0xc0, 0xf8, 0x8c, 0x11, 0xc0, 0xf8, 0x98, 0x11, 0x00, 0xf5, 0xd0, 0x73, - 0x00, 0xf5, 0x48, 0x75, 0x00, 0x22, 0xff, 0x24, 0x00, 0x26, 0x00, 0x27, 0x99, 0x60, 0x1a, 0x60, - 0x1a, 0x71, 0x5c, 0x71, 0xda, 0x60, 0xc3, 0xe9, 0x04, 0x67, 0x5a, 0x76, 0x9a, 0x76, 0x1c, 0x76, - 0x20, 0x33, 0xab, 0x42, 0xf2, 0xd1, 0x00, 0xf5, 0x88, 0x64, 0x00, 0x22, 0xff, 0x25, 0x99, 0x60, - 0x1a, 0x60, 0x1a, 0x71, 0x5d, 0x71, 0xda, 0x60, 0x1a, 0x75, 0x1a, 0x61, 0x18, 0x33, 0xa3, 0x42, - 0xf5, 0xd1, 0x17, 0x4b, 0x17, 0x4f, 0x18, 0x4e, 0xc0, 0xf8, 0x48, 0x14, 0xc0, 0xf8, 0x40, 0x24, - 0x80, 0xf8, 0x44, 0x24, 0x80, 0xf8, 0x45, 0x54, 0x14, 0x4c, 0x15, 0x49, 0xc0, 0xf8, 0x4c, 0x74, - 0x03, 0xf5, 0x90, 0x75, 0x1a, 0x46, 0xc0, 0xf8, 0x9c, 0x60, 0x01, 0xe0, 0x54, 0xf8, 0x04, 0x1f, - 0xc2, 0xf8, 0x2c, 0x13, 0x18, 0x32, 0xaa, 0x42, 0xf8, 0xd1, 0x0e, 0x4c, 0x0e, 0x49, 0x00, 0x22, - 0x01, 0xe0, 0x54, 0xf8, 0x04, 0x1f, 0x83, 0xf8, 0xb8, 0x21, 0x01, 0x32, 0x0c, 0x2a, 0xc3, 0xf8, - 0xac, 0x11, 0x03, 0xf1, 0x20, 0x03, 0xf4, 0xd1, 0xf0, 0xbc, 0x70, 0x47, 0x60, 0x29, 0x00, 0x20, - 0x68, 0x29, 0x00, 0x20, 0xe8, 0x35, 0x00, 0x08, 0xf0, 0x35, 0x00, 0x08, 0x80, 0x35, 0x00, 0x08, - 0xe0, 0x35, 0x00, 0x08, 0xb0, 0x35, 0x00, 0x08, 0xe4, 0x35, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x15, 0x4b, 0x98, 0x42, 0x1b, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x19, 0xd0, 0x03, 0xf5, - 0x80, 0x63, 0x98, 0x42, 0x17, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x15, 0xd0, 0x03, 0xf5, - 0x80, 0x63, 0x98, 0x42, 0x13, 0xd0, 0x03, 0xf5, 0x40, 0x63, 0x98, 0x42, 0x11, 0xd0, 0x0b, 0x49, - 0x0b, 0x4b, 0x0c, 0x4a, 0x88, 0x42, 0x0c, 0xbf, 0x18, 0x46, 0x10, 0x46, 0x70, 0x47, 0x0a, 0x48, - 0x70, 0x47, 0x0a, 0x48, 0x70, 0x47, 0x0a, 0x48, 0x70, 0x47, 0x0a, 0x48, 0x70, 0x47, 0x0a, 0x48, - 0x70, 0x47, 0x0a, 0x48, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x02, 0x40, 0x00, 0x14, 0x02, 0x40, - 0x68, 0x35, 0x00, 0x08, 0x6c, 0x35, 0x00, 0x08, 0x50, 0x35, 0x00, 0x08, 0x54, 0x35, 0x00, 0x08, - 0x58, 0x35, 0x00, 0x08, 0x5c, 0x35, 0x00, 0x08, 0x60, 0x35, 0x00, 0x08, 0x64, 0x35, 0x00, 0x08, - 0x01, 0x48, 0xff, 0xf7, 0xd5, 0xbe, 0x00, 0xbf, 0x68, 0x29, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x30, 0xb4, 0x0f, 0x4b, 0x0f, 0x49, 0x1a, 0x68, 0x92, 0xf8, 0x79, 0x31, 0x43, 0xf0, 0x21, 0x03, - 0x82, 0xf8, 0x79, 0x31, 0x0b, 0x68, 0x2a, 0x20, 0x2b, 0x21, 0x4f, 0xf4, 0x16, 0x45, 0x4f, 0xf4, - 0xe1, 0x34, 0xc3, 0xf8, 0x8c, 0x07, 0xc3, 0xf8, 0x94, 0x07, 0xc3, 0xf8, 0x90, 0x17, 0xc3, 0xf8, - 0x98, 0x17, 0xc2, 0xf8, 0x44, 0x51, 0xc3, 0xf8, 0xb4, 0x48, 0x30, 0xbc, 0xff, 0xf7, 0xe8, 0xbc, - 0x0c, 0x16, 0x00, 0x20, 0x10, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0b, 0x4b, 0x0c, 0x4a, 0x1b, 0x68, 0x11, 0x68, 0x93, 0xf8, 0x78, 0x21, 0x03, 0x20, 0x42, 0xf0, - 0x04, 0x02, 0x83, 0xf8, 0x78, 0x21, 0xc1, 0xf8, 0x10, 0x0b, 0x93, 0xf8, 0x78, 0x21, 0x34, 0x21, - 0x42, 0xf0, 0x08, 0x02, 0xc3, 0xf8, 0x3c, 0x11, 0x83, 0xf8, 0x78, 0x21, 0xff, 0xf7, 0xd0, 0xbc, - 0x0c, 0x16, 0x00, 0x20, 0x10, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x50, 0x29, 0x36, 0xd0, 0xf0, 0xb5, 0x17, 0x46, 0x83, 0xb0, 0x05, 0x46, 0x0c, 0x46, 0x21, 0xd8, - 0x18, 0x4b, 0x0a, 0x11, 0x01, 0xf0, 0x0f, 0x04, 0x53, 0xf8, 0x22, 0x60, 0x7e, 0xb1, 0x30, 0x46, - 0xff, 0xf7, 0x5e, 0xff, 0x2a, 0x46, 0x03, 0x46, 0x13, 0x49, 0x14, 0x48, 0x00, 0x94, 0x00, 0xf0, - 0xc7, 0xf8, 0x2a, 0x46, 0x21, 0x46, 0x30, 0x46, 0x00, 0xf0, 0x6a, 0xf8, 0x08, 0xb1, 0x03, 0xb0, - 0xf0, 0xbd, 0x01, 0x21, 0x3a, 0x46, 0x30, 0x46, 0xa1, 0x40, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x40, - 0xff, 0xf7, 0x1e, 0xba, 0x0a, 0x46, 0x41, 0xf2, 0xf2, 0x70, 0x09, 0x49, 0x00, 0xf0, 0xb8, 0xf8, - 0x07, 0x49, 0x22, 0x46, 0x41, 0xf2, 0xf2, 0x70, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x40, 0x00, 0xf0, - 0xaf, 0xb8, 0x70, 0x47, 0x90, 0x36, 0x00, 0x08, 0xb0, 0x36, 0x00, 0x08, 0xb8, 0x2d, 0x00, 0x20, - 0x70, 0x36, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x49, 0x02, 0x48, 0x00, 0xf0, 0xa4, 0xb8, 0x60, 0x36, 0x00, 0x08, 0xb8, 0x2d, 0x00, 0x20, - 0x08, 0xb5, 0x18, 0x4b, 0x98, 0x42, 0x1f, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x1d, 0xd0, - 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x11, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x0f, 0xd0, - 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x0d, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x0f, 0xd0, - 0x03, 0xf5, 0x00, 0x63, 0x98, 0x42, 0x0d, 0xd1, 0x06, 0x20, 0x08, 0xbd, 0x02, 0x20, 0x08, 0xbd, - 0x03, 0x20, 0x08, 0xbd, 0x04, 0x20, 0x08, 0xbd, 0x00, 0x20, 0x08, 0xbd, 0x01, 0x20, 0x08, 0xbd, - 0x05, 0x20, 0x08, 0xbd, 0x04, 0x49, 0x41, 0xf2, 0xf4, 0x70, 0x00, 0xf0, 0x69, 0xf8, 0x4f, 0xf0, - 0xff, 0x30, 0x08, 0xbd, 0x00, 0x00, 0x02, 0x40, 0x10, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x41, 0x19, 0x4b, 0x1c, 0x68, 0x82, 0xb0, 0x2c, 0xb3, 0x0d, 0x46, 0x17, 0x46, - 0x80, 0x46, 0xff, 0xf7, 0xbd, 0xff, 0x16, 0x4c, 0x05, 0xeb, 0x00, 0x16, 0x54, 0xf8, 0x26, 0x00, - 0x88, 0xb1, 0x40, 0x46, 0xff, 0xf7, 0xd4, 0xfe, 0x54, 0xf8, 0x26, 0x30, 0x01, 0x93, 0x02, 0x46, - 0x00, 0x97, 0x2b, 0x46, 0x0f, 0x49, 0x41, 0xf2, 0xf5, 0x70, 0x00, 0xf0, 0x41, 0xf8, 0x01, 0x20, - 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x0c, 0x4a, 0x44, 0xf8, 0x26, 0x70, 0x13, 0x68, 0x01, 0x33, - 0x13, 0x60, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x08, 0x49, 0x41, 0xf2, 0xf3, 0x70, 0x00, 0xf0, - 0x2f, 0xf8, 0x20, 0x46, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x00, 0xbf, 0x7c, 0x30, 0x00, 0x20, - 0xbc, 0x2e, 0x00, 0x20, 0xec, 0x36, 0x00, 0x08, 0x80, 0x30, 0x00, 0x20, 0xd0, 0x36, 0x00, 0x08, - 0x01, 0x49, 0x02, 0x48, 0x00, 0xf0, 0x24, 0xb8, 0xc0, 0x36, 0x00, 0x08, 0x84, 0x30, 0x00, 0x20, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0xb4, 0x04, 0xb0, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0xb4, 0x03, 0xb0, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0xb4, 0x03, 0xb0, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0xb5, 0x16, 0x4b, 0x83, 0xb0, 0x04, 0x46, 0x1b, 0x68, 0x15, 0x48, 0x05, 0x22, 0x69, 0x46, - 0xff, 0xf7, 0x76, 0xfd, 0x05, 0x28, 0x02, 0xd0, 0x00, 0x20, 0x03, 0xb0, 0x30, 0xbd, 0x9d, 0xf8, - 0x00, 0x30, 0x9d, 0xf8, 0x01, 0x50, 0x9d, 0xf8, 0x02, 0x00, 0x9d, 0xf8, 0x03, 0x10, 0x9d, 0xf8, - 0x04, 0x20, 0x6b, 0x40, 0x43, 0x40, 0x4b, 0x40, 0x9a, 0x42, 0xed, 0xd1, 0x00, 0x9b, 0x1b, 0xba, - 0x03, 0xf1, 0x78, 0x42, 0xb2, 0xf5, 0x80, 0x4f, 0x38, 0xbf, 0x06, 0x4a, 0x4f, 0xf0, 0x01, 0x00, - 0x38, 0xbf, 0x9b, 0x18, 0x23, 0x60, 0x03, 0xb0, 0x30, 0xbd, 0x00, 0xbf, 0x14, 0x16, 0x00, 0x20, - 0x8c, 0x31, 0x00, 0x20, 0x48, 0x33, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x98, 0xb5, 0x04, 0x46, 0x00, 0xaf, 0x72, 0xb6, 0xfd, 0xf7, 0x1a, 0xfe, 0x0f, 0x4a, 0x60, 0x68, - 0x53, 0x68, 0x23, 0xf0, 0x80, 0x53, 0x53, 0x60, 0x00, 0x22, 0x93, 0x00, 0x03, 0xf1, 0x60, 0x43, - 0x03, 0xf5, 0x61, 0x43, 0x01, 0x32, 0xd3, 0xf8, 0x00, 0x12, 0xc3, 0xf8, 0x80, 0x10, 0x08, 0x2a, - 0xf3, 0xd1, 0x00, 0x23, 0x83, 0xf3, 0x14, 0x88, 0x23, 0x68, 0x83, 0xf3, 0x08, 0x88, 0x80, 0x47, - 0x03, 0x48, 0xbd, 0x46, 0xbd, 0xe8, 0x98, 0x40, 0xfd, 0xf7, 0xb2, 0xbd, 0x00, 0xed, 0x00, 0xe0, - 0x20, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x4f, 0x89, 0xb0, 0x08, 0xa9, 0xc6, 0x48, 0xc7, 0x4d, 0xdf, 0xf8, 0x28, 0x83, - 0xc6, 0x4f, 0x79, 0x23, 0x01, 0xf8, 0x1d, 0x3d, 0x01, 0x22, 0x64, 0x23, 0x04, 0x46, 0x2b, 0x60, - 0xff, 0xf7, 0xe6, 0xfc, 0x4f, 0xf4, 0x80, 0x42, 0x4f, 0xf0, 0x00, 0x61, 0x40, 0x46, 0xfd, 0xf7, - 0x3f, 0xfc, 0x4f, 0xf0, 0x00, 0x09, 0x01, 0x22, 0x2b, 0x68, 0x0d, 0xeb, 0x02, 0x01, 0x20, 0x46, - 0xff, 0xf7, 0xf6, 0xfc, 0x01, 0x28, 0x40, 0xd0, 0xb9, 0xf1, 0x00, 0x0f, 0x4a, 0xd0, 0x0d, 0xf1, - 0x02, 0x06, 0x01, 0x22, 0x2b, 0x68, 0x0d, 0xeb, 0x02, 0x01, 0x20, 0x46, 0xff, 0xf7, 0xe8, 0xfc, - 0x01, 0x28, 0xf6, 0xd1, 0x02, 0x46, 0x2b, 0x68, 0x31, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xe0, 0xfc, - 0x01, 0x28, 0x18, 0xd0, 0x08, 0xa9, 0x1f, 0x23, 0x01, 0xf8, 0x1c, 0x3d, 0x01, 0x22, 0x20, 0x46, - 0xff, 0xf7, 0xb6, 0xfc, 0x2b, 0x68, 0x01, 0x22, 0x0d, 0xeb, 0x02, 0x01, 0x20, 0x46, 0xff, 0xf7, - 0xcf, 0xfc, 0x01, 0x28, 0xdd, 0xd1, 0x2b, 0x68, 0x01, 0x22, 0x31, 0x46, 0x20, 0x46, 0xff, 0xf7, - 0xc7, 0xfc, 0x01, 0x28, 0xe6, 0xd1, 0x81, 0x46, 0x9d, 0xf8, 0x01, 0x30, 0x9d, 0xf8, 0x02, 0x20, - 0xdb, 0x43, 0xdb, 0xb2, 0x9a, 0x42, 0x08, 0xa9, 0x18, 0xd0, 0x1f, 0x23, 0x01, 0xf8, 0x1b, 0x3d, - 0x01, 0x22, 0x20, 0x46, 0xff, 0xf7, 0x94, 0xfc, 0xb5, 0xe7, 0x0d, 0xf1, 0x02, 0x06, 0x02, 0x46, - 0x31, 0x46, 0x2b, 0x68, 0x20, 0x46, 0xff, 0xf7, 0xab, 0xfc, 0x01, 0x28, 0xe4, 0xd0, 0xb9, 0xf1, - 0x00, 0x0f, 0xc7, 0xd1, 0x00, 0x20, 0x09, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x4f, 0xf0, 0x79, 0x09, - 0x01, 0x22, 0x01, 0xf8, 0x1a, 0x9d, 0x20, 0x46, 0xff, 0xf7, 0x7a, 0xfc, 0x9d, 0xf8, 0x01, 0x20, - 0x4f, 0xf4, 0x7a, 0x73, 0x11, 0x2a, 0x2b, 0x60, 0x7a, 0xd0, 0x09, 0xd9, 0x31, 0x2a, 0x6a, 0xd0, - 0x44, 0x2a, 0x00, 0xf0, 0x83, 0x80, 0x21, 0x2a, 0x35, 0xd0, 0x4f, 0xf4, 0x7a, 0x73, 0xb2, 0xe7, - 0x00, 0x2a, 0x41, 0xd0, 0x02, 0x2a, 0xf8, 0xd1, 0x81, 0x4b, 0x08, 0xa9, 0x4f, 0xf0, 0x01, 0x0a, - 0x1b, 0x68, 0x01, 0xf8, 0x16, 0xad, 0x52, 0x46, 0x20, 0x46, 0xc3, 0xf3, 0x0b, 0x0b, 0xff, 0xf7, - 0x57, 0xfc, 0x08, 0xa9, 0x4f, 0xea, 0x1b, 0x23, 0x01, 0xf8, 0x15, 0x3d, 0x52, 0x46, 0x20, 0x46, - 0xff, 0xf7, 0x4e, 0xfc, 0x08, 0xa9, 0x52, 0x46, 0x01, 0xf8, 0x14, 0xbd, 0x20, 0x46, 0xff, 0xf7, - 0x47, 0xfc, 0x08, 0xa9, 0x52, 0x46, 0x01, 0xf8, 0x13, 0x9d, 0x20, 0x46, 0xff, 0xf7, 0x40, 0xfc, - 0x52, 0x46, 0x2b, 0x68, 0x0d, 0xeb, 0x0a, 0x01, 0x20, 0x46, 0xff, 0xf7, 0x59, 0xfc, 0x50, 0x45, - 0x7f, 0xf4, 0x67, 0xaf, 0x87, 0xe7, 0x07, 0xa8, 0xff, 0xf7, 0xd2, 0xfe, 0x08, 0xa9, 0x00, 0x28, - 0x00, 0xf0, 0xc3, 0x80, 0x20, 0x46, 0x01, 0x22, 0x01, 0xf8, 0x12, 0x9d, 0xff, 0xf7, 0x28, 0xfc, - 0x07, 0x98, 0xff, 0xf7, 0xfd, 0xfe, 0x6d, 0xe7, 0x08, 0xa9, 0x06, 0x23, 0xdf, 0xf8, 0x8c, 0x91, - 0x01, 0xf8, 0x18, 0x3d, 0x01, 0x22, 0x20, 0x46, 0xff, 0xf7, 0x1a, 0xfc, 0x09, 0xf1, 0x06, 0x0a, - 0x31, 0x23, 0x01, 0xe0, 0x19, 0xf8, 0x01, 0x3b, 0x8d, 0xf8, 0x09, 0x30, 0x01, 0x22, 0x0d, 0xf1, - 0x09, 0x01, 0x20, 0x46, 0xff, 0xf7, 0x0c, 0xfc, 0xd1, 0x45, 0xf3, 0xd1, 0x08, 0xa9, 0x79, 0x23, - 0x01, 0xf8, 0x19, 0x3d, 0x4a, 0xe7, 0x07, 0xa8, 0xff, 0xf7, 0xa2, 0xfe, 0x08, 0xa9, 0x90, 0xbb, - 0x1f, 0x23, 0x01, 0xf8, 0x07, 0x3d, 0x01, 0x22, 0x20, 0x46, 0xff, 0xf7, 0xf9, 0xfb, 0x41, 0xe7, - 0x07, 0xa8, 0xff, 0xf7, 0x95, 0xfe, 0x08, 0xa9, 0x00, 0x28, 0x5c, 0xd1, 0x1f, 0x23, 0x01, 0xf8, - 0x0b, 0x3d, 0x01, 0x22, 0x20, 0x46, 0xff, 0xf7, 0xeb, 0xfb, 0x33, 0xe7, 0x01, 0x22, 0x43, 0x49, - 0x20, 0x46, 0xff, 0xf7, 0x05, 0xfc, 0x01, 0x28, 0x81, 0x46, 0x7f, 0xf4, 0x2b, 0xaf, 0x02, 0x46, - 0x2b, 0x68, 0x40, 0x49, 0x20, 0x46, 0xff, 0xf7, 0xfb, 0xfb, 0x01, 0x28, 0x02, 0x46, 0x7f, 0xd0, - 0x4a, 0x46, 0x2b, 0x68, 0x0d, 0xf1, 0x01, 0x01, 0x20, 0x46, 0xff, 0xf7, 0xf1, 0xfb, 0x01, 0x28, - 0x7f, 0xf4, 0xff, 0xae, 0x1f, 0xe7, 0x01, 0x22, 0x01, 0xf8, 0x08, 0x9d, 0x20, 0x46, 0xff, 0xf7, - 0xc7, 0xfb, 0x2b, 0x68, 0x31, 0x49, 0x01, 0x22, 0x20, 0x46, 0xff, 0xf7, 0xe1, 0xfb, 0x01, 0x28, - 0x83, 0x46, 0x7f, 0xf4, 0x07, 0xaf, 0x97, 0xf8, 0x00, 0x90, 0x2b, 0x68, 0x2d, 0x49, 0x09, 0xf1, - 0x02, 0x0a, 0x52, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xd3, 0xfb, 0x82, 0x45, 0x7f, 0xf4, 0xfa, 0xae, - 0x5f, 0xfa, 0x8a, 0xf1, 0x01, 0x29, 0x3a, 0x78, 0x07, 0xdd, 0x5b, 0x46, 0xf8, 0x5c, 0x01, 0x33, - 0xdb, 0xb2, 0x99, 0x42, 0x82, 0xea, 0x00, 0x02, 0xf8, 0xdc, 0x17, 0xf8, 0x0a, 0x30, 0x93, 0x42, - 0x00, 0xf0, 0xa8, 0x80, 0x08, 0xa9, 0x1f, 0x23, 0x01, 0xf8, 0x09, 0x3d, 0x01, 0x22, 0x20, 0x46, - 0xff, 0xf7, 0x96, 0xfb, 0xde, 0xe6, 0x01, 0x22, 0x01, 0xf8, 0x0c, 0x9d, 0x20, 0x46, 0xff, 0xf7, - 0x8f, 0xfb, 0x01, 0x22, 0x2b, 0x68, 0x04, 0xa9, 0x20, 0x46, 0xff, 0xf7, 0xa9, 0xfb, 0x01, 0x28, - 0x02, 0x46, 0x7f, 0xf4, 0xcf, 0xae, 0x2b, 0x68, 0x0d, 0xf1, 0x11, 0x01, 0x20, 0x46, 0xff, 0xf7, - 0x9f, 0xfb, 0x01, 0x28, 0x02, 0x46, 0x7f, 0xf4, 0xc5, 0xae, 0x9d, 0xf8, 0x10, 0x30, 0x9d, 0xf8, - 0x11, 0x00, 0xd9, 0x43, 0xc9, 0xb2, 0x88, 0x42, 0x08, 0xa9, 0x67, 0xd0, 0x1f, 0x23, 0x01, 0xf8, - 0x0d, 0x3d, 0x20, 0x46, 0xff, 0xf7, 0x6c, 0xfb, 0xb4, 0xe6, 0x1f, 0x23, 0x01, 0xf8, 0x11, 0x3d, - 0xac, 0xe6, 0x00, 0xbf, 0x8c, 0x31, 0x00, 0x20, 0x14, 0x16, 0x00, 0x20, 0x48, 0x73, 0x00, 0x20, - 0x00, 0x20, 0x04, 0xe0, 0x49, 0x73, 0x00, 0x20, 0x48, 0x33, 0x00, 0x20, 0x41, 0x37, 0x00, 0x08, - 0x39, 0x78, 0x7b, 0x78, 0x43, 0xea, 0x01, 0x23, 0x4f, 0xf6, 0xff, 0x71, 0x8b, 0x42, 0x7d, 0xd0, - 0x01, 0x33, 0x4f, 0xea, 0x43, 0x0a, 0x0a, 0xf1, 0x01, 0x09, 0x4a, 0x46, 0x2b, 0x68, 0x43, 0x49, - 0x20, 0x46, 0xff, 0xf7, 0x65, 0xfb, 0x81, 0x45, 0x7f, 0xf4, 0x8c, 0xae, 0x09, 0xf1, 0x01, 0x01, - 0xc9, 0xb2, 0x01, 0x29, 0x3b, 0x78, 0x0a, 0xf1, 0x02, 0x0a, 0x07, 0xd9, 0x01, 0x22, 0xb8, 0x5c, - 0x01, 0x32, 0xd2, 0xb2, 0x8a, 0x42, 0x83, 0xea, 0x00, 0x03, 0xf8, 0xdb, 0x17, 0xf8, 0x0a, 0x20, - 0x9a, 0x42, 0x56, 0xd1, 0xb9, 0xf1, 0x01, 0x0f, 0x4e, 0xdd, 0xa9, 0xf1, 0x02, 0x09, 0x29, 0xf0, - 0x01, 0x09, 0x09, 0xf1, 0x02, 0x09, 0xdf, 0xf8, 0xd0, 0xa0, 0xb9, 0x44, 0x05, 0xe0, 0xff, 0xf7, - 0xa7, 0xf9, 0x0a, 0xf1, 0x02, 0x0a, 0xd1, 0x45, 0x3e, 0xd0, 0x9a, 0xf8, 0x02, 0x20, 0x9a, 0xf8, - 0x03, 0x30, 0x43, 0xea, 0x02, 0x23, 0x1b, 0xb2, 0xd8, 0xb2, 0x00, 0x2b, 0xef, 0xd1, 0x4f, 0xf4, - 0x80, 0x42, 0xff, 0x21, 0x40, 0x46, 0x00, 0xf0, 0x9b, 0xf8, 0xea, 0xe7, 0x01, 0xf8, 0x0e, 0x9d, - 0x20, 0x46, 0x03, 0xf1, 0x01, 0x09, 0xff, 0xf7, 0x03, 0xfb, 0x07, 0x99, 0x41, 0x45, 0x19, 0xd3, - 0x1f, 0x4b, 0x99, 0x42, 0x16, 0xd2, 0x4a, 0x46, 0x38, 0x46, 0xfd, 0xf7, 0x59, 0xfa, 0x4a, 0x46, - 0x39, 0x46, 0x3c, 0xe6, 0x07, 0x98, 0x40, 0x45, 0x09, 0xf1, 0x01, 0x02, 0x10, 0xd3, 0x18, 0x4b, - 0x98, 0x42, 0x0d, 0xd2, 0x17, 0x49, 0xfd, 0xf7, 0x4b, 0xfa, 0x08, 0xa9, 0x79, 0x23, 0x01, 0xf8, - 0x0a, 0x3d, 0x2b, 0xe6, 0x08, 0x46, 0x4a, 0x46, 0x39, 0x46, 0xff, 0xf7, 0x01, 0xfa, 0xe6, 0xe7, - 0x10, 0x49, 0xff, 0xf7, 0x05, 0xfa, 0xf0, 0xe7, 0x08, 0xa9, 0x79, 0x23, 0x01, 0xf8, 0x06, 0x3d, - 0x1c, 0xe6, 0x08, 0xa9, 0x1f, 0x23, 0x01, 0xf8, 0x05, 0x3d, 0x17, 0xe6, 0x2b, 0x68, 0x07, 0x49, - 0x20, 0x46, 0xff, 0xf7, 0xed, 0xfa, 0x01, 0x28, 0x81, 0x46, 0x7f, 0xf4, 0x13, 0xae, 0x3b, 0x78, - 0x7a, 0x78, 0x4f, 0xf0, 0x02, 0x0a, 0x53, 0x40, 0x90, 0xe7, 0x00, 0xbf, 0x4a, 0x73, 0x00, 0x20, - 0x48, 0x73, 0x00, 0x20, 0x49, 0x73, 0x00, 0x20, 0x48, 0x73, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x48, 0x70, 0x47, 0x8c, 0x31, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0x05, 0x4b, 0x05, 0x4a, 0x9b, 0x69, 0x9a, 0x61, 0xff, 0xf7, 0xb1, 0xfd, 0x00, 0x20, - 0xbd, 0xe8, 0x08, 0x40, 0xfd, 0xf7, 0xac, 0xbe, 0x18, 0x16, 0x00, 0x20, 0x60, 0x37, 0x00, 0x08, - 0x10, 0xb5, 0x82, 0xb0, 0xfe, 0xf7, 0xc4, 0xf9, 0x00, 0x24, 0xfd, 0xf7, 0xf1, 0xfa, 0xff, 0xf7, - 0xf7, 0xfb, 0xff, 0xf7, 0x1d, 0xfc, 0xff, 0xf7, 0xdb, 0xff, 0xff, 0xf7, 0x51, 0xfa, 0x08, 0x4b, - 0x00, 0x94, 0x40, 0x22, 0x4f, 0xf4, 0x93, 0x61, 0x06, 0x48, 0xfd, 0xf7, 0x49, 0xfe, 0xfd, 0xf7, - 0x9f, 0xfe, 0x05, 0x48, 0xff, 0xf7, 0x5c, 0xfd, 0x20, 0x46, 0x02, 0xb0, 0x10, 0xbd, 0x00, 0xbf, - 0x01, 0x2f, 0x00, 0x08, 0x50, 0x74, 0x00, 0x20, 0x00, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x49, 0x02, 0x48, 0xff, 0xf7, 0x0c, 0xbd, 0x50, 0x37, 0x00, 0x08, 0xe8, 0x78, 0x00, 0x20, - 0x70, 0xb4, 0x86, 0x07, 0x46, 0xd0, 0x54, 0x1e, 0x00, 0x2a, 0x41, 0xd0, 0xca, 0xb2, 0x03, 0x46, - 0x02, 0xe0, 0x14, 0xf1, 0xff, 0x34, 0x3b, 0xd3, 0x03, 0xf8, 0x01, 0x2b, 0x9d, 0x07, 0xf8, 0xd1, - 0x03, 0x2c, 0x2e, 0xd9, 0xcd, 0xb2, 0x45, 0xea, 0x05, 0x25, 0x0f, 0x2c, 0x45, 0xea, 0x05, 0x45, - 0x19, 0xd9, 0x03, 0xf1, 0x10, 0x02, 0x26, 0x46, 0x10, 0x3e, 0x0f, 0x2e, 0x42, 0xf8, 0x10, 0x5c, - 0x42, 0xf8, 0x0c, 0x5c, 0x42, 0xf8, 0x08, 0x5c, 0x42, 0xf8, 0x04, 0x5c, 0x02, 0xf1, 0x10, 0x02, - 0xf2, 0xd8, 0xa4, 0xf1, 0x10, 0x02, 0x22, 0xf0, 0x0f, 0x02, 0x04, 0xf0, 0x0f, 0x04, 0x10, 0x32, - 0x03, 0x2c, 0x13, 0x44, 0x0d, 0xd9, 0x1e, 0x46, 0x22, 0x46, 0x04, 0x3a, 0x03, 0x2a, 0x46, 0xf8, - 0x04, 0x5b, 0xfa, 0xd8, 0x22, 0x1f, 0x22, 0xf0, 0x03, 0x02, 0x04, 0x32, 0x13, 0x44, 0x04, 0xf0, - 0x03, 0x04, 0x2c, 0xb1, 0xc9, 0xb2, 0x1c, 0x44, 0x03, 0xf8, 0x01, 0x1b, 0x9c, 0x42, 0xfb, 0xd1, - 0x70, 0xbc, 0x70, 0x47, 0x14, 0x46, 0x03, 0x46, 0xc2, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x90, 0x37, 0x00, 0x08, 0xec, 0x79, 0x00, 0x20, 0xec, 0x79, 0x00, 0x20, 0xec, 0x79, 0x00, 0x20, - 0x90, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, - 0x90, 0x37, 0x00, 0x08, 0x00, 0xc0, 0x01, 0x20, 0x00, 0xc0, 0x01, 0x20, 0x00, 0xc0, 0x01, 0x20, - 0x90, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x90, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, - 0x90, 0x37, 0x00, 0x08, 0x00, 0x40, 0x02, 0x40, 0x00, 0x40, 0x02, 0x40, 0x00, 0x40, 0x02, 0x40, - 0x90, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x90, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x2e, 0x2f, 0x43, 0x68, 0x69, 0x62, 0x69, 0x4f, 0x53, 0x33, 0x2f, 0x6f, 0x73, 0x2f, 0x72, - 0x74, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x63, 0x68, 0x73, 0x79, 0x73, 0x2e, 0x63, 0x00, 0x00, 0x00, - 0x69, 0x64, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x53, 0x56, 0x23, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x53, 0x56, 0x23, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x53, 0x56, 0x23, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x53, 0x56, 0x23, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x53, 0x56, 0x23, 0x34, 0x20, 0x6d, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x20, 0x63, - 0x68, 0x53, 0x79, 0x73, 0x4c, 0x6f, 0x63, 0x6b, 0x28, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x53, 0x56, 0x23, 0x36, 0x20, 0x6d, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x20, 0x63, - 0x68, 0x53, 0x79, 0x73, 0x4c, 0x6f, 0x63, 0x6b, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x53, 0x52, 0x28, - 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x53, 0x56, 0x23, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x53, 0x56, 0x23, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x53, 0x56, 0x23, 0x31, 0x30, 0x20, 0x6d, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x20, - 0x49, 0x2d, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x53, 0x56, 0x23, 0x31, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x63, 0x68, 0x56, 0x54, 0x44, 0x6f, 0x53, 0x65, 0x74, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x63, 0x68, 0x56, 0x54, 0x44, 0x6f, 0x52, 0x65, 0x73, 0x65, 0x74, 0x49, 0x00, 0x00, 0x00, 0x00, - 0x63, 0x68, 0x53, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x79, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x63, 0x68, 0x54, 0x68, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x00, 0x00, 0x00, 0x00, - 0x63, 0x68, 0x54, 0x68, 0x64, 0x57, 0x61, 0x69, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x16, 0x80, 0x18, 0x04, 0x04, 0x48, 0x08, 0x0c, 0x10, 0x14, 0x18, - 0x00, 0x1c, 0x1d, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x63, 0x68, 0x4d, 0x74, 0x78, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x69, 0x74, 0x00, - 0x63, 0x68, 0x45, 0x76, 0x74, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, - 0x61, 0x67, 0x73, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x63, 0x68, 0x45, 0x76, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x49, 0x00, 0x00, 0x00, 0x00, - 0x63, 0x68, 0x49, 0x51, 0x52, 0x65, 0x61, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x00, - 0x63, 0x68, 0x4f, 0x51, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x64, 0x49, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x49, 0x00, - 0x21, 0x13, 0x00, 0x08, 0x01, 0x13, 0x00, 0x08, 0x61, 0x13, 0x00, 0x08, 0x41, 0x13, 0x00, 0x08, - 0x51, 0x13, 0x00, 0x08, 0x31, 0x13, 0x00, 0x08, 0x11, 0x13, 0x00, 0x08, 0xf1, 0x12, 0x00, 0x08, - 0x6e, 0x76, 0x69, 0x63, 0x53, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x48, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x72, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x60, 0x02, 0x40, 0x08, 0x60, 0x02, 0x40, 0x00, 0x00, 0x0b, 0x00, 0x28, 0x60, 0x02, 0x40, - 0x08, 0x60, 0x02, 0x40, 0x06, 0x01, 0x0c, 0x00, 0x40, 0x60, 0x02, 0x40, 0x08, 0x60, 0x02, 0x40, - 0x10, 0x02, 0x0d, 0x00, 0x58, 0x60, 0x02, 0x40, 0x08, 0x60, 0x02, 0x40, 0x16, 0x03, 0x0e, 0x00, - 0x70, 0x60, 0x02, 0x40, 0x0c, 0x60, 0x02, 0x40, 0x00, 0x04, 0x0f, 0x00, 0x88, 0x60, 0x02, 0x40, - 0x0c, 0x60, 0x02, 0x40, 0x06, 0x05, 0x10, 0x00, 0xa0, 0x60, 0x02, 0x40, 0x0c, 0x60, 0x02, 0x40, - 0x10, 0x06, 0x11, 0x00, 0xb8, 0x60, 0x02, 0x40, 0x0c, 0x60, 0x02, 0x40, 0x16, 0x07, 0x2f, 0x00, - 0x10, 0x64, 0x02, 0x40, 0x08, 0x64, 0x02, 0x40, 0x00, 0x08, 0x38, 0x00, 0x28, 0x64, 0x02, 0x40, - 0x08, 0x64, 0x02, 0x40, 0x06, 0x09, 0x39, 0x00, 0x40, 0x64, 0x02, 0x40, 0x08, 0x64, 0x02, 0x40, - 0x10, 0x0a, 0x3a, 0x00, 0x58, 0x64, 0x02, 0x40, 0x08, 0x64, 0x02, 0x40, 0x16, 0x0b, 0x3b, 0x00, - 0x70, 0x64, 0x02, 0x40, 0x0c, 0x64, 0x02, 0x40, 0x00, 0x0c, 0x3c, 0x00, 0x88, 0x64, 0x02, 0x40, - 0x0c, 0x64, 0x02, 0x40, 0x06, 0x0d, 0x44, 0x00, 0xa0, 0x64, 0x02, 0x40, 0x0c, 0x64, 0x02, 0x40, - 0x10, 0x0e, 0x45, 0x00, 0xb8, 0x64, 0x02, 0x40, 0x0c, 0x64, 0x02, 0x40, 0x16, 0x0f, 0x46, 0x00, - 0x00, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xaa, 0xa0, 0x2a, 0x00, 0x00, 0x00, 0x00, 0xff, 0xab, 0xff, 0xff, 0x54, 0x00, 0x01, 0x40, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x56, 0x55, 0x00, 0xaa, 0x0a, 0x00, 0x80, 0x20, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x15, 0x85, 0xaa, 0xaa, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, 0xa8, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, - 0x55, 0x50, 0x55, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x54, 0x75, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x75, 0x64, 0x69, 0x6f, 0x20, 0x6f, 0x76, 0x65, 0x72, - 0x20, 0x55, 0x53, 0x41, 0x52, 0x54, 0x00, 0x00, 0x74, 0x75, 0x6e, 0x65, 0x72, 0x73, 0x74, 0x75, - 0x64, 0x69, 0x6f, 0x20, 0x72, 0x78, 0x00, 0x00, 0x74, 0x75, 0x6e, 0x65, 0x72, 0x73, 0x74, 0x75, - 0x64, 0x69, 0x6f, 0x20, 0x74, 0x78, 0x00, 0x00, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x53, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x21, 0x21, 0x20, 0x4e, 0x4f, 0x54, 0x20, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, - 0x20, 0x25, 0x64, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x25, 0x64, 0x20, 0x21, 0x21, - 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x50, 0x41, 0x00, 0x00, 0x50, 0x42, 0x00, 0x00, 0x50, 0x43, 0x00, 0x00, 0x50, 0x44, 0x00, 0x00, - 0x50, 0x45, 0x00, 0x00, 0x50, 0x48, 0x00, 0x00, 0x50, 0x46, 0x00, 0x00, 0x75, 0x6e, 0x6b, 0x6e, - 0x6f, 0x77, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x35, 0x00, 0x08, 0x2c, 0x36, 0x00, 0x08, 0x30, 0x36, 0x00, 0x08, 0x34, 0x36, 0x00, 0x08, - 0x38, 0x36, 0x00, 0x08, 0x3c, 0x36, 0x00, 0x08, 0x40, 0x36, 0x00, 0x08, 0x44, 0x36, 0x00, 0x08, - 0x48, 0x36, 0x00, 0x08, 0x4c, 0x36, 0x00, 0x08, 0x50, 0x36, 0x00, 0x08, 0x54, 0x36, 0x00, 0x08, - 0xe4, 0x35, 0x00, 0x08, 0x00, 0x36, 0x00, 0x08, 0x04, 0x36, 0x00, 0x08, 0x08, 0x36, 0x00, 0x08, - 0x0c, 0x36, 0x00, 0x08, 0x10, 0x36, 0x00, 0x08, 0x14, 0x36, 0x00, 0x08, 0x18, 0x36, 0x00, 0x08, - 0x1c, 0x36, 0x00, 0x08, 0x20, 0x36, 0x00, 0x08, 0x24, 0x36, 0x00, 0x08, 0x28, 0x36, 0x00, 0x08, - 0x63, 0x31, 0x00, 0x00, 0x69, 0x31, 0x00, 0x00, 0x64, 0x69, 0x7a, 0x7a, 0x79, 0x00, 0x00, 0x00, - 0x74, 0x61, 0x63, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x69, 0x32, 0x00, 0x00, 0x69, 0x33, 0x00, 0x00, 0x69, 0x34, 0x00, 0x00, 0x69, 0x35, 0x00, 0x00, - 0x69, 0x36, 0x00, 0x00, 0x69, 0x37, 0x00, 0x00, 0x69, 0x38, 0x00, 0x00, 0x6a, 0x39, 0x00, 0x00, - 0x69, 0x41, 0x00, 0x00, 0x69, 0x42, 0x00, 0x00, 0x69, 0x43, 0x00, 0x00, 0x63, 0x32, 0x00, 0x00, - 0x63, 0x33, 0x00, 0x00, 0x63, 0x34, 0x00, 0x00, 0x63, 0x35, 0x00, 0x00, 0x63, 0x36, 0x00, 0x00, - 0x63, 0x37, 0x00, 0x00, 0x63, 0x38, 0x00, 0x00, 0x63, 0x39, 0x00, 0x00, 0x63, 0x41, 0x00, 0x00, - 0x63, 0x42, 0x00, 0x00, 0x63, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x69, 0x6f, 0x5f, 0x70, 0x69, 0x6e, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x62, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x69, - 0x6e, 0x5f, 0x65, 0x3a, 0x20, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x40, 0x00, 0x04, 0x02, 0x40, 0x00, 0x08, 0x02, 0x40, 0x00, 0x0c, 0x02, 0x40, - 0x00, 0x10, 0x02, 0x40, 0x00, 0x14, 0x02, 0x40, 0x00, 0x18, 0x02, 0x40, 0x00, 0x1c, 0x02, 0x40, - 0x25, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x25, 0x73, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x69, 0x6e, 0x20, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x00, 0x00, 0x25, 0x73, 0x25, 0x64, - 0x20, 0x72, 0x65, 0x71, 0x20, 0x62, 0x79, 0x20, 0x25, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, - 0x62, 0x79, 0x20, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x66, 0x75, 0x4a, 0x75, 0x6d, 0x70, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x20, 0x46, 0x41, 0x49, - 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x31, 0x00, 0x02, 0x11, 0x21, 0x31, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x6f, 0x6f, 0x74, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x02, 0x00, 0x10, 0x08, 0x00, 0x00, 0x10, 0x64, 0x00, 0x00, 0x00, -}; - -#endif /* BOOTLOADER_GENERATED_HXX_ */ - diff --git a/firmware/bootloader/bootloader_storage.c b/firmware/bootloader/bootloader_storage.c deleted file mode 100644 index 2de72b188a..0000000000 --- a/firmware/bootloader/bootloader_storage.c +++ /dev/null @@ -1,24 +0,0 @@ - -#include "bootloader/bootloader.h" - -#include - -#if defined(EFI_BOOTLOADER_INCLUDE_CODE) - -#if defined __GNUC__ -#define BOOTLOADER_SECTION __attribute__((section(".bl"))) /* todo: add 'used'? */ -#else -#define BOOTLOADER_SECTION @ ".bl" -#endif - -#include - -int initBootloader(void) { - // just make sure we use 'bootloader_code' array - // We're forcing the array to be included into the linked binary. - // The first 4 bytes contain a 32-bit address in RAM, which always starts from 0x20000000 for STM32. - // So the bootloader_code[3] is the most significant byte of the address which equals to 0x20. - return (bootloader_code[3] == 0x20) ? 0 : 1; /* todo: should always be 0x20? */ -} - -#endif /* EFI_BOOTLOADER_INCLUDE_CODE */ diff --git a/firmware/bootloader/clean_bootloader.sh b/firmware/bootloader/clean_bootloader.sh deleted file mode 100644 index 8bef1b6a78..0000000000 --- a/firmware/bootloader/clean_bootloader.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -make -f src/Makefile clean diff --git a/firmware/bootloader/openblt_chibios/flash.h b/firmware/bootloader/openblt_chibios/flash.h new file mode 100644 index 0000000000..db1b88d9c7 --- /dev/null +++ b/firmware/bootloader/openblt_chibios/flash.h @@ -0,0 +1,45 @@ +/************************************************************************************//** +* \file Source/_template/flash.h +* \brief Bootloader flash driver header file. +* \ingroup Target__template_flash +* \internal +*---------------------------------------------------------------------------------------- +* C O P Y R I G H T +*---------------------------------------------------------------------------------------- +* Copyright (c) 2019 by Feaser http://www.feaser.com All rights reserved +* +*---------------------------------------------------------------------------------------- +* L I C E N S E +*---------------------------------------------------------------------------------------- +* This file is part of OpenBLT. OpenBLT 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 3 of the License, or (at your option) any later +* version. +* +* OpenBLT 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 have received a copy of the GNU General Public License along with OpenBLT. It +* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy. +* +* \endinternal +****************************************************************************************/ +#ifndef FLASH_H +#define FLASH_H + +/**************************************************************************************** +* Function prototypes +****************************************************************************************/ +void FlashInit(void); +void FlashReinit(void); +blt_bool FlashWrite(blt_addr addr, blt_int32u len, blt_int8u *data); +blt_bool FlashErase(blt_addr addr, blt_int32u len); +blt_bool FlashWriteChecksum(void); +blt_bool FlashVerifyChecksum(void); +blt_bool FlashDone(void); +blt_addr FlashGetUserProgBaseAddress(void); + + +#endif /* FLASH_H */ +/*********************************** end of flash.h ************************************/ diff --git a/firmware/bootloader/openblt_chibios/nvm.c b/firmware/bootloader/openblt_chibios/nvm.c new file mode 100644 index 0000000000..4243170776 --- /dev/null +++ b/firmware/bootloader/openblt_chibios/nvm.c @@ -0,0 +1,257 @@ +/************************************************************************************//** +* \file Source/_template/nvm.c +* \brief Bootloader non-volatile memory driver source file. +* \ingroup Target__template_nvm +* \internal +*---------------------------------------------------------------------------------------- +* C O P Y R I G H T +*---------------------------------------------------------------------------------------- +* Copyright (c) 2019 by Feaser http://www.feaser.com All rights reserved +* +*---------------------------------------------------------------------------------------- +* L I C E N S E +*---------------------------------------------------------------------------------------- +* This file is part of OpenBLT. OpenBLT 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 3 of the License, or (at your option) any later +* version. +* +* OpenBLT 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 have received a copy of the GNU General Public License along with OpenBLT. It +* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy. +* +* \endinternal +****************************************************************************************/ + +/************************************************************************************//** +* \defgroup Target__template_nvm Non-volatile memory driver of a port +* \brief This module implements the non-volatile memory driver of a microcontroller +* port. Note that the default implementation if for a microcontroller that +* has internal flash memory. At the time of this writing pretty much all +* microcontrollers use flash EEPROM as non-volatile memory to store the +* program code. Assuming that this is also the case for the microcontroller +* for which the port is developed, nothing needs to be modified in this +* source file. +* \ingroup Target__template +****************************************************************************************/ + +/**************************************************************************************** +* Include files +****************************************************************************************/ +#include "boot.h" /* bootloader generic header */ +#include "flash.h" + + +/**************************************************************************************** +* Hook functions +****************************************************************************************/ +#if (BOOT_NVM_HOOKS_ENABLE > 0) +extern void NvmInitHook(void); +extern void NvmReinitHook(void); +extern blt_int8u NvmWriteHook(blt_addr addr, blt_int32u len, blt_int8u *data); +extern blt_int8u NvmEraseHook(blt_addr addr, blt_int32u len); +extern blt_bool NvmDoneHook(void); +#endif + +#if (BOOT_NVM_CHECKSUM_HOOKS_ENABLE > 0) +extern blt_bool NvmWriteChecksumHook(void); +extern blt_bool NvmVerifyChecksumHook(void); +#endif + + +/************************************************************************************//** +** \brief Initializes the NVM driver. +** \return none. +** +****************************************************************************************/ +void NvmInit(void) +{ +#if (BOOT_NVM_HOOKS_ENABLE > 0) + /* give the application a chance to initialize a driver for operating on NVM + * that is not by default supported by this driver. + */ + NvmInitHook(); +#endif + + /* init the internal driver */ + FlashInit(); +} /*** end of NvmInit ***/ + + +/************************************************************************************//** +** \brief Reinitializes the NVM driver. This function is called at the start of each +** firmware update as opposed to NvmInit, which is only called once during +** power on. +** \return none. +** +****************************************************************************************/ +void NvmReinit(void) +{ +#if (BOOT_NVM_HOOKS_ENABLE > 0) + /* give the application a chance to re-initialize a driver for operating on NVM + * that is not by default supported by this driver. + */ + NvmReinitHook(); +#endif + + /* reinitialize the internal driver */ + FlashReinit(); +} /*** end of NvmReinit ***/ + + +/************************************************************************************//** +** \brief Programs the non-volatile memory. +** \param addr Start address. +** \param len Length in bytes. +** \param data Pointer to the data buffer. +** \return BLT_TRUE if successful, BLT_FALSE otherwise. +** +****************************************************************************************/ +blt_bool NvmWrite(blt_addr addr, blt_int32u len, blt_int8u *data) +{ +#if (BOOT_NVM_HOOKS_ENABLE > 0) + blt_int8u result = BLT_NVM_NOT_IN_RANGE; +#endif + +#if (BOOT_NVM_HOOKS_ENABLE > 0) + /* give the application a chance to operate on memory that is not by default supported + * by this driver. + */ + result = NvmWriteHook(addr, len, data); + + /* process the return code */ + if (result == BLT_NVM_OKAY) + { + /* data was within range of the additionally supported memory and succesfully + * programmed, so we are all done. + */ + return BLT_TRUE; + } + else if (result == BLT_NVM_ERROR) + { + /* data was within range of the additionally supported memory and attempted to be + * programmed, but an error occurred, so we can't continue. + */ + return BLT_FALSE; + } +#endif + + /* still here so the internal driver should try and perform the program operation */ + return FlashWrite(addr, len, data); +} /*** end of NvmWrite ***/ + + +/************************************************************************************//** +** \brief Erases the non-volatile memory. +** \param addr Start address. +** \param len Length in bytes. +** \return BLT_TRUE if successful, BLT_FALSE otherwise. +** +****************************************************************************************/ +blt_bool NvmErase(blt_addr addr, blt_int32u len) +{ +#if (BOOT_NVM_HOOKS_ENABLE > 0) + blt_int8u result = BLT_NVM_NOT_IN_RANGE; +#endif + +#if (BOOT_NVM_HOOKS_ENABLE > 0) + /* give the application a chance to operate on memory that is not by default supported + * by this driver. + */ + result = NvmEraseHook(addr, len); + + /* process the return code */ + if (result == BLT_NVM_OKAY) + { + /* address was within range of the additionally supported memory and succesfully + * erased, so we are all done. + */ + return BLT_TRUE; + } + else if (result == BLT_NVM_ERROR) + { + /* address was within range of the additionally supported memory and attempted to be + * erased, but an error occurred, so we can't continue. + */ + return BLT_FALSE; + } +#endif + + /* still here so the internal driver should try and perform the erase operation */ + return FlashErase(addr, len); +} /*** end of NvmErase ***/ + + +/************************************************************************************//** +** \brief Verifies the checksum, which indicates that a valid user program is +** present and can be started. +** \return BLT_TRUE if successful, BLT_FALSE otherwise. +** +****************************************************************************************/ +blt_bool NvmVerifyChecksum(void) +{ +#if (BOOT_NVM_CHECKSUM_HOOKS_ENABLE > 0) + /* check checksum using the application specific method. */ + return NvmVerifyChecksumHook(); +#else + /* check checksum using the interally supported method. */ + return FlashVerifyChecksum(); +#endif +} /*** end of NvmVerifyChecksum ***/ + + +/************************************************************************************//** +** \brief Obtains the base address of the non-volatile memory available to the user +** program. This is typically that start of the vector table. +** \return Base address. +** +****************************************************************************************/ +blt_addr NvmGetUserProgBaseAddress(void) +{ + return FlashGetUserProgBaseAddress(); +} /*** end of NvmGetUserProgBaseAddress ***/ + + +/************************************************************************************//** +** \brief Once all erase and programming operations are completed, this +** function is called, so at the end of the programming session and +** right before a software reset is performed. It is used to calculate +** a checksum and program this into flash. This checksum is later used +** to determine if a valid user program is present in flash. +** \return BLT_TRUE if successful, BLT_FALSE otherwise. +** +****************************************************************************************/ +blt_bool NvmDone(void) +{ +#if (BOOT_NVM_HOOKS_ENABLE > 0) + /* give the application's NVM driver a chance to finish up */ + if (NvmDoneHook() == BLT_FALSE) + { + /* error so no need to continue */ + return BLT_FALSE; + } +#endif + +#if (BOOT_NVM_CHECKSUM_HOOKS_ENABLE > 0) + /* compute and write checksum, using the application specific method. */ + if (NvmWriteChecksumHook() == BLT_FALSE) + { + return BLT_FALSE; + } +#else + /* compute and write checksum, which is programmed by the internal driver. */ + if (FlashWriteChecksum() == BLT_FALSE) + { + return BLT_FALSE; + } +#endif + + /* finish up internal driver operations */ + return FlashDone(); +} /*** end of NvmDone ***/ + + +/*********************************** end of nvm.c **************************************/ diff --git a/firmware/bootloader/openblt_chibios/openblt_chibios.cpp b/firmware/bootloader/openblt_chibios/openblt_chibios.cpp new file mode 100644 index 0000000000..9d1f624cbd --- /dev/null +++ b/firmware/bootloader/openblt_chibios/openblt_chibios.cpp @@ -0,0 +1,96 @@ +#include "pch.h" + +extern "C" { + #include "boot.h" + #include "flash.h" +} + +void CpuInit() { } +void CopInit() { } + +void TimerInit() { } +void TimerReset() { } + +void CopService() { } +void TimerUpdate() { } + +blt_int32u TimerGet() { + return 0; +} + +void CpuMemCopy(blt_addr dest, blt_addr src, blt_int16u len) +{ + memcpy((void*)dest, (void*)src, len); +} + +/** \brief Pointer to the user program's reset vector. */ +#define CPU_USER_PROGRAM_STARTADDR_PTR ((blt_addr)(NvmGetUserProgBaseAddress() + 0x00000004)) +/** \brief Pointer to the user program's vector table. */ +#define CPU_USER_PROGRAM_VECTABLE_OFFSET ((blt_int32u)NvmGetUserProgBaseAddress()) + +void CpuStartUserProgram(void) +{ + void (*pProgResetHandler)(void); + + /* check if a user program is present by verifying the checksum */ + if (NvmVerifyChecksum() == BLT_FALSE) + { +#if (BOOT_COM_DEFERRED_INIT_ENABLE > 0) && (BOOT_COM_ENABLE > 0) + /* bootloader will stay active so perform deferred initialization to make sure + * the communication interface that were not yet initialized are now initialized. + * this is needed to make sure firmware updates via these communication interfaces + * will be possible. + */ + ComDeferredInit(); +#endif + /* not a valid user program so it cannot be started */ + return; + } +#if (BOOT_CPU_USER_PROGRAM_START_HOOK > 0) + /* invoke callback */ + if (CpuUserProgramStartHook() == BLT_FALSE) + { + #if (BOOT_COM_DEFERRED_INIT_ENABLE > 0) && (BOOT_COM_ENABLE > 0) + /* bootloader will stay active so perform deferred initialization to make sure + * the communication interface that were not yet initialized are now initialized. + * this is needed to make sure firmware updates via these communication interfaces + * will be possible. + */ + ComDeferredInit(); + #endif + /* callback requests the user program to not be started */ + return; + } +#endif +#if (BOOT_COM_ENABLE > 0) + /* release the communication interface */ + ComFree(); +#endif + /* reset the HAL */ + chSysDisable(); + /* reset the timer */ + TimerReset(); + /* remap user program's vector table */ + SCB->VTOR = CPU_USER_PROGRAM_VECTABLE_OFFSET & (blt_int32u)0x1FFFFF80; + /* set the address where the bootloader needs to jump to. this is the address of + * the 2nd entry in the user program's vector table. this address points to the + * user program's reset handler. + */ + pProgResetHandler = (void(*)(void))(*((blt_addr *)CPU_USER_PROGRAM_STARTADDR_PTR)); + /* The Cortex-M4 core has interrupts enabled out of reset. the bootloader + * explicitly disables these for security reasons. Enable them here again, so it does + * not have to be done by the user program. + */ + /* start the user program by activating its reset interrupt service routine */ + pProgResetHandler(); +#if (BOOT_COM_DEFERRED_INIT_ENABLE > 0) && (BOOT_COM_ENABLE > 0) + /* theoretically, the code never gets here because the user program should now be + * running and the previous function call should not return. In case it did return + * for whatever reason, make sure all communication interfaces are initialized so that + * firmware updates can be started. + */ + ComDeferredInit(); +#endif +} /*** end of CpuStartUserProgram ***/ + + diff --git a/firmware/bootloader/openblt_chibios/openblt_flash.cpp b/firmware/bootloader/openblt_chibios/openblt_flash.cpp new file mode 100644 index 0000000000..934b35f95c --- /dev/null +++ b/firmware/bootloader/openblt_chibios/openblt_flash.cpp @@ -0,0 +1,40 @@ +#include "pch.h" +#include "flash_int.h" + +extern "C" { + #include "boot.h" + #include "flash.h" +} + +void FlashInit() { } + +blt_bool FlashVerifyChecksum() { + // Naive check: if the first block is blank, there's no code there + return intFlashIsErased(FlashGetUserProgBaseAddress(), 4) ? BLT_FALSE : BLT_TRUE; +} + +blt_addr FlashGetUserProgBaseAddress() { + return 0x08008000; +} + +blt_bool FlashWrite(blt_addr addr, blt_int32u len, blt_int8u *data) { + return (FLASH_RETURN_SUCCESS == intFlashWrite(addr, (const char*)data, len)) ? BLT_TRUE : BLT_FALSE; + + return BLT_TRUE; +} + +blt_bool FlashErase(blt_addr addr, blt_int32u len) { + if (!intFlashIsErased(addr, len)) { + return (FLASH_RETURN_SUCCESS == intFlashErase(addr, len)) ? BLT_TRUE : BLT_FALSE; + } + + return BLT_TRUE; +} + +blt_bool FlashDone() { + return BLT_TRUE; +} + +blt_bool FlashWriteChecksum() { + return BLT_TRUE; +} diff --git a/firmware/bootloader/openblt_chibios/openblt_usb.cpp b/firmware/bootloader/openblt_chibios/openblt_usb.cpp new file mode 100644 index 0000000000..469f74d41b --- /dev/null +++ b/firmware/bootloader/openblt_chibios/openblt_usb.cpp @@ -0,0 +1,130 @@ +#include "pch.h" +#include "usbcfg.h" +#include "usbconsole.h" + +extern "C" { + #include "boot.h" + #include "rs232.h" +} + +void Rs232Init() { + // Set up USB serial + usb_serial_start(); +} + +#define RS232_CTO_RX_PACKET_TIMEOUT_MS (100u) + +static blt_bool Rs232ReceiveByte(blt_int8u *data); +static void Rs232TransmitByte(blt_int8u data); + +/************************************************************************************//** +** \brief Transmits a packet formatted for the communication interface. +** \param data Pointer to byte array with data that it to be transmitted. +** \param len Number of bytes that are to be transmitted. +** \return none. +** +****************************************************************************************/ +void Rs232TransmitPacket(blt_int8u *data, blt_int8u len) +{ + blt_int16u data_index; + + /* verify validity of the len-paramenter */ + // ASSERT_RT(len <= BOOT_COM_RS232_TX_MAX_DATA); + + /* first transmit the length of the packet */ + Rs232TransmitByte(len); + + /* transmit all the packet bytes one-by-one */ + for (data_index = 0; data_index < len; data_index++) + { + /* keep the watchdog happy */ + CopService(); + /* write byte */ + Rs232TransmitByte(data[data_index]); + } +} /*** end of Rs232TransmitPacket ***/ + +/************************************************************************************//** +** \brief Receives a communication interface packet if one is present. +** \param data Pointer to byte array where the data is to be stored. +** \param len Pointer where the length of the packet is to be stored. +** \return BLT_TRUE if a packet was received, BLT_FALSE otherwise. +** +****************************************************************************************/ +blt_bool Rs232ReceivePacket(blt_int8u *data, blt_int8u *len) +{ + static blt_int8u xcpCtoReqPacket[BOOT_COM_RS232_RX_MAX_DATA+1]; /* one extra for length */ + static blt_int8u xcpCtoRxLength; + static blt_bool xcpCtoRxInProgress = BLT_FALSE; + static blt_int32u xcpCtoRxStartTime = 0; + + /* start of cto packet received? */ + if (xcpCtoRxInProgress == BLT_FALSE) + { + /* store the message length when received */ + if (Rs232ReceiveByte(&xcpCtoReqPacket[0]) == BLT_TRUE) + { + if ( (xcpCtoReqPacket[0] > 0) && + (xcpCtoReqPacket[0] <= BOOT_COM_RS232_RX_MAX_DATA) ) + { + /* store the start time */ + xcpCtoRxStartTime = TimerGet(); + /* reset packet data count */ + xcpCtoRxLength = 0; + /* indicate that a cto packet is being received */ + xcpCtoRxInProgress = BLT_TRUE; + } + } + } + else + { + /* store the next packet byte */ + if (Rs232ReceiveByte(&xcpCtoReqPacket[xcpCtoRxLength+1]) == BLT_TRUE) + { + /* increment the packet data count */ + xcpCtoRxLength++; + + /* check to see if the entire packet was received */ + if (xcpCtoRxLength == xcpCtoReqPacket[0]) + { + /* copy the packet data */ + CpuMemCopy((blt_int32u)data, (blt_int32u)&xcpCtoReqPacket[1], xcpCtoRxLength); + /* done with cto packet reception */ + xcpCtoRxInProgress = BLT_FALSE; + /* set the packet length */ + *len = xcpCtoRxLength; + /* packet reception complete */ + return BLT_TRUE; + } + } + else + { + /* check packet reception timeout */ + if (TimerGet() > (xcpCtoRxStartTime + RS232_CTO_RX_PACKET_TIMEOUT_MS)) + { + /* cancel cto packet reception due to timeout. note that that automaticaly + * discards the already received packet bytes, allowing the host to retry. + */ + xcpCtoRxInProgress = BLT_FALSE; + } + } + } + /* packet reception not yet complete */ + return BLT_FALSE; +} /*** end of Rs232ReceivePacket ***/ + +static blt_bool Rs232ReceiveByte(blt_int8u *data) +{ + if (!is_usb_serial_ready()) { + return BLT_FALSE; + } + + auto bytesRead = chnReadTimeout(&SDU1, data, 1, TIME_IMMEDIATE); + + return bytesRead == 0 ? BLT_FALSE : BLT_TRUE; +} + +static void Rs232TransmitByte(blt_int8u data) +{ + chnWriteTimeout(&SDU1, &data, 1, TIME_INFINITE); +} diff --git a/firmware/bootloader/openblt_chibios/types.h b/firmware/bootloader/openblt_chibios/types.h new file mode 100644 index 0000000000..d49c592c97 --- /dev/null +++ b/firmware/bootloader/openblt_chibios/types.h @@ -0,0 +1,58 @@ +/************************************************************************************//** +* \file Source/ARMCM4_STM32F4/types.h +* \brief Bootloader types header file. +* \ingroup Target_ARMCM4_STM32F4 +* \internal +*---------------------------------------------------------------------------------------- +* C O P Y R I G H T +*---------------------------------------------------------------------------------------- +* Copyright (c) 2013 by Feaser http://www.feaser.com All rights reserved +* +*---------------------------------------------------------------------------------------- +* L I C E N S E +*---------------------------------------------------------------------------------------- +* This file is part of OpenBLT. OpenBLT 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 3 of the License, or (at your option) any later +* version. +* +* OpenBLT 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 have received a copy of the GNU General Public License along with OpenBLT. It +* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy. +* +* \endinternal +****************************************************************************************/ +#ifndef TYPES_H +#define TYPES_H + + +/**************************************************************************************** +* Macro definitions +****************************************************************************************/ +/** \brief Boolean true value. */ +#define BLT_TRUE (1) +/** \brief Boolean false value. */ +#define BLT_FALSE (0) +/** \brief NULL pointer value. */ +#define BLT_NULL ((void *)0) + + +/**************************************************************************************** +* Type definitions +****************************************************************************************/ +typedef unsigned char blt_bool; /**< boolean type */ +typedef char blt_char; /**< character type */ +typedef unsigned long blt_addr; /**< memory address type */ +typedef unsigned char blt_int8u; /**< 8-bit unsigned integer */ +typedef signed char blt_int8s; /**< 8-bit signed integer */ +typedef unsigned short blt_int16u; /**< 16-bit unsigned integer */ +typedef signed short blt_int16s; /**< 16-bit signed integer */ +typedef unsigned int blt_int32u; /**< 32-bit unsigned integer */ +typedef signed int blt_int32s; /**< 32-bit signed integer */ + + +#endif /* TYPES_H */ +/*********************************** end of types.h ************************************/ diff --git a/firmware/bootloader/prometheus/405/bootloader_generated.hxx b/firmware/bootloader/prometheus/405/bootloader_generated.hxx deleted file mode 100644 index e50185e1dd..0000000000 --- a/firmware/bootloader/prometheus/405/bootloader_generated.hxx +++ /dev/null @@ -1,958 +0,0 @@ -// This file was generated by Bin2Header -// Fri Mar 22 17:06:33 EET 2019 -#ifndef BOOTLOADER_GENERATED_HXX_ -#define BOOTLOADER_GENERATED_HXX_ - -static const volatile uint8_t bootloader_code[] BOOTLOADER_SECTION = { - 0x00, 0x10, 0x00, 0x20, 0x11, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x71, 0x0f, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x61, 0x1f, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x11, 0x13, 0x00, 0x08, 0x61, 0x13, 0x00, 0x08, - 0xc1, 0x13, 0x00, 0x08, 0x21, 0x14, 0x00, 0x08, 0x81, 0x14, 0x00, 0x08, 0x31, 0x19, 0x00, 0x08, - 0x61, 0x19, 0x00, 0x08, 0xa1, 0x19, 0x00, 0x08, 0xe1, 0x19, 0x00, 0x08, 0x21, 0x1a, 0x00, 0x08, - 0x51, 0x1a, 0x00, 0x08, 0x91, 0x1a, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0xe1, 0x14, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x01, 0x16, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0xd1, 0x1a, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x51, 0x21, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x11, 0x1b, 0x00, 0x08, 0x41, 0x1b, 0x00, 0x08, 0x81, 0x1b, 0x00, 0x08, 0xc1, 0x1b, 0x00, 0x08, - 0x01, 0x1c, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x31, 0x1c, 0x00, 0x08, 0x71, 0x1c, 0x00, 0x08, 0xb1, 0x1c, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0xb1, 0x2d, 0x00, 0x08, 0x11, 0x2f, 0x00, 0x08, 0x21, 0x30, 0x00, 0x08, 0xe1, 0x35, 0x00, 0x08, - 0x72, 0xb6, 0x39, 0x48, 0x80, 0xf3, 0x08, 0x88, 0x38, 0x48, 0x80, 0xf3, 0x09, 0x88, 0x38, 0x48, - 0x4e, 0xf6, 0x08, 0x51, 0xce, 0xf2, 0x00, 0x01, 0x08, 0x60, 0x40, 0xf2, 0x00, 0x00, 0xcc, 0xf2, - 0x00, 0x00, 0x4e, 0xf6, 0x34, 0x71, 0xce, 0xf2, 0x00, 0x01, 0x08, 0x60, 0xbf, 0xf3, 0x4f, 0x8f, - 0xbf, 0xf3, 0x6f, 0x8f, 0x40, 0xf2, 0x00, 0x00, 0xc0, 0xf2, 0xf0, 0x00, 0x4e, 0xf6, 0x88, 0x51, - 0xce, 0xf2, 0x00, 0x01, 0x08, 0x60, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0x4f, 0xf0, - 0x00, 0x00, 0xe1, 0xee, 0x10, 0x0a, 0x4e, 0xf6, 0x3c, 0x71, 0xce, 0xf2, 0x00, 0x01, 0x08, 0x60, - 0x06, 0x20, 0x80, 0xf3, 0x14, 0x88, 0xbf, 0xf3, 0x6f, 0x8f, 0x00, 0xf0, 0x19, 0xf9, 0x02, 0xf0, - 0x0f, 0xf9, 0x4f, 0xf0, 0x55, 0x30, 0x1f, 0x49, 0x1b, 0x4a, 0x91, 0x42, 0x3c, 0xbf, 0x41, 0xf8, - 0x04, 0x0b, 0xfa, 0xe7, 0x1c, 0x49, 0x19, 0x4a, 0x91, 0x42, 0x3c, 0xbf, 0x41, 0xf8, 0x04, 0x0b, - 0xfa, 0xe7, 0x1a, 0x49, 0x1a, 0x4a, 0x1b, 0x4b, 0x9a, 0x42, 0x3e, 0xbf, 0x51, 0xf8, 0x04, 0x0b, - 0x42, 0xf8, 0x04, 0x0b, 0xf8, 0xe7, 0x00, 0x20, 0x17, 0x49, 0x18, 0x4a, 0x91, 0x42, 0x3c, 0xbf, - 0x41, 0xf8, 0x04, 0x0b, 0xfa, 0xe7, 0x00, 0xf0, 0x0b, 0xf9, 0x00, 0xf0, 0xf9, 0xf8, 0x14, 0x4c, - 0x14, 0x4d, 0xac, 0x42, 0x03, 0xda, 0x54, 0xf8, 0x04, 0x1b, 0x88, 0x47, 0xf9, 0xe7, 0x03, 0xf0, - 0x67, 0xf9, 0x11, 0x4c, 0x11, 0x4d, 0xac, 0x42, 0x03, 0xda, 0x54, 0xf8, 0x04, 0x1b, 0x88, 0x47, - 0xf9, 0xe7, 0x00, 0xf0, 0xed, 0xb8, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x16, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x20, 0x04, 0x3b, 0x00, 0x08, - 0x00, 0x16, 0x00, 0x20, 0x34, 0x16, 0x00, 0x20, 0x38, 0x16, 0x00, 0x20, 0xbc, 0xbb, 0x00, 0x20, - 0xe0, 0x01, 0x00, 0x08, 0xf0, 0x01, 0x00, 0x08, 0xf0, 0x01, 0x00, 0x08, 0xf0, 0x01, 0x00, 0x08, - 0x6e, 0xe7, 0x00, 0xf0, 0x00, 0xf8, 0xfe, 0xe7, 0x2d, 0xe9, 0xf0, 0x4f, 0x2d, 0xed, 0x10, 0x8a, - 0xc1, 0xf8, 0x0c, 0xd0, 0xc3, 0x68, 0x9d, 0x46, 0xbd, 0xec, 0x10, 0x8a, 0xbd, 0xe8, 0xf0, 0x8f, - 0x00, 0xf0, 0xc6, 0xf9, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x28, 0x46, 0xa0, 0x47, 0x00, 0x20, - 0x00, 0xf0, 0xd6, 0xfc, 0x00, 0xf0, 0xac, 0xf9, 0x00, 0xf0, 0x92, 0xfb, 0x00, 0xf0, 0xb8, 0xf9, - 0x00, 0xdf, 0xfe, 0xe7, 0x84, 0x46, 0x41, 0xea, 0x00, 0x03, 0x13, 0xf0, 0x03, 0x03, 0x6d, 0xd1, - 0x40, 0x3a, 0x41, 0xd3, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x40, 0x3a, 0xbd, 0xd2, 0x30, 0x32, 0x11, 0xd3, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x10, 0x3a, 0xed, 0xd2, - 0x0c, 0x32, 0x05, 0xd3, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x04, 0x3a, 0xf9, 0xd2, - 0x04, 0x32, 0x08, 0xd0, 0xd2, 0x07, 0x1c, 0xbf, 0x11, 0xf8, 0x01, 0x3b, 0x00, 0xf8, 0x01, 0x3b, - 0x01, 0xd3, 0x0b, 0x88, 0x03, 0x80, 0x60, 0x46, 0x70, 0x47, 0x00, 0xbf, 0x08, 0x2a, 0x13, 0xd3, - 0x8b, 0x07, 0x8d, 0xd0, 0x10, 0xf0, 0x03, 0x03, 0x8a, 0xd0, 0xc3, 0xf1, 0x04, 0x03, 0xd2, 0x1a, - 0xdb, 0x07, 0x1c, 0xbf, 0x11, 0xf8, 0x01, 0x3b, 0x00, 0xf8, 0x01, 0x3b, 0x80, 0xd3, 0x31, 0xf8, - 0x02, 0x3b, 0x20, 0xf8, 0x02, 0x3b, 0x7b, 0xe7, 0x04, 0x3a, 0xd9, 0xd3, 0x01, 0x3a, 0x11, 0xf8, - 0x01, 0x3b, 0x00, 0xf8, 0x01, 0x3b, 0xf9, 0xd2, 0x0b, 0x78, 0x03, 0x70, 0x4b, 0x78, 0x43, 0x70, - 0x8b, 0x78, 0x83, 0x70, 0x60, 0x46, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xb4, 0x14, 0x4e, 0x14, 0x4d, 0x15, 0x4c, 0x15, 0x4b, 0x16, 0x49, 0x06, 0xf1, 0x70, 0x0c, - 0x00, 0x27, 0x9c, 0x42, 0x11, 0xd9, 0x04, 0x39, 0x1a, 0x46, 0x51, 0xf8, 0x04, 0x0f, 0x42, 0xf8, - 0x04, 0x0b, 0x94, 0x42, 0xf9, 0xd8, 0xda, 0x43, 0x14, 0x44, 0x24, 0xf0, 0x03, 0x04, 0x04, 0x34, - 0x23, 0x44, 0x9d, 0x42, 0x03, 0xd9, 0x43, 0xf8, 0x04, 0x7b, 0x9d, 0x42, 0xfb, 0xd8, 0x66, 0x45, - 0x05, 0xd0, 0xd6, 0xe9, 0x04, 0x13, 0xd6, 0xe9, 0x06, 0x45, 0x10, 0x36, 0xe1, 0xe7, 0xf0, 0xbc, - 0x70, 0x47, 0x00, 0xbf, 0x84, 0x36, 0x00, 0x08, 0xbc, 0xbb, 0x00, 0x20, 0xbc, 0xbb, 0x00, 0x20, - 0xbc, 0xbb, 0x00, 0x20, 0x38, 0x3b, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0x1c, 0x4c, 0x1c, 0x4f, 0x1d, 0x4e, 0x00, 0x25, 0x00, 0xf0, 0xa1, 0xf9, 0x00, 0xf0, - 0x4f, 0xf9, 0xc4, 0xe9, 0x0c, 0x55, 0x00, 0xf0, 0x8b, 0xfc, 0x00, 0xf0, 0xb1, 0xfc, 0x00, 0xf0, - 0xf7, 0xfc, 0x04, 0xf1, 0x38, 0x00, 0x80, 0x22, 0x15, 0x49, 0x00, 0xf0, 0xc1, 0xfa, 0x15, 0x4b, - 0x01, 0x22, 0x02, 0x77, 0xd9, 0x68, 0x14, 0x4a, 0xa0, 0x61, 0x4f, 0xf6, 0xff, 0x00, 0x01, 0x40, - 0x0a, 0x43, 0xda, 0x60, 0xfa, 0x68, 0x42, 0xf0, 0x80, 0x72, 0xfa, 0x60, 0x32, 0x68, 0x10, 0x20, - 0x42, 0xf0, 0x01, 0x02, 0x20, 0x21, 0x32, 0x60, 0xd8, 0x77, 0x83, 0xf8, 0x22, 0x10, 0x00, 0xf0, - 0x6f, 0xf8, 0x85, 0xf3, 0x11, 0x88, 0x62, 0xb6, 0x08, 0x48, 0xbd, 0xe8, 0xf8, 0x40, 0x00, 0xf0, - 0xff, 0xba, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0xf0, 0xed, 0x00, 0xe0, 0x00, 0x10, 0x00, 0xe0, - 0x9c, 0x37, 0x00, 0x08, 0x00, 0xed, 0x00, 0xe0, 0x00, 0x03, 0xfa, 0x05, 0x24, 0x37, 0x00, 0x08, - 0x08, 0xb5, 0x72, 0xb6, 0x03, 0x4b, 0x04, 0x49, 0xd8, 0x62, 0xd1, 0x22, 0x02, 0xf0, 0x28, 0xfd, - 0xfe, 0xe7, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x04, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf8, 0x43, 0x16, 0x4d, 0x00, 0xf0, 0xdb, 0xf8, 0xaa, 0x69, 0xd3, 0x7f, 0x0b, 0xb1, - 0x01, 0x3b, 0xd3, 0x77, 0x00, 0xf0, 0xd4, 0xf8, 0x12, 0x4f, 0xab, 0x6a, 0xec, 0x69, 0x01, 0x33, - 0xbc, 0x42, 0xab, 0x62, 0x19, 0xd0, 0xa6, 0x68, 0x01, 0x3e, 0xa6, 0x60, 0xae, 0xb9, 0x4f, 0xf0, - 0x20, 0x09, 0x23, 0x68, 0xd4, 0xf8, 0x0c, 0x80, 0xe6, 0x60, 0x5f, 0x60, 0xeb, 0x61, 0x00, 0xf0, - 0x77, 0xf8, 0x86, 0xf3, 0x11, 0x88, 0x20, 0x69, 0xc0, 0x47, 0x89, 0xf3, 0x11, 0x88, 0x00, 0xf0, - 0x57, 0xf8, 0xec, 0x69, 0xa3, 0x68, 0x00, 0x2b, 0xeb, 0xd0, 0xbd, 0xe8, 0xf8, 0x83, 0x00, 0xbf, - 0x48, 0x1e, 0x00, 0x20, 0x64, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x4b, 0x1a, 0x6b, 0x0a, 0xb9, 0x5b, 0x6b, 0x13, 0xb1, 0x03, 0x48, 0xff, 0xf7, 0xb0, 0xbf, - 0x70, 0x47, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x44, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x4b, 0x1a, 0x6b, 0x0a, 0xb9, 0x5b, 0x6b, 0x13, 0xb1, 0x03, 0x48, 0xff, 0xf7, 0xa0, 0xbf, - 0x70, 0x47, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x4c, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x05, 0x4c, 0x23, 0x6b, 0x0b, 0xb9, 0x63, 0x6b, 0x13, 0xb1, 0x03, 0x48, 0xff, 0xf7, - 0x8f, 0xff, 0x01, 0x23, 0x63, 0x63, 0x10, 0xbd, 0x48, 0x1e, 0x00, 0x20, 0x64, 0x37, 0x00, 0x08, - 0x10, 0xb5, 0x07, 0x4c, 0x23, 0x6b, 0x2b, 0xb9, 0x63, 0x6b, 0x00, 0x2b, 0x02, 0xdd, 0x00, 0x23, - 0x63, 0x63, 0x10, 0xbd, 0x03, 0x48, 0xff, 0xf7, 0x7b, 0xff, 0x00, 0x23, 0x63, 0x63, 0x10, 0xbd, - 0x48, 0x1e, 0x00, 0x20, 0x74, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x06, 0x4c, 0x23, 0x6b, 0x00, 0x2b, 0x01, 0xdd, 0x63, 0x6b, 0x13, 0xb1, 0x04, 0x48, - 0xff, 0xf7, 0x66, 0xff, 0x01, 0x23, 0x63, 0x63, 0x10, 0xbd, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, - 0x6c, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x08, 0x4c, 0x23, 0x6b, 0x00, 0x2b, 0x05, 0xdd, 0x63, 0x6b, 0x00, 0x2b, 0x02, 0xdd, - 0x00, 0x23, 0x63, 0x63, 0x10, 0xbd, 0x04, 0x48, 0xff, 0xf7, 0x4a, 0xff, 0x00, 0x23, 0x63, 0x63, - 0x10, 0xbd, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x7c, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x07, 0x4c, 0x23, 0x6b, 0x00, 0x2b, 0x01, 0xdb, - 0x62, 0x6b, 0x1a, 0xb1, 0x05, 0x48, 0xff, 0xf7, 0x33, 0xff, 0x23, 0x6b, 0x01, 0x33, 0x23, 0x63, - 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x10, 0xbd, 0x48, 0x1e, 0x00, 0x20, 0x54, 0x37, 0x00, 0x08, - 0x10, 0xb5, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x07, 0x4c, 0x23, 0x6b, 0x00, 0x2b, 0x01, 0xdd, - 0x62, 0x6b, 0x1a, 0xb1, 0x05, 0x48, 0xff, 0xf7, 0x1b, 0xff, 0x23, 0x6b, 0x01, 0x3b, 0x23, 0x63, - 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x10, 0xbd, 0x48, 0x1e, 0x00, 0x20, 0x5c, 0x37, 0x00, 0x08, - 0x05, 0x4b, 0x1a, 0x6b, 0x00, 0x2a, 0x03, 0xdb, 0x5b, 0x6b, 0x00, 0x2b, 0x00, 0xdd, 0x70, 0x47, - 0x02, 0x48, 0xff, 0xf7, 0x05, 0xbf, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x84, 0x37, 0x00, 0x08, - 0x04, 0x4b, 0x1a, 0x6b, 0x1a, 0xb9, 0x5b, 0x6b, 0x00, 0x2b, 0x00, 0xdd, 0x70, 0x47, 0x02, 0x48, - 0xff, 0xf7, 0xf6, 0xbe, 0x48, 0x1e, 0x00, 0x20, 0x8c, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x4b, 0x4f, 0xf0, 0xff, 0x30, 0x00, 0x21, 0x03, 0xf1, 0x1c, 0x02, 0x58, 0x62, 0x99, 0x62, - 0xc3, 0xe9, 0x07, 0x22, 0x70, 0x47, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0x05, 0x46, 0x16, 0x46, 0x1f, 0x46, 0x0c, 0x46, 0xff, 0xf7, 0xc9, 0xff, 0x0c, 0x48, - 0x2f, 0x61, 0xc3, 0x69, 0xee, 0x60, 0x9a, 0x68, 0x94, 0x42, 0x04, 0xd9, 0x1b, 0x68, 0xa4, 0x1a, - 0x9a, 0x68, 0xa2, 0x42, 0xfa, 0xd3, 0x5a, 0x68, 0xc5, 0xe9, 0x00, 0x32, 0x15, 0x60, 0x5d, 0x60, - 0xac, 0x60, 0x99, 0x68, 0x4f, 0xf0, 0xff, 0x32, 0x09, 0x1b, 0x99, 0x60, 0x42, 0x62, 0xf8, 0xbd, - 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xa4, 0xff, 0x23, 0x68, 0xa5, 0x68, 0x9a, 0x68, 0x61, 0x68, - 0x05, 0x48, 0x2a, 0x44, 0x9a, 0x60, 0x0b, 0x60, 0x25, 0x68, 0x00, 0x22, 0x4f, 0xf0, 0xff, 0x33, - 0x69, 0x60, 0xe2, 0x60, 0x43, 0x62, 0x38, 0xbd, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x4b, 0x00, 0x22, 0xc3, 0xe9, 0x00, 0x33, 0xc3, 0xe9, 0x04, 0x33, 0x9a, 0x60, 0x70, 0x47, - 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0x7c, 0xff, 0x00, 0x22, 0xa1, 0x68, 0x06, 0x4b, 0x22, 0x77, - 0x1b, 0x68, 0x9a, 0x68, 0x8a, 0x42, 0xfb, 0xd2, 0x5a, 0x68, 0x20, 0x46, 0xc4, 0xe9, 0x00, 0x32, - 0x14, 0x60, 0x5c, 0x60, 0x10, 0xbd, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x04, 0x46, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x01, 0xff, 0x23, 0x7f, - 0x07, 0x2b, 0x10, 0xd8, 0xdf, 0xe8, 0x03, 0xf0, 0x15, 0x0f, 0x0f, 0x1b, 0x0a, 0x04, 0x0f, 0x0a, - 0x25, 0x6a, 0xff, 0xf7, 0x55, 0xff, 0xab, 0x68, 0x01, 0x33, 0xab, 0x60, 0xd4, 0xe9, 0x00, 0x23, - 0x1a, 0x60, 0x22, 0x68, 0x53, 0x60, 0x4f, 0xf0, 0xff, 0x33, 0x23, 0x62, 0x20, 0x46, 0xff, 0xf7, - 0xc7, 0xff, 0xff, 0xf7, 0xfd, 0xfe, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x38, 0xbd, 0x23, 0x6a, - 0x00, 0x22, 0x1a, 0x60, 0x4f, 0xf0, 0xff, 0x33, 0x23, 0x62, 0x20, 0x46, 0xff, 0xf7, 0xb8, 0xff, - 0xef, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x0a, 0x4c, 0xa5, 0x69, 0x06, 0x46, 0xff, 0xf7, 0x3a, 0xff, 0x23, 0x68, 0x2e, 0x77, - 0x14, 0x22, 0xea, 0x77, 0x1a, 0x68, 0x22, 0x60, 0x01, 0x26, 0x54, 0x60, 0x1e, 0x77, 0x29, 0x46, - 0xa3, 0x61, 0x18, 0x46, 0xbd, 0xe8, 0x70, 0x40, 0xff, 0xf7, 0xce, 0xbc, 0x48, 0x1e, 0x00, 0x20, - 0x70, 0xb5, 0x0d, 0x46, 0x86, 0xb0, 0x06, 0x46, 0xff, 0xf7, 0x22, 0xff, 0x6b, 0x1c, 0x14, 0xd0, - 0x0e, 0x4c, 0x0f, 0x4a, 0xa3, 0x69, 0x29, 0x46, 0x01, 0xa8, 0xff, 0xf7, 0x39, 0xff, 0x30, 0x46, - 0xff, 0xf7, 0xd6, 0xff, 0xff, 0xf7, 0x04, 0xff, 0x04, 0x9b, 0x13, 0xb1, 0x01, 0xa8, 0xff, 0xf7, - 0x57, 0xff, 0xa3, 0x69, 0x18, 0x6a, 0x06, 0xb0, 0x70, 0xbd, 0x04, 0x4c, 0x30, 0x46, 0xff, 0xf7, - 0xc7, 0xff, 0xa3, 0x69, 0x18, 0x6a, 0x06, 0xb0, 0x70, 0xbd, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, - 0xe1, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0x14, 0x4e, 0x05, 0x46, 0xb4, 0x69, 0x0f, 0x46, 0xff, 0xf7, 0xf1, 0xfe, 0xa3, 0x68, - 0xaa, 0x68, 0x2f, 0x62, 0x9a, 0x42, 0x17, 0xd9, 0xff, 0xf7, 0xda, 0xfe, 0x00, 0x23, 0xa1, 0x68, - 0x23, 0x77, 0x33, 0x46, 0x1b, 0x68, 0x9a, 0x68, 0x8a, 0x42, 0xfb, 0xd2, 0x5a, 0x68, 0x62, 0x60, - 0x01, 0x20, 0x23, 0x60, 0x14, 0x60, 0x5c, 0x60, 0x28, 0x77, 0x21, 0x46, 0x28, 0x46, 0xb5, 0x61, - 0xbd, 0xe8, 0xf8, 0x40, 0xff, 0xf7, 0x78, 0xbc, 0x28, 0x46, 0xbd, 0xe8, 0xf8, 0x40, 0xff, 0xf7, - 0x3f, 0xbf, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x4a, 0x93, 0x69, 0x11, 0x68, 0xda, 0x7f, 0x88, 0x68, 0x9b, 0x68, 0x22, 0xb9, 0x98, 0x42, - 0x34, 0xbf, 0x00, 0x20, 0x01, 0x20, 0x70, 0x47, 0x98, 0x42, 0x94, 0xbf, 0x00, 0x20, 0x01, 0x20, - 0x70, 0x47, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x1b, 0x4d, 0x2b, 0x68, 0xac, 0x69, 0x1a, 0x68, 0x2a, 0x60, 0x55, 0x60, 0xde, 0x7f, - 0xab, 0x61, 0x01, 0x22, 0x1a, 0x77, 0xae, 0xb9, 0xff, 0xf7, 0x92, 0xfe, 0xa1, 0x68, 0x26, 0x77, - 0x2b, 0x46, 0x1b, 0x68, 0x9a, 0x68, 0x8a, 0x42, 0xfb, 0xd2, 0x5a, 0x68, 0x62, 0x60, 0x14, 0x21, - 0x23, 0x60, 0x14, 0x60, 0x5c, 0x60, 0xe1, 0x77, 0xa8, 0x69, 0x21, 0x46, 0xbd, 0xe8, 0x70, 0x40, - 0xff, 0xf7, 0x32, 0xbc, 0xff, 0xf7, 0x7c, 0xfe, 0x00, 0x23, 0xa1, 0x68, 0x23, 0x77, 0x2b, 0x46, - 0x1b, 0x68, 0x9a, 0x68, 0x8a, 0x42, 0xfb, 0xd8, 0x5a, 0x68, 0xa8, 0x69, 0xc4, 0xe9, 0x00, 0x32, - 0x21, 0x46, 0x14, 0x60, 0x5c, 0x60, 0xbd, 0xe8, 0x70, 0x40, 0xff, 0xf7, 0x1d, 0xbc, 0x00, 0xbf, - 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xb4, 0x0b, 0x4c, 0x0b, 0x4f, 0x65, 0x69, 0x82, 0x63, 0x82, 0x60, 0x00, 0x26, 0x81, 0x61, - 0x00, 0xf1, 0x28, 0x02, 0x00, 0xf1, 0x24, 0x01, 0x45, 0x61, 0x04, 0x61, 0xc7, 0x61, 0xc0, 0xe9, - 0x0c, 0x66, 0x28, 0x61, 0x60, 0x61, 0xc0, 0xe9, 0x09, 0x12, 0xc2, 0x62, 0xf0, 0xbc, 0x70, 0x47, - 0x48, 0x1e, 0x00, 0x20, 0x02, 0x00, 0x01, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0x3c, 0xfe, 0xd4, 0xe9, 0x04, 0x16, 0xa3, 0x68, 0x25, 0x68, - 0xe0, 0x68, 0x43, 0xf8, 0x6c, 0x1c, 0x02, 0x21, 0x03, 0xf8, 0x2c, 0x1c, 0x14, 0x21, 0x03, 0xf8, - 0x29, 0x1c, 0x01, 0x21, 0x03, 0xf8, 0x2a, 0x1c, 0x12, 0x4a, 0x43, 0xf8, 0x68, 0x6c, 0x00, 0x21, - 0x03, 0xf8, 0x2b, 0x1c, 0x54, 0x69, 0x43, 0xf8, 0x40, 0x0c, 0x43, 0xf8, 0x10, 0x0c, 0x43, 0xf8, - 0x30, 0x5c, 0xa3, 0xf1, 0xac, 0x00, 0x0c, 0x4d, 0x43, 0xf8, 0x3c, 0x0c, 0x43, 0xf8, 0x4c, 0x5c, - 0x43, 0xe9, 0x06, 0x11, 0xa3, 0xf1, 0x48, 0x00, 0xa3, 0xf1, 0x20, 0x01, 0xa3, 0xf1, 0x24, 0x05, - 0x43, 0xe9, 0x0e, 0x24, 0x20, 0x61, 0x50, 0x61, 0x43, 0xe9, 0x09, 0x51, 0x43, 0xf8, 0x1c, 0x1c, - 0x70, 0xbd, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x31, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x20, 0x23, 0x04, 0x46, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x71, 0xfd, 0x20, 0x46, - 0xff, 0xf7, 0xb6, 0xff, 0x00, 0x21, 0x04, 0x46, 0xff, 0xf7, 0x0a, 0xff, 0xff, 0xf7, 0x78, 0xfd, - 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x20, 0x46, 0x10, 0xbd, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf8, 0x43, 0x99, 0x46, 0x04, 0x46, 0x0d, 0x46, 0x90, 0x46, 0x20, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0x48, 0x3d, 0x2c, 0x44, 0x18, 0x4e, 0x18, 0x4f, 0xff, 0xf7, 0x51, 0xfd, 0x08, 0x9b, - 0x71, 0x69, 0x44, 0xf8, 0x20, 0x3c, 0xa4, 0xf1, 0x64, 0x02, 0x15, 0x4b, 0xe2, 0x60, 0xe3, 0x61, - 0x04, 0xf1, 0x24, 0x02, 0x04, 0xf1, 0x28, 0x03, 0x00, 0x25, 0x12, 0x48, 0x44, 0xf8, 0x24, 0x9c, - 0xc4, 0xe9, 0x04, 0x61, 0xc4, 0xf8, 0x08, 0x80, 0x44, 0xf8, 0x04, 0x7c, 0xa0, 0x61, 0xc4, 0xf8, - 0x38, 0x80, 0xc4, 0xe9, 0x0c, 0x55, 0x20, 0x46, 0x0c, 0x61, 0xc4, 0xe9, 0x09, 0x23, 0xe3, 0x62, - 0x29, 0x46, 0x74, 0x61, 0xff, 0xf7, 0xcc, 0xfe, 0xff, 0xf7, 0x3a, 0xfd, 0x85, 0xf3, 0x11, 0x88, - 0x20, 0x46, 0xbd, 0xe8, 0xf8, 0x83, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x31, 0x03, 0x00, 0x08, - 0x02, 0x00, 0x01, 0x14, 0x94, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x20, 0x23, 0x04, 0x46, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x11, 0xfd, 0xa3, 0x7f, - 0x01, 0x3b, 0xa3, 0x77, 0xe3, 0x69, 0x03, 0xf0, 0xff, 0x13, 0x0f, 0x2b, 0x01, 0xbf, 0xd4, 0xe9, - 0x04, 0x23, 0x1a, 0x61, 0x22, 0x69, 0x53, 0x61, 0xff, 0xf7, 0x12, 0xfd, 0x00, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x0e, 0x4b, 0x9c, 0x69, 0x63, 0x6a, 0x20, 0x62, 0x04, 0xf1, 0x24, 0x05, 0xab, 0x42, - 0x07, 0xd0, 0x1a, 0x68, 0x62, 0x62, 0x18, 0x46, 0xff, 0xf7, 0xf2, 0xfd, 0x63, 0x6a, 0xab, 0x42, - 0xf7, 0xd1, 0xa3, 0x7f, 0x23, 0xb9, 0xd4, 0xe9, 0x04, 0x23, 0x1a, 0x61, 0x22, 0x69, 0x53, 0x61, - 0x0f, 0x20, 0xbd, 0xe8, 0x38, 0x40, 0xff, 0xf7, 0x33, 0xbe, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, - 0x10, 0xb5, 0x20, 0x23, 0x04, 0x46, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xd1, 0xfc, 0x20, 0x46, - 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xd4, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x04, 0x46, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xc1, 0xfc, 0x23, 0x7f, - 0x0f, 0x2b, 0x07, 0xd0, 0x09, 0x4b, 0x62, 0x6a, 0x9b, 0x69, 0x09, 0x20, 0x1a, 0x60, 0x63, 0x62, - 0xff, 0xf7, 0x0e, 0xfe, 0x25, 0x6a, 0xff, 0xf7, 0xc3, 0xfc, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, - 0x20, 0x46, 0xff, 0xf7, 0x95, 0xff, 0x28, 0x46, 0x38, 0xbd, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, - 0x05, 0x4b, 0x02, 0x46, 0x9b, 0x69, 0x21, 0xb1, 0x03, 0x60, 0x03, 0x20, 0x1a, 0x62, 0xff, 0xf7, - 0x0f, 0xbe, 0x4f, 0xf0, 0xff, 0x30, 0x70, 0x47, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x68, 0x2b, 0xb1, 0x00, 0x22, 0x02, 0x60, 0x18, 0x46, 0x19, 0x62, 0xff, 0xf7, 0x98, 0xbd, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x69, 0xb1, 0x08, 0x4b, 0x10, 0xb4, 0x02, 0x46, 0x44, 0x68, 0x9b, 0x69, 0x04, 0x20, 0xc3, 0xe9, - 0x00, 0x24, 0x23, 0x60, 0x53, 0x60, 0x5d, 0xf8, 0x04, 0x4b, 0xff, 0xf7, 0xe9, 0xbd, 0x4f, 0xf0, - 0xff, 0x30, 0x70, 0x47, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x68, 0x90, 0x42, 0x0a, 0xd0, 0x10, 0xb4, 0x14, 0x68, 0x04, 0x60, 0x03, 0x46, 0x63, 0x60, - 0x10, 0x46, 0x11, 0x62, 0x5d, 0xf8, 0x04, 0x4b, 0xff, 0xf7, 0x6a, 0xbd, 0x70, 0x47, 0x00, 0xbf, - 0x38, 0xb5, 0x03, 0x68, 0x98, 0x42, 0x0b, 0xd0, 0x04, 0x46, 0x0d, 0x46, 0x1a, 0x68, 0x22, 0x60, - 0x18, 0x46, 0x54, 0x60, 0x1d, 0x62, 0xff, 0xf7, 0x5b, 0xfd, 0x23, 0x68, 0x9c, 0x42, 0xf5, 0xd1, - 0x38, 0xbd, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x4b, 0x5b, 0x68, 0x83, 0x60, 0x70, 0x47, 0x00, 0x10, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x4b, 0x0f, 0x4a, 0x5b, 0x68, 0xc1, 0x68, 0xf0, 0xb4, 0x84, 0x68, 0xd6, 0x6f, 0x42, 0x68, - 0x1b, 0x1b, 0xd0, 0xe9, 0x04, 0x45, 0x9b, 0x1b, 0xe6, 0x18, 0x45, 0xf1, 0x00, 0x07, 0x93, 0x42, - 0x02, 0x68, 0x88, 0xbf, 0x43, 0x60, 0x01, 0x31, 0x93, 0x42, 0xc0, 0xe9, 0x04, 0x67, 0xc0, 0xe9, - 0x02, 0x31, 0x38, 0xbf, 0x03, 0x60, 0xf0, 0xbc, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x10, 0x00, 0xe0, - 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x0c, 0x4c, 0x86, 0xb0, 0x00, 0x23, 0x4f, 0xf0, 0xff, 0x31, 0x00, 0x22, 0x68, 0x46, - 0xe3, 0x67, 0xcd, 0xe9, 0x01, 0x33, 0x03, 0x93, 0x00, 0x23, 0xcd, 0xe9, 0x04, 0x23, 0x00, 0x91, - 0xff, 0xf7, 0xbe, 0xff, 0x68, 0x46, 0xff, 0xf7, 0xc3, 0xff, 0x02, 0x9b, 0xe3, 0x67, 0x06, 0xb0, - 0x10, 0xbd, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x23, 0xc0, 0xe9, 0x00, 0x00, 0x83, 0x60, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x4a, 0x04, 0x4b, 0x02, 0xf5, 0x00, 0x61, 0xc3, 0xe9, 0x00, 0x21, 0x70, 0x47, 0x00, 0xbf, - 0xd0, 0x1e, 0x00, 0x20, 0xc8, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0x0e, 0x46, 0x04, 0x46, 0x15, 0x46, 0xff, 0xf7, 0x62, 0xfc, 0x09, 0x4a, 0xd2, 0xe9, - 0x00, 0x73, 0x78, 0x19, 0x01, 0x3c, 0x30, 0x44, 0x71, 0x42, 0x34, 0x44, 0x01, 0x38, 0x08, 0x40, - 0x21, 0x40, 0x01, 0x44, 0x8b, 0x42, 0x03, 0xd3, 0x8f, 0x42, 0x01, 0xd8, 0x11, 0x60, 0xf8, 0xbd, - 0x00, 0x20, 0xf8, 0xbd, 0xc8, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x20, 0x23, 0x04, 0x46, 0x0d, 0x46, 0x16, 0x46, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, - 0xb7, 0xfb, 0x32, 0x46, 0x29, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xd2, 0xff, 0x04, 0x46, 0xff, 0xf7, - 0xbf, 0xfb, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x20, 0x46, 0x70, 0xbd, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x4b, 0x05, 0x4a, 0x1a, 0x60, 0x03, 0xf1, 0x0c, 0x00, 0x00, 0x22, 0xc3, 0xe9, 0x01, 0x22, - 0xff, 0xf7, 0xa6, 0xbf, 0xd0, 0x26, 0x00, 0x20, 0x21, 0x0f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x4a, 0x53, 0x68, 0x23, 0xf0, 0x01, 0x03, 0x53, 0x60, 0xef, 0xf3, 0x09, 0x83, 0x68, 0x33, - 0x83, 0xf3, 0x09, 0x88, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x70, 0x47, 0x30, 0xef, 0x00, 0xe0, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x12, 0x4b, 0x5b, 0x68, 0x13, 0xf4, 0x00, 0x63, 0x02, 0xd1, - 0x83, 0xf3, 0x11, 0x88, 0x70, 0x47, 0x10, 0xb5, 0xf1, 0xee, 0x10, 0x3a, 0xef, 0xf3, 0x09, 0x84, - 0x0c, 0x4b, 0x4f, 0xf0, 0x80, 0x72, 0xdb, 0x68, 0x44, 0xf8, 0x08, 0x3c, 0x44, 0xf8, 0x4c, 0x2c, - 0xa4, 0xf1, 0x68, 0x03, 0x83, 0xf3, 0x09, 0x88, 0xff, 0xf7, 0x3a, 0xfd, 0x18, 0xb1, 0x06, 0x4b, - 0x44, 0xf8, 0x50, 0x3c, 0x10, 0xbd, 0x05, 0x4b, 0x44, 0xf8, 0x50, 0x3c, 0x10, 0xbd, 0x00, 0xbf, - 0x00, 0xed, 0x00, 0xe0, 0x30, 0xef, 0x00, 0xe0, 0x45, 0x03, 0x00, 0x08, 0x50, 0x03, 0x00, 0x08, - 0x08, 0xb5, 0x00, 0xf0, 0xd5, 0xfb, 0x00, 0xf0, 0xfb, 0xfe, 0x00, 0xf0, 0xc9, 0xf8, 0x00, 0xf0, - 0xdf, 0xf8, 0x00, 0xf0, 0xbd, 0xf8, 0x01, 0xf0, 0xdb, 0xfa, 0xbd, 0xe8, 0x08, 0x40, 0x00, 0xf0, - 0xcf, 0xb8, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0x15, 0x46, 0x82, 0x68, 0x06, 0x69, 0xaa, 0x42, 0x0b, 0x46, 0x81, 0x69, 0x38, 0xbf, - 0x85, 0x68, 0x76, 0x1a, 0xb5, 0x42, 0x04, 0x46, 0x1d, 0xd3, 0x0a, 0xd8, 0x18, 0x46, 0x2a, 0x46, - 0xff, 0xf7, 0x88, 0xf9, 0xe3, 0x68, 0xa3, 0x61, 0xa3, 0x68, 0x5b, 0x1b, 0xa3, 0x60, 0x28, 0x46, - 0xf8, 0xbd, 0x32, 0x46, 0x18, 0x46, 0xff, 0xf7, 0x7d, 0xf9, 0xaf, 0x1b, 0x3a, 0x46, 0x30, 0x44, - 0xe1, 0x68, 0xff, 0xf7, 0x77, 0xf9, 0xa3, 0x68, 0xe2, 0x68, 0x5b, 0x1b, 0x3a, 0x44, 0xa2, 0x61, - 0xa3, 0x60, 0x28, 0x46, 0xf8, 0xbd, 0x18, 0x46, 0x2a, 0x46, 0xff, 0xf7, 0x6b, 0xf9, 0xa3, 0x69, - 0x2b, 0x44, 0xa3, 0x61, 0xa3, 0x68, 0x5b, 0x1b, 0xa3, 0x60, 0x28, 0x46, 0xf8, 0xbd, 0x00, 0xbf, - 0x30, 0xb4, 0x02, 0x9c, 0x04, 0x62, 0x00, 0x25, 0x0a, 0x44, 0x85, 0x60, 0x02, 0x61, 0xc0, 0xe9, - 0x00, 0x00, 0xc1, 0x60, 0xc0, 0xe9, 0x05, 0x11, 0xc3, 0x61, 0x30, 0xbc, 0x70, 0x47, 0x00, 0xbf, - 0x38, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0xff, 0xf7, 0x7b, 0xfb, 0xd4, 0xe9, 0x05, 0x32, 0x93, 0x42, - 0x11, 0xd0, 0xa2, 0x68, 0x59, 0x1c, 0x01, 0x32, 0xa2, 0x60, 0x61, 0x61, 0x1d, 0x70, 0xd4, 0xe9, - 0x04, 0x32, 0x9a, 0x42, 0x01, 0xd3, 0xe3, 0x68, 0x63, 0x61, 0x20, 0x46, 0x00, 0x21, 0xff, 0xf7, - 0x6f, 0xfe, 0x00, 0x20, 0x38, 0xbd, 0xa2, 0x68, 0x00, 0x2a, 0xea, 0xd0, 0x4f, 0xf0, 0xff, 0x30, - 0x38, 0xbd, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x4f, 0x83, 0xb0, 0x06, 0x46, 0x0d, 0x46, 0x14, 0x46, 0x01, 0x92, 0x9b, 0x46, - 0xc7, 0x69, 0x4f, 0xf0, 0x20, 0x08, 0x88, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xc1, 0xfa, 0xc4, 0xb1, - 0x4f, 0xf0, 0x00, 0x09, 0x22, 0x46, 0x29, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x79, 0xff, 0x82, 0x46, - 0xd0, 0xb1, 0x30, 0x46, 0x07, 0xb1, 0xb8, 0x47, 0xff, 0xf7, 0xc2, 0xfa, 0x89, 0xf3, 0x11, 0x88, - 0xa4, 0xeb, 0x0a, 0x04, 0x55, 0x44, 0x88, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xa9, 0xfa, 0x00, 0x2c, - 0xe8, 0xd1, 0xdd, 0xf8, 0x04, 0xa0, 0xff, 0xf7, 0xb3, 0xfa, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, - 0x50, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x59, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x10, 0xfe, - 0x00, 0x28, 0xd7, 0xd0, 0x01, 0x9b, 0xa3, 0xeb, 0x04, 0x0a, 0xec, 0xe7, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf0, 0xae, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x22, 0x00, 0x23, 0x02, 0x70, 0xc0, 0xe9, 0x01, 0x33, 0x0c, 0x30, 0xff, 0xf7, 0x80, 0xbe, - 0x00, 0xf0, 0xee, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xf0, 0x46, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x01, 0x22, 0x02, 0x70, 0x43, 0x70, 0x83, 0x70, 0x43, 0x60, 0x03, 0x72, 0xc0, 0xe9, - 0x03, 0x33, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x50, 0xfa, - 0x20, 0x46, 0x65, 0x60, 0x01, 0xf0, 0x3c, 0xf8, 0x02, 0x23, 0x23, 0x70, 0xff, 0xf7, 0x58, 0xfa, - 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x38, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x20, 0x23, 0x04, 0x46, 0x0d, 0x46, 0x16, 0x46, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, - 0x37, 0xfa, 0x32, 0x46, 0x29, 0x46, 0x20, 0x46, 0x01, 0xf0, 0xfa, 0xf8, 0x01, 0x23, 0xa3, 0x70, - 0xff, 0xf7, 0x3e, 0xfa, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x70, 0xbd, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x41, 0x1f, 0x46, 0x04, 0x46, 0x0e, 0x46, 0x90, 0x46, 0x20, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0x01, 0x25, 0xff, 0xf7, 0x1c, 0xfa, 0x42, 0x46, 0x25, 0x72, 0x31, 0x68, 0x20, 0x46, - 0x01, 0xf0, 0xae, 0xf8, 0x65, 0x70, 0x39, 0x46, 0x04, 0xf1, 0x10, 0x00, 0xff, 0xf7, 0x68, 0xfd, - 0x05, 0x46, 0x38, 0xb9, 0xff, 0xf7, 0x1c, 0xfa, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x28, 0x46, - 0xbd, 0xe8, 0xf0, 0x81, 0xff, 0xf7, 0x8c, 0xfa, 0x63, 0x78, 0x01, 0x2b, 0x05, 0xd0, 0x4f, 0xf0, - 0xff, 0x30, 0x33, 0x68, 0x1b, 0x1a, 0x33, 0x60, 0xec, 0xe7, 0x20, 0x46, 0x01, 0xf0, 0xb0, 0xf8, - 0x00, 0x23, 0x63, 0x70, 0xf5, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x09, 0x10, 0xb4, 0x9b, 0x00, 0x00, 0xf1, 0x60, 0x44, 0x04, 0xf5, 0x61, 0x44, 0x03, 0xf1, - 0x60, 0x43, 0x09, 0x01, 0x03, 0xf5, 0x61, 0x43, 0x00, 0xf0, 0x1f, 0x00, 0x01, 0x22, 0xc9, 0xb2, - 0x84, 0xf8, 0x00, 0x13, 0x02, 0xfa, 0x00, 0xf0, 0xc3, 0xf8, 0x80, 0x01, 0x5d, 0xf8, 0x04, 0x4b, - 0x18, 0x60, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf1, 0x60, 0x40, 0x00, 0xf5, 0x6d, 0x40, 0x09, 0x01, 0xc9, 0xb2, 0x01, 0x76, 0x70, 0x47, - 0x08, 0xb5, 0xff, 0xf7, 0x1d, 0xfa, 0x10, 0x4a, 0x51, 0x69, 0x13, 0x68, 0x0b, 0x40, 0x03, 0xf0, - 0x01, 0x03, 0x53, 0x61, 0x93, 0xb1, 0x0d, 0x4a, 0x93, 0x68, 0x0b, 0xb1, 0xd0, 0x68, 0x98, 0x47, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xdb, 0xf9, 0x00, 0x21, 0x07, 0x48, 0xff, 0xf7, - 0x4f, 0xfd, 0xff, 0xf7, 0xed, 0xf9, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x18, 0xfa, - 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0x1c, 0xbe, 0x00, 0x3c, 0x01, 0x40, 0x70, 0x27, 0x00, 0x20, - 0x08, 0xb5, 0xff, 0xf7, 0xf5, 0xf9, 0x10, 0x4a, 0x51, 0x69, 0x13, 0x68, 0x0b, 0x40, 0x03, 0xf0, - 0x02, 0x03, 0x53, 0x61, 0x93, 0xb1, 0x0d, 0x4a, 0x93, 0x69, 0x0b, 0xb1, 0xd0, 0x69, 0x98, 0x47, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xb3, 0xf9, 0x00, 0x21, 0x08, 0x48, 0xff, 0xf7, - 0x27, 0xfd, 0xff, 0xf7, 0xc5, 0xf9, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xf0, 0xf9, - 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0xf4, 0xbd, 0x00, 0x3c, 0x01, 0x40, 0x70, 0x27, 0x00, 0x20, - 0x80, 0x27, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xff, 0xf7, 0xc5, 0xf9, 0x10, 0x4a, 0x51, 0x69, 0x13, 0x68, 0x0b, 0x40, 0x03, 0xf0, - 0x04, 0x03, 0x53, 0x61, 0x93, 0xb1, 0x0d, 0x4a, 0x93, 0x6a, 0x0b, 0xb1, 0xd0, 0x6a, 0x98, 0x47, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x83, 0xf9, 0x00, 0x21, 0x08, 0x48, 0xff, 0xf7, - 0xf7, 0xfc, 0xff, 0xf7, 0x95, 0xf9, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xc0, 0xf9, - 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0xc4, 0xbd, 0x00, 0x3c, 0x01, 0x40, 0x70, 0x27, 0x00, 0x20, - 0x90, 0x27, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xff, 0xf7, 0x95, 0xf9, 0x10, 0x4a, 0x51, 0x69, 0x13, 0x68, 0x0b, 0x40, 0x03, 0xf0, - 0x08, 0x03, 0x53, 0x61, 0x93, 0xb1, 0x0d, 0x4a, 0x93, 0x6b, 0x0b, 0xb1, 0xd0, 0x6b, 0x98, 0x47, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x53, 0xf9, 0x00, 0x21, 0x08, 0x48, 0xff, 0xf7, - 0xc7, 0xfc, 0xff, 0xf7, 0x65, 0xf9, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x90, 0xf9, - 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0x94, 0xbd, 0x00, 0x3c, 0x01, 0x40, 0x70, 0x27, 0x00, 0x20, - 0xa0, 0x27, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xff, 0xf7, 0x65, 0xf9, 0x10, 0x4a, 0x51, 0x69, 0x13, 0x68, 0x0b, 0x40, 0x03, 0xf0, - 0x10, 0x03, 0x53, 0x61, 0x93, 0xb1, 0x0d, 0x4a, 0x93, 0x6c, 0x0b, 0xb1, 0xd0, 0x6c, 0x98, 0x47, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x23, 0xf9, 0x00, 0x21, 0x08, 0x48, 0xff, 0xf7, - 0x97, 0xfc, 0xff, 0xf7, 0x35, 0xf9, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x60, 0xf9, - 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0x64, 0xbd, 0x00, 0x3c, 0x01, 0x40, 0x70, 0x27, 0x00, 0x20, - 0xb0, 0x27, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xff, 0xf7, 0x35, 0xf9, 0x3d, 0x4b, 0x5a, 0x69, 0x1c, 0x68, 0x14, 0x40, 0x04, 0xf4, - 0x78, 0x72, 0x5a, 0x61, 0xa3, 0x06, 0x12, 0xd5, 0x39, 0x4a, 0x93, 0x6d, 0x0b, 0xb1, 0xd0, 0x6d, - 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xf2, 0xf8, 0x00, 0x21, 0x35, 0x48, - 0xff, 0xf7, 0x66, 0xfc, 0xff, 0xf7, 0x04, 0xf9, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x60, 0x06, - 0x12, 0xd5, 0x2f, 0x4a, 0x93, 0x6e, 0x0b, 0xb1, 0xd0, 0x6e, 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0xff, 0xf7, 0xdd, 0xf8, 0x00, 0x21, 0x2b, 0x48, 0xff, 0xf7, 0x51, 0xfc, 0xff, 0xf7, - 0xef, 0xf8, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x21, 0x06, 0x12, 0xd5, 0x24, 0x4a, 0x93, 0x6f, - 0x0b, 0xb1, 0xd0, 0x6f, 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xc8, 0xf8, - 0x00, 0x21, 0x22, 0x48, 0xff, 0xf7, 0x3c, 0xfc, 0xff, 0xf7, 0xda, 0xf8, 0x00, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0xe2, 0x05, 0x14, 0xd5, 0x1a, 0x4a, 0xd2, 0xf8, 0x88, 0x30, 0x13, 0xb1, 0xd2, 0xf8, - 0x8c, 0x00, 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xb1, 0xf8, 0x00, 0x21, - 0x17, 0x48, 0xff, 0xf7, 0x25, 0xfc, 0xff, 0xf7, 0xc3, 0xf8, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, - 0xa3, 0x05, 0x14, 0xd5, 0x0e, 0x4a, 0xd2, 0xf8, 0x98, 0x30, 0x13, 0xb1, 0xd2, 0xf8, 0x9c, 0x00, - 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x9a, 0xf8, 0x00, 0x21, 0x0d, 0x48, - 0xff, 0xf7, 0x0e, 0xfc, 0xff, 0xf7, 0xac, 0xf8, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, - 0xd7, 0xf8, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xdb, 0xbc, 0x00, 0xbf, 0x00, 0x3c, 0x01, 0x40, - 0x70, 0x27, 0x00, 0x20, 0xc0, 0x27, 0x00, 0x20, 0xd0, 0x27, 0x00, 0x20, 0xe0, 0x27, 0x00, 0x20, - 0xf0, 0x27, 0x00, 0x20, 0x00, 0x28, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xff, 0xf7, 0xa5, 0xf8, 0x4b, 0x4b, 0x5a, 0x69, 0x1c, 0x68, 0x14, 0x40, 0x04, 0xf4, - 0x7c, 0x42, 0x5a, 0x61, 0x62, 0x05, 0x14, 0xd5, 0x47, 0x4a, 0xd2, 0xf8, 0xa8, 0x30, 0x13, 0xb1, - 0xd2, 0xf8, 0xac, 0x00, 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x60, 0xf8, - 0x00, 0x21, 0x42, 0x48, 0xff, 0xf7, 0xd4, 0xfb, 0xff, 0xf7, 0x72, 0xf8, 0x00, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0x23, 0x05, 0x14, 0xd5, 0x3c, 0x4a, 0xd2, 0xf8, 0xb8, 0x30, 0x13, 0xb1, 0xd2, 0xf8, - 0xbc, 0x00, 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x49, 0xf8, 0x00, 0x21, - 0x37, 0x48, 0xff, 0xf7, 0xbd, 0xfb, 0xff, 0xf7, 0x5b, 0xf8, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, - 0xe0, 0x04, 0x14, 0xd5, 0x30, 0x4a, 0xd2, 0xf8, 0xc8, 0x30, 0x13, 0xb1, 0xd2, 0xf8, 0xcc, 0x00, - 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x32, 0xf8, 0x00, 0x21, 0x2d, 0x48, - 0xff, 0xf7, 0xa6, 0xfb, 0xff, 0xf7, 0x44, 0xf8, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xa1, 0x04, - 0x14, 0xd5, 0x25, 0x4a, 0xd2, 0xf8, 0xd8, 0x30, 0x13, 0xb1, 0xd2, 0xf8, 0xdc, 0x00, 0x98, 0x47, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x1b, 0xf8, 0x00, 0x21, 0x22, 0x48, 0xff, 0xf7, - 0x8f, 0xfb, 0xff, 0xf7, 0x2d, 0xf8, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x62, 0x04, 0x14, 0xd5, - 0x19, 0x4a, 0xd2, 0xf8, 0xe8, 0x30, 0x13, 0xb1, 0xd2, 0xf8, 0xec, 0x00, 0x98, 0x47, 0x20, 0x23, - 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x04, 0xf8, 0x00, 0x21, 0x18, 0x48, 0xff, 0xf7, 0x78, 0xfb, - 0xff, 0xf7, 0x16, 0xf8, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x23, 0x04, 0x14, 0xd5, 0x0e, 0x4a, - 0xd2, 0xf8, 0xf8, 0x30, 0x13, 0xb1, 0xd2, 0xf8, 0xfc, 0x00, 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0xfe, 0xf7, 0xed, 0xff, 0x00, 0x21, 0x0d, 0x48, 0xff, 0xf7, 0x61, 0xfb, 0xfe, 0xf7, - 0xff, 0xff, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x2a, 0xf8, 0xbd, 0xe8, 0x10, 0x40, - 0xff, 0xf7, 0x2e, 0xbc, 0x00, 0x3c, 0x01, 0x40, 0x70, 0x27, 0x00, 0x20, 0x10, 0x28, 0x00, 0x20, - 0x20, 0x28, 0x00, 0x20, 0x30, 0x28, 0x00, 0x20, 0x40, 0x28, 0x00, 0x20, 0x50, 0x28, 0x00, 0x20, - 0x60, 0x28, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x21, 0x08, 0xb5, 0x08, 0x46, 0xff, 0xf7, 0xab, 0xfd, 0x06, 0x21, 0x07, 0x20, 0xff, 0xf7, - 0xa7, 0xfd, 0x06, 0x21, 0x08, 0x20, 0xff, 0xf7, 0xa3, 0xfd, 0x06, 0x21, 0x09, 0x20, 0xff, 0xf7, - 0x9f, 0xfd, 0x06, 0x21, 0x0a, 0x20, 0xff, 0xf7, 0x9b, 0xfd, 0x06, 0x21, 0x17, 0x20, 0xff, 0xf7, - 0x97, 0xfd, 0x06, 0x21, 0x28, 0x20, 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0x91, 0xbd, 0x00, 0xbf, - 0x22, 0x4b, 0x23, 0x48, 0x1a, 0x69, 0x6f, 0xea, 0xc2, 0x52, 0x6f, 0xea, 0xd2, 0x52, 0x10, 0xb5, - 0x1a, 0x61, 0x1a, 0x69, 0xc2, 0xf3, 0x08, 0x02, 0x1a, 0x61, 0x4f, 0xf0, 0xff, 0x34, 0x1a, 0x69, - 0x5a, 0x69, 0x5c, 0x61, 0x00, 0x21, 0x5a, 0x69, 0x59, 0x61, 0x5a, 0x69, 0x1a, 0x6a, 0x62, 0xf0, - 0x80, 0x52, 0x1a, 0x62, 0x1a, 0x6a, 0x02, 0xf0, 0x80, 0x52, 0x1a, 0x62, 0x1a, 0x6a, 0x5a, 0x6a, - 0x5c, 0x62, 0x5a, 0x6a, 0x59, 0x62, 0x5a, 0x6a, 0x1a, 0x6c, 0x42, 0xf0, 0x80, 0x52, 0x1a, 0x64, - 0x1a, 0x6e, 0x42, 0xf0, 0x80, 0x52, 0x1a, 0x66, 0x1a, 0x6e, 0x02, 0x68, 0x42, 0xf4, 0x80, 0x72, - 0x02, 0x60, 0x1a, 0x6f, 0x02, 0xf4, 0x40, 0x72, 0xb2, 0xf5, 0x40, 0x7f, 0x03, 0xd0, 0x4f, 0xf4, - 0x80, 0x32, 0x1a, 0x67, 0x19, 0x67, 0x06, 0x4a, 0x53, 0x68, 0x23, 0xf4, 0x00, 0x73, 0x53, 0x60, - 0x00, 0xf0, 0x66, 0xfa, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x9a, 0xbf, 0x00, 0x38, 0x02, 0x40, - 0x00, 0x70, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x31, 0x4b, 0x32, 0x4a, 0x4f, 0xf0, 0x80, 0x50, 0x4f, 0xf4, 0x40, 0x41, 0x18, 0x64, 0x11, 0x60, - 0x1a, 0x68, 0x42, 0xf0, 0x01, 0x02, 0x1a, 0x60, 0x1a, 0x68, 0x92, 0x07, 0xfc, 0xd5, 0x99, 0x68, - 0x29, 0x4a, 0x21, 0xf0, 0x03, 0x01, 0x99, 0x60, 0x93, 0x68, 0x13, 0xf0, 0x0c, 0x03, 0xfb, 0xd1, - 0x10, 0x68, 0x25, 0x49, 0x00, 0xf0, 0xf9, 0x00, 0x10, 0x60, 0x93, 0x60, 0x13, 0x68, 0x43, 0xf4, - 0x80, 0x33, 0x13, 0x60, 0x0b, 0x68, 0x98, 0x03, 0xfc, 0xd5, 0x4b, 0x6f, 0x1e, 0x4a, 0x43, 0xf0, - 0x01, 0x03, 0x4b, 0x67, 0x53, 0x6f, 0x99, 0x07, 0xfc, 0xd5, 0x1d, 0x4b, 0x53, 0x60, 0x13, 0x68, - 0x1a, 0x49, 0x43, 0xf0, 0x80, 0x73, 0x13, 0x60, 0x4b, 0x68, 0x5a, 0x04, 0xfc, 0xd5, 0x16, 0x4a, - 0x13, 0x68, 0x9b, 0x01, 0xfc, 0xd5, 0x17, 0x4b, 0x17, 0x49, 0x91, 0x60, 0x1a, 0x68, 0x17, 0x4b, - 0x9a, 0x42, 0x17, 0xd0, 0x16, 0x4b, 0x40, 0xf2, 0x05, 0x72, 0x1a, 0x60, 0x0e, 0x4a, 0x93, 0x68, - 0x43, 0xf0, 0x02, 0x03, 0x93, 0x60, 0x93, 0x68, 0x03, 0xf0, 0x0c, 0x03, 0x08, 0x2b, 0xfa, 0xd1, - 0x53, 0x6c, 0x43, 0xf4, 0x80, 0x43, 0x53, 0x64, 0x53, 0x6e, 0x43, 0xf4, 0x80, 0x43, 0x53, 0x66, - 0x53, 0x6e, 0x70, 0x47, 0x0b, 0x4a, 0x0c, 0x4b, 0x12, 0x68, 0x9a, 0x42, 0xe2, 0xd1, 0x08, 0x4b, - 0x40, 0xf2, 0x05, 0x12, 0x1a, 0x60, 0xe1, 0xe7, 0x00, 0x38, 0x02, 0x40, 0x00, 0x70, 0x00, 0x40, - 0x08, 0x54, 0x40, 0x07, 0x00, 0x20, 0x04, 0xe0, 0x00, 0x94, 0x88, 0x38, 0x11, 0x64, 0x00, 0x20, - 0x00, 0x3c, 0x02, 0x40, 0x00, 0xed, 0x00, 0xe0, 0x41, 0xc2, 0x0f, 0x41, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0x0d, 0xff, 0x08, 0x4b, 0x08, 0x4a, 0x19, 0x68, 0x01, 0xf0, 0x3d, 0x01, - 0x99, 0x60, 0x13, 0x68, 0x0b, 0xb1, 0x50, 0x68, 0x98, 0x47, 0xfe, 0xf7, 0x19, 0xff, 0xbd, 0xe8, - 0x08, 0x40, 0xff, 0xf7, 0x1d, 0xbb, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, 0xec, 0x26, 0x00, 0x20, - 0x10, 0xb5, 0xfe, 0xf7, 0xf5, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x82, 0x68, 0x89, 0x09, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x01, 0x9c, 0x60, 0x0a, 0xb1, 0xc0, 0x68, 0x90, 0x47, 0xfe, 0xf7, - 0xff, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x03, 0xbb, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0xd5, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x02, 0x69, 0x09, 0x0c, - 0x01, 0xf0, 0x3d, 0x01, 0x0c, 0x04, 0x9c, 0x60, 0x0a, 0xb1, 0x40, 0x69, 0x90, 0x47, 0xfe, 0xf7, - 0xdf, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xe3, 0xba, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0xb5, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x82, 0x69, 0x89, 0x0d, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x05, 0x9c, 0x60, 0x0a, 0xb1, 0xc0, 0x69, 0x90, 0x47, 0xfe, 0xf7, - 0xbf, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xc3, 0xba, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0x95, 0xfe, 0x08, 0x4b, 0x08, 0x48, 0x59, 0x68, 0x02, 0x6a, 0x01, 0xf0, - 0x3d, 0x01, 0xd9, 0x60, 0x0a, 0xb1, 0x40, 0x6a, 0x90, 0x47, 0xfe, 0xf7, 0xa1, 0xfe, 0xbd, 0xe8, - 0x08, 0x40, 0xff, 0xf7, 0xa5, 0xba, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, 0xec, 0x26, 0x00, 0x20, - 0x10, 0xb5, 0xfe, 0xf7, 0x7d, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x82, 0x6a, 0x89, 0x09, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x01, 0xdc, 0x60, 0x0a, 0xb1, 0xc0, 0x6a, 0x90, 0x47, 0xfe, 0xf7, - 0x87, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x8b, 0xba, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0x5d, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x02, 0x6b, 0x09, 0x0c, - 0x01, 0xf0, 0x3d, 0x01, 0x0c, 0x04, 0xdc, 0x60, 0x0a, 0xb1, 0x40, 0x6b, 0x90, 0x47, 0xfe, 0xf7, - 0x67, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x6b, 0xba, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0x3d, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x82, 0x6b, 0x89, 0x0d, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x05, 0xdc, 0x60, 0x0a, 0xb1, 0xc0, 0x6b, 0x90, 0x47, 0xfe, 0xf7, - 0x47, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x4b, 0xba, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0x1d, 0xfe, 0x08, 0x4b, 0x08, 0x48, 0x19, 0x68, 0x02, 0x6c, 0x01, 0xf0, - 0x3d, 0x01, 0x99, 0x60, 0x0a, 0xb1, 0x40, 0x6c, 0x90, 0x47, 0xfe, 0xf7, 0x29, 0xfe, 0xbd, 0xe8, - 0x08, 0x40, 0xff, 0xf7, 0x2d, 0xba, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, 0xec, 0x26, 0x00, 0x20, - 0x10, 0xb5, 0xfe, 0xf7, 0x05, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x82, 0x6c, 0x89, 0x09, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x01, 0x9c, 0x60, 0x0a, 0xb1, 0xc0, 0x6c, 0x90, 0x47, 0xfe, 0xf7, - 0x0f, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x13, 0xba, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0xe5, 0xfd, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x02, 0x6d, 0x09, 0x0c, - 0x01, 0xf0, 0x3d, 0x01, 0x0c, 0x04, 0x9c, 0x60, 0x0a, 0xb1, 0x40, 0x6d, 0x90, 0x47, 0xfe, 0xf7, - 0xef, 0xfd, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xf3, 0xb9, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0xc5, 0xfd, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x82, 0x6d, 0x89, 0x0d, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x05, 0x9c, 0x60, 0x0a, 0xb1, 0xc0, 0x6d, 0x90, 0x47, 0xfe, 0xf7, - 0xcf, 0xfd, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xd3, 0xb9, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0xa5, 0xfd, 0x08, 0x4b, 0x08, 0x48, 0x59, 0x68, 0x02, 0x6e, 0x01, 0xf0, - 0x3d, 0x01, 0xd9, 0x60, 0x0a, 0xb1, 0x40, 0x6e, 0x90, 0x47, 0xfe, 0xf7, 0xb1, 0xfd, 0xbd, 0xe8, - 0x08, 0x40, 0xff, 0xf7, 0xb5, 0xb9, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, 0xec, 0x26, 0x00, 0x20, - 0x10, 0xb5, 0xfe, 0xf7, 0x8d, 0xfd, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x82, 0x6e, 0x89, 0x09, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x01, 0xdc, 0x60, 0x0a, 0xb1, 0xc0, 0x6e, 0x90, 0x47, 0xfe, 0xf7, - 0x97, 0xfd, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x9b, 0xb9, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0x6d, 0xfd, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x02, 0x6f, 0x09, 0x0c, - 0x01, 0xf0, 0x3d, 0x01, 0x0c, 0x04, 0xdc, 0x60, 0x0a, 0xb1, 0x40, 0x6f, 0x90, 0x47, 0xfe, 0xf7, - 0x77, 0xfd, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x7b, 0xb9, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0x4d, 0xfd, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x82, 0x6f, 0x89, 0x0d, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x05, 0xdc, 0x60, 0x0a, 0xb1, 0xc0, 0x6f, 0x90, 0x47, 0xfe, 0xf7, - 0x57, 0xfd, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x5b, 0xb9, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x49, 0x0f, 0x4a, 0x0f, 0x48, 0x00, 0x23, 0x10, 0xb4, 0x0b, 0x60, 0x0e, 0x4c, 0x19, 0x46, - 0x01, 0xe0, 0x52, 0xf8, 0x0c, 0x0c, 0x01, 0x60, 0x44, 0xf8, 0x33, 0x10, 0x01, 0x33, 0x10, 0x2b, - 0x02, 0xf1, 0x0c, 0x02, 0xf5, 0xd1, 0x09, 0x49, 0x09, 0x4a, 0x5d, 0xf8, 0x04, 0x4b, 0x4f, 0xf0, - 0xff, 0x33, 0x8b, 0x60, 0xcb, 0x60, 0x93, 0x60, 0xd3, 0x60, 0x70, 0x47, 0x6c, 0x27, 0x00, 0x20, - 0xc0, 0x37, 0x00, 0x08, 0x10, 0x60, 0x02, 0x40, 0xec, 0x26, 0x00, 0x20, 0x00, 0x60, 0x02, 0x40, - 0x00, 0x64, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0xdf, 0xf8, 0x98, 0xc0, 0x47, 0x7a, 0xdc, 0xf8, 0x00, 0x50, 0x01, 0x24, 0x04, 0xfa, - 0x07, 0xf6, 0x2e, 0x42, 0x3c, 0xd1, 0x1f, 0x4c, 0x35, 0x43, 0x04, 0xeb, 0xc7, 0x06, 0x15, 0xf0, - 0xff, 0x0f, 0xcc, 0xf8, 0x00, 0x50, 0x44, 0xf8, 0x37, 0x20, 0x73, 0x60, 0x09, 0xd0, 0x1a, 0x4b, - 0x1c, 0x6b, 0x44, 0xf4, 0x00, 0x14, 0x1c, 0x63, 0x1c, 0x6d, 0x44, 0xf4, 0x00, 0x14, 0x1c, 0x65, - 0x1b, 0x6d, 0x15, 0xf4, 0x7f, 0x4f, 0x16, 0xd1, 0x05, 0x68, 0x2b, 0x68, 0x23, 0xf0, 0x1f, 0x03, - 0x2b, 0x60, 0x2c, 0x68, 0x14, 0xf0, 0x01, 0x04, 0xfb, 0xd1, 0x07, 0x7a, 0x46, 0x68, 0x3d, 0x23, - 0xbb, 0x40, 0x21, 0x27, 0x33, 0x60, 0x2c, 0x60, 0x6f, 0x61, 0x7a, 0xb1, 0x80, 0x7a, 0xff, 0xf7, - 0x7f, 0xfa, 0x20, 0x46, 0xf8, 0xbd, 0x08, 0x4b, 0x1c, 0x6b, 0x44, 0xf4, 0x80, 0x04, 0x1c, 0x63, - 0x1c, 0x6d, 0x44, 0xf4, 0x80, 0x04, 0x1c, 0x65, 0x1b, 0x6d, 0xdd, 0xe7, 0x10, 0x46, 0xf8, 0xbd, - 0x20, 0x46, 0xf8, 0xbd, 0xec, 0x26, 0x00, 0x20, 0x00, 0x38, 0x02, 0x40, 0x6c, 0x27, 0x00, 0x20, - 0x05, 0x4b, 0x00, 0x22, 0x03, 0xf5, 0x80, 0x71, 0xc3, 0xe9, 0x00, 0x33, 0xc3, 0xe9, 0x02, 0x22, - 0x10, 0x33, 0x8b, 0x42, 0xf8, 0xd1, 0x70, 0x47, 0x70, 0x27, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x4f, 0x02, 0xf0, 0x03, 0x09, 0xc2, 0xf3, 0x80, 0x0e, 0xc2, 0xf3, 0xc1, 0x0c, - 0xc2, 0xf3, 0x41, 0x17, 0xc8, 0x46, 0xc2, 0xf3, 0xc3, 0x12, 0x00, 0x26, 0x4f, 0xf0, 0x01, 0x0a, - 0x16, 0xe0, 0xd0, 0xf8, 0x00, 0xb0, 0x03, 0xea, 0x0b, 0x03, 0x43, 0xea, 0x08, 0x03, 0x07, 0x2e, - 0x03, 0x60, 0x44, 0xd8, 0x03, 0x6a, 0x1d, 0x40, 0x2c, 0x43, 0x04, 0x62, 0x49, 0x08, 0x3c, 0xd0, - 0x4f, 0xea, 0x4e, 0x0e, 0x4f, 0xea, 0x8c, 0x0c, 0xbf, 0x00, 0x4f, 0xea, 0x88, 0x08, 0x01, 0x36, - 0xcb, 0x07, 0xf3, 0xd5, 0x43, 0x68, 0x0a, 0xfa, 0x06, 0xf4, 0x23, 0xea, 0x04, 0x03, 0x43, 0xea, - 0x0e, 0x03, 0x43, 0x60, 0x03, 0x25, 0x73, 0x00, 0x84, 0x68, 0x05, 0xfa, 0x03, 0xf3, 0xdb, 0x43, - 0x1c, 0x40, 0x44, 0xea, 0x0c, 0x04, 0x84, 0x60, 0xc5, 0x68, 0x06, 0xf0, 0x07, 0x04, 0xa4, 0x00, - 0x1d, 0x40, 0x4f, 0xf0, 0x0f, 0x0b, 0x3d, 0x43, 0x0b, 0xfa, 0x04, 0xfb, 0xb9, 0xf1, 0x02, 0x0f, - 0xc5, 0x60, 0x02, 0xfa, 0x04, 0xf4, 0x6f, 0xea, 0x0b, 0x05, 0xc2, 0xd1, 0x07, 0x2e, 0x13, 0xd8, - 0xd0, 0xf8, 0x20, 0xb0, 0x0b, 0xea, 0x05, 0x05, 0x2c, 0x43, 0x04, 0x62, 0x04, 0x68, 0x23, 0x40, - 0x43, 0xea, 0x08, 0x03, 0x49, 0x08, 0x03, 0x60, 0xc2, 0xd1, 0xbd, 0xe8, 0xf0, 0x8f, 0x43, 0x6a, - 0x1d, 0x40, 0x2c, 0x43, 0x44, 0x62, 0xb9, 0xe7, 0xd0, 0xf8, 0x24, 0xb0, 0x0b, 0xea, 0x05, 0x05, - 0x2c, 0x43, 0x44, 0x62, 0xea, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x0f, 0x4e, 0x0f, 0x4d, 0x10, 0x4c, 0x30, 0x46, 0xff, 0xf7, 0x51, 0xf9, 0x0f, 0x4a, - 0x0f, 0x4b, 0x10, 0x49, 0xf1, 0x61, 0x20, 0x46, 0x05, 0xf1, 0x24, 0x01, 0xc6, 0xe9, 0x08, 0x51, - 0xc6, 0xe9, 0x0a, 0x23, 0xff, 0xf7, 0x44, 0xf9, 0x0b, 0x49, 0x0c, 0x4a, 0x0c, 0x4b, 0xe1, 0x61, - 0xa5, 0xf1, 0x60, 0x01, 0x0c, 0x3d, 0xc4, 0xe9, 0x08, 0x15, 0xc4, 0xe9, 0x0a, 0x23, 0x70, 0xbd, - 0x70, 0x28, 0x00, 0x20, 0x14, 0x38, 0x00, 0x08, 0xa0, 0x28, 0x00, 0x20, 0x16, 0x00, 0x01, 0x06, - 0x46, 0x00, 0x01, 0x06, 0x00, 0x30, 0x01, 0x40, 0x00, 0x3c, 0x00, 0x40, 0x16, 0x00, 0x01, 0x00, - 0x46, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0xf5, 0xfb, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, 0xc0, 0xfb, - 0xfe, 0xf7, 0x3e, 0xfb, 0xfe, 0xf7, 0xd4, 0xfb, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, - 0xff, 0xfb, 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0x03, 0xb8, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x4b, 0x06, 0x4a, 0x5a, 0x60, 0x00, 0x21, 0x07, 0x22, 0x99, 0x60, 0x0b, 0x20, 0x08, 0x21, - 0x1a, 0x60, 0xff, 0xf7, 0xad, 0xb9, 0x00, 0xbf, 0x10, 0xe0, 0x00, 0xe0, 0x3f, 0x90, 0x02, 0x00, - 0xc1, 0x69, 0x0a, 0x68, 0x13, 0x68, 0x23, 0xf0, 0x1f, 0x03, 0x30, 0xb4, 0x13, 0x60, 0x13, 0x68, - 0xdb, 0x07, 0xfc, 0xd4, 0x0d, 0x7a, 0x04, 0x6a, 0x49, 0x68, 0x22, 0x68, 0x3d, 0x23, 0xab, 0x40, - 0x0b, 0x60, 0x13, 0x68, 0x23, 0xf0, 0x1f, 0x03, 0x13, 0x60, 0x13, 0x68, 0x13, 0xf0, 0x01, 0x03, - 0xfb, 0xd1, 0x25, 0x7a, 0x42, 0x69, 0x60, 0x68, 0x3d, 0x21, 0xa9, 0x40, 0x01, 0x60, 0x30, 0xbc, - 0xd3, 0x60, 0x13, 0x61, 0x53, 0x61, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x11, 0xf0, 0x0c, 0x0f, 0x38, 0xb5, 0x04, 0x46, 0x2d, 0xd1, 0x21, 0x6a, 0x0a, 0x68, 0x13, 0x68, - 0x23, 0xf0, 0x1f, 0x03, 0x13, 0x60, 0x13, 0x68, 0xdb, 0x07, 0xfc, 0xd4, 0x63, 0x68, 0x0d, 0x7a, - 0x48, 0x68, 0x1a, 0x68, 0x3d, 0x23, 0xab, 0x40, 0x02, 0x21, 0x03, 0x60, 0x61, 0x70, 0xba, 0xb1, - 0x20, 0x46, 0x90, 0x47, 0x63, 0x78, 0x02, 0x2b, 0x12, 0xd0, 0x23, 0x7a, 0x03, 0xb9, 0x38, 0xbd, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, 0x53, 0xfb, 0x04, 0xf1, 0x10, 0x00, 0x00, 0x21, - 0xfe, 0xf7, 0x8e, 0xfe, 0xfe, 0xf7, 0x64, 0xfb, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x38, 0xbd, - 0x00, 0x23, 0x63, 0x70, 0xe9, 0xe7, 0x02, 0x48, 0xfe, 0xf7, 0xb2, 0xfa, 0xcd, 0xe7, 0x00, 0xbf, - 0x74, 0x38, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x11, 0xf0, 0x0c, 0x0f, 0x2d, 0xe9, 0xf0, 0x41, 0x0d, 0x46, 0x04, 0x46, 0x13, 0xd1, 0xa2, 0x78, - 0x63, 0x68, 0x3a, 0xb9, 0xdb, 0x68, 0x00, 0x2b, 0x37, 0xd0, 0xa1, 0x8c, 0x20, 0x46, 0xbd, 0xe8, - 0xf0, 0x41, 0x18, 0x47, 0x5a, 0x6a, 0x52, 0xb1, 0xe8, 0x06, 0x30, 0xd5, 0x20, 0x46, 0x00, 0x21, - 0xbd, 0xe8, 0xf0, 0x41, 0x10, 0x47, 0x25, 0x48, 0xfe, 0xf7, 0x8a, 0xfa, 0xe7, 0xe7, 0xe0, 0x69, - 0x01, 0x68, 0x0a, 0x68, 0x22, 0xf0, 0x1f, 0x02, 0x0a, 0x60, 0x0a, 0x68, 0xd2, 0x07, 0xfc, 0xd4, - 0x07, 0x7a, 0x46, 0x68, 0x9d, 0x68, 0x3d, 0x22, 0xba, 0x40, 0x02, 0x20, 0x32, 0x60, 0xa0, 0x70, - 0xfd, 0xb1, 0x20, 0x46, 0xa8, 0x47, 0xa3, 0x78, 0x02, 0x2b, 0x17, 0xd0, 0x20, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0xfe, 0xf7, 0xfd, 0xfa, 0x04, 0xf1, 0x0c, 0x00, 0x00, 0x21, 0xfe, 0xf7, 0x38, 0xfe, - 0xfe, 0xf7, 0x0e, 0xfb, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xbd, 0xe8, 0xf0, 0x81, 0xa9, 0x06, - 0xfb, 0xd5, 0x20, 0x46, 0x01, 0x21, 0xbd, 0xe8, 0xf0, 0x41, 0x10, 0x47, 0xe2, 0x69, 0x63, 0x68, - 0x11, 0x68, 0xdb, 0x68, 0xa2, 0x69, 0x00, 0x2b, 0x14, 0xbf, 0x4f, 0xf4, 0x88, 0x73, 0x4f, 0xf4, - 0x80, 0x73, 0x13, 0x43, 0x01, 0x20, 0x00, 0x25, 0x04, 0xf1, 0x24, 0x02, 0xa5, 0x70, 0xca, 0x60, - 0x48, 0x60, 0x0b, 0x60, 0x0b, 0x68, 0x03, 0x43, 0x0b, 0x60, 0xcf, 0xe7, 0x74, 0x38, 0x00, 0x08, - 0xf8, 0xb5, 0x3a, 0x4e, 0xfe, 0xf7, 0xfc, 0xfa, 0x74, 0x69, 0xe7, 0x68, 0x25, 0x68, 0x63, 0x68, - 0x40, 0xf2, 0x0f, 0x13, 0x1d, 0x42, 0x2c, 0xd0, 0x73, 0x68, 0x1a, 0x69, 0x6f, 0xf4, 0x80, 0x73, - 0x23, 0x60, 0xba, 0xb1, 0xab, 0xb2, 0x13, 0xf0, 0x08, 0x0f, 0x0c, 0xbf, 0x00, 0x21, 0x10, 0x21, - 0xd8, 0x07, 0x48, 0xbf, 0x41, 0xf0, 0x04, 0x01, 0x98, 0x07, 0x48, 0xbf, 0x41, 0xf0, 0x08, 0x01, - 0x58, 0x07, 0x48, 0xbf, 0x41, 0xf0, 0x20, 0x01, 0xdb, 0x05, 0x48, 0xbf, 0x41, 0xf0, 0x40, 0x01, - 0x26, 0x48, 0x90, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, 0xa1, 0xfa, 0x6f, 0xf0, - 0x01, 0x01, 0x23, 0x48, 0xfe, 0xf7, 0xdc, 0xfd, 0xfe, 0xf7, 0xb2, 0xfa, 0x00, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0x68, 0x06, 0x0e, 0xd5, 0x79, 0x06, 0x0c, 0xd5, 0x73, 0x68, 0x6f, 0xf0, 0x40, 0x01, - 0x5a, 0x68, 0x21, 0x60, 0x07, 0xea, 0x01, 0x03, 0xe3, 0x60, 0x0a, 0xb1, 0x17, 0x48, 0x90, 0x47, - 0x34, 0x7a, 0xec, 0xb1, 0xea, 0x06, 0x15, 0xd5, 0xfb, 0x06, 0x13, 0xd5, 0x73, 0x68, 0x1b, 0x6a, - 0x0b, 0xb1, 0x12, 0x48, 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, 0x78, 0xfa, - 0x4f, 0xf0, 0xff, 0x31, 0x0e, 0x48, 0xfe, 0xf7, 0xb3, 0xfd, 0xfe, 0xf7, 0x89, 0xfa, 0x00, 0x23, - 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, 0xb4, 0xfa, 0xbd, 0xe8, 0xf8, 0x40, 0xfe, 0xf7, 0xb8, 0xbe, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, 0x63, 0xfa, 0x21, 0x46, 0x05, 0x48, 0xfe, 0xf7, - 0x9f, 0xfd, 0xfe, 0xf7, 0x75, 0xfa, 0x84, 0xf3, 0x11, 0x88, 0xd3, 0xe7, 0xd0, 0x28, 0x00, 0x20, - 0xdc, 0x28, 0x00, 0x20, 0xe0, 0x28, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x07, 0x4c, 0x20, 0x46, 0xfe, 0xf7, 0xbb, 0xff, 0x06, 0x4b, 0x06, 0x4a, 0x62, 0x61, - 0x06, 0x21, 0x03, 0xf1, 0x18, 0x02, 0xc4, 0xe9, 0x06, 0x13, 0x22, 0x62, 0x10, 0xbd, 0x00, 0xbf, - 0xd0, 0x28, 0x00, 0x20, 0xcc, 0x37, 0x00, 0x08, 0x00, 0x4c, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x78, 0x01, 0x2b, 0x2d, 0xe9, 0xf0, 0x41, 0x04, 0x46, 0x55, 0xd0, 0x45, 0x69, 0x00, 0x23, - 0xa3, 0x70, 0x63, 0x70, 0x20, 0x46, 0xff, 0xf7, 0x8b, 0xfe, 0x43, 0x4b, 0x61, 0x69, 0x99, 0x42, - 0x63, 0x68, 0x3b, 0xd0, 0x41, 0x48, 0x5a, 0x69, 0x81, 0x42, 0x38, 0xd0, 0x40, 0x49, 0xb1, 0xfb, - 0xf2, 0xf2, 0x19, 0x8b, 0x08, 0x04, 0x38, 0xd4, 0xd3, 0xf8, 0x0c, 0xe0, 0xd3, 0xf8, 0x20, 0x80, - 0x5f, 0x8b, 0x98, 0x8b, 0xe3, 0x69, 0xaa, 0x60, 0x2a, 0x68, 0x6a, 0x68, 0xd4, 0xf8, 0x18, 0xc0, - 0x1b, 0x68, 0x00, 0x22, 0x2a, 0x60, 0x42, 0xf2, 0x1c, 0x16, 0x42, 0xf2, 0x0c, 0x12, 0xb8, 0xf1, - 0x00, 0x0f, 0x08, 0xbf, 0x16, 0x46, 0xbe, 0xf1, 0x00, 0x0f, 0x14, 0xbf, 0x4f, 0xf4, 0x88, 0x72, - 0x4f, 0xf4, 0x80, 0x72, 0x31, 0x43, 0x42, 0xea, 0x0c, 0x02, 0x01, 0x26, 0x47, 0xf0, 0x40, 0x07, - 0x40, 0xf0, 0xc1, 0x00, 0x24, 0x34, 0x2f, 0x61, 0x68, 0x61, 0xe9, 0x60, 0xdc, 0x60, 0x5e, 0x60, - 0x1a, 0x60, 0x1a, 0x68, 0x32, 0x43, 0x1a, 0x60, 0xbd, 0xe8, 0xf0, 0x81, 0x5a, 0x69, 0x25, 0x49, - 0xb1, 0xfb, 0xf2, 0xf2, 0x19, 0x8b, 0x08, 0x04, 0xc6, 0xd5, 0x22, 0xf0, 0x07, 0x00, 0x02, 0xf0, - 0x07, 0x02, 0x42, 0xea, 0x40, 0x02, 0xbf, 0xe7, 0x1f, 0x4b, 0x98, 0x42, 0x15, 0xd0, 0x63, 0x68, - 0x1b, 0x8b, 0x03, 0xf4, 0xa0, 0x53, 0xb3, 0xf5, 0x80, 0x5f, 0x03, 0xd1, 0xa3, 0x69, 0x43, 0xf4, - 0x20, 0x53, 0xa3, 0x61, 0xd4, 0xe9, 0x07, 0x23, 0x65, 0x69, 0x10, 0x68, 0x19, 0x68, 0x00, 0x22, - 0x2b, 0x1d, 0x83, 0x60, 0x8b, 0x60, 0xa2, 0x84, 0x91, 0xe7, 0x03, 0x46, 0x13, 0x4a, 0xc0, 0x69, - 0x06, 0x21, 0xff, 0xf7, 0xed, 0xfc, 0x23, 0x46, 0x11, 0x4a, 0x20, 0x6a, 0x06, 0x21, 0xff, 0xf7, - 0xe7, 0xfc, 0x10, 0x4b, 0x1a, 0x6c, 0x42, 0xf4, 0x00, 0x22, 0x1a, 0x64, 0x1a, 0x6e, 0x42, 0xf4, - 0x00, 0x22, 0x1a, 0x66, 0x06, 0x21, 0x34, 0x20, 0x1b, 0x6e, 0xfe, 0xf7, 0x91, 0xff, 0xa3, 0x69, - 0x43, 0xf0, 0x00, 0x63, 0xa3, 0x61, 0xca, 0xe7, 0x00, 0x10, 0x01, 0x40, 0x00, 0x14, 0x01, 0x40, - 0x80, 0xde, 0x80, 0x02, 0x00, 0xbd, 0x01, 0x05, 0xd0, 0x28, 0x00, 0x20, 0x81, 0x20, 0x00, 0x08, - 0x01, 0x20, 0x00, 0x08, 0x00, 0x38, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0xb4, 0x03, 0x6a, 0x45, 0x68, 0x84, 0x69, 0x1b, 0x68, 0x6d, 0x68, 0xda, 0x60, 0x44, 0xf4, - 0x8a, 0x64, 0x59, 0x60, 0x1c, 0x60, 0x6d, 0xb1, 0x42, 0x69, 0x6f, 0xf0, 0x40, 0x01, 0x11, 0x60, - 0xd1, 0x68, 0x41, 0xf0, 0x40, 0x01, 0xd1, 0x60, 0x1a, 0x68, 0x42, 0xf0, 0x01, 0x02, 0x1a, 0x60, - 0x30, 0xbc, 0x70, 0x47, 0x02, 0x7a, 0x00, 0x2a, 0xee, 0xd0, 0xf5, 0xe7, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x6a, 0x0a, 0x68, 0x13, 0x68, 0x23, 0xf0, 0x1f, 0x03, 0x13, 0x60, 0x13, 0x68, 0xdb, 0x07, - 0xfc, 0xd4, 0x08, 0x7a, 0x49, 0x68, 0x3d, 0x23, 0x83, 0x40, 0x0b, 0x60, 0x50, 0x68, 0x70, 0x47, - 0xf0, 0xb4, 0xc5, 0x69, 0x2b, 0x68, 0x1c, 0x68, 0x24, 0xf0, 0x1f, 0x04, 0x1c, 0x60, 0x1c, 0x68, - 0xe4, 0x07, 0xfc, 0xd4, 0x44, 0x68, 0x2f, 0x7a, 0x6e, 0x68, 0x65, 0x6a, 0x3d, 0x24, 0xbc, 0x40, - 0x34, 0x60, 0x80, 0x69, 0xda, 0x60, 0x00, 0x2d, 0x0c, 0xbf, 0x4f, 0xf4, 0x82, 0x62, 0x4f, 0xf4, - 0xa3, 0x62, 0x02, 0x43, 0x59, 0x60, 0x1a, 0x60, 0x1a, 0x68, 0x42, 0xf0, 0x01, 0x02, 0x1a, 0x60, - 0xf0, 0xbc, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x4a, 0x41, 0x49, 0x13, 0x69, 0x41, 0x48, 0xf0, 0xb4, 0x40, 0xf2, 0xff, 0x14, 0x23, 0x43, - 0x13, 0x61, 0x13, 0x69, 0x3e, 0x4e, 0x3f, 0x4d, 0x23, 0xf4, 0xff, 0x73, 0x23, 0xf0, 0x01, 0x03, - 0x13, 0x61, 0x13, 0x69, 0x13, 0x6b, 0x23, 0x43, 0x13, 0x63, 0x13, 0x6d, 0x23, 0x43, 0x13, 0x65, - 0x6f, 0xf4, 0xa8, 0x47, 0x00, 0x23, 0x12, 0x6d, 0x4b, 0x60, 0x4f, 0xf6, 0xff, 0x72, 0x8f, 0x60, - 0xce, 0x60, 0x35, 0x4e, 0x4a, 0x61, 0x0e, 0x62, 0x34, 0x4e, 0x4e, 0x62, 0x06, 0xf1, 0x2a, 0x56, - 0x06, 0xf5, 0xb0, 0x16, 0x0e, 0x60, 0x40, 0x26, 0x46, 0x60, 0x4f, 0xf0, 0xff, 0x31, 0x30, 0x4e, - 0x81, 0x60, 0xc6, 0x60, 0x4f, 0xf0, 0x80, 0x66, 0x42, 0x61, 0x06, 0x62, 0x4f, 0xf4, 0x02, 0x56, - 0x43, 0x62, 0x06, 0x60, 0x2b, 0x4e, 0x2c, 0x4c, 0x6b, 0x60, 0xa9, 0x60, 0xee, 0x60, 0x01, 0x26, - 0x6a, 0x61, 0x2b, 0x62, 0x6b, 0x62, 0x2e, 0x60, 0x28, 0x4d, 0x63, 0x60, 0xa1, 0x60, 0xe5, 0x60, - 0x40, 0xf6, 0xff, 0x75, 0x65, 0x61, 0x26, 0x4d, 0x23, 0x62, 0x26, 0x4e, 0x63, 0x62, 0x25, 0x60, - 0xc0, 0xf8, 0x04, 0x3c, 0x24, 0x4d, 0xc0, 0xf8, 0x08, 0x1c, 0x04, 0xf5, 0x80, 0x54, 0xc0, 0xf8, - 0x0c, 0x3c, 0xc0, 0xf8, 0x14, 0x2c, 0xc0, 0xf8, 0x20, 0x3c, 0xc0, 0xf8, 0x24, 0x3c, 0xc0, 0xf8, - 0x00, 0x3c, 0x00, 0xf5, 0xe0, 0x50, 0x73, 0x60, 0xb1, 0x60, 0xf3, 0x60, 0x72, 0x61, 0x33, 0x62, - 0x73, 0x62, 0x33, 0x60, 0x6b, 0x60, 0xa9, 0x60, 0xeb, 0x60, 0x6a, 0x61, 0x2b, 0x62, 0x6b, 0x62, - 0x2b, 0x60, 0x63, 0x60, 0xa1, 0x60, 0xe3, 0x60, 0x62, 0x61, 0x23, 0x62, 0x63, 0x62, 0x23, 0x60, - 0x43, 0x60, 0xf0, 0xbc, 0x81, 0x60, 0xc3, 0x60, 0x42, 0x61, 0x03, 0x62, 0x43, 0x62, 0x03, 0x60, - 0xff, 0xf7, 0x5e, 0xb9, 0x00, 0x38, 0x02, 0x40, 0x00, 0x00, 0x02, 0x40, 0x00, 0x04, 0x02, 0x40, - 0x54, 0x00, 0x01, 0x40, 0x00, 0x08, 0x02, 0x40, 0x00, 0x00, 0x56, 0x55, 0x00, 0xaa, 0x0a, 0x00, - 0x15, 0x85, 0xaa, 0xaa, 0xa8, 0xaa, 0xaa, 0xaa, 0x00, 0x0c, 0x02, 0x40, 0x55, 0x50, 0x55, 0x00, - 0x00, 0x01, 0x00, 0x55, 0x00, 0x14, 0x02, 0x40, 0x00, 0x18, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x4b, 0x1a, 0x69, 0x00, 0x2a, 0x75, 0xdb, 0x70, 0xb5, 0x41, 0x4b, 0xda, 0x68, 0xd1, 0x03, - 0xfc, 0xd4, 0x1a, 0x69, 0x22, 0xf4, 0x80, 0x72, 0x1a, 0x61, 0x1a, 0x69, 0x42, 0xf4, 0x00, 0x72, - 0x1a, 0x61, 0x1a, 0x69, 0x22, 0xf0, 0xf8, 0x02, 0x1a, 0x61, 0xc2, 0x07, 0x03, 0xd5, 0x1a, 0x69, - 0x42, 0xf0, 0x08, 0x02, 0x1a, 0x61, 0x86, 0x07, 0x04, 0xd5, 0x35, 0x4a, 0x13, 0x69, 0x43, 0xf0, - 0x10, 0x03, 0x13, 0x61, 0x45, 0x07, 0x04, 0xd5, 0x31, 0x4a, 0x13, 0x69, 0x43, 0xf0, 0x20, 0x03, - 0x13, 0x61, 0x04, 0x07, 0x04, 0xd5, 0x2e, 0x4a, 0x13, 0x69, 0x43, 0xf0, 0x40, 0x03, 0x13, 0x61, - 0xc1, 0x06, 0x41, 0xd4, 0x2a, 0x4b, 0x1a, 0x69, 0x42, 0xf0, 0x02, 0x02, 0x1a, 0x61, 0x1a, 0x69, - 0x42, 0xf4, 0x80, 0x32, 0x1a, 0x61, 0xda, 0x68, 0xd2, 0x03, 0xfc, 0xd4, 0x1a, 0x69, 0x22, 0xf0, - 0x02, 0x02, 0x1a, 0x61, 0x1a, 0x69, 0x42, 0xf0, 0x00, 0x42, 0x06, 0x46, 0x1a, 0x61, 0x00, 0x28, - 0x3a, 0xd0, 0x05, 0x46, 0x4f, 0xf0, 0x00, 0x64, 0x01, 0x3d, 0xed, 0xb2, 0x28, 0x46, 0x00, 0xf0, - 0x77, 0xf9, 0x04, 0x44, 0x00, 0x2d, 0xf7, 0xd1, 0x30, 0x46, 0x00, 0xf0, 0x71, 0xf9, 0x03, 0x28, - 0x05, 0xd8, 0x0a, 0xe0, 0x04, 0x38, 0x03, 0x28, 0x04, 0xf1, 0x04, 0x04, 0x05, 0xd9, 0x23, 0x68, - 0x01, 0x33, 0xf7, 0xd0, 0x6f, 0xf0, 0x0a, 0x00, 0x70, 0xbd, 0x00, 0x28, 0xfc, 0xd0, 0x23, 0x78, - 0xff, 0x2b, 0xf7, 0xd1, 0x20, 0x44, 0x02, 0xe0, 0x23, 0x78, 0xff, 0x2b, 0xf2, 0xd1, 0x01, 0x34, - 0xa0, 0x42, 0xf9, 0xd1, 0x00, 0x20, 0x70, 0xbd, 0x09, 0x4a, 0x13, 0x69, 0x43, 0xf0, 0x80, 0x03, - 0x13, 0x61, 0xb7, 0xe7, 0x07, 0x49, 0x08, 0x4a, 0x59, 0x60, 0x5a, 0x60, 0x1b, 0x69, 0x00, 0x2b, - 0x82, 0xda, 0x4f, 0xf0, 0xff, 0x30, 0x70, 0x47, 0x4f, 0xf0, 0x00, 0x64, 0xcc, 0xe7, 0x00, 0xbf, - 0x00, 0x3c, 0x02, 0x40, 0x23, 0x01, 0x67, 0x45, 0xab, 0x89, 0xef, 0xcd, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0x0b, 0x46, 0x01, 0x46, 0x18, 0x46, 0xfd, 0xf7, 0x2c, 0xfe, 0x00, 0x20, 0x08, 0xbd, - 0x2d, 0xe9, 0xf0, 0x43, 0x46, 0x4b, 0x1f, 0x69, 0x00, 0x2f, 0x83, 0xb0, 0x04, 0x46, 0x0e, 0x46, - 0x15, 0x46, 0x79, 0xdb, 0x42, 0x4f, 0xfb, 0x68, 0xd8, 0x03, 0xfc, 0xd4, 0x3b, 0x69, 0x23, 0xf4, - 0x80, 0x73, 0x3b, 0x61, 0x3b, 0x69, 0x43, 0xf4, 0x00, 0x73, 0x3b, 0x61, 0x14, 0xf0, 0x03, 0x03, - 0x23, 0xd0, 0xa4, 0xeb, 0x03, 0x09, 0x02, 0xa8, 0xc3, 0xf1, 0x04, 0x08, 0xd9, 0xf8, 0x00, 0x20, - 0x40, 0xf8, 0x04, 0x2d, 0xa8, 0x45, 0x28, 0xbf, 0xa8, 0x46, 0x18, 0x44, 0x42, 0x46, 0x31, 0x46, - 0xfd, 0xf7, 0x00, 0xfe, 0x3b, 0x69, 0x01, 0x99, 0x31, 0x4a, 0x43, 0xf0, 0x01, 0x03, 0x3b, 0x61, - 0xc9, 0xf8, 0x00, 0x10, 0xd3, 0x68, 0xd9, 0x03, 0xfc, 0xd4, 0x13, 0x69, 0x23, 0xf0, 0x01, 0x03, - 0x44, 0x44, 0x46, 0x44, 0xa5, 0xeb, 0x08, 0x05, 0x13, 0x61, 0x03, 0x2d, 0x23, 0xd9, 0xa5, 0xf1, - 0x04, 0x0e, 0x4f, 0xea, 0x9e, 0x0c, 0x26, 0x4a, 0x06, 0xeb, 0x8c, 0x07, 0x31, 0x1f, 0xa0, 0x1b, - 0x13, 0x69, 0x51, 0xf8, 0x04, 0x8f, 0x43, 0xf0, 0x01, 0x03, 0x13, 0x61, 0x40, 0xf8, 0x01, 0x80, - 0xd3, 0x68, 0xdb, 0x03, 0xfc, 0xd4, 0x13, 0x69, 0xb9, 0x42, 0x23, 0xf0, 0x01, 0x03, 0x13, 0x61, - 0xee, 0xd1, 0x04, 0x34, 0x2e, 0xf0, 0x03, 0x0e, 0x0c, 0xf1, 0x01, 0x0c, 0x74, 0x44, 0x06, 0xeb, - 0x8c, 0x06, 0x05, 0xf0, 0x03, 0x05, 0x45, 0xb9, 0x15, 0x4a, 0x13, 0x69, 0x43, 0xf0, 0x00, 0x43, - 0x13, 0x61, 0x00, 0x20, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x02, 0xa8, 0x23, 0x68, 0x40, 0xf8, - 0x04, 0x3d, 0x2a, 0x46, 0x31, 0x46, 0xfd, 0xf7, 0xb5, 0xfd, 0x0d, 0x4a, 0x01, 0x99, 0x13, 0x69, - 0x43, 0xf0, 0x01, 0x03, 0x13, 0x61, 0x21, 0x60, 0xd3, 0x68, 0xdb, 0x03, 0xfc, 0xd4, 0x13, 0x69, - 0x23, 0xf0, 0x01, 0x03, 0x13, 0x61, 0xdf, 0xe7, 0x06, 0x49, 0x07, 0x4a, 0x59, 0x60, 0x5a, 0x60, - 0x1b, 0x69, 0x00, 0x2b, 0xbf, 0xf6, 0x7e, 0xaf, 0x4f, 0xf0, 0xff, 0x30, 0xda, 0xe7, 0x00, 0xbf, - 0x00, 0x3c, 0x02, 0x40, 0x23, 0x01, 0x67, 0x45, 0xab, 0x89, 0xef, 0xcd, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0x23, 0x4d, 0x23, 0x4c, 0x4f, 0xf4, 0x80, 0x61, 0x0e, 0x46, 0x4f, 0xf4, 0x00, 0x77, - 0x28, 0x46, 0x01, 0x22, 0xff, 0xf7, 0xe4, 0xfa, 0x28, 0x46, 0x01, 0x22, 0x39, 0x46, 0xae, 0x61, - 0xff, 0xf7, 0xde, 0xfa, 0x28, 0x46, 0x01, 0x22, 0x4f, 0xf4, 0x80, 0x71, 0xaf, 0x61, 0xff, 0xf7, - 0xd7, 0xfa, 0x4f, 0xf4, 0x80, 0x73, 0xab, 0x61, 0x28, 0x46, 0x01, 0x22, 0x4f, 0xf4, 0x00, 0x61, - 0xff, 0xf7, 0xce, 0xfa, 0x4f, 0xf4, 0x00, 0x63, 0x39, 0x46, 0xab, 0x61, 0x20, 0x46, 0x01, 0x22, - 0xff, 0xf7, 0xc6, 0xfa, 0x4f, 0xf0, 0x00, 0x73, 0xa3, 0x61, 0x20, 0x46, 0x01, 0x22, 0x4f, 0xf4, - 0x00, 0x41, 0xff, 0xf7, 0xbd, 0xfa, 0x4f, 0xf0, 0x00, 0x43, 0x31, 0x46, 0xa3, 0x61, 0x20, 0x46, - 0x01, 0x22, 0xff, 0xf7, 0xb5, 0xfa, 0x4f, 0xf0, 0x80, 0x63, 0xa3, 0x61, 0x20, 0x46, 0x01, 0x22, - 0x4f, 0xf4, 0x80, 0x41, 0xff, 0xf7, 0xac, 0xfa, 0x4f, 0xf0, 0x80, 0x43, 0xa3, 0x61, 0xf8, 0xbd, - 0x00, 0x00, 0x02, 0x40, 0x00, 0x0c, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb4, 0x0e, 0x4b, 0x0e, 0x49, 0x1a, 0x68, 0x92, 0xf8, 0x91, 0x30, 0x43, 0xf0, 0x01, 0x03, - 0x82, 0xf8, 0x91, 0x30, 0x0b, 0x68, 0x02, 0x24, 0x03, 0x20, 0x4f, 0xf4, 0xe1, 0x31, 0x83, 0xf8, - 0x2a, 0x47, 0x83, 0xf8, 0x2e, 0x47, 0x83, 0xf8, 0x2b, 0x07, 0x83, 0xf8, 0x2f, 0x07, 0xc2, 0xf8, - 0x80, 0x10, 0xc3, 0xf8, 0x30, 0x18, 0x5d, 0xf8, 0x04, 0x4b, 0x70, 0x47, 0x28, 0x16, 0x00, 0x20, - 0x2c, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0x4b, 0x0b, 0x4a, 0x1b, 0x68, 0x11, 0x68, 0x93, 0xf8, 0x90, 0x20, 0x01, 0x20, 0x02, 0x43, - 0x83, 0xf8, 0x90, 0x20, 0xc1, 0xf8, 0x38, 0x0a, 0x93, 0xf8, 0x90, 0x20, 0x04, 0x21, 0x42, 0xf0, - 0x08, 0x02, 0x83, 0xf8, 0x6b, 0x10, 0x83, 0xf8, 0x90, 0x20, 0x70, 0x47, 0x28, 0x16, 0x00, 0x20, - 0x2c, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x28, 0x11, 0xd9, 0xa0, 0xf1, 0x0c, 0x03, 0x03, 0x2b, 0x0d, 0xd9, 0x04, 0x28, 0x0e, 0xd0, - 0x10, 0x28, 0x0c, 0xd0, 0x43, 0x1f, 0x06, 0x2b, 0x0c, 0xd9, 0x11, 0x38, 0x06, 0x28, 0x94, 0xbf, - 0x4f, 0xf4, 0x00, 0x30, 0x00, 0x20, 0x70, 0x47, 0x4f, 0xf4, 0x80, 0x40, 0x70, 0x47, 0x4f, 0xf4, - 0x80, 0x30, 0x70, 0x47, 0x4f, 0xf4, 0x00, 0x30, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x41, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfd, 0xf7, 0xa1, 0xfe, 0x12, 0x4b, - 0x12, 0x4f, 0xdb, 0x69, 0x1b, 0x68, 0x5e, 0x68, 0x3b, 0x6a, 0x3d, 0x6a, 0xc6, 0xf1, 0x20, 0x06, - 0xb3, 0x42, 0xc8, 0xbf, 0x20, 0x36, 0xae, 0x42, 0x0e, 0xdd, 0xdf, 0xf8, 0x34, 0x80, 0x2c, 0x46, - 0x03, 0xe0, 0xa6, 0x42, 0x04, 0xf0, 0x1f, 0x05, 0x06, 0xd0, 0x79, 0x5d, 0x40, 0x46, 0xfe, 0xf7, - 0x67, 0xfb, 0x01, 0x34, 0x00, 0x28, 0xf4, 0xd0, 0x3d, 0x62, 0xfd, 0xf7, 0x99, 0xfe, 0x00, 0x23, - 0x83, 0xf3, 0x11, 0x88, 0xbd, 0xe8, 0xf0, 0x81, 0xd0, 0x28, 0x00, 0x20, 0xf8, 0x28, 0x00, 0x20, - 0xcc, 0x2a, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xf7, 0xc6, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xf7, 0xbe, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x1e, 0x4c, 0x94, 0xf8, 0xf1, 0x32, 0x13, 0xf0, 0x01, 0x03, 0x82, 0xb0, 0x02, 0xd1, - 0x03, 0x60, 0x02, 0xb0, 0x70, 0xbd, 0x1a, 0x4e, 0x1a, 0x48, 0x1b, 0x4d, 0x00, 0xf0, 0xf8, 0xfa, - 0x33, 0x68, 0x1a, 0x48, 0x93, 0xf8, 0x2b, 0x17, 0x40, 0xf2, 0x02, 0x42, 0x00, 0xf0, 0x28, 0xfa, - 0x33, 0x68, 0x17, 0x48, 0x93, 0xf8, 0x2a, 0x17, 0x40, 0xf2, 0x02, 0x42, 0x00, 0xf0, 0x20, 0xfa, - 0x00, 0x26, 0x14, 0x48, 0x00, 0xf0, 0xe4, 0xfa, 0x05, 0xf1, 0x24, 0x01, 0x05, 0xf5, 0xea, 0x70, - 0x33, 0x46, 0x4f, 0xf4, 0xd7, 0x72, 0x00, 0x96, 0xfe, 0xf7, 0x02, 0xfb, 0x0e, 0x49, 0xd4, 0xf8, - 0xe0, 0x32, 0x0e, 0x48, 0x4b, 0x61, 0xfe, 0xf7, 0xab, 0xfb, 0x0c, 0x48, 0x2e, 0x62, 0x2a, 0x46, - 0x20, 0x21, 0x02, 0xb0, 0xbd, 0xe8, 0x70, 0x40, 0xfe, 0xf7, 0xba, 0xbb, 0x00, 0x00, 0x00, 0x10, - 0x2c, 0x16, 0x00, 0x20, 0x90, 0x38, 0x00, 0x08, 0xf8, 0x28, 0x00, 0x20, 0xa8, 0x38, 0x00, 0x08, - 0xb8, 0x38, 0x00, 0x08, 0xc8, 0x38, 0x00, 0x08, 0x00, 0x16, 0x00, 0x20, 0xd0, 0x28, 0x00, 0x20, - 0x10, 0xb5, 0x82, 0xb0, 0x02, 0xa8, 0x14, 0x46, 0x40, 0xf8, 0x04, 0x2d, 0x4f, 0xf4, 0x7a, 0x73, - 0x0a, 0x46, 0x01, 0x46, 0x06, 0x48, 0xfe, 0xf7, 0xb3, 0xfb, 0x01, 0x9a, 0xa2, 0x42, 0x04, 0xd0, - 0x23, 0x46, 0x04, 0x49, 0x04, 0x48, 0x00, 0xf0, 0xab, 0xfa, 0x02, 0xb0, 0x10, 0xbd, 0x00, 0xbf, - 0xd0, 0x28, 0x00, 0x20, 0xdc, 0x38, 0x00, 0x08, 0xb8, 0xba, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x48, 0xfe, 0xf7, 0xf5, 0xba, 0x00, 0xbf, 0xcc, 0x2a, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x63, 0x49, 0x81, 0x60, 0xf0, 0xb5, 0x00, 0x24, 0x4f, 0xf4, 0x7f, 0x45, 0x04, 0x60, 0xc4, 0x60, - 0x84, 0x61, 0x44, 0x62, 0x04, 0x63, 0xc4, 0x63, 0x84, 0x64, 0x44, 0x65, 0x04, 0x66, 0xc4, 0x66, - 0x84, 0x67, 0x85, 0x80, 0x05, 0x82, 0x85, 0x83, 0x05, 0x85, 0x85, 0x86, 0xa0, 0xf8, 0x40, 0x50, - 0xa0, 0xf8, 0x4c, 0x50, 0xa0, 0xf8, 0x58, 0x50, 0xa0, 0xf8, 0x64, 0x50, 0x41, 0x61, 0x01, 0x62, - 0xc1, 0x62, 0x81, 0x63, 0x41, 0x64, 0x01, 0x65, 0xc1, 0x65, 0x81, 0x66, 0x41, 0x67, 0xc0, 0xf8, - 0x80, 0x10, 0x22, 0x46, 0xa0, 0xf8, 0x70, 0x50, 0x00, 0xf1, 0xb0, 0x03, 0xa0, 0xf8, 0x7c, 0x50, - 0xc0, 0xf8, 0x84, 0x40, 0xa0, 0xf8, 0x88, 0x50, 0xc0, 0xf8, 0x90, 0x40, 0xa0, 0xf8, 0x94, 0x50, - 0xc0, 0xf8, 0xa0, 0x40, 0xa0, 0xf8, 0xa4, 0x50, 0xc0, 0xf8, 0x8c, 0x10, 0xc0, 0xf8, 0x98, 0x10, - 0xc0, 0xf8, 0xa8, 0x10, 0x00, 0xf5, 0xb8, 0x75, 0xff, 0x24, 0x99, 0x60, 0x1a, 0x60, 0x1a, 0x71, - 0x5c, 0x71, 0x0c, 0x33, 0xab, 0x42, 0xf8, 0xd1, 0x4f, 0xf4, 0x7f, 0x43, 0xc0, 0xf8, 0x70, 0x21, - 0xc0, 0xf8, 0x7c, 0x21, 0xc0, 0xf8, 0x88, 0x21, 0xc0, 0xf8, 0x94, 0x21, 0xa0, 0xf8, 0x74, 0x31, - 0xa0, 0xf8, 0x80, 0x31, 0xa0, 0xf8, 0x8c, 0x31, 0xa0, 0xf8, 0x98, 0x31, 0xc0, 0xf8, 0x78, 0x11, - 0xc0, 0xf8, 0x84, 0x11, 0xc0, 0xf8, 0x90, 0x11, 0xc0, 0xf8, 0x9c, 0x11, 0x00, 0xf5, 0xd0, 0x73, - 0x00, 0xf5, 0x48, 0x75, 0x00, 0x22, 0xff, 0x24, 0x00, 0x26, 0x00, 0x27, 0x99, 0x60, 0x1a, 0x60, - 0x1a, 0x71, 0x5c, 0x71, 0xda, 0x60, 0xc3, 0xe9, 0x04, 0x67, 0x5a, 0x76, 0x9a, 0x76, 0x1c, 0x76, - 0x20, 0x33, 0xab, 0x42, 0xf2, 0xd1, 0x00, 0xf5, 0x88, 0x65, 0x00, 0x22, 0xff, 0x24, 0x99, 0x60, - 0x1a, 0x60, 0x1a, 0x71, 0x5c, 0x71, 0xda, 0x60, 0x1a, 0x75, 0x1a, 0x61, 0x18, 0x33, 0xab, 0x42, - 0xf5, 0xd1, 0x20, 0x4c, 0xdf, 0xf8, 0x98, 0xe0, 0xdf, 0xf8, 0x98, 0xc0, 0xc0, 0xf8, 0x48, 0x14, - 0x4f, 0xf4, 0x7f, 0x47, 0xc0, 0xf8, 0x40, 0x24, 0xc0, 0xf8, 0x58, 0x14, 0xc0, 0xf8, 0x4c, 0x24, - 0xc0, 0xf8, 0x50, 0x24, 0xc0, 0xf8, 0x5c, 0x24, 0x04, 0xf5, 0x90, 0x75, 0x26, 0x46, 0x23, 0x46, - 0xa0, 0xf8, 0x44, 0x74, 0xa0, 0xf8, 0x54, 0x74, 0x13, 0x49, 0xc0, 0xf8, 0xac, 0xe0, 0x13, 0x4a, - 0xc0, 0xf8, 0x9c, 0xc0, 0x01, 0xe0, 0x51, 0xf8, 0x04, 0x2f, 0xc3, 0xf8, 0x2c, 0x23, 0x18, 0x33, - 0xab, 0x42, 0xf8, 0xd1, 0x0e, 0x49, 0x0f, 0x4a, 0x00, 0x23, 0x84, 0xf8, 0xb8, 0x31, 0x01, 0x33, - 0x0c, 0x2b, 0xc4, 0xf8, 0xac, 0x21, 0x04, 0xf1, 0x20, 0x04, 0x02, 0xd0, 0x51, 0xf8, 0x04, 0x2f, - 0xf3, 0xe7, 0x09, 0x4a, 0x09, 0x4b, 0xc6, 0xf8, 0x4c, 0x24, 0xc6, 0xf8, 0x5c, 0x34, 0xf0, 0xbd, - 0xf0, 0x2a, 0x00, 0x20, 0xf8, 0x2a, 0x00, 0x20, 0x28, 0x39, 0x00, 0x08, 0x88, 0x39, 0x00, 0x08, - 0x58, 0x39, 0x00, 0x08, 0x8c, 0x39, 0x00, 0x08, 0xa0, 0x39, 0x00, 0x08, 0xa4, 0x39, 0x00, 0x08, - 0x90, 0x39, 0x00, 0x08, 0x98, 0x39, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x4b, 0x98, 0x42, 0x1f, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x21, 0xd0, 0x03, 0xf5, - 0x80, 0x63, 0x98, 0x42, 0x19, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x1b, 0xd0, 0x03, 0xf5, - 0x80, 0x63, 0x98, 0x42, 0x19, 0xd0, 0x03, 0xf5, 0x00, 0x63, 0x98, 0x42, 0x0f, 0xd0, 0x03, 0xf5, - 0x80, 0x63, 0x98, 0x42, 0x13, 0xd0, 0x0c, 0x49, 0x0c, 0x4b, 0x0d, 0x4a, 0x88, 0x42, 0x0c, 0xbf, - 0x18, 0x46, 0x10, 0x46, 0x70, 0x47, 0x0b, 0x48, 0x70, 0x47, 0x0b, 0x48, 0x70, 0x47, 0x0b, 0x48, - 0x70, 0x47, 0x0b, 0x48, 0x70, 0x47, 0x0b, 0x48, 0x70, 0x47, 0x0b, 0x48, 0x70, 0x47, 0x0b, 0x48, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x02, 0x40, 0x00, 0x14, 0x02, 0x40, 0x1c, 0x39, 0x00, 0x08, - 0x20, 0x39, 0x00, 0x08, 0x00, 0x39, 0x00, 0x08, 0x08, 0x39, 0x00, 0x08, 0x14, 0x39, 0x00, 0x08, - 0x04, 0x39, 0x00, 0x08, 0x0c, 0x39, 0x00, 0x08, 0x10, 0x39, 0x00, 0x08, 0x18, 0x39, 0x00, 0x08, - 0x01, 0x29, 0x07, 0xd9, 0x10, 0xb5, 0x8c, 0x1e, 0x23, 0x06, 0x58, 0xbf, 0x04, 0xf0, 0x0f, 0x00, - 0x03, 0xd4, 0x10, 0xbd, 0x4f, 0xf0, 0xff, 0x30, 0x70, 0x47, 0x02, 0x46, 0x0b, 0x46, 0x41, 0xf2, - 0xf2, 0x70, 0x03, 0x49, 0x00, 0xf0, 0x64, 0xf9, 0x4f, 0xf0, 0xff, 0x30, 0x10, 0xbd, 0x00, 0xbf, - 0xa8, 0x39, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x48, 0xff, 0xf7, 0xb5, 0xbe, 0x00, 0xbf, 0xf8, 0x2a, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x4b, 0x1b, 0x68, 0x40, 0x20, 0x3f, 0x21, 0x13, 0x22, 0x83, 0xf8, 0x0c, 0x08, 0x83, 0xf8, - 0x0d, 0x18, 0x83, 0xf8, 0x0e, 0x28, 0xff, 0xf7, 0x2b, 0xbd, 0x00, 0xbf, 0x2c, 0x16, 0x00, 0x20, - 0x30, 0xb4, 0x0f, 0x4b, 0x0f, 0x49, 0x1a, 0x68, 0x92, 0xf8, 0x91, 0x30, 0x43, 0xf0, 0x21, 0x03, - 0x82, 0xf8, 0x91, 0x30, 0x0b, 0x68, 0x2c, 0x20, 0x2d, 0x21, 0x4f, 0xf4, 0x16, 0x45, 0x4f, 0xf4, - 0xe1, 0x34, 0x83, 0xf8, 0x2a, 0x07, 0x83, 0xf8, 0x2e, 0x07, 0x83, 0xf8, 0x2b, 0x17, 0x83, 0xf8, - 0x2f, 0x17, 0xc2, 0xf8, 0x80, 0x50, 0xc3, 0xf8, 0x30, 0x48, 0x30, 0xbc, 0xff, 0xf7, 0x58, 0xbd, - 0x28, 0x16, 0x00, 0x20, 0x2c, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0b, 0x4b, 0x0c, 0x4a, 0x1b, 0x68, 0x11, 0x68, 0x93, 0xf8, 0x90, 0x20, 0x03, 0x20, 0x42, 0xf0, - 0x04, 0x02, 0x83, 0xf8, 0x90, 0x20, 0xc1, 0xf8, 0x38, 0x0a, 0x93, 0xf8, 0x90, 0x20, 0x36, 0x21, - 0x42, 0xf0, 0x08, 0x02, 0x83, 0xf8, 0x6b, 0x10, 0x83, 0xf8, 0x90, 0x20, 0xff, 0xf7, 0x60, 0xbd, - 0x28, 0x16, 0x00, 0x20, 0x2c, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x29, 0x08, 0xd9, 0x10, 0xb5, 0x8c, 0x1e, 0x23, 0x06, 0x06, 0xd4, 0x24, 0x11, 0x07, 0x4b, - 0x53, 0xf8, 0x24, 0x00, 0x10, 0xbd, 0x00, 0x20, 0x70, 0x47, 0x02, 0x46, 0x0b, 0x46, 0x41, 0xf2, - 0xf2, 0x70, 0x03, 0x49, 0x00, 0xf0, 0xe4, 0xf8, 0x00, 0x20, 0x10, 0xbd, 0x4c, 0x3a, 0x00, 0x08, - 0xa8, 0x39, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xb5, 0x83, 0xb0, 0x05, 0x46, 0x0e, 0x46, 0x17, 0x46, 0xff, 0xf7, 0xd9, 0xff, 0x31, 0x46, - 0x04, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x54, 0xff, 0x84, 0xb1, 0x06, 0x46, 0x20, 0x46, 0xff, 0xf7, - 0x07, 0xff, 0x2a, 0x46, 0x03, 0x46, 0x0b, 0x49, 0x0b, 0x48, 0x00, 0x96, 0x00, 0xf0, 0xb8, 0xf8, - 0x2a, 0x46, 0x31, 0x46, 0x20, 0x46, 0x00, 0xf0, 0x5b, 0xf8, 0x08, 0xb1, 0x03, 0xb0, 0xf0, 0xbd, - 0x01, 0x21, 0x3a, 0x46, 0x20, 0x46, 0xb1, 0x40, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x40, 0xfe, 0xf7, - 0x87, 0xbf, 0x00, 0xbf, 0x6c, 0x3a, 0x00, 0x08, 0x58, 0x2f, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x49, 0x02, 0x48, 0x00, 0xf0, 0xac, 0xb8, 0x44, 0x3a, 0x00, 0x08, 0x58, 0x2f, 0x00, 0x20, - 0x08, 0xb5, 0x1c, 0x4b, 0x98, 0x42, 0x1e, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x1e, 0xd0, - 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x18, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x18, 0xd0, - 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x16, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x14, 0xd0, - 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x1a, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x08, 0xbf, - 0x07, 0x20, 0x0c, 0xd1, 0x08, 0xbd, 0x00, 0x20, 0x08, 0xbd, 0x02, 0x20, 0x08, 0xbd, 0x01, 0x20, - 0x08, 0xbd, 0x03, 0x20, 0x08, 0xbd, 0x04, 0x20, 0x08, 0xbd, 0x05, 0x20, 0x08, 0xbd, 0x06, 0x49, - 0x41, 0xf2, 0xf4, 0x70, 0x00, 0xf0, 0x6c, 0xf8, 0x4f, 0xf0, 0xff, 0x30, 0x08, 0xbd, 0x06, 0x20, - 0x08, 0xbd, 0x00, 0xbf, 0x00, 0x00, 0x02, 0x40, 0x84, 0x3a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x41, 0x19, 0x4b, 0x1c, 0x68, 0x82, 0xb0, 0x2c, 0xb3, 0x0d, 0x46, 0x17, 0x46, - 0x80, 0x46, 0xff, 0xf7, 0xb5, 0xff, 0x16, 0x4c, 0x05, 0xeb, 0x00, 0x16, 0x54, 0xf8, 0x26, 0x00, - 0x40, 0xb9, 0x14, 0x4a, 0x44, 0xf8, 0x26, 0x70, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x02, 0xb0, - 0xbd, 0xe8, 0xf0, 0x81, 0x40, 0x46, 0xff, 0xf7, 0x83, 0xfe, 0x54, 0xf8, 0x26, 0x30, 0x01, 0x93, - 0x02, 0x46, 0x00, 0x97, 0x2b, 0x46, 0x0c, 0x49, 0x41, 0xf2, 0xf5, 0x70, 0x00, 0xf0, 0x38, 0xf8, - 0x01, 0x20, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x08, 0x49, 0x41, 0xf2, 0xf3, 0x70, 0x00, 0xf0, - 0x2f, 0xf8, 0x20, 0x46, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x00, 0xbf, 0x5c, 0x32, 0x00, 0x20, - 0x5c, 0x30, 0x00, 0x20, 0x60, 0x32, 0x00, 0x20, 0xb0, 0x3a, 0x00, 0x08, 0x94, 0x3a, 0x00, 0x08, - 0x01, 0x49, 0x02, 0x48, 0x00, 0xf0, 0x24, 0xb8, 0x78, 0x3a, 0x00, 0x08, 0x64, 0x32, 0x00, 0x20, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0xb4, 0x04, 0xb0, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0xb4, 0x03, 0xb0, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0xb4, 0x03, 0xb0, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0xb5, 0x16, 0x4b, 0x83, 0xb0, 0x04, 0x46, 0x1b, 0x68, 0x15, 0x48, 0x05, 0x22, 0x69, 0x46, - 0xff, 0xf7, 0x3e, 0xfd, 0x05, 0x28, 0x02, 0xd0, 0x00, 0x20, 0x03, 0xb0, 0x30, 0xbd, 0x9d, 0xf8, - 0x00, 0x30, 0x9d, 0xf8, 0x01, 0x50, 0x9d, 0xf8, 0x02, 0x10, 0x9d, 0xf8, 0x03, 0x00, 0x00, 0x9a, - 0x6b, 0x40, 0x4b, 0x40, 0x9d, 0xf8, 0x04, 0x10, 0x43, 0x40, 0x99, 0x42, 0x12, 0xba, 0xeb, 0xd1, - 0x02, 0xf1, 0x78, 0x43, 0xb3, 0xf5, 0x00, 0x4f, 0x38, 0xbf, 0x06, 0x4b, 0x4f, 0xf0, 0x01, 0x00, - 0x38, 0xbf, 0xd2, 0x18, 0x22, 0x60, 0x03, 0xb0, 0x30, 0xbd, 0x00, 0xbf, 0x30, 0x16, 0x00, 0x20, - 0x68, 0x33, 0x00, 0x20, 0x24, 0x35, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x04, 0x46, 0x72, 0xb6, 0xfd, 0xf7, 0xb3, 0xfa, 0x0f, 0x4a, 0x60, 0x68, 0x53, 0x68, - 0x23, 0xf0, 0x80, 0x53, 0x53, 0x60, 0x00, 0x22, 0x93, 0x00, 0x03, 0xf1, 0x60, 0x43, 0x03, 0xf5, - 0x61, 0x43, 0x01, 0x32, 0xd3, 0xf8, 0x00, 0x12, 0xc3, 0xf8, 0x80, 0x10, 0x08, 0x2a, 0xf3, 0xd1, - 0x00, 0x23, 0x83, 0xf3, 0x14, 0x88, 0x23, 0x68, 0x83, 0xf3, 0x08, 0x88, 0x80, 0x47, 0x03, 0x48, - 0xbd, 0xe8, 0x10, 0x40, 0xfd, 0xf7, 0x4c, 0xba, 0x00, 0xed, 0x00, 0xe0, 0xcc, 0x3a, 0x00, 0x08, - 0x2d, 0xe9, 0xf0, 0x4f, 0x89, 0xb0, 0x08, 0xa9, 0xc9, 0x48, 0xca, 0x4c, 0xdf, 0xf8, 0x3c, 0x93, - 0xdf, 0xf8, 0x24, 0x83, 0x79, 0x23, 0x01, 0xf8, 0x1d, 0x3d, 0x01, 0x22, 0xc8, 0x23, 0x23, 0x60, - 0x06, 0x46, 0xff, 0xf7, 0xb5, 0xfc, 0x4f, 0xf4, 0x00, 0x42, 0x4f, 0xf0, 0x00, 0x61, 0x48, 0x46, - 0xfd, 0xf7, 0xf0, 0xf8, 0x23, 0x68, 0x00, 0x27, 0x01, 0x22, 0x0d, 0xeb, 0x02, 0x01, 0x30, 0x46, - 0xff, 0xf7, 0xc6, 0xfc, 0x01, 0x28, 0x05, 0x46, 0x10, 0xd0, 0x6f, 0xb9, 0x00, 0x20, 0x09, 0xb0, - 0xbd, 0xe8, 0xf0, 0x8f, 0x52, 0x46, 0xb8, 0x49, 0x30, 0x46, 0xff, 0xf7, 0xb9, 0xfc, 0x01, 0x28, - 0x07, 0x46, 0x00, 0xf0, 0x2e, 0x81, 0x01, 0x27, 0x23, 0x68, 0xe5, 0xe7, 0x02, 0x46, 0x23, 0x68, - 0x0d, 0xf1, 0x02, 0x01, 0x30, 0x46, 0xff, 0xf7, 0xab, 0xfc, 0x01, 0x28, 0x82, 0x46, 0x0b, 0xd0, - 0x00, 0x2f, 0xe3, 0xd0, 0x08, 0xa9, 0x1f, 0x23, 0x01, 0xf8, 0x1c, 0x3d, 0x2a, 0x46, 0x30, 0x46, - 0xff, 0xf7, 0x7e, 0xfc, 0x23, 0x68, 0xcf, 0xe7, 0x9d, 0xf8, 0x01, 0x30, 0x9d, 0xf8, 0x02, 0x20, - 0xdb, 0x43, 0xdb, 0xb2, 0x9a, 0x42, 0x08, 0xa9, 0x08, 0xd0, 0x1f, 0x23, 0x01, 0xf8, 0x1b, 0x3d, - 0x02, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x6c, 0xfc, 0x23, 0x68, 0xbd, 0xe7, 0x79, 0x25, 0x02, 0x46, - 0x01, 0xf8, 0x1a, 0x5d, 0x30, 0x46, 0xff, 0xf7, 0x63, 0xfc, 0x9d, 0xf8, 0x01, 0x20, 0x4f, 0xf4, - 0x7a, 0x73, 0x11, 0x2a, 0x23, 0x60, 0x0a, 0xd0, 0x1a, 0xd9, 0x31, 0x2a, 0x53, 0xd0, 0x44, 0x2a, - 0xb8, 0xd0, 0x21, 0x2a, 0x3c, 0xd0, 0x4f, 0xf4, 0x7a, 0x73, 0x01, 0x27, 0xa4, 0xe7, 0x07, 0xa8, - 0xff, 0xf7, 0x26, 0xff, 0x08, 0xa9, 0x07, 0x46, 0x00, 0x28, 0x74, 0xd1, 0x1f, 0x23, 0x01, 0xf8, - 0x0b, 0x3d, 0x52, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x43, 0xfc, 0x23, 0x68, 0x01, 0x27, 0x93, 0xe7, - 0x00, 0x2a, 0x47, 0xd0, 0x02, 0x2a, 0xe6, 0xd1, 0x88, 0x4b, 0x08, 0xa9, 0x1f, 0x68, 0x01, 0xf8, - 0x16, 0xad, 0x52, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x33, 0xfc, 0xc7, 0xf3, 0x0b, 0x07, 0x08, 0xa9, - 0x3b, 0x0a, 0x01, 0xf8, 0x15, 0x3d, 0x52, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x29, 0xfc, 0x08, 0xa9, - 0x52, 0x46, 0x01, 0xf8, 0x14, 0x7d, 0x30, 0x46, 0xff, 0xf7, 0x22, 0xfc, 0x08, 0xa9, 0x52, 0x46, - 0x01, 0xf8, 0x13, 0x5d, 0x30, 0x46, 0xff, 0xf7, 0x1b, 0xfc, 0x57, 0x46, 0x23, 0x68, 0x6b, 0xe7, - 0x07, 0xa8, 0xff, 0xf7, 0xed, 0xfe, 0x08, 0xa9, 0x07, 0x46, 0x00, 0x28, 0x00, 0xf0, 0x9f, 0x80, - 0x52, 0x46, 0x01, 0xf8, 0x12, 0x5d, 0x30, 0x46, 0xff, 0xf7, 0x0a, 0xfc, 0x07, 0x98, 0xff, 0xf7, - 0x17, 0xff, 0x23, 0x68, 0x58, 0xe7, 0x07, 0xa8, 0xff, 0xf7, 0xda, 0xfe, 0x08, 0xa9, 0x07, 0x46, - 0x00, 0x28, 0x52, 0xd1, 0x1f, 0x23, 0x01, 0xf8, 0x07, 0x3d, 0x52, 0x46, 0x30, 0x46, 0xff, 0xf7, - 0xf7, 0xfb, 0xb2, 0xe7, 0x08, 0xa9, 0x06, 0x23, 0x65, 0x4d, 0x01, 0xf8, 0x18, 0x3d, 0x52, 0x46, - 0x30, 0x46, 0xff, 0xf7, 0xed, 0xfb, 0xaf, 0x1d, 0x31, 0x23, 0x01, 0xe0, 0x15, 0xf8, 0x01, 0x3b, - 0x8d, 0xf8, 0x09, 0x30, 0x01, 0x22, 0x0d, 0xf1, 0x09, 0x01, 0x30, 0x46, 0xff, 0xf7, 0xe0, 0xfb, - 0xaf, 0x42, 0xf3, 0xd1, 0x08, 0xa9, 0x79, 0x23, 0x01, 0xf8, 0x19, 0x3d, 0x01, 0x22, 0x30, 0x46, - 0xff, 0xf7, 0xd6, 0xfb, 0x3f, 0xe7, 0x52, 0x46, 0x01, 0xf8, 0x0c, 0x5d, 0x30, 0x46, 0xff, 0xf7, - 0xcf, 0xfb, 0x52, 0x46, 0x23, 0x68, 0x04, 0xa9, 0x30, 0x46, 0xff, 0xf7, 0xe9, 0xfb, 0x01, 0x28, - 0x83, 0xd1, 0x02, 0x46, 0x23, 0x68, 0x0d, 0xf1, 0x11, 0x01, 0x30, 0x46, 0xff, 0xf7, 0xe0, 0xfb, - 0x01, 0x28, 0x02, 0x46, 0x7f, 0xf4, 0x79, 0xaf, 0x9d, 0xf8, 0x10, 0x30, 0x9d, 0xf8, 0x11, 0x00, - 0xd9, 0x43, 0xc9, 0xb2, 0x88, 0x42, 0x08, 0xa9, 0x00, 0xf0, 0xd4, 0x80, 0x1f, 0x23, 0x01, 0xf8, - 0x0d, 0x3d, 0x30, 0x46, 0xff, 0xf7, 0xac, 0xfb, 0x67, 0xe7, 0x52, 0x46, 0x01, 0xf8, 0x08, 0x5d, - 0x30, 0x46, 0xff, 0xf7, 0xa5, 0xfb, 0x52, 0x46, 0x23, 0x68, 0x3b, 0x49, 0x30, 0x46, 0xff, 0xf7, - 0xbf, 0xfb, 0x01, 0x28, 0x7f, 0xf4, 0x59, 0xaf, 0x98, 0xf8, 0x00, 0x50, 0xdf, 0xf8, 0xe4, 0xb0, - 0x23, 0x68, 0x05, 0xf1, 0x02, 0x0a, 0x52, 0x46, 0x59, 0x46, 0x30, 0x46, 0xff, 0xf7, 0xb0, 0xfb, - 0x82, 0x45, 0x7f, 0xf4, 0x4a, 0xaf, 0x5f, 0xfa, 0x8a, 0xf2, 0x01, 0x2a, 0x98, 0xf8, 0x00, 0x30, - 0x08, 0xd9, 0x0b, 0xf1, 0xff, 0x32, 0xab, 0x44, 0x12, 0xf8, 0x01, 0x1f, 0x5a, 0x45, 0x83, 0xea, - 0x01, 0x03, 0xf9, 0xd1, 0x18, 0xf8, 0x0a, 0x20, 0x9a, 0x42, 0x72, 0xd0, 0x08, 0xa9, 0x1f, 0x23, - 0x01, 0xf8, 0x09, 0x3d, 0x01, 0x22, 0x30, 0x46, 0xff, 0xf7, 0x72, 0xfb, 0x2d, 0xe7, 0x1f, 0x23, - 0x01, 0xf8, 0x11, 0x3d, 0x52, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x6a, 0xfb, 0x57, 0x46, 0x23, 0x68, - 0xba, 0xe6, 0x02, 0x46, 0x23, 0x68, 0x1f, 0x49, 0x30, 0x46, 0xff, 0xf7, 0x81, 0xfb, 0x01, 0x28, - 0x7f, 0xf4, 0xca, 0xae, 0x98, 0xf8, 0x00, 0x10, 0x98, 0xf8, 0x01, 0x20, 0x23, 0x68, 0x42, 0xea, - 0x01, 0x22, 0x4f, 0xf6, 0xff, 0x71, 0x8a, 0x42, 0x60, 0xd0, 0x52, 0x00, 0xd5, 0x1c, 0x2a, 0x46, - 0x15, 0x49, 0x30, 0x46, 0xff, 0xf7, 0x6c, 0xfb, 0x85, 0x42, 0x7f, 0xf4, 0x06, 0xaf, 0x6b, 0x1c, - 0xdb, 0xb2, 0x01, 0x2b, 0x98, 0xf8, 0x00, 0x10, 0x09, 0xd9, 0x0b, 0x48, 0x01, 0x22, 0x01, 0x32, - 0x10, 0xf8, 0x01, 0x7f, 0xd2, 0xb2, 0x9a, 0x42, 0x81, 0xea, 0x07, 0x01, 0xf7, 0xd3, 0x08, 0xeb, - 0x05, 0x03, 0x5b, 0x78, 0x8b, 0x42, 0x27, 0xd1, 0x01, 0x3d, 0x00, 0x27, 0x1b, 0xe0, 0x00, 0xbf, - 0x68, 0x33, 0x00, 0x20, 0x30, 0x16, 0x00, 0x20, 0x24, 0xb5, 0x00, 0x20, 0x00, 0x20, 0x04, 0xe0, - 0xe1, 0x3a, 0x00, 0x08, 0x25, 0xb5, 0x00, 0x20, 0x26, 0xb5, 0x00, 0x20, 0x24, 0x35, 0x00, 0x20, - 0x9a, 0x78, 0xdb, 0x78, 0x43, 0xea, 0x02, 0x23, 0x18, 0xb2, 0x01, 0x2b, 0xc0, 0xb2, 0x32, 0xd9, - 0xff, 0xf7, 0x96, 0xf8, 0x02, 0x37, 0xbd, 0x42, 0x08, 0xeb, 0x07, 0x03, 0xf0, 0xdc, 0x08, 0xa9, - 0x79, 0x23, 0x01, 0xf8, 0x06, 0x3d, 0x31, 0xe7, 0x08, 0xa9, 0x1f, 0x23, 0x01, 0xf8, 0x05, 0x3d, - 0x2c, 0xe7, 0x07, 0x98, 0x23, 0x49, 0x48, 0x45, 0x05, 0xf1, 0x01, 0x02, 0x02, 0xd3, 0x22, 0x4b, - 0x98, 0x42, 0x37, 0xd3, 0xff, 0xf7, 0x14, 0xf9, 0x08, 0xa9, 0x79, 0x23, 0x01, 0xf8, 0x0a, 0x3d, - 0x01, 0x22, 0x30, 0x46, 0xff, 0xf7, 0xf4, 0xfa, 0x23, 0x68, 0x45, 0xe6, 0x01, 0x22, 0x1b, 0x49, - 0x30, 0x46, 0xff, 0xf7, 0x0d, 0xfb, 0x01, 0x28, 0x05, 0x46, 0x7f, 0xf4, 0xa6, 0xae, 0x98, 0xf8, - 0x00, 0x10, 0x02, 0x23, 0xa1, 0xe7, 0x4f, 0xf4, 0x00, 0x42, 0xff, 0x21, 0x48, 0x46, 0x00, 0xf0, - 0x6f, 0xf8, 0xc7, 0xe7, 0x01, 0xf8, 0x0e, 0x5d, 0x30, 0x46, 0x5d, 0x1c, 0xff, 0xf7, 0xd8, 0xfa, - 0x07, 0x99, 0x49, 0x45, 0x02, 0xd3, 0x0c, 0x4b, 0x99, 0x42, 0x0e, 0xd3, 0x08, 0x46, 0x2a, 0x46, - 0x41, 0x46, 0xff, 0xf7, 0xdd, 0xf8, 0x2a, 0x46, 0x41, 0x46, 0x30, 0x46, 0xff, 0xf7, 0xc8, 0xfa, - 0x23, 0x68, 0x19, 0xe6, 0xfc, 0xf7, 0x06, 0xff, 0xc6, 0xe7, 0x2a, 0x46, 0x40, 0x46, 0xfc, 0xf7, - 0x01, 0xff, 0xf0, 0xe7, 0x25, 0xb5, 0x00, 0x20, 0x24, 0xb5, 0x00, 0x20, 0x26, 0xb5, 0x00, 0x20, - 0x00, 0x48, 0x70, 0x47, 0x68, 0x33, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0x05, 0x4b, 0x05, 0x4a, 0x9b, 0x69, 0x9a, 0x61, 0xff, 0xf7, 0xe1, 0xfd, 0x00, 0x20, - 0xbd, 0xe8, 0x08, 0x40, 0xfd, 0xf7, 0xb4, 0xbb, 0x48, 0x1e, 0x00, 0x20, 0xf0, 0x3a, 0x00, 0x08, - 0x10, 0xb5, 0x82, 0xb0, 0xfd, 0xf7, 0x2c, 0xfd, 0x00, 0x24, 0xfc, 0xf7, 0xd1, 0xff, 0xff, 0xf7, - 0x0f, 0xfc, 0xff, 0xf7, 0x1d, 0xfc, 0xff, 0xf7, 0x43, 0xfc, 0xff, 0xf7, 0xd9, 0xff, 0xff, 0xf7, - 0x3f, 0xfa, 0x08, 0x4b, 0x00, 0x94, 0x80, 0x22, 0x4f, 0xf4, 0x92, 0x61, 0x06, 0x48, 0xfd, 0xf7, - 0x0f, 0xfb, 0xfd, 0xf7, 0xa5, 0xfb, 0x05, 0x48, 0xff, 0xf7, 0x92, 0xfd, 0x20, 0x46, 0x02, 0xb0, - 0x10, 0xbd, 0x00, 0xbf, 0x71, 0x35, 0x00, 0x08, 0x28, 0xb6, 0x00, 0x20, 0x00, 0x80, 0x00, 0x08, - 0x01, 0x49, 0x02, 0x48, 0xff, 0xf7, 0x44, 0xbd, 0xe8, 0x3a, 0x00, 0x08, 0xb8, 0xba, 0x00, 0x20, - 0xf0, 0xb4, 0x86, 0x07, 0x43, 0xd0, 0x54, 0x1e, 0x00, 0x2a, 0x3e, 0xd0, 0xca, 0xb2, 0x03, 0x46, - 0x02, 0xe0, 0x14, 0xf1, 0xff, 0x34, 0x38, 0xd3, 0x03, 0xf8, 0x01, 0x2b, 0x9d, 0x07, 0xf8, 0xd1, - 0x03, 0x2c, 0x2b, 0xd9, 0xcd, 0xb2, 0x45, 0xea, 0x05, 0x25, 0x0f, 0x2c, 0x45, 0xea, 0x05, 0x45, - 0x16, 0xd9, 0xa4, 0xf1, 0x10, 0x07, 0x3f, 0x09, 0x03, 0xf1, 0x20, 0x06, 0x06, 0xeb, 0x07, 0x16, - 0x03, 0xf1, 0x10, 0x02, 0x42, 0xe9, 0x04, 0x55, 0x42, 0xe9, 0x02, 0x55, 0x10, 0x32, 0xb2, 0x42, - 0xf8, 0xd1, 0x04, 0xf0, 0x0f, 0x04, 0x01, 0x37, 0x03, 0x2c, 0x03, 0xeb, 0x07, 0x13, 0x0d, 0xd9, - 0x1e, 0x46, 0x22, 0x46, 0x04, 0x3a, 0x03, 0x2a, 0x46, 0xf8, 0x04, 0x5b, 0xfa, 0xd8, 0x22, 0x1f, - 0x22, 0xf0, 0x03, 0x02, 0x04, 0x32, 0x13, 0x44, 0x04, 0xf0, 0x03, 0x04, 0x2c, 0xb1, 0xc9, 0xb2, - 0x1c, 0x44, 0x03, 0xf8, 0x01, 0x1b, 0x9c, 0x42, 0xfb, 0xd1, 0xf0, 0xbc, 0x70, 0x47, 0x14, 0x46, - 0x03, 0x46, 0xc5, 0xe7, 0x38, 0x3b, 0x00, 0x08, 0xbc, 0xbb, 0x00, 0x20, 0xbc, 0xbb, 0x00, 0x20, - 0xbc, 0xbb, 0x00, 0x20, 0x38, 0x3b, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x20, 0x38, 0x3b, 0x00, 0x08, 0x00, 0xc0, 0x01, 0x20, 0x00, 0xc0, 0x01, 0x20, - 0x00, 0xc0, 0x01, 0x20, 0x38, 0x3b, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x3b, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, - 0x00, 0x00, 0x00, 0x10, 0x38, 0x3b, 0x00, 0x08, 0x00, 0x40, 0x02, 0x40, 0x00, 0x40, 0x02, 0x40, - 0x00, 0x40, 0x02, 0x40, 0x38, 0x3b, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x3b, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x43, 0x68, 0x69, 0x62, 0x69, 0x4f, 0x53, 0x2f, 0x6f, - 0x73, 0x2f, 0x72, 0x74, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x63, 0x68, 0x73, 0x79, 0x73, 0x2e, 0x63, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x37, 0x00, 0x08, 0x38, 0x16, 0x00, 0x20, 0x48, 0x1e, 0x00, 0x20, - 0x01, 0x00, 0x00, 0x00, 0x31, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x69, 0x64, 0x6c, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x31, 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x33, - 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x38, 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x39, - 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x34, 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x36, - 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x35, 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x37, - 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x31, 0x30, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x31, - 0x31, 0x00, 0x00, 0x00, 0x6e, 0x6f, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, - 0x00, 0x16, 0x40, 0x28, 0x04, 0x04, 0x44, 0x08, 0x0c, 0x10, 0x14, 0x18, 0x00, 0x1c, 0x1d, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x10, 0x60, 0x02, 0x40, 0x08, 0x60, 0x02, 0x40, 0x00, 0x00, 0x0b, 0x00, - 0x28, 0x60, 0x02, 0x40, 0x08, 0x60, 0x02, 0x40, 0x06, 0x01, 0x0c, 0x00, 0x40, 0x60, 0x02, 0x40, - 0x08, 0x60, 0x02, 0x40, 0x10, 0x02, 0x0d, 0x00, 0x58, 0x60, 0x02, 0x40, 0x08, 0x60, 0x02, 0x40, - 0x16, 0x03, 0x0e, 0x00, 0x70, 0x60, 0x02, 0x40, 0x0c, 0x60, 0x02, 0x40, 0x00, 0x04, 0x0f, 0x00, - 0x88, 0x60, 0x02, 0x40, 0x0c, 0x60, 0x02, 0x40, 0x06, 0x05, 0x10, 0x00, 0xa0, 0x60, 0x02, 0x40, - 0x0c, 0x60, 0x02, 0x40, 0x10, 0x06, 0x11, 0x00, 0xb8, 0x60, 0x02, 0x40, 0x0c, 0x60, 0x02, 0x40, - 0x16, 0x07, 0x2f, 0x00, 0x10, 0x64, 0x02, 0x40, 0x08, 0x64, 0x02, 0x40, 0x00, 0x08, 0x38, 0x00, - 0x28, 0x64, 0x02, 0x40, 0x08, 0x64, 0x02, 0x40, 0x06, 0x09, 0x39, 0x00, 0x40, 0x64, 0x02, 0x40, - 0x08, 0x64, 0x02, 0x40, 0x10, 0x0a, 0x3a, 0x00, 0x58, 0x64, 0x02, 0x40, 0x08, 0x64, 0x02, 0x40, - 0x16, 0x0b, 0x3b, 0x00, 0x70, 0x64, 0x02, 0x40, 0x0c, 0x64, 0x02, 0x40, 0x00, 0x0c, 0x3c, 0x00, - 0x88, 0x64, 0x02, 0x40, 0x0c, 0x64, 0x02, 0x40, 0x06, 0x0d, 0x44, 0x00, 0xa0, 0x64, 0x02, 0x40, - 0x0c, 0x64, 0x02, 0x40, 0x10, 0x0e, 0x45, 0x00, 0xb8, 0x64, 0x02, 0x40, 0x0c, 0x64, 0x02, 0x40, - 0x16, 0x0f, 0x46, 0x00, 0x53, 0x54, 0x4d, 0x33, 0x32, 0x5f, 0x55, 0x41, 0x52, 0x54, 0x5f, 0x44, - 0x4d, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x48, 0x4f, 0x4f, 0x4b, 0x00, 0x00, 0x00, - 0x54, 0x75, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x75, 0x64, 0x69, 0x6f, 0x20, 0x6f, 0x76, 0x65, 0x72, - 0x20, 0x55, 0x53, 0x41, 0x52, 0x54, 0x00, 0x00, 0x74, 0x75, 0x6e, 0x65, 0x72, 0x73, 0x74, 0x75, - 0x64, 0x69, 0x6f, 0x20, 0x72, 0x78, 0x00, 0x00, 0x74, 0x75, 0x6e, 0x65, 0x72, 0x73, 0x74, 0x75, - 0x64, 0x69, 0x6f, 0x20, 0x74, 0x78, 0x00, 0x00, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x55, 0x41, - 0x52, 0x54, 0x2d, 0x44, 0x4d, 0x41, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x00, 0x21, 0x21, 0x21, 0x20, - 0x4e, 0x4f, 0x54, 0x20, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x20, 0x25, 0x64, 0x20, - 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x25, 0x64, 0x20, 0x21, 0x21, 0x21, 0x00, 0x00, 0x00, - 0x50, 0x41, 0x00, 0x00, 0x50, 0x42, 0x00, 0x00, 0x50, 0x43, 0x00, 0x00, 0x50, 0x44, 0x00, 0x00, - 0x50, 0x45, 0x00, 0x00, 0x50, 0x47, 0x00, 0x00, 0x50, 0x48, 0x00, 0x00, 0x50, 0x46, 0x00, 0x00, - 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x00, 0x88, 0x39, 0x00, 0x08, 0x18, 0x3a, 0x00, 0x08, - 0x1c, 0x3a, 0x00, 0x08, 0x20, 0x3a, 0x00, 0x08, 0x24, 0x3a, 0x00, 0x08, 0x28, 0x3a, 0x00, 0x08, - 0x2c, 0x3a, 0x00, 0x08, 0x30, 0x3a, 0x00, 0x08, 0x34, 0x3a, 0x00, 0x08, 0x38, 0x3a, 0x00, 0x08, - 0x3c, 0x3a, 0x00, 0x08, 0x40, 0x3a, 0x00, 0x08, 0x8c, 0x39, 0x00, 0x08, 0xec, 0x39, 0x00, 0x08, - 0xf0, 0x39, 0x00, 0x08, 0xf4, 0x39, 0x00, 0x08, 0xf8, 0x39, 0x00, 0x08, 0xfc, 0x39, 0x00, 0x08, - 0x00, 0x3a, 0x00, 0x08, 0x04, 0x3a, 0x00, 0x08, 0x08, 0x3a, 0x00, 0x08, 0x0c, 0x3a, 0x00, 0x08, - 0x10, 0x3a, 0x00, 0x08, 0x14, 0x3a, 0x00, 0x08, 0x63, 0x31, 0x00, 0x00, 0x69, 0x31, 0x00, 0x00, - 0x64, 0x69, 0x7a, 0x7a, 0x79, 0x00, 0x00, 0x00, 0x74, 0x61, 0x63, 0x68, 0x00, 0x00, 0x00, 0x00, - 0x61, 0x31, 0x00, 0x00, 0x61, 0x32, 0x00, 0x00, 0x25, 0x73, 0x3a, 0x20, 0x49, 0x6e, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x20, 0x62, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x69, 0x6e, 0x5f, 0x65, 0x3a, - 0x20, 0x25, 0x64, 0x00, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x69, 0x6e, 0x20, 0x5b, 0x25, - 0x73, 0x5d, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x61, 0x73, 0x73, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x25, 0x78, 0x25, 0x64, 0x00, 0x69, 0x32, 0x00, 0x00, - 0x69, 0x33, 0x00, 0x00, 0x69, 0x34, 0x00, 0x00, 0x69, 0x35, 0x00, 0x00, 0x69, 0x36, 0x00, 0x00, - 0x69, 0x37, 0x00, 0x00, 0x69, 0x38, 0x00, 0x00, 0x6a, 0x39, 0x00, 0x00, 0x69, 0x41, 0x00, 0x00, - 0x69, 0x42, 0x00, 0x00, 0x69, 0x43, 0x00, 0x00, 0x63, 0x32, 0x00, 0x00, 0x63, 0x33, 0x00, 0x00, - 0x63, 0x34, 0x00, 0x00, 0x63, 0x35, 0x00, 0x00, 0x63, 0x36, 0x00, 0x00, 0x63, 0x37, 0x00, 0x00, - 0x63, 0x38, 0x00, 0x00, 0x63, 0x39, 0x00, 0x00, 0x63, 0x41, 0x00, 0x00, 0x63, 0x42, 0x00, 0x00, - 0x63, 0x44, 0x00, 0x00, 0x69, 0x6f, 0x5f, 0x70, 0x69, 0x6e, 0x73, 0x00, 0x00, 0x00, 0x02, 0x40, - 0x00, 0x04, 0x02, 0x40, 0x00, 0x08, 0x02, 0x40, 0x00, 0x0c, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40, - 0x00, 0x14, 0x02, 0x40, 0x00, 0x18, 0x02, 0x40, 0x00, 0x1c, 0x02, 0x40, 0x25, 0x73, 0x20, 0x6f, - 0x6e, 0x20, 0x25, 0x73, 0x25, 0x64, 0x00, 0x00, 0x70, 0x69, 0x6e, 0x20, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x00, 0x00, 0x00, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x70, 0x6f, 0x72, 0x74, - 0x00, 0x00, 0x00, 0x00, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x00, 0x00, - 0x25, 0x73, 0x25, 0x64, 0x20, 0x72, 0x65, 0x71, 0x20, 0x62, 0x79, 0x20, 0x25, 0x73, 0x20, 0x75, - 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x25, 0x73, 0x00, 0x00, 0x00, 0x64, 0x66, 0x75, 0x4a, - 0x75, 0x6d, 0x70, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x20, 0x46, 0x41, 0x49, 0x4c, 0x00, 0x00, 0x00, - 0x31, 0x00, 0x02, 0x11, 0x21, 0x31, 0x44, 0x00, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x00, 0x00, - 0x42, 0x6f, 0x6f, 0x74, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x21, 0x2a, 0x00, 0x08, 0x11, 0x2a, 0x00, 0x08, 0x60, 0x02, 0x00, 0x10, - 0x08, 0x00, 0x00, 0x10, 0xc8, 0x00, 0x00, 0x00, -}; - -#endif /* BOOTLOADER_GENERATED_HXX_ */ - diff --git a/firmware/bootloader/prometheus/469/bootloader_generated.hxx b/firmware/bootloader/prometheus/469/bootloader_generated.hxx deleted file mode 100644 index 5497478fe6..0000000000 --- a/firmware/bootloader/prometheus/469/bootloader_generated.hxx +++ /dev/null @@ -1,964 +0,0 @@ -// This file was generated by Bin2Header -// Fri Mar 22 17:01:12 EET 2019 -#ifndef BOOTLOADER_GENERATED_HXX_ -#define BOOTLOADER_GENERATED_HXX_ - -static const volatile uint8_t bootloader_code[] BOOTLOADER_SECTION = { - 0x00, 0x10, 0x00, 0x20, 0x11, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x71, 0x0f, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x71, 0x1f, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x11, 0x13, 0x00, 0x08, 0x61, 0x13, 0x00, 0x08, - 0xc1, 0x13, 0x00, 0x08, 0x21, 0x14, 0x00, 0x08, 0x81, 0x14, 0x00, 0x08, 0x41, 0x19, 0x00, 0x08, - 0x71, 0x19, 0x00, 0x08, 0xb1, 0x19, 0x00, 0x08, 0xf1, 0x19, 0x00, 0x08, 0x31, 0x1a, 0x00, 0x08, - 0x61, 0x1a, 0x00, 0x08, 0xa1, 0x1a, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0xe1, 0x14, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x01, 0x16, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0xe1, 0x1a, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x61, 0x21, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x21, 0x1b, 0x00, 0x08, 0x51, 0x1b, 0x00, 0x08, 0x91, 0x1b, 0x00, 0x08, 0xd1, 0x1b, 0x00, 0x08, - 0x11, 0x1c, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x41, 0x1c, 0x00, 0x08, 0x81, 0x1c, 0x00, 0x08, 0xc1, 0x1c, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, 0x13, 0x03, 0x00, 0x08, - 0x11, 0x2e, 0x00, 0x08, 0x71, 0x2f, 0x00, 0x08, 0x81, 0x30, 0x00, 0x08, 0x41, 0x36, 0x00, 0x08, - 0x72, 0xb6, 0x39, 0x48, 0x80, 0xf3, 0x08, 0x88, 0x38, 0x48, 0x80, 0xf3, 0x09, 0x88, 0x38, 0x48, - 0x4e, 0xf6, 0x08, 0x51, 0xce, 0xf2, 0x00, 0x01, 0x08, 0x60, 0x40, 0xf2, 0x00, 0x00, 0xcc, 0xf2, - 0x00, 0x00, 0x4e, 0xf6, 0x34, 0x71, 0xce, 0xf2, 0x00, 0x01, 0x08, 0x60, 0xbf, 0xf3, 0x4f, 0x8f, - 0xbf, 0xf3, 0x6f, 0x8f, 0x40, 0xf2, 0x00, 0x00, 0xc0, 0xf2, 0xf0, 0x00, 0x4e, 0xf6, 0x88, 0x51, - 0xce, 0xf2, 0x00, 0x01, 0x08, 0x60, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0x4f, 0xf0, - 0x00, 0x00, 0xe1, 0xee, 0x10, 0x0a, 0x4e, 0xf6, 0x3c, 0x71, 0xce, 0xf2, 0x00, 0x01, 0x08, 0x60, - 0x06, 0x20, 0x80, 0xf3, 0x14, 0x88, 0xbf, 0xf3, 0x6f, 0x8f, 0x00, 0xf0, 0x19, 0xf9, 0x02, 0xf0, - 0x17, 0xf9, 0x4f, 0xf0, 0x55, 0x30, 0x1f, 0x49, 0x1b, 0x4a, 0x91, 0x42, 0x3c, 0xbf, 0x41, 0xf8, - 0x04, 0x0b, 0xfa, 0xe7, 0x1c, 0x49, 0x19, 0x4a, 0x91, 0x42, 0x3c, 0xbf, 0x41, 0xf8, 0x04, 0x0b, - 0xfa, 0xe7, 0x1a, 0x49, 0x1a, 0x4a, 0x1b, 0x4b, 0x9a, 0x42, 0x3e, 0xbf, 0x51, 0xf8, 0x04, 0x0b, - 0x42, 0xf8, 0x04, 0x0b, 0xf8, 0xe7, 0x00, 0x20, 0x17, 0x49, 0x18, 0x4a, 0x91, 0x42, 0x3c, 0xbf, - 0x41, 0xf8, 0x04, 0x0b, 0xfa, 0xe7, 0x00, 0xf0, 0x0b, 0xf9, 0x00, 0xf0, 0xf9, 0xf8, 0x14, 0x4c, - 0x14, 0x4d, 0xac, 0x42, 0x03, 0xda, 0x54, 0xf8, 0x04, 0x1b, 0x88, 0x47, 0xf9, 0xe7, 0x03, 0xf0, - 0x97, 0xf9, 0x11, 0x4c, 0x11, 0x4d, 0xac, 0x42, 0x03, 0xda, 0x54, 0xf8, 0x04, 0x1b, 0x88, 0x47, - 0xf9, 0xe7, 0x00, 0xf0, 0xed, 0xb8, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x16, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x20, 0x64, 0x3b, 0x00, 0x08, - 0x00, 0x16, 0x00, 0x20, 0x34, 0x16, 0x00, 0x20, 0x38, 0x16, 0x00, 0x20, 0xbc, 0xbb, 0x00, 0x20, - 0xe0, 0x01, 0x00, 0x08, 0xf0, 0x01, 0x00, 0x08, 0xf0, 0x01, 0x00, 0x08, 0xf0, 0x01, 0x00, 0x08, - 0x6e, 0xe7, 0x00, 0xf0, 0x00, 0xf8, 0xfe, 0xe7, 0x2d, 0xe9, 0xf0, 0x4f, 0x2d, 0xed, 0x10, 0x8a, - 0xc1, 0xf8, 0x0c, 0xd0, 0xc3, 0x68, 0x9d, 0x46, 0xbd, 0xec, 0x10, 0x8a, 0xbd, 0xe8, 0xf0, 0x8f, - 0x00, 0xf0, 0xc6, 0xf9, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x28, 0x46, 0xa0, 0x47, 0x00, 0x20, - 0x00, 0xf0, 0xd6, 0xfc, 0x00, 0xf0, 0xac, 0xf9, 0x00, 0xf0, 0x92, 0xfb, 0x00, 0xf0, 0xb8, 0xf9, - 0x00, 0xdf, 0xfe, 0xe7, 0x84, 0x46, 0x41, 0xea, 0x00, 0x03, 0x13, 0xf0, 0x03, 0x03, 0x6d, 0xd1, - 0x40, 0x3a, 0x41, 0xd3, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x40, 0x3a, 0xbd, 0xd2, 0x30, 0x32, 0x11, 0xd3, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, - 0x40, 0xf8, 0x04, 0x3b, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x10, 0x3a, 0xed, 0xd2, - 0x0c, 0x32, 0x05, 0xd3, 0x51, 0xf8, 0x04, 0x3b, 0x40, 0xf8, 0x04, 0x3b, 0x04, 0x3a, 0xf9, 0xd2, - 0x04, 0x32, 0x08, 0xd0, 0xd2, 0x07, 0x1c, 0xbf, 0x11, 0xf8, 0x01, 0x3b, 0x00, 0xf8, 0x01, 0x3b, - 0x01, 0xd3, 0x0b, 0x88, 0x03, 0x80, 0x60, 0x46, 0x70, 0x47, 0x00, 0xbf, 0x08, 0x2a, 0x13, 0xd3, - 0x8b, 0x07, 0x8d, 0xd0, 0x10, 0xf0, 0x03, 0x03, 0x8a, 0xd0, 0xc3, 0xf1, 0x04, 0x03, 0xd2, 0x1a, - 0xdb, 0x07, 0x1c, 0xbf, 0x11, 0xf8, 0x01, 0x3b, 0x00, 0xf8, 0x01, 0x3b, 0x80, 0xd3, 0x31, 0xf8, - 0x02, 0x3b, 0x20, 0xf8, 0x02, 0x3b, 0x7b, 0xe7, 0x04, 0x3a, 0xd9, 0xd3, 0x01, 0x3a, 0x11, 0xf8, - 0x01, 0x3b, 0x00, 0xf8, 0x01, 0x3b, 0xf9, 0xd2, 0x0b, 0x78, 0x03, 0x70, 0x4b, 0x78, 0x43, 0x70, - 0x8b, 0x78, 0x83, 0x70, 0x60, 0x46, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xb4, 0x14, 0x4e, 0x14, 0x4d, 0x15, 0x4c, 0x15, 0x4b, 0x16, 0x49, 0x06, 0xf1, 0x70, 0x0c, - 0x00, 0x27, 0x9c, 0x42, 0x11, 0xd9, 0x04, 0x39, 0x1a, 0x46, 0x51, 0xf8, 0x04, 0x0f, 0x42, 0xf8, - 0x04, 0x0b, 0x94, 0x42, 0xf9, 0xd8, 0xda, 0x43, 0x14, 0x44, 0x24, 0xf0, 0x03, 0x04, 0x04, 0x34, - 0x23, 0x44, 0x9d, 0x42, 0x03, 0xd9, 0x43, 0xf8, 0x04, 0x7b, 0x9d, 0x42, 0xfb, 0xd8, 0x66, 0x45, - 0x05, 0xd0, 0xd6, 0xe9, 0x04, 0x13, 0xd6, 0xe9, 0x06, 0x45, 0x10, 0x36, 0xe1, 0xe7, 0xf0, 0xbc, - 0x70, 0x47, 0x00, 0xbf, 0xe4, 0x36, 0x00, 0x08, 0xbc, 0xbb, 0x00, 0x20, 0xbc, 0xbb, 0x00, 0x20, - 0xbc, 0xbb, 0x00, 0x20, 0x98, 0x3b, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0x1c, 0x4c, 0x1c, 0x4f, 0x1d, 0x4e, 0x00, 0x25, 0x00, 0xf0, 0xa1, 0xf9, 0x00, 0xf0, - 0x4f, 0xf9, 0xc4, 0xe9, 0x0c, 0x55, 0x00, 0xf0, 0x8b, 0xfc, 0x00, 0xf0, 0xb1, 0xfc, 0x00, 0xf0, - 0xf7, 0xfc, 0x04, 0xf1, 0x38, 0x00, 0x80, 0x22, 0x15, 0x49, 0x00, 0xf0, 0xc1, 0xfa, 0x15, 0x4b, - 0x01, 0x22, 0x02, 0x77, 0xd9, 0x68, 0x14, 0x4a, 0xa0, 0x61, 0x4f, 0xf6, 0xff, 0x00, 0x01, 0x40, - 0x0a, 0x43, 0xda, 0x60, 0xfa, 0x68, 0x42, 0xf0, 0x80, 0x72, 0xfa, 0x60, 0x32, 0x68, 0x10, 0x20, - 0x42, 0xf0, 0x01, 0x02, 0x20, 0x21, 0x32, 0x60, 0xd8, 0x77, 0x83, 0xf8, 0x22, 0x10, 0x00, 0xf0, - 0x6f, 0xf8, 0x85, 0xf3, 0x11, 0x88, 0x62, 0xb6, 0x08, 0x48, 0xbd, 0xe8, 0xf8, 0x40, 0x00, 0xf0, - 0xff, 0xba, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0xf0, 0xed, 0x00, 0xe0, 0x00, 0x10, 0x00, 0xe0, - 0xfc, 0x37, 0x00, 0x08, 0x00, 0xed, 0x00, 0xe0, 0x00, 0x03, 0xfa, 0x05, 0x84, 0x37, 0x00, 0x08, - 0x08, 0xb5, 0x72, 0xb6, 0x03, 0x4b, 0x04, 0x49, 0xd8, 0x62, 0xd1, 0x22, 0x02, 0xf0, 0x58, 0xfd, - 0xfe, 0xe7, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x64, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf8, 0x43, 0x16, 0x4d, 0x00, 0xf0, 0xdb, 0xf8, 0xaa, 0x69, 0xd3, 0x7f, 0x0b, 0xb1, - 0x01, 0x3b, 0xd3, 0x77, 0x00, 0xf0, 0xd4, 0xf8, 0x12, 0x4f, 0xab, 0x6a, 0xec, 0x69, 0x01, 0x33, - 0xbc, 0x42, 0xab, 0x62, 0x19, 0xd0, 0xa6, 0x68, 0x01, 0x3e, 0xa6, 0x60, 0xae, 0xb9, 0x4f, 0xf0, - 0x20, 0x09, 0x23, 0x68, 0xd4, 0xf8, 0x0c, 0x80, 0xe6, 0x60, 0x5f, 0x60, 0xeb, 0x61, 0x00, 0xf0, - 0x77, 0xf8, 0x86, 0xf3, 0x11, 0x88, 0x20, 0x69, 0xc0, 0x47, 0x89, 0xf3, 0x11, 0x88, 0x00, 0xf0, - 0x57, 0xf8, 0xec, 0x69, 0xa3, 0x68, 0x00, 0x2b, 0xeb, 0xd0, 0xbd, 0xe8, 0xf8, 0x83, 0x00, 0xbf, - 0x48, 0x1e, 0x00, 0x20, 0x64, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x4b, 0x1a, 0x6b, 0x0a, 0xb9, 0x5b, 0x6b, 0x13, 0xb1, 0x03, 0x48, 0xff, 0xf7, 0xb0, 0xbf, - 0x70, 0x47, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0xa4, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x4b, 0x1a, 0x6b, 0x0a, 0xb9, 0x5b, 0x6b, 0x13, 0xb1, 0x03, 0x48, 0xff, 0xf7, 0xa0, 0xbf, - 0x70, 0x47, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0xac, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x05, 0x4c, 0x23, 0x6b, 0x0b, 0xb9, 0x63, 0x6b, 0x13, 0xb1, 0x03, 0x48, 0xff, 0xf7, - 0x8f, 0xff, 0x01, 0x23, 0x63, 0x63, 0x10, 0xbd, 0x48, 0x1e, 0x00, 0x20, 0xc4, 0x37, 0x00, 0x08, - 0x10, 0xb5, 0x07, 0x4c, 0x23, 0x6b, 0x2b, 0xb9, 0x63, 0x6b, 0x00, 0x2b, 0x02, 0xdd, 0x00, 0x23, - 0x63, 0x63, 0x10, 0xbd, 0x03, 0x48, 0xff, 0xf7, 0x7b, 0xff, 0x00, 0x23, 0x63, 0x63, 0x10, 0xbd, - 0x48, 0x1e, 0x00, 0x20, 0xd4, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x06, 0x4c, 0x23, 0x6b, 0x00, 0x2b, 0x01, 0xdd, 0x63, 0x6b, 0x13, 0xb1, 0x04, 0x48, - 0xff, 0xf7, 0x66, 0xff, 0x01, 0x23, 0x63, 0x63, 0x10, 0xbd, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, - 0xcc, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x08, 0x4c, 0x23, 0x6b, 0x00, 0x2b, 0x05, 0xdd, 0x63, 0x6b, 0x00, 0x2b, 0x02, 0xdd, - 0x00, 0x23, 0x63, 0x63, 0x10, 0xbd, 0x04, 0x48, 0xff, 0xf7, 0x4a, 0xff, 0x00, 0x23, 0x63, 0x63, - 0x10, 0xbd, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0xdc, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x07, 0x4c, 0x23, 0x6b, 0x00, 0x2b, 0x01, 0xdb, - 0x62, 0x6b, 0x1a, 0xb1, 0x05, 0x48, 0xff, 0xf7, 0x33, 0xff, 0x23, 0x6b, 0x01, 0x33, 0x23, 0x63, - 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x10, 0xbd, 0x48, 0x1e, 0x00, 0x20, 0xb4, 0x37, 0x00, 0x08, - 0x10, 0xb5, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x07, 0x4c, 0x23, 0x6b, 0x00, 0x2b, 0x01, 0xdd, - 0x62, 0x6b, 0x1a, 0xb1, 0x05, 0x48, 0xff, 0xf7, 0x1b, 0xff, 0x23, 0x6b, 0x01, 0x3b, 0x23, 0x63, - 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x10, 0xbd, 0x48, 0x1e, 0x00, 0x20, 0xbc, 0x37, 0x00, 0x08, - 0x05, 0x4b, 0x1a, 0x6b, 0x00, 0x2a, 0x03, 0xdb, 0x5b, 0x6b, 0x00, 0x2b, 0x00, 0xdd, 0x70, 0x47, - 0x02, 0x48, 0xff, 0xf7, 0x05, 0xbf, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0xe4, 0x37, 0x00, 0x08, - 0x04, 0x4b, 0x1a, 0x6b, 0x1a, 0xb9, 0x5b, 0x6b, 0x00, 0x2b, 0x00, 0xdd, 0x70, 0x47, 0x02, 0x48, - 0xff, 0xf7, 0xf6, 0xbe, 0x48, 0x1e, 0x00, 0x20, 0xec, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x4b, 0x4f, 0xf0, 0xff, 0x30, 0x00, 0x21, 0x03, 0xf1, 0x1c, 0x02, 0x58, 0x62, 0x99, 0x62, - 0xc3, 0xe9, 0x07, 0x22, 0x70, 0x47, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0x05, 0x46, 0x16, 0x46, 0x1f, 0x46, 0x0c, 0x46, 0xff, 0xf7, 0xc9, 0xff, 0x0c, 0x48, - 0x2f, 0x61, 0xc3, 0x69, 0xee, 0x60, 0x9a, 0x68, 0x94, 0x42, 0x04, 0xd9, 0x1b, 0x68, 0xa4, 0x1a, - 0x9a, 0x68, 0xa2, 0x42, 0xfa, 0xd3, 0x5a, 0x68, 0xc5, 0xe9, 0x00, 0x32, 0x15, 0x60, 0x5d, 0x60, - 0xac, 0x60, 0x99, 0x68, 0x4f, 0xf0, 0xff, 0x32, 0x09, 0x1b, 0x99, 0x60, 0x42, 0x62, 0xf8, 0xbd, - 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xa4, 0xff, 0x23, 0x68, 0xa5, 0x68, 0x9a, 0x68, 0x61, 0x68, - 0x05, 0x48, 0x2a, 0x44, 0x9a, 0x60, 0x0b, 0x60, 0x25, 0x68, 0x00, 0x22, 0x4f, 0xf0, 0xff, 0x33, - 0x69, 0x60, 0xe2, 0x60, 0x43, 0x62, 0x38, 0xbd, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x4b, 0x00, 0x22, 0xc3, 0xe9, 0x00, 0x33, 0xc3, 0xe9, 0x04, 0x33, 0x9a, 0x60, 0x70, 0x47, - 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0x7c, 0xff, 0x00, 0x22, 0xa1, 0x68, 0x06, 0x4b, 0x22, 0x77, - 0x1b, 0x68, 0x9a, 0x68, 0x8a, 0x42, 0xfb, 0xd2, 0x5a, 0x68, 0x20, 0x46, 0xc4, 0xe9, 0x00, 0x32, - 0x14, 0x60, 0x5c, 0x60, 0x10, 0xbd, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x04, 0x46, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x01, 0xff, 0x23, 0x7f, - 0x07, 0x2b, 0x10, 0xd8, 0xdf, 0xe8, 0x03, 0xf0, 0x15, 0x0f, 0x0f, 0x1b, 0x0a, 0x04, 0x0f, 0x0a, - 0x25, 0x6a, 0xff, 0xf7, 0x55, 0xff, 0xab, 0x68, 0x01, 0x33, 0xab, 0x60, 0xd4, 0xe9, 0x00, 0x23, - 0x1a, 0x60, 0x22, 0x68, 0x53, 0x60, 0x4f, 0xf0, 0xff, 0x33, 0x23, 0x62, 0x20, 0x46, 0xff, 0xf7, - 0xc7, 0xff, 0xff, 0xf7, 0xfd, 0xfe, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x38, 0xbd, 0x23, 0x6a, - 0x00, 0x22, 0x1a, 0x60, 0x4f, 0xf0, 0xff, 0x33, 0x23, 0x62, 0x20, 0x46, 0xff, 0xf7, 0xb8, 0xff, - 0xef, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x0a, 0x4c, 0xa5, 0x69, 0x06, 0x46, 0xff, 0xf7, 0x3a, 0xff, 0x23, 0x68, 0x2e, 0x77, - 0x14, 0x22, 0xea, 0x77, 0x1a, 0x68, 0x22, 0x60, 0x01, 0x26, 0x54, 0x60, 0x1e, 0x77, 0x29, 0x46, - 0xa3, 0x61, 0x18, 0x46, 0xbd, 0xe8, 0x70, 0x40, 0xff, 0xf7, 0xce, 0xbc, 0x48, 0x1e, 0x00, 0x20, - 0x70, 0xb5, 0x0d, 0x46, 0x86, 0xb0, 0x06, 0x46, 0xff, 0xf7, 0x22, 0xff, 0x6b, 0x1c, 0x14, 0xd0, - 0x0e, 0x4c, 0x0f, 0x4a, 0xa3, 0x69, 0x29, 0x46, 0x01, 0xa8, 0xff, 0xf7, 0x39, 0xff, 0x30, 0x46, - 0xff, 0xf7, 0xd6, 0xff, 0xff, 0xf7, 0x04, 0xff, 0x04, 0x9b, 0x13, 0xb1, 0x01, 0xa8, 0xff, 0xf7, - 0x57, 0xff, 0xa3, 0x69, 0x18, 0x6a, 0x06, 0xb0, 0x70, 0xbd, 0x04, 0x4c, 0x30, 0x46, 0xff, 0xf7, - 0xc7, 0xff, 0xa3, 0x69, 0x18, 0x6a, 0x06, 0xb0, 0x70, 0xbd, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, - 0xe1, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0x14, 0x4e, 0x05, 0x46, 0xb4, 0x69, 0x0f, 0x46, 0xff, 0xf7, 0xf1, 0xfe, 0xa3, 0x68, - 0xaa, 0x68, 0x2f, 0x62, 0x9a, 0x42, 0x17, 0xd9, 0xff, 0xf7, 0xda, 0xfe, 0x00, 0x23, 0xa1, 0x68, - 0x23, 0x77, 0x33, 0x46, 0x1b, 0x68, 0x9a, 0x68, 0x8a, 0x42, 0xfb, 0xd2, 0x5a, 0x68, 0x62, 0x60, - 0x01, 0x20, 0x23, 0x60, 0x14, 0x60, 0x5c, 0x60, 0x28, 0x77, 0x21, 0x46, 0x28, 0x46, 0xb5, 0x61, - 0xbd, 0xe8, 0xf8, 0x40, 0xff, 0xf7, 0x78, 0xbc, 0x28, 0x46, 0xbd, 0xe8, 0xf8, 0x40, 0xff, 0xf7, - 0x3f, 0xbf, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x4a, 0x93, 0x69, 0x11, 0x68, 0xda, 0x7f, 0x88, 0x68, 0x9b, 0x68, 0x22, 0xb9, 0x98, 0x42, - 0x34, 0xbf, 0x00, 0x20, 0x01, 0x20, 0x70, 0x47, 0x98, 0x42, 0x94, 0xbf, 0x00, 0x20, 0x01, 0x20, - 0x70, 0x47, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x1b, 0x4d, 0x2b, 0x68, 0xac, 0x69, 0x1a, 0x68, 0x2a, 0x60, 0x55, 0x60, 0xde, 0x7f, - 0xab, 0x61, 0x01, 0x22, 0x1a, 0x77, 0xae, 0xb9, 0xff, 0xf7, 0x92, 0xfe, 0xa1, 0x68, 0x26, 0x77, - 0x2b, 0x46, 0x1b, 0x68, 0x9a, 0x68, 0x8a, 0x42, 0xfb, 0xd2, 0x5a, 0x68, 0x62, 0x60, 0x14, 0x21, - 0x23, 0x60, 0x14, 0x60, 0x5c, 0x60, 0xe1, 0x77, 0xa8, 0x69, 0x21, 0x46, 0xbd, 0xe8, 0x70, 0x40, - 0xff, 0xf7, 0x32, 0xbc, 0xff, 0xf7, 0x7c, 0xfe, 0x00, 0x23, 0xa1, 0x68, 0x23, 0x77, 0x2b, 0x46, - 0x1b, 0x68, 0x9a, 0x68, 0x8a, 0x42, 0xfb, 0xd8, 0x5a, 0x68, 0xa8, 0x69, 0xc4, 0xe9, 0x00, 0x32, - 0x21, 0x46, 0x14, 0x60, 0x5c, 0x60, 0xbd, 0xe8, 0x70, 0x40, 0xff, 0xf7, 0x1d, 0xbc, 0x00, 0xbf, - 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xb4, 0x0b, 0x4c, 0x0b, 0x4f, 0x65, 0x69, 0x82, 0x63, 0x82, 0x60, 0x00, 0x26, 0x81, 0x61, - 0x00, 0xf1, 0x28, 0x02, 0x00, 0xf1, 0x24, 0x01, 0x45, 0x61, 0x04, 0x61, 0xc7, 0x61, 0xc0, 0xe9, - 0x0c, 0x66, 0x28, 0x61, 0x60, 0x61, 0xc0, 0xe9, 0x09, 0x12, 0xc2, 0x62, 0xf0, 0xbc, 0x70, 0x47, - 0x48, 0x1e, 0x00, 0x20, 0x02, 0x00, 0x01, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0x3c, 0xfe, 0xd4, 0xe9, 0x04, 0x16, 0xa3, 0x68, 0x25, 0x68, - 0xe0, 0x68, 0x43, 0xf8, 0x6c, 0x1c, 0x02, 0x21, 0x03, 0xf8, 0x2c, 0x1c, 0x14, 0x21, 0x03, 0xf8, - 0x29, 0x1c, 0x01, 0x21, 0x03, 0xf8, 0x2a, 0x1c, 0x12, 0x4a, 0x43, 0xf8, 0x68, 0x6c, 0x00, 0x21, - 0x03, 0xf8, 0x2b, 0x1c, 0x54, 0x69, 0x43, 0xf8, 0x40, 0x0c, 0x43, 0xf8, 0x10, 0x0c, 0x43, 0xf8, - 0x30, 0x5c, 0xa3, 0xf1, 0xac, 0x00, 0x0c, 0x4d, 0x43, 0xf8, 0x3c, 0x0c, 0x43, 0xf8, 0x4c, 0x5c, - 0x43, 0xe9, 0x06, 0x11, 0xa3, 0xf1, 0x48, 0x00, 0xa3, 0xf1, 0x20, 0x01, 0xa3, 0xf1, 0x24, 0x05, - 0x43, 0xe9, 0x0e, 0x24, 0x20, 0x61, 0x50, 0x61, 0x43, 0xe9, 0x09, 0x51, 0x43, 0xf8, 0x1c, 0x1c, - 0x70, 0xbd, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x31, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x20, 0x23, 0x04, 0x46, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x71, 0xfd, 0x20, 0x46, - 0xff, 0xf7, 0xb6, 0xff, 0x00, 0x21, 0x04, 0x46, 0xff, 0xf7, 0x0a, 0xff, 0xff, 0xf7, 0x78, 0xfd, - 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x20, 0x46, 0x10, 0xbd, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf8, 0x43, 0x99, 0x46, 0x04, 0x46, 0x0d, 0x46, 0x90, 0x46, 0x20, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0x48, 0x3d, 0x2c, 0x44, 0x18, 0x4e, 0x18, 0x4f, 0xff, 0xf7, 0x51, 0xfd, 0x08, 0x9b, - 0x71, 0x69, 0x44, 0xf8, 0x20, 0x3c, 0xa4, 0xf1, 0x64, 0x02, 0x15, 0x4b, 0xe2, 0x60, 0xe3, 0x61, - 0x04, 0xf1, 0x24, 0x02, 0x04, 0xf1, 0x28, 0x03, 0x00, 0x25, 0x12, 0x48, 0x44, 0xf8, 0x24, 0x9c, - 0xc4, 0xe9, 0x04, 0x61, 0xc4, 0xf8, 0x08, 0x80, 0x44, 0xf8, 0x04, 0x7c, 0xa0, 0x61, 0xc4, 0xf8, - 0x38, 0x80, 0xc4, 0xe9, 0x0c, 0x55, 0x20, 0x46, 0x0c, 0x61, 0xc4, 0xe9, 0x09, 0x23, 0xe3, 0x62, - 0x29, 0x46, 0x74, 0x61, 0xff, 0xf7, 0xcc, 0xfe, 0xff, 0xf7, 0x3a, 0xfd, 0x85, 0xf3, 0x11, 0x88, - 0x20, 0x46, 0xbd, 0xe8, 0xf8, 0x83, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x31, 0x03, 0x00, 0x08, - 0x02, 0x00, 0x01, 0x14, 0xf4, 0x37, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x20, 0x23, 0x04, 0x46, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x11, 0xfd, 0xa3, 0x7f, - 0x01, 0x3b, 0xa3, 0x77, 0xe3, 0x69, 0x03, 0xf0, 0xff, 0x13, 0x0f, 0x2b, 0x01, 0xbf, 0xd4, 0xe9, - 0x04, 0x23, 0x1a, 0x61, 0x22, 0x69, 0x53, 0x61, 0xff, 0xf7, 0x12, 0xfd, 0x00, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x0e, 0x4b, 0x9c, 0x69, 0x63, 0x6a, 0x20, 0x62, 0x04, 0xf1, 0x24, 0x05, 0xab, 0x42, - 0x07, 0xd0, 0x1a, 0x68, 0x62, 0x62, 0x18, 0x46, 0xff, 0xf7, 0xf2, 0xfd, 0x63, 0x6a, 0xab, 0x42, - 0xf7, 0xd1, 0xa3, 0x7f, 0x23, 0xb9, 0xd4, 0xe9, 0x04, 0x23, 0x1a, 0x61, 0x22, 0x69, 0x53, 0x61, - 0x0f, 0x20, 0xbd, 0xe8, 0x38, 0x40, 0xff, 0xf7, 0x33, 0xbe, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, - 0x10, 0xb5, 0x20, 0x23, 0x04, 0x46, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xd1, 0xfc, 0x20, 0x46, - 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xd4, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x04, 0x46, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xc1, 0xfc, 0x23, 0x7f, - 0x0f, 0x2b, 0x07, 0xd0, 0x09, 0x4b, 0x62, 0x6a, 0x9b, 0x69, 0x09, 0x20, 0x1a, 0x60, 0x63, 0x62, - 0xff, 0xf7, 0x0e, 0xfe, 0x25, 0x6a, 0xff, 0xf7, 0xc3, 0xfc, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, - 0x20, 0x46, 0xff, 0xf7, 0x95, 0xff, 0x28, 0x46, 0x38, 0xbd, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, - 0x05, 0x4b, 0x02, 0x46, 0x9b, 0x69, 0x21, 0xb1, 0x03, 0x60, 0x03, 0x20, 0x1a, 0x62, 0xff, 0xf7, - 0x0f, 0xbe, 0x4f, 0xf0, 0xff, 0x30, 0x70, 0x47, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x68, 0x2b, 0xb1, 0x00, 0x22, 0x02, 0x60, 0x18, 0x46, 0x19, 0x62, 0xff, 0xf7, 0x98, 0xbd, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x69, 0xb1, 0x08, 0x4b, 0x10, 0xb4, 0x02, 0x46, 0x44, 0x68, 0x9b, 0x69, 0x04, 0x20, 0xc3, 0xe9, - 0x00, 0x24, 0x23, 0x60, 0x53, 0x60, 0x5d, 0xf8, 0x04, 0x4b, 0xff, 0xf7, 0xe9, 0xbd, 0x4f, 0xf0, - 0xff, 0x30, 0x70, 0x47, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x68, 0x90, 0x42, 0x0a, 0xd0, 0x10, 0xb4, 0x14, 0x68, 0x04, 0x60, 0x03, 0x46, 0x63, 0x60, - 0x10, 0x46, 0x11, 0x62, 0x5d, 0xf8, 0x04, 0x4b, 0xff, 0xf7, 0x6a, 0xbd, 0x70, 0x47, 0x00, 0xbf, - 0x38, 0xb5, 0x03, 0x68, 0x98, 0x42, 0x0b, 0xd0, 0x04, 0x46, 0x0d, 0x46, 0x1a, 0x68, 0x22, 0x60, - 0x18, 0x46, 0x54, 0x60, 0x1d, 0x62, 0xff, 0xf7, 0x5b, 0xfd, 0x23, 0x68, 0x9c, 0x42, 0xf5, 0xd1, - 0x38, 0xbd, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x4b, 0x5b, 0x68, 0x83, 0x60, 0x70, 0x47, 0x00, 0x10, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x4b, 0x0f, 0x4a, 0x5b, 0x68, 0xc1, 0x68, 0xf0, 0xb4, 0x84, 0x68, 0xd6, 0x6f, 0x42, 0x68, - 0x1b, 0x1b, 0xd0, 0xe9, 0x04, 0x45, 0x9b, 0x1b, 0xe6, 0x18, 0x45, 0xf1, 0x00, 0x07, 0x93, 0x42, - 0x02, 0x68, 0x88, 0xbf, 0x43, 0x60, 0x01, 0x31, 0x93, 0x42, 0xc0, 0xe9, 0x04, 0x67, 0xc0, 0xe9, - 0x02, 0x31, 0x38, 0xbf, 0x03, 0x60, 0xf0, 0xbc, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x10, 0x00, 0xe0, - 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x0c, 0x4c, 0x86, 0xb0, 0x00, 0x23, 0x4f, 0xf0, 0xff, 0x31, 0x00, 0x22, 0x68, 0x46, - 0xe3, 0x67, 0xcd, 0xe9, 0x01, 0x33, 0x03, 0x93, 0x00, 0x23, 0xcd, 0xe9, 0x04, 0x23, 0x00, 0x91, - 0xff, 0xf7, 0xbe, 0xff, 0x68, 0x46, 0xff, 0xf7, 0xc3, 0xff, 0x02, 0x9b, 0xe3, 0x67, 0x06, 0xb0, - 0x10, 0xbd, 0x00, 0xbf, 0x48, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x23, 0xc0, 0xe9, 0x00, 0x00, 0x83, 0x60, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x4a, 0x04, 0x4b, 0x02, 0xf5, 0x00, 0x61, 0xc3, 0xe9, 0x00, 0x21, 0x70, 0x47, 0x00, 0xbf, - 0xd0, 0x1e, 0x00, 0x20, 0xc8, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0x0e, 0x46, 0x04, 0x46, 0x15, 0x46, 0xff, 0xf7, 0x62, 0xfc, 0x09, 0x4a, 0xd2, 0xe9, - 0x00, 0x73, 0x78, 0x19, 0x01, 0x3c, 0x30, 0x44, 0x71, 0x42, 0x34, 0x44, 0x01, 0x38, 0x08, 0x40, - 0x21, 0x40, 0x01, 0x44, 0x8b, 0x42, 0x03, 0xd3, 0x8f, 0x42, 0x01, 0xd8, 0x11, 0x60, 0xf8, 0xbd, - 0x00, 0x20, 0xf8, 0xbd, 0xc8, 0x1e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x20, 0x23, 0x04, 0x46, 0x0d, 0x46, 0x16, 0x46, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, - 0xb7, 0xfb, 0x32, 0x46, 0x29, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xd2, 0xff, 0x04, 0x46, 0xff, 0xf7, - 0xbf, 0xfb, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x20, 0x46, 0x70, 0xbd, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x4b, 0x05, 0x4a, 0x1a, 0x60, 0x03, 0xf1, 0x0c, 0x00, 0x00, 0x22, 0xc3, 0xe9, 0x01, 0x22, - 0xff, 0xf7, 0xa6, 0xbf, 0xd0, 0x26, 0x00, 0x20, 0x21, 0x0f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x4a, 0x53, 0x68, 0x23, 0xf0, 0x01, 0x03, 0x53, 0x60, 0xef, 0xf3, 0x09, 0x83, 0x68, 0x33, - 0x83, 0xf3, 0x09, 0x88, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x70, 0x47, 0x30, 0xef, 0x00, 0xe0, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x12, 0x4b, 0x5b, 0x68, 0x13, 0xf4, 0x00, 0x63, 0x02, 0xd1, - 0x83, 0xf3, 0x11, 0x88, 0x70, 0x47, 0x10, 0xb5, 0xf1, 0xee, 0x10, 0x3a, 0xef, 0xf3, 0x09, 0x84, - 0x0c, 0x4b, 0x4f, 0xf0, 0x80, 0x72, 0xdb, 0x68, 0x44, 0xf8, 0x08, 0x3c, 0x44, 0xf8, 0x4c, 0x2c, - 0xa4, 0xf1, 0x68, 0x03, 0x83, 0xf3, 0x09, 0x88, 0xff, 0xf7, 0x3a, 0xfd, 0x18, 0xb1, 0x06, 0x4b, - 0x44, 0xf8, 0x50, 0x3c, 0x10, 0xbd, 0x05, 0x4b, 0x44, 0xf8, 0x50, 0x3c, 0x10, 0xbd, 0x00, 0xbf, - 0x00, 0xed, 0x00, 0xe0, 0x30, 0xef, 0x00, 0xe0, 0x45, 0x03, 0x00, 0x08, 0x50, 0x03, 0x00, 0x08, - 0x08, 0xb5, 0x00, 0xf0, 0xd5, 0xfb, 0x00, 0xf0, 0x03, 0xff, 0x00, 0xf0, 0xc9, 0xf8, 0x00, 0xf0, - 0xdf, 0xf8, 0x00, 0xf0, 0xbd, 0xf8, 0x01, 0xf0, 0x0b, 0xfb, 0xbd, 0xe8, 0x08, 0x40, 0x00, 0xf0, - 0xcf, 0xb8, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0x15, 0x46, 0x82, 0x68, 0x06, 0x69, 0xaa, 0x42, 0x0b, 0x46, 0x81, 0x69, 0x38, 0xbf, - 0x85, 0x68, 0x76, 0x1a, 0xb5, 0x42, 0x04, 0x46, 0x1d, 0xd3, 0x0a, 0xd8, 0x18, 0x46, 0x2a, 0x46, - 0xff, 0xf7, 0x88, 0xf9, 0xe3, 0x68, 0xa3, 0x61, 0xa3, 0x68, 0x5b, 0x1b, 0xa3, 0x60, 0x28, 0x46, - 0xf8, 0xbd, 0x32, 0x46, 0x18, 0x46, 0xff, 0xf7, 0x7d, 0xf9, 0xaf, 0x1b, 0x3a, 0x46, 0x30, 0x44, - 0xe1, 0x68, 0xff, 0xf7, 0x77, 0xf9, 0xa3, 0x68, 0xe2, 0x68, 0x5b, 0x1b, 0x3a, 0x44, 0xa2, 0x61, - 0xa3, 0x60, 0x28, 0x46, 0xf8, 0xbd, 0x18, 0x46, 0x2a, 0x46, 0xff, 0xf7, 0x6b, 0xf9, 0xa3, 0x69, - 0x2b, 0x44, 0xa3, 0x61, 0xa3, 0x68, 0x5b, 0x1b, 0xa3, 0x60, 0x28, 0x46, 0xf8, 0xbd, 0x00, 0xbf, - 0x30, 0xb4, 0x02, 0x9c, 0x04, 0x62, 0x00, 0x25, 0x0a, 0x44, 0x85, 0x60, 0x02, 0x61, 0xc0, 0xe9, - 0x00, 0x00, 0xc1, 0x60, 0xc0, 0xe9, 0x05, 0x11, 0xc3, 0x61, 0x30, 0xbc, 0x70, 0x47, 0x00, 0xbf, - 0x38, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0xff, 0xf7, 0x7b, 0xfb, 0xd4, 0xe9, 0x05, 0x32, 0x93, 0x42, - 0x11, 0xd0, 0xa2, 0x68, 0x59, 0x1c, 0x01, 0x32, 0xa2, 0x60, 0x61, 0x61, 0x1d, 0x70, 0xd4, 0xe9, - 0x04, 0x32, 0x9a, 0x42, 0x01, 0xd3, 0xe3, 0x68, 0x63, 0x61, 0x20, 0x46, 0x00, 0x21, 0xff, 0xf7, - 0x6f, 0xfe, 0x00, 0x20, 0x38, 0xbd, 0xa2, 0x68, 0x00, 0x2a, 0xea, 0xd0, 0x4f, 0xf0, 0xff, 0x30, - 0x38, 0xbd, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x4f, 0x83, 0xb0, 0x06, 0x46, 0x0d, 0x46, 0x14, 0x46, 0x01, 0x92, 0x9b, 0x46, - 0xc7, 0x69, 0x4f, 0xf0, 0x20, 0x08, 0x88, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xc1, 0xfa, 0xc4, 0xb1, - 0x4f, 0xf0, 0x00, 0x09, 0x22, 0x46, 0x29, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x79, 0xff, 0x82, 0x46, - 0xd0, 0xb1, 0x30, 0x46, 0x07, 0xb1, 0xb8, 0x47, 0xff, 0xf7, 0xc2, 0xfa, 0x89, 0xf3, 0x11, 0x88, - 0xa4, 0xeb, 0x0a, 0x04, 0x55, 0x44, 0x88, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xa9, 0xfa, 0x00, 0x2c, - 0xe8, 0xd1, 0xdd, 0xf8, 0x04, 0xa0, 0xff, 0xf7, 0xb3, 0xfa, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, - 0x50, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x59, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x10, 0xfe, - 0x00, 0x28, 0xd7, 0xd0, 0x01, 0x9b, 0xa3, 0xeb, 0x04, 0x0a, 0xec, 0xe7, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf0, 0xb6, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x22, 0x00, 0x23, 0x02, 0x70, 0xc0, 0xe9, 0x01, 0x33, 0x0c, 0x30, 0xff, 0xf7, 0x80, 0xbe, - 0x00, 0xf0, 0xf6, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xf0, 0x4e, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x01, 0x22, 0x02, 0x70, 0x43, 0x70, 0x83, 0x70, 0x43, 0x60, 0x03, 0x72, 0xc0, 0xe9, - 0x03, 0x33, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x50, 0xfa, - 0x20, 0x46, 0x65, 0x60, 0x01, 0xf0, 0x44, 0xf8, 0x02, 0x23, 0x23, 0x70, 0xff, 0xf7, 0x58, 0xfa, - 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x38, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x20, 0x23, 0x04, 0x46, 0x0d, 0x46, 0x16, 0x46, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, - 0x37, 0xfa, 0x32, 0x46, 0x29, 0x46, 0x20, 0x46, 0x01, 0xf0, 0x02, 0xf9, 0x01, 0x23, 0xa3, 0x70, - 0xff, 0xf7, 0x3e, 0xfa, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x70, 0xbd, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x41, 0x1f, 0x46, 0x04, 0x46, 0x0e, 0x46, 0x90, 0x46, 0x20, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0x01, 0x25, 0xff, 0xf7, 0x1c, 0xfa, 0x42, 0x46, 0x25, 0x72, 0x31, 0x68, 0x20, 0x46, - 0x01, 0xf0, 0xb6, 0xf8, 0x65, 0x70, 0x39, 0x46, 0x04, 0xf1, 0x10, 0x00, 0xff, 0xf7, 0x68, 0xfd, - 0x05, 0x46, 0x38, 0xb9, 0xff, 0xf7, 0x1c, 0xfa, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x28, 0x46, - 0xbd, 0xe8, 0xf0, 0x81, 0xff, 0xf7, 0x8c, 0xfa, 0x63, 0x78, 0x01, 0x2b, 0x05, 0xd0, 0x4f, 0xf0, - 0xff, 0x30, 0x33, 0x68, 0x1b, 0x1a, 0x33, 0x60, 0xec, 0xe7, 0x20, 0x46, 0x01, 0xf0, 0xb8, 0xf8, - 0x00, 0x23, 0x63, 0x70, 0xf5, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x09, 0x10, 0xb4, 0x9b, 0x00, 0x00, 0xf1, 0x60, 0x44, 0x04, 0xf5, 0x61, 0x44, 0x03, 0xf1, - 0x60, 0x43, 0x09, 0x01, 0x03, 0xf5, 0x61, 0x43, 0x00, 0xf0, 0x1f, 0x00, 0x01, 0x22, 0xc9, 0xb2, - 0x84, 0xf8, 0x00, 0x13, 0x02, 0xfa, 0x00, 0xf0, 0xc3, 0xf8, 0x80, 0x01, 0x5d, 0xf8, 0x04, 0x4b, - 0x18, 0x60, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf1, 0x60, 0x40, 0x00, 0xf5, 0x6d, 0x40, 0x09, 0x01, 0xc9, 0xb2, 0x01, 0x76, 0x70, 0x47, - 0x08, 0xb5, 0xff, 0xf7, 0x1d, 0xfa, 0x10, 0x4a, 0x51, 0x69, 0x13, 0x68, 0x0b, 0x40, 0x03, 0xf0, - 0x01, 0x03, 0x53, 0x61, 0x93, 0xb1, 0x0d, 0x4a, 0x93, 0x68, 0x0b, 0xb1, 0xd0, 0x68, 0x98, 0x47, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xdb, 0xf9, 0x00, 0x21, 0x07, 0x48, 0xff, 0xf7, - 0x4f, 0xfd, 0xff, 0xf7, 0xed, 0xf9, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x18, 0xfa, - 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0x1c, 0xbe, 0x00, 0x3c, 0x01, 0x40, 0x70, 0x27, 0x00, 0x20, - 0x08, 0xb5, 0xff, 0xf7, 0xf5, 0xf9, 0x10, 0x4a, 0x51, 0x69, 0x13, 0x68, 0x0b, 0x40, 0x03, 0xf0, - 0x02, 0x03, 0x53, 0x61, 0x93, 0xb1, 0x0d, 0x4a, 0x93, 0x69, 0x0b, 0xb1, 0xd0, 0x69, 0x98, 0x47, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xb3, 0xf9, 0x00, 0x21, 0x08, 0x48, 0xff, 0xf7, - 0x27, 0xfd, 0xff, 0xf7, 0xc5, 0xf9, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xf0, 0xf9, - 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0xf4, 0xbd, 0x00, 0x3c, 0x01, 0x40, 0x70, 0x27, 0x00, 0x20, - 0x80, 0x27, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xff, 0xf7, 0xc5, 0xf9, 0x10, 0x4a, 0x51, 0x69, 0x13, 0x68, 0x0b, 0x40, 0x03, 0xf0, - 0x04, 0x03, 0x53, 0x61, 0x93, 0xb1, 0x0d, 0x4a, 0x93, 0x6a, 0x0b, 0xb1, 0xd0, 0x6a, 0x98, 0x47, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x83, 0xf9, 0x00, 0x21, 0x08, 0x48, 0xff, 0xf7, - 0xf7, 0xfc, 0xff, 0xf7, 0x95, 0xf9, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xc0, 0xf9, - 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0xc4, 0xbd, 0x00, 0x3c, 0x01, 0x40, 0x70, 0x27, 0x00, 0x20, - 0x90, 0x27, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xff, 0xf7, 0x95, 0xf9, 0x10, 0x4a, 0x51, 0x69, 0x13, 0x68, 0x0b, 0x40, 0x03, 0xf0, - 0x08, 0x03, 0x53, 0x61, 0x93, 0xb1, 0x0d, 0x4a, 0x93, 0x6b, 0x0b, 0xb1, 0xd0, 0x6b, 0x98, 0x47, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x53, 0xf9, 0x00, 0x21, 0x08, 0x48, 0xff, 0xf7, - 0xc7, 0xfc, 0xff, 0xf7, 0x65, 0xf9, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x90, 0xf9, - 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0x94, 0xbd, 0x00, 0x3c, 0x01, 0x40, 0x70, 0x27, 0x00, 0x20, - 0xa0, 0x27, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xff, 0xf7, 0x65, 0xf9, 0x10, 0x4a, 0x51, 0x69, 0x13, 0x68, 0x0b, 0x40, 0x03, 0xf0, - 0x10, 0x03, 0x53, 0x61, 0x93, 0xb1, 0x0d, 0x4a, 0x93, 0x6c, 0x0b, 0xb1, 0xd0, 0x6c, 0x98, 0x47, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x23, 0xf9, 0x00, 0x21, 0x08, 0x48, 0xff, 0xf7, - 0x97, 0xfc, 0xff, 0xf7, 0x35, 0xf9, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x60, 0xf9, - 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0x64, 0xbd, 0x00, 0x3c, 0x01, 0x40, 0x70, 0x27, 0x00, 0x20, - 0xb0, 0x27, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xff, 0xf7, 0x35, 0xf9, 0x3d, 0x4b, 0x5a, 0x69, 0x1c, 0x68, 0x14, 0x40, 0x04, 0xf4, - 0x78, 0x72, 0x5a, 0x61, 0xa3, 0x06, 0x12, 0xd5, 0x39, 0x4a, 0x93, 0x6d, 0x0b, 0xb1, 0xd0, 0x6d, - 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xf2, 0xf8, 0x00, 0x21, 0x35, 0x48, - 0xff, 0xf7, 0x66, 0xfc, 0xff, 0xf7, 0x04, 0xf9, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x60, 0x06, - 0x12, 0xd5, 0x2f, 0x4a, 0x93, 0x6e, 0x0b, 0xb1, 0xd0, 0x6e, 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0xff, 0xf7, 0xdd, 0xf8, 0x00, 0x21, 0x2b, 0x48, 0xff, 0xf7, 0x51, 0xfc, 0xff, 0xf7, - 0xef, 0xf8, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x21, 0x06, 0x12, 0xd5, 0x24, 0x4a, 0x93, 0x6f, - 0x0b, 0xb1, 0xd0, 0x6f, 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xc8, 0xf8, - 0x00, 0x21, 0x22, 0x48, 0xff, 0xf7, 0x3c, 0xfc, 0xff, 0xf7, 0xda, 0xf8, 0x00, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0xe2, 0x05, 0x14, 0xd5, 0x1a, 0x4a, 0xd2, 0xf8, 0x88, 0x30, 0x13, 0xb1, 0xd2, 0xf8, - 0x8c, 0x00, 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0xb1, 0xf8, 0x00, 0x21, - 0x17, 0x48, 0xff, 0xf7, 0x25, 0xfc, 0xff, 0xf7, 0xc3, 0xf8, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, - 0xa3, 0x05, 0x14, 0xd5, 0x0e, 0x4a, 0xd2, 0xf8, 0x98, 0x30, 0x13, 0xb1, 0xd2, 0xf8, 0x9c, 0x00, - 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x9a, 0xf8, 0x00, 0x21, 0x0d, 0x48, - 0xff, 0xf7, 0x0e, 0xfc, 0xff, 0xf7, 0xac, 0xf8, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, - 0xd7, 0xf8, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xdb, 0xbc, 0x00, 0xbf, 0x00, 0x3c, 0x01, 0x40, - 0x70, 0x27, 0x00, 0x20, 0xc0, 0x27, 0x00, 0x20, 0xd0, 0x27, 0x00, 0x20, 0xe0, 0x27, 0x00, 0x20, - 0xf0, 0x27, 0x00, 0x20, 0x00, 0x28, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xff, 0xf7, 0xa5, 0xf8, 0x4b, 0x4b, 0x5a, 0x69, 0x1c, 0x68, 0x14, 0x40, 0x04, 0xf4, - 0x7c, 0x42, 0x5a, 0x61, 0x62, 0x05, 0x14, 0xd5, 0x47, 0x4a, 0xd2, 0xf8, 0xa8, 0x30, 0x13, 0xb1, - 0xd2, 0xf8, 0xac, 0x00, 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x60, 0xf8, - 0x00, 0x21, 0x42, 0x48, 0xff, 0xf7, 0xd4, 0xfb, 0xff, 0xf7, 0x72, 0xf8, 0x00, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0x23, 0x05, 0x14, 0xd5, 0x3c, 0x4a, 0xd2, 0xf8, 0xb8, 0x30, 0x13, 0xb1, 0xd2, 0xf8, - 0xbc, 0x00, 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x49, 0xf8, 0x00, 0x21, - 0x37, 0x48, 0xff, 0xf7, 0xbd, 0xfb, 0xff, 0xf7, 0x5b, 0xf8, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, - 0xe0, 0x04, 0x14, 0xd5, 0x30, 0x4a, 0xd2, 0xf8, 0xc8, 0x30, 0x13, 0xb1, 0xd2, 0xf8, 0xcc, 0x00, - 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x32, 0xf8, 0x00, 0x21, 0x2d, 0x48, - 0xff, 0xf7, 0xa6, 0xfb, 0xff, 0xf7, 0x44, 0xf8, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xa1, 0x04, - 0x14, 0xd5, 0x25, 0x4a, 0xd2, 0xf8, 0xd8, 0x30, 0x13, 0xb1, 0xd2, 0xf8, 0xdc, 0x00, 0x98, 0x47, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x1b, 0xf8, 0x00, 0x21, 0x22, 0x48, 0xff, 0xf7, - 0x8f, 0xfb, 0xff, 0xf7, 0x2d, 0xf8, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x62, 0x04, 0x14, 0xd5, - 0x19, 0x4a, 0xd2, 0xf8, 0xe8, 0x30, 0x13, 0xb1, 0xd2, 0xf8, 0xec, 0x00, 0x98, 0x47, 0x20, 0x23, - 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x04, 0xf8, 0x00, 0x21, 0x18, 0x48, 0xff, 0xf7, 0x78, 0xfb, - 0xff, 0xf7, 0x16, 0xf8, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x23, 0x04, 0x14, 0xd5, 0x0e, 0x4a, - 0xd2, 0xf8, 0xf8, 0x30, 0x13, 0xb1, 0xd2, 0xf8, 0xfc, 0x00, 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0xfe, 0xf7, 0xed, 0xff, 0x00, 0x21, 0x0d, 0x48, 0xff, 0xf7, 0x61, 0xfb, 0xfe, 0xf7, - 0xff, 0xff, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xff, 0xf7, 0x2a, 0xf8, 0xbd, 0xe8, 0x10, 0x40, - 0xff, 0xf7, 0x2e, 0xbc, 0x00, 0x3c, 0x01, 0x40, 0x70, 0x27, 0x00, 0x20, 0x10, 0x28, 0x00, 0x20, - 0x20, 0x28, 0x00, 0x20, 0x30, 0x28, 0x00, 0x20, 0x40, 0x28, 0x00, 0x20, 0x50, 0x28, 0x00, 0x20, - 0x60, 0x28, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x21, 0x08, 0xb5, 0x08, 0x46, 0xff, 0xf7, 0xab, 0xfd, 0x06, 0x21, 0x07, 0x20, 0xff, 0xf7, - 0xa7, 0xfd, 0x06, 0x21, 0x08, 0x20, 0xff, 0xf7, 0xa3, 0xfd, 0x06, 0x21, 0x09, 0x20, 0xff, 0xf7, - 0x9f, 0xfd, 0x06, 0x21, 0x0a, 0x20, 0xff, 0xf7, 0x9b, 0xfd, 0x06, 0x21, 0x17, 0x20, 0xff, 0xf7, - 0x97, 0xfd, 0x06, 0x21, 0x28, 0x20, 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0x91, 0xbd, 0x00, 0xbf, - 0x22, 0x4b, 0x23, 0x48, 0x1a, 0x69, 0x6f, 0xea, 0x42, 0x52, 0x6f, 0xea, 0x52, 0x52, 0x10, 0xb5, - 0x1a, 0x61, 0x1a, 0x69, 0xc2, 0xf3, 0x0a, 0x02, 0x1a, 0x61, 0x4f, 0xf0, 0xff, 0x34, 0x1a, 0x69, - 0x5a, 0x69, 0x5c, 0x61, 0x00, 0x21, 0x5a, 0x69, 0x59, 0x61, 0x5a, 0x69, 0x1a, 0x6a, 0x62, 0xf0, - 0x80, 0x52, 0x1a, 0x62, 0x1a, 0x6a, 0x02, 0xf0, 0x80, 0x52, 0x1a, 0x62, 0x1a, 0x6a, 0x5a, 0x6a, - 0x5c, 0x62, 0x5a, 0x6a, 0x59, 0x62, 0x5a, 0x6a, 0x1a, 0x6c, 0x42, 0xf0, 0x80, 0x52, 0x1a, 0x64, - 0x1a, 0x6e, 0x42, 0xf0, 0x80, 0x52, 0x1a, 0x66, 0x1a, 0x6e, 0x02, 0x68, 0x42, 0xf4, 0x80, 0x72, - 0x02, 0x60, 0x1a, 0x6f, 0x02, 0xf4, 0x40, 0x72, 0xb2, 0xf5, 0x40, 0x7f, 0x03, 0xd0, 0x4f, 0xf4, - 0x80, 0x32, 0x1a, 0x67, 0x19, 0x67, 0x06, 0x4a, 0x53, 0x68, 0x23, 0xf4, 0x00, 0x73, 0x53, 0x60, - 0x00, 0xf0, 0x6e, 0xfa, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x9a, 0xbf, 0x00, 0x38, 0x02, 0x40, - 0x00, 0x70, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x33, 0x4b, 0x34, 0x4a, 0x4f, 0xf0, 0x80, 0x50, 0x4f, 0xf4, 0x40, 0x41, 0x18, 0x64, 0x11, 0x60, - 0x1a, 0x68, 0x42, 0xf0, 0x01, 0x02, 0x1a, 0x60, 0x1a, 0x68, 0x92, 0x07, 0xfc, 0xd5, 0x99, 0x68, - 0x2b, 0x4a, 0x21, 0xf0, 0x03, 0x01, 0x99, 0x60, 0x93, 0x68, 0x13, 0xf0, 0x0c, 0x03, 0xfb, 0xd1, - 0x10, 0x68, 0x27, 0x49, 0x00, 0xf0, 0xf9, 0x00, 0x10, 0x60, 0x93, 0x60, 0x13, 0x68, 0x43, 0xf4, - 0x80, 0x33, 0x13, 0x60, 0x0b, 0x68, 0x98, 0x03, 0xfc, 0xd5, 0x4b, 0x6f, 0x20, 0x4a, 0x43, 0xf0, - 0x01, 0x03, 0x4b, 0x67, 0x53, 0x6f, 0x99, 0x07, 0xfc, 0xd5, 0x1f, 0x4b, 0x53, 0x60, 0x13, 0x68, - 0x1c, 0x49, 0x43, 0xf0, 0x80, 0x73, 0x13, 0x60, 0x4b, 0x68, 0x5a, 0x04, 0xfc, 0xd5, 0x18, 0x4a, - 0x13, 0x68, 0x9b, 0x01, 0xfc, 0xd5, 0x19, 0x49, 0x91, 0x60, 0x19, 0x4b, 0x00, 0x21, 0xc2, 0xf8, - 0x8c, 0x10, 0x1a, 0x68, 0x17, 0x4b, 0x9a, 0x42, 0x17, 0xd0, 0x17, 0x4b, 0x40, 0xf2, 0x05, 0x72, - 0x1a, 0x60, 0x0f, 0x4a, 0x93, 0x68, 0x43, 0xf0, 0x02, 0x03, 0x93, 0x60, 0x93, 0x68, 0x03, 0xf0, - 0x0c, 0x03, 0x08, 0x2b, 0xfa, 0xd1, 0x53, 0x6c, 0x43, 0xf4, 0x80, 0x43, 0x53, 0x64, 0x53, 0x6e, - 0x43, 0xf4, 0x80, 0x43, 0x53, 0x66, 0x53, 0x6e, 0x70, 0x47, 0x0c, 0x4a, 0x0c, 0x4b, 0x12, 0x68, - 0x9a, 0x42, 0xe2, 0xd1, 0x08, 0x4b, 0x40, 0xf2, 0x05, 0x12, 0x1a, 0x60, 0xe1, 0xe7, 0x00, 0xbf, - 0x00, 0x38, 0x02, 0x40, 0x00, 0x70, 0x00, 0x40, 0x08, 0x54, 0x40, 0x07, 0x00, 0x94, 0x88, 0x38, - 0x00, 0x20, 0x04, 0xe0, 0x11, 0x64, 0x00, 0x20, 0x00, 0x3c, 0x02, 0x40, 0x00, 0xed, 0x00, 0xe0, - 0x41, 0xc2, 0x0f, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0x05, 0xff, 0x08, 0x4b, 0x08, 0x4a, 0x19, 0x68, 0x01, 0xf0, 0x3d, 0x01, - 0x99, 0x60, 0x13, 0x68, 0x0b, 0xb1, 0x50, 0x68, 0x98, 0x47, 0xfe, 0xf7, 0x11, 0xff, 0xbd, 0xe8, - 0x08, 0x40, 0xff, 0xf7, 0x15, 0xbb, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, 0xec, 0x26, 0x00, 0x20, - 0x10, 0xb5, 0xfe, 0xf7, 0xed, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x82, 0x68, 0x89, 0x09, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x01, 0x9c, 0x60, 0x0a, 0xb1, 0xc0, 0x68, 0x90, 0x47, 0xfe, 0xf7, - 0xf7, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xfb, 0xba, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0xcd, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x02, 0x69, 0x09, 0x0c, - 0x01, 0xf0, 0x3d, 0x01, 0x0c, 0x04, 0x9c, 0x60, 0x0a, 0xb1, 0x40, 0x69, 0x90, 0x47, 0xfe, 0xf7, - 0xd7, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xdb, 0xba, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0xad, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x82, 0x69, 0x89, 0x0d, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x05, 0x9c, 0x60, 0x0a, 0xb1, 0xc0, 0x69, 0x90, 0x47, 0xfe, 0xf7, - 0xb7, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xbb, 0xba, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0x8d, 0xfe, 0x08, 0x4b, 0x08, 0x48, 0x59, 0x68, 0x02, 0x6a, 0x01, 0xf0, - 0x3d, 0x01, 0xd9, 0x60, 0x0a, 0xb1, 0x40, 0x6a, 0x90, 0x47, 0xfe, 0xf7, 0x99, 0xfe, 0xbd, 0xe8, - 0x08, 0x40, 0xff, 0xf7, 0x9d, 0xba, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, 0xec, 0x26, 0x00, 0x20, - 0x10, 0xb5, 0xfe, 0xf7, 0x75, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x82, 0x6a, 0x89, 0x09, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x01, 0xdc, 0x60, 0x0a, 0xb1, 0xc0, 0x6a, 0x90, 0x47, 0xfe, 0xf7, - 0x7f, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x83, 0xba, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0x55, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x02, 0x6b, 0x09, 0x0c, - 0x01, 0xf0, 0x3d, 0x01, 0x0c, 0x04, 0xdc, 0x60, 0x0a, 0xb1, 0x40, 0x6b, 0x90, 0x47, 0xfe, 0xf7, - 0x5f, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x63, 0xba, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0x35, 0xfe, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x82, 0x6b, 0x89, 0x0d, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x05, 0xdc, 0x60, 0x0a, 0xb1, 0xc0, 0x6b, 0x90, 0x47, 0xfe, 0xf7, - 0x3f, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x43, 0xba, 0x00, 0xbf, 0x00, 0x60, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0x15, 0xfe, 0x08, 0x4b, 0x08, 0x48, 0x19, 0x68, 0x02, 0x6c, 0x01, 0xf0, - 0x3d, 0x01, 0x99, 0x60, 0x0a, 0xb1, 0x40, 0x6c, 0x90, 0x47, 0xfe, 0xf7, 0x21, 0xfe, 0xbd, 0xe8, - 0x08, 0x40, 0xff, 0xf7, 0x25, 0xba, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, 0xec, 0x26, 0x00, 0x20, - 0x10, 0xb5, 0xfe, 0xf7, 0xfd, 0xfd, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x82, 0x6c, 0x89, 0x09, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x01, 0x9c, 0x60, 0x0a, 0xb1, 0xc0, 0x6c, 0x90, 0x47, 0xfe, 0xf7, - 0x07, 0xfe, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x0b, 0xba, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0xdd, 0xfd, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x02, 0x6d, 0x09, 0x0c, - 0x01, 0xf0, 0x3d, 0x01, 0x0c, 0x04, 0x9c, 0x60, 0x0a, 0xb1, 0x40, 0x6d, 0x90, 0x47, 0xfe, 0xf7, - 0xe7, 0xfd, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xeb, 0xb9, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0xbd, 0xfd, 0x09, 0x4b, 0x09, 0x48, 0x19, 0x68, 0x82, 0x6d, 0x89, 0x0d, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x05, 0x9c, 0x60, 0x0a, 0xb1, 0xc0, 0x6d, 0x90, 0x47, 0xfe, 0xf7, - 0xc7, 0xfd, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xcb, 0xb9, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0x9d, 0xfd, 0x08, 0x4b, 0x08, 0x48, 0x59, 0x68, 0x02, 0x6e, 0x01, 0xf0, - 0x3d, 0x01, 0xd9, 0x60, 0x0a, 0xb1, 0x40, 0x6e, 0x90, 0x47, 0xfe, 0xf7, 0xa9, 0xfd, 0xbd, 0xe8, - 0x08, 0x40, 0xff, 0xf7, 0xad, 0xb9, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, 0xec, 0x26, 0x00, 0x20, - 0x10, 0xb5, 0xfe, 0xf7, 0x85, 0xfd, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x82, 0x6e, 0x89, 0x09, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x01, 0xdc, 0x60, 0x0a, 0xb1, 0xc0, 0x6e, 0x90, 0x47, 0xfe, 0xf7, - 0x8f, 0xfd, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x93, 0xb9, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0x65, 0xfd, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x02, 0x6f, 0x09, 0x0c, - 0x01, 0xf0, 0x3d, 0x01, 0x0c, 0x04, 0xdc, 0x60, 0x0a, 0xb1, 0x40, 0x6f, 0x90, 0x47, 0xfe, 0xf7, - 0x6f, 0xfd, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x73, 0xb9, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0xfe, 0xf7, 0x45, 0xfd, 0x09, 0x4b, 0x09, 0x48, 0x59, 0x68, 0x82, 0x6f, 0x89, 0x0d, - 0x01, 0xf0, 0x3d, 0x01, 0x8c, 0x05, 0xdc, 0x60, 0x0a, 0xb1, 0xc0, 0x6f, 0x90, 0x47, 0xfe, 0xf7, - 0x4f, 0xfd, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x53, 0xb9, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x40, - 0xec, 0x26, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x49, 0x0f, 0x4a, 0x0f, 0x48, 0x00, 0x23, 0x10, 0xb4, 0x0b, 0x60, 0x0e, 0x4c, 0x19, 0x46, - 0x01, 0xe0, 0x52, 0xf8, 0x0c, 0x0c, 0x01, 0x60, 0x44, 0xf8, 0x33, 0x10, 0x01, 0x33, 0x10, 0x2b, - 0x02, 0xf1, 0x0c, 0x02, 0xf5, 0xd1, 0x09, 0x49, 0x09, 0x4a, 0x5d, 0xf8, 0x04, 0x4b, 0x4f, 0xf0, - 0xff, 0x33, 0x8b, 0x60, 0xcb, 0x60, 0x93, 0x60, 0xd3, 0x60, 0x70, 0x47, 0x6c, 0x27, 0x00, 0x20, - 0x20, 0x38, 0x00, 0x08, 0x10, 0x60, 0x02, 0x40, 0xec, 0x26, 0x00, 0x20, 0x00, 0x60, 0x02, 0x40, - 0x00, 0x64, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0xdf, 0xf8, 0x98, 0xc0, 0x47, 0x7a, 0xdc, 0xf8, 0x00, 0x50, 0x01, 0x24, 0x04, 0xfa, - 0x07, 0xf6, 0x2e, 0x42, 0x3c, 0xd1, 0x1f, 0x4c, 0x35, 0x43, 0x04, 0xeb, 0xc7, 0x06, 0x15, 0xf0, - 0xff, 0x0f, 0xcc, 0xf8, 0x00, 0x50, 0x44, 0xf8, 0x37, 0x20, 0x73, 0x60, 0x09, 0xd0, 0x1a, 0x4b, - 0x1c, 0x6b, 0x44, 0xf4, 0x00, 0x14, 0x1c, 0x63, 0x1c, 0x6d, 0x44, 0xf4, 0x00, 0x14, 0x1c, 0x65, - 0x1b, 0x6d, 0x15, 0xf4, 0x7f, 0x4f, 0x16, 0xd1, 0x05, 0x68, 0x2b, 0x68, 0x23, 0xf0, 0x1f, 0x03, - 0x2b, 0x60, 0x2c, 0x68, 0x14, 0xf0, 0x01, 0x04, 0xfb, 0xd1, 0x07, 0x7a, 0x46, 0x68, 0x3d, 0x23, - 0xbb, 0x40, 0x21, 0x27, 0x33, 0x60, 0x2c, 0x60, 0x6f, 0x61, 0x7a, 0xb1, 0x80, 0x7a, 0xff, 0xf7, - 0x77, 0xfa, 0x20, 0x46, 0xf8, 0xbd, 0x08, 0x4b, 0x1c, 0x6b, 0x44, 0xf4, 0x80, 0x04, 0x1c, 0x63, - 0x1c, 0x6d, 0x44, 0xf4, 0x80, 0x04, 0x1c, 0x65, 0x1b, 0x6d, 0xdd, 0xe7, 0x10, 0x46, 0xf8, 0xbd, - 0x20, 0x46, 0xf8, 0xbd, 0xec, 0x26, 0x00, 0x20, 0x00, 0x38, 0x02, 0x40, 0x6c, 0x27, 0x00, 0x20, - 0x05, 0x4b, 0x00, 0x22, 0x03, 0xf5, 0x80, 0x71, 0xc3, 0xe9, 0x00, 0x33, 0xc3, 0xe9, 0x02, 0x22, - 0x10, 0x33, 0x8b, 0x42, 0xf8, 0xd1, 0x70, 0x47, 0x70, 0x27, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x4f, 0x02, 0xf0, 0x03, 0x09, 0xc2, 0xf3, 0x80, 0x0e, 0xc2, 0xf3, 0xc1, 0x0c, - 0xc2, 0xf3, 0x41, 0x17, 0xc8, 0x46, 0xc2, 0xf3, 0xc3, 0x12, 0x00, 0x26, 0x4f, 0xf0, 0x01, 0x0a, - 0x16, 0xe0, 0xd0, 0xf8, 0x00, 0xb0, 0x03, 0xea, 0x0b, 0x03, 0x43, 0xea, 0x08, 0x03, 0x07, 0x2e, - 0x03, 0x60, 0x44, 0xd8, 0x03, 0x6a, 0x1d, 0x40, 0x2c, 0x43, 0x04, 0x62, 0x49, 0x08, 0x3c, 0xd0, - 0x4f, 0xea, 0x4e, 0x0e, 0x4f, 0xea, 0x8c, 0x0c, 0xbf, 0x00, 0x4f, 0xea, 0x88, 0x08, 0x01, 0x36, - 0xcb, 0x07, 0xf3, 0xd5, 0x43, 0x68, 0x0a, 0xfa, 0x06, 0xf4, 0x23, 0xea, 0x04, 0x03, 0x43, 0xea, - 0x0e, 0x03, 0x43, 0x60, 0x03, 0x25, 0x73, 0x00, 0x84, 0x68, 0x05, 0xfa, 0x03, 0xf3, 0xdb, 0x43, - 0x1c, 0x40, 0x44, 0xea, 0x0c, 0x04, 0x84, 0x60, 0xc5, 0x68, 0x06, 0xf0, 0x07, 0x04, 0xa4, 0x00, - 0x1d, 0x40, 0x4f, 0xf0, 0x0f, 0x0b, 0x3d, 0x43, 0x0b, 0xfa, 0x04, 0xfb, 0xb9, 0xf1, 0x02, 0x0f, - 0xc5, 0x60, 0x02, 0xfa, 0x04, 0xf4, 0x6f, 0xea, 0x0b, 0x05, 0xc2, 0xd1, 0x07, 0x2e, 0x13, 0xd8, - 0xd0, 0xf8, 0x20, 0xb0, 0x0b, 0xea, 0x05, 0x05, 0x2c, 0x43, 0x04, 0x62, 0x04, 0x68, 0x23, 0x40, - 0x43, 0xea, 0x08, 0x03, 0x49, 0x08, 0x03, 0x60, 0xc2, 0xd1, 0xbd, 0xe8, 0xf0, 0x8f, 0x43, 0x6a, - 0x1d, 0x40, 0x2c, 0x43, 0x44, 0x62, 0xb9, 0xe7, 0xd0, 0xf8, 0x24, 0xb0, 0x0b, 0xea, 0x05, 0x05, - 0x2c, 0x43, 0x44, 0x62, 0xea, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x0f, 0x4e, 0x0f, 0x4d, 0x10, 0x4c, 0x30, 0x46, 0xff, 0xf7, 0x49, 0xf9, 0x0f, 0x4a, - 0x0f, 0x4b, 0x10, 0x49, 0xf1, 0x61, 0x20, 0x46, 0x05, 0xf1, 0x24, 0x01, 0xc6, 0xe9, 0x08, 0x51, - 0xc6, 0xe9, 0x0a, 0x23, 0xff, 0xf7, 0x3c, 0xf9, 0x0b, 0x49, 0x0c, 0x4a, 0x0c, 0x4b, 0xe1, 0x61, - 0xa5, 0xf1, 0x60, 0x01, 0x0c, 0x3d, 0xc4, 0xe9, 0x08, 0x15, 0xc4, 0xe9, 0x0a, 0x23, 0x70, 0xbd, - 0x70, 0x28, 0x00, 0x20, 0x74, 0x38, 0x00, 0x08, 0xa0, 0x28, 0x00, 0x20, 0x16, 0x00, 0x01, 0x06, - 0x46, 0x00, 0x01, 0x06, 0x00, 0x30, 0x01, 0x40, 0x00, 0x3c, 0x00, 0x40, 0x16, 0x00, 0x01, 0x00, - 0x46, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0xfe, 0xf7, 0xed, 0xfb, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, 0xb8, 0xfb, - 0xfe, 0xf7, 0x36, 0xfb, 0xfe, 0xf7, 0xcc, 0xfb, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, - 0xf7, 0xfb, 0xbd, 0xe8, 0x08, 0x40, 0xfe, 0xf7, 0xfb, 0xbf, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x4b, 0x06, 0x4a, 0x5a, 0x60, 0x00, 0x21, 0x07, 0x22, 0x99, 0x60, 0x0b, 0x20, 0x08, 0x21, - 0x1a, 0x60, 0xff, 0xf7, 0xa5, 0xb9, 0x00, 0xbf, 0x10, 0xe0, 0x00, 0xe0, 0x3f, 0x90, 0x02, 0x00, - 0xc1, 0x69, 0x0a, 0x68, 0x13, 0x68, 0x23, 0xf0, 0x1f, 0x03, 0x30, 0xb4, 0x13, 0x60, 0x13, 0x68, - 0xdb, 0x07, 0xfc, 0xd4, 0x0d, 0x7a, 0x04, 0x6a, 0x49, 0x68, 0x22, 0x68, 0x3d, 0x23, 0xab, 0x40, - 0x0b, 0x60, 0x13, 0x68, 0x23, 0xf0, 0x1f, 0x03, 0x13, 0x60, 0x13, 0x68, 0x13, 0xf0, 0x01, 0x03, - 0xfb, 0xd1, 0x25, 0x7a, 0x42, 0x69, 0x60, 0x68, 0x3d, 0x21, 0xa9, 0x40, 0x01, 0x60, 0x30, 0xbc, - 0xd3, 0x60, 0x13, 0x61, 0x53, 0x61, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x11, 0xf0, 0x0c, 0x0f, 0x38, 0xb5, 0x04, 0x46, 0x2d, 0xd1, 0x21, 0x6a, 0x0a, 0x68, 0x13, 0x68, - 0x23, 0xf0, 0x1f, 0x03, 0x13, 0x60, 0x13, 0x68, 0xdb, 0x07, 0xfc, 0xd4, 0x63, 0x68, 0x0d, 0x7a, - 0x48, 0x68, 0x1a, 0x68, 0x3d, 0x23, 0xab, 0x40, 0x02, 0x21, 0x03, 0x60, 0x61, 0x70, 0xba, 0xb1, - 0x20, 0x46, 0x90, 0x47, 0x63, 0x78, 0x02, 0x2b, 0x12, 0xd0, 0x23, 0x7a, 0x03, 0xb9, 0x38, 0xbd, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, 0x4b, 0xfb, 0x04, 0xf1, 0x10, 0x00, 0x00, 0x21, - 0xfe, 0xf7, 0x86, 0xfe, 0xfe, 0xf7, 0x5c, 0xfb, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0x38, 0xbd, - 0x00, 0x23, 0x63, 0x70, 0xe9, 0xe7, 0x02, 0x48, 0xfe, 0xf7, 0xaa, 0xfa, 0xcd, 0xe7, 0x00, 0xbf, - 0xd4, 0x38, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x11, 0xf0, 0x0c, 0x0f, 0x2d, 0xe9, 0xf0, 0x41, 0x0d, 0x46, 0x04, 0x46, 0x13, 0xd1, 0xa2, 0x78, - 0x63, 0x68, 0x3a, 0xb9, 0xdb, 0x68, 0x00, 0x2b, 0x37, 0xd0, 0xa1, 0x8c, 0x20, 0x46, 0xbd, 0xe8, - 0xf0, 0x41, 0x18, 0x47, 0x5a, 0x6a, 0x52, 0xb1, 0xe8, 0x06, 0x30, 0xd5, 0x20, 0x46, 0x00, 0x21, - 0xbd, 0xe8, 0xf0, 0x41, 0x10, 0x47, 0x25, 0x48, 0xfe, 0xf7, 0x82, 0xfa, 0xe7, 0xe7, 0xe0, 0x69, - 0x01, 0x68, 0x0a, 0x68, 0x22, 0xf0, 0x1f, 0x02, 0x0a, 0x60, 0x0a, 0x68, 0xd2, 0x07, 0xfc, 0xd4, - 0x07, 0x7a, 0x46, 0x68, 0x9d, 0x68, 0x3d, 0x22, 0xba, 0x40, 0x02, 0x20, 0x32, 0x60, 0xa0, 0x70, - 0xfd, 0xb1, 0x20, 0x46, 0xa8, 0x47, 0xa3, 0x78, 0x02, 0x2b, 0x17, 0xd0, 0x20, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0xfe, 0xf7, 0xf5, 0xfa, 0x04, 0xf1, 0x0c, 0x00, 0x00, 0x21, 0xfe, 0xf7, 0x30, 0xfe, - 0xfe, 0xf7, 0x06, 0xfb, 0x00, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xbd, 0xe8, 0xf0, 0x81, 0xa9, 0x06, - 0xfb, 0xd5, 0x20, 0x46, 0x01, 0x21, 0xbd, 0xe8, 0xf0, 0x41, 0x10, 0x47, 0xe2, 0x69, 0x63, 0x68, - 0x11, 0x68, 0xdb, 0x68, 0xa2, 0x69, 0x00, 0x2b, 0x14, 0xbf, 0x4f, 0xf4, 0x88, 0x73, 0x4f, 0xf4, - 0x80, 0x73, 0x13, 0x43, 0x01, 0x20, 0x00, 0x25, 0x04, 0xf1, 0x24, 0x02, 0xa5, 0x70, 0xca, 0x60, - 0x48, 0x60, 0x0b, 0x60, 0x0b, 0x68, 0x03, 0x43, 0x0b, 0x60, 0xcf, 0xe7, 0xd4, 0x38, 0x00, 0x08, - 0xf8, 0xb5, 0x3a, 0x4e, 0xfe, 0xf7, 0xf4, 0xfa, 0x74, 0x69, 0xe7, 0x68, 0x25, 0x68, 0x63, 0x68, - 0x40, 0xf2, 0x0f, 0x13, 0x1d, 0x42, 0x2c, 0xd0, 0x73, 0x68, 0x1a, 0x69, 0x6f, 0xf4, 0x80, 0x73, - 0x23, 0x60, 0xba, 0xb1, 0xab, 0xb2, 0x13, 0xf0, 0x08, 0x0f, 0x0c, 0xbf, 0x00, 0x21, 0x10, 0x21, - 0xd8, 0x07, 0x48, 0xbf, 0x41, 0xf0, 0x04, 0x01, 0x98, 0x07, 0x48, 0xbf, 0x41, 0xf0, 0x08, 0x01, - 0x58, 0x07, 0x48, 0xbf, 0x41, 0xf0, 0x20, 0x01, 0xdb, 0x05, 0x48, 0xbf, 0x41, 0xf0, 0x40, 0x01, - 0x26, 0x48, 0x90, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, 0x99, 0xfa, 0x6f, 0xf0, - 0x01, 0x01, 0x23, 0x48, 0xfe, 0xf7, 0xd4, 0xfd, 0xfe, 0xf7, 0xaa, 0xfa, 0x00, 0x23, 0x83, 0xf3, - 0x11, 0x88, 0x68, 0x06, 0x0e, 0xd5, 0x79, 0x06, 0x0c, 0xd5, 0x73, 0x68, 0x6f, 0xf0, 0x40, 0x01, - 0x5a, 0x68, 0x21, 0x60, 0x07, 0xea, 0x01, 0x03, 0xe3, 0x60, 0x0a, 0xb1, 0x17, 0x48, 0x90, 0x47, - 0x34, 0x7a, 0xec, 0xb1, 0xea, 0x06, 0x15, 0xd5, 0xfb, 0x06, 0x13, 0xd5, 0x73, 0x68, 0x1b, 0x6a, - 0x0b, 0xb1, 0x12, 0x48, 0x98, 0x47, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, 0x70, 0xfa, - 0x4f, 0xf0, 0xff, 0x31, 0x0e, 0x48, 0xfe, 0xf7, 0xab, 0xfd, 0xfe, 0xf7, 0x81, 0xfa, 0x00, 0x23, - 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, 0xac, 0xfa, 0xbd, 0xe8, 0xf8, 0x40, 0xfe, 0xf7, 0xb0, 0xbe, - 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfe, 0xf7, 0x5b, 0xfa, 0x21, 0x46, 0x05, 0x48, 0xfe, 0xf7, - 0x97, 0xfd, 0xfe, 0xf7, 0x6d, 0xfa, 0x84, 0xf3, 0x11, 0x88, 0xd3, 0xe7, 0xd0, 0x28, 0x00, 0x20, - 0xdc, 0x28, 0x00, 0x20, 0xe0, 0x28, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x07, 0x4c, 0x20, 0x46, 0xfe, 0xf7, 0xb3, 0xff, 0x06, 0x4b, 0x06, 0x4a, 0x62, 0x61, - 0x06, 0x21, 0x03, 0xf1, 0x18, 0x02, 0xc4, 0xe9, 0x06, 0x13, 0x22, 0x62, 0x10, 0xbd, 0x00, 0xbf, - 0xd0, 0x28, 0x00, 0x20, 0x2c, 0x38, 0x00, 0x08, 0x00, 0x4c, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x78, 0x01, 0x2b, 0x2d, 0xe9, 0xf0, 0x41, 0x04, 0x46, 0x55, 0xd0, 0x45, 0x69, 0x00, 0x23, - 0xa3, 0x70, 0x63, 0x70, 0x20, 0x46, 0xff, 0xf7, 0x8b, 0xfe, 0x43, 0x4b, 0x61, 0x69, 0x99, 0x42, - 0x63, 0x68, 0x3b, 0xd0, 0x41, 0x48, 0x5a, 0x69, 0x81, 0x42, 0x38, 0xd0, 0x40, 0x49, 0xb1, 0xfb, - 0xf2, 0xf2, 0x19, 0x8b, 0x08, 0x04, 0x38, 0xd4, 0xd3, 0xf8, 0x0c, 0xe0, 0xd3, 0xf8, 0x20, 0x80, - 0x5f, 0x8b, 0x98, 0x8b, 0xe3, 0x69, 0xaa, 0x60, 0x2a, 0x68, 0x6a, 0x68, 0xd4, 0xf8, 0x18, 0xc0, - 0x1b, 0x68, 0x00, 0x22, 0x2a, 0x60, 0x42, 0xf2, 0x1c, 0x16, 0x42, 0xf2, 0x0c, 0x12, 0xb8, 0xf1, - 0x00, 0x0f, 0x08, 0xbf, 0x16, 0x46, 0xbe, 0xf1, 0x00, 0x0f, 0x14, 0xbf, 0x4f, 0xf4, 0x88, 0x72, - 0x4f, 0xf4, 0x80, 0x72, 0x31, 0x43, 0x42, 0xea, 0x0c, 0x02, 0x01, 0x26, 0x47, 0xf0, 0x40, 0x07, - 0x40, 0xf0, 0xc1, 0x00, 0x24, 0x34, 0x2f, 0x61, 0x68, 0x61, 0xe9, 0x60, 0xdc, 0x60, 0x5e, 0x60, - 0x1a, 0x60, 0x1a, 0x68, 0x32, 0x43, 0x1a, 0x60, 0xbd, 0xe8, 0xf0, 0x81, 0x5a, 0x69, 0x25, 0x49, - 0xb1, 0xfb, 0xf2, 0xf2, 0x19, 0x8b, 0x08, 0x04, 0xc6, 0xd5, 0x22, 0xf0, 0x07, 0x00, 0x02, 0xf0, - 0x07, 0x02, 0x42, 0xea, 0x40, 0x02, 0xbf, 0xe7, 0x1f, 0x4b, 0x98, 0x42, 0x15, 0xd0, 0x63, 0x68, - 0x1b, 0x8b, 0x03, 0xf4, 0xa0, 0x53, 0xb3, 0xf5, 0x80, 0x5f, 0x03, 0xd1, 0xa3, 0x69, 0x43, 0xf4, - 0x20, 0x53, 0xa3, 0x61, 0xd4, 0xe9, 0x07, 0x23, 0x65, 0x69, 0x10, 0x68, 0x19, 0x68, 0x00, 0x22, - 0x2b, 0x1d, 0x83, 0x60, 0x8b, 0x60, 0xa2, 0x84, 0x91, 0xe7, 0x03, 0x46, 0x13, 0x4a, 0xc0, 0x69, - 0x06, 0x21, 0xff, 0xf7, 0xed, 0xfc, 0x23, 0x46, 0x11, 0x4a, 0x20, 0x6a, 0x06, 0x21, 0xff, 0xf7, - 0xe7, 0xfc, 0x10, 0x4b, 0x1a, 0x6c, 0x42, 0xf4, 0x00, 0x22, 0x1a, 0x64, 0x1a, 0x6e, 0x42, 0xf4, - 0x00, 0x22, 0x1a, 0x66, 0x06, 0x21, 0x34, 0x20, 0x1b, 0x6e, 0xfe, 0xf7, 0x89, 0xff, 0xa3, 0x69, - 0x43, 0xf0, 0x00, 0x63, 0xa3, 0x61, 0xca, 0xe7, 0x00, 0x10, 0x01, 0x40, 0x00, 0x14, 0x01, 0x40, - 0x80, 0xde, 0x80, 0x02, 0x00, 0xbd, 0x01, 0x05, 0xd0, 0x28, 0x00, 0x20, 0x91, 0x20, 0x00, 0x08, - 0x11, 0x20, 0x00, 0x08, 0x00, 0x38, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0xb4, 0x03, 0x6a, 0x45, 0x68, 0x84, 0x69, 0x1b, 0x68, 0x6d, 0x68, 0xda, 0x60, 0x44, 0xf4, - 0x8a, 0x64, 0x59, 0x60, 0x1c, 0x60, 0x6d, 0xb1, 0x42, 0x69, 0x6f, 0xf0, 0x40, 0x01, 0x11, 0x60, - 0xd1, 0x68, 0x41, 0xf0, 0x40, 0x01, 0xd1, 0x60, 0x1a, 0x68, 0x42, 0xf0, 0x01, 0x02, 0x1a, 0x60, - 0x30, 0xbc, 0x70, 0x47, 0x02, 0x7a, 0x00, 0x2a, 0xee, 0xd0, 0xf5, 0xe7, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x6a, 0x0a, 0x68, 0x13, 0x68, 0x23, 0xf0, 0x1f, 0x03, 0x13, 0x60, 0x13, 0x68, 0xdb, 0x07, - 0xfc, 0xd4, 0x08, 0x7a, 0x49, 0x68, 0x3d, 0x23, 0x83, 0x40, 0x0b, 0x60, 0x50, 0x68, 0x70, 0x47, - 0xf0, 0xb4, 0xc5, 0x69, 0x2b, 0x68, 0x1c, 0x68, 0x24, 0xf0, 0x1f, 0x04, 0x1c, 0x60, 0x1c, 0x68, - 0xe4, 0x07, 0xfc, 0xd4, 0x44, 0x68, 0x2f, 0x7a, 0x6e, 0x68, 0x65, 0x6a, 0x3d, 0x24, 0xbc, 0x40, - 0x34, 0x60, 0x80, 0x69, 0xda, 0x60, 0x00, 0x2d, 0x0c, 0xbf, 0x4f, 0xf4, 0x82, 0x62, 0x4f, 0xf4, - 0xa3, 0x62, 0x02, 0x43, 0x59, 0x60, 0x1a, 0x60, 0x1a, 0x68, 0x42, 0xf0, 0x01, 0x02, 0x1a, 0x60, - 0xf0, 0xbc, 0x70, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4f, 0x4a, 0x50, 0x49, 0x13, 0x69, 0x50, 0x48, 0xf0, 0xb5, 0x40, 0xf2, 0xff, 0x74, 0x23, 0x43, - 0x13, 0x61, 0x13, 0x69, 0x4d, 0x4f, 0xdf, 0xf8, 0x64, 0xe1, 0x4d, 0x4e, 0x4d, 0x4d, 0x23, 0xf4, - 0xff, 0x63, 0x23, 0xf0, 0x07, 0x03, 0x13, 0x61, 0x13, 0x69, 0x13, 0x6b, 0x23, 0x43, 0x13, 0x63, - 0x13, 0x6d, 0x23, 0x43, 0x13, 0x65, 0x6f, 0xf4, 0xa8, 0x4c, 0x00, 0x23, 0x12, 0x6d, 0x4b, 0x60, - 0xc1, 0xf8, 0x08, 0xc0, 0xcf, 0x60, 0x44, 0x4f, 0xdf, 0xf8, 0x34, 0xc1, 0x43, 0x4c, 0x4f, 0xf6, - 0xff, 0x72, 0x4a, 0x61, 0xc1, 0xf8, 0x20, 0xe0, 0xc1, 0xf8, 0x24, 0xc0, 0x0f, 0x60, 0x07, 0xf1, - 0x00, 0x47, 0x07, 0xf5, 0x1d, 0x27, 0x4f, 0xf0, 0xff, 0x31, 0x4f, 0xf0, 0x40, 0x0c, 0x07, 0xf6, - 0x15, 0x37, 0xc0, 0xf8, 0x04, 0xc0, 0x81, 0x60, 0xc7, 0x60, 0x4f, 0xf0, 0x80, 0x67, 0x42, 0x61, - 0x07, 0x62, 0x4f, 0xf4, 0x02, 0x57, 0x43, 0x62, 0x07, 0x60, 0x35, 0x4f, 0x73, 0x60, 0xb1, 0x60, - 0xf7, 0x60, 0x01, 0x27, 0x72, 0x61, 0x33, 0x62, 0x73, 0x62, 0x37, 0x60, 0x31, 0x4e, 0x6b, 0x60, - 0xa9, 0x60, 0xee, 0x60, 0x40, 0xf6, 0xff, 0x76, 0x6e, 0x61, 0x2f, 0x4e, 0x2b, 0x62, 0x00, 0xf5, - 0x80, 0x50, 0x6b, 0x62, 0x2d, 0x4f, 0x2e, 0x60, 0x2d, 0x4e, 0x63, 0x60, 0x05, 0xf5, 0xa0, 0x55, - 0xa1, 0x60, 0xe3, 0x60, 0x62, 0x61, 0x23, 0x62, 0x63, 0x62, 0x23, 0x60, 0x04, 0xf5, 0xa0, 0x54, - 0x43, 0x60, 0x81, 0x60, 0xc3, 0x60, 0x42, 0x61, 0x03, 0x62, 0x43, 0x62, 0x03, 0x60, 0x7b, 0x60, - 0x00, 0xf5, 0xa0, 0x50, 0xb9, 0x60, 0xfb, 0x60, 0x7a, 0x61, 0x3b, 0x62, 0x7b, 0x62, 0x3b, 0x60, - 0x73, 0x60, 0x20, 0x4f, 0xb1, 0x60, 0xf3, 0x60, 0x72, 0x61, 0x33, 0x62, 0x73, 0x62, 0x33, 0x60, - 0x6b, 0x60, 0x30, 0x26, 0xa9, 0x60, 0x4f, 0xf4, 0x50, 0x61, 0xeb, 0x60, 0x6a, 0x61, 0x2b, 0x62, - 0x6b, 0x62, 0x2b, 0x60, 0x63, 0x60, 0xc0, 0x25, 0xa6, 0x60, 0xe7, 0x60, 0x20, 0x26, 0x62, 0x61, - 0x21, 0x62, 0x15, 0x49, 0x63, 0x62, 0x26, 0x60, 0x43, 0x60, 0x85, 0x60, 0xc1, 0x60, 0xbd, 0xe8, - 0xf0, 0x40, 0x42, 0x61, 0x03, 0x62, 0x43, 0x62, 0xc0, 0xf8, 0x00, 0xc0, 0xff, 0xf7, 0x38, 0xb9, - 0x00, 0x38, 0x02, 0x40, 0x00, 0x00, 0x02, 0x40, 0x00, 0x04, 0x02, 0x40, 0x54, 0x00, 0x01, 0x40, - 0x00, 0x08, 0x02, 0x40, 0x00, 0x0c, 0x02, 0x40, 0x00, 0xaa, 0xa0, 0x2a, 0x00, 0x10, 0x02, 0x40, - 0xa8, 0xaa, 0xaa, 0xaa, 0x55, 0x50, 0x55, 0x00, 0x00, 0x01, 0x00, 0x55, 0x00, 0x18, 0x02, 0x40, - 0x00, 0x1c, 0x02, 0x40, 0x45, 0x55, 0x55, 0x55, 0x15, 0x55, 0x55, 0x55, 0x00, 0x00, 0x56, 0x55, - 0x00, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x4b, 0x1a, 0x69, 0x00, 0x2a, 0x75, 0xdb, 0x70, 0xb5, 0x41, 0x4b, 0xda, 0x68, 0xd1, 0x03, - 0xfc, 0xd4, 0x1a, 0x69, 0x22, 0xf4, 0x80, 0x72, 0x1a, 0x61, 0x1a, 0x69, 0x42, 0xf4, 0x00, 0x72, - 0x1a, 0x61, 0x1a, 0x69, 0x22, 0xf0, 0xf8, 0x02, 0x1a, 0x61, 0xc2, 0x07, 0x03, 0xd5, 0x1a, 0x69, - 0x42, 0xf0, 0x08, 0x02, 0x1a, 0x61, 0x86, 0x07, 0x04, 0xd5, 0x35, 0x4a, 0x13, 0x69, 0x43, 0xf0, - 0x10, 0x03, 0x13, 0x61, 0x45, 0x07, 0x04, 0xd5, 0x31, 0x4a, 0x13, 0x69, 0x43, 0xf0, 0x20, 0x03, - 0x13, 0x61, 0x04, 0x07, 0x04, 0xd5, 0x2e, 0x4a, 0x13, 0x69, 0x43, 0xf0, 0x40, 0x03, 0x13, 0x61, - 0xc1, 0x06, 0x41, 0xd4, 0x2a, 0x4b, 0x1a, 0x69, 0x42, 0xf0, 0x02, 0x02, 0x1a, 0x61, 0x1a, 0x69, - 0x42, 0xf4, 0x80, 0x32, 0x1a, 0x61, 0xda, 0x68, 0xd2, 0x03, 0xfc, 0xd4, 0x1a, 0x69, 0x22, 0xf0, - 0x02, 0x02, 0x1a, 0x61, 0x1a, 0x69, 0x42, 0xf0, 0x00, 0x42, 0x06, 0x46, 0x1a, 0x61, 0x00, 0x28, - 0x3a, 0xd0, 0x05, 0x46, 0x4f, 0xf0, 0x00, 0x64, 0x01, 0x3d, 0xed, 0xb2, 0x28, 0x46, 0x00, 0xf0, - 0x77, 0xf9, 0x04, 0x44, 0x00, 0x2d, 0xf7, 0xd1, 0x30, 0x46, 0x00, 0xf0, 0x71, 0xf9, 0x03, 0x28, - 0x05, 0xd8, 0x0a, 0xe0, 0x04, 0x38, 0x03, 0x28, 0x04, 0xf1, 0x04, 0x04, 0x05, 0xd9, 0x23, 0x68, - 0x01, 0x33, 0xf7, 0xd0, 0x6f, 0xf0, 0x0a, 0x00, 0x70, 0xbd, 0x00, 0x28, 0xfc, 0xd0, 0x23, 0x78, - 0xff, 0x2b, 0xf7, 0xd1, 0x20, 0x44, 0x02, 0xe0, 0x23, 0x78, 0xff, 0x2b, 0xf2, 0xd1, 0x01, 0x34, - 0xa0, 0x42, 0xf9, 0xd1, 0x00, 0x20, 0x70, 0xbd, 0x09, 0x4a, 0x13, 0x69, 0x43, 0xf0, 0x80, 0x03, - 0x13, 0x61, 0xb7, 0xe7, 0x07, 0x49, 0x08, 0x4a, 0x59, 0x60, 0x5a, 0x60, 0x1b, 0x69, 0x00, 0x2b, - 0x82, 0xda, 0x4f, 0xf0, 0xff, 0x30, 0x70, 0x47, 0x4f, 0xf0, 0x00, 0x64, 0xcc, 0xe7, 0x00, 0xbf, - 0x00, 0x3c, 0x02, 0x40, 0x23, 0x01, 0x67, 0x45, 0xab, 0x89, 0xef, 0xcd, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0x0b, 0x46, 0x01, 0x46, 0x18, 0x46, 0xfd, 0xf7, 0xfc, 0xfd, 0x00, 0x20, 0x08, 0xbd, - 0x2d, 0xe9, 0xf0, 0x43, 0x46, 0x4b, 0x1f, 0x69, 0x00, 0x2f, 0x83, 0xb0, 0x04, 0x46, 0x0e, 0x46, - 0x15, 0x46, 0x79, 0xdb, 0x42, 0x4f, 0xfb, 0x68, 0xd8, 0x03, 0xfc, 0xd4, 0x3b, 0x69, 0x23, 0xf4, - 0x80, 0x73, 0x3b, 0x61, 0x3b, 0x69, 0x43, 0xf4, 0x00, 0x73, 0x3b, 0x61, 0x14, 0xf0, 0x03, 0x03, - 0x23, 0xd0, 0xa4, 0xeb, 0x03, 0x09, 0x02, 0xa8, 0xc3, 0xf1, 0x04, 0x08, 0xd9, 0xf8, 0x00, 0x20, - 0x40, 0xf8, 0x04, 0x2d, 0xa8, 0x45, 0x28, 0xbf, 0xa8, 0x46, 0x18, 0x44, 0x42, 0x46, 0x31, 0x46, - 0xfd, 0xf7, 0xd0, 0xfd, 0x3b, 0x69, 0x01, 0x99, 0x31, 0x4a, 0x43, 0xf0, 0x01, 0x03, 0x3b, 0x61, - 0xc9, 0xf8, 0x00, 0x10, 0xd3, 0x68, 0xd9, 0x03, 0xfc, 0xd4, 0x13, 0x69, 0x23, 0xf0, 0x01, 0x03, - 0x44, 0x44, 0x46, 0x44, 0xa5, 0xeb, 0x08, 0x05, 0x13, 0x61, 0x03, 0x2d, 0x23, 0xd9, 0xa5, 0xf1, - 0x04, 0x0e, 0x4f, 0xea, 0x9e, 0x0c, 0x26, 0x4a, 0x06, 0xeb, 0x8c, 0x07, 0x31, 0x1f, 0xa0, 0x1b, - 0x13, 0x69, 0x51, 0xf8, 0x04, 0x8f, 0x43, 0xf0, 0x01, 0x03, 0x13, 0x61, 0x40, 0xf8, 0x01, 0x80, - 0xd3, 0x68, 0xdb, 0x03, 0xfc, 0xd4, 0x13, 0x69, 0xb9, 0x42, 0x23, 0xf0, 0x01, 0x03, 0x13, 0x61, - 0xee, 0xd1, 0x04, 0x34, 0x2e, 0xf0, 0x03, 0x0e, 0x0c, 0xf1, 0x01, 0x0c, 0x74, 0x44, 0x06, 0xeb, - 0x8c, 0x06, 0x05, 0xf0, 0x03, 0x05, 0x45, 0xb9, 0x15, 0x4a, 0x13, 0x69, 0x43, 0xf0, 0x00, 0x43, - 0x13, 0x61, 0x00, 0x20, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x02, 0xa8, 0x23, 0x68, 0x40, 0xf8, - 0x04, 0x3d, 0x2a, 0x46, 0x31, 0x46, 0xfd, 0xf7, 0x85, 0xfd, 0x0d, 0x4a, 0x01, 0x99, 0x13, 0x69, - 0x43, 0xf0, 0x01, 0x03, 0x13, 0x61, 0x21, 0x60, 0xd3, 0x68, 0xdb, 0x03, 0xfc, 0xd4, 0x13, 0x69, - 0x23, 0xf0, 0x01, 0x03, 0x13, 0x61, 0xdf, 0xe7, 0x06, 0x49, 0x07, 0x4a, 0x59, 0x60, 0x5a, 0x60, - 0x1b, 0x69, 0x00, 0x2b, 0xbf, 0xf6, 0x7e, 0xaf, 0x4f, 0xf0, 0xff, 0x30, 0xda, 0xe7, 0x00, 0xbf, - 0x00, 0x3c, 0x02, 0x40, 0x23, 0x01, 0x67, 0x45, 0xab, 0x89, 0xef, 0xcd, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0xb5, 0x23, 0x4d, 0x23, 0x4c, 0x4f, 0xf4, 0x80, 0x61, 0x0e, 0x46, 0x4f, 0xf4, 0x00, 0x77, - 0x28, 0x46, 0x01, 0x22, 0xff, 0xf7, 0xbc, 0xfa, 0x28, 0x46, 0x01, 0x22, 0x39, 0x46, 0xae, 0x61, - 0xff, 0xf7, 0xb6, 0xfa, 0x28, 0x46, 0x01, 0x22, 0x4f, 0xf4, 0x80, 0x71, 0xaf, 0x61, 0xff, 0xf7, - 0xaf, 0xfa, 0x4f, 0xf4, 0x80, 0x73, 0xab, 0x61, 0x28, 0x46, 0x01, 0x22, 0x4f, 0xf4, 0x00, 0x61, - 0xff, 0xf7, 0xa6, 0xfa, 0x4f, 0xf4, 0x00, 0x63, 0x39, 0x46, 0xab, 0x61, 0x20, 0x46, 0x01, 0x22, - 0xff, 0xf7, 0x9e, 0xfa, 0x4f, 0xf0, 0x00, 0x73, 0xa3, 0x61, 0x20, 0x46, 0x01, 0x22, 0x4f, 0xf4, - 0x00, 0x41, 0xff, 0xf7, 0x95, 0xfa, 0x4f, 0xf0, 0x00, 0x43, 0x31, 0x46, 0xa3, 0x61, 0x20, 0x46, - 0x01, 0x22, 0xff, 0xf7, 0x8d, 0xfa, 0x4f, 0xf0, 0x80, 0x63, 0xa3, 0x61, 0x20, 0x46, 0x01, 0x22, - 0x4f, 0xf4, 0x80, 0x41, 0xff, 0xf7, 0x84, 0xfa, 0x4f, 0xf0, 0x80, 0x43, 0xa3, 0x61, 0xf8, 0xbd, - 0x00, 0x00, 0x02, 0x40, 0x00, 0x0c, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb4, 0x0e, 0x4b, 0x0e, 0x49, 0x1a, 0x68, 0x92, 0xf8, 0x91, 0x30, 0x43, 0xf0, 0x01, 0x03, - 0x82, 0xf8, 0x91, 0x30, 0x0b, 0x68, 0x02, 0x24, 0x03, 0x20, 0x4f, 0xf4, 0xe1, 0x31, 0x83, 0xf8, - 0x2a, 0x47, 0x83, 0xf8, 0x2e, 0x47, 0x83, 0xf8, 0x2b, 0x07, 0x83, 0xf8, 0x2f, 0x07, 0xc2, 0xf8, - 0x80, 0x10, 0xc3, 0xf8, 0x30, 0x18, 0x5d, 0xf8, 0x04, 0x4b, 0x70, 0x47, 0x28, 0x16, 0x00, 0x20, - 0x2c, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0a, 0x4b, 0x0b, 0x4a, 0x1b, 0x68, 0x11, 0x68, 0x93, 0xf8, 0x90, 0x20, 0x01, 0x20, 0x02, 0x43, - 0x83, 0xf8, 0x90, 0x20, 0xc1, 0xf8, 0x38, 0x0a, 0x93, 0xf8, 0x90, 0x20, 0x04, 0x21, 0x42, 0xf0, - 0x08, 0x02, 0x83, 0xf8, 0x6b, 0x10, 0x83, 0xf8, 0x90, 0x20, 0x70, 0x47, 0x28, 0x16, 0x00, 0x20, - 0x2c, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x28, 0x11, 0xd9, 0xa0, 0xf1, 0x0c, 0x03, 0x03, 0x2b, 0x0d, 0xd9, 0x04, 0x28, 0x0e, 0xd0, - 0x10, 0x28, 0x0c, 0xd0, 0x43, 0x1f, 0x06, 0x2b, 0x0c, 0xd9, 0x11, 0x38, 0x06, 0x28, 0x94, 0xbf, - 0x4f, 0xf4, 0x00, 0x30, 0x00, 0x20, 0x70, 0x47, 0x4f, 0xf4, 0x80, 0x40, 0x70, 0x47, 0x4f, 0xf4, - 0x80, 0x30, 0x70, 0x47, 0x4f, 0xf4, 0x00, 0x30, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x41, 0x20, 0x23, 0x83, 0xf3, 0x11, 0x88, 0xfd, 0xf7, 0x71, 0xfe, 0x12, 0x4b, - 0x12, 0x4f, 0xdb, 0x69, 0x1b, 0x68, 0x5e, 0x68, 0x3b, 0x6a, 0x3d, 0x6a, 0xc6, 0xf1, 0x20, 0x06, - 0xb3, 0x42, 0xc8, 0xbf, 0x20, 0x36, 0xae, 0x42, 0x0e, 0xdd, 0xdf, 0xf8, 0x34, 0x80, 0x2c, 0x46, - 0x03, 0xe0, 0xa6, 0x42, 0x04, 0xf0, 0x1f, 0x05, 0x06, 0xd0, 0x79, 0x5d, 0x40, 0x46, 0xfe, 0xf7, - 0x37, 0xfb, 0x01, 0x34, 0x00, 0x28, 0xf4, 0xd0, 0x3d, 0x62, 0xfd, 0xf7, 0x69, 0xfe, 0x00, 0x23, - 0x83, 0xf3, 0x11, 0x88, 0xbd, 0xe8, 0xf0, 0x81, 0xd0, 0x28, 0x00, 0x20, 0xf8, 0x28, 0x00, 0x20, - 0xcc, 0x2a, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xf7, 0xc6, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xf7, 0xbe, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xb5, 0x1e, 0x4c, 0x94, 0xf8, 0xf1, 0x32, 0x13, 0xf0, 0x01, 0x03, 0x82, 0xb0, 0x02, 0xd1, - 0x03, 0x60, 0x02, 0xb0, 0x70, 0xbd, 0x1a, 0x4e, 0x1a, 0x48, 0x1b, 0x4d, 0x00, 0xf0, 0xf8, 0xfa, - 0x33, 0x68, 0x1a, 0x48, 0x93, 0xf8, 0x2b, 0x17, 0x40, 0xf2, 0x02, 0x42, 0x00, 0xf0, 0x28, 0xfa, - 0x33, 0x68, 0x17, 0x48, 0x93, 0xf8, 0x2a, 0x17, 0x40, 0xf2, 0x02, 0x42, 0x00, 0xf0, 0x20, 0xfa, - 0x00, 0x26, 0x14, 0x48, 0x00, 0xf0, 0xe4, 0xfa, 0x05, 0xf1, 0x24, 0x01, 0x05, 0xf5, 0xea, 0x70, - 0x33, 0x46, 0x4f, 0xf4, 0xd7, 0x72, 0x00, 0x96, 0xfe, 0xf7, 0xd2, 0xfa, 0x0e, 0x49, 0xd4, 0xf8, - 0xe0, 0x32, 0x0e, 0x48, 0x4b, 0x61, 0xfe, 0xf7, 0x7b, 0xfb, 0x0c, 0x48, 0x2e, 0x62, 0x2a, 0x46, - 0x20, 0x21, 0x02, 0xb0, 0xbd, 0xe8, 0x70, 0x40, 0xfe, 0xf7, 0x8a, 0xbb, 0x00, 0x00, 0x00, 0x10, - 0x2c, 0x16, 0x00, 0x20, 0xf0, 0x38, 0x00, 0x08, 0xf8, 0x28, 0x00, 0x20, 0x08, 0x39, 0x00, 0x08, - 0x18, 0x39, 0x00, 0x08, 0x28, 0x39, 0x00, 0x08, 0x00, 0x16, 0x00, 0x20, 0xd0, 0x28, 0x00, 0x20, - 0x10, 0xb5, 0x82, 0xb0, 0x02, 0xa8, 0x14, 0x46, 0x40, 0xf8, 0x04, 0x2d, 0x4f, 0xf4, 0x7a, 0x73, - 0x0a, 0x46, 0x01, 0x46, 0x06, 0x48, 0xfe, 0xf7, 0x83, 0xfb, 0x01, 0x9a, 0xa2, 0x42, 0x04, 0xd0, - 0x23, 0x46, 0x04, 0x49, 0x04, 0x48, 0x00, 0xf0, 0xab, 0xfa, 0x02, 0xb0, 0x10, 0xbd, 0x00, 0xbf, - 0xd0, 0x28, 0x00, 0x20, 0x3c, 0x39, 0x00, 0x08, 0xb8, 0xba, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x48, 0xfe, 0xf7, 0xc5, 0xba, 0x00, 0xbf, 0xcc, 0x2a, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x63, 0x49, 0x81, 0x60, 0xf0, 0xb5, 0x00, 0x24, 0x4f, 0xf4, 0x7f, 0x45, 0x04, 0x60, 0xc4, 0x60, - 0x84, 0x61, 0x44, 0x62, 0x04, 0x63, 0xc4, 0x63, 0x84, 0x64, 0x44, 0x65, 0x04, 0x66, 0xc4, 0x66, - 0x84, 0x67, 0x85, 0x80, 0x05, 0x82, 0x85, 0x83, 0x05, 0x85, 0x85, 0x86, 0xa0, 0xf8, 0x40, 0x50, - 0xa0, 0xf8, 0x4c, 0x50, 0xa0, 0xf8, 0x58, 0x50, 0xa0, 0xf8, 0x64, 0x50, 0x41, 0x61, 0x01, 0x62, - 0xc1, 0x62, 0x81, 0x63, 0x41, 0x64, 0x01, 0x65, 0xc1, 0x65, 0x81, 0x66, 0x41, 0x67, 0xc0, 0xf8, - 0x80, 0x10, 0x22, 0x46, 0xa0, 0xf8, 0x70, 0x50, 0x00, 0xf1, 0xb0, 0x03, 0xa0, 0xf8, 0x7c, 0x50, - 0xc0, 0xf8, 0x84, 0x40, 0xa0, 0xf8, 0x88, 0x50, 0xc0, 0xf8, 0x90, 0x40, 0xa0, 0xf8, 0x94, 0x50, - 0xc0, 0xf8, 0xa0, 0x40, 0xa0, 0xf8, 0xa4, 0x50, 0xc0, 0xf8, 0x8c, 0x10, 0xc0, 0xf8, 0x98, 0x10, - 0xc0, 0xf8, 0xa8, 0x10, 0x00, 0xf5, 0xb8, 0x75, 0xff, 0x24, 0x99, 0x60, 0x1a, 0x60, 0x1a, 0x71, - 0x5c, 0x71, 0x0c, 0x33, 0xab, 0x42, 0xf8, 0xd1, 0x4f, 0xf4, 0x7f, 0x43, 0xc0, 0xf8, 0x70, 0x21, - 0xc0, 0xf8, 0x7c, 0x21, 0xc0, 0xf8, 0x88, 0x21, 0xc0, 0xf8, 0x94, 0x21, 0xa0, 0xf8, 0x74, 0x31, - 0xa0, 0xf8, 0x80, 0x31, 0xa0, 0xf8, 0x8c, 0x31, 0xa0, 0xf8, 0x98, 0x31, 0xc0, 0xf8, 0x78, 0x11, - 0xc0, 0xf8, 0x84, 0x11, 0xc0, 0xf8, 0x90, 0x11, 0xc0, 0xf8, 0x9c, 0x11, 0x00, 0xf5, 0xd0, 0x73, - 0x00, 0xf5, 0x48, 0x75, 0x00, 0x22, 0xff, 0x24, 0x00, 0x26, 0x00, 0x27, 0x99, 0x60, 0x1a, 0x60, - 0x1a, 0x71, 0x5c, 0x71, 0xda, 0x60, 0xc3, 0xe9, 0x04, 0x67, 0x5a, 0x76, 0x9a, 0x76, 0x1c, 0x76, - 0x20, 0x33, 0xab, 0x42, 0xf2, 0xd1, 0x00, 0xf5, 0x88, 0x65, 0x00, 0x22, 0xff, 0x24, 0x99, 0x60, - 0x1a, 0x60, 0x1a, 0x71, 0x5c, 0x71, 0xda, 0x60, 0x1a, 0x75, 0x1a, 0x61, 0x18, 0x33, 0xab, 0x42, - 0xf5, 0xd1, 0x20, 0x4c, 0xdf, 0xf8, 0x98, 0xe0, 0xdf, 0xf8, 0x98, 0xc0, 0xc0, 0xf8, 0x48, 0x14, - 0x4f, 0xf4, 0x7f, 0x47, 0xc0, 0xf8, 0x40, 0x24, 0xc0, 0xf8, 0x58, 0x14, 0xc0, 0xf8, 0x4c, 0x24, - 0xc0, 0xf8, 0x50, 0x24, 0xc0, 0xf8, 0x5c, 0x24, 0x04, 0xf5, 0x90, 0x75, 0x26, 0x46, 0x23, 0x46, - 0xa0, 0xf8, 0x44, 0x74, 0xa0, 0xf8, 0x54, 0x74, 0x13, 0x49, 0xc0, 0xf8, 0xac, 0xe0, 0x13, 0x4a, - 0xc0, 0xf8, 0x9c, 0xc0, 0x01, 0xe0, 0x51, 0xf8, 0x04, 0x2f, 0xc3, 0xf8, 0x2c, 0x23, 0x18, 0x33, - 0xab, 0x42, 0xf8, 0xd1, 0x0e, 0x49, 0x0f, 0x4a, 0x00, 0x23, 0x84, 0xf8, 0xb8, 0x31, 0x01, 0x33, - 0x0c, 0x2b, 0xc4, 0xf8, 0xac, 0x21, 0x04, 0xf1, 0x20, 0x04, 0x02, 0xd0, 0x51, 0xf8, 0x04, 0x2f, - 0xf3, 0xe7, 0x09, 0x4a, 0x09, 0x4b, 0xc6, 0xf8, 0x4c, 0x24, 0xc6, 0xf8, 0x5c, 0x34, 0xf0, 0xbd, - 0xf0, 0x2a, 0x00, 0x20, 0xf8, 0x2a, 0x00, 0x20, 0x88, 0x39, 0x00, 0x08, 0xe8, 0x39, 0x00, 0x08, - 0xb8, 0x39, 0x00, 0x08, 0xec, 0x39, 0x00, 0x08, 0x00, 0x3a, 0x00, 0x08, 0x04, 0x3a, 0x00, 0x08, - 0xf0, 0x39, 0x00, 0x08, 0xf8, 0x39, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x4b, 0x98, 0x42, 0x1f, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x21, 0xd0, 0x03, 0xf5, - 0x80, 0x63, 0x98, 0x42, 0x19, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x1b, 0xd0, 0x03, 0xf5, - 0x80, 0x63, 0x98, 0x42, 0x19, 0xd0, 0x03, 0xf5, 0x00, 0x63, 0x98, 0x42, 0x0f, 0xd0, 0x03, 0xf5, - 0x80, 0x63, 0x98, 0x42, 0x13, 0xd0, 0x0c, 0x49, 0x0c, 0x4b, 0x0d, 0x4a, 0x88, 0x42, 0x0c, 0xbf, - 0x18, 0x46, 0x10, 0x46, 0x70, 0x47, 0x0b, 0x48, 0x70, 0x47, 0x0b, 0x48, 0x70, 0x47, 0x0b, 0x48, - 0x70, 0x47, 0x0b, 0x48, 0x70, 0x47, 0x0b, 0x48, 0x70, 0x47, 0x0b, 0x48, 0x70, 0x47, 0x0b, 0x48, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x02, 0x40, 0x00, 0x14, 0x02, 0x40, 0x7c, 0x39, 0x00, 0x08, - 0x80, 0x39, 0x00, 0x08, 0x60, 0x39, 0x00, 0x08, 0x68, 0x39, 0x00, 0x08, 0x74, 0x39, 0x00, 0x08, - 0x64, 0x39, 0x00, 0x08, 0x6c, 0x39, 0x00, 0x08, 0x70, 0x39, 0x00, 0x08, 0x78, 0x39, 0x00, 0x08, - 0x01, 0x29, 0x07, 0xd9, 0x10, 0xb5, 0x8c, 0x1e, 0x23, 0x06, 0x58, 0xbf, 0x04, 0xf0, 0x0f, 0x00, - 0x03, 0xd4, 0x10, 0xbd, 0x4f, 0xf0, 0xff, 0x30, 0x70, 0x47, 0x02, 0x46, 0x0b, 0x46, 0x41, 0xf2, - 0xf2, 0x70, 0x03, 0x49, 0x00, 0xf0, 0x64, 0xf9, 0x4f, 0xf0, 0xff, 0x30, 0x10, 0xbd, 0x00, 0xbf, - 0x08, 0x3a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x48, 0xff, 0xf7, 0xb5, 0xbe, 0x00, 0xbf, 0xf8, 0x2a, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x4b, 0x1b, 0x68, 0x40, 0x20, 0x3f, 0x21, 0x13, 0x22, 0x83, 0xf8, 0x0c, 0x08, 0x83, 0xf8, - 0x0d, 0x18, 0x83, 0xf8, 0x0e, 0x28, 0xff, 0xf7, 0x2b, 0xbd, 0x00, 0xbf, 0x2c, 0x16, 0x00, 0x20, - 0x30, 0xb4, 0x0f, 0x4b, 0x0f, 0x49, 0x1a, 0x68, 0x92, 0xf8, 0x91, 0x30, 0x43, 0xf0, 0x21, 0x03, - 0x82, 0xf8, 0x91, 0x30, 0x0b, 0x68, 0x2c, 0x20, 0x2d, 0x21, 0x4f, 0xf4, 0x16, 0x45, 0x4f, 0xf4, - 0xe1, 0x34, 0x83, 0xf8, 0x2a, 0x07, 0x83, 0xf8, 0x2e, 0x07, 0x83, 0xf8, 0x2b, 0x17, 0x83, 0xf8, - 0x2f, 0x17, 0xc2, 0xf8, 0x80, 0x50, 0xc3, 0xf8, 0x30, 0x48, 0x30, 0xbc, 0xff, 0xf7, 0x58, 0xbd, - 0x28, 0x16, 0x00, 0x20, 0x2c, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0b, 0x4b, 0x0c, 0x4a, 0x1b, 0x68, 0x11, 0x68, 0x93, 0xf8, 0x90, 0x20, 0x03, 0x20, 0x42, 0xf0, - 0x04, 0x02, 0x83, 0xf8, 0x90, 0x20, 0xc1, 0xf8, 0x38, 0x0a, 0x93, 0xf8, 0x90, 0x20, 0x36, 0x21, - 0x42, 0xf0, 0x08, 0x02, 0x83, 0xf8, 0x6b, 0x10, 0x83, 0xf8, 0x90, 0x20, 0xff, 0xf7, 0x60, 0xbd, - 0x28, 0x16, 0x00, 0x20, 0x2c, 0x16, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x29, 0x08, 0xd9, 0x10, 0xb5, 0x8c, 0x1e, 0x23, 0x06, 0x06, 0xd4, 0x24, 0x11, 0x07, 0x4b, - 0x53, 0xf8, 0x24, 0x00, 0x10, 0xbd, 0x00, 0x20, 0x70, 0x47, 0x02, 0x46, 0x0b, 0x46, 0x41, 0xf2, - 0xf2, 0x70, 0x03, 0x49, 0x00, 0xf0, 0xe4, 0xf8, 0x00, 0x20, 0x10, 0xbd, 0xac, 0x3a, 0x00, 0x08, - 0x08, 0x3a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xb5, 0x83, 0xb0, 0x05, 0x46, 0x0e, 0x46, 0x17, 0x46, 0xff, 0xf7, 0xd9, 0xff, 0x31, 0x46, - 0x04, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x54, 0xff, 0x84, 0xb1, 0x06, 0x46, 0x20, 0x46, 0xff, 0xf7, - 0x07, 0xff, 0x2a, 0x46, 0x03, 0x46, 0x0b, 0x49, 0x0b, 0x48, 0x00, 0x96, 0x00, 0xf0, 0xb8, 0xf8, - 0x2a, 0x46, 0x31, 0x46, 0x20, 0x46, 0x00, 0xf0, 0x5b, 0xf8, 0x08, 0xb1, 0x03, 0xb0, 0xf0, 0xbd, - 0x01, 0x21, 0x3a, 0x46, 0x20, 0x46, 0xb1, 0x40, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x40, 0xfe, 0xf7, - 0x5f, 0xbf, 0x00, 0xbf, 0xcc, 0x3a, 0x00, 0x08, 0x58, 0x2f, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x49, 0x02, 0x48, 0x00, 0xf0, 0xac, 0xb8, 0xa4, 0x3a, 0x00, 0x08, 0x58, 0x2f, 0x00, 0x20, - 0x08, 0xb5, 0x1c, 0x4b, 0x98, 0x42, 0x1e, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x1e, 0xd0, - 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x18, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x18, 0xd0, - 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x16, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x14, 0xd0, - 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x1a, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x98, 0x42, 0x08, 0xbf, - 0x07, 0x20, 0x0c, 0xd1, 0x08, 0xbd, 0x00, 0x20, 0x08, 0xbd, 0x02, 0x20, 0x08, 0xbd, 0x01, 0x20, - 0x08, 0xbd, 0x03, 0x20, 0x08, 0xbd, 0x04, 0x20, 0x08, 0xbd, 0x05, 0x20, 0x08, 0xbd, 0x06, 0x49, - 0x41, 0xf2, 0xf4, 0x70, 0x00, 0xf0, 0x6c, 0xf8, 0x4f, 0xf0, 0xff, 0x30, 0x08, 0xbd, 0x06, 0x20, - 0x08, 0xbd, 0x00, 0xbf, 0x00, 0x00, 0x02, 0x40, 0xe4, 0x3a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x41, 0x19, 0x4b, 0x1c, 0x68, 0x82, 0xb0, 0x2c, 0xb3, 0x0d, 0x46, 0x17, 0x46, - 0x80, 0x46, 0xff, 0xf7, 0xb5, 0xff, 0x16, 0x4c, 0x05, 0xeb, 0x00, 0x16, 0x54, 0xf8, 0x26, 0x00, - 0x40, 0xb9, 0x14, 0x4a, 0x44, 0xf8, 0x26, 0x70, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x02, 0xb0, - 0xbd, 0xe8, 0xf0, 0x81, 0x40, 0x46, 0xff, 0xf7, 0x83, 0xfe, 0x54, 0xf8, 0x26, 0x30, 0x01, 0x93, - 0x02, 0x46, 0x00, 0x97, 0x2b, 0x46, 0x0c, 0x49, 0x41, 0xf2, 0xf5, 0x70, 0x00, 0xf0, 0x38, 0xf8, - 0x01, 0x20, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x08, 0x49, 0x41, 0xf2, 0xf3, 0x70, 0x00, 0xf0, - 0x2f, 0xf8, 0x20, 0x46, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x00, 0xbf, 0x5c, 0x32, 0x00, 0x20, - 0x5c, 0x30, 0x00, 0x20, 0x60, 0x32, 0x00, 0x20, 0x10, 0x3b, 0x00, 0x08, 0xf4, 0x3a, 0x00, 0x08, - 0x01, 0x49, 0x02, 0x48, 0x00, 0xf0, 0x24, 0xb8, 0xd8, 0x3a, 0x00, 0x08, 0x64, 0x32, 0x00, 0x20, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0xb4, 0x04, 0xb0, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0xb4, 0x03, 0xb0, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0xb4, 0x03, 0xb0, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0xb5, 0x16, 0x4b, 0x83, 0xb0, 0x04, 0x46, 0x1b, 0x68, 0x15, 0x48, 0x05, 0x22, 0x69, 0x46, - 0xff, 0xf7, 0x3e, 0xfd, 0x05, 0x28, 0x02, 0xd0, 0x00, 0x20, 0x03, 0xb0, 0x30, 0xbd, 0x9d, 0xf8, - 0x00, 0x30, 0x9d, 0xf8, 0x01, 0x50, 0x9d, 0xf8, 0x02, 0x10, 0x9d, 0xf8, 0x03, 0x00, 0x00, 0x9a, - 0x6b, 0x40, 0x4b, 0x40, 0x9d, 0xf8, 0x04, 0x10, 0x43, 0x40, 0x99, 0x42, 0x12, 0xba, 0xeb, 0xd1, - 0x02, 0xf1, 0x78, 0x43, 0xb3, 0xf5, 0x00, 0x4f, 0x38, 0xbf, 0x06, 0x4b, 0x4f, 0xf0, 0x01, 0x00, - 0x38, 0xbf, 0xd2, 0x18, 0x22, 0x60, 0x03, 0xb0, 0x30, 0xbd, 0x00, 0xbf, 0x30, 0x16, 0x00, 0x20, - 0x68, 0x33, 0x00, 0x20, 0x24, 0x35, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xb5, 0x04, 0x46, 0x72, 0xb6, 0xfd, 0xf7, 0x83, 0xfa, 0x0f, 0x4a, 0x60, 0x68, 0x53, 0x68, - 0x23, 0xf0, 0x80, 0x53, 0x53, 0x60, 0x00, 0x22, 0x93, 0x00, 0x03, 0xf1, 0x60, 0x43, 0x03, 0xf5, - 0x61, 0x43, 0x01, 0x32, 0xd3, 0xf8, 0x00, 0x12, 0xc3, 0xf8, 0x80, 0x10, 0x08, 0x2a, 0xf3, 0xd1, - 0x00, 0x23, 0x83, 0xf3, 0x14, 0x88, 0x23, 0x68, 0x83, 0xf3, 0x08, 0x88, 0x80, 0x47, 0x03, 0x48, - 0xbd, 0xe8, 0x10, 0x40, 0xfd, 0xf7, 0x1c, 0xba, 0x00, 0xed, 0x00, 0xe0, 0x2c, 0x3b, 0x00, 0x08, - 0x2d, 0xe9, 0xf0, 0x4f, 0x89, 0xb0, 0x08, 0xa9, 0xc9, 0x48, 0xca, 0x4c, 0xdf, 0xf8, 0x3c, 0x93, - 0xdf, 0xf8, 0x24, 0x83, 0x79, 0x23, 0x01, 0xf8, 0x1d, 0x3d, 0x01, 0x22, 0xc8, 0x23, 0x23, 0x60, - 0x06, 0x46, 0xff, 0xf7, 0xb5, 0xfc, 0x4f, 0xf4, 0x00, 0x42, 0x4f, 0xf0, 0x00, 0x61, 0x48, 0x46, - 0xfd, 0xf7, 0xc0, 0xf8, 0x23, 0x68, 0x00, 0x27, 0x01, 0x22, 0x0d, 0xeb, 0x02, 0x01, 0x30, 0x46, - 0xff, 0xf7, 0xc6, 0xfc, 0x01, 0x28, 0x05, 0x46, 0x10, 0xd0, 0x6f, 0xb9, 0x00, 0x20, 0x09, 0xb0, - 0xbd, 0xe8, 0xf0, 0x8f, 0x52, 0x46, 0xb8, 0x49, 0x30, 0x46, 0xff, 0xf7, 0xb9, 0xfc, 0x01, 0x28, - 0x07, 0x46, 0x00, 0xf0, 0x2e, 0x81, 0x01, 0x27, 0x23, 0x68, 0xe5, 0xe7, 0x02, 0x46, 0x23, 0x68, - 0x0d, 0xf1, 0x02, 0x01, 0x30, 0x46, 0xff, 0xf7, 0xab, 0xfc, 0x01, 0x28, 0x82, 0x46, 0x0b, 0xd0, - 0x00, 0x2f, 0xe3, 0xd0, 0x08, 0xa9, 0x1f, 0x23, 0x01, 0xf8, 0x1c, 0x3d, 0x2a, 0x46, 0x30, 0x46, - 0xff, 0xf7, 0x7e, 0xfc, 0x23, 0x68, 0xcf, 0xe7, 0x9d, 0xf8, 0x01, 0x30, 0x9d, 0xf8, 0x02, 0x20, - 0xdb, 0x43, 0xdb, 0xb2, 0x9a, 0x42, 0x08, 0xa9, 0x08, 0xd0, 0x1f, 0x23, 0x01, 0xf8, 0x1b, 0x3d, - 0x02, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x6c, 0xfc, 0x23, 0x68, 0xbd, 0xe7, 0x79, 0x25, 0x02, 0x46, - 0x01, 0xf8, 0x1a, 0x5d, 0x30, 0x46, 0xff, 0xf7, 0x63, 0xfc, 0x9d, 0xf8, 0x01, 0x20, 0x4f, 0xf4, - 0x7a, 0x73, 0x11, 0x2a, 0x23, 0x60, 0x0a, 0xd0, 0x1a, 0xd9, 0x31, 0x2a, 0x53, 0xd0, 0x44, 0x2a, - 0xb8, 0xd0, 0x21, 0x2a, 0x3c, 0xd0, 0x4f, 0xf4, 0x7a, 0x73, 0x01, 0x27, 0xa4, 0xe7, 0x07, 0xa8, - 0xff, 0xf7, 0x26, 0xff, 0x08, 0xa9, 0x07, 0x46, 0x00, 0x28, 0x74, 0xd1, 0x1f, 0x23, 0x01, 0xf8, - 0x0b, 0x3d, 0x52, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x43, 0xfc, 0x23, 0x68, 0x01, 0x27, 0x93, 0xe7, - 0x00, 0x2a, 0x47, 0xd0, 0x02, 0x2a, 0xe6, 0xd1, 0x88, 0x4b, 0x08, 0xa9, 0x1f, 0x68, 0x01, 0xf8, - 0x16, 0xad, 0x52, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x33, 0xfc, 0xc7, 0xf3, 0x0b, 0x07, 0x08, 0xa9, - 0x3b, 0x0a, 0x01, 0xf8, 0x15, 0x3d, 0x52, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x29, 0xfc, 0x08, 0xa9, - 0x52, 0x46, 0x01, 0xf8, 0x14, 0x7d, 0x30, 0x46, 0xff, 0xf7, 0x22, 0xfc, 0x08, 0xa9, 0x52, 0x46, - 0x01, 0xf8, 0x13, 0x5d, 0x30, 0x46, 0xff, 0xf7, 0x1b, 0xfc, 0x57, 0x46, 0x23, 0x68, 0x6b, 0xe7, - 0x07, 0xa8, 0xff, 0xf7, 0xed, 0xfe, 0x08, 0xa9, 0x07, 0x46, 0x00, 0x28, 0x00, 0xf0, 0x9f, 0x80, - 0x52, 0x46, 0x01, 0xf8, 0x12, 0x5d, 0x30, 0x46, 0xff, 0xf7, 0x0a, 0xfc, 0x07, 0x98, 0xff, 0xf7, - 0x17, 0xff, 0x23, 0x68, 0x58, 0xe7, 0x07, 0xa8, 0xff, 0xf7, 0xda, 0xfe, 0x08, 0xa9, 0x07, 0x46, - 0x00, 0x28, 0x52, 0xd1, 0x1f, 0x23, 0x01, 0xf8, 0x07, 0x3d, 0x52, 0x46, 0x30, 0x46, 0xff, 0xf7, - 0xf7, 0xfb, 0xb2, 0xe7, 0x08, 0xa9, 0x06, 0x23, 0x65, 0x4d, 0x01, 0xf8, 0x18, 0x3d, 0x52, 0x46, - 0x30, 0x46, 0xff, 0xf7, 0xed, 0xfb, 0xaf, 0x1d, 0x31, 0x23, 0x01, 0xe0, 0x15, 0xf8, 0x01, 0x3b, - 0x8d, 0xf8, 0x09, 0x30, 0x01, 0x22, 0x0d, 0xf1, 0x09, 0x01, 0x30, 0x46, 0xff, 0xf7, 0xe0, 0xfb, - 0xaf, 0x42, 0xf3, 0xd1, 0x08, 0xa9, 0x79, 0x23, 0x01, 0xf8, 0x19, 0x3d, 0x01, 0x22, 0x30, 0x46, - 0xff, 0xf7, 0xd6, 0xfb, 0x3f, 0xe7, 0x52, 0x46, 0x01, 0xf8, 0x0c, 0x5d, 0x30, 0x46, 0xff, 0xf7, - 0xcf, 0xfb, 0x52, 0x46, 0x23, 0x68, 0x04, 0xa9, 0x30, 0x46, 0xff, 0xf7, 0xe9, 0xfb, 0x01, 0x28, - 0x83, 0xd1, 0x02, 0x46, 0x23, 0x68, 0x0d, 0xf1, 0x11, 0x01, 0x30, 0x46, 0xff, 0xf7, 0xe0, 0xfb, - 0x01, 0x28, 0x02, 0x46, 0x7f, 0xf4, 0x79, 0xaf, 0x9d, 0xf8, 0x10, 0x30, 0x9d, 0xf8, 0x11, 0x00, - 0xd9, 0x43, 0xc9, 0xb2, 0x88, 0x42, 0x08, 0xa9, 0x00, 0xf0, 0xd4, 0x80, 0x1f, 0x23, 0x01, 0xf8, - 0x0d, 0x3d, 0x30, 0x46, 0xff, 0xf7, 0xac, 0xfb, 0x67, 0xe7, 0x52, 0x46, 0x01, 0xf8, 0x08, 0x5d, - 0x30, 0x46, 0xff, 0xf7, 0xa5, 0xfb, 0x52, 0x46, 0x23, 0x68, 0x3b, 0x49, 0x30, 0x46, 0xff, 0xf7, - 0xbf, 0xfb, 0x01, 0x28, 0x7f, 0xf4, 0x59, 0xaf, 0x98, 0xf8, 0x00, 0x50, 0xdf, 0xf8, 0xe4, 0xb0, - 0x23, 0x68, 0x05, 0xf1, 0x02, 0x0a, 0x52, 0x46, 0x59, 0x46, 0x30, 0x46, 0xff, 0xf7, 0xb0, 0xfb, - 0x82, 0x45, 0x7f, 0xf4, 0x4a, 0xaf, 0x5f, 0xfa, 0x8a, 0xf2, 0x01, 0x2a, 0x98, 0xf8, 0x00, 0x30, - 0x08, 0xd9, 0x0b, 0xf1, 0xff, 0x32, 0xab, 0x44, 0x12, 0xf8, 0x01, 0x1f, 0x5a, 0x45, 0x83, 0xea, - 0x01, 0x03, 0xf9, 0xd1, 0x18, 0xf8, 0x0a, 0x20, 0x9a, 0x42, 0x72, 0xd0, 0x08, 0xa9, 0x1f, 0x23, - 0x01, 0xf8, 0x09, 0x3d, 0x01, 0x22, 0x30, 0x46, 0xff, 0xf7, 0x72, 0xfb, 0x2d, 0xe7, 0x1f, 0x23, - 0x01, 0xf8, 0x11, 0x3d, 0x52, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x6a, 0xfb, 0x57, 0x46, 0x23, 0x68, - 0xba, 0xe6, 0x02, 0x46, 0x23, 0x68, 0x1f, 0x49, 0x30, 0x46, 0xff, 0xf7, 0x81, 0xfb, 0x01, 0x28, - 0x7f, 0xf4, 0xca, 0xae, 0x98, 0xf8, 0x00, 0x10, 0x98, 0xf8, 0x01, 0x20, 0x23, 0x68, 0x42, 0xea, - 0x01, 0x22, 0x4f, 0xf6, 0xff, 0x71, 0x8a, 0x42, 0x60, 0xd0, 0x52, 0x00, 0xd5, 0x1c, 0x2a, 0x46, - 0x15, 0x49, 0x30, 0x46, 0xff, 0xf7, 0x6c, 0xfb, 0x85, 0x42, 0x7f, 0xf4, 0x06, 0xaf, 0x6b, 0x1c, - 0xdb, 0xb2, 0x01, 0x2b, 0x98, 0xf8, 0x00, 0x10, 0x09, 0xd9, 0x0b, 0x48, 0x01, 0x22, 0x01, 0x32, - 0x10, 0xf8, 0x01, 0x7f, 0xd2, 0xb2, 0x9a, 0x42, 0x81, 0xea, 0x07, 0x01, 0xf7, 0xd3, 0x08, 0xeb, - 0x05, 0x03, 0x5b, 0x78, 0x8b, 0x42, 0x27, 0xd1, 0x01, 0x3d, 0x00, 0x27, 0x1b, 0xe0, 0x00, 0xbf, - 0x68, 0x33, 0x00, 0x20, 0x30, 0x16, 0x00, 0x20, 0x24, 0xb5, 0x00, 0x20, 0x00, 0x20, 0x04, 0xe0, - 0x41, 0x3b, 0x00, 0x08, 0x25, 0xb5, 0x00, 0x20, 0x26, 0xb5, 0x00, 0x20, 0x24, 0x35, 0x00, 0x20, - 0x9a, 0x78, 0xdb, 0x78, 0x43, 0xea, 0x02, 0x23, 0x18, 0xb2, 0x01, 0x2b, 0xc0, 0xb2, 0x32, 0xd9, - 0xff, 0xf7, 0x96, 0xf8, 0x02, 0x37, 0xbd, 0x42, 0x08, 0xeb, 0x07, 0x03, 0xf0, 0xdc, 0x08, 0xa9, - 0x79, 0x23, 0x01, 0xf8, 0x06, 0x3d, 0x31, 0xe7, 0x08, 0xa9, 0x1f, 0x23, 0x01, 0xf8, 0x05, 0x3d, - 0x2c, 0xe7, 0x07, 0x98, 0x23, 0x49, 0x48, 0x45, 0x05, 0xf1, 0x01, 0x02, 0x02, 0xd3, 0x22, 0x4b, - 0x98, 0x42, 0x37, 0xd3, 0xff, 0xf7, 0x14, 0xf9, 0x08, 0xa9, 0x79, 0x23, 0x01, 0xf8, 0x0a, 0x3d, - 0x01, 0x22, 0x30, 0x46, 0xff, 0xf7, 0xf4, 0xfa, 0x23, 0x68, 0x45, 0xe6, 0x01, 0x22, 0x1b, 0x49, - 0x30, 0x46, 0xff, 0xf7, 0x0d, 0xfb, 0x01, 0x28, 0x05, 0x46, 0x7f, 0xf4, 0xa6, 0xae, 0x98, 0xf8, - 0x00, 0x10, 0x02, 0x23, 0xa1, 0xe7, 0x4f, 0xf4, 0x00, 0x42, 0xff, 0x21, 0x48, 0x46, 0x00, 0xf0, - 0x6f, 0xf8, 0xc7, 0xe7, 0x01, 0xf8, 0x0e, 0x5d, 0x30, 0x46, 0x5d, 0x1c, 0xff, 0xf7, 0xd8, 0xfa, - 0x07, 0x99, 0x49, 0x45, 0x02, 0xd3, 0x0c, 0x4b, 0x99, 0x42, 0x0e, 0xd3, 0x08, 0x46, 0x2a, 0x46, - 0x41, 0x46, 0xff, 0xf7, 0xdd, 0xf8, 0x2a, 0x46, 0x41, 0x46, 0x30, 0x46, 0xff, 0xf7, 0xc8, 0xfa, - 0x23, 0x68, 0x19, 0xe6, 0xfc, 0xf7, 0xd6, 0xfe, 0xc6, 0xe7, 0x2a, 0x46, 0x40, 0x46, 0xfc, 0xf7, - 0xd1, 0xfe, 0xf0, 0xe7, 0x25, 0xb5, 0x00, 0x20, 0x24, 0xb5, 0x00, 0x20, 0x26, 0xb5, 0x00, 0x20, - 0x00, 0x48, 0x70, 0x47, 0x68, 0x33, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0xb5, 0x05, 0x4b, 0x05, 0x4a, 0x9b, 0x69, 0x9a, 0x61, 0xff, 0xf7, 0xe1, 0xfd, 0x00, 0x20, - 0xbd, 0xe8, 0x08, 0x40, 0xfd, 0xf7, 0x84, 0xbb, 0x48, 0x1e, 0x00, 0x20, 0x50, 0x3b, 0x00, 0x08, - 0x10, 0xb5, 0x82, 0xb0, 0xfd, 0xf7, 0xfc, 0xfc, 0x00, 0x24, 0xfc, 0xf7, 0xa1, 0xff, 0xff, 0xf7, - 0x0f, 0xfc, 0xff, 0xf7, 0x1d, 0xfc, 0xff, 0xf7, 0x43, 0xfc, 0xff, 0xf7, 0xd9, 0xff, 0xff, 0xf7, - 0x3f, 0xfa, 0x08, 0x4b, 0x00, 0x94, 0x80, 0x22, 0x4f, 0xf4, 0x92, 0x61, 0x06, 0x48, 0xfd, 0xf7, - 0xdf, 0xfa, 0xfd, 0xf7, 0x75, 0xfb, 0x05, 0x48, 0xff, 0xf7, 0x92, 0xfd, 0x20, 0x46, 0x02, 0xb0, - 0x10, 0xbd, 0x00, 0xbf, 0xd1, 0x35, 0x00, 0x08, 0x28, 0xb6, 0x00, 0x20, 0x00, 0x80, 0x00, 0x08, - 0x01, 0x49, 0x02, 0x48, 0xff, 0xf7, 0x44, 0xbd, 0x48, 0x3b, 0x00, 0x08, 0xb8, 0xba, 0x00, 0x20, - 0xf0, 0xb4, 0x86, 0x07, 0x43, 0xd0, 0x54, 0x1e, 0x00, 0x2a, 0x3e, 0xd0, 0xca, 0xb2, 0x03, 0x46, - 0x02, 0xe0, 0x14, 0xf1, 0xff, 0x34, 0x38, 0xd3, 0x03, 0xf8, 0x01, 0x2b, 0x9d, 0x07, 0xf8, 0xd1, - 0x03, 0x2c, 0x2b, 0xd9, 0xcd, 0xb2, 0x45, 0xea, 0x05, 0x25, 0x0f, 0x2c, 0x45, 0xea, 0x05, 0x45, - 0x16, 0xd9, 0xa4, 0xf1, 0x10, 0x07, 0x3f, 0x09, 0x03, 0xf1, 0x20, 0x06, 0x06, 0xeb, 0x07, 0x16, - 0x03, 0xf1, 0x10, 0x02, 0x42, 0xe9, 0x04, 0x55, 0x42, 0xe9, 0x02, 0x55, 0x10, 0x32, 0xb2, 0x42, - 0xf8, 0xd1, 0x04, 0xf0, 0x0f, 0x04, 0x01, 0x37, 0x03, 0x2c, 0x03, 0xeb, 0x07, 0x13, 0x0d, 0xd9, - 0x1e, 0x46, 0x22, 0x46, 0x04, 0x3a, 0x03, 0x2a, 0x46, 0xf8, 0x04, 0x5b, 0xfa, 0xd8, 0x22, 0x1f, - 0x22, 0xf0, 0x03, 0x02, 0x04, 0x32, 0x13, 0x44, 0x04, 0xf0, 0x03, 0x04, 0x2c, 0xb1, 0xc9, 0xb2, - 0x1c, 0x44, 0x03, 0xf8, 0x01, 0x1b, 0x9c, 0x42, 0xfb, 0xd1, 0xf0, 0xbc, 0x70, 0x47, 0x14, 0x46, - 0x03, 0x46, 0xc5, 0xe7, 0x98, 0x3b, 0x00, 0x08, 0xbc, 0xbb, 0x00, 0x20, 0xbc, 0xbb, 0x00, 0x20, - 0xbc, 0xbb, 0x00, 0x20, 0x98, 0x3b, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x20, 0x98, 0x3b, 0x00, 0x08, 0x00, 0x80, 0x02, 0x20, 0x00, 0x80, 0x02, 0x20, - 0x00, 0x80, 0x02, 0x20, 0x98, 0x3b, 0x00, 0x08, 0x00, 0x00, 0x03, 0x20, 0x00, 0x00, 0x03, 0x20, - 0x00, 0x00, 0x03, 0x20, 0x98, 0x3b, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, - 0x00, 0x00, 0x00, 0x10, 0x98, 0x3b, 0x00, 0x08, 0x00, 0x40, 0x02, 0x40, 0x00, 0x40, 0x02, 0x40, - 0x00, 0x40, 0x02, 0x40, 0x98, 0x3b, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x98, 0x3b, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x43, 0x68, 0x69, 0x62, 0x69, 0x4f, 0x53, 0x2f, 0x6f, - 0x73, 0x2f, 0x72, 0x74, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x63, 0x68, 0x73, 0x79, 0x73, 0x2e, 0x63, - 0x00, 0x00, 0x00, 0x00, 0x9c, 0x37, 0x00, 0x08, 0x38, 0x16, 0x00, 0x20, 0x48, 0x1e, 0x00, 0x20, - 0x01, 0x00, 0x00, 0x00, 0x31, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x69, 0x64, 0x6c, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x31, 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x33, - 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x38, 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x39, - 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x34, 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x36, - 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x35, 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x37, - 0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x31, 0x30, 0x00, 0x00, 0x00, 0x53, 0x56, 0x23, 0x31, - 0x31, 0x00, 0x00, 0x00, 0x6e, 0x6f, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, - 0x00, 0x16, 0x40, 0x28, 0x04, 0x04, 0x44, 0x08, 0x0c, 0x10, 0x14, 0x18, 0x00, 0x1c, 0x1d, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x10, 0x60, 0x02, 0x40, 0x08, 0x60, 0x02, 0x40, 0x00, 0x00, 0x0b, 0x00, - 0x28, 0x60, 0x02, 0x40, 0x08, 0x60, 0x02, 0x40, 0x06, 0x01, 0x0c, 0x00, 0x40, 0x60, 0x02, 0x40, - 0x08, 0x60, 0x02, 0x40, 0x10, 0x02, 0x0d, 0x00, 0x58, 0x60, 0x02, 0x40, 0x08, 0x60, 0x02, 0x40, - 0x16, 0x03, 0x0e, 0x00, 0x70, 0x60, 0x02, 0x40, 0x0c, 0x60, 0x02, 0x40, 0x00, 0x04, 0x0f, 0x00, - 0x88, 0x60, 0x02, 0x40, 0x0c, 0x60, 0x02, 0x40, 0x06, 0x05, 0x10, 0x00, 0xa0, 0x60, 0x02, 0x40, - 0x0c, 0x60, 0x02, 0x40, 0x10, 0x06, 0x11, 0x00, 0xb8, 0x60, 0x02, 0x40, 0x0c, 0x60, 0x02, 0x40, - 0x16, 0x07, 0x2f, 0x00, 0x10, 0x64, 0x02, 0x40, 0x08, 0x64, 0x02, 0x40, 0x00, 0x08, 0x38, 0x00, - 0x28, 0x64, 0x02, 0x40, 0x08, 0x64, 0x02, 0x40, 0x06, 0x09, 0x39, 0x00, 0x40, 0x64, 0x02, 0x40, - 0x08, 0x64, 0x02, 0x40, 0x10, 0x0a, 0x3a, 0x00, 0x58, 0x64, 0x02, 0x40, 0x08, 0x64, 0x02, 0x40, - 0x16, 0x0b, 0x3b, 0x00, 0x70, 0x64, 0x02, 0x40, 0x0c, 0x64, 0x02, 0x40, 0x00, 0x0c, 0x3c, 0x00, - 0x88, 0x64, 0x02, 0x40, 0x0c, 0x64, 0x02, 0x40, 0x06, 0x0d, 0x44, 0x00, 0xa0, 0x64, 0x02, 0x40, - 0x0c, 0x64, 0x02, 0x40, 0x10, 0x0e, 0x45, 0x00, 0xb8, 0x64, 0x02, 0x40, 0x0c, 0x64, 0x02, 0x40, - 0x16, 0x0f, 0x46, 0x00, 0x53, 0x54, 0x4d, 0x33, 0x32, 0x5f, 0x55, 0x41, 0x52, 0x54, 0x5f, 0x44, - 0x4d, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x48, 0x4f, 0x4f, 0x4b, 0x00, 0x00, 0x00, - 0x54, 0x75, 0x6e, 0x65, 0x72, 0x53, 0x74, 0x75, 0x64, 0x69, 0x6f, 0x20, 0x6f, 0x76, 0x65, 0x72, - 0x20, 0x55, 0x53, 0x41, 0x52, 0x54, 0x00, 0x00, 0x74, 0x75, 0x6e, 0x65, 0x72, 0x73, 0x74, 0x75, - 0x64, 0x69, 0x6f, 0x20, 0x72, 0x78, 0x00, 0x00, 0x74, 0x75, 0x6e, 0x65, 0x72, 0x73, 0x74, 0x75, - 0x64, 0x69, 0x6f, 0x20, 0x74, 0x78, 0x00, 0x00, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x55, 0x41, - 0x52, 0x54, 0x2d, 0x44, 0x4d, 0x41, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x00, 0x21, 0x21, 0x21, 0x20, - 0x4e, 0x4f, 0x54, 0x20, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x20, 0x25, 0x64, 0x20, - 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x25, 0x64, 0x20, 0x21, 0x21, 0x21, 0x00, 0x00, 0x00, - 0x50, 0x41, 0x00, 0x00, 0x50, 0x42, 0x00, 0x00, 0x50, 0x43, 0x00, 0x00, 0x50, 0x44, 0x00, 0x00, - 0x50, 0x45, 0x00, 0x00, 0x50, 0x47, 0x00, 0x00, 0x50, 0x48, 0x00, 0x00, 0x50, 0x46, 0x00, 0x00, - 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x00, 0xe8, 0x39, 0x00, 0x08, 0x78, 0x3a, 0x00, 0x08, - 0x7c, 0x3a, 0x00, 0x08, 0x80, 0x3a, 0x00, 0x08, 0x84, 0x3a, 0x00, 0x08, 0x88, 0x3a, 0x00, 0x08, - 0x8c, 0x3a, 0x00, 0x08, 0x90, 0x3a, 0x00, 0x08, 0x94, 0x3a, 0x00, 0x08, 0x98, 0x3a, 0x00, 0x08, - 0x9c, 0x3a, 0x00, 0x08, 0xa0, 0x3a, 0x00, 0x08, 0xec, 0x39, 0x00, 0x08, 0x4c, 0x3a, 0x00, 0x08, - 0x50, 0x3a, 0x00, 0x08, 0x54, 0x3a, 0x00, 0x08, 0x58, 0x3a, 0x00, 0x08, 0x5c, 0x3a, 0x00, 0x08, - 0x60, 0x3a, 0x00, 0x08, 0x64, 0x3a, 0x00, 0x08, 0x68, 0x3a, 0x00, 0x08, 0x6c, 0x3a, 0x00, 0x08, - 0x70, 0x3a, 0x00, 0x08, 0x74, 0x3a, 0x00, 0x08, 0x63, 0x31, 0x00, 0x00, 0x69, 0x31, 0x00, 0x00, - 0x64, 0x69, 0x7a, 0x7a, 0x79, 0x00, 0x00, 0x00, 0x74, 0x61, 0x63, 0x68, 0x00, 0x00, 0x00, 0x00, - 0x61, 0x31, 0x00, 0x00, 0x61, 0x32, 0x00, 0x00, 0x25, 0x73, 0x3a, 0x20, 0x49, 0x6e, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x20, 0x62, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x69, 0x6e, 0x5f, 0x65, 0x3a, - 0x20, 0x25, 0x64, 0x00, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x50, 0x69, 0x6e, 0x20, 0x5b, 0x25, - 0x73, 0x5d, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x61, 0x73, 0x73, 0x69, 0x67, - 0x6e, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x25, 0x78, 0x25, 0x64, 0x00, 0x69, 0x32, 0x00, 0x00, - 0x69, 0x33, 0x00, 0x00, 0x69, 0x34, 0x00, 0x00, 0x69, 0x35, 0x00, 0x00, 0x69, 0x36, 0x00, 0x00, - 0x69, 0x37, 0x00, 0x00, 0x69, 0x38, 0x00, 0x00, 0x6a, 0x39, 0x00, 0x00, 0x69, 0x41, 0x00, 0x00, - 0x69, 0x42, 0x00, 0x00, 0x69, 0x43, 0x00, 0x00, 0x63, 0x32, 0x00, 0x00, 0x63, 0x33, 0x00, 0x00, - 0x63, 0x34, 0x00, 0x00, 0x63, 0x35, 0x00, 0x00, 0x63, 0x36, 0x00, 0x00, 0x63, 0x37, 0x00, 0x00, - 0x63, 0x38, 0x00, 0x00, 0x63, 0x39, 0x00, 0x00, 0x63, 0x41, 0x00, 0x00, 0x63, 0x42, 0x00, 0x00, - 0x63, 0x44, 0x00, 0x00, 0x69, 0x6f, 0x5f, 0x70, 0x69, 0x6e, 0x73, 0x00, 0x00, 0x00, 0x02, 0x40, - 0x00, 0x04, 0x02, 0x40, 0x00, 0x08, 0x02, 0x40, 0x00, 0x0c, 0x02, 0x40, 0x00, 0x10, 0x02, 0x40, - 0x00, 0x14, 0x02, 0x40, 0x00, 0x18, 0x02, 0x40, 0x00, 0x1c, 0x02, 0x40, 0x25, 0x73, 0x20, 0x6f, - 0x6e, 0x20, 0x25, 0x73, 0x25, 0x64, 0x00, 0x00, 0x70, 0x69, 0x6e, 0x20, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x00, 0x00, 0x00, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x70, 0x6f, 0x72, 0x74, - 0x00, 0x00, 0x00, 0x00, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x00, 0x00, - 0x25, 0x73, 0x25, 0x64, 0x20, 0x72, 0x65, 0x71, 0x20, 0x62, 0x79, 0x20, 0x25, 0x73, 0x20, 0x75, - 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x25, 0x73, 0x00, 0x00, 0x00, 0x64, 0x66, 0x75, 0x4a, - 0x75, 0x6d, 0x70, 0x54, 0x6f, 0x41, 0x70, 0x70, 0x20, 0x46, 0x41, 0x49, 0x4c, 0x00, 0x00, 0x00, - 0x31, 0x00, 0x02, 0x11, 0x21, 0x31, 0x44, 0x00, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x00, 0x00, - 0x42, 0x6f, 0x6f, 0x74, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x81, 0x2a, 0x00, 0x08, 0x71, 0x2a, 0x00, 0x08, 0x60, 0x02, 0x00, 0x10, - 0x08, 0x00, 0x00, 0x10, 0xc8, 0x00, 0x00, 0x00, -}; - -#endif /* BOOTLOADER_GENERATED_HXX_ */ - diff --git a/firmware/bootloader/src/Makefile b/firmware/bootloader/src/Makefile index 32f862b119..0bebf98d08 100644 --- a/firmware/bootloader/src/Makefile +++ b/firmware/bootloader/src/Makefile @@ -7,12 +7,11 @@ ifeq ($(DEBUG_LEVEL_OPT),) # this value would be used by default. For 'debug' configuration override with '-O0 -ggdb -g' or something along these lines - DEBUG_LEVEL_OPT = -O2 + DEBUG_LEVEL_OPT = -Os -ggdb -g DDEFS += -DEFI_ENABLE_ASSERTS=FALSE -DCH_DBG_ENABLE_ASSERTS=FALSE -DCH_DBG_ENABLE_STACK_CHECK=FALSE -DCH_DBG_FILL_THREADS=FALSE -DCH_DBG_THREADS_PROFILING=FALSE endif -# let everyone know that we are compiling bootloader -IS_RE_BOOTLOADER = yes +DDEFS += -DENABLE_AUTO_DETECT_HSE=TRUE -DSTM32_HSECLK=25000000 # disable some modules to shrink bootloader binary DDEFS += -DEFI_BOOTLOADER @@ -22,8 +21,7 @@ DDEFS += -DHAL_USE_FLASH=FALSE DDEFS += -DEFI_USE_UART_DMA=FALSE -# disable USB (The bootloader has currently UART support only) -DDEFS += -DEFI_USB_SERIAL=FALSE +DDEFS += -DEFI_USB_SERIAL=TRUE -DHAL_USE_USB_MSD=FALSE # disable CAN DDEFS += -DEFI_CAN_SUPPORT=FALSE @@ -34,6 +32,9 @@ ifeq ($(USE_OPT),) USE_OPT = $(EXTRA_PARAMS) $(DEBUG_LEVEL_OPT) $(RFLAGS) -Wno-error=implicit-fallthrough -Wno-error=bool-operation -fomit-frame-pointer -falign-functions=16 -Werror -Wno-error=pointer-sign -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=sign-compare -Wno-error=unused-parameter -Wno-error=missing-field-initializers -Werror=type-limits -Wno-error=strict-aliasing -Wno-error=attributes endif +# Configure the linker script to build the bootloader, not the firmware +USE_OPT += -Wl,--defsym=IS_BOOTLOADER=1 + # C specific options here (added to USE_OPT). ifeq ($(USE_COPT),) USE_COPT = -fgnu89-inline -std=gnu99 -Werror-implicit-function-declaration @@ -52,13 +53,6 @@ ifeq ($(USE_LINK_GC),) USE_LINK_GC = yes endif -ifeq ($(CCACHE_DIR),) - $(info No CCACHE_DIR) -else - $(info CCACHE_DIR is ${CCACHE_DIR}) - CCPREFIX=ccache -endif - # Linker extra options here. ifeq ($(USE_LDOPT),) USE_LDOPT = @@ -107,7 +101,7 @@ endif # Enables the use of FPU on Cortex-M4 (no, softfp, hard). ifeq ($(USE_FPU),) - USE_FPU = softfp + USE_FPU = hard endif # @@ -119,7 +113,7 @@ endif # # Define project name here -PROJECT = bootloader +PROJECT = fome_bl PROJECT_DIR = .. # Configure precompiled header @@ -175,7 +169,14 @@ CSRC = $(ALLCSRC) \ $(BOARDSRC) \ $(HW_LAYER_EMS) \ $(HW_LAYER_DRIVERS_CORE) \ - $(FATFSSRC) \ + $(PROJECT_DIR)/hw_layer/openblt/shared_params.c \ + $(PROJECT_DIR)/hw_layer/main_hardfault.c \ + $(PROJECT_DIR)/ext/openblt/Target/Source/backdoor.c \ + $(PROJECT_DIR)/ext/openblt/Target/Source/boot.c \ + $(PROJECT_DIR)/ext/openblt/Target/Source/com.c \ + $(PROJECT_DIR)/ext/openblt/Target/Source/xcp.c \ + $(PROJECT_DIR)/bootloader/openblt_chibios/nvm.c \ + $(PROJECT_DIR)/hw_layer/openblt/hooks.c \ # C++ sources that can be compiled in ARM or THUMB mode depending on the global # todo: reduce code duplication with primary Makefile!!! @@ -183,19 +184,13 @@ CSRC = $(ALLCSRC) \ CPPSRC = $(ALLCPPSRC) \ $(HW_LAYER_EMS_CPP) \ $(BOARDCPPSRC) \ - $(HW_SENSORS_SRC) \ - $(TUNERSTUDIO_SRC_CPP) \ - $(CONSOLE_SRC_CPP) \ - $(PROJECT_DIR)/console/binary/tunerstudio_io.cpp \ - $(PROJECT_DIR)/console/binary/tunerstudio_io_serial.cpp \ - $(PROJECT_DIR)/controllers/algo/engine_configuration.cpp \ - $(PROJECT_DIR)/controllers/persistent_store.cpp \ - $(PROJECT_DIR)/hw_layer/io_pins.cpp \ $(PROJECT_DIR)/util/efilib.cpp \ $(PROJECT_DIR)/hw_layer/pin_repository.cpp \ $(RUSEFI_LIB_CPP) \ + $(PROJECT_DIR)/bootloader/openblt_chibios/openblt_chibios.cpp \ + $(PROJECT_DIR)/bootloader/openblt_chibios/openblt_flash.cpp \ + $(PROJECT_DIR)/bootloader/openblt_chibios/openblt_usb.cpp \ src/rusefi_stubs.cpp \ - src/dfu.cpp \ src/main.cpp # C sources to be compiled in ARM mode regardless of the global setting. @@ -220,7 +215,7 @@ TCPPSRC = # List ASM source files here # List ASM source files here -ASMXSRC = $(STARTUPASM) $(PORTASM) $(OSALASM) +ASMXSRC = $(STARTUPASM) $(PORTASM) $(OSALASM) $(PROJECT_DIR)/hw_layer/main_hardfault_asm.S INCDIR = $(ALLINC) \ $(PCH_DIR) \ @@ -245,6 +240,8 @@ INCDIR = $(ALLINC) \ $(PROJECT_DIR)/hw_layer/serial_over_usb \ $(PROJECT_DIR)/hw_layer/algo \ $(PROJECT_DIR)/hw_layer/sensors \ + $(PROJECT_DIR)/controllers/sensors/impl \ + $(PROJECT_DIR)/controllers/sensors/core \ $(PROJECT_DIR)/hw_layer/mass_storage \ $(PROJECT_DIR)/hw_layer/ports \ $(PROJECT_DIR)/console/binary/generated \ @@ -258,6 +255,10 @@ INCDIR = $(ALLINC) \ $(PROJECT_DIR)/controllers/sensors \ $(PROJECT_DIR)/init \ $(RUSEFI_LIB_INC) \ + $(BOARDS_DIR) \ + $(PROJECT_DIR)/hw_layer/openblt \ + $(PROJECT_DIR)/ext/openblt/Target/Source \ + $(PROJECT_DIR)/bootloader/openblt_chibios \ config BUILDDIR=blbuild diff --git a/firmware/bootloader/src/dfu.cpp b/firmware/bootloader/src/dfu.cpp deleted file mode 100644 index 66b4b22ac3..0000000000 --- a/firmware/bootloader/src/dfu.cpp +++ /dev/null @@ -1,319 +0,0 @@ -#include "pch.h" - -#include "hardware.h" - -#include "flash_int.h" - -#include "dfu.h" - -// Communication vars -static UartTsChannel blTsChannel(TS_PRIMARY_UxART_PORT); -static uint8_t buffer[DFU_BUFFER_SIZE]; -// Use short timeout for the first data packet, and normal timeout for the rest -static int sr5Timeout = DFU_SR5_TIMEOUT_FIRST; - -// This big buffer is used for temporary storing of the bootloader flash page -static uint8_t bootloaderVirtualPageBuffer[BOOTLOADER_SIZE]; - - -// needed by DFU protocol (DFU_DEVICE_ID_CMD) -static uint32_t getMcuRevision() { - // =0x413 for F407 - // =0x419 for F42xxx and F43xxx - // =0x434 for F469 - return DBGMCU->IDCODE & MCU_REVISION_MASK; -} - -static bool getByte(uint8_t *b) { - return blTsChannel.readTimeout(b, 1, sr5Timeout) == 1; -} - -static void sendByte(uint8_t b) { - blTsChannel.write(&b, 1, true); -} - -static uint8_t dfuCalcChecksum(const uint8_t *buf, uint8_t size) { - uint8_t checksum = buf[0]; - - for (uint8_t i = 1; i < size; i++) { - checksum ^= buf[i]; - } - return checksum; -} - -// Used to detect writing of the current flash sector -static bool isBootloaderAddress(uint32_t addr) { - return addr >= BOOTLOADER_ADDR && addr < (BOOTLOADER_ADDR + BOOTLOADER_SIZE); -} - -static bool isInVirtualPageBuffer(uint32_t addr) { - return addr >= (uint32_t)bootloaderVirtualPageBuffer && addr < (uint32_t)bootloaderVirtualPageBuffer + sizeof(bootloaderVirtualPageBuffer); -} - -// Read 32-bit address and 8-bit checksum. -// Returns true if all 5 bytes are received and checksum is correct, and false otherwise. -static bool readAddress(uint32_t *addr) { - uint8_t buf[5]; // 4 bytes+checksum - if (blTsChannel.readTimeout(buf, 5, sr5Timeout) != 5) - return false; - if (dfuCalcChecksum(buf, 4) != buf[4]) - return false; - *addr = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; - - // for bootloader flash, return a virtual buffer instead - if (isBootloaderAddress(*addr)) { - *addr = (uint32_t)bootloaderVirtualPageBuffer + (*addr - BOOTLOADER_ADDR); - } - - return true; -} - -// needed by DFU protocol to validate received bytes -static uint8_t complementByte(uint8_t c) { - return c ^ 0xff; -} - -static uint16_t bufToInt16(uint8_t *buf) { - return (buf[0] << 8) | buf[1]; -} - -static void prepareInterruptsForJump() { -#ifdef STM32F4 - // interrupt control - SCB->ICSR &= ~SCB_ICSR_PENDSVSET_Msk; - // set interrupt vectors - for(int i = 0; i < 8; i++) - NVIC->ICER[i] = NVIC->IABR[i]; - __set_CONTROL(0); -#else -// todo: add support for other MCUs -#error "Unsupported MCU configuration!" -#endif -} - -// some weird STM32 magic... -void dfuJumpToApp(uint32_t addr) { - typedef void (*pFunction)(void); - - // goodbye ChibiOS, we're leaving... - chSysDisable(); - - // get jump addr - uint32_t jumpAddress = *((uint32_t *)(addr + 4)); - pFunction jump = (pFunction) jumpAddress; - prepareInterruptsForJump(); - // set stack pointer - __set_MSP(*(uint32_t *)addr); - - // call - jump(); - - // we shouldn't get here - chSysHalt("dfuJumpToApp FAIL"); -} - -static void dfuHandleGetList() { - static const uint8_t cmdsInfo[] = { DFU_VERSION_NUMBER, DFU_GET_LIST_CMD, DFU_DEVICE_ID_CMD, DFU_READ_CMD, DFU_GO_CMD, - DFU_WRITE_CMD, DFU_ERASE_CMD }; - size_t numBytes = sizeof(cmdsInfo); - sendByte(numBytes - 1); // number of commands - for (size_t i = 0; i < numBytes; i++) - sendByte(cmdsInfo[i]); - sendByte(DFU_ACK_BYTE); -} - -static void dfuHandleDeviceId() { - uint32_t mcuRev = getMcuRevision(); - sendByte(0x01); // the number of bytes to be send - 1 - // send 12 bit MCU revision - sendByte((uint8_t)((mcuRev >> 8) & 0xf)); - sendByte((uint8_t)(mcuRev & 0xff)); - sendByte(DFU_ACK_BYTE); -} - -static void dfuHandleGo() { - uint32_t addr; - - if (!readAddress(&addr)) { - sendByte(DFU_NACK_BYTE); - return; - } - // todo: check if the address is valid - sendByte(DFU_ACK_BYTE); - dfuJumpToApp(addr); -} - -static void dfuHandleRead() { - uint32_t addr; - - if (!readAddress(&addr)) { - sendByte(DFU_NACK_BYTE); - return; - } - sendByte(DFU_ACK_BYTE); - uint8_t byte, complement; - if (!getByte(&byte)) - return; - if (!getByte(&complement)) - return; - // check if we have a correct byte received - if (complement != complementByte(byte)) { - sendByte(DFU_NACK_BYTE); - return; - } - int numBytes = (int)byte + 1; - sendByte(DFU_ACK_BYTE); - - // read flash or virtual RAM buffer (don't transmit directly from flash) - if (isInVirtualPageBuffer(addr)) - memcpy(buffer, (uint8_t *)addr, numBytes); - else - intFlashRead(addr, (char *)buffer, numBytes); - - // transmit data - blTsChannel.write(buffer, numBytes, true); -} - -static void dfuHandleWrite() { - uint32_t addr; - - if (!readAddress(&addr)) { - sendByte(DFU_NACK_BYTE); - return; - } - sendByte(DFU_ACK_BYTE); - if (!getByte(buffer)) - return; - - int numBytes = buffer[0] + 1; - int numBytesAndChecksum = numBytes + 1; // +1 byte of checkSum - // receive data - if (blTsChannel.readTimeout(buffer + 1, numBytesAndChecksum, sr5Timeout) != numBytesAndChecksum) - return; - // don't write corrupted data! - if (dfuCalcChecksum(buffer, numBytesAndChecksum) != buffer[numBytesAndChecksum]) { - sendByte(DFU_NACK_BYTE); - return; - } - - // now write to flash (or to the virtual RAM buffer) - if (isInVirtualPageBuffer(addr)) - memcpy((uint8_t *)addr, (buffer + 1), numBytes); - else - intFlashWrite(addr, (const char *)(buffer + 1), numBytes); - - // we're done! - sendByte(DFU_ACK_BYTE); -} - -static void dfuHandleErase() { - int numSectors; - if (!getByte(buffer)) - return; - if (!getByte(buffer + 1)) - return; - numSectors = bufToInt16(buffer); - int numSectorData; - if (numSectors == 0xffff) // erase all chip - numSectorData = 1; - else - numSectorData = (numSectors + 1) * 2 + 1; - uint8_t *sectorList = buffer + 2; - // read sector data & checksum - if (blTsChannel.readTimeout(sectorList, numSectorData, sr5Timeout) != numSectorData) - return; - // verify checksum - if (dfuCalcChecksum(buffer, 2 + numSectorData - 1) != buffer[2 + numSectorData - 1]) { - sendByte(DFU_NACK_BYTE); - return; - } - // Erase the chosen sectors, sector by sector - for (int i = 0; i < numSectorData - 1; i += 2) { - int sectorIdx = bufToInt16(sectorList + i); - if (sectorIdx < BOOTLOADER_NUM_SECTORS) { // skip first sectors where our bootloader is - // imitate flash erase by writing '0xff' - memset(bootloaderVirtualPageBuffer, 0xff, BOOTLOADER_SIZE); - continue; - } - // erase sector - intFlashSectorErase(sectorIdx); - } - - sendByte(DFU_ACK_BYTE); -} - -bool dfuStartLoop(void) { - bool wasCommand = false; - uint8_t command, complement; - - sr5Timeout = DFU_SR5_TIMEOUT_FIRST; - - // We cannot afford waiting for the first handshake byte, so we have to send an answer in advance! - sendByte(DFU_ACK_BYTE); - - // Fill the temporary buffer from the real flash memory - memcpy(bootloaderVirtualPageBuffer, (void *)BOOTLOADER_ADDR, BOOTLOADER_SIZE); - - while (true) { - // read command & complement bytes - if (!getByte(&command)) { - // timeout, but wait more if we're in bootloader mode - if (wasCommand) - continue; - // exit if no data was received - break; - } - if (!getByte(&complement)) { - if (wasCommand) { - // something is wrong, but keep the connection - sendByte(DFU_NACK_BYTE); - continue; - } - break; - } - - // check if we have a correct command received - if (complement != complementByte(command)) { - sendByte(DFU_NACK_BYTE); - continue; - } - - // confirm that we've got the command - sendByte(DFU_ACK_BYTE); - wasCommand = true; - // set normal (longer) timeout, we're not in a hurry anymore - sr5Timeout = DFU_SR5_TIMEOUT_NORMAL; - - // now execute it (see ST appnote "AN3155") - switch (command) { - case DFU_UART_CHECK: - break; - case DFU_GET_LIST_CMD: - dfuHandleGetList(); - break; - case DFU_DEVICE_ID_CMD: - dfuHandleDeviceId(); - break; - case DFU_GO_CMD: - dfuHandleGo(); - break; - case DFU_READ_CMD: - dfuHandleRead(); - break; - case DFU_WRITE_CMD: - dfuHandleWrite(); - break; - case DFU_ERASE_CMD: - dfuHandleErase(); - break; - default: - break; - } /* End switch */ - } - - return wasCommand; -} - -SerialTsChannelBase *getTsChannel() { - return &blTsChannel; -} diff --git a/firmware/bootloader/src/dfu.h b/firmware/bootloader/src/dfu.h deleted file mode 100644 index a87ba93956..0000000000 --- a/firmware/bootloader/src/dfu.h +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once - -#include "tunerstudio_io.h" - -// This is where the bootloader starts -#define BOOTLOADER_ADDR 0x08000000 -// Bootloader code max. size, in bytes -#define BOOTLOADER_SIZE 0x8000 -// Number of sectors for the bootloader -#define BOOTLOADER_NUM_SECTORS (BOOTLOADER_SIZE/0x4000) - -// This is where the application starts -#define APPLICATION_ADDR 0x08008000 - -#define DFU_BUFFER_SIZE 258 // Max. 256 bytes at a time plus 2 bytes (numBytes+checksum) - - -// DFU/USART Protocol is described in AN3155 document "Application note. USART protocol used in the STM32 bootloader" -// http://www.st.com/resource/en/application_note/cd00264342.pdf - -#define DFU_UART_CHECK 0x7F // "UART handshake" escape byte - -#define DFU_GET_LIST_CMD 0x00 // "Get supported commands list" command -#define DFU_DEVICE_ID_CMD 0x02 // "Get device ID" command -#define DFU_READ_CMD 0x11 // "Read memory" command -#define DFU_GO_CMD 0x21 // "Go" command -#define DFU_WRITE_CMD 0x31 // "Write memory" command -#define DFU_ERASE_CMD 0x44 // "Erase memory" command - -#define DFU_VERSION_NUMBER 0x31 // The DFU protocol version number -#define DFU_ACK_BYTE 0x79 // Acknowledge byte ID -#define DFU_NACK_BYTE 0x1F // Not-Acknowledge byte ID - -#define DFU_SR5_TIMEOUT_FIRST TIME_MS2I(200) -#define DFU_SR5_TIMEOUT_NORMAL TIME_MS2I(1000) - -#define MCU_REVISION_MASK 0xfff // MCU Revision ID is needed by DFU protocol - -// The address in MCU system memory where the bootloader version number is stored (2 bytes) -#define DFU_BOOTLOADER_VERSION_ADDRESS 0x1FFF76DE - -/** - * @brief This function waits for the command to apply (write, read etc...) - */ -bool dfuStartLoop(void); -/** - * @brief Jump to the application - */ -void dfuJumpToApp(uint32_t addr); - -SerialTsChannelBase* getTsChannel(); diff --git a/firmware/bootloader/src/main.cpp b/firmware/bootloader/src/main.cpp index ff3bfea6b0..ba6f304a3d 100644 --- a/firmware/bootloader/src/main.cpp +++ b/firmware/bootloader/src/main.cpp @@ -1,64 +1,38 @@ #include "pch.h" - +#include "usbconsole.h" #include "hardware.h" -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include -#include -#include - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#include "dfu.h" - -static bool wasCommand = false; - -static THD_WORKING_AREA(waBootloaderSerial, 128); -static THD_FUNCTION(thBootloaderSerial, arg) { - (void)arg; - chRegSetThreadName("BootloaderSerial"); - - // start our DFU emulator - wasCommand = dfuStartLoop(); - - chThdExit(MSG_OK); +extern "C" { + #include "boot.h" + #include "shared_params.h" } int main(void) { - // run ChibiOS halInit(); chSysInit(); - // set base pin configuration based on the board - setDefaultBasePins(); -/* at the moment SD card is not needed by bootloader - // set SD card configuration also - setDefaultSdCardParameters(); -*/ - // start UART - getTsChannel()->start(38400); // TODO: should bootloader serial speed be configurable? + baseMCUInit(); - // start a serial port reader thread - thread_t *thrSerial = chThdCreateStatic(waBootloaderSerial, sizeof(waBootloaderSerial), NORMALPRIO, thBootloaderSerial, NULL); - - // wait for the thread to finish - chThdWait(thrSerial); - -#if 0 - if (wasCommand) // abnormal termination of the bootloader thread - chSysHalt("Bootloader DFU FAIL"); -#endif + // Init openblt shared params + SharedParamsInit(); - // Run application - dfuJumpToApp(APPLICATION_ADDR); + // Init openblt itself + BootInit(); - return 0; + while (true) { + BootTask(); + } } +// very basic version, supports on chip pins only (really only used for USB) +void efiSetPadMode(const char* msg, brain_pin_e brainPin, iomode_t mode) { + ioportid_t port = getHwPort(msg, brainPin); + ioportmask_t pin = getHwPin(msg, brainPin); + /* paranoid */ + if (port == GPIO_NULL) { + return; + } + + palSetPadMode(port, pin, mode); +} diff --git a/firmware/bootloader/src/rusefi_stubs.cpp b/firmware/bootloader/src/rusefi_stubs.cpp index 80f61c7fb2..bc8310db59 100644 --- a/firmware/bootloader/src/rusefi_stubs.cpp +++ b/firmware/bootloader/src/rusefi_stubs.cpp @@ -12,20 +12,7 @@ void chDbgPanic3(const char* /*msg*/, const char* /*file*/, int /*line*/) { } -namespace priv -{ -void efiPrintfInternal(const char* /*fmt*/, ...) { -} -} - -void firmwareError(ObdCode /*code*/, const char* /*fmt*/, ...) { -} - -Logging::Logging(char const* /*name*/, char* /*buffer*/, int /*bufferSize*/) { -} - -LoggingWithStorage::LoggingWithStorage(const char *name) : Logging(name, DEFAULT_BUFFER, sizeof(DEFAULT_BUFFER)) { -} +void logHardFault(uint32_t type, uintptr_t faultAddress, struct port_extctx* ctx, uint32_t csfr) { } // this is supposed to be taken from chconf_common.h but it does not work? I am not sure why :( // TODO: make this be defined by chconf_common.h? @@ -36,4 +23,4 @@ void contextSwitchHook() {} void threadInitHook(void*) {} void onLockHook() {} void onUnlockHook() {} -//#endif /* ENABLE_PERF_TRACE */ \ No newline at end of file +//#endif /* ENABLE_PERF_TRACE */ diff --git a/firmware/config/boards/common_make.sh b/firmware/config/boards/common_make.sh index c87de26147..f16e49eb33 100644 --- a/firmware/config/boards/common_make.sh +++ b/firmware/config/boards/common_make.sh @@ -15,8 +15,10 @@ mkdir -p .dep make -j6 -r PROJECT_BOARD=$PROJECT_BOARD PROJECT_CPU=$PROJECT_CPU [ -e build/fome.hex ] || { echo "FAILED to compile by $SCRIPT_NAME with $PROJECT_BOARD $DEBUG_LEVEL_OPT and $EXTRA_PARAMS"; exit 1; } if [ "$USE_OPENBLT" = "yes" ]; then - make openblt PROJECT_BOARD=$PROJECT_BOARD PROJECT_CPU=$PROJECT_CPU - [ -e build-openblt/openblt_$PROJECT_BOARD.hex ] || { echo "FAILED to compile OpenBLT by $SCRIPT_NAME with $PROJECT_BOARD"; exit 1; } + # TODO: why is this rm necessary? + rm -f pch/pch.h.gch/* + cd bootloader; make -f src/Makefile PROJECT_BOARD=$PROJECT_BOARD PROJECT_CPU=$PROJECT_CPU -j12; cd .. + [ -e bootloader/blbuild/fome_bl.hex ] || { echo "FAILED to compile OpenBLT by $SCRIPT_NAME with $PROJECT_BOARD"; exit 1; } fi if uname | grep "NT"; then @@ -34,32 +36,29 @@ $HEX2DFU -i build/fome.hex -C 0x1C -o build/fome.dfu if [ "$USE_OPENBLT" = "yes" ]; then # this image is suitable for update through bootloader only - # do not deliver update images in any format that can confuse users - #cp build/fome.bin deliver/fome_update.bin - #cp build/fome.dfu deliver/fome_update.dfu - #cp build/fome.hex deliver/fome_update.hex # srec is the only format used by OpenBLT host tools cp build/fome.srec deliver/fome_update.srec else # standalone images (for use with no bootloader) cp build/fome.bin deliver/ cp build/fome.dfu deliver/ + # cp build/fome.hex deliver/ fi # bootloader and composite image if [ "$USE_OPENBLT" = "yes" ]; then - rm -f deliver/openblt.dfu + rm -f deliver/fome_bl.dfu echo "$SCRIPT_NAME: invoking hex2dfu for OpenBLT" - $HEX2DFU -i build-openblt/openblt_$PROJECT_BOARD.hex -o build-openblt/openblt_$PROJECT_BOARD.dfu + $HEX2DFU -i bootloader/blbuild/fome_bl.hex -o bootloader/blbuild/fome_bl.dfu # do we need all these formats? - cp build-openblt/openblt_$PROJECT_BOARD.bin deliver/openblt.bin - cp build-openblt/openblt_$PROJECT_BOARD.dfu deliver/openblt.dfu - #cp build-openblt/openblt_$PROJECT_BOARD.hex deliver/openblt.hex + cp bootloader/blbuild/fome_bl.bin deliver/fome_bl.bin + cp bootloader/blbuild/fome_bl.dfu deliver/fome_bl.dfu + #cp bootloader/blbuild/fome_bl.hex deliver/fome_bl.hex rm -f deliver/fome_openblt.dfu echo "$SCRIPT_NAME: invoking hex2dfu for composite rusEFI+OpenBLT image" - $HEX2DFU -i build-openblt/openblt_$PROJECT_BOARD.hex -i build/fome.hex -C 0x1C -o deliver/fome.dfu -b deliver/fome.bin + $HEX2DFU -i bootloader/blbuild/fome_bl.hex -i build/fome.hex -C 0x1C -o deliver/fome.dfu -b deliver/fome.bin #todo: how to create 'signed' hex and srec? Do we need? fi diff --git a/firmware/config/boards/f407-discovery/board.mk b/firmware/config/boards/f407-discovery/board.mk index b7d121aedc..9c002d4292 100644 --- a/firmware/config/boards/f407-discovery/board.mk +++ b/firmware/config/boards/f407-discovery/board.mk @@ -29,7 +29,3 @@ DDEFS += -DTS_SECONDARY_UxART_PORT=SD3 DDEFS += -DSTM32_I2C_USE_I2C3=TRUE DDEFS += -DEFI_SOFTWARE_KNOCK=TRUE -DSTM32_ADC_USE_ADC3=TRUE - -ifndef IS_RE_BOOTLOADER -DDEFS += -DHAL_USE_EEPROM=TRUE -endif \ No newline at end of file diff --git a/firmware/config/boards/hellen/hellen121nissan/openblt/oblt_board.mk b/firmware/config/boards/hellen/hellen121nissan/openblt/oblt_board.mk deleted file mode 100644 index b265597357..0000000000 --- a/firmware/config/boards/hellen/hellen121nissan/openblt/oblt_board.mk +++ /dev/null @@ -1,40 +0,0 @@ -#|--------------------------------------------------------------------------------------| -#| Collect project files | -#|--------------------------------------------------------------------------------------| -# Collect all application files in the current directory and its subdirectories, but -# exclude flash-layout.c as this one is directly included in a source file, when used. -PROJ_FILES += $(filter-out $(OPENBLT_BOARD_DIR)/flash_layout.c, $(call rwildcard, $(OPENBLT_BOARD_DIR), *.c *.h *.s)) - -#|--------------------------------------------------------------------------------------| -#| Options for toolchain binaries | -#|--------------------------------------------------------------------------------------| -ifeq ($(PROJECT_CPU),ARCH_STM32F4) - BRDFLAGS = -DSTM32F429xx -else ifeq ($(PROJECT_CPU),ARCH_STM32F7) - #TODO: check what CPU is on proteus f7 - BRDFLAGS = -DSTM32F767xx -else ifeq ($(PROJECT_CPU),ARCH_STM32H7) - #TODO: check what CPU is on proteus h7 - BRDFLAGS = -DSTM32H743xx -endif - -#|--------------------------------------------------------------------------------------| -#| Specify library files | -#|--------------------------------------------------------------------------------------| -LIBS = - -# We use HSI (internal) on proteus. We define HSE (external) only to have compiler happy. -BRDFLAGS += -DHSE_VALUE=8000000 - -# hellen144 -BRDFLAGS += -DSTATUS_LED_PORT=GPIOG -DSTATUS_LED_PIN=GPIO_PIN_0 - -# Frequency of the external crystal oscillator -BRDFLAGS += -DBOOT_CPU_XTAL_SPEED_KHZ=8000 -BRDFLAGS += -DBOOT_CPU_SYSTEM_SPEED_KHZ=168000 -# Select the desired UART peripheral as a zero based index. -BRDFLAGS += -DBOOT_COM_RS232_CHANNEL_INDEX=2 -# \brief Select the desired CAN peripheral as a zero based index. -BRDFLAGS += -DBOOT_COM_CAN_CHANNEL_INDEX=0 - -PROJ_FILES += $(PROJECT_DIR)/hw_layer/openblt/main_internal_osc.c diff --git a/firmware/config/boards/microrusefi/openblt/main_external_osc.c b/firmware/config/boards/microrusefi/openblt/main_external_osc.c deleted file mode 100644 index a504624726..0000000000 --- a/firmware/config/boards/microrusefi/openblt/main_external_osc.c +++ /dev/null @@ -1,296 +0,0 @@ -/************************************************************************************//** -* \brief Bootloader application source file. -* \internal -*---------------------------------------------------------------------------------------- -* C O P Y R I G H T -*---------------------------------------------------------------------------------------- -* Copyright (c) 2021 by Feaser http://www.feaser.com All rights reserved -* -*---------------------------------------------------------------------------------------- -* L I C E N S E -*---------------------------------------------------------------------------------------- -* This file is part of OpenBLT. OpenBLT 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 3 of the License, or (at your option) any later -* version. -* -* OpenBLT 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 have received a copy of the GNU General Public License along with OpenBLT. It -* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy. -* -* \endinternal -****************************************************************************************/ - -/**************************************************************************************** -* Include files -****************************************************************************************/ -#include "boot.h" /* bootloader generic header */ -#ifdef STM32F429xx -#include "stm32f4xx.h" /* STM32 CPU and HAL header */ -#endif -#ifdef STM32F767xx -#include "stm32f7xx.h" /* STM32 CPU and HAL header */ -#endif -#ifdef STM32H743xx -#include "stm32h7xx.h" /* STM32 CPU and HAL header */ -#endif - - -/**************************************************************************************** -* Function prototypes -****************************************************************************************/ -static void Init(void); -static void SystemClock_Config(void); - - -/************************************************************************************//** -** \brief This is the entry point for the bootloader application and is called -** by the reset interrupt vector after the C-startup routines executed. -** \return Program return code. -** -****************************************************************************************/ -int main(void) -{ - /* initialize the microcontroller */ - Init(); - /* initialize the bootloader */ - BootInit(); - - /* start the infinite program loop */ - while (1) - { - /* run the bootloader task */ - BootTask(); - } - - /* program should never get here */ - return 0; -} /*** end of main ***/ - -/************************************************************************************//** -** \brief Interrupt service routine of the timer. -** \return none. -** -****************************************************************************************/ -void SysTick_Handler(void) -{ - /* Increment the tick counter. */ - HAL_IncTick(); - /* Invoke the system tick handler. */ - HAL_SYSTICK_IRQHandler(); -} /*** end of TimerISRHandler ***/ - -/************************************************************************************//** -** \brief Initializes the microcontroller. -** \return none. -** -****************************************************************************************/ -static void Init(void) -{ - /* HAL library initialization */ - HAL_Init(); - /* configure system clock */ - SystemClock_Config(); -} /*** end of Init ***/ - - -/************************************************************************************//** -** \brief System Clock Configuration. This code was created by CubeMX and configures -** the system clock to match the configuration in the bootloader's -** configuration (blt_conf.h), specifically the macros: -** BOOT_CPU_SYSTEM_SPEED_KHZ and BOOT_CPU_XTAL_SPEED_KHZ. -** Note that the Lower Layer drivers were selected in CubeMX for the RCC -** subsystem. -** \return none. -** -****************************************************************************************/ -static void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - - /* Configure the main internal regulator output voltage. */ - __HAL_RCC_PWR_CLK_ENABLE(); - __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); - - /* Initializes the RCC Oscillators according to the specified parameters - * in the RCC_OscInitTypeDef structure. - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; - RCC_OscInitStruct.HSEState = RCC_HSE_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLM = 8; - RCC_OscInitStruct.PLL.PLLN = 336; - RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; - RCC_OscInitStruct.PLL.PLLQ = 7; - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - { - /* Clock configuration incorrect or hardware failure. Hang the system to prevent - * damage. - */ - ASSERT_RT(BLT_FALSE); - } - - /* Initializes the CPU, AHB and APB buses clocks. */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) - { - /* Clock configuration incorrect or hardware failure. Hang the system to prevent - * damage. - */ - ASSERT_RT(BLT_FALSE); - } -} /*** end of SystemClock_Config ***/ - - -/************************************************************************************//** -** \brief Initializes the Global MSP. This function is called from HAL_Init() -** function to perform system level initialization (GPIOs, clock, DMA, -** interrupt). -** \return none. -** -****************************************************************************************/ -void HAL_MspInit(void) -{ - GPIO_InitTypeDef GPIO_InitStruct; - - /* Power and SYSCFG clock enable. */ - __HAL_RCC_PWR_CLK_ENABLE(); - __HAL_RCC_SYSCFG_CLK_ENABLE(); - /* GPIO ports clock enable. */ - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - __HAL_RCC_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOE_CLK_ENABLE(); - __HAL_RCC_GPIOH_CLK_ENABLE(); - - /* Configure PE3 pin for the LED. */ - GPIO_InitStruct.Pin = STATUS_LED_PIN; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(STATUS_LED_PORT, &GPIO_InitStruct); - HAL_GPIO_WritePin(STATUS_LED_PORT, STATUS_LED_PIN, GPIO_PIN_SET); - -#if 0 - /* Configure GPIO pin for (optional) backdoor entry input. */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); -#endif - -#if (BOOT_COM_RS232_ENABLE > 0) - /* UART TX and RX GPIO pin configuration. */ - GPIO_InitStruct.Pin = GPIO_PIN_10 | GPIO_PIN_11; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF7_USART3; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - - /* UART clock enable. */ - __HAL_RCC_USART3_CLK_ENABLE(); -#endif - -#if (BOOT_COM_CAN_ENABLE > 0) - /* CAN TX and RX GPIO pin configuration. */ - GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_12; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF9_CAN2; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - - /* CAN clock enable. */ - /* CAN1 clock needs to be enabled for CAN2 operation */ - __HAL_RCC_CAN1_CLK_ENABLE(); - __HAL_RCC_CAN2_CLK_ENABLE(); -#endif - -#if (BOOT_COM_USB_ENABLE > 0) - /* USB pin configuration. */ - GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - /* USB clock enable. */ - __HAL_RCC_USB_OTG_FS_CLK_ENABLE(); -#endif -} /*** end of HAL_MspInit ***/ - - -/************************************************************************************//** -** \brief DeInitializes the Global MSP. This function is called from HAL_DeInit() -** function to perform system level de-initialization (GPIOs, clock, DMA, -** interrupt). -** \return none. -** -****************************************************************************************/ -void HAL_MspDeInit(void) -{ - /* Reset the RCC clock configuration to the default reset state. */ - HAL_RCC_DeInit(); - - /* Reset GPIO pin for the LED to turn it off. */ - HAL_GPIO_WritePin(STATUS_LED_PORT, STATUS_LED_PIN, GPIO_PIN_RESET); - - /* Deinit used GPIOs. */ - HAL_GPIO_DeInit(STATUS_LED_PORT, STATUS_LED_PIN); - -#if 0 - HAL_GPIO_DeInit(GPIOC, GPIO_PIN_13); -#endif - -#if (BOOT_COM_USB_ENABLE > 0) - /* Deinit used GPIOs. */ - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11); - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_12); - /* USB clock disable. */ - __HAL_RCC_USB_OTG_FS_CLK_DISABLE(); -#endif - -#if (BOOT_COM_CAN_ENABLE > 0) - /* Deinit used GPIOs. */ - HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6); - HAL_GPIO_DeInit(GPIOB, GPIO_PIN_12); - /* CAN clock disable. */ - __HAL_RCC_CAN2_CLK_DISABLE(); -#endif - -#if (BOOT_COM_RS232_ENABLE > 0) - /* Deinit used GPIOs. */ - HAL_GPIO_DeInit(GPIOC, GPIO_PIN_10); - HAL_GPIO_DeInit(GPIOC, GPIO_PIN_11); - /* UART clock disable. */ - __HAL_RCC_USART3_CLK_DISABLE(); -#endif - - /* GPIO ports clock disable. */ - __HAL_RCC_GPIOH_CLK_DISABLE(); - __HAL_RCC_GPIOE_CLK_DISABLE(); - __HAL_RCC_GPIOD_CLK_DISABLE(); - __HAL_RCC_GPIOC_CLK_DISABLE(); - __HAL_RCC_GPIOB_CLK_DISABLE(); - __HAL_RCC_GPIOA_CLK_DISABLE(); - - /* SYSCFG and PWR clock disable. */ - __HAL_RCC_PWR_CLK_DISABLE(); - __HAL_RCC_SYSCFG_CLK_DISABLE(); -} /*** end of HAL_MspDeInit ***/ - - -/*********************************** end of main.c *************************************/ diff --git a/firmware/config/boards/microrusefi/openblt/oblt_board.mk b/firmware/config/boards/microrusefi/openblt/oblt_board.mk deleted file mode 100644 index 6991edf3c9..0000000000 --- a/firmware/config/boards/microrusefi/openblt/oblt_board.mk +++ /dev/null @@ -1,28 +0,0 @@ -#|--------------------------------------------------------------------------------------| -#| Collect project files | -#|--------------------------------------------------------------------------------------| -# Collect all application files in the current directory and its subdirectories, but -# exclude flash-layout.c as this one is directly included in a source file, when used. -PROJ_FILES += $(filter-out $(OPENBLT_BOARD_DIR)/flash_layout.c, $(call rwildcard, $(OPENBLT_BOARD_DIR), *.c *.h *.s)) - -#|--------------------------------------------------------------------------------------| -#| Options for toolchain binaries | -#|--------------------------------------------------------------------------------------| -BRDFLAGS = -DSTM32F429xx - -#|--------------------------------------------------------------------------------------| -#| Specify library files | -#|--------------------------------------------------------------------------------------| -LIBS = - -BRDFLAGS += -DHSE_VALUE=8000000 - -BRDFLAGS += -DSTATUS_LED_PORT=GPIOE -DSTATUS_LED_PIN=GPIO_PIN_3 - -# Frequency of the external crystal oscillator -BRDFLAGS += -DBOOT_CPU_XTAL_SPEED_KHZ=8000 -BRDFLAGS += -DBOOT_CPU_SYSTEM_SPEED_KHZ=168000 -# Select the desired UART peripheral as a zero based index. -BRDFLAGS += -DBOOT_COM_RS232_CHANNEL_INDEX=2 -# \brief Select the desired CAN peripheral as a zero based index. -BRDFLAGS += -DBOOT_COM_CAN_CHANNEL_INDEX=1 \ No newline at end of file diff --git a/firmware/config/boards/prometheus/prometheus-common-config.mk b/firmware/config/boards/prometheus/prometheus-common-config.mk index 7d10130776..e69de29bb2 100644 --- a/firmware/config/boards/prometheus/prometheus-common-config.mk +++ b/firmware/config/boards/prometheus/prometheus-common-config.mk @@ -1,5 +0,0 @@ -# This board uses bootloader -USE_BOOTLOADER = yes - -# include Prometheus bootloader code -BOOTLOADERINC = $(PROJECT_DIR)/bootloader/prometheus/$(PROMETHEUS_BOARD) diff --git a/firmware/config/boards/proteus/openblt/oblt_board.mk b/firmware/config/boards/proteus/openblt/oblt_board.mk deleted file mode 100644 index 985510ce29..0000000000 --- a/firmware/config/boards/proteus/openblt/oblt_board.mk +++ /dev/null @@ -1,37 +0,0 @@ -#|--------------------------------------------------------------------------------------| -#| Collect project files | -#|--------------------------------------------------------------------------------------| -# Collect all application files in the current directory and its subdirectories, but -# exclude flash-layout.c as this one is directly included in a source file, when used. -PROJ_FILES += $(filter-out $(OPENBLT_BOARD_DIR)/flash_layout.c, $(call rwildcard, $(OPENBLT_BOARD_DIR), *.c *.h *.s)) - -#|--------------------------------------------------------------------------------------| -#| Options for toolchain binaries | -#|--------------------------------------------------------------------------------------| -ifeq ($(PROJECT_CPU),ARCH_STM32F4) - BRDFLAGS = -DSTM32F429xx -else ifeq ($(PROJECT_CPU),ARCH_STM32F7) - BRDFLAGS = -DSTM32F767xx -else ifeq ($(PROJECT_CPU),ARCH_STM32H7) - BRDFLAGS = -DSTM32H743xx -endif - -# We use HSI (internal) on proteus. We define HSE (external) only to have compiler happy. -BRDFLAGS += -DHSE_VALUE=8000000 - -#|--------------------------------------------------------------------------------------| -#| Specify library files | -#|--------------------------------------------------------------------------------------| -LIBS = - -BRDFLAGS += -DSTATUS_LED_PORT=GPIOE -DSTATUS_LED_PIN=GPIO_PIN_3 - -# Frequency of the external crystal oscillator -BRDFLAGS += -DBOOT_CPU_XTAL_SPEED_KHZ=8000 -BRDFLAGS += -DBOOT_CPU_SYSTEM_SPEED_KHZ=168000 -# Select the desired UART peripheral as a zero based index. -BRDFLAGS += -DBOOT_COM_RS232_CHANNEL_INDEX=2 -# \brief Select the desired CAN peripheral as a zero based index. -BRDFLAGS += -DBOOT_COM_CAN_CHANNEL_INDEX=0 - -PROJ_FILES += $(PROJECT_DIR)/hw_layer/openblt/main_internal_osc.c diff --git a/firmware/config/boards/subaru_eg33/board.mk b/firmware/config/boards/subaru_eg33/board.mk index 324ce55554..858b9cdddb 100644 --- a/firmware/config/boards/subaru_eg33/board.mk +++ b/firmware/config/boards/subaru_eg33/board.mk @@ -4,12 +4,6 @@ BOARDCPPSRC = $(BOARD_DIR)/board_configuration.cpp # Required include directories BOARDINC += $(BOARD_DIR)/config/controllers/algo -# Override LD script -ifeq ($(USE_BOOTLOADER),yes) - # include Prometheus bootloader code - BOOTLOADERINC = $(PROJECT_DIR)/bootloader/subaru_eg33 -endif - #LED DDEFS += -DLED_CRITICAL_ERROR_BRAIN_PIN=Gpio::G7 @@ -32,9 +26,6 @@ DDEFS += -DUART_USE_WAIT=FALSE #Mass Storage DDEFS += -DEFI_EMBED_INI_MSD=TRUE -#Linker options, flash size -USE_OPT += -Wl,--defsym=FLASH_SIZE=1m - # Shared variables ALLINC += $(BOARDINC) diff --git a/firmware/config/boards/subaru_eg33/openblt/main_external_osc.c b/firmware/config/boards/subaru_eg33/openblt/main_external_osc.c deleted file mode 100644 index 07203fd52d..0000000000 --- a/firmware/config/boards/subaru_eg33/openblt/main_external_osc.c +++ /dev/null @@ -1,270 +0,0 @@ -/************************************************************************************//** -* \brief Bootloader application source file. -* \internal -*---------------------------------------------------------------------------------------- -* C O P Y R I G H T -*---------------------------------------------------------------------------------------- -* Copyright (c) 2021 by Feaser http://www.feaser.com All rights reserved -* -*---------------------------------------------------------------------------------------- -* L I C E N S E -*---------------------------------------------------------------------------------------- -* This file is part of OpenBLT. OpenBLT 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 3 of the License, or (at your option) any later -* version. -* -* OpenBLT 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 have received a copy of the GNU General Public License along with OpenBLT. It -* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy. -* -* \endinternal -****************************************************************************************/ - -/**************************************************************************************** -* Include files -****************************************************************************************/ -#include "boot.h" /* bootloader generic header */ -#ifdef STM32F429xx -#include "stm32f4xx.h" /* STM32 CPU and HAL header */ -#endif -#ifdef STM32F767xx -#include "stm32f7xx.h" /* STM32 CPU and HAL header */ -#endif -#ifdef STM32H743xx -#include "stm32h7xx.h" /* STM32 CPU and HAL header */ -#endif - - -/**************************************************************************************** -* Function prototypes -****************************************************************************************/ -static void Init(void); -static void SystemClock_Config(void); - - -/************************************************************************************//** -** \brief This is the entry point for the bootloader application and is called -** by the reset interrupt vector after the C-startup routines executed. -** \return Program return code. -** -****************************************************************************************/ -int main(void) -{ - /* initialize the microcontroller */ - Init(); - /* initialize the bootloader */ - BootInit(); - - /* start the infinite program loop */ - while (1) - { - /* run the bootloader task */ - BootTask(); - } - - /* program should never get here */ - return 0; -} /*** end of main ***/ - - -/************************************************************************************//** -** \brief Initializes the microcontroller. -** \return none. -** -****************************************************************************************/ -static void Init(void) -{ - /* HAL library initialization */ - HAL_Init(); - /* configure system clock */ - SystemClock_Config(); -} /*** end of Init ***/ - - -/************************************************************************************//** -** \brief System Clock Configuration. This code was created by CubeMX and configures -** the system clock to match the configuration in the bootloader's -** configuration (blt_conf.h), specifically the macros: -** BOOT_CPU_SYSTEM_SPEED_KHZ and BOOT_CPU_XTAL_SPEED_KHZ. -** Note that the Lower Layer drivers were selected in CubeMX for the RCC -** subsystem. -** \return none. -** -****************************************************************************************/ -static void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - - /* Configure the main internal regulator output voltage. */ - __HAL_RCC_PWR_CLK_ENABLE(); - __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); - - /* Initializes the CPU, AHB and APB busses clocks. */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; - RCC_OscInitStruct.HSEState = RCC_HSE_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLM = 25; - RCC_OscInitStruct.PLL.PLLN = 432; - RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; - RCC_OscInitStruct.PLL.PLLQ = 2; - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - { - /* Clock configuration incorrect or hardware failure. Hang the system to prevent - * damage. - */ - ASSERT_RT(BLT_FALSE); - } - - /* Activate the Over-Drive mode. */ - if (HAL_PWREx_EnableOverDrive() != HAL_OK) - { - /* Clock overdrive hardware failure. Hang the system to prevent damage. - */ - ASSERT_RT(BLT_FALSE); - } - - /* Initializes the CPU, AHB and APB busses clocks. */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | - RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_7) != HAL_OK) - { - /* Clock configuration incorrect or hardware failure. Hang the system to prevent - * damage. - */ - ASSERT_RT(BLT_FALSE); - } -} /*** end of SystemClock_Config ***/ - - -/************************************************************************************//** -** \brief Initializes the Global MSP. This function is called from HAL_Init() -** function to perform system level initialization (GPIOs, clock, DMA, -** interrupt). -** \return none. -** -****************************************************************************************/ -void HAL_MspInit(void) -{ - GPIO_InitTypeDef GPIO_InitStruct; - - /* Power and SYSCFG clock enable. */ - __HAL_RCC_PWR_CLK_ENABLE(); - __HAL_RCC_SYSCFG_CLK_ENABLE(); - /* GPIO ports clock enable. */ - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - __HAL_RCC_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOG_CLK_ENABLE(); - -#if (BOOT_COM_RS232_ENABLE > 0) - /* UART clock enable. */ - __HAL_RCC_USART1_CLK_ENABLE(); -#endif -#if (BOOT_COM_CAN_ENABLE > 0) - /* CAN clock enable. */ - __HAL_RCC_CAN1_CLK_ENABLE(); -#endif - - /* Configure GPIO pin for the Red LED. */ - GPIO_InitStruct.Pin = STATUS_LED_PIN; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(STATUS_LED_PORT, &GPIO_InitStruct); - HAL_GPIO_WritePin(STATUS_LED_PORT, STATUS_LED_PIN, GPIO_PIN_RESET); - -#if 0 - /* Configure GPIO pin for (optional) backdoor entry input. */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); -#endif -#if (BOOT_COM_RS232_ENABLE > 0) - /* UART TX and RX GPIO pin configuration. */ - GPIO_InitStruct.Pin = GPIO_PIN_9 | GPIO_PIN_10; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF7_USART1; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); -#endif -#if (BOOT_COM_CAN_ENABLE > 0) - /* CAN enable pin */ - GPIO_InitStruct.Pin = GPIO_PIN_0; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); - HAL_GPIO_WritePin(GPIOG, GPIO_PIN_0, GPIO_PIN_SET); - /* CAN TX and RX GPIO pin configuration. */ - GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF9_CAN1; - HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); -#endif - -} /*** end of HAL_MspInit ***/ - - -/************************************************************************************//** -** \brief DeInitializes the Global MSP. This function is called from HAL_DeInit() -** function to perform system level de-initialization (GPIOs, clock, DMA, -** interrupt). -** \return none. -** -****************************************************************************************/ -void HAL_MspDeInit(void) -{ - /* Reset the RCC clock configuration to the default reset state. */ - HAL_RCC_DeInit(); - - /* Reset GPIO pin for the LED to turn it off. */ - HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET); - - /* Deinit used GPIOs. */ - HAL_GPIO_DeInit(GPIOB, GPIO_PIN_7); - HAL_GPIO_DeInit(GPIOC, GPIO_PIN_13); - -#if (BOOT_COM_CAN_ENABLE > 0) - /* Deinit used GPIOs. */ - HAL_GPIO_DeInit(GPIOD, GPIO_PIN_0); - HAL_GPIO_DeInit(GPIOD, GPIO_PIN_1); - /* CAN clock disable. */ - __HAL_RCC_CAN1_CLK_DISABLE(); -#endif -#if (BOOT_COM_RS232_ENABLE > 0) - /* Deinit used GPIOs. */ - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9); - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_10); - /* UART clock disable. */ - __HAL_RCC_USART1_CLK_DISABLE(); -#endif - - /* GPIO ports clock disable. */ - __HAL_RCC_GPIOG_CLK_DISABLE(); - __HAL_RCC_GPIOD_CLK_DISABLE(); - __HAL_RCC_GPIOC_CLK_DISABLE(); - __HAL_RCC_GPIOB_CLK_DISABLE(); - __HAL_RCC_GPIOA_CLK_DISABLE(); - - /* SYSCFG and PWR clock disable. */ - __HAL_RCC_PWR_CLK_DISABLE(); - __HAL_RCC_SYSCFG_CLK_DISABLE(); -} /*** end of HAL_MspDeInit ***/ - - -/*********************************** end of main.c *************************************/ diff --git a/firmware/config/boards/subaru_eg33/openblt/oblt_board.mk b/firmware/config/boards/subaru_eg33/openblt/oblt_board.mk deleted file mode 100644 index 24d73b9ba1..0000000000 --- a/firmware/config/boards/subaru_eg33/openblt/oblt_board.mk +++ /dev/null @@ -1,25 +0,0 @@ -#|--------------------------------------------------------------------------------------| -#| Collect project files | -#|--------------------------------------------------------------------------------------| -# Collect all application files in the current directory and its subdirectories, but -# exclude flash-layout.c as this one is directly included in a source file, when used. -PROJ_FILES += $(filter-out $(OPENBLT_BOARD_DIR)/flash_layout.c, $(call rwildcard, $(OPENBLT_BOARD_DIR), *.c *.h *.s)) - -#|--------------------------------------------------------------------------------------| -#| Specific options for toolchain binaries | -#|--------------------------------------------------------------------------------------| -BRDFLAGS = -DSTM32F767xx -DHSE_VALUE=25000000 - -#|--------------------------------------------------------------------------------------| -#| Specify library files | -#|--------------------------------------------------------------------------------------| -LIBS = - -BRDFLAGS += -DSTATUS_LED_PORT=GPIOG -DSTATUS_LED_PIN=GPIO_PIN_8 - -# Frequency of the external crystal oscillator -BRDFLAGS += -DBOOT_CPU_XTAL_SPEED_KHZ=25000 -BRDFLAGS += -DBOOT_CPU_SYSTEM_SPEED_KHZ=216000 -BRDFLAGS += -DBOOT_COM_RS232_CHANNEL_INDEX=0 -# \brief Select the desired CAN peripheral as a zero based index. -BRDFLAGS += -DBOOT_COM_CAN_CHANNEL_INDEX=0 \ No newline at end of file diff --git a/firmware/config/engines/custom_engine.cpp b/firmware/config/engines/custom_engine.cpp index b894f9e3c7..dc378e2f99 100644 --- a/firmware/config/engines/custom_engine.cpp +++ b/firmware/config/engines/custom_engine.cpp @@ -267,69 +267,6 @@ void setEtbTestConfiguration() { // see also setDefaultEtbBiasCurve } -#if HW_FRANKENSO && EFI_PROD_CODE - - -// todo: page_size + 2 -// todo: CC_SECTION(".nocache") -static uint8_t write_buf[EE_PAGE_SIZE + 10]; - - -#define EEPROM_WRITE_TIME_MS 10 /* time to write one page in ms. Consult datasheet! */ - -/** - * https://www.onsemi.com/pdf/datasheet/cat24c32-d.pdf - * CAT24C32 - */ -static const I2CEepromFileConfig i2cee = { - .barrier_low = 0, - .barrier_hi = EE_SIZE - 1, - .size = EE_SIZE, - .pagesize = EE_PAGE_SIZE, - .write_time = TIME_MS2I(EEPROM_WRITE_TIME_MS), - .i2cp = &EE_U2CD, - .addr = 0x50, - .write_buf = write_buf -}; - -extern EepromDevice eepdev_24xx; -static I2CEepromFileStream ifile; - -/** - * set engine_type 61 - */ -void setEepromTestConfiguration() { - engineConfiguration->useEeprom = true; - engineConfiguration->ignitionPins[2] = Gpio::Unassigned; - // dirty hack - brain_pin_markUnused(Gpio::C9); - efiSetPadMode("I2C", Gpio::A8, PAL_MODE_ALTERNATE(4)); - efiSetPadMode("I2C", Gpio::C9, PAL_MODE_ALTERNATE(4)); - - - addConsoleActionI("ee_read", - [](int value) { - if (ifile.vmt != eepdev_24xx.efsvmt) { - EepromFileOpen((EepromFileStream *)&ifile, (EepromFileConfig *)&i2cee, &eepdev_24xx); - } - - ifile.vmt->setposition(&ifile, 0); -// chFileStreamSeek(&ifile, 0); - int v2; - streamRead(&ifile, (uint8_t *)&v2, 4); - efiPrintf("EE has %d", v2); - - v2 += 3; - ifile.vmt->setposition(&ifile, 0); - streamWrite(&ifile, (uint8_t *)&v2, 4); - - - }); - - -} -#endif //HW_FRANKENSO - // F407 discovery void setL9779TestConfiguration() { // enable_spi 3 diff --git a/firmware/config/engines/custom_engine.h b/firmware/config/engines/custom_engine.h index 2864566126..f03146353e 100644 --- a/firmware/config/engines/custom_engine.h +++ b/firmware/config/engines/custom_engine.h @@ -16,8 +16,6 @@ void setEtbTestConfiguration(); void setTle8888TestConfiguration(); void setL9779TestConfiguration(); -void setEepromTestConfiguration(); - void mreBoardNewTest(); void mreBCM(); diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index e73f3e49e2..0b9f228700 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -848,11 +848,6 @@ void resetConfigurationExt(configuration_callback_t boardCallback, engine_type_e case engine_type_e::L9779_BENCH_ENGINE: setL9779TestConfiguration(); break; - case engine_type_e::EEPROM_BENCH_ENGINE: -#if EFI_PROD_CODE - setEepromTestConfiguration(); -#endif - break; case engine_type_e::TLE8888_BENCH_ENGINE: setTle8888TestConfiguration(); break; diff --git a/firmware/controllers/algo/engine_types.h b/firmware/controllers/algo/engine_types.h index 55fae08581..1be2f49f1b 100644 --- a/firmware/controllers/algo/engine_types.h +++ b/firmware/controllers/algo/engine_types.h @@ -139,8 +139,6 @@ enum class engine_type_e : uint32_t { L9779_BENCH_ENGINE = 60, - EEPROM_BENCH_ENGINE = 61, - MRE_VW_B6 = 62, PROTEUS_BMW_M73 = 63, @@ -209,6 +207,7 @@ enum class engine_type_e : uint32_t { ET_UNUSED_33 = 33, ET_UNUSED_43 = 43, ET_UNUSED_57 = 57, + ET_UNUSED_61 = 61, /** * this configuration has as few pins configured as possible diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index 8fd9a65be5..9be26817b0 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -70,10 +70,6 @@ #include "AdcConfiguration.h" #endif /* HAL_USE_ADC */ -#if defined(EFI_BOOTLOADER_INCLUDE_CODE) -#include "bootloader/bootloader.h" -#endif /* EFI_BOOTLOADER_INCLUDE_CODE */ - #include "periodic_task.h" @@ -666,11 +662,6 @@ int getRusEfiVersion(void) { return 123; // this is here to make the compiler happy about the unused array if (UNUSED_CCM_SIZE[0] * 0 != 0) return 3211; // this is here to make the compiler happy about the unused array -#if defined(EFI_BOOTLOADER_INCLUDE_CODE) - // make bootloader code happy too - if (initBootloader() != 0) - return 123; -#endif /* EFI_BOOTLOADER_INCLUDE_CODE */ return VCS_DATE; } #endif /* EFI_UNIT_TEST */ diff --git a/firmware/main_hardfault.c b/firmware/hw_layer/main_hardfault.c similarity index 100% rename from firmware/main_hardfault.c rename to firmware/hw_layer/main_hardfault.c diff --git a/firmware/main_hardfault_asm.S b/firmware/hw_layer/main_hardfault_asm.S similarity index 100% rename from firmware/main_hardfault_asm.S rename to firmware/hw_layer/main_hardfault_asm.S diff --git a/firmware/hw_layer/openblt/blt_conf.h b/firmware/hw_layer/openblt/blt_conf.h index 94b9473b2a..d868067897 100644 --- a/firmware/hw_layer/openblt/blt_conf.h +++ b/firmware/hw_layer/openblt/blt_conf.h @@ -44,6 +44,10 @@ * de-initialize application specific parts, for example to stop blinking an LED, etc. */ +/** \brief Frequency of the external crystal oscillator. */ +#define BOOT_CPU_XTAL_SPEED_KHZ (1000) +/** \brief Desired system speed. */ +#define BOOT_CPU_SYSTEM_SPEED_KHZ (1000) /** \brief Motorola or Intel style byte ordering. */ #define BOOT_CPU_BYTE_ORDER_MOTOROLA (0) /** \brief Enable/disable hook function call right before user program start. */ @@ -67,7 +71,7 @@ * */ /** \brief Enable/disable CAN transport layer. */ -#define BOOT_COM_CAN_ENABLE (1) +#define BOOT_COM_CAN_ENABLE (0) /** \brief Configure the desired CAN baudrate. */ #define BOOT_COM_CAN_BAUDRATE (500000) /** \brief Configure CAN message ID target->host. */ @@ -92,9 +96,12 @@ /** \brief Configure the desired communication speed. */ #define BOOT_COM_RS232_BAUDRATE (115200) /** \brief Configure number of bytes in the target->host data packet. */ -#define BOOT_COM_RS232_TX_MAX_DATA (64) +#define BOOT_COM_RS232_TX_MAX_DATA (200) /** \brief Configure number of bytes in the host->target data packet. */ -#define BOOT_COM_RS232_RX_MAX_DATA (64) +#define BOOT_COM_RS232_RX_MAX_DATA (200) + +/** only USB supported, this is ignored but required */ +#define BOOT_COM_RS232_CHANNEL_INDEX 0 /**************************************************************************************** @@ -130,22 +137,6 @@ /** \brief Enable/disable hooks functions to override the user program checksum handling. */ #define BOOT_NVM_CHECKSUM_HOOKS_ENABLE (0) - -/**************************************************************************************** -* F L A S H M E M O R Y D R I V E R C O N F I G U R A T I O N -****************************************************************************************/ -/** \brief Enable support for a custom flash layout table. It is located in - * flash_layout.c. This was done because the default flashLayout[] table - * in the bootloader's core defines flash map for single bank mode. - * RusEFI uses dual bank mode. - */ -#define BOOT_FLASH_CUSTOM_LAYOUT_ENABLE (1) - -/** \brief Use one of 'reserved' IRQ vectors at the beginig on vector table. - */ -#define BOOT_FLASH_VECTOR_TABLE_CS_OFFSET (0x1C) - - /**************************************************************************************** * W A T C H D O G D R I V E R C O N F I G U R A T I O N ****************************************************************************************/ diff --git a/firmware/hw_layer/openblt/flash_layout.c b/firmware/hw_layer/openblt/flash_layout.c deleted file mode 100644 index d73189314e..0000000000 --- a/firmware/hw_layer/openblt/flash_layout.c +++ /dev/null @@ -1,29 +0,0 @@ - -/* Define STM32F4, STM32F7 or STM32F765 flash layout in dual bank mode. Only first bank is defined */ - -/* This file is included in another .c file. So it is ok to have static and no users here */ -static const tFlashSector flashLayout[] = -{ - /* space is reserved for a bootloader configuration with all supported communication - * interfaces enabled. when for example only UART is needed, then the space required - * for the bootloader can be made a lot smaller here. - */ - /* { 0x08000000, 0x04000, 0 }, flash sector 0 - reserved for bootloader */ - /* { 0x08004000, 0x04000, 1 }, flash sector 1 - reserved for bootloader */ - { 0x08008000, 0x08000, 2}, /* flash sector 2 - 16kb */ - { 0x0800c000, 0x08000, 3}, /* flash sector 3 - 16kb */ - { 0x08010000, 0x10000, 4}, /* flash sector 4 - 64kb */ - { 0x08020000, 0x20000, 5}, /* flash sector 5 - 128kb */ - { 0x08040000, 0x20000, 6}, /* flash sector 6 - 128kb */ - { 0x08060000, 0x20000, 7}, /* flash sector 7 - 128kb */ -#if (BOOT_NVM_SIZE_KB > 1024) - { 0x08080000, 0x20000, 8}, /* flash sector 8 - 128kb */ - { 0x080a0000, 0x20000, 9}, /* flash sector 9 - 128kb */ - { 0x080c0000, 0x20000, 10}, /* flash sector 10 - 128kb */ - { 0x080e0000, 0x20000, 11}, /* flash sector 11 - 128kb */ -#endif - /* Bank #2 is not defined */ -#if (BOOT_NVM_SIZE_KB > 2048) -#error "BOOT_NVM_SIZE_KB > 2048 is currently not supported." -#endif -}; \ No newline at end of file diff --git a/firmware/hw_layer/openblt/main_internal_osc.c b/firmware/hw_layer/openblt/main_internal_osc.c deleted file mode 100644 index abb58d2867..0000000000 --- a/firmware/hw_layer/openblt/main_internal_osc.c +++ /dev/null @@ -1,299 +0,0 @@ -/************************************************************************************//** -* \file Demo/ARMCM4_STM32F4_Nucleo_F429ZI_GCC/Boot/main.c -* \brief Bootloader application source file. -* \ingroup Boot_ARMCM4_STM32F4_Nucleo_F429ZI_GCC -* \internal -*---------------------------------------------------------------------------------------- -* C O P Y R I G H T -*---------------------------------------------------------------------------------------- -* Copyright (c) 2021 by Feaser http://www.feaser.com All rights reserved -* -*---------------------------------------------------------------------------------------- -* L I C E N S E -*---------------------------------------------------------------------------------------- -* This file is part of OpenBLT. OpenBLT 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 3 of the License, or (at your option) any later -* version. -* -* OpenBLT 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 have received a copy of the GNU General Public License along with OpenBLT. It -* should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy. -* -* \endinternal -****************************************************************************************/ - -/**************************************************************************************** -* Include files -****************************************************************************************/ -#include "boot.h" /* bootloader generic header */ -#include "shared_params.h" /* Shared parameters header */ -#ifdef STM32F429xx -#include "stm32f4xx.h" /* STM32 CPU and HAL header */ -#endif -#ifdef STM32F767xx -#include "stm32f7xx.h" /* STM32 CPU and HAL header */ -#endif -#ifdef STM32H743xx -#include "stm32h7xx.h" /* STM32 CPU and HAL header */ -#endif - - -/**************************************************************************************** -* Function prototypes -****************************************************************************************/ -static void Init(void); -static void SystemClock_Config(void); - - -/************************************************************************************//** -** \brief This is the entry point for the bootloader application and is called -** by the reset interrupt vector after the C-startup routines executed. -** \return Program return code. -** -****************************************************************************************/ -int main(void) -{ - /* initialize the microcontroller */ - Init(); - /* initialize the shared parameters module */ - SharedParamsInit(); - /* initialize the bootloader */ - BootInit(); - - /* start the infinite program loop */ - while (1) - { - /* run the bootloader task */ - BootTask(); - } - - /* program should never get here */ - return 0; -} /*** end of main ***/ - -/************************************************************************************//** -** \brief Interrupt service routine of the timer. -** \return none. -** -****************************************************************************************/ -void SysTick_Handler(void) -{ - /* Increment the tick counter. */ - HAL_IncTick(); - /* Invoke the system tick handler. */ - HAL_SYSTICK_IRQHandler(); -} /*** end of TimerISRHandler ***/ - -/************************************************************************************//** -** \brief Initializes the microcontroller. -** \return none. -** -****************************************************************************************/ -static void Init(void) -{ - /* HAL library initialization */ - HAL_Init(); - /* configure system clock */ - SystemClock_Config(); -} /*** end of Init ***/ - - -/************************************************************************************//** -** \brief System Clock Configuration. This code was created by CubeMX and configures -** the system clock to match the configuration in the bootloader's -** configuration (blt_conf.h), specifically the macros: -** BOOT_CPU_SYSTEM_SPEED_KHZ and BOOT_CPU_XTAL_SPEED_KHZ. -** Note that the Lower Layer drivers were selected in CubeMX for the RCC -** subsystem. -** \return none. -** -****************************************************************************************/ -static void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - - /* Configure the main internal regulator output voltage. */ - __HAL_RCC_PWR_CLK_ENABLE(); - __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); - - /* Initializes the RCC Oscillators according to the specified parameters - * in the RCC_OscInitTypeDef structure. - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; - RCC_OscInitStruct.PLL.PLLM = 16; - RCC_OscInitStruct.PLL.PLLN = 336; - RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; - RCC_OscInitStruct.PLL.PLLQ = 7; - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - { - /* Clock configuration incorrect or hardware failure. Hang the system to prevent - * damage. - */ - ASSERT_RT(BLT_FALSE); - } - - /* Initializes the CPU, AHB and APB buses clocks. */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) - { - /* Clock configuration incorrect or hardware failure. Hang the system to prevent - * damage. - */ - ASSERT_RT(BLT_FALSE); - } -} /*** end of SystemClock_Config ***/ - - -/************************************************************************************//** -** \brief Initializes the Global MSP. This function is called from HAL_Init() -** function to perform system level initialization (GPIOs, clock, DMA, -** interrupt). -** \return none. -** -****************************************************************************************/ -void HAL_MspInit(void) -{ - GPIO_InitTypeDef GPIO_InitStruct; - - /* Power and SYSCFG clock enable. */ - __HAL_RCC_PWR_CLK_ENABLE(); - __HAL_RCC_SYSCFG_CLK_ENABLE(); - /* GPIO ports clock enable. */ - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - __HAL_RCC_GPIOC_CLK_ENABLE(); - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOE_CLK_ENABLE(); - __HAL_RCC_GPIOH_CLK_ENABLE(); - - /* Configure PE3 pin for the LED. */ - GPIO_InitStruct.Pin = GPIO_PIN_3; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_SET); - -#if 0 - /* Configure GPIO pin for (optional) backdoor entry input. */ - GPIO_InitStruct.Pin = GPIO_PIN_13; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); -#endif - -#if (BOOT_COM_RS232_ENABLE > 0) - /* UART TX and RX GPIO pin configuration. */ - GPIO_InitStruct.Pin = GPIO_PIN_5 | GPIO_PIN_6; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF7_USART2; - HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - - /* UART clock enable. */ - __HAL_RCC_USART2_CLK_ENABLE(); -#endif - -#if (BOOT_COM_CAN_ENABLE > 0) - /* CAN TX and RX GPIO pin configuration. */ - GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF9_CAN1; - HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - - /* CAN clock enable. */ - __HAL_RCC_CAN1_CLK_ENABLE(); -#endif - -#if (BOOT_COM_USB_ENABLE > 0) - /* USB pin configuration. */ - GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - GPIO_InitStruct.Alternate = GPIO_AF10_OTG_FS; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - /* USB clock enable. */ - __HAL_RCC_USB_OTG_FS_CLK_ENABLE(); -#endif -} /*** end of HAL_MspInit ***/ - - -/************************************************************************************//** -** \brief DeInitializes the Global MSP. This function is called from HAL_DeInit() -** function to perform system level de-initialization (GPIOs, clock, DMA, -** interrupt). -** \return none. -** -****************************************************************************************/ -void HAL_MspDeInit(void) -{ - /* Reset the RCC clock configuration to the default reset state. */ - HAL_RCC_DeInit(); - - /* Reset GPIO pin for the LED to turn it off. */ - HAL_GPIO_WritePin(GPIOE, GPIO_PIN_3, GPIO_PIN_RESET); - - /* Deinit used GPIOs. */ - HAL_GPIO_DeInit(GPIOE, GPIO_PIN_3); - -#if 0 - HAL_GPIO_DeInit(GPIOC, GPIO_PIN_13); -#endif - -#if (BOOT_COM_USB_ENABLE > 0) - /* Deinit used GPIOs. */ - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11); - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_12); - /* USB clock disable. */ - __HAL_RCC_USB_OTG_FS_CLK_DISABLE(); -#endif - -#if (BOOT_COM_CAN_ENABLE > 0) - /* Deinit used GPIOs. */ - HAL_GPIO_DeInit(GPIOD, GPIO_PIN_0); - HAL_GPIO_DeInit(GPIOD, GPIO_PIN_1); - /* CAN clock disable. */ - __HAL_RCC_CAN1_CLK_DISABLE(); -#endif - -#if (BOOT_COM_RS232_ENABLE > 0) - /* Deinit used GPIOs. */ - HAL_GPIO_DeInit(GPIOD, GPIO_PIN_5); - HAL_GPIO_DeInit(GPIOD, GPIO_PIN_6); - /* UART clock disable. */ - __HAL_RCC_USART2_CLK_DISABLE(); -#endif - - /* GPIO ports clock disable. */ - __HAL_RCC_GPIOH_CLK_DISABLE(); - __HAL_RCC_GPIOE_CLK_DISABLE(); - __HAL_RCC_GPIOD_CLK_DISABLE(); - __HAL_RCC_GPIOC_CLK_DISABLE(); - __HAL_RCC_GPIOB_CLK_DISABLE(); - __HAL_RCC_GPIOA_CLK_DISABLE(); - - /* SYSCFG and PWR clock disable. */ - __HAL_RCC_PWR_CLK_DISABLE(); - __HAL_RCC_SYSCFG_CLK_DISABLE(); -} /*** end of HAL_MspDeInit ***/ - - -/*********************************** end of main.c *************************************/ diff --git a/firmware/hw_layer/openblt/openblt.mk b/firmware/hw_layer/openblt/openblt.mk deleted file mode 100644 index 620ef6a13a..0000000000 --- a/firmware/hw_layer/openblt/openblt.mk +++ /dev/null @@ -1,230 +0,0 @@ -#**************************************************************************************** -#| Description: Makefile for GNU ARM Embedded toolchain. -#| File Name: makefile -#| -#|--------------------------------------------------------------------------------------- -#| C O P Y R I G H T -#|--------------------------------------------------------------------------------------- -#| Copyright (c) 2021 by Feaser http://www.feaser.com All rights reserved -#| -#|--------------------------------------------------------------------------------------- -#| L I C E N S E -#|--------------------------------------------------------------------------------------- -#| This file is part of OpenBLT. OpenBLT 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 3 of the License, or (at your option) any later -#| version. -#| -#| OpenBLT 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 have received a copy of the GNU General Public License along with OpenBLT. It -#| should be located in ".\Doc\license.html". If not, contact Feaser to obtain a copy. -#| -#**************************************************************************************** -SHELL = sh - -#|--------------------------------------------------------------------------------------| -#| Configure project name | -#|--------------------------------------------------------------------------------------| -PROJ_NAME=openblt_$(PROJECT_BOARD) - -#|--------------------------------------------------------------------------------------| -#| Configure tool path | -#|--------------------------------------------------------------------------------------| -# Configure the path to where the arm-none-eabi-gcc program is located. If the program -# is available on the path, then the TOOL_PATH variable can be left empty. -# Make sure to add a fordward slash at the end. Note that on Windows it should be in the -# 8.3 short pathname format with forward slashes. To obtain the pathname in the 8.3 -# format, open the directory in the Windows command prompt and run the following command: -# cmd /c for %A in ("%cd%") do @echo %~sA -TOOL_PATH=$(TRGT) - -#|--------------------------------------------------------------------------------------| -#| Configure sources paths | -#|--------------------------------------------------------------------------------------| -PROJECT_DIR=. -OPENBLT_TRGT_DIR=$(PROJECT_DIR)/ext/openblt/Target -OPENBLT_BOARD_DIR=$(BOARD_DIR)/openblt -ifeq ($(PROJECT_CPU),ARCH_STM32F4) - OPENBLT_PORT_DIR=$(PROJECT_DIR)/hw_layer/ports/stm32/stm32f4/openblt -else ifeq ($(PROJECT_CPU),ARCH_STM32F7) - OPENBLT_PORT_DIR=$(PROJECT_DIR)/hw_layer/ports/stm32/stm32f7/openblt -else ifeq ($(PROJECT_CPU),ARCH_STM32H7) - OPENBLT_PORT_DIR=$(PROJECT_DIR)/hw_layer/ports/stm32/stm32h7/openblt -endif - -#|--------------------------------------------------------------------------------------| -#| Collect helpers | -#|--------------------------------------------------------------------------------------| -# Recursive wildcard function implementation. Example usages: -# $(call rwildcard, , *.c *.h) -# --> Returns all *.c and *.h files in the current directory and below -# $(call rwildcard, /lib/, *.c) -# --> Returns all *.c files in the /lib directory and below -rwildcard = $(strip $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))) - -#|--------------------------------------------------------------------------------------| -#| Include port and board files | -#|--------------------------------------------------------------------------------------| -PROJ_FILES= -include $(OPENBLT_PORT_DIR)/port.mk -include $(OPENBLT_BOARD_DIR)/oblt_board.mk - -#|--------------------------------------------------------------------------------------| -#| Collect bootloader core files | -#|--------------------------------------------------------------------------------------| -PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/*.c) -PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/*.h) - -PROJ_FILES += $(PROJECT_DIR)/hw_layer/openblt/blt_conf.h -PROJ_FILES += $(PROJECT_DIR)/hw_layer/openblt/hooks.c -PROJ_FILES += $(PROJECT_DIR)/hw_layer/openblt/led.c -PROJ_FILES += $(PROJECT_DIR)/hw_layer/openblt/led.h -PROJ_FILES += $(PROJECT_DIR)/hw_layer/openblt/shared_params.c -PROJ_FILES += $(PROJECT_DIR)/hw_layer/openblt/shared_params.h - -# CPU-dependent sources -ifeq ($(PROJECT_CPU),ARCH_STM32F4) - # Collect bootloader port files - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM4_STM32F4/*.c) - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM4_STM32F4/*.h) - # Collect bootloader port compiler specific files - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM4_STM32F4/GCC/*.c) - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM4_STM32F4/GCC/*.h) - # LD file - LFLAGS = -Wl,-script="$(PROJECT_DIR)/hw_layer/ports/stm32/stm32f4/openblt/STM32F4xx.ld" - # Port specific options - PORTFLAGS += -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -else ifeq ($(PROJECT_CPU),ARCH_STM32F7) - # Collect bootloader port files - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32F7/*.c) - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32F7/*.h) - # Collect bootloader port compiler specific files - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32F7/GCC/*.c) - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32F7/GCC/*.h) - # LD file - LFLAGS += -Wl,-script="$(PROJECT_DIR)/hw_layer/ports/stm32/stm32f7/openblt/STM32F7xx.ld" - # Port specific options - PORTFLAGS = -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-sp-d16 -else ifeq ($(PROJECT_CPU),ARCH_STM32H7) - # Collect bootloader port files - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32H7/*.c) - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32H7/*.h) - # Collect bootloader port compiler specific files - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32H7/GCC/*.c) - PROJ_FILES += $(wildcard $(OPENBLT_TRGT_DIR)/Source/ARMCM7_STM32H7/GCC/*.h) - # LD file - LFLAGS = -Wl,-script="$(PROJECT_DIR)/hw_layer/ports/stm32/stm32h7/openblt/STM32H7xx.ld" - # Port specific options - PORTFLAGS += -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-d16 -endif - -OPTFLAGS = -Os -STDFLAGS = -fno-strict-aliasing -STDFLAGS += -fdata-sections -ffunction-sections -Wall -g3 -CFLAGS = $(PORTFLAGS) $(BRDFLAGS) $(STDFLAGS) $(OPTFLAGS) -CFLAGS += -DUSE_FULL_LL_DRIVER -DUSE_HAL_DRIVER -CFLAGS += $(INC_PATH) -AFLAGS = $(CFLAGS) -LFLAGS += $(PORTFLAGS) $(BRDFLAGS) $(STDFLAGS) $(OPTFLAGS) - -#|--------------------------------------------------------------------------------------| -#| Common options for toolchain binaries | -#|--------------------------------------------------------------------------------------| -LFLAGS += -Wl,-Map=$(BIN_PATH)/$(PROJ_NAME).map -LFLAGS += -specs=nano.specs -Wl,--gc-sections $(LIB_PATH) -OFLAGS = -O srec -ODFLAGS = -x -SZFLAGS = -B -d -RMFLAGS = -f - -#|--------------------------------------------------------------------------------------| -#| Toolchain binaries | -#|--------------------------------------------------------------------------------------| -RM = rm -CC = $(TOOL_PATH)arm-none-eabi-gcc -LN = $(TOOL_PATH)arm-none-eabi-gcc -OC = $(TOOL_PATH)arm-none-eabi-objcopy -OD = $(TOOL_PATH)arm-none-eabi-objdump -AS = $(TOOL_PATH)arm-none-eabi-gcc -SZ = $(TOOL_PATH)arm-none-eabi-size - -#|--------------------------------------------------------------------------------------| -#| Filter project files -#|--------------------------------------------------------------------------------------| -PROJ_ASRCS = $(filter %.s,$(foreach file,$(PROJ_FILES),$(notdir $(file)))) -PROJ_CSRCS = $(filter %.c,$(foreach file,$(PROJ_FILES),$(notdir $(file)))) -PROJ_CHDRS = $(filter %.h,$(foreach file,$(PROJ_FILES),$(notdir $(file)))) - -#|--------------------------------------------------------------------------------------| -#| Set important path variables | -#|--------------------------------------------------------------------------------------| -VPATH = $(foreach path,$(sort $(foreach file,$(PROJ_FILES),$(dir $(file)))) $(subst \,/,$(OBJ_PATH)),$(path) :) -OBJ_PATH = $(PROJECT_DIR)/build-openblt/obj-$(PROJECT_BOARD)/ -BIN_PATH = $(PROJECT_DIR)/build-openblt -INC_PATH = $(patsubst %/,%,$(patsubst %,-I%,$(sort $(foreach file,$(filter %.h,$(PROJ_FILES)),$(dir $(file)))))) -LIB_PATH = - -#|--------------------------------------------------------------------------------------| -#| Define targets | -#|--------------------------------------------------------------------------------------| -AOBJS := $(patsubst %.s,%.o,$(PROJ_ASRCS)) -AOBJS := $(addprefix $(OBJ_PATH),$(AOBJS)) -COBJS := $(patsubst %.c,%.o,$(PROJ_CSRCS)) -COBJS := $(addprefix $(OBJ_PATH),$(COBJS)) - -#|--------------------------------------------------------------------------------------| -#| Make ALL | -#|--------------------------------------------------------------------------------------| -.PHONY: all -all: $(BIN_PATH)/$(PROJ_NAME).srec $(BIN_PATH)/$(PROJ_NAME).hex $(BIN_PATH)/$(PROJ_NAME).bin - -$(BIN_PATH)/$(PROJ_NAME).srec : $(BIN_PATH)/$(PROJ_NAME).elf - @mkdir -p $(@D) - @$(OC) $< $(OFLAGS) $@ - @$(OD) $(ODFLAGS) $< > $(BIN_PATH)/$(PROJ_NAME).map - @echo +++ Summary of memory consumption: - @$(SZ) $(SZFLAGS) $< - @echo +++ Build complete [$(notdir $@)] - -$(BIN_PATH)/$(PROJ_NAME).hex : $(BIN_PATH)/$(PROJ_NAME).elf - @mkdir -p $(@D) - @$(OC) -O ihex $< $@ - -$(BIN_PATH)/$(PROJ_NAME).bin : $(BIN_PATH)/$(PROJ_NAME).elf - @mkdir -p $(@D) - @$(OC) -O binary $< $@ - -$(BIN_PATH)/$(PROJ_NAME).elf : $(OBJ_PATH) $(AOBJS) $(COBJS) - @mkdir -p $(@D) - @echo +++ Linking [$(notdir $@)] - @echo $(patsubst %.o,$(OBJ_PATH)%.o,$(^F)) - @$(LN) $(LFLAGS) -o $@ $(patsubst %.o,$(OBJ_PATH)%.o,$(^F)) $(LIBS) - -#|--------------------------------------------------------------------------------------| -#| Compile and assemble | -#|--------------------------------------------------------------------------------------| -$(OBJ_PATH)%.o: %.s - @echo +++ Assembling [$<] to [$@] - @$(AS) $(AFLAGS) -c $< -o $@ - -$(OBJ_PATH)%.o: %.c - @echo +++ Compiling [$<] to [$@] - @$(CC) $(CFLAGS) -c $< -o $@ - -$(OBJ_PATH): - @echo AOBJS = $(AOBJS) - @echo COBJS = $(COBJS) - @mkdir -p $(OBJ_PATH) - -#|--------------------------------------------------------------------------------------| -#| Make CLEAN | -#|--------------------------------------------------------------------------------------| -.PHONY: clean -clean: - @echo +++ Cleaning build environment - @$(RM) $(RMFLAGS) -r $(OBJ_PATH) - @$(RM) $(RMFLAGS) -r $(BIN_PATH) - @echo +++ Clean complete \ No newline at end of file diff --git a/firmware/hw_layer/ports/rusefi_halconf.h b/firmware/hw_layer/ports/rusefi_halconf.h index f1ad654ad8..c55cd10cf9 100644 --- a/firmware/hw_layer/ports/rusefi_halconf.h +++ b/firmware/hw_layer/ports/rusefi_halconf.h @@ -30,7 +30,9 @@ #endif // If USB and File logging, enable USB Mass Storage & community +#ifndef HAL_USE_USB_MSD #define HAL_USE_USB_MSD (EFI_FILE_LOGGING && EFI_USB_SERIAL) +#endif // HAL_USE_USB_MSD #define HAL_USE_COMMUNITY (EFI_FILE_LOGGING && EFI_USB_SERIAL) || HAL_USE_EEPROM #define USB_MSD_LUN_COUNT 2 diff --git a/firmware/hw_layer/ports/stm32/stm32_adc_v4.cpp b/firmware/hw_layer/ports/stm32/stm32_adc_v4.cpp index 980920f972..01287e3974 100644 --- a/firmware/hw_layer/ports/stm32/stm32_adc_v4.cpp +++ b/firmware/hw_layer/ports/stm32/stm32_adc_v4.cpp @@ -7,6 +7,9 @@ */ #include "pch.h" + +#if HAL_USE_ADC + #include "mpu_util.h" #include "map_averaging.h" @@ -185,3 +188,5 @@ adcsample_t getFastAdc(FastAdcToken token) { return fastSampleBuffer[token]; } + +#endif // HAL_USE_ADC diff --git a/firmware/hw_layer/ports/stm32/stm32f4/STM32F4.ld b/firmware/hw_layer/ports/stm32/stm32f4/STM32F4.ld index 7fc0477a83..dc18b81844 100644 --- a/firmware/hw_layer/ports/stm32/stm32f4/STM32F4.ld +++ b/firmware/hw_layer/ports/stm32/stm32f4/STM32F4.ld @@ -29,13 +29,19 @@ RAM3_SIZE = DEFINED(STM32F4_HAS_SRAM3) ? 64k : 0; /* Only STM32F429I-Discovery has external SDRAM */ SDRAM_SIZE = DEFINED(STM32_HAS_SDRAM) ? 8M : 0; +/* change address & length if bootloader */ +bootloader_size = 32k; +flash_start = 0x08000000 + (DEFINED(HAS_BOOTLOADER) ? bootloader_size : 0); +flash_size = DEFINED(IS_BOOTLOADER) ? bootloader_size : 768k; +image_size = DEFINED(HAS_BOOTLOADER) ? (flash_size - bootloader_size) : flash_size; + /* OpenBLT <-> main FW shared area */ -_OpenBLT_Shared_Params_Size = DEFINED(BOOTLOADER) ? 16 : 0; +_OpenBLT_Shared_Params_Size = DEFINED(HAS_BOOTLOADER) || DEFINED(IS_BOOTLOADER) ? 16 : 0; MEMORY { - bl : org = 0x08000000, len = 16k /* bootloader section */ - flash0 : org = DEFINED(BOOTLOADER) ? 0x08008000 : 0x08000000, len = DEFINED(BOOTLOADER) ? 736k : 768k /* change address & length if bootloader */ + bl : org = 0x08000000, len = bootloader_size /* bootloader section */ + flash0 : org = flash_start, len = image_size flash1 : org = 0x00000000, len = 0 flash2 : org = 0x00000000, len = 0 flash3 : org = 0x00000000, len = 0 diff --git a/firmware/hw_layer/ports/stm32/stm32f7/STM32F7.ld b/firmware/hw_layer/ports/stm32/stm32f7/STM32F7.ld index 39b90f9d80..d65eb6f70d 100644 --- a/firmware/hw_layer/ports/stm32/stm32f7/STM32F7.ld +++ b/firmware/hw_layer/ports/stm32/stm32f7/STM32F7.ld @@ -25,20 +25,20 @@ * 'bl' is related to rusefi bootloader */ - /* TODO: 512k flash limit is a mitigation for https://github.com/rusefi/rusefi/issues/3566 and https://github.com/rusefi/rusefi/issues/3775 */ -/* flash_size = DEFINED(FLASH_SIZE) ? FLASH_SIZE : 512k; */ -flash_size = DEFINED(FLASH_SIZE) ? FLASH_SIZE : 768k; +/* change address & length if bootloader */ +bootloader_size = 32k; +flash_start = 0x08000000 + (DEFINED(HAS_BOOTLOADER) ? bootloader_size : 0); +flash_size = DEFINED(IS_BOOTLOADER) ? bootloader_size : 768k; +image_size = DEFINED(HAS_BOOTLOADER) ? (flash_size - bootloader_size) : flash_size; /* OpenBLT <-> main FW shared area */ -_OpenBLT_Shared_Params_Size = DEFINED(BOOTLOADER) ? 16 : 0; +_OpenBLT_Shared_Params_Size = DEFINED(HAS_BOOTLOADER) || DEFINED(IS_BOOTLOADER) ? 16 : 0; MEMORY { - bl : org = 0x08000000, len = 16k /* bootloader section */ - /* change address & length if bootloader */ - flash0 (rx) : org = DEFINED(BOOTLOADER) ? 0x08008000 : 0x08000000, len = DEFINED(BOOTLOADER) ? (flash_size - 32k) : flash_size - /* TODO: should we use same flash_size for flash@ITCM? */ - flash1 (rx) : org = DEFINED(BOOTLOADER) ? 0x00208000 : 0x00200000, len = DEFINED(BOOTLOADER) ? (2m - 32k) : 2m /* Flash as ITCM */ + bl : org = 0x08000000, len = bootloader_size /* bootloader section */ + flash0 (rx) : org = flash_start, len = image_size + flash1 (rx) : org = flash_start - 0x07e00000, len = image_size /* Flash as ITCM */ flash2 (rx) : org = 0x00000000, len = 0 flash3 (rx) : org = 0x00000000, len = 0 flash4 (rx) : org = 0x00000000, len = 0 diff --git a/firmware/hw_layer/ports/stm32/stm32h7/STM32H743xI.ld b/firmware/hw_layer/ports/stm32/stm32h7/STM32H743xI.ld index b58656a067..fa97fa8715 100755 --- a/firmware/hw_layer/ports/stm32/stm32h7/STM32H743xI.ld +++ b/firmware/hw_layer/ports/stm32/stm32h7/STM32H743xI.ld @@ -14,6 +14,15 @@ limitations under the License. */ +/* change address & length if bootloader */ +bootloader_size = 32k; +flash_start = 0x08000000 + (DEFINED(HAS_BOOTLOADER) ? bootloader_size : 0); +flash_size = DEFINED(IS_BOOTLOADER) ? bootloader_size : 1M; +image_size = DEFINED(HAS_BOOTLOADER) ? (flash_size - bootloader_size) : flash_size; + +/* OpenBLT <-> main FW shared area */ +_OpenBLT_Shared_Params_Size = DEFINED(HAS_BOOTLOADER) || DEFINED(IS_BOOTLOADER) ? 16 : 0; + /* * STM32H743xI generic setup. * @@ -27,15 +36,17 @@ */ MEMORY { - flash0 (rx) : org = 0x08000000, len = 2M /* Flash bank1+bank2 */ - flash1 (rx) : org = 0x08000000, len = 1M /* Flash bank 1 */ - flash2 (rx) : org = 0x08100000, len = 1M /* Flash bank 2 */ + bl : org = 0x08000000, len = bootloader_size + flash0 (rx) : org = flash_start, len = flash_size /* Flash bank1+bank2 */ + flash1 (rx) : org = flash_start, len = flash_size /* Flash bank 1 (code) */ + flash2 (rx) : org = 0x08100000, len = 1M /* Flash bank 2 (engine config) */ flash3 (rx) : org = 0x00000000, len = 0 flash4 (rx) : org = 0x00000000, len = 0 flash5 (rx) : org = 0x00000000, len = 0 flash6 (rx) : org = 0x00000000, len = 0 flash7 (rx) : org = 0x00000000, len = 0 - ram0 (wx) : org = 0x24000000, len = 512k /* AXI SRAM */ + shared : org = 0x24000000, len = _OpenBLT_Shared_Params_Size + ram0 (wx) : org = 0x24000000 + _OpenBLT_Shared_Params_Size, len = 512k - _OpenBLT_Shared_Params_Size /* AXI SRAM */ ram1 (wx) : org = 0x30000000, len = 256k /* AHB SRAM1+SRAM2 */ ram2 (wx) : org = 0x30000000, len = 288k /* AHB SRAM1+SRAM2+SRAM3 */ ram3 (wx) : org = 0x30040000, len = 32k /* AHB SRAM3 */ diff --git a/misc/jenkins/build_working_folder.sh b/misc/jenkins/build_working_folder.sh index 88bd335917..711237042a 100755 --- a/misc/jenkins/build_working_folder.sh +++ b/misc/jenkins/build_working_folder.sh @@ -70,10 +70,10 @@ cp firmware/deliver/fome.dfu $FOLDER cp firmware/deliver/fome.hex $FOLDER # bootloader -[ -e firmware/deliver/openblt.bin ] && { cp firmware/deliver/openblt.bin $FOLDER ; } -[ -e firmware/deliver/openblt.dfu ] && { cp firmware/deliver/openblt.dfu $FOLDER ; } +[ -e firmware/deliver/fome_bl.bin ] && { cp firmware/deliver/fome_bl.bin $FOLDER ; } +[ -e firmware/deliver/fome_bl.dfu ] && { cp firmware/deliver/fome_bl.dfu $FOLDER ; } # update srec -[ -e firmware/deliver/rusefi_update.srec ] && { cp firmware/deliver/rusefi_update.srec $FOLDER ; } +[ -e firmware/deliver/fome_update.srec ] && { cp firmware/deliver/fome_update.srec $FOLDER ; } if [ -n "$BUNDLE_NAME" ]; then mv $FOLDER/fome.dfu $FOLDER/fome_$BUNDLE_NAME.dfu