Jelajahi Sumber

Merge pull request #131 from alxhoff/example-stm32f4-freertos-tflite-uart-hal

Example project using HAL, OS (FreeRTOS), UART and TensorFlow Lite Micro
Konstantin Oblaukhov 5 tahun lalu
induk
melakukan
5638bf9141
29 mengubah file dengan 5294 tambahan dan 0 penghapusan
  1. 10 0
      README.md
  2. 1 0
      stm32-hal-freertos-uart-tensorflow/.gitignore
  3. 107 0
      stm32-hal-freertos-uart-tensorflow/CMakeLists.txt
  4. 6 0
      stm32-hal-freertos-uart-tensorflow/GDBCommands
  5. 131 0
      stm32-hal-freertos-uart-tensorflow/Inc/FreeRTOSConfig.h
  6. 1560 0
      stm32-hal-freertos-uart-tensorflow/Inc/color.h
  7. 33 0
      stm32-hal-freertos-uart-tensorflow/Inc/constants.h
  8. 12 0
      stm32-hal-freertos-uart-tensorflow/Inc/data_types.h
  9. 326 0
      stm32-hal-freertos-uart-tensorflow/Inc/ffconf.h
  10. 309 0
      stm32-hal-freertos-uart-tensorflow/Inc/main.h
  11. 39 0
      stm32-hal-freertos-uart-tensorflow/Inc/main_functions.h
  12. 26 0
      stm32-hal-freertos-uart-tensorflow/Inc/output_handler.h
  13. 60 0
      stm32-hal-freertos-uart-tensorflow/Inc/sd_diskio.h
  14. 7 0
      stm32-hal-freertos-uart-tensorflow/Inc/sine_model_quantized.h
  15. 457 0
      stm32-hal-freertos-uart-tensorflow/Inc/stm32f4xx_hal_conf.h
  16. 67 0
      stm32-hal-freertos-uart-tensorflow/Inc/stm32f4xx_it.h
  17. 674 0
      stm32-hal-freertos-uart-tensorflow/LICENSE
  18. 2 0
      stm32-hal-freertos-uart-tensorflow/README.md
  19. 19 0
      stm32-hal-freertos-uart-tensorflow/Src/constants.cc
  20. 107 0
      stm32-hal-freertos-uart-tensorflow/Src/freertos.c
  21. 296 0
      stm32-hal-freertos-uart-tensorflow/Src/main.c
  22. 131 0
      stm32-hal-freertos-uart-tensorflow/Src/main_functions.cc
  23. 218 0
      stm32-hal-freertos-uart-tensorflow/Src/sine_model_quantized.cc
  24. 35 0
      stm32-hal-freertos-uart-tensorflow/Src/stm32f4xx_hal_msp.c
  25. 187 0
      stm32-hal-freertos-uart-tensorflow/Src/stm32f4xx_it.c
  26. 207 0
      stm32-hal-freertos-uart-tensorflow/Src/syscalls.c
  27. 237 0
      stm32-hal-freertos-uart-tensorflow/Src/ts_calibration.c
  28. 1 0
      stm32-hal-freertos-uart-tensorflow/cmake
  29. 29 0
      stm32-hal-freertos-uart-tensorflow/stm32f40g_eval.cfg

+ 10 - 0
README.md

@@ -23,6 +23,16 @@ This project is used to develop applications for the STM32 - ST's ARM Cortex-Mx
 * `stm32-blinky` - blink LED using timers and PWM.
 * `stm32-blinky` - blink LED using timers and PWM.
 * `stm32-newlib` - show date using uart and libc functions from newlib.
 * `stm32-newlib` - show date using uart and libc functions from newlib.
 * `stm32-chibios` - blink led using ChibiOS/NIL.
 * `stm32-chibios` - blink led using ChibiOS/NIL.
+* `stm32-hal-freertos-uart-tensorflow` - HAL OS (FreeRTOS) example using UART 
+    and TensorFlow Lite Micro to perform sine wave interpolation with
+    `flash` (`st-flash`) and `debug` (`openocd` +  `gdb`) targets.
+
+    Requires `OPENOCD_BOARD` to be set to specify the openocd config required.
+    These are usually found in `/usr/share/openocd/scripts/`. For example a
+    STM32F41G_EVAL board using an ST-link would use `OPENOCD_BOARD=board/stm3241g_eval_stlink.cfg`.
+    If none is given CMake will search the project root for `.cfg` files.
+
+    Can be found in a maintained form [here](https://github.com/alxhoff/STM3240G-EVAL-TensorFlow-Hello-World).
 
 
 # Usage
 # Usage
 
 

+ 1 - 0
stm32-hal-freertos-uart-tensorflow/.gitignore

@@ -0,0 +1 @@
+build

+ 107 - 0
stm32-hal-freertos-uart-tensorflow/CMakeLists.txt

@@ -0,0 +1,107 @@
+PROJECT(STM32F40G_EVAL LANGUAGES C CXX)
+
+set(CMAKE_BUILD_TYPE Debug)
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON )
+CMAKE_MINIMUM_REQUIRED(VERSION 3.3)
+ENABLE_LANGUAGE(ASM)
+
+SET(TARGET stm32f4HAL)
+ADD_DEFINITIONS(-DDEBUG_UART_HANDLE=UartHandle)
+
+# Remove -rdynamic option from linking that is not supported by arm-none-eabi
+# Also remove "undefined reference to `_sbrk'" error
+set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "-specs=nano.specs -specs=nosys.specs")
+set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS})
+SET(CMAKE_C_FLAGS "-mcpu=cortex-m4 -mthumb -mfloat-abi=softfp -Wall -mfpu=fpv4-sp-d16 -Wl,-Map=output.map -Wl,--gc-sections -g3")
+
+set(STM32_CHIP STM32F407IGH6)
+set(STM_BOARD STM324xG_EVAL)
+set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
+set(CMAKE_TOOLCHAIN_FILE ${CMAKE_MODULE_PATH}/gcc_stm32.cmake)
+include(${CMAKE_TOOLCHAIN_FILE})
+
+FIND_PACKAGE(Git REQUIRED)
+
+set(CUBE_SOURCE "${CMAKE_BINARY_DIR}/STM32F4-Cube-Firmware")
+if(EXISTS ${CUBE_SOURCE})
+    message("Cube FW directory exists")
+else()
+    message("Getting Cube Firmware")
+    set(GIT_REPOSITORY "https://github.com/alxhoff/STM32F4-Cube-Firmware.git")
+    execute_process(COMMAND ${GIT_EXECUTABLE} clone ${GIT_REPOSITORY} )
+endif()
+
+set(STM32Cube_DIR ${CUBE_SOURCE})
+
+FIND_PACKAGE(TFLite REQUIRED)
+
+SET(TFLITE_PLATFORM micro)
+
+set(STM32Cube_DIR ${CUBE_SOURCE})
+
+SET(FREERTOS_HEAP_IMPL 1)
+
+FIND_PACKAGE(FreeRTOS REQUIRED)
+FIND_PACKAGE(CMSIS REQUIRED)
+FIND_PACKAGE(STM32HAL COMPONENTS sram gpio uart REQUIRED)
+FIND_PACKAGE(STM32LL COMPONENTS fsmc sdmmc REQUIRED)
+FIND_PACKAGE(STM32BSP COMPONENTS sd sram ts io lcd ili9325 stmpe811 REQUIRED)
+
+INCLUDE_DIRECTORIES(
+    ${CMAKE_CURRENT_SOURCE_DIR}
+    "${PROJECT_SOURCE_DIR}/Inc"
+    ${STM32HAL_INCLUDE_DIR}
+    ${STM32LL_INCLUDE_DIR}
+    ${CMSIS_INCLUDE_DIRS}
+    ${FreeRTOS_INCLUDE_DIRS}
+    ${STM32BSP_INCLUDE_DIR}
+    ${TFLite_INCLUDE_DIRS}
+    )
+
+file(GLOB PROJECT_SOURCES
+    "Src/*.c"
+    "Src/*.cc"
+    "Src/*.cpp"
+    )
+
+SET(STM32_LINKER_SCRIPT ${CMSIS_LINKER_SCRIPT})
+
+ADD_EXECUTABLE(
+    ${CMAKE_PROJECT_NAME}.elf
+    ${PROJECT_SOURCES}
+    ${STM32HAL_SOURCES}
+    ${STM32BSP_SOURCES}
+    ${STM32LL_SOURCES}
+    ${FreeRTOS_SOURCES}
+    ${TFLite_SOURCES}
+    ${CMSIS_SOURCES}
+    )
+
+TARGET_COMPILE_DEFINITIONS(${CMAKE_PROJECT_NAME}.elf PUBLIC STM_BSP)
+
+ADD_CUSTOM_TARGET(
+    flash
+    COMMAND ${CMAKE_OBJCOPY} -Obinary ${CMAKE_PROJECT_NAME}.elf ${CMAKE_PROJECT_NAME}.bin # TODO
+    COMMAND st-flash write ${CMAKE_PROJECT_NAME}.bin 0x8000000
+    )
+
+ADD_DEPENDENCIES(flash ${CMAKE_PROJECT_NAME}.elf)
+
+IF(NOT OPENOCD_BOARD)
+    FILE(GLOB OPENOCD_BOARD ${PROJECT_SOURCE_DIR}/*.cfg)
+ENDIF()
+
+ADD_CUSTOM_TARGET(
+    debug
+    COMMAND openocd -f ${OPENOCD_BOARD} >/dev/null 2>&1 & sleep 2
+    COMMAND ${TARGET_TRIPLET}-gdb -quiet -tui -command=${CMAKE_CURRENT_LIST_DIR}/GDBCommands -se ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.elf
+    COMMAND killall -15 openocd
+    )
+
+ADD_DEPENDENCIES(debug flash)
+
+STM32_SET_TARGET_PROPERTIES(${CMAKE_PROJECT_NAME}.elf)
+STM32_ADD_HEX_BIN_TARGETS(${CMAKE_PROJECT_NAME}.elf)
+STM32_PRINT_SIZE_OF_TARGETS(${CMAKE_PROJECT_NAME}.elf)
+
+# TODO: also clean .bin file on `make clean`

+ 6 - 0
stm32-hal-freertos-uart-tensorflow/GDBCommands

@@ -0,0 +1,6 @@
+target remote localhost:3333
+monitor reset
+load
+break main
+continue
+

+ 131 - 0
stm32-hal-freertos-uart-tensorflow/Inc/FreeRTOSConfig.h

@@ -0,0 +1,131 @@
+/* USER CODE BEGIN Header */
+/*
+ * FreeRTOS Kernel V10.0.1
+ * Copyright (C) 2017 Amazon.com, Inc. or its affiliates.  All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * http://www.FreeRTOS.org
+ * http://aws.amazon.com/freertos
+ *
+ * 1 tab == 4 spaces!
+ */
+ /* USER CODE END Header */
+
+#ifndef FREERTOS_CONFIG_H
+#define FREERTOS_CONFIG_H
+
+/*-----------------------------------------------------------
+ * Application specific definitions.
+ *
+ * These definitions should be adjusted for your particular hardware and
+ * application requirements.
+ *
+ * These parameters and more are described within the 'configuration' section of the
+ * FreeRTOS API documentation available on the FreeRTOS.org web site.
+ *
+ * See http://www.freertos.org/a00110.html
+ *----------------------------------------------------------*/
+
+/* USER CODE BEGIN Includes */   	      
+/* Section where include file can be added */
+/* USER CODE END Includes */ 
+
+/* Ensure definitions are only used by the compiler, and not by the assembler. */
+#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)
+  #include <stdint.h>
+  extern uint32_t SystemCoreClock;
+  void xPortSysTickHandler(void);
+#endif
+#define configUSE_PREEMPTION                     1
+#define configSUPPORT_STATIC_ALLOCATION          1
+#define configSUPPORT_DYNAMIC_ALLOCATION         1
+#define configUSE_IDLE_HOOK                      0
+#define configUSE_TICK_HOOK                      0
+#define configCPU_CLOCK_HZ                       ( SystemCoreClock )
+#define configTICK_RATE_HZ                       ((TickType_t)1000)
+#define configMAX_PRIORITIES                     ( 7 )
+#define configMINIMAL_STACK_SIZE                 ((uint16_t)128)
+#define configTOTAL_HEAP_SIZE                    ((size_t)15360)
+#define configMAX_TASK_NAME_LEN                  ( 16 )
+#define configUSE_16_BIT_TICKS                   0
+#define configUSE_MUTEXES                        1
+#define configQUEUE_REGISTRY_SIZE                8
+#define configUSE_PORT_OPTIMISED_TASK_SELECTION  1
+
+/* Co-routine definitions. */
+#define configUSE_CO_ROUTINES                    0
+#define configMAX_CO_ROUTINE_PRIORITIES          ( 2 )
+
+/* Set the following definitions to 1 to include the API function, or zero
+to exclude the API function. */
+#define INCLUDE_vTaskPrioritySet            1
+#define INCLUDE_uxTaskPriorityGet           1
+#define INCLUDE_vTaskDelete                 1
+#define INCLUDE_vTaskCleanUpResources       0
+#define INCLUDE_vTaskSuspend                1
+#define INCLUDE_vTaskDelayUntil             0
+#define INCLUDE_vTaskDelay                  1
+#define INCLUDE_xTaskGetSchedulerState      1
+
+/* Cortex-M specific definitions. */
+#ifdef __NVIC_PRIO_BITS
+ /* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */
+ #define configPRIO_BITS         __NVIC_PRIO_BITS
+#else
+ #define configPRIO_BITS         4
+#endif
+
+/* The lowest interrupt priority that can be used in a call to a "set priority"
+function. */
+#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY   15
+
+/* The highest interrupt priority that can be used by any interrupt service
+routine that makes calls to interrupt safe FreeRTOS API functions.  DO NOT CALL
+INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER
+PRIORITY THAN THIS! (higher priorities are lower numeric values. */
+#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5
+
+/* Interrupt priorities used by the kernel port layer itself.  These are generic
+to all Cortex-M ports, and do not rely on any particular library functions. */
+#define configKERNEL_INTERRUPT_PRIORITY 		( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
+/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
+See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
+#define configMAX_SYSCALL_INTERRUPT_PRIORITY 	( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
+
+/* Normal assert() semantics without relying on the provision of an assert.h
+header file. */
+/* USER CODE BEGIN 1 */
+#define configASSERT( x ) if ((x) == 0) {taskDISABLE_INTERRUPTS(); for( ;; );} 
+/* USER CODE END 1 */
+
+/* Definitions that map the FreeRTOS port interrupt handlers to their CMSIS
+standard names. */
+#define vPortSVCHandler    SVC_Handler
+#define xPortPendSVHandler PendSV_Handler
+
+/* IMPORTANT: This define is commented when used with STM32Cube firmware, when the timebase source is SysTick,
+              to prevent overwriting SysTick_Handler defined within STM32Cube HAL */
+ 
+/* #define xPortSysTickHandler SysTick_Handler */
+
+/* USER CODE BEGIN Defines */   	      
+/* Section where parameter definitions can be added (for instance, to override default ones in FreeRTOS.h) */
+/* USER CODE END Defines */ 
+
+#endif /* FREERTOS_CONFIG_H */

+ 1560 - 0
stm32-hal-freertos-uart-tensorflow/Inc/color.h

@@ -0,0 +1,1560 @@
+/**
+  ******************************************************************************
+  * @file    Display/LCD_Paint/Inc/color.h 
+  * @author  MCD Application Team
+  * @brief   This file contains image used for LTDC application.   
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics International N.V. 
+  * All rights reserved.</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without 
+  * modification, are permitted, provided that the following conditions are met:
+  *
+  * 1. Redistribution of source code must retain the above copyright notice, 
+  *    this list of conditions and the following disclaimer.
+  * 2. Redistributions in binary form must reproduce the above copyright notice,
+  *    this list of conditions and the following disclaimer in the documentation
+  *    and/or other materials provided with the distribution.
+  * 3. Neither the name of STMicroelectronics nor the names of other 
+  *    contributors to this software may be used to endorse or promote products 
+  *    derived from this software without specific written permission.
+  * 4. This software, including modifications and/or derivative works of this 
+  *    software, must execute solely and exclusively on microcontroller or
+  *    microprocessor devices manufactured by or for STMicroelectronics.
+  * 5. Redistribution and use of this software other than as permitted under 
+  *    this license is void and will automatically terminate your rights under 
+  *    this license. 
+  *
+  * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" 
+  * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT 
+  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
+  * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
+  * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT 
+  * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
+  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
+  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */ 
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __COLOR_H
+#define __COLOR_H
+
+const unsigned char color[24054]=
+{
+0x42,0x4d,0xf6,0x5d,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,
+0x00,0x00,0x32,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x01,0x00,0x10,0x00,0x03,0x00,
+0x00,0x00,0xc0,0x5d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,
+0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,
+0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,
+0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,
+0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,
+0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,
+0xbf,0xf7,0xbf,0xf7,0xbf,0xf7,0x9f,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x5d,0xef,0x29,0x4a,0x6e,0x73,0xff,0xff,0x18,0xc6,
+0x86,0x31,0x76,0xb5,0xff,0xff,0x55,0xad,0x27,0x42,0x78,0xce,0xff,0xff,0x71,0x94,
+0xec,0x62,0x5d,0xef,0xff,0xff,0x4c,0x63,0xf0,0x83,0xff,0xff,0xff,0xff,0x69,0x4a,
+0x35,0xad,0xff,0xff,0xfc,0xe6,0x86,0x31,0x97,0xbe,0xff,0xff,0x18,0xa5,0xe4,0x18,
+0xff,0xff,0xff,0xff,0xaf,0x7b,0xa2,0x10,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xbe,0xff,0x95,0xbd,0xbf,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xee,0x83,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x9d,0xef,0x52,0x95,0xbe,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x8a,0x52,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0x5e,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x9b,0xd6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x3d,0xef,0xf0,0x73,0x32,0xce,0x20,0xb2,0x20,0xb4,0xee,0xa3,0x7f,0xef,
+0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x20,0x00,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x76,0xee,0x20,0xab,0xf5,0xef,0x92,0xef,
+0x8b,0xde,0x80,0xbc,0x24,0xc4,0x8d,0xdd,0x9d,0xef,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xe6,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd0,0xac,0xc0,0xc3,0xf0,0xf7,
+0x0a,0xe7,0x0e,0xdf,0x0b,0xe7,0x94,0xef,0x2e,0xe7,0xe9,0xd5,0xa4,0xcc,0xe8,0xb3,
+0x36,0xde,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0x03,0x83,0xc0,0xdd,0xcb,0xf7,
+0x29,0xe7,0x09,0xe7,0x88,0xe5,0x68,0xe7,0x28,0xe7,0x47,0xe7,0xe6,0xe6,0x06,0xe7,
+0x0b,0xe7,0x52,0xe7,0x70,0xe7,0xb1,0xef,0xcb,0xde,0x63,0xc4,0x44,0xcc,0xd5,0xdd,
+0x7f,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0x40,0x92,0x08,0xf7,
+0x2a,0xe7,0x48,0xe7,0x23,0xe6,0xe1,0xe4,0xa9,0xe7,0x08,0xe7,0x29,0xe6,0xe7,0xe5,
+0x48,0xe7,0x28,0xe7,0x08,0xe7,0x26,0xe6,0x8a,0xe6,0x2c,0xe7,0x4d,0xe7,0x6e,0xe7,
+0x6c,0xe7,0x03,0xce,0xe0,0xbb,0x8c,0xc4,0x9e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x74,0x9c,0xc5,0xbc,
+0xe7,0xf7,0x67,0xee,0x8a,0xe6,0x85,0xe5,0xe0,0xe5,0x8b,0xe7,0x29,0xe7,0x44,0xe6,
+0x02,0xe6,0x29,0xe7,0x28,0xe7,0xa9,0xe6,0x87,0xe5,0xa8,0xe6,0x6b,0xe7,0x4d,0xe6,
+0x46,0xe6,0x2b,0xe7,0x0b,0xe7,0x50,0xef,0x74,0xef,0xc8,0xe6,0x00,0xb4,0x2c,0xac,
+0x3e,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x68,
+0x20,0xc8,0x00,0x90,0x63,0x92,0xe5,0xef,0x21,0xef,0x00,0xee,0x0c,0xe7,0x27,0xe7,
+0xa0,0xe5,0xa6,0xe5,0x8a,0xe7,0x69,0xe7,0x25,0xe6,0x02,0xe5,0x6a,0xe7,0x08,0xe7,
+0xa7,0xe5,0x06,0xe6,0x08,0xe7,0x07,0xe7,0x07,0xe7,0xe9,0xe6,0x09,0xe7,0x0f,0xe7,
+0xd2,0xf7,0x4a,0xd6,0x80,0xb3,0x86,0xbb,0x7d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xee,
+0x00,0x58,0xa0,0xf1,0x60,0xea,0x60,0xf2,0xa0,0xe9,0x00,0x90,0xa6,0x91,0x2d,0xad,
+0xe2,0xff,0xe1,0xec,0xa6,0xe5,0x0c,0xe7,0x68,0xe6,0x21,0xe5,0x45,0xe5,0xac,0xe7,
+0xc6,0xe6,0x40,0xe5,0x85,0xe6,0x89,0xe7,0x49,0xe7,0x29,0xe7,0xe8,0xe6,0x08,0xe7,
+0x27,0xe7,0x6c,0xe7,0x0d,0xe7,0x2d,0xef,0xcd,0xef,0xaa,0xe7,0x20,0xb3,0xa7,0xc3,
+0xbe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xd3,0xc4,0x00,0x70,0xc0,0xfb,0xc0,0xe1,0x00,0xe2,0xe0,0xe1,0x00,0xe2,0x60,0xea,
+0xa0,0xea,0x00,0xb8,0x63,0x88,0x4d,0xb5,0x42,0xef,0x21,0xf7,0x00,0xe5,0x26,0xde,
+0xaa,0xe7,0x41,0xe5,0x23,0xe5,0xaa,0xe6,0x4a,0xe7,0xc6,0xe6,0x41,0xe5,0x44,0xe6,
+0x49,0xe7,0x69,0xe7,0x86,0xe6,0x00,0xe5,0x65,0xe6,0x67,0xe7,0xce,0xf7,0xe1,0xc3,
+0x63,0xab,0x9d,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0x00,0x70,0xa0,0xfc,0xc0,0xd9,0x20,0xe2,0xe0,0xe1,0x00,0xe2,
+0x00,0xe2,0x00,0xe2,0xc0,0xe1,0x40,0xea,0x60,0xea,0x81,0xd1,0x01,0xa0,0x63,0x91,
+0x07,0xdf,0xe3,0xff,0x60,0xe5,0xa4,0xe5,0x4b,0xe7,0x08,0xe7,0xa2,0xe5,0xe3,0xe5,
+0x89,0xe6,0xea,0xe6,0xe7,0xe6,0x82,0xe5,0xe4,0xe5,0x49,0xe7,0xea,0xf7,0x63,0xd6,
+0x40,0x8a,0x19,0xe6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0x00,0x68,0x00,0x88,
+0x44,0xfc,0x67,0xe3,0x60,0xe2,0xc0,0xe1,0x00,0xe3,0xa0,0xe2,0x80,0xe2,0x80,0xe1,
+0x20,0xe2,0xa0,0xe2,0x00,0xf2,0x80,0xea,0xe0,0xc0,0x00,0x88,0x08,0xa2,0x8b,0xe6,
+0xea,0xf7,0x44,0xe6,0x80,0xe4,0x66,0xe5,0x8a,0xe6,0xc9,0xf7,0xe1,0xc5,0xc3,0x8a,
+0x9b,0xe6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x3a,0xde,0x00,0x68,0xa0,0xfa,0x80,0xe3,0x80,0xe2,0xc0,0xe1,0xc0,0xe2,
+0xa0,0xe2,0xe0,0xe2,0x60,0xe2,0xa0,0xe1,0x60,0xe2,0x40,0xe2,0xc0,0xe2,0xa0,0xfb,
+0xa0,0xd2,0x82,0xa8,0x04,0x98,0x88,0xcc,0xeb,0xf7,0xea,0xf7,0x83,0xe6,0x40,0xb3,
+0x10,0xd5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xfe,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xf7,0xff,0xff,0xff,0xff,
+0xff,0xff,0xfd,0xef,0xff,0xff,0x19,0xc6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x50,0xa0,0xfa,0xa0,0xe2,
+0xa0,0xe1,0x00,0xe2,0xc0,0xe1,0xa0,0xe1,0x00,0xe2,0xe0,0xe2,0xe0,0xe2,0xe0,0xe2,
+0x00,0xe3,0x20,0xe3,0x40,0xeb,0xe0,0xeb,0x20,0xec,0xa0,0xa9,0x64,0xa9,0xc2,0xba,
+0x0a,0xac,0x1c,0xef,0xff,0xff,0x52,0x7c,0x92,0x94,0xff,0xff,0xfd,0xf7,0xcd,0x4a,
+0x99,0xde,0xff,0xff,0x1b,0xef,0x8c,0x42,0x5c,0xf7,0xff,0xff,0xdb,0xe6,0x0a,0x53,
+0xff,0xff,0xff,0xff,0x76,0xb5,0xe9,0x4a,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3b,0xbe,0x00,0x70,0x60,0xf3,
+0x20,0xe3,0x80,0xe1,0xe0,0xe2,0x80,0xe3,0xc1,0xec,0xa5,0xe4,0x60,0xec,0x42,0xec,
+0xc1,0xe3,0x80,0xe3,0xa0,0xe3,0x20,0xe4,0x00,0xe4,0xc0,0xe3,0x40,0xe4,0x20,0xff,
+0xc0,0xdb,0x44,0xa0,0xd9,0xdd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0xab,0x00,0x98,
+0x40,0xfb,0x20,0xe3,0xc0,0xe2,0x40,0xe2,0x80,0xec,0x40,0xe4,0x61,0x98,0xe6,0xb0,
+0x00,0xc9,0x40,0xcb,0x81,0xed,0x40,0xe6,0xa0,0xed,0xc0,0xe4,0x80,0xe4,0xc0,0xe5,
+0xe0,0xfe,0xa0,0xb1,0x2d,0xaa,0xbf,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x58,
+0x00,0xd9,0x20,0xf4,0xe0,0xda,0x80,0xe2,0x80,0xe3,0xe6,0xf5,0xa0,0xe2,0x04,0x90,
+0xbf,0xf7,0xff,0xff,0x9f,0xdf,0xf5,0xd3,0x44,0xa0,0xa2,0xb0,0x20,0xb2,0xc1,0xc3,
+0x42,0xdd,0x60,0xbb,0x01,0x80,0x16,0xb4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe6,0x88,0x00,0x98,
+0x00,0xfd,0x00,0xe3,0xc0,0xe3,0xc0,0xdb,0x02,0xed,0x00,0xe6,0x01,0x68,0x1a,0xbd,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0x90,
+0x60,0xca,0xe0,0xfc,0xe0,0xe3,0xe0,0xe3,0x80,0xe4,0x60,0xfe,0x80,0xdc,0x00,0x68,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x00,0x30,0x80,0xff,0x87,0xe5,0x06,0xe4,0xc6,0xee,0xa0,0xf7,0xa0,0x88,
+0x4b,0x90,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x04,0x78,0x00,0xab,0x20,0xd5,0x60,0xaa,
+0xe9,0x90,0xba,0xbc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xff,
+0xff,0xfe,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb7,0xbd,
+0x96,0xb5,0x18,0xbe,0x18,0xbe,0x18,0xbe,0x75,0xb5,0x96,0xb5,0x96,0xb5,0xb7,0xbd,
+0x96,0xb5,0x96,0xb5,0x96,0xb5,0xb7,0xbd,0x96,0xb5,0xb7,0xbd,0x96,0xb5,0x96,0xb5,
+0x75,0xad,0x76,0xb5,0x96,0xb5,0xd7,0xbd,0xb7,0xbd,0xd7,0xbd,0xb7,0xbd,0xd7,0xbd,
+0xd7,0xbd,0xf8,0xc5,0xb7,0xbd,0xb7,0xbd,0xd7,0xbd,0xf8,0xc5,0xf8,0xc5,0x18,0xc6,
+0x18,0xc6,0x39,0xce,0xf7,0xbd,0xb7,0xb5,0xf8,0xbd,0x9f,0xf7,0xff,0xff,0xff,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xa6,0x31,0xa6,0x31,0x86,0x31,0xa7,0x39,0x86,0x31,0xa7,0x39,0xa6,0x31,
+0xc7,0x39,0xa6,0x31,0xc7,0x39,0xa7,0x39,0xe8,0x41,0x08,0x42,0x08,0x42,0xe7,0x39,
+0x29,0x4a,0x49,0x4a,0x29,0x4a,0x28,0x42,0x29,0x4a,0x29,0x42,0x49,0x4a,0x49,0x4a,
+0x6a,0x4a,0x49,0x4a,0x6a,0x4a,0x6a,0x4a,0x6a,0x52,0x69,0x4a,0x29,0x4a,0x08,0x42,
+0x29,0x42,0x28,0x42,0x49,0x4a,0x49,0x4a,0xaa,0x52,0x8a,0x4a,0xe9,0x41,0x45,0x31,
+0x59,0xd6,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x08,0x4a,0x28,0x42,0x29,0x4a,0x08,0x42,0x29,0x4a,
+0x29,0x4a,0x49,0x4a,0x28,0x42,0x29,0x4a,0x29,0x4a,0x49,0x4a,0x08,0x42,0x29,0x4a,
+0x28,0x4a,0x29,0x4a,0x28,0x4a,0x49,0x4a,0x08,0x42,0x08,0x42,0x08,0x42,0x29,0x42,
+0x28,0x42,0x29,0x42,0x28,0x42,0x29,0x4a,0x29,0x4a,0x4a,0x4a,0x49,0x4a,0x4a,0x52,
+0x29,0x4a,0x4a,0x4a,0x28,0x42,0x09,0x42,0x08,0x42,0x29,0x4a,0x48,0x4a,0xc7,0x41,
+0x86,0x39,0x2c,0x7b,0x97,0xe6,0x7c,0xff,0x5c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x08,0x42,0x29,0x4a,0x08,0x42,
+0x08,0x42,0x08,0x42,0x29,0x4a,0x28,0x42,0x28,0x42,0x28,0x42,0x49,0x4a,0x28,0x42,
+0x28,0x42,0x08,0x42,0x29,0x4a,0x08,0x42,0x29,0x4a,0x29,0x42,0x28,0x42,0x07,0x42,
+0x08,0x42,0x08,0x3a,0x29,0x42,0x28,0x42,0x49,0x42,0x28,0x42,0x29,0x4a,0x49,0x4a,
+0x49,0x4a,0x29,0x4a,0x49,0x4a,0x29,0x42,0x29,0x4a,0xe8,0x41,0x08,0x42,0x28,0x42,
+0x49,0x4a,0xa6,0x39,0xa6,0x39,0x2c,0x73,0x98,0xe6,0x5b,0xff,0x5d,0xff,0xdf,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45,0x29,
+0x24,0x21,0x24,0x21,0xe3,0x18,0x24,0x21,0x24,0x29,0x25,0x29,0xe3,0x18,0xc3,0x18,
+0x04,0x21,0x24,0x21,0xe4,0x18,0x04,0x21,0x04,0x21,0x04,0x21,0x04,0x21,0x24,0x21,
+0xe3,0x18,0x04,0x21,0x24,0x21,0x66,0x29,0x45,0x21,0x66,0x29,0x45,0x29,0x66,0x29,
+0x25,0x29,0x25,0x29,0x45,0x29,0x86,0x31,0x66,0x29,0x86,0x31,0xa6,0x31,0xc7,0x39,
+0xa6,0x31,0xa6,0x31,0x24,0x21,0xe3,0x20,0x07,0x4a,0x78,0xde,0xb8,0xee,0x36,0xe6,
+0xf6,0xdd,0x58,0xe6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x61,0x08,0x61,0x08,0x41,0x00,0x62,0x10,0x61,0x00,0x61,0x08,0x41,0x08,
+0x61,0x08,0x61,0x08,0x82,0x08,0x41,0x08,0x41,0x00,0x20,0x00,0x21,0x00,0x20,0x00,
+0x21,0x00,0x20,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,
+0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x08,0x21,0x00,0x21,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xeb,0x62,0x54,0xc5,0xb8,0xf6,
+0x97,0xf6,0x36,0xe6,0x57,0xee,0xd6,0xcd,0xb2,0x9c,0x9e,0xef,0xff,0xff,0xff,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0x86,0x31,0x45,0x21,0xe7,0x39,0x28,0x42,0x08,0x42,
+0x08,0x3a,0x08,0x42,0x08,0x42,0x49,0x4a,0x69,0x4a,0x69,0x4a,0xe7,0x39,0x28,0x42,
+0x28,0x42,0x49,0x4a,0x69,0x4a,0xcb,0x5a,0xcb,0x5a,0xcb,0x5a,0x0b,0x5b,0x6e,0x6b,
+0xeb,0x52,0x8a,0x52,0xcb,0x52,0x0d,0x63,0x2d,0x63,0x2d,0x63,0x0c,0x5b,0x2d,0x63,
+0x2d,0x63,0x6d,0x6b,0xae,0x73,0x10,0x7c,0x10,0x7c,0x8e,0x6b,0x49,0x42,0x55,0xb5,
+0x7c,0xff,0xb8,0xfe,0x56,0xee,0xb8,0xfe,0xf9,0xfe,0x79,0xe6,0x82,0x10,0x9a,0xd6,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x20,0x00,0x41,0x08,0x41,0x00,
+0x62,0x08,0x61,0x08,0xa3,0x10,0x82,0x10,0x82,0x08,0x82,0x08,0x82,0x10,0x61,0x08,
+0x82,0x10,0xa3,0x10,0xa2,0x10,0x82,0x08,0x82,0x10,0x82,0x10,0xc3,0x18,0xa2,0x10,
+0xe3,0x18,0xe4,0x18,0xe4,0x18,0xc3,0x10,0x04,0x19,0x04,0x19,0x25,0x21,0xe4,0x18,
+0xe4,0x18,0x04,0x19,0x45,0x29,0x65,0x29,0x66,0x29,0x65,0x29,0xe7,0x39,0xc7,0x31,
+0xe3,0x18,0x71,0x9c,0xfb,0xfe,0xf5,0xe5,0xf4,0xe5,0xb7,0xfe,0xd9,0xfe,0x13,0xb5,
+0xe8,0x39,0x04,0x21,0x38,0xc6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x61,0x08,
+0x62,0x08,0x41,0x08,0x20,0x00,0x41,0x08,0x61,0x08,0x62,0x08,0x20,0x00,0x61,0x08,
+0xc3,0x10,0xe3,0x18,0x62,0x08,0x82,0x10,0xc3,0x18,0xe4,0x18,0xc3,0x10,0xa3,0x10,
+0xc3,0x18,0xe4,0x20,0xa2,0x10,0x62,0x08,0x82,0x08,0xa3,0x10,0x41,0x08,0x21,0x08,
+0x20,0x00,0x21,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x94,0x37,0xe6,0x73,0xdd,0x71,0xd5,0xb7,0xfe,
+0x56,0xee,0x6d,0x83,0xe8,0x39,0x41,0x08,0x08,0x42,0x10,0x84,0x9e,0xf7,0xff,0xff,
+0xff,0xff,0x86,0x29,0x86,0x29,0xa6,0x29,0xa7,0x31,0xa6,0x29,0x86,0x29,0x85,0x29,
+0xa6,0x31,0xc6,0x31,0xc7,0x31,0xc7,0x31,0xc7,0x31,0xa6,0x29,0xc7,0x31,0xe7,0x39,
+0xe7,0x39,0xa6,0x31,0xa6,0x31,0x65,0x29,0xa7,0x31,0xc7,0x31,0xa7,0x31,0x86,0x29,
+0xc7,0x31,0xa7,0x31,0xa7,0x31,0xa6,0x31,0xc7,0x31,0xa6,0x31,0xc7,0x31,0xa6,0x29,
+0xc7,0x31,0xc7,0x31,0x08,0x3a,0xe7,0x31,0x67,0x21,0x49,0x52,0xce,0x9b,0xb4,0xe5,
+0x92,0xdd,0xb7,0xf6,0x97,0xee,0x28,0x52,0x82,0x10,0x18,0xc6,0xbf,0xff,0xbe,0xf7,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xa7,0x31,0x86,0x29,0xa7,0x31,0xa6,0x31,0xc7,0x31,
+0x65,0x29,0x86,0x29,0xa6,0x31,0xc7,0x31,0xc7,0x31,0xe7,0x39,0xc6,0x31,0xa7,0x31,
+0xc7,0x31,0x08,0x3a,0xe7,0x31,0xc7,0x39,0x86,0x31,0x86,0x29,0xa6,0x29,0xe8,0x31,
+0xa6,0x29,0xa6,0x31,0xa6,0x31,0xc7,0x39,0xa7,0x31,0xa7,0x31,0xa7,0x31,0xc7,0x31,
+0xa7,0x31,0xa7,0x31,0xc6,0x31,0xe8,0x39,0x07,0x3a,0xe7,0x39,0x66,0x19,0x6a,0x5a,
+0xce,0x9b,0xd5,0xed,0x92,0xdd,0xd8,0xfe,0x97,0xee,0x48,0x5a,0x82,0x08,0x18,0xc6,
+0xbf,0xff,0xdf,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0x41,0x00,0x41,0x08,0x41,0x00,
+0x61,0x08,0x62,0x08,0xa3,0x10,0x82,0x08,0x82,0x08,0x81,0x08,0x21,0x00,0x20,0x00,
+0x82,0x08,0x82,0x08,0xa2,0x10,0xa2,0x10,0xa2,0x10,0x82,0x08,0x82,0x10,0x81,0x08,
+0xa2,0x10,0xa2,0x10,0xc3,0x10,0xc2,0x10,0xc3,0x10,0xa2,0x10,0xa2,0x10,0x82,0x08,
+0xe3,0x10,0xc3,0x10,0xc3,0x10,0xa3,0x10,0xe3,0x18,0xe3,0x18,0xa3,0x10,0xa2,0x10,
+0x26,0x19,0xc3,0x18,0x85,0x49,0x52,0xcd,0xf4,0xe5,0x35,0xee,0x32,0xcd,0x65,0x39,
+0xbb,0xde,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0x20,0x00,
+0x00,0x00,0x00,0x08,0x20,0x00,0x40,0x00,0x40,0x00,0x41,0x08,0x20,0x00,0x20,0x00,
+0x40,0x00,0x41,0x08,0x40,0x00,0x41,0x00,0x40,0x00,0x61,0x08,0x41,0x08,0x61,0x08,
+0x60,0x08,0x81,0x08,0x40,0x08,0x41,0x08,0x41,0x08,0x61,0x08,0x40,0x08,0x41,0x08,
+0x40,0x00,0x61,0x08,0x61,0x08,0x83,0x10,0x82,0x08,0x82,0x08,0x62,0x08,0x82,0x10,
+0x62,0x08,0xa2,0x10,0xa3,0x08,0x01,0x00,0xe3,0x20,0xb4,0xcd,0xd4,0xe5,0x50,0xac,
+0x30,0xa4,0x59,0xd6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,
+0xff,0xff,0x20,0x00,0x40,0x08,0x20,0x00,0x40,0x00,0x20,0x00,0x40,0x00,0x20,0x00,
+0x20,0x00,0x20,0x00,0x40,0x08,0x40,0x00,0x40,0x08,0x40,0x00,0x40,0x00,0x40,0x00,
+0x40,0x00,0x20,0x00,0x60,0x00,0x60,0x00,0x40,0x08,0x20,0x08,0x40,0x10,0x40,0x08,
+0x41,0x08,0x40,0x00,0x40,0x08,0x40,0x00,0x81,0x08,0x81,0x08,0x82,0x10,0x81,0x08,
+0x62,0x08,0x42,0x08,0x62,0x10,0x62,0x08,0xc4,0x10,0x00,0x00,0xc3,0x18,0xf1,0xc4,
+0xb1,0xbc,0x39,0xde,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x41,0x08,0x20,0x00,0x40,0x08,0x40,0x00,0x61,0x08,
+0x40,0x00,0x61,0x08,0x40,0x00,0x41,0x08,0x41,0x08,0x61,0x08,0x40,0x00,0x61,0x08,
+0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x61,0x08,
+0x40,0x08,0x40,0x08,0x40,0x00,0x40,0x08,0x40,0x00,0x60,0x08,0x60,0x08,0x61,0x08,
+0x61,0x08,0x61,0x08,0x40,0x00,0x61,0x08,0x61,0x00,0x81,0x08,0x41,0x00,0x00,0x00,
+0xa2,0x18,0x91,0xb4,0x73,0xcd,0x3c,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x20,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,
+0x20,0x00,0x20,0x00,0x82,0x08,0x61,0x08,0x41,0x08,0x20,0x00,0x61,0x08,0x41,0x08,
+0x41,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x40,0x08,0x20,0x00,
+0x40,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x20,0x00,
+0x40,0x08,0x00,0x00,0x41,0x10,0xef,0x93,0x3c,0xf7,0xdf,0xff,0xdf,0xff,0xde,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x20,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,
+0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x41,0x00,0x20,0x00,0x21,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x21,0x00,0x21,0x00,0x41,0x00,
+0x41,0x00,0x41,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x60,0x00,
+0x40,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0xc6,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x41,0x00,0x41,0x08,0x21,0x08,0x42,0x08,0x41,0x00,0x41,0x08,0x41,0x00,
+0x41,0x08,0x41,0x00,0x61,0x08,0x41,0x00,0x41,0x08,0x21,0x00,0x21,0x00,0x21,0x00,
+0x41,0x08,0x20,0x00,0x21,0x08,0x21,0x00,0x41,0x00,0x41,0x00,0x62,0x00,0x41,0x00,
+0x42,0x00,0x21,0x00,0x42,0x00,0x21,0x00,0x41,0x00,0x40,0x00,0x40,0x00,0x40,0x00,
+0x61,0x00,0x40,0x00,0x61,0x00,0x00,0x00,0x61,0x08,0xb2,0x9c,0x9e,0xff,0xff,0xff,
+0xff,0xff,0xdf,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x83,0x10,0x63,0x08,0x83,0x10,0x82,0x08,0x63,0x08,
+0x63,0x08,0x83,0x08,0x42,0x00,0x63,0x08,0x63,0x08,0x83,0x08,0x62,0x08,0x63,0x08,
+0x42,0x00,0x62,0x08,0x62,0x00,0x63,0x08,0x43,0x08,0x63,0x08,0x62,0x00,0x83,0x00,
+0x83,0x00,0xa4,0x08,0x83,0x00,0x64,0x08,0x43,0x08,0x63,0x08,0x62,0x08,0x83,0x08,
+0x62,0x08,0x83,0x08,0x83,0x00,0xa3,0x08,0xa3,0x08,0x83,0x00,0x61,0x08,0xaf,0x83,
+0x59,0xd6,0xdf,0xff,0xdf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x42,0x00,0x42,0x08,0x22,0x00,
+0x62,0x00,0x62,0x00,0x83,0x08,0x62,0x00,0x62,0x00,0x62,0x00,0x42,0x00,0x41,0x00,
+0x62,0x00,0x42,0x00,0x42,0x00,0x42,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x43,0x00,
+0x63,0x00,0x63,0x00,0x84,0x00,0x83,0x00,0x63,0x00,0x43,0x00,0xa4,0x08,0xc4,0x08,
+0x84,0x08,0x63,0x00,0xa4,0x08,0xa4,0x08,0x84,0x08,0x63,0x00,0x63,0x00,0x84,0x00,
+0x84,0x00,0x21,0x00,0x45,0x29,0x38,0xce,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x84,0x10,
+0x63,0x08,0x84,0x08,0x83,0x00,0x84,0x08,0x63,0x00,0x63,0x08,0x63,0x00,0x83,0x08,
+0xa4,0x08,0xa4,0x10,0x84,0x08,0xa4,0x08,0xc4,0x08,0xc5,0x10,0xa4,0x08,0x84,0x08,
+0x63,0x00,0x84,0x08,0x84,0x00,0x84,0x08,0xa4,0x08,0xe5,0x10,0xa5,0x08,0xc5,0x10,
+0x84,0x08,0x84,0x08,0xa5,0x10,0xe7,0x18,0x85,0x08,0x65,0x08,0xa5,0x08,0x07,0x11,
+0xe6,0x10,0x65,0x08,0x44,0x00,0x05,0x21,0x06,0x4a,0x90,0xbc,0x7d,0xff,0xff,0xff,
+0xfe,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xbf,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x83,0x00,0x83,0x08,0x83,0x00,0x63,0x00,0x83,0x00,0xc4,0x08,0xa4,0x08,
+0xa4,0x08,0xa4,0x08,0xa4,0x08,0x83,0x08,0xa4,0x08,0x83,0x00,0xc4,0x10,0xc4,0x08,
+0xc4,0x08,0x84,0x00,0xc5,0x08,0xc5,0x10,0xc5,0x10,0xc5,0x08,0xa5,0x08,0x63,0x00,
+0x84,0x00,0x64,0x00,0x84,0x08,0x84,0x00,0x85,0x08,0x45,0x00,0x65,0x00,0x65,0x00,
+0xa6,0x08,0xa5,0x08,0xa6,0x08,0xa6,0x08,0x42,0x08,0xe7,0x41,0xce,0x8b,0xf1,0xc4,
+0xd1,0xc4,0x3c,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xf7,0xff,0xff,0xff,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0x64,0x08,0x84,0x08,0xa5,0x08,0x84,0x00,0xa5,0x08,
+0x64,0x00,0x84,0x00,0x84,0x00,0xa5,0x08,0x63,0x00,0x64,0x00,0x63,0x00,0x64,0x00,
+0x64,0x00,0x84,0x00,0x64,0x00,0x84,0x08,0x84,0x00,0x84,0x08,0x84,0x00,0x84,0x08,
+0x64,0x00,0x64,0x00,0x63,0x00,0x84,0x00,0x84,0x00,0xa5,0x08,0x64,0x00,0x45,0x00,
+0x65,0x00,0xa6,0x08,0x85,0x08,0x65,0x08,0x64,0x00,0x86,0x00,0x42,0x00,0x2f,0x94,
+0x77,0xe6,0x72,0xdd,0x4e,0xb4,0x53,0xc5,0x58,0xde,0xdf,0xff,0xff,0xff,0xff,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x84,0x00,0xa4,0x08,0xa4,0x00,
+0x84,0x00,0xc5,0x08,0x06,0x11,0xe5,0x10,0xe6,0x10,0xe5,0x10,0x47,0x19,0x47,0x19,
+0x47,0x19,0x26,0x19,0x06,0x19,0xe6,0x10,0x06,0x19,0x26,0x19,0x68,0x21,0x88,0x19,
+0x68,0x21,0x67,0x21,0x88,0x29,0x67,0x21,0x88,0x29,0xa8,0x29,0x68,0x21,0x26,0x11,
+0x88,0x21,0xa9,0x29,0x89,0x21,0x47,0x19,0x47,0x21,0x47,0x21,0x68,0x29,0x43,0x00,
+0xc9,0x39,0xf6,0xcd,0x7a,0xff,0x71,0xdd,0xd4,0xed,0xed,0xab,0x4b,0x8b,0xb6,0xbd,
+0xff,0xff,0xff,0xff,0xdf,0xff,0xbe,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xc6,0x10,
+0xc5,0x10,0xa5,0x10,0xc5,0x08,0xc6,0x10,0xa5,0x08,0xa5,0x08,0xc5,0x08,0xe6,0x10,
+0x63,0x00,0x64,0x08,0x84,0x08,0xa5,0x08,0x64,0x00,0x64,0x08,0x63,0x00,0x43,0x00,
+0x43,0x00,0x43,0x00,0x42,0x00,0x43,0x00,0x22,0x00,0x23,0x00,0x22,0x00,0x43,0x00,
+0x43,0x00,0x43,0x00,0x43,0x00,0x63,0x00,0x63,0x00,0x84,0x00,0x43,0x00,0x43,0x00,
+0x22,0x00,0x01,0x00,0x91,0xa4,0x76,0xf6,0xf2,0xed,0xb2,0xed,0x52,0xe5,0x97,0xfe,
+0xb4,0xdd,0x24,0x31,0x6e,0x63,0xbf,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,
+0xff,0xff,0x47,0x19,0x88,0x29,0x88,0x29,0xa9,0x29,0xa9,0x29,0xa9,0x29,0x88,0x21,
+0xa9,0x29,0xc9,0x29,0x8c,0x42,0x8c,0x42,0x8c,0x42,0xad,0x4a,0xcd,0x4a,0xad,0x4a,
+0xcd,0x52,0x2e,0x5b,0xb1,0x6b,0xd1,0x6b,0xd1,0x73,0xb0,0x6b,0xb1,0x73,0xd1,0x73,
+0xf2,0x73,0xf1,0x73,0x12,0x74,0x12,0x74,0x52,0x7c,0x72,0x7c,0x72,0x7c,0x31,0x7c,
+0x52,0x84,0x51,0x84,0x72,0x8c,0xb0,0x63,0x54,0xc5,0xf2,0xed,0xd1,0xed,0x71,0xd5,
+0x52,0xe5,0xf4,0xfd,0xd4,0xed,0x8d,0x7b,0xf1,0x6b,0xc3,0x10,0x72,0x8c,0xba,0xd6,
+0xdf,0xff,0xff,0xff,0xff,0xff,0x88,0x29,0xa8,0x29,0xc8,0x31,0xa8,0x29,0xa8,0x31,
+0x87,0x29,0x87,0x29,0xa8,0x29,0xa9,0x29,0x88,0x29,0x88,0x29,0x87,0x21,0x88,0x29,
+0x47,0x21,0x67,0x21,0x67,0x21,0x68,0x21,0x67,0x21,0x88,0x21,0x67,0x21,0x48,0x21,
+0x68,0x29,0xa9,0x29,0x47,0x21,0x47,0x21,0x06,0x19,0x27,0x19,0x26,0x19,0x26,0x19,
+0x06,0x19,0x26,0x19,0x05,0x11,0x05,0x19,0xc4,0x10,0xa3,0x10,0x75,0xb5,0x96,0xf6,
+0x70,0xd5,0x51,0xd5,0x73,0xe5,0xf9,0xfe,0x57,0xe6,0x08,0x42,0x67,0x19,0x25,0x29,
+0x0c,0x63,0xf4,0xa4,0xbe,0xf7,0xff,0xff,0xff,0xff,0x00,0x00,0x01,0x00,0x00,0x00,
+0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x01,0x00,0x01,0x00,
+0x02,0x00,0x01,0x00,0x43,0x00,0x42,0x00,0x63,0x00,0x43,0x00,0x43,0x00,0x22,0x00,
+0x43,0x00,0x43,0x00,0x64,0x00,0x43,0x00,0x64,0x00,0x64,0x00,0x64,0x00,0x43,0x00,
+0x84,0x08,0x84,0x00,0x85,0x08,0x64,0x00,0xc4,0x08,0xe4,0x10,0xa4,0x10,0x22,0x00,
+0x74,0xb5,0x75,0xe6,0x71,0xd5,0x92,0xd5,0xd4,0xed,0xb8,0xfe,0xd5,0xdd,0xc3,0x18,
+0x00,0x00,0x0d,0x6b,0x9e,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa8,0x21,
+0x87,0x21,0xa8,0x21,0x88,0x21,0x88,0x29,0x67,0x21,0x88,0x29,0xa9,0x29,0xc9,0x29,
+0xc9,0x29,0xc9,0x29,0xa8,0x21,0x88,0x21,0xc9,0x29,0xea,0x31,0xe9,0x29,0xea,0x29,
+0xc9,0x29,0xe9,0x29,0xe9,0x29,0x0a,0x3a,0xe9,0x31,0xea,0x31,0xe9,0x31,0xea,0x31,
+0xe9,0x31,0xea,0x31,0x0a,0x32,0x2b,0x3a,0x0a,0x32,0x2b,0x3a,0xe9,0x31,0xc9,0x29,
+0x88,0x21,0xc5,0x10,0xf5,0xbc,0x77,0xfe,0xf3,0xe5,0x14,0xde,0xb3,0xdd,0xf5,0xe5,
+0x12,0xbd,0xa4,0x18,0x00,0x00,0x1c,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xe9,0x29,0xe9,0x29,0xe9,0x29,0xc9,0x31,0xc9,0x29,0xea,0x31,0xe9,0x31,
+0xc9,0x29,0xa9,0x21,0xe9,0x29,0xc9,0x29,0xca,0x29,0xc9,0x29,0xa9,0x29,0xa9,0x29,
+0xca,0x29,0xc9,0x29,0xca,0x29,0xc9,0x21,0xc9,0x29,0x88,0x21,0xa9,0x21,0xa9,0x21,
+0xca,0x29,0xa9,0x29,0xca,0x29,0xa9,0x29,0xc9,0x29,0x88,0x21,0xa9,0x21,0x89,0x21,
+0xc9,0x29,0xc9,0x29,0xa8,0x29,0xa5,0x08,0xd1,0x93,0xf6,0xe5,0x15,0xee,0xd2,0xdd,
+0x14,0xee,0x94,0xd5,0x30,0x9c,0x24,0x21,0x7a,0xd6,0xff,0xff,0xdf,0xff,0x9e,0xf7,
+0xdf,0xff,0xff,0xff,0xff,0xff,0x48,0x19,0x27,0x11,0x47,0x19,0x27,0x11,0x28,0x19,
+0x68,0x19,0x68,0x19,0x06,0x11,0x07,0x11,0x27,0x11,0x47,0x19,0x68,0x19,0xaa,0x29,
+0x48,0x19,0x49,0x19,0x48,0x19,0x68,0x19,0x48,0x19,0x68,0x19,0x47,0x19,0x48,0x19,
+0x47,0x19,0x48,0x19,0xe6,0x10,0xe6,0x10,0xe6,0x08,0x06,0x11,0xc6,0x08,0xc6,0x08,
+0xc5,0x08,0xc6,0x08,0xc5,0x08,0xe7,0x10,0xe6,0x08,0xa6,0x00,0x07,0x19,0x35,0xb5,
+0x3b,0xff,0xf5,0xfd,0xd4,0xed,0x50,0xac,0x8d,0x83,0x35,0x9d,0xff,0xff,0xff,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x84,0x00,0xa5,0x08,0xa5,0x00,
+0x85,0x08,0x85,0x00,0x85,0x08,0x84,0x00,0xc5,0x08,0xc5,0x08,0xe5,0x08,0xc4,0x00,
+0xa5,0x00,0x44,0x00,0x85,0x00,0x85,0x00,0xa5,0x00,0x84,0x00,0x85,0x00,0x84,0x00,
+0xa4,0x00,0xa4,0x00,0xa5,0x00,0x84,0x00,0xa5,0x00,0x84,0x00,0xa5,0x00,0x84,0x00,
+0xa5,0x08,0xa5,0x00,0xc5,0x08,0x84,0x00,0xc6,0x08,0xe6,0x08,0xe7,0x10,0xc6,0x00,
+0x63,0x00,0x08,0x3a,0xee,0x8b,0x33,0xdd,0x2f,0xb4,0x79,0xde,0xff,0xff,0xff,0xff,
+0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0x9e,0xf7,0xff,0xff,0xff,0xff,0x85,0x08,
+0x85,0x00,0xa5,0x08,0xa5,0x08,0xa5,0x08,0x84,0x00,0x85,0x08,0x84,0x00,0x84,0x08,
+0x84,0x00,0x84,0x00,0x85,0x00,0xc6,0x08,0xa5,0x08,0xc6,0x10,0xc6,0x08,0xe5,0x08,
+0xc5,0x08,0xc6,0x08,0xa5,0x00,0xa5,0x00,0xa5,0x00,0xe6,0x10,0xc5,0x08,0xe6,0x08,
+0xc5,0x08,0xe6,0x10,0xc5,0x08,0xc5,0x08,0xa5,0x00,0xc5,0x08,0xa5,0x00,0xc6,0x00,
+0xc5,0x00,0xc6,0x08,0xe7,0x00,0x01,0x00,0x00,0x00,0xad,0x9b,0x17,0xde,0xbe,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,
+0xff,0xff,0x84,0x00,0xa5,0x00,0x84,0x00,0xa5,0x08,0xa5,0x00,0xa5,0x08,0xa5,0x00,
+0x84,0x00,0x84,0x00,0xa4,0x00,0x84,0x00,0xa5,0x00,0x85,0x00,0xa5,0x00,0xa5,0x00,
+0xc6,0x00,0xc5,0x00,0xe5,0x00,0xc5,0x00,0xc5,0x00,0xa5,0x00,0xc5,0x00,0xa5,0x00,
+0xc6,0x08,0xc5,0x00,0xc5,0x08,0xa5,0x00,0xc5,0x08,0xa5,0x00,0xa5,0x00,0xa5,0x00,
+0xc6,0x08,0xc5,0x00,0xe6,0x08,0xa5,0x00,0x64,0x00,0x00,0x00,0x61,0x10,0xd2,0xa4,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xa6,0x08,0xa5,0x00,0xc6,0x08,0x64,0x00,0xa5,0x00,
+0x85,0x00,0x85,0x00,0x84,0x00,0xa5,0x00,0x43,0x00,0x43,0x00,0x64,0x00,0x86,0x00,
+0xa6,0x00,0xc6,0x08,0xa5,0x00,0xa5,0x00,0xa5,0x00,0xa5,0x00,0x85,0x00,0xa5,0x00,
+0xa5,0x00,0xa5,0x00,0x84,0x00,0x85,0x00,0x64,0x00,0x64,0x00,0x43,0x00,0x44,0x00,
+0x64,0x00,0xa5,0x00,0x64,0x00,0x64,0x00,0x64,0x00,0xe6,0x00,0xa3,0x08,0x44,0x31,
+0xea,0x6a,0x1c,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x23,0x00,0x23,0x00,0x02,0x00,
+0x24,0x00,0x03,0x00,0x24,0x00,0x23,0x00,0x43,0x00,0x43,0x00,0xc5,0x00,0xa4,0x00,
+0x64,0x00,0x24,0x00,0x23,0x00,0x03,0x00,0x23,0x00,0x02,0x00,0x23,0x00,0x02,0x00,
+0x22,0x00,0x02,0x00,0x23,0x00,0x22,0x00,0x43,0x00,0x43,0x00,0x84,0x00,0xa4,0x00,
+0xa4,0x00,0x84,0x00,0xa5,0x00,0xc5,0x00,0xe5,0x00,0xa5,0x00,0x44,0x00,0xa5,0x00,
+0x71,0x3b,0x9f,0xdf,0xff,0xff,0xff,0xff,0xdf,0xf7,0xde,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8a,0x09,
+0x69,0x01,0x8a,0x09,0xca,0x09,0xab,0x09,0xaa,0x09,0xcb,0x09,0xea,0x09,0xeb,0x11,
+0xaa,0x09,0xcb,0x09,0xcb,0x09,0xeb,0x11,0x0b,0x12,0x0c,0x12,0x2c,0x12,0x4d,0x1a,
+0x2c,0x12,0x4d,0x1a,0x2c,0x12,0x4c,0x12,0x2c,0x12,0x4d,0x1a,0x2c,0x12,0x2c,0x12,
+0x0b,0x12,0x0c,0x12,0x0c,0x0a,0x0c,0x12,0x0b,0x0a,0xeb,0x11,0x0c,0x0a,0x4d,0x0a,
+0x2c,0x0a,0xec,0x09,0xeb,0x01,0x36,0x95,0x7d,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x8e,0x12,0xaf,0x1a,0xaf,0x1a,0x6e,0x12,0x6d,0x12,0x8e,0x12,0x6e,0x12,
+0x8f,0x12,0x8e,0x12,0xaf,0x12,0x8e,0x12,0xaf,0x12,0x8e,0x12,0x8e,0x12,0x6e,0x12,
+0x8f,0x12,0xaf,0x0a,0xaf,0x12,0xaf,0x12,0xaf,0x12,0xaf,0x0a,0xaf,0x12,0x8f,0x0a,
+0xaf,0x12,0x8e,0x0a,0xcf,0x12,0xd0,0x12,0xf0,0x1a,0xf0,0x12,0xd0,0x1a,0xaf,0x12,
+0xf0,0x12,0xef,0x12,0x30,0x1b,0x31,0x13,0x0c,0x0a,0x08,0x3a,0x8c,0x83,0xb9,0xde,
+0xff,0xff,0xde,0xff,0xde,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x90,0x02,0x90,0x02,0xb1,0x0a,0xf1,0x0a,0xf2,0x0a,
+0x11,0x0b,0x12,0x0b,0xf1,0x0a,0xf2,0x0a,0xb0,0x02,0xd1,0x02,0xf1,0x02,0x12,0x0b,
+0xf1,0x0a,0xf2,0x0a,0xf1,0x02,0xf2,0x02,0xf2,0x02,0xf2,0x0a,0xf2,0x02,0x12,0x0b,
+0xf2,0x02,0xf2,0x02,0xd1,0x02,0xd1,0x02,0xd1,0x02,0xf2,0x02,0xf1,0x02,0x12,0x03,
+0xf2,0x02,0x12,0x03,0xf1,0x02,0xf2,0x02,0x12,0x03,0x53,0x03,0x70,0x02,0x34,0x84,
+0x54,0xd5,0x6e,0xc4,0x32,0xbd,0x5d,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0x02,0xf2,0x02,0xd0,0x02,
+0xd1,0x02,0xd1,0x02,0xf1,0x02,0xd1,0x02,0xd1,0x02,0xb1,0x02,0x12,0x03,0xf2,0x02,
+0xd1,0x02,0xd1,0x02,0xf2,0x02,0xd1,0x02,0xf2,0x02,0x13,0x03,0x13,0x03,0xf2,0x02,
+0x13,0x03,0x32,0x03,0x13,0x03,0x12,0x03,0x33,0x03,0x33,0x03,0x33,0x03,0x33,0x03,
+0x53,0x03,0x53,0x03,0x33,0x03,0x12,0x03,0x32,0x0b,0x32,0x0b,0x74,0x03,0x33,0x03,
+0x51,0x3b,0x52,0x94,0x13,0xcd,0xb0,0xc4,0x4e,0xa4,0x94,0xbd,0xba,0xe6,0xff,0xff,
+0xff,0xff,0xdf,0xff,0xff,0xff,0xde,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x12,0x0b,
+0x12,0x0b,0x12,0x0b,0x32,0x03,0x12,0x03,0x12,0x03,0x33,0x0b,0x12,0x03,0x13,0x03,
+0x32,0x03,0x33,0x0b,0x12,0x03,0x32,0x0b,0x32,0x03,0x53,0x0b,0x33,0x0b,0x33,0x0b,
+0x12,0x03,0x13,0x0b,0x33,0x03,0x53,0x0b,0x32,0x03,0x33,0x03,0x33,0x03,0x53,0x03,
+0x53,0x03,0x53,0x0b,0x53,0x03,0x74,0x03,0x73,0x03,0x74,0x03,0x32,0x0b,0x32,0x1b,
+0x74,0x03,0xb2,0x02,0x10,0x84,0xb0,0xbc,0x6f,0xac,0x71,0xc4,0x11,0xc5,0x2e,0xac,
+0x30,0xac,0x7e,0xf7,0xff,0xff,0xff,0xff,0xbe,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x11,0x03,0x32,0x0b,0x32,0x03,0x33,0x03,0x32,0x03,0x33,0x03,0x32,0x03,
+0x33,0x03,0x32,0x03,0x53,0x03,0x33,0x03,0x53,0x0b,0x32,0x03,0x53,0x03,0x53,0x03,
+0x53,0x0b,0x33,0x03,0x54,0x0b,0x53,0x03,0x54,0x0b,0x53,0x03,0x73,0x0b,0x53,0x03,
+0x53,0x03,0x53,0x03,0x53,0x03,0x53,0x03,0x53,0x03,0x53,0x03,0x73,0x03,0x53,0x03,
+0x32,0x0b,0x11,0x0b,0x74,0x03,0x34,0x03,0xb1,0xb4,0xce,0xd4,0x4f,0xbc,0x70,0xb4,
+0xf1,0xcc,0xf0,0xd4,0x70,0xc4,0x4f,0x63,0xbc,0xc6,0xff,0xff,0xde,0xff,0x9d,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0x33,0x0b,0x33,0x0b,0x53,0x0b,0x53,0x03,0x54,0x0b,
+0x33,0x03,0x53,0x03,0x53,0x03,0x54,0x0b,0x53,0x0b,0x74,0x0b,0x73,0x03,0x94,0x0b,
+0x74,0x0b,0x74,0x0b,0x53,0x0b,0x74,0x0b,0x95,0x0b,0xb5,0x13,0x94,0x0b,0x74,0x0b,
+0x74,0x0b,0xd5,0x13,0xd5,0x13,0xf6,0x1b,0xf6,0x13,0x16,0x14,0x37,0x14,0x58,0x1c,
+0x57,0x1c,0x78,0x1c,0x36,0x14,0x15,0x0c,0x16,0x04,0x17,0x24,0xb0,0xbc,0xce,0xec,
+0x6f,0xcc,0xb0,0xbc,0xf1,0xc4,0x93,0xf5,0x32,0xe5,0xad,0x5a,0xed,0x01,0x7f,0xdf,
+0xff,0xff,0xff,0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0x53,0x03,0x73,0x0b,0x53,0x03,
+0x74,0x03,0x73,0x03,0x73,0x03,0x53,0x03,0x73,0x0b,0x73,0x03,0x74,0x0b,0x73,0x03,
+0x94,0x03,0x73,0x03,0x94,0x0b,0x93,0x03,0x94,0x0b,0x74,0x03,0x95,0x0b,0x94,0x03,
+0x94,0x0b,0x94,0x03,0x95,0x0b,0x94,0x03,0x94,0x03,0x74,0x03,0x74,0x03,0x73,0x03,
+0x74,0x03,0x73,0x03,0x74,0x03,0x53,0x03,0xd5,0x03,0x36,0x04,0x17,0x04,0xf5,0x33,
+0x4e,0xb4,0x2c,0xe4,0x2e,0xdc,0xae,0xb4,0x11,0xcd,0x10,0xed,0x31,0xed,0x36,0xad,
+0x14,0x13,0xd1,0x13,0x59,0xae,0x3c,0xe7,0xdf,0xff,0xff,0xff,0xff,0xff,0x74,0x0b,
+0x53,0x03,0x74,0x0b,0x74,0x03,0x94,0x0b,0x73,0x03,0x74,0x0b,0x74,0x03,0x94,0x03,
+0x94,0x03,0x95,0x0b,0x74,0x03,0x94,0x03,0x94,0x03,0x94,0x0b,0x94,0x03,0x95,0x0b,
+0x74,0x03,0x74,0x03,0x74,0x03,0xb5,0x03,0x74,0x03,0x74,0x03,0x74,0x03,0x94,0x03,
+0x94,0x03,0x94,0x03,0x53,0x03,0x33,0x03,0x32,0x03,0x33,0x03,0x74,0x03,0xb5,0x03,
+0x74,0x03,0xb5,0x33,0x90,0xb4,0x2d,0xe4,0xcc,0xd3,0xae,0xb4,0xd0,0xc4,0xf0,0xec,
+0xef,0xec,0xf5,0xa4,0x19,0x0c,0x4c,0x02,0xb2,0x74,0x79,0xc6,0xdf,0xff,0xff,0xff,
+0xff,0xff,0x32,0x03,0x53,0x03,0x32,0x03,0x33,0x03,0x32,0x03,0x33,0x03,0x32,0x03,
+0x53,0x03,0x53,0x03,0x53,0x03,0x53,0x03,0x73,0x03,0x53,0x03,0x73,0x03,0x73,0x03,
+0x74,0x03,0x73,0x03,0x94,0x03,0x74,0x03,0x94,0x03,0x73,0x03,0x74,0x03,0x73,0x03,
+0x74,0x03,0x53,0x03,0x53,0x03,0x53,0x03,0x94,0x03,0x94,0x03,0xb4,0x03,0x94,0x03,
+0x95,0x0b,0x75,0x0b,0x96,0x03,0xf1,0x02,0x31,0x74,0x91,0xb4,0x70,0xc4,0x2c,0xb4,
+0x4d,0xcc,0x6d,0xd4,0xaf,0xd4,0x72,0x84,0x6d,0x01,0x9e,0xb6,0xff,0xff,0xff,0xff,
+0xbe,0xff,0xff,0xff,0xff,0xff,0x53,0x0b,0x32,0x03,0x53,0x03,0x12,0x03,0x33,0x0b,
+0x32,0x03,0x33,0x03,0x33,0x03,0x53,0x0b,0x53,0x0b,0x53,0x0b,0x53,0x03,0x53,0x03,
+0x53,0x03,0x73,0x0b,0x53,0x03,0x53,0x0b,0x73,0x03,0x94,0x0b,0x73,0x03,0x73,0x03,
+0x73,0x03,0x94,0x0b,0x94,0x0b,0x94,0x13,0x94,0x0b,0xb4,0x0b,0x73,0x03,0x53,0x03,
+0x53,0x03,0x73,0x03,0x33,0x0b,0x14,0x13,0x34,0x03,0x32,0x03,0x50,0x33,0xd4,0x8c,
+0x34,0xb5,0x2e,0xc4,0x4d,0xcc,0x31,0xed,0xb0,0xcc,0xed,0x4a,0x15,0x34,0xdf,0xff,
+0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0x32,0x03,0x33,0x03,0x32,0x03,
+0x32,0x0b,0x32,0x03,0x53,0x0b,0x12,0x03,0x12,0x03,0x11,0x03,0x12,0x03,0x12,0x03,
+0x32,0x03,0x12,0x03,0x32,0x03,0x31,0x03,0x32,0x03,0x12,0x03,0x33,0x03,0x12,0x03,
+0x32,0x03,0x32,0x03,0x53,0x03,0x32,0x03,0x53,0x03,0x32,0x03,0x53,0x03,0x32,0x03,
+0x53,0x03,0x52,0x03,0x53,0x03,0x52,0x03,0x33,0x13,0xf3,0x1a,0x54,0x0b,0x74,0x03,
+0xd0,0x0a,0x32,0x54,0x14,0x95,0x2e,0xcc,0xcf,0xdc,0xaf,0xcc,0xef,0xa3,0xed,0x42,
+0x5e,0xe7,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd1,0x0a,
+0xd0,0x02,0xd1,0x0a,0xb0,0x02,0xd1,0x0a,0xd0,0x0a,0xd1,0x0a,0xb0,0x02,0xb0,0x0a,
+0xb0,0x02,0xd1,0x0a,0xd0,0x02,0xf1,0x02,0xd0,0x02,0xf1,0x0a,0xd0,0x02,0xd1,0x02,
+0xd0,0x02,0xd1,0x0a,0xd0,0x02,0xd1,0x02,0xd0,0x02,0xf1,0x0a,0xf1,0x02,0xf1,0x02,
+0xd0,0x02,0xf1,0x0a,0xf1,0x02,0xf1,0x02,0xf1,0x02,0x11,0x0b,0xd0,0x0a,0xd1,0x12,
+0xf2,0x02,0x34,0x03,0xf3,0x02,0xae,0x02,0xeb,0x2a,0xef,0xcb,0x2d,0xcc,0xad,0x9b,
+0x30,0x9c,0x3d,0xe7,0xff,0xff,0xff,0xff,0xdf,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x6e,0x02,0x6e,0x02,0x6e,0x02,0x4e,0x02,0x4e,0x02,0x6e,0x02,0x4e,0x02,
+0x6f,0x02,0x6e,0x02,0x8f,0x0a,0x6e,0x0a,0x6f,0x0a,0x8e,0x02,0x8f,0x02,0x6e,0x02,
+0x6f,0x02,0x6f,0x02,0x6f,0x02,0x6f,0x02,0x8f,0x0a,0x6e,0x02,0x8f,0x0a,0x6f,0x02,
+0x8f,0x0a,0x6f,0x02,0x6f,0x0a,0x6f,0x02,0x8f,0x0a,0x6f,0x02,0x8f,0x0a,0x8f,0x02,
+0xaf,0x0a,0xae,0x02,0xb0,0x02,0x72,0x02,0xd4,0x02,0x8e,0x02,0xcc,0x1a,0xf0,0xc3,
+0x6a,0xab,0x73,0xbd,0x1d,0xef,0xff,0xff,0xdc,0xff,0xfe,0xff,0xff,0xff,0xdf,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0x2e,0x0a,0x2e,0x02,0x2e,0x02,0x2d,0x02,0x4d,0x0a,
+0x2d,0x02,0x4e,0x0a,0x4d,0x0a,0x6e,0x12,0x4d,0x0a,0x4e,0x0a,0x4d,0x0a,0x6e,0x0a,
+0x4d,0x0a,0x4e,0x0a,0x4e,0x0a,0x4f,0x12,0x4e,0x0a,0x4f,0x0a,0x4e,0x0a,0x6f,0x0a,
+0x6e,0x02,0x6f,0x0a,0x4e,0x0a,0x6f,0x0a,0x4e,0x0a,0x6f,0x12,0x6e,0x0a,0x6f,0x0a,
+0x6e,0x0a,0x6f,0x0a,0x8e,0x02,0xae,0x02,0x8f,0x02,0x71,0x0a,0x93,0x02,0x10,0x03,
+0x4e,0x23,0x6f,0xb3,0xec,0xab,0xfa,0xe6,0xff,0xff,0xff,0xf7,0xdc,0xff,0xfe,0xff,
+0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xec,0x09,0xec,0x09,0xeb,0x01,
+0xeb,0x09,0xeb,0x09,0xec,0x11,0xeb,0x09,0x0c,0x12,0xec,0x11,0xec,0x11,0xeb,0x09,
+0x0c,0x12,0x0c,0x0a,0x0c,0x12,0xeb,0x09,0x0c,0x0a,0xec,0x09,0x0d,0x12,0xec,0x09,
+0x0c,0x0a,0x0c,0x0a,0x0d,0x0a,0xec,0x09,0xec,0x11,0xec,0x09,0xec,0x11,0xec,0x09,
+0x0c,0x12,0xec,0x09,0x0d,0x12,0x0c,0x0a,0x2c,0x0a,0x2c,0x02,0x0c,0x0a,0xee,0x11,
+0x30,0x0a,0x0a,0x02,0xe8,0x11,0xcb,0x82,0x1c,0xff,0xff,0xff,0xdf,0xff,0xdf,0xf7,
+0xfd,0xff,0xfe,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x29,0x09,
+0x08,0x01,0x29,0x09,0x08,0x01,0x28,0x09,0x28,0x09,0x29,0x09,0x08,0x01,0x08,0x09,
+0xe7,0x00,0x08,0x01,0x08,0x01,0x28,0x01,0x07,0x01,0x28,0x01,0x08,0x01,0x08,0x01,
+0xe7,0x00,0xe8,0x00,0xe8,0x00,0x08,0x01,0xe7,0x00,0xe8,0x00,0xe7,0x00,0xe8,0x00,
+0xe7,0x00,0x08,0x01,0xe7,0x00,0xe8,0x00,0x07,0x01,0x08,0x01,0xe8,0x00,0xe9,0x00,
+0xc6,0x00,0x63,0x00,0xce,0x4a,0x1d,0xe7,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,
+0xfe,0xff,0xfe,0xff,0xdf,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,
+0xff,0xff,0xe7,0x10,0xe7,0x18,0xc7,0x10,0xc7,0x18,0xc6,0x10,0xc7,0x18,0xa6,0x10,
+0xa6,0x18,0x85,0x10,0xa6,0x10,0x85,0x10,0x86,0x10,0x85,0x10,0xa5,0x10,0xa5,0x10,
+0xa6,0x10,0xa5,0x10,0xa6,0x10,0xa6,0x10,0xa6,0x10,0x85,0x10,0xa6,0x10,0x85,0x10,
+0x86,0x18,0x86,0x10,0x86,0x18,0x85,0x10,0x86,0x18,0x85,0x10,0x86,0x18,0x86,0x10,
+0xa7,0x18,0x86,0x20,0x86,0x20,0x43,0x18,0x90,0x7b,0x3e,0xe7,0xff,0xff,0xfe,0xff,
+0xff,0xf7,0xff,0xf7,0xff,0xff,0xdf,0xf7,0xdf,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,
+0xff,0xf7,0xff,0xff,0xff,0xff,0xe7,0x30,0xe7,0x30,0x07,0x31,0x85,0x28,0xc6,0x30,
+0xa6,0x30,0xc6,0x30,0xa5,0x30,0xc6,0x30,0xa5,0x30,0xc6,0x38,0xa5,0x30,0xa6,0x38,
+0x85,0x30,0xa6,0x38,0xa5,0x38,0xa6,0x40,0xc6,0x40,0xe7,0x40,0xa5,0x38,0x86,0x40,
+0xa6,0x40,0xc6,0x40,0xc6,0x40,0xc6,0x40,0xa6,0x38,0xc6,0x40,0xc6,0x40,0xe7,0x50,
+0xc7,0x48,0xc7,0x48,0xc6,0x48,0xc7,0x50,0xc7,0x50,0x29,0x61,0x22,0x18,0x30,0x8c,
+0x5d,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xf7,0xff,0xff,0xff,0xff,0xdf,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa5,0x38,0xc6,0x40,0xc6,0x38,
+0xc6,0x48,0x86,0x48,0x86,0x40,0x85,0x40,0xc6,0x48,0xc6,0x48,0xa6,0x48,0xa5,0x40,
+0xc6,0x50,0xc6,0x50,0xe7,0x50,0xe6,0x50,0xe6,0x50,0xa6,0x48,0xa6,0x50,0xa6,0x50,
+0xc6,0x50,0xa6,0x48,0xc6,0x50,0xc6,0x48,0xc6,0x50,0xc6,0x50,0xe7,0x50,0xc6,0x50,
+0xe7,0x58,0xe6,0x50,0xe7,0x58,0xc6,0x50,0xa6,0x58,0x85,0x58,0xa7,0x58,0x45,0x50,
+0x43,0x48,0x29,0x7a,0xef,0xab,0x95,0xc5,0xdf,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,
+0xdf,0xff,0xbf,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x51,
+0xe6,0x48,0xc7,0x48,0xe7,0x58,0xe7,0x58,0xc6,0x50,0xc7,0x50,0xa6,0x50,0xa6,0x50,
+0xa6,0x50,0xc7,0x50,0xa6,0x50,0xa6,0x50,0xc6,0x50,0xe8,0x58,0xc7,0x58,0xa6,0x58,
+0x86,0x50,0x86,0x50,0xa6,0x50,0xe7,0x50,0xc6,0x48,0xc6,0x50,0xe7,0x50,0x07,0x59,
+0xc6,0x50,0xa6,0x50,0xa6,0x48,0xa6,0x50,0xa6,0x48,0xa6,0x50,0x86,0x50,0xc7,0x60,
+0xc7,0x60,0x24,0x48,0x87,0x71,0xcf,0xb3,0x30,0xb4,0x2b,0x93,0x59,0xde,0xff,0xff,
+0xff,0xff,0xff,0xff,0xdf,0xff,0xdf,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xa6,0x48,0xa6,0x48,0x65,0x40,0x86,0x50,0xa6,0x48,0xe8,0x58,0xe7,0x58,
+0xc7,0x58,0xa6,0x50,0xe7,0x60,0xe7,0x58,0xc7,0x58,0x86,0x50,0x65,0x50,0x65,0x48,
+0xa6,0x58,0xc7,0x58,0xc7,0x58,0x86,0x50,0xc7,0x58,0xe7,0x58,0xe7,0x58,0xa7,0x58,
+0xa7,0x58,0x86,0x50,0xc6,0x58,0xc7,0x58,0xc7,0x58,0xa6,0x50,0xc7,0x58,0xa6,0x50,
+0xe7,0x60,0x07,0x69,0xc8,0x60,0x24,0x48,0x6f,0xab,0x71,0xc4,0xee,0xab,0x6c,0x93,
+0x50,0xac,0x5d,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xc7,0x60,0xc7,0x60,0xe8,0x68,0xa7,0x60,0xa7,0x60,
+0x66,0x58,0x86,0x58,0xc7,0x60,0xe8,0x70,0xc7,0x68,0xe7,0x68,0xc7,0x60,0xc7,0x60,
+0xe7,0x68,0x08,0x69,0xc7,0x60,0xa6,0x60,0x86,0x58,0xa6,0x60,0x86,0x60,0x87,0x70,
+0x86,0x68,0xa7,0x68,0xa6,0x68,0xa7,0x70,0xa7,0x70,0xa7,0x70,0x86,0x68,0xa7,0x70,
+0x87,0x68,0xa7,0x70,0x86,0x60,0x86,0x58,0x64,0x48,0xea,0x79,0x71,0xc4,0x90,0xcc,
+0x0d,0xb4,0x50,0xbc,0x6c,0x9b,0xce,0xab,0xf3,0xcc,0x9f,0xff,0xff,0xff,0xff,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x45,0x58,0x25,0x60,0x04,0x58,
+0x65,0x58,0x45,0x58,0x65,0x58,0x44,0x50,0x25,0x58,0x04,0x58,0x66,0x60,0x66,0x60,
+0x86,0x60,0xa6,0x60,0xc7,0x68,0xc7,0x68,0x29,0x79,0xaa,0x81,0x8b,0x89,0x8a,0x81,
+0xaa,0x81,0xaa,0x71,0xcb,0x79,0xeb,0x81,0x0c,0x82,0x0b,0x82,0x4d,0x8a,0x6d,0x92,
+0x8e,0x92,0xad,0x8a,0xae,0x92,0x8d,0x8a,0xcf,0xa2,0xaf,0xb2,0x8f,0xa2,0x12,0xc4,
+0x70,0xc4,0x6e,0xbc,0x8f,0xc4,0x2e,0xb4,0x2f,0xbc,0xb1,0xcc,0xce,0xa3,0x00,0x00,
+0x79,0xce,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x29,0x79,
+0x49,0x81,0x6a,0x81,0xab,0x81,0xcb,0x89,0x0c,0x92,0x4d,0x9a,0x2d,0x9a,0x4d,0xa2,
+0x8e,0xaa,0xaf,0xaa,0xae,0xa2,0xcf,0xaa,0xaf,0xa2,0xcf,0xaa,0x8e,0xa2,0x4d,0x9a,
+0x6d,0x9a,0x8e,0xa2,0x6e,0x9a,0x6e,0x9a,0x6d,0x9a,0xae,0xa2,0x8e,0x9a,0xae,0xa2,
+0x8d,0x9a,0x8e,0x9a,0xae,0x9a,0xce,0x9a,0xae,0x92,0xce,0x9a,0x8e,0x9a,0x6e,0xa2,
+0x6d,0x92,0x0e,0xa3,0x8f,0xbc,0x10,0xcd,0xf0,0xcc,0x11,0xd5,0xb0,0xc4,0x94,0xe5,
+0x33,0xd5,0xe9,0x71,0x01,0x28,0xd4,0xac,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x86,0x60,0x86,0x60,0x86,0x60,0xc6,0x60,0x86,0x58,0x86,0x58,0x65,0x58,
+0x86,0x60,0x45,0x58,0x03,0x50,0x03,0x48,0x04,0x50,0x24,0x50,0x24,0x50,0x24,0x50,
+0x04,0x48,0x02,0x40,0x03,0x40,0x02,0x40,0x03,0x48,0x03,0x48,0x03,0x50,0x02,0x48,
+0x03,0x50,0x02,0x48,0x02,0x48,0x01,0x40,0x02,0x48,0x02,0x48,0x02,0x48,0x02,0x40,
+0x03,0x48,0x02,0x40,0x00,0x28,0x45,0x61,0xd0,0xc4,0x30,0xcd,0xae,0xbc,0xcf,0xc4,
+0xb0,0xc4,0x52,0xcd,0x53,0xd5,0x2e,0xa3,0x8a,0x79,0x00,0x18,0x72,0x9c,0xfb,0xe6,
+0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0x70,0xc7,0x68,0x08,0x71,0x07,0x69,0x28,0x69,
+0xe7,0x68,0x08,0x69,0xe7,0x68,0x08,0x71,0x08,0x71,0x28,0x71,0x08,0x69,0x28,0x71,
+0x49,0x71,0x49,0x79,0x49,0x71,0x69,0x71,0x69,0x71,0x69,0x71,0x48,0x71,0x69,0x79,
+0x69,0x79,0x8a,0x79,0x89,0x71,0x89,0x79,0xaa,0x79,0xeb,0x81,0xcb,0x81,0xeb,0x89,
+0xcb,0x81,0xeb,0x81,0xaa,0x89,0xab,0x91,0x8a,0x81,0x47,0x71,0x4f,0xb4,0x52,0xd5,
+0xcf,0xbc,0x8f,0xbc,0x11,0xcd,0x15,0xe6,0x12,0xcd,0x26,0x61,0x08,0x69,0x01,0x20,
+0xf0,0x8b,0x59,0xd6,0xdf,0xff,0xff,0xff,0xff,0xff,0x48,0x71,0x89,0x79,0x69,0x71,
+0x8a,0x79,0x89,0x79,0x89,0x79,0x89,0x79,0x89,0x79,0x89,0x79,0xcb,0x81,0xaa,0x81,
+0xaa,0x79,0xaa,0x79,0xaa,0x81,0xaa,0x79,0xaa,0x81,0xaa,0x79,0xcb,0x81,0xaa,0x79,
+0xca,0x79,0xca,0x71,0xca,0x71,0xa9,0x69,0xaa,0x71,0xa9,0x71,0xeb,0x79,0xea,0x79,
+0xeb,0x79,0xeb,0x79,0x0b,0x7a,0x0a,0x72,0xaa,0x81,0x69,0x89,0x6a,0x81,0x26,0x69,
+0x6d,0xa3,0xd1,0xc4,0xf1,0xcc,0x8f,0xbc,0x11,0xc5,0x56,0xee,0x94,0xd5,0xc3,0x40,
+0x43,0x38,0x4a,0x5a,0x3d,0xe7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x49,0x79,
+0x48,0x71,0x28,0x71,0x48,0x71,0x49,0x79,0x48,0x71,0x49,0x79,0x28,0x71,0x49,0x79,
+0x69,0x79,0x69,0x79,0x49,0x71,0x49,0x79,0x28,0x69,0x08,0x71,0x49,0x71,0xaa,0x79,
+0x69,0x79,0x8a,0x81,0x89,0x71,0xaa,0x71,0x89,0x69,0x69,0x71,0x69,0x69,0x89,0x71,
+0x68,0x69,0x69,0x69,0x68,0x69,0x89,0x71,0x69,0x69,0x69,0x69,0x49,0x71,0x6a,0x81,
+0x49,0x79,0x48,0x79,0x29,0x82,0x2f,0xbc,0x32,0xd5,0xf1,0xcc,0xb0,0xbc,0x97,0xf6,
+0x15,0xe6,0xa2,0x38,0x00,0x08,0x1e,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,
+0xff,0xff,0x85,0x60,0x85,0x60,0x65,0x58,0x86,0x60,0x85,0x60,0x85,0x60,0x85,0x58,
+0x86,0x60,0x85,0x58,0x85,0x60,0x65,0x60,0x65,0x60,0x45,0x58,0xa6,0x68,0x86,0x68,
+0x86,0x60,0x45,0x58,0x45,0x58,0x45,0x58,0x45,0x60,0x25,0x60,0x45,0x60,0x04,0x58,
+0x25,0x58,0x04,0x58,0x25,0x60,0x24,0x58,0x45,0x60,0x24,0x60,0x45,0x68,0x25,0x60,
+0x44,0x58,0x43,0x50,0x65,0x58,0x03,0x50,0x02,0x48,0xa7,0x79,0x4d,0xab,0xd1,0xc4,
+0x12,0xcd,0xce,0xab,0xce,0xab,0xd7,0xd5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x24,0x50,0x03,0x50,0x24,0x50,0x03,0x50,0x24,0x58,
+0x23,0x58,0x24,0x58,0x04,0x58,0x25,0x58,0x04,0x58,0x24,0x58,0x04,0x58,0x25,0x60,
+0x25,0x60,0x25,0x60,0x45,0x60,0x86,0x68,0x66,0x68,0x66,0x68,0x65,0x60,0x86,0x68,
+0x45,0x58,0x25,0x58,0x24,0x58,0x45,0x58,0x45,0x58,0x65,0x60,0x45,0x60,0x46,0x60,
+0x45,0x60,0x45,0x60,0x65,0x60,0xc6,0x60,0xa7,0x60,0xe8,0x70,0x45,0x60,0xc6,0x70,
+0x09,0x8a,0xf2,0xcc,0x4e,0xb4,0x0b,0x9b,0xce,0xab,0x9e,0xff,0xff,0xff,0xdf,0xf7,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x43,0x50,0x43,0x58,0x23,0x50,
+0x64,0x58,0x63,0x50,0x84,0x58,0x63,0x50,0x64,0x58,0x44,0x50,0x64,0x58,0x64,0x58,
+0x84,0x58,0x84,0x58,0x64,0x58,0x63,0x50,0x64,0x58,0x43,0x58,0x44,0x58,0x44,0x58,
+0x64,0x50,0x43,0x50,0x64,0x50,0x64,0x50,0x64,0x58,0x44,0x58,0x64,0x58,0x44,0x58,
+0x65,0x58,0x64,0x58,0x64,0x58,0x44,0x58,0x64,0x58,0x63,0x50,0x44,0x50,0x43,0x50,
+0x24,0x58,0x02,0x50,0x84,0x58,0xcb,0x9a,0xd2,0xb4,0x9d,0xef,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xdf,0xf7,0xff,0xff,0xff,0xff,0x83,0x50,
+0x62,0x50,0x63,0x58,0xa3,0x48,0xa3,0x50,0xa3,0x48,0xa4,0x50,0x83,0x50,0xa3,0x50,
+0x82,0x50,0xa3,0x50,0xa3,0x50,0xa3,0x48,0xa2,0x48,0xa3,0x50,0x83,0x48,0x84,0x50,
+0x83,0x50,0x84,0x58,0x83,0x50,0xa4,0x50,0x83,0x48,0x83,0x50,0x63,0x50,0x63,0x50,
+0x43,0x50,0x43,0x50,0x43,0x50,0x63,0x58,0x43,0x50,0x64,0x58,0x84,0x58,0xc4,0x60,
+0x84,0x58,0x84,0x58,0x23,0x58,0x00,0x28,0x00,0x18,0xed,0x92,0xbf,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,
+0xff,0xff,0x82,0x50,0xa3,0x50,0x83,0x50,0x83,0x50,0x82,0x48,0xa3,0x50,0xa2,0x50,
+0x83,0x50,0x82,0x50,0x82,0x50,0x82,0x50,0xa2,0x50,0x81,0x48,0xa2,0x48,0x81,0x48,
+0x82,0x50,0x62,0x50,0x62,0x50,0x62,0x50,0x83,0x50,0x82,0x48,0xa3,0x48,0x82,0x48,
+0x83,0x50,0x62,0x50,0x63,0x50,0x63,0x50,0x63,0x50,0x63,0x50,0x83,0x50,0x83,0x50,
+0xa3,0x58,0x82,0x50,0x83,0x50,0x82,0x58,0x22,0x48,0x00,0x18,0x65,0x29,0x9a,0xce,
+0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xf7,0xff,0xff,0xff,0xff,0x41,0x48,0x41,0x40,0x61,0x48,0x00,0x48,0x21,0x50,
+0x21,0x48,0x21,0x50,0x00,0x48,0x21,0x50,0x21,0x50,0x41,0x50,0x20,0x48,0x41,0x50,
+0x20,0x48,0x21,0x48,0x20,0x48,0x21,0x50,0x20,0x50,0x21,0x50,0x00,0x50,0x21,0x50,
+0x20,0x50,0x41,0x50,0x41,0x48,0x61,0x50,0x41,0x48,0x61,0x50,0x61,0x48,0x62,0x50,
+0x41,0x48,0x21,0x48,0x20,0x40,0x20,0x48,0x00,0x40,0x00,0x38,0xa2,0x48,0x93,0xb4,
+0x3c,0xf7,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x40,0x40,0x40,0x40,0x40,
+0x00,0x50,0x00,0x50,0x21,0x50,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x48,
+0x00,0x50,0x00,0x48,0x00,0x50,0x00,0x48,0x00,0x50,0x00,0x50,0x00,0x58,0x00,0x50,
+0x00,0x50,0x00,0x50,0x00,0x58,0x20,0x58,0x20,0x58,0x00,0x50,0x20,0x58,0x00,0x50,
+0x20,0x58,0x00,0x58,0x20,0x58,0x20,0x58,0x20,0x58,0x20,0x58,0x40,0x58,0x00,0x40,
+0x05,0x89,0x9b,0xfe,0xff,0xff,0xff,0xff,0x9e,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xe2,0x80,
+0xe2,0x80,0xe3,0x80,0xe3,0x88,0x03,0x89,0x03,0x89,0x04,0x89,0xe3,0x88,0xe3,0x90,
+0xe3,0x88,0x03,0x89,0xc3,0x88,0xe3,0x90,0xc2,0x88,0xc3,0x90,0xc2,0x90,0xe2,0x90,
+0xe1,0x90,0xe2,0x90,0xe2,0x90,0xe2,0x90,0xe2,0x90,0xe3,0x98,0xc2,0x98,0xe3,0x98,
+0xc2,0x98,0xc3,0xa0,0xe3,0xa0,0xe3,0xa0,0xa2,0x98,0x82,0x90,0xa1,0x90,0xc2,0x98,
+0xa2,0x98,0xe2,0xa0,0x41,0x90,0x00,0x60,0x00,0x58,0x54,0xc5,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,
+0xff,0xff,0xa1,0x88,0xa2,0x88,0x81,0x88,0xa2,0x88,0xa1,0x80,0xc2,0x88,0xa1,0x80,
+0xa2,0x88,0xa1,0x80,0xe3,0x90,0xe3,0x90,0xc2,0x90,0xa2,0x90,0xc2,0x90,0xa2,0x90,
+0xc2,0x98,0xc1,0x90,0xe2,0x98,0xc2,0x90,0xe2,0x98,0xc2,0x98,0xc2,0x98,0xc1,0x98,
+0xe2,0x98,0xc2,0x98,0xc2,0x98,0xc2,0x98,0xe3,0x98,0xe2,0x98,0xc2,0x98,0xa1,0x90,
+0xa2,0x90,0xa1,0x90,0xa1,0x90,0x60,0x88,0x82,0x98,0x02,0x98,0x84,0x98,0xcd,0x9b,
+0x7c,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,
+0xbf,0xff,0xff,0xff,0xff,0xff,0xc3,0xa0,0x82,0xa0,0xa2,0xa0,0x81,0x90,0xa2,0x98,
+0xc2,0x98,0xc2,0x98,0xa1,0x90,0xa2,0x98,0x81,0x90,0xa2,0x98,0x82,0x90,0xa2,0xa0,
+0xa1,0x98,0xa2,0xa0,0xa2,0x98,0xa3,0xa0,0x82,0x98,0xa2,0xa0,0xa2,0x98,0xa2,0xa0,
+0x82,0xa0,0xa2,0xa0,0x82,0x98,0xa2,0xa0,0x81,0x98,0x82,0x98,0x81,0x98,0xa2,0xa0,
+0xa2,0xa0,0xe3,0xa8,0xe3,0xa0,0x04,0xa9,0xe3,0xa0,0xe3,0xa0,0x82,0xa0,0x00,0xa0,
+0x83,0xa0,0x71,0xc4,0x70,0xb4,0x3c,0xf7,0xff,0xff,0xff,0xff,0xde,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0x81,0x98,0x82,0xa0,0x61,0x98,
+0xc2,0x98,0xa2,0x98,0xa2,0x98,0xa1,0x98,0xa2,0x98,0x82,0x98,0x82,0x98,0x81,0x90,
+0x81,0x98,0x81,0xa0,0xc2,0xa0,0xa2,0xa0,0xa3,0xa8,0x82,0xa0,0x82,0xa0,0x41,0x98,
+0x62,0xa0,0x62,0xa0,0xa3,0xa8,0x82,0xa0,0xa3,0xa8,0x82,0xa0,0x83,0xa0,0x62,0x98,
+0xa3,0xa0,0xa2,0xa0,0x83,0xa0,0x62,0x98,0x82,0xa0,0x62,0x98,0x82,0xa0,0x82,0xa0,
+0x82,0xa8,0x00,0x98,0xc3,0xa0,0x13,0xd5,0x91,0xbc,0x12,0xbd,0x57,0xd6,0xff,0xff,
+0xdf,0xff,0xdf,0xff,0xff,0xf7,0xde,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0x61,0x98,
+0x60,0x90,0x81,0x98,0xa2,0x98,0x82,0xa0,0x60,0x90,0x81,0x98,0xa2,0xa0,0xc2,0xa0,
+0xa1,0xa0,0xa2,0xa0,0xa1,0xa0,0xa2,0xa8,0x81,0xa0,0xa2,0xa8,0x82,0xa0,0x83,0xa8,
+0x62,0x98,0x42,0xa0,0x42,0xa0,0x83,0xa8,0x83,0xa0,0x83,0xa8,0x63,0xa8,0x63,0xa8,
+0x63,0xa8,0xa4,0xb0,0xa3,0xb0,0xa4,0xb0,0x83,0xa8,0x83,0xb0,0x63,0xa8,0x63,0xa8,
+0x63,0xa8,0xa4,0xb8,0x62,0xa8,0xe4,0xb0,0x08,0xba,0xf2,0xd4,0xb5,0xe5,0x4b,0x93,
+0x09,0x7b,0xfb,0xee,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,
+0xff,0xff,0xc2,0x98,0xe2,0x98,0xc2,0x98,0x82,0xa0,0x81,0xa0,0xc2,0xa0,0xa2,0xa0,
+0xc2,0xa8,0xa2,0xa0,0xc3,0xa8,0xa2,0xa0,0xa3,0xa8,0xa2,0xa0,0xa2,0xa8,0xa2,0xa0,
+0xa3,0xa8,0x84,0xa0,0xc4,0xa8,0xc4,0xa8,0xc4,0xa8,0xa3,0xa8,0xc4,0xa8,0xa4,0xa8,
+0xa4,0xb8,0xa4,0xb0,0x84,0xb8,0x63,0xb0,0x84,0xb8,0x83,0xb0,0x84,0xb8,0x63,0xb0,
+0x84,0xb8,0xa4,0xb8,0xa4,0xb8,0x43,0xb0,0x21,0xa0,0x4b,0xcb,0x94,0xf5,0x72,0xcd,
+0x54,0xe5,0x52,0xd5,0xd0,0xbc,0xa9,0x92,0xaf,0xb3,0xde,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0x98,0xc2,0x90,0xa2,0x90,0xc3,0xa8,0xc3,0xa8,
+0x82,0xa0,0xa2,0xa0,0x82,0xa0,0x82,0xa0,0x62,0xa0,0x82,0xa0,0x61,0xa0,0x82,0xa0,
+0x82,0xa0,0xa2,0xa0,0x82,0xa0,0x84,0xa8,0x83,0xa0,0xa4,0xa8,0x63,0xa0,0x63,0xa0,
+0x63,0xa0,0x83,0xa0,0x63,0xa0,0x83,0xa8,0x42,0xa0,0x22,0xa0,0x21,0x98,0x22,0xa0,
+0x42,0xa0,0x63,0xa0,0x42,0x98,0x22,0xa0,0x22,0x98,0x01,0x98,0x21,0x98,0x2f,0xdc,
+0x76,0xee,0x93,0xcd,0x33,0xdd,0xf5,0xed,0x72,0xcd,0x26,0x82,0x00,0x68,0x14,0xcd,
+0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0x04,0xa9,0x45,0xb9,0x45,0xb1,
+0x65,0xb9,0x45,0xb9,0x45,0xb9,0x45,0xb1,0x86,0xc1,0xa6,0xc1,0xa7,0xc9,0xa6,0xc1,
+0xa7,0xc1,0xa7,0xc1,0xe8,0xc9,0xc8,0xc9,0xe8,0xc9,0xe7,0xc9,0xe7,0xc9,0xc7,0xc1,
+0x28,0xca,0x69,0xd2,0x8a,0xda,0x89,0xd2,0x8a,0xda,0x89,0xd2,0x89,0xd2,0x48,0xca,
+0x49,0xca,0x48,0xca,0x89,0xd2,0x89,0xd2,0x8a,0xd2,0x89,0xd2,0x89,0xd2,0x07,0xca,
+0xaa,0xca,0xd1,0xcc,0xf4,0xd5,0xd0,0xd4,0xd0,0xcc,0x32,0xd5,0xf1,0xd4,0x4b,0xcb,
+0x09,0xf2,0x61,0x88,0x8d,0x9b,0x94,0xbd,0xbf,0xff,0xff,0xff,0xff,0xff,0xe4,0xb0,
+0xc3,0xa8,0xe4,0xb0,0x25,0xb1,0x05,0xb1,0xe3,0xa8,0x04,0xb1,0x04,0xb1,0x05,0xb1,
+0x04,0xb1,0x05,0xb1,0x05,0xb1,0x46,0xb1,0x05,0xa9,0x26,0xb1,0x25,0xb1,0x24,0xb1,
+0x03,0xa9,0xe4,0xa8,0xe3,0xa8,0x24,0xa9,0x23,0xa9,0x24,0xa9,0x03,0xa9,0x24,0xb1,
+0xe3,0xa0,0xc2,0xa0,0xc2,0xa0,0xc3,0xa0,0xc2,0xa0,0xc2,0xa0,0xa2,0x98,0x82,0x98,
+0x61,0x98,0x00,0x90,0x24,0x99,0x4f,0xc4,0x73,0xd5,0x70,0xdc,0x8f,0xbc,0x52,0xd5,
+0x11,0xd5,0xea,0xca,0x00,0xa8,0x04,0xa1,0x13,0xc5,0xfb,0xe6,0xdf,0xff,0xff,0xff,
+0xff,0xff,0xe3,0xa0,0xc4,0xa8,0xa3,0xa0,0xc3,0xa0,0xc3,0x98,0xe4,0xa0,0xe3,0xa0,
+0xe4,0xa8,0xc3,0xa8,0xe4,0xa8,0xc3,0xa8,0xe4,0xa8,0xe3,0xa8,0xe4,0xa8,0xe4,0xa8,
+0x04,0xa9,0xe4,0xa8,0x04,0xb1,0x04,0xa9,0x04,0xa9,0xe3,0xa0,0x04,0xa9,0x04,0xa9,
+0x04,0xa9,0xe3,0xa0,0x24,0xb1,0x24,0xb1,0x25,0xb1,0x04,0xa9,0x04,0xb1,0x04,0xa9,
+0x25,0xb1,0x24,0xb1,0x25,0xb1,0xc3,0xb0,0xe7,0xb1,0x4f,0xcc,0x73,0xdd,0xd0,0xc4,
+0xf0,0xcc,0x72,0xdd,0xf1,0xdc,0x48,0x92,0x09,0x9a,0x3c,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x45,0xa9,0x25,0xa9,0x45,0xa9,0x44,0xa9,0x45,0xb1,
+0x24,0xa9,0x45,0xa9,0x24,0xb1,0x45,0xb1,0x45,0xb1,0x45,0xb9,0x45,0xb1,0x25,0xb9,
+0x45,0xb1,0x45,0xb9,0x45,0xb1,0x46,0xb9,0x26,0xb9,0x46,0xb9,0x45,0xb1,0x46,0xb9,
+0x46,0xb1,0x46,0xb9,0x45,0xb1,0x46,0xb1,0x25,0xb1,0x46,0xb1,0x25,0xa9,0x25,0xb1,
+0x25,0xb1,0x46,0xb1,0x45,0xb1,0x46,0xb9,0x25,0xb9,0x05,0xb9,0xe3,0x88,0x4f,0xcc,
+0x15,0xf6,0x31,0xc5,0xd0,0xc4,0xf2,0xdc,0x2f,0xc4,0xe7,0x81,0x97,0xd5,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0x98,0xe4,0xa0,0xe3,0x98,
+0x03,0xa1,0xe3,0xa0,0xe4,0xa0,0xe3,0x98,0xe3,0xa0,0xc3,0xa0,0xe3,0xa0,0xc3,0xa0,
+0xe3,0xa0,0xc3,0xa0,0xe3,0xa8,0xc3,0xa0,0xe4,0xa8,0xc4,0xa0,0xe4,0xa8,0xc4,0xa0,
+0xe4,0xa8,0xc4,0xa0,0xe4,0xa8,0xc3,0xa0,0xe4,0xa0,0xc3,0xa0,0xe4,0xa0,0xc3,0xa0,
+0xc4,0xa0,0xc3,0x98,0xc4,0xa0,0xe4,0xa0,0xe4,0xa8,0xc3,0xa0,0xe4,0xa8,0xc3,0xa0,
+0x41,0x88,0xea,0xb2,0xf1,0xdc,0xaf,0xb4,0x11,0xc5,0x4b,0x9b,0xa9,0x8a,0x30,0xac,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa3,0x98,
+0xa3,0x90,0xa3,0x98,0xa2,0x90,0xc3,0x98,0xc2,0x90,0xa3,0x98,0x82,0x90,0xa2,0x90,
+0xa2,0x88,0xa2,0x90,0x82,0x90,0x82,0x90,0x82,0x90,0xa2,0x98,0xa2,0x90,0xa3,0x98,
+0x82,0x90,0xa3,0x98,0x83,0x90,0xa3,0x98,0xa2,0x90,0xa3,0x98,0xa2,0x90,0xa3,0x90,
+0xa2,0x90,0xa3,0x90,0x82,0x90,0x82,0x90,0x82,0x90,0xa3,0x90,0xa2,0x90,0xa3,0x90,
+0xa2,0x88,0xa3,0x90,0x21,0x98,0x81,0x90,0xc5,0x91,0x12,0xdd,0xed,0x9b,0xd0,0xac,
+0x36,0xce,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x82,0x88,0x82,0x88,0x62,0x88,0x82,0x90,0x61,0x88,0x82,0x90,0x61,0x88,
+0x82,0x88,0x81,0x80,0xa2,0x88,0x82,0x88,0x82,0x88,0x81,0x80,0xa2,0x88,0x81,0x88,
+0xa2,0x90,0xa2,0x88,0xa2,0x88,0xa2,0x88,0xa2,0x88,0xa1,0x88,0xa2,0x88,0x82,0x88,
+0xa2,0x88,0x81,0x88,0xa2,0x88,0x81,0x88,0x82,0x88,0x61,0x80,0x82,0x88,0x82,0x88,
+0xa2,0x88,0x81,0x88,0xa2,0x88,0xa2,0x88,0x41,0x98,0x00,0x70,0x02,0x79,0x0e,0xc4,
+0xad,0x9b,0x98,0xde,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x82,0x78,0x81,0x70,0x82,0x78,0x61,0x78,0x82,0x80,
+0x61,0x78,0x61,0x78,0xa1,0x70,0xc2,0x78,0xa1,0x70,0xa2,0x78,0xa1,0x70,0xa2,0x78,
+0xa2,0x78,0xc2,0x78,0xa1,0x78,0xc1,0x78,0xa1,0x78,0xc1,0x78,0xa1,0x78,0xc2,0x78,
+0xa1,0x78,0xc1,0x78,0xa1,0x78,0xa2,0x80,0x81,0x78,0xa1,0x78,0xa1,0x78,0xa2,0x80,
+0x81,0x78,0xa1,0x80,0xa1,0x78,0xa1,0x78,0xa1,0x70,0xa1,0x78,0x81,0x98,0x00,0x48,
+0x00,0x18,0x30,0x9c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa1,0x70,0xc2,0x78,0x81,0x70,
+0xa2,0x78,0x81,0x70,0xa2,0x78,0xa1,0x70,0xa2,0x70,0xa1,0x70,0xa1,0x70,0x81,0x68,
+0xa1,0x70,0x81,0x70,0xa1,0x70,0xa1,0x70,0xa1,0x70,0xa0,0x70,0xa1,0x70,0x80,0x68,
+0xa0,0x70,0xa0,0x70,0xa1,0x70,0xa0,0x70,0xa1,0x78,0x80,0x78,0x81,0x78,0x80,0x70,
+0xa1,0x78,0x80,0x70,0xa1,0x78,0x80,0x70,0x80,0x70,0x60,0x68,0x80,0x70,0x80,0x70,
+0x00,0x50,0x81,0x48,0x89,0x72,0x1c,0xe7,0xff,0xff,0xff,0xff,0xdf,0xff,0x9f,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x40,0x58,
+0x40,0x58,0x61,0x58,0x40,0x58,0x80,0x58,0x80,0x58,0xa1,0x60,0x60,0x60,0x60,0x60,
+0x00,0x50,0x00,0x58,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x58,0x00,0x50,0x20,0x58,
+0x20,0x58,0x40,0x60,0x20,0x58,0x00,0x58,0x00,0x50,0x00,0x58,0x00,0x50,0x00,0x58,
+0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x50,0x00,0x58,0x00,0x50,0x00,0x58,
+0x00,0x50,0x20,0x40,0xad,0xa3,0x5b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x00,0x38,0x00,0x40,0x00,0x40,0x00,0x48,0x00,0x40,0x00,0x48,0x00,0x40,
+0x00,0x48,0x00,0x48,0x40,0x58,0x40,0x58,0x40,0x58,0x20,0x50,0x20,0x58,0x20,0x58,
+0x40,0x58,0x40,0x58,0x60,0x60,0x60,0x58,0x80,0x60,0x80,0x60,0x81,0x60,0x60,0x58,
+0x81,0x60,0x80,0x60,0x81,0x68,0x80,0x60,0xa1,0x68,0x81,0x60,0x81,0x68,0x81,0x60,
+0xc1,0x68,0xc1,0x68,0xc1,0x68,0x20,0x48,0x6c,0xb3,0x9d,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xdf,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x82,0x58,0x81,0x50,0xa1,0x50,0x80,0x58,0x81,0x58,
+0xa2,0x58,0xc2,0x60,0xa1,0x60,0xc2,0x60,0xe0,0x68,0xe1,0x68,0xc0,0x68,0xe1,0x70,
+0xc1,0x68,0xe1,0x70,0xe1,0x70,0x02,0x71,0x01,0x71,0x02,0x71,0x22,0x71,0x43,0x79,
+0x42,0x79,0x63,0x81,0x63,0x81,0x84,0x89,0x83,0x81,0x63,0x81,0x63,0x81,0x84,0x89,
+0x83,0x89,0xa4,0x89,0x83,0x81,0xa4,0x89,0x83,0x81,0x42,0x81,0x02,0x69,0xef,0xa3,
+0x59,0xde,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x63,0x71,0x83,0x79,0xa4,0x71,
+0xc4,0x79,0xa3,0x79,0xa3,0x79,0x82,0x79,0x83,0x79,0x62,0x79,0x83,0x79,0x63,0x79,
+0x83,0x81,0x64,0x81,0x64,0x81,0x63,0x81,0x84,0x81,0x63,0x81,0x84,0x81,0x83,0x81,
+0x63,0x81,0x22,0x79,0x84,0x81,0xa4,0x81,0x84,0x81,0x63,0x79,0x63,0x79,0x43,0x79,
+0x63,0x81,0x63,0x79,0x84,0x81,0x83,0x79,0x63,0x81,0x43,0x79,0x63,0x81,0x83,0x81,
+0xe2,0x70,0xe3,0x68,0xc7,0x79,0x30,0x9c,0xbe,0xf7,0xff,0xff,0xfe,0xff,0xff,0xff,
+0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x42,0x71,
+0x42,0x69,0x43,0x71,0x42,0x71,0x63,0x79,0x62,0x71,0x63,0x79,0x22,0x79,0x42,0x79,
+0x83,0x81,0xa4,0x89,0x83,0x81,0x84,0x81,0x63,0x81,0x84,0x81,0x83,0x81,0x84,0x81,
+0x63,0x81,0x63,0x81,0x63,0x81,0x84,0x89,0x63,0x81,0x63,0x81,0x63,0x81,0x63,0x81,
+0x63,0x81,0x83,0x81,0x63,0x81,0x83,0x81,0x63,0x81,0x84,0x89,0x83,0x81,0x84,0x81,
+0x83,0x81,0x83,0x81,0x84,0x81,0x89,0x9a,0xca,0x9a,0x69,0x82,0x55,0xc5,0xde,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x43,0x81,0x63,0x89,0x63,0x81,0x83,0x89,0x62,0x89,0x63,0x89,0x62,0x89,
+0x83,0x89,0x83,0x81,0x63,0x81,0x42,0x81,0x63,0x81,0x42,0x81,0x62,0x81,0x42,0x81,
+0x43,0x81,0x43,0x81,0x63,0x81,0x63,0x81,0x43,0x81,0x22,0x79,0x63,0x89,0x84,0x89,
+0x84,0x89,0x63,0x81,0x83,0x81,0x63,0x81,0x63,0x81,0x63,0x81,0x84,0x81,0x63,0x81,
+0x84,0x89,0x84,0x89,0x84,0x89,0x02,0x81,0xa7,0xa2,0xcb,0xbb,0x0d,0xcc,0xac,0xc3,
+0xe9,0x9a,0x88,0x82,0x8c,0x9b,0xfb,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x63,0x89,0x63,0x81,0x84,0x89,0x63,0x89,0x83,0x89,
+0x63,0x89,0x83,0x89,0x83,0x89,0x84,0x89,0x63,0x81,0x63,0x81,0x62,0x81,0x43,0x89,
+0x42,0x81,0x62,0x81,0x42,0x81,0x63,0x81,0x63,0x81,0x84,0x89,0x43,0x81,0x23,0x81,
+0x63,0x89,0xa4,0x91,0x83,0x81,0x84,0x89,0x83,0x81,0x84,0x89,0x63,0x81,0x84,0x89,
+0x83,0x81,0x84,0x89,0x84,0x89,0xa4,0x91,0x84,0x89,0x23,0x81,0x87,0xa2,0xec,0xc3,
+0x0d,0xcc,0xcc,0xcb,0xe8,0x9a,0xa8,0x8a,0x8c,0x9b,0x1b,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x63,0x81,0xa4,0x89,0x83,0x89,
+0x83,0x91,0x83,0x89,0x83,0x91,0x83,0x89,0xa3,0x89,0x83,0x81,0xa4,0x89,0xa3,0x89,
+0xc4,0x91,0xc4,0x91,0xc4,0x91,0xc4,0x91,0xc4,0x91,0xa4,0x89,0xc5,0x91,0xc4,0x91,
+0xe5,0x91,0xe5,0x91,0xe5,0x91,0xc4,0x89,0x05,0x9a,0x05,0x9a,0x26,0xa2,0x26,0x9a,
+0x26,0x9a,0x05,0x9a,0x26,0x9a,0x05,0x9a,0x26,0x9a,0x05,0x9a,0xc5,0x91,0x67,0xaa,
+0x0d,0xd4,0xec,0xcb,0xac,0xc3,0xab,0xbb,0x0c,0xc4,0x6f,0xcc,0xac,0xab,0x40,0x28,
+0x8d,0x8b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc4,0x89,
+0xc4,0x89,0x05,0x92,0x63,0x81,0xa4,0x91,0xc5,0x91,0xc5,0x99,0xc4,0x89,0xc4,0x89,
+0x83,0x81,0xa3,0x81,0x83,0x81,0xa4,0x89,0xa4,0x89,0xa4,0x89,0x84,0x81,0xa4,0x89,
+0xc4,0x89,0xe5,0x91,0xc4,0x81,0xc4,0x81,0xe4,0x81,0xc4,0x89,0x42,0x79,0x22,0x79,
+0x22,0x79,0x43,0x81,0x22,0x79,0x62,0x79,0x62,0x79,0x63,0x81,0x42,0x79,0xe1,0x70,
+0xa0,0x68,0x8b,0xc3,0x4e,0xcc,0x0d,0xc4,0xed,0xcb,0x2f,0xcc,0x6e,0xcc,0xaa,0xab,
+0x28,0x9b,0x6b,0x9b,0x64,0x51,0xca,0x7a,0xb9,0xde,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x21,0x71,0x42,0x71,0x42,0x71,0x63,0x81,0x62,0x79,0x22,0x79,0x22,0x71,
+0x42,0x71,0x41,0x69,0xc4,0x81,0xc3,0x81,0xa4,0x81,0x84,0x81,0x83,0x81,0x63,0x79,
+0xa4,0x81,0xe4,0x81,0xe5,0x89,0xc4,0x89,0x05,0x8a,0x25,0x8a,0x46,0x8a,0x25,0x8a,
+0x46,0x92,0x46,0x8a,0x46,0x92,0x46,0x92,0x87,0x92,0x87,0x92,0xc7,0x9a,0xc7,0x9a,
+0xc8,0xaa,0xa7,0xa2,0xa8,0xa2,0xab,0xbb,0x4e,0xc4,0xed,0xbb,0xcd,0xc3,0xed,0xc3,
+0x4e,0xcc,0x4d,0xc4,0x2c,0xbc,0x8c,0x9b,0xce,0xab,0x20,0x30,0xb5,0xbd,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x67,0x9a,0x67,0x92,0x87,0x9a,0xa8,0xa2,0xe9,0xaa,
+0x0a,0xb3,0x2a,0xb3,0x2a,0xab,0x4a,0xb3,0x4a,0xab,0x4b,0xb3,0x2a,0xb3,0x4b,0xbb,
+0x6c,0xbb,0x8c,0xbb,0x6c,0xbb,0x8c,0xc3,0x8c,0xbb,0x8c,0xbb,0xac,0xbb,0xed,0xc3,
+0xed,0xc3,0x0e,0xc4,0x2e,0xc4,0x6f,0xcc,0x6f,0xc4,0x6f,0xcc,0x6f,0xc4,0x6f,0xcc,
+0x2e,0xbc,0x0d,0xb4,0xed,0xbb,0x0e,0xcc,0xcd,0xbb,0x70,0xd4,0x6e,0xc4,0x0d,0xc4,
+0xed,0xc3,0x0e,0xc4,0x4e,0xcc,0x53,0xe5,0xf1,0xd4,0xc6,0x69,0xa2,0x40,0x13,0xc5,
+0x9e,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x47,0x9a,0x67,0x9a,0x67,0x9a,
+0xe6,0x91,0x06,0x92,0x27,0x9a,0x27,0x9a,0x67,0x9a,0x67,0x9a,0x06,0x92,0xe5,0x89,
+0x06,0x92,0xe6,0x91,0x06,0x92,0xe6,0x89,0xe6,0x91,0xe6,0x91,0x06,0x92,0x06,0x92,
+0x26,0x92,0x26,0x92,0x47,0x9a,0x26,0x92,0x47,0x92,0x26,0x8a,0x47,0x92,0x46,0x8a,
+0x46,0x82,0x06,0x82,0x46,0x8a,0x67,0x8a,0x05,0x82,0x83,0x71,0x05,0x82,0xec,0xb3,
+0x8e,0xc4,0x2d,0xbc,0x0d,0xc4,0xed,0xc3,0x90,0xd4,0x93,0xed,0xf2,0xdc,0x23,0x51,
+0x44,0x51,0x1b,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc5,0x89,
+0xc5,0x89,0xe6,0x91,0x43,0x79,0x84,0x81,0x64,0x81,0x64,0x89,0x84,0x81,0x84,0x81,
+0x84,0x81,0x84,0x89,0x84,0x81,0x85,0x89,0x64,0x81,0x85,0x89,0x84,0x89,0xa5,0x89,
+0xa5,0x89,0xc5,0x91,0xa5,0x89,0xa5,0x89,0x85,0x89,0xa5,0x89,0xa4,0x81,0xc5,0x81,
+0xa4,0x81,0xc5,0x81,0xa4,0x81,0xa5,0x81,0xc5,0x81,0x06,0x8a,0xc5,0x79,0xa4,0x71,
+0xe5,0x71,0xcd,0xb3,0x6e,0xc4,0x4e,0xc4,0x2e,0xc4,0x2f,0xcc,0x6f,0xcc,0x74,0xed,
+0x91,0xcc,0xa2,0x38,0x92,0xa4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x87,0x9a,0x87,0x9a,0x87,0x9a,0xa7,0xa2,0xa7,0x9a,0xc8,0xa2,0xa7,0x9a,
+0xa8,0xa2,0x87,0x9a,0xa8,0xa2,0x87,0xa2,0xa8,0xa2,0x87,0xa2,0xa8,0xa2,0xa8,0xa2,
+0x88,0xa2,0x67,0x9a,0x88,0xa2,0x87,0x9a,0x87,0xa2,0x66,0x9a,0x67,0x9a,0x67,0x9a,
+0x68,0xa2,0x47,0xa2,0x67,0xa2,0x47,0xa2,0x67,0xa2,0x47,0x9a,0x47,0xa2,0x47,0xa2,
+0x47,0x9a,0x25,0x82,0x05,0x82,0x49,0xab,0x4e,0xcc,0x8f,0xcc,0xb0,0xd4,0xb0,0xc4,
+0x50,0xbc,0xae,0xab,0x71,0xc4,0x9d,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x45,0x82,0x45,0x82,0x45,0x82,0x04,0x7a,0x25,0x82,
+0x45,0x82,0x45,0x82,0x04,0x82,0x04,0x82,0x25,0x82,0x45,0x8a,0x25,0x82,0x25,0x8a,
+0x25,0x82,0x45,0x8a,0x25,0x82,0x45,0x82,0x25,0x82,0x25,0x82,0x25,0x82,0x25,0x8a,
+0x05,0x82,0x25,0x8a,0xe5,0x89,0xe5,0x91,0x05,0x8a,0x05,0x92,0x04,0x8a,0x05,0x8a,
+0xe4,0x89,0x05,0x8a,0xe4,0x89,0xe5,0x89,0xa3,0x79,0xa3,0x79,0x2d,0xcc,0x12,0xe5,
+0xb0,0xd4,0xb0,0xc4,0x6c,0x9b,0x96,0xd5,0x3c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa1,0x59,0x82,0x59,0x81,0x59,
+0x81,0x59,0x81,0x59,0xc2,0x61,0xc2,0x61,0xc2,0x61,0xc2,0x61,0xc2,0x61,0xc1,0x59,
+0xe2,0x61,0xc3,0x61,0xc3,0x61,0xa2,0x61,0xc2,0x61,0xa1,0x59,0xc2,0x59,0xa2,0x59,
+0xc2,0x61,0xc2,0x61,0xa2,0x61,0xa2,0x61,0xc3,0x69,0xc3,0x69,0xa3,0x69,0x81,0x61,
+0xa2,0x61,0x82,0x61,0x82,0x61,0x81,0x59,0x62,0x69,0x62,0x71,0x63,0x71,0x00,0x59,
+0x02,0x61,0x0e,0xbc,0x94,0xdd,0xcd,0x93,0x17,0xd6,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc2,0x61,
+0xa2,0x61,0xe2,0x69,0xa2,0x61,0xc2,0x61,0xa2,0x61,0xc2,0x61,0xa2,0x61,0xc2,0x61,
+0xa1,0x59,0xa2,0x61,0xc2,0x61,0xe3,0x69,0xc2,0x61,0xe3,0x69,0xc2,0x61,0xc3,0x61,
+0xa2,0x59,0xa2,0x59,0x81,0x59,0xc2,0x61,0xa2,0x59,0xa2,0x61,0xa2,0x59,0xa2,0x61,
+0xa2,0x59,0xc3,0x61,0xc2,0x59,0xc2,0x59,0xc2,0x59,0xc2,0x59,0x82,0x61,0x83,0x71,
+0x82,0x69,0xa2,0x69,0xe0,0x48,0xa4,0x61,0xc9,0x7a,0xd1,0xb4,0x9e,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xc2,0x61,0xa2,0x61,0xa2,0x61,0xc2,0x61,0xa2,0x59,0xa1,0x59,0x81,0x59,
+0xa1,0x61,0x61,0x51,0x81,0x59,0x81,0x59,0x82,0x59,0x81,0x51,0x81,0x59,0x61,0x51,
+0xa2,0x59,0xe2,0x59,0xe2,0x59,0xc2,0x59,0xe3,0x61,0xc2,0x59,0xe3,0x61,0xc2,0x59,
+0xc2,0x51,0xa1,0x49,0xe2,0x51,0xe2,0x51,0xe2,0x51,0xc1,0x49,0xe2,0x51,0xe2,0x49,
+0xe2,0x59,0xa2,0x61,0xc2,0x59,0xe1,0x59,0x01,0x41,0x40,0x18,0x63,0x39,0x37,0xd6,
+0xff,0xff,0xde,0xff,0xde,0xff,0xdf,0xf7,0xff,0xf7,0xff,0xf7,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x21,0x21,0x20,0x21,0x21,0x21,0x41,0x21,0x41,0x21,
+0x21,0x19,0x21,0x19,0x21,0x19,0x41,0x19,0x21,0x19,0x41,0x19,0x20,0x11,0x41,0x19,
+0x41,0x19,0x41,0x19,0x20,0x11,0x21,0x11,0x20,0x11,0x21,0x19,0x20,0x11,0x41,0x11,
+0x40,0x11,0x41,0x11,0x60,0x09,0x81,0x11,0x81,0x09,0xa1,0x11,0xa1,0x09,0xc2,0x11,
+0xa1,0x09,0xc1,0x11,0xc1,0x09,0xe2,0x09,0xe1,0x01,0xa1,0x01,0x43,0x0a,0x51,0x7d,
+0x3a,0xc7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x19,0x20,0x21,0x00,0x19,
+0x41,0x21,0x20,0x19,0x21,0x21,0x00,0x19,0x41,0x19,0x21,0x19,0x21,0x19,0x20,0x11,
+0x21,0x19,0x20,0x19,0x41,0x19,0x20,0x11,0x21,0x11,0x00,0x11,0x20,0x11,0x00,0x11,
+0x20,0x11,0x40,0x09,0x40,0x11,0x40,0x09,0x61,0x11,0x60,0x09,0x81,0x11,0xa1,0x09,
+0xc1,0x11,0xa1,0x09,0xc1,0x11,0xa1,0x09,0xc1,0x09,0xc1,0x01,0xe2,0x09,0x80,0x01,
+0x43,0x0a,0x30,0x75,0x3a,0xc7,0xde,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x67,0x0b,
+0x47,0x0b,0x68,0x0b,0x68,0x13,0x88,0x13,0x68,0x13,0x88,0x13,0x88,0x0b,0xa8,0x0b,
+0x87,0x03,0xa8,0x0b,0xa8,0x0b,0xc9,0x0b,0xa8,0x0b,0xc9,0x13,0xc9,0x0b,0xe9,0x13,
+0xc9,0x0b,0xe9,0x13,0xe9,0x0b,0x2a,0x0c,0x09,0x04,0x0a,0x0c,0xe9,0x0b,0x0a,0x14,
+0xe9,0x0b,0xea,0x13,0xe9,0x0b,0x0a,0x14,0xe9,0x0b,0x0a,0x14,0xea,0x0b,0x0a,0x14,
+0x0a,0x0c,0x2b,0x14,0x08,0x04,0x05,0x03,0x64,0x02,0x8d,0x63,0x7e,0xef,0xff,0xff,
+0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xc8,0x0b,0xc8,0x0b,0xc8,0x0b,0x09,0x14,0xc8,0x0b,0xc8,0x0b,0xc8,0x03,
+0xe9,0x0b,0x08,0x04,0x09,0x0c,0x08,0x0c,0x09,0x0c,0x09,0x04,0x09,0x0c,0x29,0x0c,
+0x09,0x0c,0x08,0x04,0xe9,0x0b,0xe9,0x03,0x09,0x04,0xe8,0x03,0x09,0x04,0x29,0x04,
+0x09,0x0c,0xe8,0x03,0x09,0x0c,0x09,0x04,0x09,0x04,0xe8,0x03,0x09,0x04,0x29,0x04,
+0x2a,0x0c,0x09,0x04,0x09,0x04,0xe8,0x03,0x08,0x04,0x28,0x04,0xe8,0x03,0x86,0x32,
+0x75,0xcd,0xbe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbe,0xf7,0xdf,0xff,0xdf,0xff,
+0xff,0xf7,0xff,0xff,0xff,0xff,0xe8,0x03,0xe8,0x03,0xe8,0x0b,0xa7,0x03,0xe9,0x0b,
+0x29,0x14,0x29,0x14,0xe8,0x03,0xe8,0x03,0xa7,0x03,0xc8,0x03,0xc8,0x03,0xe8,0x03,
+0xe8,0x03,0xe8,0x03,0xe8,0x03,0xe8,0x0b,0x08,0x0c,0x29,0x0c,0x29,0x0c,0x4a,0x0c,
+0x09,0x04,0x09,0x04,0x08,0x04,0x09,0x04,0x08,0x04,0x29,0x0c,0x69,0x04,0x8a,0x0c,
+0x49,0x04,0x29,0x04,0x29,0x04,0x4a,0x04,0x4a,0x04,0x8b,0x0c,0x6a,0x0c,0x69,0x04,
+0x68,0x14,0xac,0x84,0x0a,0xa3,0xd6,0xdd,0xbd,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xe8,0x03,0x09,0x0c,0x08,0x04,
+0xa7,0x03,0xc8,0x03,0xe8,0x0b,0xe8,0x03,0x09,0x04,0x08,0x04,0x08,0x04,0x08,0x04,
+0x09,0x04,0x08,0x04,0x28,0x04,0x08,0x04,0x29,0x04,0xe8,0x03,0x08,0x04,0xe7,0x03,
+0x09,0x04,0x29,0x04,0x29,0x04,0x08,0x04,0x29,0x04,0x08,0x04,0x29,0x0c,0x28,0x04,
+0x49,0x0c,0x69,0x04,0x6a,0x0c,0x49,0x04,0x6a,0x0c,0x6a,0x0c,0x6a,0x0c,0x4a,0x04,
+0x29,0x04,0x27,0x04,0x89,0x14,0xce,0x9c,0x0e,0xcc,0xee,0xa3,0x13,0xad,0xde,0xf7,
+0xff,0xff,0xdf,0xff,0xdf,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x09,0x0c,
+0x08,0x04,0x29,0x0c,0x09,0x0c,0x09,0x0c,0xa7,0x03,0xc8,0x03,0xe8,0x03,0x08,0x04,
+0x29,0x04,0x49,0x0c,0x09,0x04,0x09,0x04,0x09,0x04,0x29,0x0c,0x29,0x04,0x29,0x04,
+0x08,0x04,0x09,0x0c,0xe8,0x03,0x29,0x04,0x29,0x04,0x6a,0x0c,0x49,0x0c,0x4a,0x0c,
+0x49,0x0c,0x6a,0x14,0x29,0x04,0x29,0x04,0x49,0x04,0x8a,0x14,0x6a,0x0c,0x4a,0x0c,
+0x29,0x04,0x4a,0x0c,0x8b,0x0c,0xaa,0x04,0x8a,0x1c,0xef,0xb4,0xb1,0xec,0xee,0xab,
+0xcd,0x8b,0xd7,0xcd,0xff,0xff,0xff,0xff,0xbf,0xff,0xbf,0xff,0xdf,0xff,0xff,0xff,
+0xff,0xff,0xe8,0x03,0xe8,0x03,0xe7,0x03,0x29,0x0c,0x49,0x0c,0x6a,0x0c,0x49,0x0c,
+0x49,0x04,0x28,0x04,0x6a,0x0c,0x69,0x0c,0x6a,0x0c,0x49,0x04,0x69,0x0c,0x49,0x0c,
+0x6a,0x0c,0x49,0x04,0x8a,0x0c,0xaa,0x14,0x8a,0x14,0x69,0x0c,0x49,0x0c,0x49,0x04,
+0x6a,0x04,0x69,0x04,0x89,0x04,0x69,0x04,0xab,0x0c,0xca,0x0c,0xaa,0x04,0x8a,0x04,
+0x8a,0x04,0x49,0x04,0x8a,0x04,0xcb,0x04,0xaa,0x0c,0x6b,0x3c,0xae,0x74,0x8f,0xc4,
+0x91,0xe4,0x6f,0xc4,0x2f,0xb4,0x8d,0x9b,0x16,0xbe,0xff,0xff,0xff,0xff,0xbf,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0x09,0x04,0x08,0x04,0x08,0x04,0xe8,0x03,0x29,0x0c,
+0x29,0x04,0x49,0x0c,0x6a,0x0c,0x8a,0x14,0x49,0x04,0x49,0x0c,0x69,0x04,0x6a,0x0c,
+0x69,0x0c,0x8a,0x0c,0x69,0x0c,0x6a,0x0c,0x49,0x04,0x49,0x04,0x49,0x04,0x6a,0x0c,
+0x29,0x0c,0x29,0x0c,0x49,0x04,0x6a,0x04,0x69,0x04,0x6a,0x04,0x49,0x04,0x49,0x04,
+0x28,0x04,0x28,0x04,0x29,0x04,0x6a,0x04,0x49,0x04,0x4a,0x04,0xc6,0x03,0x6c,0x64,
+0xd0,0xac,0xb1,0xd4,0x6f,0xd4,0x90,0xd4,0xd1,0xd4,0xf2,0xd4,0x09,0x4b,0xdf,0xef,
+0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xaa,0x0c,0xab,0x14,0x8a,0x0c,
+0xcb,0x14,0xec,0x1c,0x2d,0x25,0x2c,0x1d,0x0c,0x25,0x0c,0x25,0x6e,0x35,0x8e,0x2d,
+0xaf,0x35,0xcf,0x35,0xcf,0x35,0xcf,0x35,0xcf,0x35,0xcf,0x35,0xf0,0x3d,0xcf,0x35,
+0xf0,0x3d,0xcf,0x3d,0xf0,0x3d,0xcf,0x3d,0xd0,0x4d,0xb0,0x55,0xb0,0x5d,0xb0,0x55,
+0xb1,0x5d,0xb0,0x5d,0xd1,0x65,0xd0,0x5d,0x70,0x5d,0x0f,0x4d,0x2f,0x55,0x2f,0x45,
+0xcf,0x45,0xb1,0xbc,0x32,0xfc,0xd0,0xd4,0x8f,0xc4,0x90,0xd4,0xd2,0xec,0x33,0xe5,
+0x31,0x85,0x01,0x01,0xd3,0x84,0x1c,0xd7,0xff,0xff,0xff,0xff,0xff,0xff,0x6a,0x0c,
+0x69,0x04,0x8a,0x0c,0x8a,0x0c,0xab,0x14,0xaa,0x14,0xcb,0x14,0xab,0x14,0xeb,0x1c,
+0x0c,0x1d,0x0c,0x1d,0xec,0x1c,0xec,0x1c,0xcb,0x14,0xcc,0x1c,0xcb,0x1c,0xec,0x1c,
+0xcb,0x14,0xec,0x1c,0xcb,0x14,0xcc,0x1c,0x8a,0x14,0x8b,0x14,0x6a,0x14,0x8b,0x1c,
+0x6a,0x1c,0x8b,0x24,0x4a,0x1c,0x4a,0x1c,0x4a,0x1c,0x6b,0x1c,0x8b,0x24,0xad,0x2c,
+0x6b,0x1c,0x0a,0x0c,0xcc,0x24,0xd2,0xbc,0x32,0xf4,0xcd,0xb3,0xf0,0xcc,0xb0,0xd4,
+0x90,0xd4,0xd6,0xf5,0x89,0x43,0xc0,0x00,0x75,0x9d,0xdf,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x8a,0x14,0xab,0x14,0x8a,0x14,0xab,0x1c,0xab,0x14,0xab,0x14,0x8a,0x14,
+0x8b,0x14,0x8a,0x14,0x8a,0x14,0x6a,0x14,0xab,0x14,0xab,0x14,0x0c,0x25,0x0c,0x25,
+0x2d,0x25,0x0c,0x25,0x2d,0x25,0x0d,0x25,0x0d,0x25,0x0c,0x25,0x4d,0x2d,0x6d,0x2d,
+0x6e,0x2d,0x6d,0x25,0x6e,0x25,0x6d,0x25,0x6d,0x2d,0x4d,0x25,0x6e,0x2d,0x6e,0x2d,
+0x0d,0x1d,0xab,0x0c,0x0d,0x1d,0x8e,0x1d,0x4d,0x2d,0xf1,0xac,0x15,0xfd,0xf2,0xdc,
+0xb0,0xc4,0xf0,0xc4,0xb4,0xdd,0x94,0xdd,0x60,0x08,0xdb,0xd6,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xcc,0x1c,0xcb,0x1c,0xcb,0x1c,0xcb,0x1c,0xec,0x24,
+0xcb,0x1c,0xcc,0x24,0xab,0x1c,0xcc,0x24,0xab,0x1c,0xcc,0x24,0xec,0x24,0x0d,0x2d,
+0xcc,0x24,0xcc,0x24,0xcc,0x24,0xec,0x2c,0xec,0x24,0x0c,0x25,0xec,0x24,0xed,0x2c,
+0xcc,0x24,0xec,0x2c,0xec,0x24,0x0d,0x25,0xec,0x1c,0x0c,0x25,0x2c,0x25,0x2d,0x2d,
+0x0d,0x2d,0x2d,0x2d,0x0d,0x25,0x2e,0x2d,0x0d,0x2d,0x0d,0x1d,0xcb,0x14,0x52,0xa5,
+0x75,0xfd,0xd2,0xe4,0xd0,0xc4,0x77,0xee,0xd4,0xdd,0xe6,0x59,0x74,0x9d,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4a,0x0c,0x4a,0x14,0x29,0x0c,
+0x6a,0x14,0x49,0x14,0x4a,0x14,0x4a,0x0c,0x4a,0x14,0x4a,0x14,0x6a,0x1c,0x6a,0x14,
+0x6a,0x14,0x49,0x14,0x4a,0x14,0x49,0x14,0x6a,0x14,0x4a,0x14,0x6a,0x1c,0x4a,0x14,
+0x6a,0x14,0x4a,0x14,0x2a,0x14,0x09,0x0c,0x29,0x0c,0x29,0x04,0x49,0x0c,0x28,0x04,
+0x29,0x0c,0x09,0x0c,0x09,0x0c,0xe8,0x03,0x29,0x0c,0x2a,0x0c,0x2a,0x14,0xc8,0x03,
+0xe7,0x03,0xee,0x7c,0x53,0xcd,0x50,0xd4,0x12,0xd5,0xf1,0xb4,0x6f,0x9c,0x0e,0x94,
+0xff,0xf7,0xff,0xff,0xdf,0xff,0xbf,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xa8,0x03,
+0x87,0x03,0xa8,0x03,0xa7,0x03,0xa8,0x0b,0xa7,0x03,0xa8,0x03,0x87,0x03,0xa8,0x0b,
+0xa7,0x03,0xa8,0x0b,0x87,0x03,0x87,0x03,0xa7,0x03,0xc8,0x0b,0xa8,0x0b,0xc8,0x0b,
+0xa8,0x0b,0xc8,0x0b,0xa8,0x03,0xc8,0x0b,0xc8,0x0b,0x09,0x14,0x09,0x04,0x29,0x04,
+0x28,0x04,0x29,0x04,0x49,0x04,0x6a,0x0c,0x49,0x04,0x49,0x04,0xe8,0x03,0xc8,0x03,
+0xe8,0x03,0x6a,0x04,0x86,0x03,0x09,0x2c,0x8d,0x5c,0xf2,0xd4,0x2f,0xbc,0xd1,0xac,
+0xf5,0xbd,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xdf,0xff,0xbf,0xff,0xff,0xff,
+0xff,0xff,0x87,0x03,0x87,0x03,0x67,0x03,0xa8,0x0b,0x87,0x03,0xa7,0x03,0x67,0x03,
+0x87,0x03,0x87,0x03,0x87,0x0b,0x87,0x03,0xa8,0x0b,0x87,0x03,0x67,0x03,0x46,0x03,
+0x67,0x03,0x66,0x03,0x67,0x03,0x67,0x03,0x67,0x03,0x66,0x03,0x87,0x03,0x87,0x03,
+0xc8,0x03,0xc7,0x03,0xc8,0x03,0xa7,0x03,0xc7,0x03,0xa6,0x03,0xa7,0x03,0x86,0x03,
+0xc8,0x03,0xc8,0x03,0xc8,0x03,0xa7,0x03,0xa7,0x03,0x45,0x03,0xa8,0x23,0x90,0xb4,
+0xcf,0xbb,0x38,0xde,0xff,0xff,0xff,0xff,0xdf,0xf7,0xdf,0xff,0xff,0xff,0xbf,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x06,0x03,0x06,0x03,0x26,0x03,0x26,0x03,0x27,0x03,
+0x26,0x03,0x26,0x03,0x06,0x03,0x27,0x0b,0x26,0x0b,0x27,0x0b,0xe6,0x02,0xe6,0x02,
+0xe6,0x02,0xe6,0x02,0xe5,0x02,0xe6,0x0a,0xe6,0x02,0xe6,0x0a,0xe5,0x02,0x06,0x03,
+0x06,0x03,0x06,0x03,0xe6,0x0a,0xe6,0x12,0xc6,0x0a,0xe6,0x12,0xc6,0x0a,0xc6,0x12,
+0xc6,0x0a,0xe6,0x0a,0xa5,0x0a,0xa6,0x0a,0x85,0x0a,0xc6,0x0a,0xe6,0x02,0x20,0x01,
+0xe1,0x08,0xb5,0xb5,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xdf,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xa5,0x0a,0xa6,0x12,0xa5,0x0a,
+0x85,0x02,0x85,0x0a,0xa6,0x12,0xa5,0x0a,0xa5,0x0a,0x85,0x0a,0xc6,0x12,0xa5,0x0a,
+0xa5,0x0a,0xa5,0x0a,0x85,0x0a,0x64,0x0a,0x84,0x0a,0x64,0x02,0x65,0x02,0x64,0x02,
+0x65,0x02,0x64,0x02,0x85,0x02,0x64,0x02,0x65,0x0a,0x44,0x0a,0x65,0x12,0x45,0x0a,
+0x45,0x0a,0x24,0x0a,0x65,0x12,0x85,0x0a,0x85,0x0a,0x45,0x0a,0x66,0x0a,0x65,0x02,
+0xa3,0x09,0xa7,0x3a,0x70,0x84,0x5d,0xe7,0xff,0xff,0xff,0xf7,0xff,0xff,0xdf,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x04,0x12,
+0xe4,0x09,0xe4,0x09,0x25,0x0a,0x25,0x12,0xe4,0x01,0x04,0x0a,0xe3,0x01,0x04,0x0a,
+0x04,0x02,0x04,0x0a,0x04,0x0a,0x04,0x0a,0x03,0x02,0x24,0x0a,0xe4,0x01,0xe4,0x01,
+0xe3,0x01,0x04,0x0a,0xe3,0x01,0xe3,0x01,0xe3,0x01,0xe4,0x01,0xc3,0x01,0xc3,0x01,
+0xc3,0x01,0xe4,0x09,0x04,0x0a,0x04,0x0a,0xc3,0x09,0xa3,0x09,0x82,0x09,0x82,0x09,
+0x82,0x09,0x21,0x01,0x01,0x09,0x78,0xc6,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x41,0x01,0x41,0x01,0x41,0x01,0xe0,0x00,0x00,0x01,0x41,0x01,0x21,0x01,
+0x41,0x01,0x40,0x01,0x61,0x01,0x41,0x01,0x61,0x01,0x41,0x01,0x61,0x01,0x41,0x01,
+0x62,0x01,0x82,0x01,0x82,0x01,0x82,0x01,0x83,0x01,0x82,0x01,0xa3,0x01,0x82,0x01,
+0x82,0x01,0x62,0x01,0x82,0x01,0x82,0x01,0xa3,0x01,0x82,0x01,0xa3,0x01,0xa3,0x01,
+0xc4,0x01,0xc3,0x01,0xc3,0x01,0xa3,0x01,0x83,0x01,0x02,0x09,0x27,0x32,0xfb,0xce,
+0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xa2,0x01,0x82,0x01,0x82,0x01,0x82,0x01,0xa3,0x01,
+0x82,0x01,0xa2,0x01,0xa2,0x01,0xa2,0x01,0xa2,0x01,0xc3,0x01,0xa2,0x01,0xc3,0x01,
+0xc3,0x01,0xc3,0x01,0xe3,0x01,0x04,0x0a,0xe4,0x01,0x04,0x0a,0xe4,0x01,0xe4,0x01,
+0xe4,0x01,0x04,0x02,0xe4,0x01,0xe4,0x09,0xe4,0x01,0x04,0x0a,0xe4,0x01,0xe4,0x09,
+0x04,0x02,0x25,0x0a,0x25,0x0a,0x46,0x12,0x45,0x0a,0x65,0x0a,0x05,0x0a,0xa1,0x00,
+0x60,0x00,0x6d,0xa3,0x5d,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xdf,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0x04,0x0a,0x04,0x0a,0x03,0x02,
+0x45,0x12,0x24,0x0a,0x04,0x0a,0x04,0x02,0x24,0x02,0x24,0x02,0x25,0x0a,0x24,0x02,
+0x44,0x02,0x24,0x02,0x45,0x0a,0x44,0x0a,0x45,0x0a,0x25,0x02,0x45,0x0a,0x45,0x02,
+0x46,0x0a,0x45,0x0a,0x45,0x0a,0x45,0x02,0x66,0x0a,0x45,0x02,0x66,0x0a,0x45,0x0a,
+0x66,0x0a,0x66,0x0a,0x45,0x0a,0xe4,0x01,0x04,0x02,0x24,0x02,0x25,0x0a,0x04,0x02,
+0x47,0x02,0xe3,0x01,0x03,0x12,0xc8,0x9a,0x52,0xdd,0x7c,0xf7,0xff,0xff,0x9d,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x05,0x0a,
+0x04,0x0a,0x25,0x0a,0xc3,0x01,0x04,0x02,0x25,0x0a,0x45,0x12,0x04,0x0a,0x25,0x0a,
+0x25,0x0a,0x25,0x0a,0x25,0x0a,0x25,0x0a,0x45,0x0a,0x66,0x12,0x25,0x0a,0x25,0x0a,
+0x25,0x02,0x46,0x0a,0x25,0x0a,0x45,0x0a,0x25,0x0a,0x45,0x0a,0x45,0x02,0x45,0x0a,
+0x45,0x02,0x66,0x0a,0x45,0x02,0x46,0x0a,0x45,0x0a,0x66,0x12,0x86,0x0a,0xa7,0x12,
+0x86,0x0a,0xa6,0x12,0x06,0x0a,0x45,0x02,0x07,0x33,0xaf,0xcc,0xec,0xb3,0x56,0xe6,
+0xde,0xff,0xff,0xff,0xdf,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x24,0x02,0x25,0x02,0x24,0x02,0x45,0x0a,0x25,0x02,0x45,0x02,0x25,0x02,
+0x45,0x0a,0x45,0x02,0x66,0x0a,0x65,0x0a,0x66,0x0a,0x45,0x02,0x45,0x02,0x25,0x02,
+0x66,0x0a,0x86,0x02,0x86,0x0a,0x66,0x02,0x86,0x0a,0x86,0x0a,0x86,0x0a,0x66,0x0a,
+0x87,0x0a,0x86,0x02,0xa6,0x0a,0x86,0x0a,0xa7,0x0a,0xa7,0x0a,0xa7,0x0a,0x86,0x02,
+0x86,0x0a,0x66,0x02,0x86,0x0a,0x25,0x02,0x85,0x02,0xd0,0xa4,0x16,0xfe,0x50,0xe5,
+0xce,0xcc,0x4d,0xb4,0x0d,0xa4,0xee,0x93,0x9e,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x46,0x0a,0x45,0x02,0x66,0x0a,0x05,0x02,0x45,0x0a,
+0x45,0x0a,0x66,0x0a,0x45,0x02,0x66,0x0a,0x25,0x02,0x25,0x02,0x45,0x02,0x86,0x0a,
+0x45,0x02,0x45,0x02,0x45,0x02,0x66,0x0a,0x66,0x02,0x86,0x0a,0x66,0x02,0x86,0x0a,
+0x86,0x0a,0x86,0x0a,0x86,0x02,0xa7,0x0a,0x66,0x02,0x45,0x02,0x65,0x02,0x86,0x0a,
+0x66,0x02,0x66,0x02,0x45,0x02,0x66,0x02,0x24,0x02,0xc3,0x01,0xa9,0x3b,0xf1,0xcc,
+0x12,0xfd,0x30,0xdd,0x0f,0xcd,0xd3,0xed,0x32,0xd5,0x89,0x6a,0x50,0x7c,0xff,0xff,
+0xff,0xff,0xff,0xff,0xbe,0xf7,0xff,0xff,0xff,0xff,0x25,0x02,0x45,0x02,0x45,0x02,
+0x45,0x02,0x25,0x02,0x46,0x0a,0x45,0x02,0x25,0x02,0x04,0x02,0x25,0x02,0x04,0x02,
+0xe4,0x01,0xc3,0x01,0x25,0x02,0x04,0x02,0x04,0x02,0xe4,0x01,0x05,0x02,0x04,0x02,
+0x04,0x02,0xe3,0x01,0xe4,0x01,0xa3,0x01,0xc4,0x01,0xc3,0x01,0x04,0x02,0x04,0x02,
+0x24,0x02,0x24,0x02,0x25,0x02,0x24,0x02,0x86,0x0a,0xc7,0x0a,0xa7,0x0a,0x24,0x02,
+0x6d,0x74,0x52,0xe5,0x32,0xfd,0x10,0xd5,0x30,0xcd,0xb3,0xed,0xb4,0xed,0xee,0x93,
+0x82,0x10,0x34,0xa5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x86,0x0a,
+0x86,0x02,0x87,0x0a,0x86,0x0a,0x86,0x0a,0x86,0x02,0x87,0x0a,0xa7,0x0a,0xe8,0x12,
+0x49,0x1b,0x6a,0x23,0x6a,0x23,0x8a,0x23,0x6a,0x23,0x6a,0x2b,0xaa,0x23,0xec,0x2b,
+0xab,0x23,0xab,0x2b,0xec,0x2b,0x4e,0x3c,0x6e,0x3c,0x8f,0x44,0x6e,0x44,0x6e,0x44,
+0x8e,0x3c,0xd0,0x44,0xcf,0x44,0xcf,0x44,0xf0,0x4c,0x31,0x55,0xaf,0x44,0x6e,0x3c,
+0x8e,0x3c,0x8e,0x1c,0x51,0xad,0xb3,0xfd,0xb2,0xf5,0x72,0xdd,0x71,0xd5,0x52,0xe5,
+0x72,0xdd,0xb6,0xcd,0xaf,0x63,0x21,0x00,0x8d,0x6b,0xf8,0xbd,0xbf,0xff,0xff,0xff,
+0xff,0xff,0x28,0x13,0x29,0x1b,0x29,0x1b,0x29,0x1b,0x28,0x13,0x08,0x1b,0x29,0x1b,
+0xab,0x2b,0xab,0x2b,0x49,0x1b,0x29,0x1b,0x6a,0x23,0x8a,0x23,0x49,0x23,0x49,0x1b,
+0x49,0x1b,0x08,0x13,0x29,0x1b,0x29,0x1b,0x29,0x1b,0x08,0x13,0x09,0x13,0xe8,0x0a,
+0x08,0x13,0x08,0x0b,0xc8,0x12,0x86,0x0a,0xa7,0x12,0xa7,0x0a,0xe8,0x12,0xe8,0x12,
+0xa7,0x12,0x45,0x0a,0x86,0x02,0x04,0x02,0x4e,0xac,0x92,0xf5,0x92,0xe5,0x92,0xd5,
+0x93,0xdd,0x92,0xe5,0xb4,0xed,0x75,0xc5,0x87,0x29,0x00,0x00,0x10,0x7c,0x59,0xc6,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xa7,0x12,0xa6,0x0a,0xc7,0x0a,0x86,0x0a,0xa7,0x12,
+0x87,0x0a,0xc7,0x12,0xc7,0x12,0xc8,0x12,0x66,0x0a,0x66,0x0a,0x66,0x0a,0x87,0x0a,
+0x86,0x02,0xa7,0x0a,0xa6,0x02,0xc7,0x0a,0xa7,0x02,0xc8,0x0a,0x86,0x02,0x66,0x02,
+0x66,0x02,0x86,0x02,0x66,0x02,0x86,0x02,0x66,0x02,0x66,0x02,0x66,0x02,0x66,0x02,
+0x66,0x02,0x66,0x02,0x66,0x02,0xa7,0x0a,0x66,0x02,0x04,0x02,0x2d,0x9c,0xb3,0xed,
+0xd2,0xdd,0xb4,0xdd,0x93,0xdd,0x36,0xfe,0x36,0xf6,0x71,0x9c,0x62,0x00,0x86,0x29,
+0x18,0xc6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x86,0x02,0xa7,0x02,0x86,0x02,
+0x87,0x0a,0x86,0x02,0xa7,0x0a,0x86,0x02,0x66,0x02,0x65,0x02,0x08,0x13,0x08,0x13,
+0xc7,0x0a,0x86,0x02,0xe8,0x12,0xe7,0x0a,0xe8,0x0a,0xc7,0x02,0xc7,0x02,0x86,0x02,
+0xe8,0x0a,0x29,0x13,0x29,0x13,0x08,0x0b,0x09,0x13,0xe8,0x0a,0x29,0x13,0x49,0x13,
+0x6a,0x1b,0x49,0x13,0x49,0x13,0x08,0x0b,0x29,0x13,0x29,0x13,0xe8,0x0a,0x66,0x02,
+0x90,0x8c,0xf4,0xe5,0x15,0xf6,0xd3,0xdd,0x32,0xd5,0xf9,0xfe,0xfa,0xf6,0x69,0x52,
+0x00,0x00,0xba,0xd6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc7,0x0a,
+0xa7,0x0a,0xc7,0x0a,0x87,0x0a,0xa7,0x0a,0xa7,0x0a,0xc8,0x12,0x87,0x0a,0x87,0x0a,
+0xa7,0x0a,0xa8,0x12,0x87,0x02,0x87,0x0a,0xa7,0x0a,0xc8,0x12,0xa7,0x0a,0xa8,0x0a,
+0xa7,0x0a,0xa8,0x0a,0x87,0x0a,0xa7,0x0a,0x87,0x0a,0xa7,0x0a,0x87,0x0a,0xa7,0x0a,
+0x87,0x0a,0xa7,0x0a,0x87,0x0a,0x87,0x0a,0x87,0x0a,0xa8,0x12,0xa7,0x0a,0xc7,0x12,
+0xe8,0x12,0xc8,0x0a,0xe4,0x01,0xd2,0xa4,0xdb,0xfe,0x35,0xe6,0x52,0xdd,0x12,0xd5,
+0x2f,0xac,0x4d,0x73,0xbf,0xf7,0xff,0xff,0xbe,0xf7,0xdf,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x45,0x02,0x66,0x0a,0x66,0x0a,0x66,0x12,0x46,0x0a,0x66,0x12,0x66,0x0a,
+0xa7,0x12,0x87,0x12,0xa7,0x1a,0xa7,0x12,0xa7,0x1a,0x87,0x12,0x87,0x12,0x87,0x12,
+0x87,0x12,0x66,0x12,0x67,0x12,0x46,0x12,0x87,0x1a,0xc7,0x1a,0xc7,0x1a,0xa7,0x1a,
+0xa7,0x1a,0xa7,0x12,0xc8,0x1a,0xc7,0x1a,0xc8,0x22,0xa7,0x1a,0xc8,0x22,0xa7,0x1a,
+0xa7,0x1a,0xa7,0x1a,0xe8,0x22,0xc8,0x1a,0xa3,0x09,0xac,0x6b,0xb4,0xcd,0xf4,0xed,
+0x32,0xdd,0xac,0x93,0xcd,0x93,0xba,0xde,0xff,0xf7,0xff,0xff,0xdf,0xff,0xdf,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x67,0x1a,0x67,0x1a,0x87,0x22,0x66,0x1a,0x66,0x22,
+0x66,0x1a,0x87,0x22,0x46,0x1a,0x66,0x1a,0x66,0x1a,0x66,0x1a,0x46,0x1a,0x67,0x22,
+0x87,0x22,0xa7,0x22,0x87,0x22,0x87,0x2a,0x87,0x2a,0xa7,0x2a,0x66,0x22,0x46,0x22,
+0x46,0x22,0x66,0x22,0x45,0x1a,0x66,0x22,0x66,0x1a,0x86,0x22,0x46,0x1a,0x46,0x22,
+0x66,0x22,0xa7,0x2a,0x87,0x2a,0xa7,0x2a,0x87,0x2a,0x87,0x22,0xe4,0x19,0xe8,0x42,
+0x4d,0x7c,0xf5,0xe5,0xcc,0xab,0x74,0xc5,0x1b,0xef,0xff,0xff,0xff,0xff,0xdf,0xff,
+0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5,0x19,0x05,0x22,0xe5,0x19,
+0x04,0x22,0xe4,0x19,0xe4,0x19,0xe4,0x19,0x46,0x2a,0x26,0x22,0x46,0x2a,0x26,0x22,
+0x46,0x2a,0x46,0x22,0x05,0x22,0xe4,0x19,0xe5,0x21,0xe5,0x21,0x05,0x2a,0xe5,0x21,
+0x26,0x2a,0x46,0x32,0x66,0x32,0x46,0x2a,0x66,0x32,0x66,0x32,0x66,0x32,0x46,0x2a,
+0x66,0x32,0x66,0x32,0x26,0x32,0xe4,0x21,0xe4,0x29,0xe4,0x21,0x25,0x2a,0x04,0x22,
+0x87,0x32,0x22,0x01,0x01,0x11,0xed,0x9b,0x94,0xdd,0x9e,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xdf,0xff,0xdf,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5,0x21,
+0xa4,0x21,0xc5,0x21,0x05,0x2a,0x05,0x2a,0x05,0x2a,0x26,0x32,0xe5,0x29,0xe5,0x29,
+0xe5,0x29,0x05,0x2a,0xe4,0x21,0xe5,0x29,0x05,0x2a,0x06,0x32,0x05,0x2a,0x06,0x32,
+0x05,0x32,0x06,0x32,0x05,0x32,0x46,0x3a,0x26,0x32,0x26,0x3a,0x05,0x32,0x26,0x32,
+0x25,0x32,0x25,0x32,0x05,0x32,0x26,0x3a,0x05,0x32,0x06,0x3a,0x05,0x32,0x06,0x3a,
+0xe5,0x31,0x46,0x42,0x46,0x32,0x63,0x11,0x42,0x11,0x2b,0x83,0xfb,0xee,0xff,0xff,
+0xfe,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xc4,0x31,0xc5,0x31,0xa4,0x31,0xe5,0x39,0xe4,0x39,0xe5,0x39,0xe5,0x39,
+0xc5,0x39,0xa4,0x31,0xc5,0x39,0xc4,0x31,0xc4,0x39,0xc4,0x31,0xe5,0x39,0xe5,0x39,
+0xe5,0x41,0xe5,0x39,0xc5,0x41,0xa4,0x39,0xc5,0x39,0xc5,0x39,0xe5,0x41,0xc4,0x39,
+0xc5,0x41,0xe4,0x39,0xe5,0x41,0xa4,0x39,0xc5,0x41,0xc4,0x39,0xe5,0x41,0xc5,0x41,
+0xe5,0x41,0xe5,0x41,0xe5,0x41,0xe5,0x49,0x84,0x31,0x40,0x00,0xe3,0x18,0x55,0xb5,
+0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xa1,0x40,0xa1,0x40,0xc2,0x48,0xa1,0x40,0xc1,0x40,
+0xc1,0x40,0xe1,0x48,0xc1,0x40,0xc2,0x48,0xc1,0x40,0xe2,0x48,0xc1,0x40,0xc2,0x48,
+0xe2,0x48,0x02,0x51,0xe2,0x48,0x03,0x51,0x02,0x51,0x03,0x51,0x23,0x51,0x64,0x61,
+0x63,0x59,0x64,0x61,0x64,0x61,0x64,0x61,0x84,0x61,0xa5,0x69,0x84,0x61,0xa5,0x69,
+0xc5,0x69,0x06,0x72,0x06,0x72,0x07,0x7a,0xc5,0x69,0xa5,0x71,0xf2,0xbc,0xff,0xff,
+0xff,0xff,0xff,0xff,0xdf,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x68,0x8a,0x89,0x92,0x68,0x8a,
+0x0a,0xa3,0xe9,0x9a,0xea,0x9a,0xea,0x9a,0x4b,0xab,0x4b,0xab,0x6c,0xab,0x4b,0xab,
+0x4b,0xab,0x4b,0xa3,0x4b,0xab,0x2b,0xa3,0x4b,0xab,0x4b,0xab,0x8d,0xb3,0xac,0xb3,
+0x8d,0xb3,0x6c,0xab,0x8c,0xb3,0x6c,0xab,0x6c,0xb3,0x6c,0xb3,0xad,0xbb,0xad,0xbb,
+0xcd,0xbb,0xcd,0xbb,0xee,0xc3,0xcd,0xbb,0xee,0xc3,0xee,0xc3,0x2f,0xcc,0xcd,0xc3,
+0xa9,0x9a,0x75,0xcd,0xbe,0xff,0xff,0xff,0xdf,0xf7,0xdf,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x8d,0xbb,
+0x6c,0xb3,0x6d,0xb3,0x6c,0xbb,0xad,0xbb,0x6c,0xb3,0x8d,0xbb,0x8d,0xbb,0xad,0xbb,
+0xad,0xbb,0xcd,0xc3,0xad,0xbb,0xad,0xc3,0xad,0xbb,0xae,0xc3,0x8d,0xbb,0xad,0xc3,
+0xad,0xc3,0xae,0xc3,0xad,0xc3,0xad,0xc3,0xad,0xc3,0xce,0xcb,0xad,0xc3,0xce,0xcb,
+0xad,0xcb,0xce,0xcb,0xad,0xc3,0xce,0xcb,0xce,0xcb,0xef,0xd3,0xee,0xcb,0xee,0xd3,
+0xee,0xcb,0x0f,0xd4,0x8d,0xc3,0x4b,0xa3,0x0e,0xac,0x5d,0xf7,0xff,0xff,0xdf,0xff,
+0xbe,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x6c,0xc3,0x8d,0xc3,0x6c,0xc3,0x8d,0xcb,0x8c,0xc3,0x8d,0xc3,0x6c,0xc3,
+0x8d,0xcb,0x6c,0xc3,0xad,0xcb,0x6d,0xc3,0x8d,0xcb,0x8d,0xc3,0xad,0xcb,0xad,0xcb,
+0xae,0xcb,0xad,0xc3,0xad,0xcb,0xad,0xcb,0xae,0xcb,0xad,0xcb,0xce,0xd3,0xcd,0xcb,
+0xce,0xd3,0xae,0xd3,0xce,0xd3,0xad,0xd3,0xae,0xd3,0xad,0xcb,0xce,0xd3,0xce,0xd3,
+0xee,0xdb,0xce,0xd3,0xee,0xd3,0xee,0xd3,0xee,0xdb,0xcd,0xc3,0xcd,0xb3,0xee,0xab,
+0x3c,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x8d,0xcb,0x8d,0xcb,0xad,0xd3,0xad,0xd3,0xce,0xdb,
+0xcd,0xd3,0xce,0xd3,0xcd,0xd3,0xce,0xdb,0xcd,0xd3,0xee,0xdb,0xcd,0xd3,0xee,0xdb,
+0xee,0xd3,0xee,0xdb,0xce,0xdb,0xee,0xdb,0xee,0xdb,0xee,0xdb,0xee,0xdb,0xef,0xdb,
+0xee,0xdb,0x0f,0xe4,0xee,0xdb,0x0f,0xe4,0xef,0xe3,0x0f,0xe4,0x0f,0xdc,0x0f,0xe4,
+0x0f,0xdc,0x0f,0xdc,0x0f,0xdc,0x0f,0xe4,0x0f,0xdc,0x2f,0xe4,0x0e,0xe4,0xf2,0xf4,
+0xf1,0xdc,0x2a,0xa3,0x90,0xb4,0x5d,0xf7,0xff,0xff,0xfe,0xff,0xfe,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xad,0xcb,0xce,0xd3,0xad,0xd3,
+0xce,0xdb,0xcd,0xd3,0xce,0xdb,0xad,0xd3,0xce,0xdb,0xcd,0xdb,0xee,0xdb,0xee,0xdb,
+0xee,0xdb,0xee,0xdb,0x0f,0xdc,0xee,0xdb,0x0f,0xe4,0x0e,0xdc,0x0f,0xe4,0x0e,0xdc,
+0x0f,0xe4,0xef,0xdb,0x0f,0xe4,0x0f,0xe4,0x0f,0xe4,0x0f,0xe4,0x2f,0xe4,0x0f,0xe4,
+0x30,0xe4,0x0f,0xe4,0x0f,0xe4,0xee,0xdb,0x0f,0xe4,0x0f,0xe4,0x10,0xe4,0x0f,0xe4,
+0x0f,0xec,0x90,0xe4,0xd0,0xdc,0x2d,0xc4,0xac,0x9b,0xd5,0xd5,0x7c,0xff,0xff,0xff,
+0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xce,0xdb,
+0xce,0xd3,0xce,0xdb,0xce,0xdb,0xee,0xdb,0xce,0xdb,0x0e,0xdc,0xee,0xdb,0xee,0xdb,
+0xee,0xdb,0x0f,0xe4,0xee,0xdb,0x0f,0xe4,0x0e,0xdc,0x0f,0xe4,0x0f,0xe4,0x2f,0xe4,
+0x0f,0xe4,0x2f,0xe4,0x0f,0xe4,0x10,0xe4,0x2f,0xe4,0x30,0xe4,0x2f,0xe4,0x50,0xe4,
+0x2f,0xe4,0x50,0xe4,0x30,0xe4,0x50,0xe4,0x2f,0xe4,0x30,0xe4,0x2f,0xe4,0x50,0xe4,
+0x2f,0xe4,0x50,0xec,0x91,0xec,0x70,0xd4,0x2d,0xc4,0x2e,0xc4,0xaf,0xc4,0x2e,0xac,
+0x4e,0xac,0xd9,0xf6,0xff,0xff,0xdf,0xff,0xdf,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,
+0xff,0xff,0x2f,0xdc,0x4f,0xdc,0x0f,0xdc,0x2f,0xe4,0x2f,0xe4,0x2f,0xe4,0x2f,0xe4,
+0x50,0xe4,0x2f,0xe4,0x50,0xec,0x4f,0xe4,0x50,0xe4,0x4f,0xe4,0x50,0xec,0x2f,0xe4,
+0x50,0xec,0x70,0xe4,0x90,0xec,0x90,0xec,0x91,0xec,0x70,0xe4,0x91,0xec,0x91,0xec,
+0x91,0xec,0x90,0xec,0x91,0xec,0x91,0xec,0xb1,0xec,0xb1,0xe4,0xd1,0xec,0xb1,0xec,
+0xd2,0xec,0xd1,0xe4,0xf2,0xec,0xf2,0xfc,0xf2,0xe4,0x8f,0xbc,0x6e,0xb4,0xef,0xd4,
+0x0e,0xcd,0xef,0xc4,0xd0,0xcc,0xee,0xbb,0xaf,0xc3,0xdf,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x71,0xec,0x70,0xe4,0x71,0xec,0x70,0xec,0x91,0xf4,
+0x70,0xec,0x91,0xec,0x90,0xec,0xb1,0xec,0xb1,0xec,0xb1,0xec,0x91,0xec,0xb2,0xf4,
+0x91,0xf4,0xb2,0xf4,0xb1,0xf4,0xd2,0xf4,0xd1,0xf4,0xf2,0xf4,0xb1,0xec,0xd2,0xf4,
+0xd2,0xf4,0xf2,0xf4,0xd2,0xf4,0xf2,0xf4,0xd2,0xf4,0xf2,0xf4,0xf2,0xf4,0x13,0xf5,
+0x32,0xf5,0x33,0xfd,0x32,0xf5,0x33,0xfd,0x33,0xfd,0x74,0xfd,0xf2,0xdc,0xf2,0xc4,
+0xf0,0xc4,0xcf,0xcc,0xcd,0xc4,0xee,0xc4,0xcf,0xcc,0xd1,0xe4,0x8f,0xdb,0xf4,0xcc,
+0x5d,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x70,0xec,0x91,0xec,0x90,0xec,
+0x91,0xec,0x91,0xf4,0x91,0xf4,0x70,0xec,0x70,0xe4,0x90,0xe4,0xd1,0xf4,0xb1,0xec,
+0xb1,0xf4,0x71,0xec,0xd2,0xfc,0xb2,0xf4,0xd2,0xf4,0xd2,0xec,0xd2,0xf4,0xb2,0xec,
+0xd2,0xec,0xd2,0xec,0xf2,0xf4,0xd2,0xec,0xf2,0xf4,0xd2,0xf4,0xd2,0xfc,0xd2,0xf4,
+0xf2,0xfc,0xf1,0xf4,0xf2,0xfc,0xd1,0xf4,0x12,0xf5,0x12,0xf5,0xf2,0xfc,0xf1,0xf4,
+0xf1,0xd4,0x70,0xc4,0x8f,0xc4,0xaf,0xc4,0x30,0xcd,0x0f,0xbd,0x0f,0xcd,0x11,0xe5,
+0x92,0xfc,0x2d,0xbb,0xba,0xe6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x50,0xec,
+0x50,0xe4,0x50,0xec,0x50,0xe4,0x70,0xec,0x50,0xec,0x50,0xec,0x90,0xec,0x91,0xec,
+0x70,0xe4,0x90,0xec,0x91,0xec,0x92,0xf4,0x71,0xec,0x71,0xec,0x71,0xe4,0x71,0xe4,
+0x71,0xe4,0x91,0xec,0x91,0xec,0xb1,0xec,0x91,0xe4,0xb2,0xec,0x91,0xec,0x91,0xec,
+0x91,0xec,0xb2,0xf4,0xb0,0xf4,0xb0,0xf4,0x90,0xec,0xb1,0xf4,0xb0,0xec,0xd1,0xf4,
+0x90,0xf4,0x12,0xfd,0x32,0xdd,0xf1,0xcc,0x90,0xc4,0xd0,0xcc,0x71,0xd5,0x92,0xd5,
+0x71,0xcd,0x32,0xed,0x6d,0xdb,0x11,0xdc,0x1c,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x2f,0xdc,0x50,0xe4,0x50,0xe4,0x70,0xe4,0x6f,0xe4,0x70,0xe4,0x50,0xe4,
+0xb1,0xec,0x90,0xec,0x70,0xec,0x50,0xe4,0x90,0xec,0xb0,0xec,0xb1,0xf4,0xb0,0xec,
+0xf2,0xf4,0xf2,0xf4,0xd1,0xf4,0xb1,0xec,0xd1,0xf4,0xd1,0xec,0xd1,0xf4,0xd1,0xf4,
+0xf1,0xf4,0xd1,0xec,0xd1,0xf4,0xf1,0xf4,0xf2,0xf4,0xf1,0xf4,0xf2,0xf4,0xd1,0xf4,
+0x12,0xf5,0xf2,0xf4,0xd1,0xfc,0x12,0xf5,0x52,0xdd,0x72,0xd5,0x93,0xdd,0x10,0xcd,
+0x31,0xd5,0x31,0xcd,0x72,0xd5,0x32,0xdd,0x48,0x9a,0x99,0xf6,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x91,0xf4,0x91,0xec,0xb2,0xf4,0x91,0xec,0xb2,0xf4,
+0xb1,0xf4,0xb1,0xf4,0x70,0xec,0x71,0xf4,0xb2,0xf4,0xd2,0xfc,0x91,0xf4,0x91,0xf4,
+0xf1,0xf4,0x12,0xfd,0xb1,0xf4,0x90,0xf4,0xd1,0xfc,0x12,0xfd,0xf2,0xfc,0xf2,0xfc,
+0xf1,0xfc,0x12,0xfd,0x11,0xf5,0x12,0xfd,0x11,0xfd,0x32,0xfd,0x12,0xfd,0x13,0xfd,
+0x12,0xfd,0x12,0xfd,0x32,0xf5,0x53,0xfd,0xf2,0xfc,0x32,0xfd,0x31,0xdd,0x72,0xd5,
+0x51,0xd5,0x30,0xd5,0x72,0xdd,0xb3,0xdd,0x32,0xcd,0x0d,0xac,0xf2,0xe4,0xdf,0xff,
+0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0x2f,0xdc,0x4f,0xe4,0x4f,0xe4,
+0x4f,0xe4,0x4f,0xe4,0x70,0xe4,0x2f,0xe4,0x2f,0xec,0x0f,0xec,0x50,0xf4,0x4f,0xec,
+0x4f,0xec,0x4e,0xe4,0x2e,0xdc,0x0d,0xdc,0x2e,0xe4,0x2e,0xec,0x2e,0xec,0x0d,0xe4,
+0x0e,0xe4,0x0e,0xe4,0x2e,0xec,0x0e,0xe4,0x2e,0xe4,0x2e,0xdc,0x4e,0xe4,0x2e,0xdc,
+0x2f,0xe4,0x0f,0xdc,0x2f,0xe4,0x0e,0xdc,0x2f,0xdc,0x2f,0xdc,0x50,0xec,0x70,0xe4,
+0x72,0xdd,0x51,0xd5,0x10,0xcd,0xf0,0xcc,0x73,0xdd,0x12,0xcd,0xd1,0xbc,0xb0,0xb4,
+0x9d,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xdf,0xff,0xff,0xff,0xff,0xff,0x6c,0xd3,
+0x4c,0xd3,0x6d,0xdb,0x6c,0xd3,0x8c,0xd3,0x6c,0xd3,0x6c,0xdb,0x6d,0xdb,0x8d,0xe3,
+0x4c,0xdb,0x4c,0xdb,0x6c,0xdb,0xcc,0xdb,0xec,0xe3,0x0d,0xec,0xed,0xeb,0xed,0xf3,
+0xcd,0xeb,0xcd,0xeb,0xcd,0xeb,0xee,0xeb,0xcd,0xeb,0xee,0xeb,0xed,0xe3,0xed,0xe3,
+0xed,0xe3,0x0e,0xec,0xee,0xe3,0xef,0xe3,0xee,0xe3,0x0f,0xec,0x0e,0xe4,0x0f,0xec,
+0xce,0xe3,0xad,0xdb,0xcc,0xcb,0xf0,0xdc,0x73,0xed,0x53,0xd5,0x6d,0x93,0x74,0xcd,
+0x1a,0xf7,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xf7,0xff,0xff,0xdf,0xff,0xff,0xff,
+0xff,0xff,0x2b,0xe3,0x4c,0xe3,0x4b,0xe3,0x4c,0xe3,0x4b,0xe3,0x4c,0xe3,0x2b,0xe3,
+0x4b,0xe3,0x2a,0xe3,0x4b,0xe3,0x4b,0xe3,0x4b,0xe3,0x2a,0xdb,0x2b,0xe3,0x0a,0xdb,
+0x2b,0xe3,0x0a,0xdb,0x2b,0xe3,0x0a,0xdb,0x2b,0xe3,0x0a,0xdb,0x2b,0xdb,0x2b,0xdb,
+0x2b,0xdb,0x2a,0xdb,0x4b,0xdb,0x2a,0xdb,0x4b,0xe3,0x2b,0xdb,0x2b,0xe3,0x2b,0xdb,
+0x4b,0xdb,0x2b,0xdb,0x0b,0xdb,0x2b,0xdb,0x6b,0xdb,0xac,0xd3,0xee,0xcb,0xce,0xab,
+0x55,0xc5,0x5d,0xf7,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xa9,0xda,0x89,0xda,0xc9,0xe2,0xc9,0xda,0xc9,0xe2,
+0xa9,0xe2,0xe9,0xe2,0xe9,0xe2,0xe9,0xe2,0xc9,0xda,0xe9,0xe2,0xc9,0xda,0xca,0xe2,
+0xa9,0xda,0xc9,0xe2,0xc9,0xe2,0xea,0xe2,0xa9,0xda,0xc9,0xe2,0xa9,0xda,0xa9,0xda,
+0xa9,0xda,0xc9,0xda,0xc9,0xda,0xea,0xe2,0xa9,0xda,0xa9,0xda,0xc9,0xe2,0x0a,0xeb,
+0xc9,0xe2,0xc9,0xe2,0xa8,0xda,0xc9,0xe2,0xc9,0xe2,0x0a,0xe3,0x88,0xe2,0x68,0xd2,
+0x69,0xba,0x8f,0xb3,0x5d,0xf7,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xe5,0xc9,0x06,0xd2,0x06,0xca,
+0x06,0xd2,0x06,0xd2,0x68,0xda,0x47,0xda,0x67,0xda,0x66,0xd2,0x87,0xda,0x66,0xd2,
+0x67,0xda,0x47,0xda,0x47,0xda,0x26,0xd2,0x47,0xd2,0x47,0xd2,0x88,0xda,0x87,0xda,
+0xa8,0xda,0xa8,0xda,0xa9,0xda,0x88,0xda,0x68,0xda,0x47,0xda,0x68,0xe2,0x88,0xda,
+0x47,0xda,0x25,0xd2,0x46,0xda,0x46,0xd2,0x67,0xda,0x66,0xd2,0x47,0xda,0x46,0xca,
+0x46,0xe2,0xe2,0xb0,0x65,0xa1,0x17,0xe6,0xff,0xff,0xff,0xf7,0xff,0xf7,0xff,0xf7,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe5,0xd1,
+0xe4,0xd1,0xe5,0xd9,0xe5,0xd1,0xe5,0xd9,0xc5,0xd1,0xe5,0xd9,0xe4,0xd1,0x04,0xd2,
+0x03,0xca,0x04,0xd2,0xe4,0xd1,0xc5,0xd9,0xe5,0xd1,0xe6,0xd9,0xe6,0xd1,0x26,0xd2,
+0xe5,0xc9,0xe6,0xd1,0xe5,0xc9,0xc5,0xc9,0xc5,0xc1,0xe5,0xc9,0xe5,0xd1,0x06,0xda,
+0xc5,0xd1,0xc5,0xd1,0xa4,0xc9,0xc3,0xd1,0xc3,0xc9,0x04,0xda,0xe4,0xd1,0x05,0xd2,
+0xe4,0xd1,0x83,0xd1,0x42,0xb9,0xb0,0xdc,0x1b,0xf7,0xff,0xff,0xff,0xf7,0xff,0xff,
+0xff,0xff,0xff,0xff,0xdf,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x60,0xa8,0x80,0xb0,0x80,0xb0,0xa0,0xb8,0x60,0xa8,0x00,0xa8,0x00,0xa0,
+0x40,0xa0,0x60,0x98,0x60,0xa0,0x40,0xa0,0x40,0xa8,0x00,0xa0,0x00,0xa0,0x00,0xa0,
+0x00,0x98,0x20,0x90,0x40,0x98,0x20,0x98,0x40,0xa0,0x60,0xa0,0x80,0xa0,0x60,0xa0,
+0x60,0xa8,0x40,0xa0,0x60,0xa8,0x60,0xa8,0xa0,0xb0,0xa0,0xa8,0x80,0xa8,0x40,0xa0,
+0x40,0xa8,0x40,0xa0,0x60,0xa8,0x00,0xa0,0xa0,0xa0,0x2f,0xe5,0xfb,0xff,0xff,0xff,
+0xff,0xf7,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xa2,0xd9,0xc2,0xd1,0xe3,0xd9,0xc1,0xd1,0xe3,0xd9,
+0x44,0xea,0x64,0xea,0x43,0xe2,0x43,0xe2,0x23,0xe2,0x43,0xe2,0x22,0xe2,0x44,0xea,
+0x44,0xea,0x64,0xea,0x63,0xe2,0x84,0xea,0x64,0xea,0x84,0xea,0x63,0xe2,0x44,0xe2,
+0x43,0xe2,0x64,0xe2,0x63,0xe2,0x83,0xea,0x63,0xe2,0x63,0xea,0x63,0xe2,0x84,0xea,
+0x83,0xea,0x83,0xea,0x62,0xe2,0x83,0xea,0x63,0xea,0xa4,0xf2,0x41,0xf2,0xa0,0xb0,
+0xc1,0x90,0x14,0xcd,0xff,0xff,0xff,0xff,0xde,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x02,0xe2,0x23,0xe2,0x43,0xe2,
+0x63,0xea,0x42,0xe2,0x22,0xe2,0x01,0xda,0x01,0xe2,0x01,0xe2,0x01,0xea,0x01,0xe2,
+0x21,0xe2,0x40,0xda,0x41,0xe2,0x41,0xda,0x41,0xe2,0x41,0xea,0x82,0xf2,0x82,0xf2,
+0x82,0xf2,0x61,0xe2,0x82,0xea,0x81,0xea,0x61,0xe2,0x40,0xda,0x81,0xe2,0xa1,0xe2,
+0x61,0xe2,0x20,0xda,0x61,0xe2,0x81,0xe2,0x81,0xea,0x61,0xe2,0x81,0xe2,0x40,0xe2,
+0x40,0xf2,0x00,0xda,0x83,0xca,0xec,0xcb,0xf4,0xc4,0x3d,0xef,0xff,0xff,0xff,0xff,
+0xff,0xff,0xfe,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x42,0xe2,
+0x41,0xda,0x42,0xe2,0x22,0xe2,0x42,0xea,0x42,0xe2,0x42,0xea,0x41,0xea,0x41,0xea,
+0x41,0xea,0x42,0xea,0x41,0xe2,0x61,0xe2,0x40,0xe2,0x61,0xea,0x40,0xea,0x61,0xea,
+0x40,0xea,0x61,0xf2,0x40,0xea,0x60,0xea,0x60,0xea,0x81,0xea,0x80,0xea,0xc1,0xea,
+0xa0,0xe2,0xa0,0xea,0xc1,0xea,0xe2,0xea,0xc1,0xea,0xc1,0xea,0xa1,0xe2,0xc1,0xea,
+0xc1,0xe2,0xc2,0xf2,0x81,0xea,0xe4,0xea,0x87,0xe3,0x8e,0xdc,0xcd,0xab,0x14,0xd5,
+0x79,0xf6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,
+0xff,0xff,0x60,0xe2,0x61,0xe2,0x40,0xda,0x41,0xea,0x41,0xea,0x61,0xea,0x61,0xea,
+0x61,0xea,0x60,0xea,0x81,0xea,0x81,0xea,0x61,0xea,0x40,0xe2,0x60,0xea,0x40,0xe2,
+0x81,0xea,0x80,0xea,0xa0,0xf2,0xa0,0xea,0xa1,0xea,0x80,0xea,0xa1,0xf2,0xa0,0xea,
+0xe1,0xf2,0xe0,0xea,0xc0,0xea,0xa0,0xe2,0xc1,0xea,0xc1,0xe2,0xc1,0xe2,0xa0,0xe2,
+0xc1,0xe2,0xc0,0xe2,0xc0,0xe2,0xa0,0xe2,0xc1,0xe2,0x68,0xeb,0x0d,0xec,0x8d,0xc4,
+0x4c,0xc4,0x09,0xb3,0x6c,0xbb,0xba,0xee,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xf7,
+0xbf,0xff,0xff,0xff,0xff,0xff,0x82,0xe2,0xa1,0xe2,0xe2,0xea,0x61,0xea,0x61,0xf2,
+0x41,0xea,0x61,0xea,0x81,0xea,0xa2,0xf2,0x82,0xea,0xa2,0xf2,0xa1,0xea,0xa2,0xea,
+0xa1,0xea,0xc2,0xea,0x80,0xe2,0x60,0xe2,0x60,0xe2,0x80,0xea,0x60,0xe2,0x80,0xea,
+0x80,0xea,0xa1,0xea,0xa0,0xe2,0xa0,0xe2,0xa0,0xe2,0xe1,0xea,0xc1,0xe2,0xc1,0xe2,
+0xc1,0xe2,0xe1,0xea,0xe1,0xe2,0x01,0xeb,0xe1,0xea,0xe1,0xea,0xc0,0xda,0xcb,0xeb,
+0x70,0xe4,0xcf,0xcc,0x6c,0xc4,0x4d,0xd4,0xed,0xcb,0xad,0xc3,0x9e,0xff,0xff,0xff,
+0xdf,0xf7,0xdf,0xf7,0xbf,0xff,0xff,0xff,0xff,0xff,0x60,0xda,0x60,0xe2,0x60,0xda,
+0x40,0xda,0x40,0xda,0x61,0xe2,0x60,0xe2,0x60,0xe2,0x40,0xda,0x81,0xe2,0x60,0xda,
+0x80,0xe2,0x80,0xda,0x80,0xe2,0x80,0xda,0xa0,0xe2,0xa0,0xe2,0xa1,0xe2,0xa0,0xe2,
+0xa1,0xe2,0xa0,0xe2,0xa1,0xe2,0x80,0xe2,0xc1,0xe2,0xa0,0xe2,0xc1,0xea,0xc1,0xe2,
+0xe1,0xe2,0xc1,0xda,0xe2,0xe2,0x01,0xe3,0x02,0xeb,0x02,0xe3,0x23,0xeb,0xe1,0xe2,
+0xa1,0xe2,0x4d,0xdc,0x75,0xdd,0xd2,0xcc,0x6f,0xc4,0xf0,0xd4,0x8f,0xd4,0x26,0x9a,
+0xaf,0xdc,0xfe,0xff,0xff,0xff,0xdf,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0x60,0xe2,
+0x60,0xda,0x81,0xea,0x02,0xeb,0xc2,0xe2,0x80,0xda,0x81,0xe2,0xc2,0xea,0x02,0xeb,
+0xc2,0xea,0xe2,0xea,0x02,0xeb,0x22,0xeb,0x02,0xeb,0x02,0xeb,0x43,0xf3,0x85,0xfb,
+0x44,0xf3,0x64,0xfb,0x44,0xf3,0x64,0xfb,0x85,0xfb,0xc6,0xfb,0x84,0xfb,0x64,0xf3,
+0xa4,0xfb,0x06,0xfc,0xe6,0xfb,0xe6,0xfb,0xe6,0xfb,0x27,0xfc,0x07,0xfc,0x27,0xfc,
+0x27,0xfc,0x26,0xfc,0xe7,0xfb,0x4d,0xcc,0x92,0xac,0xd4,0xd4,0x12,0xd5,0xf1,0xcc,
+0xd0,0xcc,0xed,0xd3,0xc0,0x90,0xf7,0xf6,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x84,0xfb,0xa5,0xfb,0xa5,0xfb,0x06,0xfc,0x06,0xfc,0x67,0xfc,0x47,0xfc,
+0x26,0xfc,0x05,0xfc,0x26,0xfc,0x06,0xfc,0x26,0xfc,0x46,0xfc,0x66,0xfc,0x66,0xfc,
+0x47,0xfc,0xe6,0xfb,0x27,0xfc,0x06,0xfc,0x07,0xfc,0x06,0xfc,0x06,0xfc,0xc5,0xfb,
+0x06,0xfc,0x26,0xfc,0x05,0xfc,0xa5,0xfb,0x06,0xfc,0x26,0xfc,0x06,0xfc,0xe5,0xfb,
+0x06,0xfc,0x06,0xfc,0x06,0xfc,0xe5,0xfb,0xe6,0xfb,0x4c,0xcc,0xd1,0xb4,0xf3,0xd4,
+0xd2,0xd4,0xd0,0xc4,0xf0,0xcc,0x8e,0xec,0x27,0xf3,0xa0,0xa1,0xb9,0xee,0xff,0xff,
+0xff,0xf7,0xff,0xff,0xff,0xff,0xe2,0xea,0xc1,0xea,0x03,0xf3,0xe1,0xda,0x02,0xe3,
+0x23,0xeb,0x43,0xeb,0x02,0xe3,0x02,0xeb,0x02,0xeb,0x22,0xeb,0x02,0xe3,0x42,0xe3,
+0x21,0xe3,0x22,0xe3,0x42,0xe3,0x84,0xf3,0x63,0xeb,0x64,0xeb,0x63,0xeb,0x84,0xf3,
+0x43,0xeb,0x43,0xeb,0x43,0xeb,0x63,0xf3,0x43,0xeb,0x43,0xeb,0x42,0xe3,0x43,0xeb,
+0x43,0xe3,0x43,0xeb,0x43,0xe3,0x44,0xeb,0x44,0xeb,0x44,0xeb,0xe1,0xea,0x09,0xec,
+0xef,0xe4,0x2f,0xc5,0x6f,0xcc,0x70,0xbc,0xb0,0xbc,0x52,0xed,0x24,0xd2,0xa2,0xd9,
+0x8f,0xd4,0x57,0xde,0xdf,0xff,0xff,0xff,0xff,0xff,0x03,0xeb,0x03,0xf3,0xe2,0xea,
+0x63,0xf3,0x43,0xeb,0x44,0xeb,0x23,0xeb,0x43,0xf3,0x43,0xf3,0x63,0xfb,0x63,0xf3,
+0x43,0xf3,0x42,0xe3,0x63,0xeb,0x42,0xeb,0x43,0xeb,0x22,0xe3,0x42,0xeb,0x22,0xe3,
+0x42,0xeb,0x42,0xeb,0x43,0xeb,0x22,0xe3,0x42,0xeb,0x22,0xeb,0x63,0xf3,0x62,0xf3,
+0x63,0xf3,0x22,0xeb,0x63,0xf3,0x62,0xeb,0x63,0xf3,0x63,0xeb,0x63,0xf3,0x42,0xeb,
+0x41,0xe3,0xa7,0xeb,0x6d,0xec,0x2e,0xc5,0xb0,0xcc,0x90,0xcc,0x12,0xcd,0x52,0xdd,
+0x08,0xd3,0x6e,0xe4,0x5c,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xa1,0xe2,
+0xc1,0xe2,0xe2,0xea,0xa1,0xe2,0xe2,0xea,0xa2,0xe2,0xc2,0xea,0xc1,0xea,0xe2,0xea,
+0xc2,0xea,0xe2,0xf2,0xe1,0xea,0x02,0xeb,0xe1,0xe2,0x02,0xeb,0xe1,0xe2,0x02,0xeb,
+0x02,0xeb,0x02,0xeb,0x01,0xeb,0x01,0xeb,0x01,0xe3,0x01,0xeb,0x01,0xeb,0x21,0xf3,
+0x01,0xeb,0x02,0xf3,0x01,0xeb,0x21,0xf3,0x21,0xeb,0x42,0xf3,0x21,0xeb,0x22,0xf3,
+0x01,0xeb,0x01,0xf3,0x40,0xdb,0x46,0xe3,0x8a,0xeb,0x70,0xdd,0xf1,0xd4,0x33,0xe5,
+0x53,0xd5,0xb1,0xbc,0x12,0xdd,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,
+0xff,0xff,0x60,0xda,0x81,0xda,0x61,0xda,0x61,0xda,0x60,0xda,0x61,0xda,0x61,0xda,
+0x81,0xe2,0x60,0xda,0xa1,0xe2,0x80,0xe2,0xa1,0xe2,0xc1,0xe2,0xc2,0xea,0xc1,0xe2,
+0xe1,0xea,0x00,0xe3,0x01,0xeb,0xe1,0xe2,0xe1,0xea,0xe0,0xe2,0x01,0xeb,0xe0,0xe2,
+0xe0,0xea,0xc0,0xe2,0xc0,0xe2,0x80,0xda,0xa0,0xe2,0xa0,0xe2,0xa0,0xe2,0x80,0xda,
+0xe0,0xea,0x01,0xeb,0xe1,0xea,0xe0,0xea,0x40,0xdb,0x62,0xca,0x65,0xd2,0xad,0xcc,
+0xd0,0xcc,0x33,0xdd,0x33,0xd5,0x0f,0x9c,0x1b,0xf7,0xff,0xff,0xff,0xff,0xbf,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xc2,0xe2,0xa1,0xda,0xa2,0xda,0x81,0xe2,0x82,0xe2,
+0x81,0xe2,0xa1,0xe2,0xa1,0xe2,0xa2,0xea,0x82,0xe2,0xa2,0xea,0x81,0xe2,0x81,0xe2,
+0x81,0xe2,0xa1,0xe2,0x80,0xda,0xa1,0xe2,0xa0,0xe2,0xa1,0xe2,0xa0,0xe2,0xc0,0xe2,
+0xc0,0xe2,0xc1,0xea,0xc0,0xe2,0xe1,0xea,0xe1,0xea,0x01,0xf3,0xe0,0xea,0x01,0xeb,
+0xe0,0xea,0xe0,0xea,0xc0,0xe2,0xe0,0xea,0xc0,0xe2,0xe0,0xea,0xe0,0xe2,0x21,0xda,
+0xe3,0xd9,0xeb,0xeb,0xf0,0xcc,0xee,0xab,0xee,0xab,0x59,0xd6,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0x82,0xda,0xa2,0xda,0x81,0xd2,
+0x82,0xe2,0x81,0xe2,0x82,0xe2,0x62,0xda,0x82,0xe2,0x81,0xe2,0x82,0xe2,0x81,0xe2,
+0xa2,0xe2,0xc2,0xe2,0xc2,0xea,0xc2,0xe2,0xc2,0xea,0xc1,0xe2,0xc2,0xea,0xc1,0xe2,
+0xc1,0xea,0xc1,0xe2,0x02,0xf3,0x01,0xeb,0xc1,0xea,0xa0,0xe2,0xe1,0xea,0x21,0xeb,
+0x22,0xf3,0x21,0xeb,0x21,0xf3,0xe0,0xea,0xc0,0xea,0xa0,0xe2,0xc0,0xe2,0xc0,0xe2,
+0xc0,0xea,0x41,0xe2,0x43,0xe2,0xe7,0xe2,0x2e,0xb4,0x30,0xa4,0xf4,0xc4,0xbe,0xff,
+0xff,0xff,0xff,0xf7,0xff,0xff,0xdf,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xc3,0xe2,
+0xc3,0xe2,0xe4,0xea,0xc4,0xe2,0xe3,0xe2,0xc3,0xe2,0xc3,0xe2,0xe3,0xe2,0xe4,0xe2,
+0xe3,0xe2,0xe4,0xe2,0xc3,0xe2,0xc3,0xe2,0xc2,0xe2,0xc3,0xe2,0xa2,0xe2,0xc3,0xe2,
+0xc3,0xe2,0xc3,0xe2,0xc2,0xe2,0xe2,0xe2,0xc2,0xe2,0xe3,0xea,0x02,0xeb,0x23,0xeb,
+0x02,0xe3,0xe3,0xe2,0xe2,0xe2,0xe2,0xea,0xe2,0xe2,0x02,0xe3,0xe1,0xe2,0x01,0xe3,
+0xe1,0xe2,0x22,0xeb,0xe1,0xe2,0xe2,0xc1,0x21,0x99,0x65,0x81,0xfb,0xee,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x82,0xda,0x82,0xda,0x62,0xda,0x83,0xda,0x62,0xd2,0x82,0xda,0x62,0xd2,
+0x83,0xd2,0x82,0xca,0x82,0xd2,0x62,0xca,0xa3,0xda,0xc2,0xda,0xc3,0xda,0xa3,0xda,
+0xc3,0xda,0x83,0xda,0xa3,0xda,0xa3,0xda,0xa3,0xda,0xa2,0xda,0xa3,0xda,0xa2,0xda,
+0xa2,0xda,0x82,0xd2,0xa2,0xd2,0xa2,0xd2,0xa2,0xda,0xa1,0xd2,0xa2,0xda,0xa2,0xda,
+0xa1,0xda,0x80,0xd2,0xa0,0xd2,0xe0,0xe2,0xa2,0xc2,0xe1,0x78,0x65,0x79,0x78,0xe6,
+0xff,0xff,0xff,0xff,0xfe,0xff,0xdf,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xa0,0xb1,0x80,0xb1,0x80,0xb1,0xa0,0xa9,0xa0,0xa9,
+0x80,0xa9,0x80,0xa9,0x80,0xa1,0xa0,0xa9,0x80,0xa1,0x80,0xa1,0x80,0xa1,0x60,0xa9,
+0x60,0xa1,0x60,0xa9,0x60,0xa1,0x60,0xa9,0x60,0xa1,0x60,0xa1,0x60,0xa1,0x80,0xa9,
+0x60,0xa1,0x60,0xa1,0x80,0xa1,0xa0,0xa9,0xe0,0xb1,0x40,0xba,0x20,0xb2,0x20,0xba,
+0x40,0xba,0x40,0xba,0x60,0xc2,0xa0,0xca,0x80,0xc2,0x40,0xc2,0xe1,0xba,0x91,0xf5,
+0x3b,0xff,0xff,0xff,0xdf,0xf7,0xff,0xff,0xfe,0xf7,0xdf,0xff,0xbe,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xaa,0xe1,0xaa,0xe1,0xaa,
+0x21,0xab,0x40,0xab,0x81,0xbb,0xa1,0xbb,0xa0,0xc3,0xa0,0xc3,0xe1,0xcb,0xe0,0xcb,
+0xe1,0xcb,0xe0,0xcb,0x21,0xd4,0x20,0xcc,0x61,0xd4,0x80,0xdc,0x80,0xdc,0x60,0xd4,
+0xa0,0xdc,0xc0,0xe4,0x01,0xed,0x21,0xed,0x21,0xed,0x01,0xe5,0x21,0xed,0x21,0xed,
+0x41,0xed,0x41,0xed,0x82,0xf5,0x82,0xf5,0xa3,0xfd,0x83,0xfd,0x83,0xfd,0x80,0xf5,
+0xa1,0xf5,0xb2,0xf6,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,
+0xdf,0xff,0xbf,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x06,0xfe,
+0xe6,0xf5,0x27,0xfe,0xc5,0xed,0xc5,0xf5,0xa5,0xe5,0xa5,0xed,0xc3,0xf5,0xe3,0xfd,
+0xe4,0xfd,0x04,0xfe,0x04,0xfe,0x24,0xfe,0xe3,0xf5,0xe4,0xfd,0x03,0xfe,0x22,0xfe,
+0x02,0xfe,0x02,0xfe,0xc1,0xf5,0xc0,0xed,0xc0,0xed,0x01,0xf6,0xe1,0xf5,0xe1,0xf5,
+0xe1,0xf5,0xe1,0xf5,0xe0,0xf5,0xe0,0xf5,0xe0,0xed,0x00,0xf6,0xe0,0xf5,0xe1,0xf5,
+0xc1,0xed,0x00,0xf6,0x40,0xee,0x48,0xbc,0x8f,0xab,0x7a,0xe6,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xdf,0xff,0x9f,0xff,0xde,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,
+0xff,0xff,0x61,0xe5,0x61,0xe5,0x21,0xe5,0xc2,0xed,0x81,0xe5,0x81,0xe5,0x60,0xe5,
+0x82,0xed,0x81,0xed,0x82,0xed,0x81,0xed,0xa2,0xed,0x81,0xed,0x81,0xed,0x61,0xe5,
+0x81,0xed,0x80,0xe5,0xa1,0xed,0xa1,0xed,0xc1,0xed,0xc1,0xed,0xc1,0xf5,0xc1,0xed,
+0xe1,0xf5,0xc1,0xed,0xc1,0xf5,0xc1,0xed,0xe1,0xf5,0xe0,0xed,0xe0,0xed,0xc0,0xed,
+0xc0,0xed,0xa0,0xed,0xc0,0xed,0xc0,0xed,0x40,0xf6,0xa9,0xe5,0xaf,0xcc,0x6c,0x93,
+0x17,0xce,0xdf,0xff,0xff,0xff,0xdf,0xff,0xfe,0xff,0xfd,0xff,0xfe,0xff,0xfe,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x80,0xed,0x60,0xe5,0x60,0xe5,0xa0,0xed,0xc1,0xed,
+0xc0,0xed,0xc1,0xed,0xc1,0xed,0xc2,0xf5,0xa1,0xed,0xa1,0xed,0xa1,0xed,0xa1,0xf5,
+0xc2,0xf5,0xe2,0xf5,0xc1,0xed,0xa1,0xed,0x80,0xe5,0x80,0xed,0x80,0xe5,0xc1,0xed,
+0xa0,0xed,0xc1,0xed,0xc0,0xed,0xc1,0xed,0xa0,0xed,0xc1,0xed,0xe1,0xed,0x01,0xf6,
+0xe0,0xed,0xe1,0xed,0xc0,0xed,0xc0,0xf5,0xc0,0xed,0x00,0xee,0x40,0xee,0xca,0xed,
+0x0f,0xd5,0x0d,0xa4,0x2c,0xa4,0x78,0xde,0x9e,0xff,0xff,0xff,0xfe,0xff,0xfe,0xff,
+0xfe,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0x80,0xe5,0x80,0xe5,0x80,0xe5,
+0xe0,0xed,0xa0,0xe5,0xc0,0xe5,0xa0,0xe5,0xc0,0xe5,0xc0,0xe5,0xc0,0xe5,0xc0,0xe5,
+0xc0,0xe5,0xc0,0xe5,0xc0,0xe5,0xa0,0xe5,0xa0,0xe5,0x80,0xdd,0xa0,0xe5,0xa0,0xdd,
+0xc0,0xe5,0xe0,0xe5,0xe1,0xed,0xe0,0xe5,0x01,0xee,0xe1,0xe5,0x01,0xee,0xe1,0xed,
+0xe0,0xe5,0xc0,0xdd,0xe0,0xe5,0xe0,0xe5,0x00,0xee,0xe0,0xe5,0x20,0xee,0x20,0xe6,
+0x21,0xee,0x89,0xdd,0xf0,0xdc,0xd1,0xcc,0xcf,0xc4,0x8e,0xa3,0x4c,0x93,0xe6,0xac,
+0xd9,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0x80,0xdd,
+0x80,0xdd,0x81,0xe5,0xa0,0xe5,0xa0,0xe5,0xa0,0xe5,0xa0,0xe5,0xc0,0xe5,0xe0,0xe5,
+0xe0,0xe5,0xe0,0xe5,0xe0,0xe5,0xe0,0xe5,0xc0,0xdd,0xc0,0xe5,0xe0,0xe5,0x00,0xee,
+0xe0,0xe5,0xc0,0xe5,0xa0,0xdd,0xe1,0xe5,0xe0,0xe5,0x01,0xee,0xe1,0xe5,0x01,0xee,
+0xe1,0xe5,0x01,0xee,0x00,0xe6,0x00,0xe6,0x00,0xe6,0x01,0xee,0x00,0xe6,0x00,0xee,
+0x00,0xe6,0x20,0xee,0x44,0xee,0x0b,0xd5,0x4f,0xbc,0x14,0xd5,0x8f,0xc4,0x72,0xc4,
+0x50,0xbc,0xa1,0xa4,0x4a,0xe6,0xfd,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,
+0xff,0xff,0x81,0xe5,0xc1,0xed,0xc2,0xed,0x80,0xdd,0x60,0xdd,0xa1,0xe5,0xa1,0xe5,
+0xc0,0xe5,0xc0,0xdd,0xe0,0xe5,0xe0,0xe5,0xe0,0xe5,0xe0,0xdd,0xe0,0xe5,0xc0,0xe5,
+0xe0,0xe5,0xe0,0xdd,0x01,0xe6,0x20,0xee,0xe1,0xe5,0x80,0xd5,0xc0,0xdd,0xc0,0xdd,
+0xe0,0xe5,0xc0,0xdd,0xe0,0xe5,0xc0,0xdd,0x01,0xe6,0x00,0xe6,0x01,0xe6,0x00,0xe6,
+0x01,0xe6,0xe0,0xe5,0x00,0xe6,0x00,0xde,0x28,0xee,0x6f,0xdd,0xd3,0xcc,0x93,0xc4,
+0x8f,0xc4,0x12,0xb4,0x51,0xbc,0xa2,0xd5,0x22,0xc5,0xb3,0xee,0xde,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xa2,0xe5,0xa1,0xe5,0xa2,0xe5,0xc1,0xe5,0xe2,0xed,
+0xc2,0xe5,0xc2,0xed,0xc1,0xdd,0xe1,0xe5,0xc1,0xdd,0xe1,0xe5,0xc0,0xdd,0x01,0xe6,
+0xe1,0xe5,0x01,0xe6,0x00,0xde,0x01,0xe6,0xe0,0xdd,0x01,0xe6,0x00,0xde,0x01,0xe6,
+0x01,0xe6,0x22,0xee,0x01,0xe6,0x22,0xee,0x01,0xe6,0x01,0xe6,0x21,0xe6,0x42,0xee,
+0x21,0xe6,0x21,0xe6,0x22,0xe6,0x43,0xee,0x21,0xe6,0x61,0xee,0xeb,0xdd,0x75,0xdd,
+0x37,0xd5,0x56,0xd5,0x10,0xcd,0x76,0xcc,0x76,0xcc,0x0a,0xf6,0x45,0xfe,0x63,0xcd,
+0x38,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xe5,0xc2,0xe5,0xa1,0xe5,
+0xe2,0xe5,0xc1,0xe5,0xc2,0xe5,0xc1,0xe5,0x22,0xe6,0x22,0xe6,0x22,0xe6,0x02,0xe6,
+0x22,0xe6,0x22,0xe6,0x43,0xee,0x22,0xe6,0x42,0xee,0x41,0xe6,0x62,0xee,0x62,0xee,
+0x83,0xf6,0x63,0xee,0x63,0xee,0x42,0xee,0x63,0xee,0x42,0xee,0x63,0xee,0x63,0xee,
+0x63,0xee,0x42,0xee,0x42,0xee,0x42,0xe6,0x44,0xee,0x65,0xee,0x83,0xf6,0xa3,0xf6,
+0x0e,0xe6,0x36,0xcd,0x17,0xcd,0x74,0xcd,0x31,0xcd,0x56,0xc4,0x76,0xcc,0xa7,0xe5,
+0xc0,0xf5,0x80,0xd5,0x57,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xee,
+0xe1,0xe5,0xe2,0xe5,0x01,0xe6,0x01,0xe6,0x00,0xe6,0x01,0xee,0x22,0xe6,0x43,0xee,
+0x22,0xe6,0x23,0xee,0x23,0xe6,0x43,0xee,0x23,0xe6,0x43,0xee,0x42,0xe6,0x62,0xee,
+0x82,0xee,0x83,0xf6,0x83,0xee,0x84,0xf6,0x63,0xee,0x63,0xee,0x63,0xee,0x84,0xf6,
+0xa4,0xf6,0xc5,0xfe,0x84,0xf6,0x84,0xf6,0x64,0xf6,0xa4,0xf6,0x44,0xee,0x45,0xee,
+0x83,0xee,0xc4,0xf6,0x10,0xe6,0x37,0xcd,0xf6,0xc4,0x52,0xcd,0x32,0xc5,0xd8,0xcc,
+0xf5,0xd4,0x25,0xf6,0x80,0xe5,0xa0,0xc4,0x17,0xef,0xff,0xff,0xff,0xf7,0xff,0xff,
+0xff,0xff,0xc0,0xdd,0xe1,0xe5,0xe1,0xe5,0x21,0xe6,0x00,0xe6,0x21,0xee,0x01,0xe6,
+0xe2,0xe5,0xe2,0xdd,0xe2,0xe5,0xe2,0xdd,0x02,0xe6,0x01,0xde,0x02,0xe6,0x02,0xe6,
+0x02,0xe6,0x01,0xde,0x22,0xe6,0x22,0xe6,0x22,0xee,0x22,0xe6,0x23,0xe6,0x02,0xe6,
+0x22,0xe6,0x02,0xde,0x22,0xe6,0x22,0xe6,0x22,0xe6,0x02,0xe6,0x02,0xe6,0x02,0xe6,
+0x04,0xe6,0x04,0xe6,0x42,0xe6,0x43,0xee,0xb0,0xdd,0x16,0xc5,0xf5,0xc4,0x2f,0xbd,
+0xd2,0xbc,0xf5,0xc4,0x52,0xd5,0x42,0xc5,0xc0,0xcc,0x6f,0xee,0xbd,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xe2,0xe5,0xc1,0xe5,0xe2,0xe5,0xe2,0xdd,0x02,0xe6,
+0xe1,0xdd,0x02,0xe6,0x22,0xe6,0x43,0xee,0x22,0xee,0x23,0xee,0x22,0xe6,0x43,0xee,
+0x42,0xee,0x42,0xee,0x43,0xee,0x44,0xee,0x23,0xe6,0x23,0xee,0x23,0xe6,0x24,0xee,
+0x43,0xee,0x44,0xee,0x23,0xe6,0x24,0xee,0x03,0xe6,0x23,0xe6,0x23,0xe6,0x24,0xee,
+0x23,0xee,0x23,0xee,0x24,0xe6,0x45,0xee,0x41,0xe6,0x64,0xee,0x90,0xdd,0x35,0xd5,
+0x34,0xcd,0x94,0xd5,0x55,0xd5,0xcc,0xa3,0x88,0x93,0x32,0xd6,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xe2,0xe5,0xe2,0xe5,0xc1,0xdd,
+0xe2,0xe5,0xe1,0xdd,0xe2,0xe5,0xe1,0xdd,0x22,0xee,0x22,0xe6,0x23,0xee,0x22,0xe6,
+0x42,0xee,0x22,0xe6,0x42,0xee,0x42,0xee,0x43,0xee,0x23,0xe6,0x23,0xee,0x03,0xe6,
+0x23,0xe6,0x23,0xe6,0x44,0xee,0x43,0xe6,0x23,0xe6,0x03,0xe6,0x23,0xe6,0x03,0xe6,
+0x23,0xe6,0x23,0xe6,0x24,0xee,0x03,0xe6,0x24,0xee,0x24,0xe6,0x42,0xe6,0x63,0xe6,
+0xb0,0xdd,0x14,0xcd,0x34,0xd5,0x73,0xd5,0x55,0xd5,0xac,0xa3,0xa9,0x93,0x12,0xce,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa2,0xdd,
+0xa2,0xdd,0xc3,0xe5,0xc3,0xdd,0xc3,0xe5,0xc3,0xdd,0xe3,0xe5,0xc2,0xdd,0xe2,0xdd,
+0xc1,0xdd,0xc2,0xdd,0xc1,0xdd,0xc2,0xdd,0xc2,0xdd,0xc2,0xe5,0xc2,0xdd,0xc3,0xdd,
+0xc3,0xdd,0xe3,0xe5,0xe3,0xdd,0xe4,0xe5,0xc3,0xdd,0xc3,0xdd,0xa2,0xdd,0xc2,0xdd,
+0xc2,0xdd,0xe3,0xe5,0xa2,0xdd,0xa2,0xdd,0xa2,0xdd,0xc3,0xe5,0xc2,0xdd,0xc2,0xe5,
+0xe0,0xdd,0xe2,0xdd,0xad,0xe5,0xd7,0xed,0x77,0xdd,0x50,0xac,0xcf,0x9b,0xfc,0xee,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xde,0xff,0xff,0xff,
+0xff,0xff,0x82,0xd5,0xa3,0xd5,0xa2,0xd5,0xc3,0xdd,0x82,0xd5,0x82,0xd5,0x82,0xd5,
+0xa3,0xdd,0xa4,0xdd,0x83,0xdd,0x83,0xdd,0xa4,0xdd,0x84,0xdd,0x84,0xdd,0x84,0xdd,
+0xa4,0xdd,0xa4,0xdd,0xc4,0xe5,0xc4,0xdd,0xa4,0xdd,0x84,0xdd,0xa5,0xdd,0xa4,0xdd,
+0xe4,0xe5,0xc3,0xdd,0xc4,0xe5,0xc3,0xdd,0xc4,0xdd,0xa3,0xd5,0xc4,0xdd,0xc4,0xdd,
+0xc4,0xe5,0xc2,0xdd,0xc3,0xe5,0xc2,0xd5,0x29,0xe6,0x53,0xcd,0x75,0xb4,0xce,0x8b,
+0xfb,0xe6,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xa4,0xdd,0xa3,0xd5,0x83,0xd5,0x83,0xd5,0x84,0xdd,
+0xa4,0xd5,0xa4,0xdd,0x63,0xd5,0x84,0xdd,0xc4,0xdd,0xe5,0xe5,0xc4,0xdd,0xc5,0xe5,
+0xa5,0xdd,0xa5,0xdd,0xc4,0xdd,0x05,0xe6,0xe4,0xe5,0x05,0xe6,0xe5,0xe5,0xe6,0xe5,
+0xc5,0xdd,0xc5,0xe5,0x05,0xe6,0x26,0xee,0x06,0xe6,0x26,0xee,0x26,0xe6,0x47,0xe6,
+0x06,0xde,0x06,0xe6,0xe5,0xe5,0x05,0xee,0x05,0xe6,0x24,0xe6,0x49,0xe6,0x50,0xb4,
+0x93,0x93,0x38,0xd6,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xfe,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc4,0xd5,0xe5,0xdd,0xe4,0xd5,
+0xe5,0xdd,0x05,0xde,0x67,0xee,0x46,0xe6,0x45,0xe6,0x44,0xe6,0x44,0xe6,0x04,0xde,
+0x24,0xe6,0xe3,0xdd,0x04,0xe6,0x04,0xde,0xe3,0xdd,0xa2,0xcd,0xc3,0xd5,0xc3,0xd5,
+0xe4,0xdd,0xe3,0xdd,0xe4,0xdd,0xe3,0xd5,0xe5,0xdd,0xa5,0xd5,0xc6,0xd5,0xa5,0xd5,
+0xc6,0xdd,0xc6,0xdd,0xc6,0xdd,0xc5,0xd5,0xc6,0xdd,0xc5,0xdd,0xe6,0xdd,0x05,0xde,
+0x68,0xc5,0xd1,0xb4,0x38,0xc5,0x5e,0xf7,0xff,0xff,0xdf,0xf7,0xff,0xf7,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa4,0xb4,
+0xa4,0xb4,0xa5,0xb4,0xc5,0xb4,0xa4,0xb4,0x63,0xac,0x63,0xac,0x63,0xac,0x64,0xac,
+0x84,0xac,0xa4,0xb4,0xa5,0xb4,0xe6,0xbc,0xe5,0xbc,0xe6,0xbc,0xc5,0xb4,0xc5,0xb4,
+0xc5,0xb4,0xc6,0xbc,0xe5,0xb4,0x06,0xbd,0xe5,0xbc,0xe6,0xbc,0xc7,0xbc,0xe8,0xbc,
+0xc8,0xbc,0xe8,0xbc,0xe8,0xbc,0x09,0xbd,0x09,0xbd,0x2a,0xc5,0x49,0xc5,0x6a,0xcd,
+0x4a,0xc5,0x6a,0xcd,0xca,0xac,0x57,0xd6,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x17,0xff,0x38,0xff,0x37,0xff,0x38,0xff,0x38,0xff,0x99,0xff,0x79,0xff,
+0x9a,0xff,0x9a,0xff,0x9a,0xff,0x5a,0xff,0x7a,0xff,0x39,0xff,0x59,0xff,0x39,0xff,
+0x5a,0xff,0x39,0xff,0x5a,0xff,0x39,0xff,0x5a,0xff,0x39,0xff,0x5a,0xff,0x59,0xff,
+0x5a,0xff,0x39,0xff,0x39,0xff,0x39,0xff,0x5a,0xff,0x5a,0xff,0x5a,0xff,0x19,0xf7,
+0x39,0xff,0x19,0xf7,0x3a,0xff,0x3a,0xf7,0x1a,0xef,0xbe,0xff,0x1c,0xf7,0x4b,0x83,
+0x96,0xcd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x38,0xff,0x38,0xff,0x38,0xff,0x38,0xff,0x59,0xff,
+0x78,0xff,0x99,0xff,0x9a,0xff,0xbb,0xff,0x7a,0xff,0x7a,0xff,0x7a,0xff,0x5a,0xff,
+0x59,0xff,0x5a,0xff,0x3a,0xff,0x5a,0xff,0x39,0xff,0x5a,0xff,0x59,0xff,0x5a,0xff,
+0x59,0xff,0x7a,0xff,0x39,0xff,0x5a,0xff,0x39,0xff,0x3a,0xff,0x5a,0xff,0x7b,0xff,
+0x3a,0xff,0x3a,0xff,0x19,0xf7,0x3a,0xff,0x3a,0xf7,0x5b,0xff,0x19,0xef,0xbf,0xff,
+0x1c,0xf7,0x6b,0x8b,0x95,0xcd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd9,0xee,0xd9,0xee,0xb8,0xee,
+0xd9,0xee,0xb9,0xee,0xd9,0xf6,0xd8,0xee,0xb8,0xe6,0xd7,0xe6,0xf9,0xee,0xf8,0xee,
+0xf9,0xee,0xf8,0xee,0xf8,0xee,0xd8,0xee,0xf9,0xee,0x1a,0xef,0x1a,0xef,0xf9,0xee,
+0x19,0xef,0xf8,0xee,0xf8,0xee,0xd7,0xe6,0x19,0xef,0x19,0xef,0x39,0xf7,0x19,0xef,
+0x19,0xef,0x19,0xef,0x3a,0xf7,0x39,0xef,0x3a,0xef,0x1a,0xe7,0x3a,0xef,0x3a,0xe7,
+0xbd,0xff,0xda,0xee,0xd6,0xd5,0x0d,0xa4,0xeb,0x92,0xad,0xa3,0x32,0xcd,0xbe,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xee,
+0xf8,0xe6,0xf8,0xee,0xd8,0xe6,0xf8,0xee,0xf8,0xee,0x19,0xef,0x38,0xef,0x39,0xef,
+0x18,0xe7,0x39,0xef,0x18,0xef,0x19,0xef,0x18,0xef,0x39,0xef,0x19,0xef,0x39,0xef,
+0x19,0xe7,0x19,0xef,0x19,0xef,0x59,0xef,0x39,0xef,0x5a,0xef,0x39,0xef,0x3a,0xef,
+0x1a,0xef,0x3a,0xef,0x3a,0xef,0x5b,0xef,0x3a,0xef,0x1a,0xef,0x1a,0xe7,0x3b,0xe7,
+0x3a,0xe7,0x5b,0xef,0xbe,0xff,0x34,0xc5,0x8b,0x93,0x0c,0xb4,0x70,0xcc,0xad,0xab,
+0x6c,0x9b,0x35,0xc5,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xd9,0xe6,0xf9,0xe6,0xd9,0xe6,0xf9,0xe6,0xf9,0xe6,0x19,0xef,0xf9,0xe6,
+0x1a,0xef,0x19,0xe7,0x1a,0xef,0x19,0xe7,0x1a,0xef,0xfa,0xe6,0x1a,0xef,0x1a,0xe7,
+0x3a,0xef,0x1a,0xe7,0x1a,0xe7,0x1a,0xe7,0x1b,0xef,0x3a,0xe7,0x3a,0xef,0x3a,0xe7,
+0x3b,0xef,0x3b,0xe7,0x3b,0xef,0x1b,0xe7,0x3b,0xef,0x3b,0xe7,0x3b,0xe7,0x1b,0xe7,
+0x3c,0xef,0x3b,0xe7,0x1b,0xe7,0x9c,0xef,0xfb,0xee,0x4f,0xac,0x29,0x93,0x2c,0xbc,
+0x70,0xd4,0xed,0xbb,0xee,0xb3,0xf3,0xbc,0x7e,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xee,0xfa,0xe6,0xfa,0xee,0xfa,0xee,0x1b,0xef,
+0xda,0xee,0xfb,0xee,0x1b,0xe7,0x1c,0xef,0xfc,0xe6,0x1c,0xef,0x1c,0xe7,0x3d,0xef,
+0x1c,0xef,0x3c,0xef,0x1c,0xe7,0x1d,0xef,0x1d,0xe7,0x1d,0xef,0x1c,0xe7,0x3d,0xef,
+0x1c,0xef,0x3d,0xef,0x3c,0xef,0x3d,0xef,0x3c,0xef,0x3c,0xef,0x3c,0xe7,0x3d,0xef,
+0x3d,0xef,0x5d,0xef,0x5d,0xe7,0x5e,0xef,0x3d,0xe7,0xdf,0xff,0x75,0xcd,0x0e,0xb4,
+0x2d,0xbc,0x8e,0xcc,0x6f,0xd4,0x8c,0xb3,0xcd,0xb3,0xdb,0xfe,0x7f,0xf7,0x9e,0xf7,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xe6,0x1c,0xef,0xfb,0xe6,
+0x1c,0xef,0xfc,0xe6,0xfc,0xee,0xfc,0xe6,0x1c,0xef,0x1c,0xe7,0x3c,0xef,0x1c,0xef,
+0x1c,0xef,0xfc,0xe6,0x1d,0xef,0xfc,0xee,0x3d,0xef,0x3c,0xe7,0x3d,0xef,0x1c,0xe7,
+0x3d,0xef,0x3d,0xef,0x3d,0xef,0x3c,0xe7,0x5c,0xef,0x5b,0xef,0x5c,0xef,0x5b,0xef,
+0x5c,0xef,0x5c,0xef,0x7c,0xef,0x7c,0xef,0x9d,0xef,0x7c,0xef,0x9d,0xf7,0xbd,0xf7,
+0xb1,0xbc,0xed,0xb3,0xaf,0xcc,0x6f,0xc4,0x2e,0xc4,0x6b,0xb3,0xed,0xbb,0x98,0xee,
+0xbe,0xf7,0x5d,0xe7,0xbf,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1d,0xef,
+0x1d,0xe7,0x1d,0xef,0x1d,0xef,0x3e,0xef,0x1e,0xe7,0x1e,0xef,0x1c,0xef,0x3c,0xef,
+0x3c,0xef,0x5c,0xf7,0x3c,0xef,0x3c,0xef,0x3c,0xef,0x3d,0xf7,0x3c,0xef,0x5c,0xef,
+0x5c,0xef,0x5c,0xef,0x5c,0xef,0x7d,0xf7,0x5c,0xef,0x5d,0xf7,0x5b,0xef,0x7b,0xef,
+0x7a,0xef,0x7b,0xf7,0x7b,0xef,0x9b,0xf7,0x9b,0xef,0x9c,0xf7,0x9c,0xf7,0x9c,0xf7,
+0xbc,0xf7,0xfd,0xff,0x6f,0xb4,0x0d,0xb4,0xd0,0xcc,0x70,0xc4,0xed,0xb3,0x6b,0xab,
+0xed,0xb3,0xd9,0xf6,0xdf,0xf7,0x7e,0xef,0x9e,0xf7,0xdf,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xfc,0xe6,0xfd,0xee,0xfd,0xe6,0x1d,0xef,0x1d,0xe7,0x3e,0xef,0x3d,0xef,
+0x1c,0xef,0x3b,0xef,0x5c,0xef,0x3c,0xef,0x5c,0xef,0x3c,0xef,0x5c,0xef,0x5c,0xef,
+0x5c,0xf7,0x5c,0xe7,0x5c,0xef,0x3c,0xef,0x5d,0xef,0x5c,0xef,0x5d,0xef,0x5c,0xef,
+0x7c,0xef,0x5b,0xef,0x7c,0xef,0x7b,0xef,0x7c,0xef,0x7c,0xef,0x9c,0xef,0x7c,0xef,
+0x7c,0xef,0x7c,0xef,0xdd,0xff,0xdd,0xff,0x4e,0xb4,0xcc,0xab,0xb1,0xcc,0x50,0xb4,
+0x0d,0xb4,0x4a,0xa3,0xed,0xb3,0x77,0xee,0xff,0xff,0x5d,0xe7,0xbe,0xf7,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0x5c,0xef,0x3b,0xe7,0x5c,0xef,0x5c,0xef,0x5c,0xf7,
+0x3c,0xef,0x5c,0xf7,0x3c,0xef,0x5c,0xf7,0x5c,0xf7,0x5d,0xf7,0x5c,0xef,0x5d,0xf7,
+0x5c,0xf7,0x7d,0xf7,0x5c,0xef,0x7d,0xf7,0x5c,0xf7,0x5d,0xf7,0x5c,0xef,0x7d,0xf7,
+0x5c,0xf7,0x7d,0xf7,0x5d,0xef,0x5e,0xf7,0x5e,0xf7,0x7e,0xf7,0x7e,0xf7,0x7f,0xff,
+0x5e,0xf7,0x5e,0xf7,0x5e,0xf7,0x7e,0xf7,0x7e,0xf7,0xdf,0xff,0xb0,0xb4,0x0e,0xb4,
+0x91,0xbc,0x50,0xb4,0xaf,0xc4,0x2e,0xbc,0x2e,0xb4,0xf6,0xd5,0xfb,0xe6,0xbf,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1b,0xe7,0x3c,0xe7,0x1c,0xe7,
+0x1c,0xef,0x1b,0xef,0x1c,0xef,0x1b,0xe7,0x3c,0xef,0x3c,0xef,0x3c,0xef,0x3c,0xef,
+0x3c,0xef,0x1c,0xef,0x3c,0xef,0x3c,0xef,0x3c,0xef,0x3c,0xef,0x3c,0xef,0x1b,0xef,
+0x3c,0xef,0x3c,0xef,0x3c,0xef,0x3b,0xef,0x3c,0xef,0x1c,0xef,0x3c,0xef,0x3c,0xef,
+0x3c,0xef,0x3b,0xef,0x3c,0xef,0x1b,0xe7,0x3c,0xef,0x1c,0xef,0x5c,0xef,0x9d,0xef,
+0x18,0xde,0x91,0xb4,0x50,0xb4,0x8f,0xbc,0x6f,0xc4,0x70,0xbc,0xb2,0xbc,0x35,0xc5,
+0x7e,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1c,0xe7,
+0x1c,0xe7,0x3c,0xe7,0xfb,0xe6,0xfc,0xee,0xfb,0xe6,0x1c,0xef,0x1c,0xef,0x3c,0xef,
+0x1c,0xef,0x3c,0xef,0x1c,0xef,0x1c,0xef,0x1c,0xef,0x3c,0xef,0x3c,0xef,0x3c,0xef,
+0x1b,0xe7,0x1c,0xef,0x1b,0xe7,0x1c,0xef,0x1b,0xef,0x3c,0xef,0x3c,0xef,0x3c,0xef,
+0x1b,0xef,0x3c,0xef,0x1b,0xe7,0xfb,0xe6,0xfb,0xe6,0xfb,0xee,0xfb,0xe6,0x1b,0xef,
+0xfb,0xe6,0x3d,0xef,0x3c,0xf7,0x34,0xc5,0x0e,0xa4,0xf1,0xc4,0xb0,0xc4,0x70,0xb4,
+0xb1,0xb4,0x59,0xe6,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xfb,0xde,0xfc,0xe6,0xdb,0xde,0xfb,0xe6,0xda,0xe6,0xdb,0xe6,0xda,0xe6,
+0xfb,0xe6,0xfb,0xe6,0x1b,0xe7,0xfb,0xe6,0xfb,0xe6,0xfa,0xe6,0x1b,0xe7,0xfb,0xe6,
+0x1c,0xef,0xfb,0xe6,0xfb,0xe6,0xdb,0xe6,0xfb,0xe6,0xdb,0xe6,0xfb,0xee,0xfb,0xe6,
+0x1c,0xef,0xfb,0xe6,0x1b,0xe7,0xfb,0xe6,0xfb,0xee,0xfb,0xe6,0xfb,0xe6,0xfb,0xe6,
+0xfb,0xee,0xfb,0xe6,0x1b,0xe7,0x1b,0xe7,0x9e,0xff,0xb5,0xc5,0x50,0xac,0x90,0xb4,
+0x6f,0xb4,0x12,0xbd,0x17,0xd6,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xe6,0xbb,0xde,0xdb,0xde,0xba,0xde,0xda,0xe6,
+0xba,0xde,0xbb,0xde,0xda,0xde,0xdb,0xe6,0xba,0xde,0xdb,0xe6,0xda,0xde,0xdb,0xe6,
+0xda,0xe6,0xfb,0xe6,0xda,0xde,0xdb,0xe6,0xdb,0xe6,0x1b,0xe7,0xfb,0xe6,0xfb,0xe6,
+0xfb,0xe6,0xfb,0xe6,0xfb,0xe6,0xfb,0xe6,0xdb,0xde,0xfb,0xe6,0x1b,0xe7,0x3c,0xef,
+0x1c,0xef,0x1c,0xef,0x1c,0xef,0x3c,0xef,0x1c,0xef,0x3c,0xef,0x3c,0xf7,0x1b,0xff,
+0x78,0xe6,0x70,0xac,0x53,0xc5,0x9d,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xba,0xde,0xbb,0xde,0xba,0xd6,
+0xdb,0xde,0xba,0xde,0xba,0xde,0x9a,0xd6,0xba,0xde,0xba,0xde,0xdb,0xe6,0xda,0xde,
+0xda,0xde,0xba,0xde,0xdb,0xde,0xda,0xde,0xdb,0xe6,0xba,0xde,0xdb,0xe6,0xda,0xde,
+0xdb,0xe6,0xbb,0xde,0xdb,0xe6,0xdb,0xde,0xfb,0xe6,0xdb,0xde,0xfb,0xe6,0xda,0xde,
+0xfb,0xe6,0xfb,0xe6,0xfb,0xe6,0xdb,0xde,0xfb,0xe6,0xfb,0xe6,0x1c,0xe7,0xfb,0xde,
+0xfb,0xee,0x5c,0xf7,0xda,0xee,0xb1,0xac,0xb9,0xe6,0xff,0xff,0xff,0xff,0xff,0xff,
+0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdb,0xde,
+0xba,0xd6,0xbb,0xde,0xda,0xde,0xdb,0xe6,0xba,0xde,0xdb,0xe6,0xda,0xde,0xfb,0xe6,
+0xdb,0xde,0xfb,0xe6,0xdb,0xde,0xdb,0xe6,0xdb,0xde,0xfb,0xe6,0xdb,0xe6,0xfb,0xe6,
+0xdb,0xde,0xfb,0xe6,0xdb,0xde,0xdb,0xde,0xdb,0xde,0xfc,0xe6,0xfb,0xe6,0xfb,0xe6,
+0xfb,0xe6,0xfc,0xe6,0xdb,0xde,0xba,0xde,0xba,0xde,0xdb,0xe6,0xda,0xde,0xdb,0xe6,
+0xdb,0xde,0xdb,0xe6,0xba,0xde,0xfb,0xee,0x99,0xe6,0x95,0xcd,0x5d,0xf7,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0x9f,0xef,0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,
+0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,
+0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,
+0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,
+0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,
+0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,0xbf,0xf7,0x9f,0xef,
+0xbf,0xf7,0x9f,0xef,0xff,0xff
+};
+
+#endif /* __COLOR_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 33 - 0
stm32-hal-freertos-uart-tensorflow/Inc/constants.h

@@ -0,0 +1,33 @@
+/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+#ifndef TENSORFLOW_LITE_MICRO_EXAMPLES_HELLO_WORLD_CONSTANTS_H_
+#define TENSORFLOW_LITE_MICRO_EXAMPLES_HELLO_WORLD_CONSTANTS_H_
+
+// This constant represents the range of x values our model was trained on,
+// which is from 0 to (2 * Pi). We approximate Pi to avoid requiring additional
+// libraries.
+const float PI = 3.14159265359f;
+const float kXrange = 2.f * PI;
+
+// This constant determines the number of inferences to perform across the range
+// of x values defined above. Since each inference takes time, the higher this
+// number, the more time it will take to run through the entire range. The value
+// of this constant can be tuned so that one full cycle takes a desired amount
+// of time. Since different devices take different amounts of time to perform
+// inference, this value should be defined per-device.
+extern const int kInferencesPerCycle;
+
+#endif  // TENSORFLOW_LITE_MICRO_EXAMPLES_HELLO_WORLD_CONSTANTS_H_

+ 12 - 0
stm32-hal-freertos-uart-tensorflow/Inc/data_types.h

@@ -0,0 +1,12 @@
+#ifndef __DATA_TYPES_H__
+#define __DATA_TYPES_H__
+
+#include <stdint.h>
+
+typedef struct{
+    float x;
+    float y;
+    uint32_t size;
+} circle_t;
+
+#endif

+ 326 - 0
stm32-hal-freertos-uart-tensorflow/Inc/ffconf.h

@@ -0,0 +1,326 @@
+/**
+  *
+  *  Portions COPYRIGHT 2017 STMicroelectronics
+  *  Copyright (C) 2017, ChaN, all right reserved.
+  *
+  ******************************************************************************
+  *
+  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics International N.V.
+  * All rights reserved.</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted, provided that the following conditions are met:
+  *
+  * 1. Redistribution of source code must retain the above copyright notice,
+  *    this list of conditions and the following disclaimer.
+  * 2. Redistributions in binary form must reproduce the above copyright notice,
+  *    this list of conditions and the following disclaimer in the documentation
+  *    and/or other materials provided with the distribution.
+  * 3. Neither the name of STMicroelectronics nor the names of other
+  *    contributors to this software may be used to endorse or promote products
+  *    derived from this software without specific written permission.
+  * 4. This software, including modifications and/or derivative works of this
+  *    software, must execute solely and exclusively on microcontroller or
+  *    microprocessor devices manufactured by or for STMicroelectronics.
+  * 5. Redistribution and use of this software other than as permitted under
+  *    this license is void and will automatically terminate your rights under
+  *    this license.
+  *
+  * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
+  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+  * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
+  * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
+  * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/*---------------------------------------------------------------------------/
+/  FatFs - FAT file system module configuration file
+/---------------------------------------------------------------------------*/
+
+#define _FFCONF 68300	/* Revision ID */
+
+/*---------------------------------------------------------------------------/
+/ Function Configurations
+/---------------------------------------------------------------------------*/
+
+#define _FS_READONLY	0
+/* This option switches read-only configuration. (0:Read/Write or 1:Read-only)
+/  Read-only configuration removes writing API functions, f_write(), f_sync(),
+/  f_unlink(), f_mkdir(), f_chmod(), f_rename(), f_truncate(), f_getfree()
+/  and optional writing functions as well. */
+
+
+#define _FS_MINIMIZE	0
+/* This option defines minimization level to remove some basic API functions.
+/
+/   0: All basic functions are enabled.
+/   1: f_stat(), f_getfree(), f_unlink(), f_mkdir(), f_truncate() and f_rename()
+/      are removed.
+/   2: f_opendir(), f_readdir() and f_closedir() are removed in addition to 1.
+/   3: f_lseek() function is removed in addition to 2. */
+
+
+#define	_USE_STRFUNC	0
+/* This option switches string functions, f_gets(), f_putc(), f_puts() and
+/  f_printf().
+/
+/  0: Disable string functions.
+/  1: Enable without LF-CRLF conversion.
+/  2: Enable with LF-CRLF conversion. */
+
+
+#define _USE_FIND		0
+/* This option switches filtered directory read functions, f_findfirst() and
+/  f_findnext(). (0:Disable, 1:Enable 2:Enable with matching altname[] too) */
+
+
+#define	_USE_MKFS		1
+/* This option switches f_mkfs() function. (0:Disable or 1:Enable) */
+
+
+#define	_USE_FASTSEEK	1
+/* This option switches fast seek function. (0:Disable or 1:Enable) */
+
+
+#define	_USE_EXPAND		0
+/* This option switches f_expand function. (0:Disable or 1:Enable) */
+
+
+#define _USE_CHMOD		0
+/* This option switches attribute manipulation functions, f_chmod() and f_utime().
+/  (0:Disable or 1:Enable) Also _FS_READONLY needs to be 0 to enable this option. */
+
+
+#define _USE_LABEL		0
+/* This option switches volume label functions, f_getlabel() and f_setlabel().
+/  (0:Disable or 1:Enable) */
+
+
+#define	_USE_FORWARD	0
+/* This option switches f_forward() function. (0:Disable or 1:Enable) */
+
+
+/*---------------------------------------------------------------------------/
+/ Locale and Namespace Configurations
+/---------------------------------------------------------------------------*/
+
+#define _CODE_PAGE	850
+/* This option specifies the OEM code page to be used on the target system.
+/  Incorrect setting of the code page can cause a file open failure.
+/
+/   1   - ASCII (No extended character. Non-LFN cfg. only)
+/   437 - U.S.
+/   720 - Arabic
+/   737 - Greek
+/   771 - KBL
+/   775 - Baltic
+/   850 - Latin 1
+/   852 - Latin 2
+/   855 - Cyrillic
+/   857 - Turkish
+/   860 - Portuguese
+/   861 - Icelandic
+/   862 - Hebrew
+/   863 - Canadian French
+/   864 - Arabic
+/   865 - Nordic
+/   866 - Russian
+/   869 - Greek 2
+/   932 - Japanese (DBCS)
+/   936 - Simplified Chinese (DBCS)
+/   949 - Korean (DBCS)
+/   950 - Traditional Chinese (DBCS)
+*/
+
+
+#define	_USE_LFN	3
+#define	_MAX_LFN	255
+/* The _USE_LFN switches the support of long file name (LFN).
+/
+/   0: Disable support of LFN. _MAX_LFN has no effect.
+/   1: Enable LFN with static working buffer on the BSS. Always NOT thread-safe.
+/   2: Enable LFN with dynamic working buffer on the STACK.
+/   3: Enable LFN with dynamic working buffer on the HEAP.
+/
+/  To enable the LFN, Unicode handling functions (option/unicode.c) must be added
+/  to the project. The working buffer occupies (_MAX_LFN + 1) * 2 bytes and
+/  additional 608 bytes at exFAT enabled. _MAX_LFN can be in range from 12 to 255.
+/  It should be set 255 to support full featured LFN operations.
+/  When use stack for the working buffer, take care on stack overflow. When use heap
+/  memory for the working buffer, memory management functions, ff_memalloc() and
+/  ff_memfree(), must be added to the project. */
+
+
+#define	_LFN_UNICODE	0
+/* This option switches character encoding on the API. (0:ANSI/OEM or 1:UTF-16)
+/  To use Unicode string for the path name, enable LFN and set _LFN_UNICODE = 1.
+/  This option also affects behavior of string I/O functions. */
+
+
+#define _STRF_ENCODE	3
+/* When _LFN_UNICODE == 1, this option selects the character encoding ON THE FILE to
+/  be read/written via string I/O functions, f_gets(), f_putc(), f_puts and f_printf().
+/
+/  0: ANSI/OEM
+/  1: UTF-16LE
+/  2: UTF-16BE
+/  3: UTF-8
+/
+/  This option has no effect when _LFN_UNICODE == 0. */
+
+
+#define _FS_RPATH	0
+/* This option configures support of relative path.
+/
+/   0: Disable relative path and remove related functions.
+/   1: Enable relative path. f_chdir() and f_chdrive() are available.
+/   2: f_getcwd() function is available in addition to 1.
+*/
+
+
+/*---------------------------------------------------------------------------/
+/ Drive/Volume Configurations
+/---------------------------------------------------------------------------*/
+
+#define _VOLUMES	2
+/* Number of volumes (logical drives) to be used. */
+
+
+#define _STR_VOLUME_ID	0
+#define _VOLUME_STRS	"RAM","NAND","CF","SD","SD2","USB","USB2","USB3"
+/* _STR_VOLUME_ID switches string support of volume ID.
+/  When _STR_VOLUME_ID is set to 1, also pre-defined strings can be used as drive
+/  number in the path name. _VOLUME_STRS defines the drive ID strings for each
+/  logical drives. Number of items must be equal to _VOLUMES. Valid characters for
+/  the drive ID strings are: A-Z and 0-9. */
+
+
+#define	_MULTI_PARTITION	0
+/* This option switches support of multi-partition on a physical drive.
+/  By default (0), each logical drive number is bound to the same physical drive
+/  number and only an FAT volume found on the physical drive will be mounted.
+/  When multi-partition is enabled (1), each logical drive number can be bound to
+/  arbitrary physical drive and partition listed in the VolToPart[]. Also f_fdisk()
+/  funciton will be available. */
+
+
+#define	_MIN_SS		512
+#define	_MAX_SS		512
+/* These options configure the range of sector size to be supported. (512, 1024,
+/  2048 or 4096) Always set both 512 for most systems, all type of memory cards and
+/  harddisk. But a larger value may be required for on-board flash memory and some
+/  type of optical media. When _MAX_SS is larger than _MIN_SS, FatFs is configured
+/  to variable sector size and GET_SECTOR_SIZE command must be implemented to the
+/  disk_ioctl() function. */
+
+
+#define	_USE_TRIM	0
+/* This option switches support of ATA-TRIM. (0:Disable or 1:Enable)
+/  To enable Trim function, also CTRL_TRIM command should be implemented to the
+/  disk_ioctl() function. */
+
+
+#define _FS_NOFSINFO	0
+/* If you need to know correct free space on the FAT32 volume, set bit 0 of this
+/  option, and f_getfree() function at first time after volume mount will force
+/  a full FAT scan. Bit 1 controls the use of last allocated cluster number.
+/
+/  bit0=0: Use free cluster count in the FSINFO if available.
+/  bit0=1: Do not trust free cluster count in the FSINFO.
+/  bit1=0: Use last allocated cluster number in the FSINFO if available.
+/  bit1=1: Do not trust last allocated cluster number in the FSINFO.
+*/
+
+
+
+/*---------------------------------------------------------------------------/
+/ System Configurations
+/---------------------------------------------------------------------------*/
+
+#define	_FS_TINY	0
+/* This option switches tiny buffer configuration. (0:Normal or 1:Tiny)
+/  At the tiny configuration, size of file object (FIL) is reduced _MAX_SS bytes.
+/  Instead of private sector buffer eliminated from the file object, common sector
+/  buffer in the file system object (FATFS) is used for the file data transfer. */
+
+
+#define _FS_EXFAT	0
+/* This option switches support of exFAT file system. (0:Disable or 1:Enable)
+/  When enable exFAT, also LFN needs to be enabled. (_USE_LFN >= 1)
+/  Note that enabling exFAT discards C89 compatibility. */
+
+
+#define _FS_NORTC	0
+#define _NORTC_MON	1
+#define _NORTC_MDAY	1
+#define _NORTC_YEAR	2016
+/* The option _FS_NORTC switches timestamp functiton. If the system does not have
+/  any RTC function or valid timestamp is not needed, set _FS_NORTC = 1 to disable
+/  the timestamp function. All objects modified by FatFs will have a fixed timestamp
+/  defined by _NORTC_MON, _NORTC_MDAY and _NORTC_YEAR in local time.
+/  To enable timestamp function (_FS_NORTC = 0), get_fattime() function need to be
+/  added to the project to get current time form real-time clock. _NORTC_MON,
+/  _NORTC_MDAY and _NORTC_YEAR have no effect.
+/  These options have no effect at read-only configuration (_FS_READONLY = 1). */
+
+
+#define	_FS_LOCK	2
+/* The option _FS_LOCK switches file lock function to control duplicated file open
+/  and illegal operation to open objects. This option must be 0 when _FS_READONLY
+/  is 1.
+/
+/  0:  Disable file lock function. To avoid volume corruption, application program
+/      should avoid illegal open, remove and rename to the open objects.
+/  >0: Enable file lock function. The value defines how many files/sub-directories
+/      can be opened simultaneously under file lock control. Note that the file
+/      lock control is independent of re-entrancy. */
+
+#define _FS_REENTRANT	0
+
+#if _FS_REENTRANT
+#include "cmsis_os.h"
+#define _FS_TIMEOUT		1000
+#define	_SYNC_t         osSemaphoreId
+#endif
+/* The option _FS_REENTRANT switches the re-entrancy (thread safe) of the FatFs
+/  module itself. Note that regardless of this option, file access to different
+/  volume is always re-entrant and volume control functions, f_mount(), f_mkfs()
+/  and f_fdisk() function, are always not re-entrant. Only file/directory access
+/  to the same volume is under control of this function.
+/
+/   0: Disable re-entrancy. _FS_TIMEOUT and _SYNC_t have no effect.
+/   1: Enable re-entrancy. Also user provided synchronization handlers,
+/      ff_req_grant(), ff_rel_grant(), ff_del_syncobj() and ff_cre_syncobj()
+/      function, must be added to the project. Samples are available in
+/      option/syscall.c.
+/
+/  The _FS_TIMEOUT defines timeout period in unit of time tick.
+/  The _SYNC_t defines O/S dependent sync object type. e.g. HANDLE, ID, OS_EVENT*,
+/  SemaphoreHandle_t and etc.. A header file for O/S definitions needs to be
+/  included somewhere in the scope of ff.h. */
+
+/* #include <windows.h>	// O/S definitions  */
+
+#if _USE_LFN == 3
+#if !defined(ff_malloc) || !defined(ff_free)
+#include <stdlib.h>
+#endif
+
+#if !defined(ff_malloc)
+#define ff_malloc malloc
+#endif
+
+#if !defined(ff_free)
+#define ff_free free
+#endif
+#endif
+/*--- End of configuration options ---*/

+ 309 - 0
stm32-hal-freertos-uart-tensorflow/Inc/main.h

@@ -0,0 +1,309 @@
+#ifndef __MAIN_H
+#define __MAIN_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "stm32f4xx_hal.h"
+
+#include "stm324xg_eval.h"
+#include "stm324xg_eval_lcd.h"
+#include "stm324xg_eval_ts.h"
+#include "stm324xg_eval_sram.h"
+#include <stdlib.h>
+#include <stdio.h>
+
+#define USARTx USART3
+#define USARTx_CLK_ENABLE() __HAL_RCC_USART3_CLK_ENABLE();
+#define USARTx_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
+#define USARTx_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
+
+#define USARTx_FORCE_RESET() __HAL_RCC_USART3_FORCE_RESET()
+#define USARTx_RELEASE_RESET() __HAL_RCC_USART3_RELEASE_RESET()
+
+/* Definition for USARTx Pins */
+#define USARTx_TX_PIN GPIO_PIN_10
+#define USARTx_TX_GPIO_PORT GPIOC
+#define USARTx_TX_AF GPIO_AF7_USART3
+#define USARTx_RX_PIN GPIO_PIN_11
+#define USARTx_RX_GPIO_PORT GPIOC
+#define USARTx_RX_AF GPIO_AF7_USART3
+
+void Error_Handler(void);
+
+void Touchscreen_Calibration(void);
+uint16_t Calibration_GetX(uint16_t x);
+uint16_t Calibration_GetY(uint16_t y);
+uint8_t IsCalibrationDone(void);
+
+#define A19_Pin GPIO_PIN_3
+#define A19_GPIO_Port GPIOE
+#define TRACE_CLK_Pin GPIO_PIN_2
+#define TRACE_CLK_GPIO_Port GPIOE
+#define FSMC_NBL1_Pin GPIO_PIN_1
+#define FSMC_NBL1_GPIO_Port GPIOE
+#define FSMC_NBL0_Pin GPIO_PIN_0
+#define FSMC_NBL0_GPIO_Port GPIOE
+#define MII_TXD3_Pin GPIO_PIN_8
+#define MII_TXD3_GPIO_Port GPIOB
+#define ULPI_D7_Pin GPIO_PIN_5
+#define ULPI_D7_GPIO_Port GPIOB
+#define MII_TXD1_Pin GPIO_PIN_14
+#define MII_TXD1_GPIO_Port GPIOG
+#define MII_TXD0_Pin GPIO_PIN_13
+#define MII_TXD0_GPIO_Port GPIOG
+#define TRST_Pin GPIO_PIN_4
+#define TRST_GPIO_Port GPIOB
+#define TDO_SWO_Pin GPIO_PIN_3
+#define TDO_SWO_GPIO_Port GPIOB
+#define FSMC_NE1_Pin GPIO_PIN_7
+#define FSMC_NE1_GPIO_Port GPIOD
+#define MicroSDCard_CLK_Pin GPIO_PIN_12
+#define MicroSDCard_CLK_GPIO_Port GPIOC
+#define TDI_Pin GPIO_PIN_15
+#define TDI_GPIO_Port GPIOA
+#define TCK_SWCLK_Pin GPIO_PIN_14
+#define TCK_SWCLK_GPIO_Port GPIOA
+#define TMS_SWDIO_Pin GPIO_PIN_13
+#define TMS_SWDIO_GPIO_Port GPIOA
+#define A20_Pin GPIO_PIN_4
+#define A20_GPIO_Port GPIOE
+#define TRACE_D2_Pin GPIO_PIN_5
+#define TRACE_D2_GPIO_Port GPIOE
+#define TRACE_D3_Pin GPIO_PIN_6
+#define TRACE_D3_GPIO_Port GPIOE
+#define I2C1_SDA_Pin GPIO_PIN_9
+#define I2C1_SDA_GPIO_Port GPIOB
+#define FSMC_NL_Pin GPIO_PIN_7
+#define FSMC_NL_GPIO_Port GPIOB
+#define I2C1_SCL_Pin GPIO_PIN_6
+#define I2C1_SCL_GPIO_Port GPIOB
+#define User_Button_Pin GPIO_PIN_15
+#define User_Button_GPIO_Port GPIOG
+#define SmartCard_CMDVCC_Pin GPIO_PIN_12
+#define SmartCard_CMDVCC_GPIO_Port GPIOG
+#define MII_TX_EN_Pin GPIO_PIN_11
+#define MII_TX_EN_GPIO_Port GPIOG
+#define FSMC_NE3_Pin GPIO_PIN_10
+#define FSMC_NE3_GPIO_Port GPIOG
+#define FSMC_NWAIT_Pin GPIO_PIN_6
+#define FSMC_NWAIT_GPIO_Port GPIOD
+#define D2_Pin GPIO_PIN_0
+#define D2_GPIO_Port GPIOD
+#define DCMI_D7_Pin GPIO_PIN_7
+#define DCMI_D7_GPIO_Port GPIOI
+#define DCMI_D6_Pin GPIO_PIN_6
+#define DCMI_D6_GPIO_Port GPIOI
+#define DCMI_VSYNC_Pin GPIO_PIN_5
+#define DCMI_VSYNC_GPIO_Port GPIOI
+#define FSMC_NE2_Pin GPIO_PIN_9
+#define FSMC_NE2_GPIO_Port GPIOG
+#define FSMC_NWE_Pin GPIO_PIN_5
+#define FSMC_NWE_GPIO_Port GPIOD
+#define D3_Pin GPIO_PIN_1
+#define D3_GPIO_Port GPIOD
+#define I2S_SD_Pin GPIO_PIN_3
+#define I2S_SD_GPIO_Port GPIOI
+#define IO_Expander_INT_Pin GPIO_PIN_2
+#define IO_Expander_INT_GPIO_Port GPIOI
+#define USB_FS_DM_Pin GPIO_PIN_11
+#define USB_FS_DM_GPIO_Port GPIOA
+#define Anti_Tamper_Pin GPIO_PIN_13
+#define Anti_Tamper_GPIO_Port GPIOC
+#define LED3_Pin GPIO_PIN_9
+#define LED3_GPIO_Port GPIOI
+#define DCMI_D5_Pin GPIO_PIN_4
+#define DCMI_D5_GPIO_Port GPIOI
+#define FSMC_NOE_Pin GPIO_PIN_4
+#define FSMC_NOE_GPIO_Port GPIOD
+#define FSMC_CLK_Pin GPIO_PIN_3
+#define FSMC_CLK_GPIO_Port GPIOD
+#define MicroSDCard_CMD_Pin GPIO_PIN_2
+#define MicroSDCard_CMD_GPIO_Port GPIOD
+#define SmartCard_3_5V_Pin GPIO_PIN_15
+#define SmartCard_3_5V_GPIO_Port GPIOH
+#define USB_FS_ID_Pin GPIO_PIN_10
+#define USB_FS_ID_GPIO_Port GPIOA
+#define PC14_OSC32_IN_Pin GPIO_PIN_14
+#define PC14_OSC32_IN_GPIO_Port GPIOC
+#define A0_Pin GPIO_PIN_0
+#define A0_GPIO_Port GPIOF
+#define MII_RX_ER_Pin GPIO_PIN_10
+#define MII_RX_ER_GPIO_Port GPIOI
+#define ULPI_DIR_Pin GPIO_PIN_11
+#define ULPI_DIR_GPIO_Port GPIOI
+#define MicroSDCard_Detect_Pin GPIO_PIN_13
+#define MicroSDCard_Detect_GPIO_Port GPIOH
+#define DCMI_D4_Pin GPIO_PIN_14
+#define DCMI_D4_GPIO_Port GPIOH
+#define I2S_WS_Pin GPIO_PIN_0
+#define I2S_WS_GPIO_Port GPIOI
+#define VBUS_FS_Pin GPIO_PIN_9
+#define VBUS_FS_GPIO_Port GPIOA
+#define PC15_OSC32_OUT_Pin GPIO_PIN_15
+#define PC15_OSC32_OUT_GPIO_Port GPIOC
+#define MII_CRS_Pin GPIO_PIN_2
+#define MII_CRS_GPIO_Port GPIOH
+#define MicroSDCard_D1_Pin GPIO_PIN_9
+#define MicroSDCard_D1_GPIO_Port GPIOC
+#define MCO_Pin GPIO_PIN_8
+#define MCO_GPIO_Port GPIOA
+#define PH0_OSC_IN_Pin GPIO_PIN_0
+#define PH0_OSC_IN_GPIO_Port GPIOH
+#define MII_COL_Pin GPIO_PIN_3
+#define MII_COL_GPIO_Port GPIOH
+#define MicroSDCard_D0_Pin GPIO_PIN_8
+#define MicroSDCard_D0_GPIO_Port GPIOC
+#define LED4_Pin GPIO_PIN_7
+#define LED4_GPIO_Port GPIOC
+#define PH1_OSC_OUT_Pin GPIO_PIN_1
+#define PH1_OSC_OUT_GPIO_Port GPIOH
+#define A2_Pin GPIO_PIN_2
+#define A2_GPIO_Port GPIOF
+#define A1_Pin GPIO_PIN_1
+#define A1_GPIO_Port GPIOF
+#define ULPI_NXT_Pin GPIO_PIN_4
+#define ULPI_NXT_GPIO_Port GPIOH
+#define LED2_Pin GPIO_PIN_8
+#define LED2_GPIO_Port GPIOG
+#define A3_Pin GPIO_PIN_3
+#define A3_GPIO_Port GPIOF
+#define A4_Pin GPIO_PIN_4
+#define A4_GPIO_Port GPIOF
+#define OTG_FS_PowerSwitchOn_Pin GPIO_PIN_5
+#define OTG_FS_PowerSwitchOn_GPIO_Port GPIOH
+#define SmartCard_CLK_Pin GPIO_PIN_7
+#define SmartCard_CLK_GPIO_Port GPIOG
+#define LED1_Pin GPIO_PIN_6
+#define LED1_GPIO_Port GPIOG
+#define SmartCard_RST_Pin GPIO_PIN_7
+#define SmartCard_RST_GPIO_Port GPIOF
+#define SmartCard_OFF_Pin GPIO_PIN_6
+#define SmartCard_OFF_GPIO_Port GPIOF
+#define A5_Pin GPIO_PIN_5
+#define A5_GPIO_Port GPIOF
+#define DCMI_D3_Pin GPIO_PIN_12
+#define DCMI_D3_GPIO_Port GPIOH
+#define A15_Pin GPIO_PIN_5
+#define A15_GPIO_Port GPIOG
+#define A14_Pin GPIO_PIN_4
+#define A14_GPIO_Port GPIOG
+#define A13_Pin GPIO_PIN_3
+#define A13_GPIO_Port GPIOG
+#define Audio_IN_Pin GPIO_PIN_10
+#define Audio_IN_GPIO_Port GPIOF
+#define Potentiometer_Pin GPIO_PIN_9
+#define Potentiometer_GPIO_Port GPIOF
+#define DCMI_D2_Pin GPIO_PIN_11
+#define DCMI_D2_GPIO_Port GPIOH
+#define DCMI_D1_Pin GPIO_PIN_10
+#define DCMI_D1_GPIO_Port GPIOH
+#define D1_Pin GPIO_PIN_15
+#define D1_GPIO_Port GPIOD
+#define A12_Pin GPIO_PIN_2
+#define A12_GPIO_Port GPIOG
+#define ULPI_STP_Pin GPIO_PIN_0
+#define ULPI_STP_GPIO_Port GPIOC
+#define MII_MDC_Pin GPIO_PIN_1
+#define MII_MDC_GPIO_Port GPIOC
+#define MII_TXD2_Pin GPIO_PIN_2
+#define MII_TXD2_GPIO_Port GPIOC
+#define MII_TX_CLK_Pin GPIO_PIN_3
+#define MII_TX_CLK_GPIO_Port GPIOC
+#define SW1_Pin GPIO_PIN_2
+#define SW1_GPIO_Port GPIOB
+#define A11_Pin GPIO_PIN_1
+#define A11_GPIO_Port GPIOG
+#define MII_RXD2_Pin GPIO_PIN_6
+#define MII_RXD2_GPIO_Port GPIOH
+#define DCMI_HSYNC_Pin GPIO_PIN_8
+#define DCMI_HSYNC_GPIO_Port GPIOH
+#define DCMI_D0_Pin GPIO_PIN_9
+#define DCMI_D0_GPIO_Port GPIOH
+#define D0_Pin GPIO_PIN_14
+#define D0_GPIO_Port GPIOD
+#define A18_Pin GPIO_PIN_13
+#define A18_GPIO_Port GPIOD
+#define MII_RX_CLK_RMII_REF_CLK_Pin GPIO_PIN_1
+#define MII_RX_CLK_RMII_REF_CLK_GPIO_Port GPIOA
+#define WAKEUP_Pin GPIO_PIN_0
+#define WAKEUP_GPIO_Port GPIOA
+#define Audio_DAC_OUT_Pin GPIO_PIN_4
+#define Audio_DAC_OUT_GPIO_Port GPIOA
+#define MII_RXD0_Pin GPIO_PIN_4
+#define MII_RXD0_GPIO_Port GPIOC
+#define A7_Pin GPIO_PIN_13
+#define A7_GPIO_Port GPIOF
+#define A10_Pin GPIO_PIN_0
+#define A10_GPIO_Port GPIOG
+#define D10_Pin GPIO_PIN_13
+#define D10_GPIO_Port GPIOE
+#define MII_RXD3_Pin GPIO_PIN_7
+#define MII_RXD3_GPIO_Port GPIOH
+#define A17_Pin GPIO_PIN_12
+#define A17_GPIO_Port GPIOD
+#define A16_Pin GPIO_PIN_11
+#define A16_GPIO_Port GPIOD
+#define D15_Pin GPIO_PIN_10
+#define D15_GPIO_Port GPIOD
+#define MII_MDIO_Pin GPIO_PIN_2
+#define MII_MDIO_GPIO_Port GPIOA
+#define DCMI_PIXCK_Pin GPIO_PIN_6
+#define DCMI_PIXCK_GPIO_Port GPIOA
+#define ULPI_CLK_Pin GPIO_PIN_5
+#define ULPI_CLK_GPIO_Port GPIOA
+#define MII_RXD1_Pin GPIO_PIN_5
+#define MII_RXD1_GPIO_Port GPIOC
+#define A6_Pin GPIO_PIN_12
+#define A6_GPIO_Port GPIOF
+#define A9_Pin GPIO_PIN_15
+#define A9_GPIO_Port GPIOF
+#define D5_Pin GPIO_PIN_8
+#define D5_GPIO_Port GPIOE
+#define D6_Pin GPIO_PIN_9
+#define D6_GPIO_Port GPIOE
+#define D8_Pin GPIO_PIN_11
+#define D8_GPIO_Port GPIOE
+#define D11_Pin GPIO_PIN_14
+#define D11_GPIO_Port GPIOE
+#define ULPI_D5_Pin GPIO_PIN_12
+#define ULPI_D5_GPIO_Port GPIOB
+#define ULPI_D6_Pin GPIO_PIN_13
+#define ULPI_D6_GPIO_Port GPIOB
+#define D14_Pin GPIO_PIN_9
+#define D14_GPIO_Port GPIOD
+#define D13_Pin GPIO_PIN_8
+#define D13_GPIO_Port GPIOD
+#define ULPI_D0_Pin GPIO_PIN_3
+#define ULPI_D0_GPIO_Port GPIOA
+#define MII_RX_DV_RMII_CRSDV_Pin GPIO_PIN_7
+#define MII_RX_DV_RMII_CRSDV_GPIO_Port GPIOA
+#define ULPI_D2_Pin GPIO_PIN_1
+#define ULPI_D2_GPIO_Port GPIOB
+#define ULPI_D1_Pin GPIO_PIN_0
+#define ULPI_D1_GPIO_Port GPIOB
+#define OTG_FS_OverCurrent_Pin GPIO_PIN_11
+#define OTG_FS_OverCurrent_GPIO_Port GPIOF
+#define A8_Pin GPIO_PIN_14
+#define A8_GPIO_Port GPIOF
+#define D4_Pin GPIO_PIN_7
+#define D4_GPIO_Port GPIOE
+#define D7_Pin GPIO_PIN_10
+#define D7_GPIO_Port GPIOE
+#define D9_Pin GPIO_PIN_12
+#define D9_GPIO_Port GPIOE
+#define D12_Pin GPIO_PIN_15
+#define D12_GPIO_Port GPIOE
+#define ULPI_D3_Pin GPIO_PIN_10
+#define ULPI_D3_GPIO_Port GPIOB
+#define ULPI_D4_Pin GPIO_PIN_11
+#define ULPI_D4_GPIO_Port GPIOB
+#define MII_INT_Pin GPIO_PIN_14
+#define MII_INT_GPIO_Port GPIOB
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MAIN_H */

+ 39 - 0
stm32-hal-freertos-uart-tensorflow/Inc/main_functions.h

@@ -0,0 +1,39 @@
+/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+#ifndef TENSORFLOW_LITE_MICRO_EXAMPLES_HELLO_WORLD_MAIN_FUNCTIONS_H_
+#define TENSORFLOW_LITE_MICRO_EXAMPLES_HELLO_WORLD_MAIN_FUNCTIONS_H_
+
+#include "data_types.h"
+
+// Expose a C friendly interface for main functions.
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Initializes all data needed for the example. The name is important, and needs
+// to be setup() for Arduino compatibility.
+void setup();
+
+// Runs one iteration of data gathering and inference. This should be called
+// repeatedly from the application code. The name needs to be loop() for Arduino
+// compatibility.
+circle_t *loop();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // TENSORFLOW_LITE_MICRO_EXAMPLES_HELLO_WORLD_MAIN_FUNCTIONS_H_

+ 26 - 0
stm32-hal-freertos-uart-tensorflow/Inc/output_handler.h

@@ -0,0 +1,26 @@
+/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+#ifndef TENSORFLOW_LITE_MICRO_EXAMPLES_HELLO_WORLD_OUTPUT_HANDLER_H_
+#define TENSORFLOW_LITE_MICRO_EXAMPLES_HELLO_WORLD_OUTPUT_HANDLER_H_
+
+#include "tensorflow/lite/c/common.h"
+#include "tensorflow/lite/micro/micro_error_reporter.h"
+
+// Called by the main loop to produce some output based on the x and y values
+void HandleOutput(tflite::ErrorReporter* error_reporter, float x_value,
+                  float y_value);
+
+#endif  // TENSORFLOW_LITE_MICRO_EXAMPLES_HELLO_WORLD_OUTPUT_HANDLER_H_

+ 60 - 0
stm32-hal-freertos-uart-tensorflow/Inc/sd_diskio.h

@@ -0,0 +1,60 @@
+/**
+  ******************************************************************************
+  * @file    sd_diskio.h
+  * @author  MCD Application Team
+  * @brief   Header for sd_diskio.c module.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics International N.V.
+  * All rights reserved.</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without
+  * modification, are permitted, provided that the following conditions are met:
+  *
+  * 1. Redistribution of source code must retain the above copyright notice,
+  *    this list of conditions and the following disclaimer.
+  * 2. Redistributions in binary form must reproduce the above copyright notice,
+  *    this list of conditions and the following disclaimer in the documentation
+  *    and/or other materials provided with the distribution.
+  * 3. Neither the name of STMicroelectronics nor the names of other
+  *    contributors to this software may be used to endorse or promote products
+  *    derived from this software without specific written permission.
+  * 4. This software, including modifications and/or derivative works of this
+  *    software, must execute solely and exclusively on microcontroller or
+  *    microprocessor devices manufactured by or for STMicroelectronics.
+  * 5. Redistribution and use of this software other than as permitted under
+  *    this license is void and will automatically terminate your rights under
+  *    this license.
+  *
+  * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
+  * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
+  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+  * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
+  * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
+  * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __SD_DISKIO_H
+#define __SD_DISKIO_H
+
+/* Includes ------------------------------------------------------------------*/
+#include  "stm324xg_eval_sd.h"
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+/* Exported functions ------------------------------------------------------- */
+extern const Diskio_drvTypeDef  SD_Driver;
+
+#endif /* __SD_DISKIO_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+

+ 7 - 0
stm32-hal-freertos-uart-tensorflow/Inc/sine_model_quantized.h

@@ -0,0 +1,7 @@
+#ifndef __TENSORFLOW_SINE_MODEL_QUANITZED_H__
+#define __TENSORFLOW_SINE_MODEL_QUANTIZED_H__
+
+extern const unsigned char sine_model_quantized_tflite[];
+extern const unsigned int sine_model_quantized_tflite_len;
+
+#endif 

+ 457 - 0
stm32-hal-freertos-uart-tensorflow/Inc/stm32f4xx_hal_conf.h

@@ -0,0 +1,457 @@
+/**
+  ******************************************************************************
+  * @file    Display/LCD_Paint/Inc/stm32f4xx_hal_conf.h
+  * @author  MCD Application Team
+  * @brief   HAL configuration file
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>>
+  *
+  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
+  * You may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at:
+  *
+  *        http://www.st.com/software_license_agreement_liberty_v2
+  *
+  * Unless required by applicable law or agreed to in writing, software 
+  * distributed under the License is distributed on an "AS IS" BASIS, 
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  *
+  ******************************************************************************
+  */ 
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F4xx_HAL_CONF_H
+#define __STM32F4xx_HAL_CONF_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+
+/* ########################## Module Selection ############################## */
+/**
+  * @brief This is the list of modules to be used in the HAL driver 
+  */
+#define HAL_MODULE_ENABLED  
+/* #define HAL_ADC_MODULE_ENABLED */       
+/* #define HAL_CAN_MODULE_ENABLED */
+/* #define HAL_CAN_LEGACY_MODULE_ENABLED */       
+/* #define HAL_CRC_MODULE_ENABLED */        
+/* #define HAL_CRYP_MODULE_ENABLED */       
+/* #define HAL_DAC_MODULE_ENABLED */         
+#define HAL_DCMI_MODULE_ENABLED       
+#define HAL_DMA_MODULE_ENABLED 
+/* #define HAL_DMA2D_MODULE_ENABLED */ 
+/* #define HAL_ETH_MODULE_ENABLED */        
+#define HAL_FLASH_MODULE_ENABLED 
+/* #define HAL_NAND_MODULE_ENABLED */      
+/* #define HAL_NOR_MODULE_ENABLED */       
+/* #define HAL_PCCARD_MODULE_ENABLED */    
+#define HAL_SRAM_MODULE_ENABLED     
+/* #define HAL_SDRAM_MODULE_ENABLED */
+/* #define HAL_HASH_MODULE_ENABLED */  
+#define HAL_GPIO_MODULE_ENABLED
+#define HAL_I2C_MODULE_ENABLED
+/* #define HAL_I2S_MODULE_ENABLED */          
+/* #define HAL_IWDG_MODULE_ENABLED */       
+/* #define HAL_LTDC_MODULE_ENABLED */
+#define HAL_PWR_MODULE_ENABLED
+#define HAL_RCC_MODULE_ENABLED     
+/* #define HAL_RNG_MODULE_ENABLED */          
+/* #define HAL_RTC_MODULE_ENABLED */       
+/* #define HAL_SAI_MODULE_ENABLED */   
+#define HAL_SD_MODULE_ENABLED  
+/* #define HAL_SPI_MODULE_ENABLED */          
+/* #define HAL_TIM_MODULE_ENABLED */          
+#define HAL_UART_MODULE_ENABLED
+/* #define HAL_USART_MODULE_ENABLED */      
+/* #define HAL_IRDA_MODULE_ENABLED */       
+/* #define HAL_SMARTCARD_MODULE_ENABLED */  
+/* #define HAL_WWDG_MODULE_ENABLED */         
+#define HAL_CORTEX_MODULE_ENABLED
+/* #define HAL_PCD_MODULE_ENABLED */       
+/* #define HAL_HCD_MODULE_ENABLED */       
+
+/* ########################## HSE/HSI Values adaptation ##################### */
+/**
+  * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
+  *        This value is used by the RCC HAL module to compute the system frequency
+  *        (when HSE is used as system clock source, directly or through the PLL).  
+  */
+#if !defined  (HSE_VALUE) 
+  #define HSE_VALUE    (25000000U) /*!< Value of the External oscillator in Hz */
+#endif /* HSE_VALUE */
+
+#if !defined  (HSE_STARTUP_TIMEOUT)
+  #define HSE_STARTUP_TIMEOUT    (100U)   /*!< Time out for HSE start up, in ms */
+#endif /* HSE_STARTUP_TIMEOUT */
+
+/**
+  * @brief Internal High Speed oscillator (HSI) value.
+  *        This value is used by the RCC HAL module to compute the system frequency
+  *        (when HSI is used as system clock source, directly or through the PLL). 
+  */
+#if !defined  (HSI_VALUE)
+  #define HSI_VALUE    (16000000U) /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+/**
+  * @brief Internal Low Speed oscillator (LSI) value.
+  */
+#if !defined  (LSI_VALUE) 
+ #define LSI_VALUE  (32000U)    
+#endif /* LSI_VALUE */                      /*!< Value of the Internal Low Speed oscillator in Hz
+                                             The real value may vary depending on the variations
+                                             in voltage and temperature.  */
+/**
+  * @brief External Low Speed oscillator (LSE) value.
+  */
+#if !defined  (LSE_VALUE)
+ #define LSE_VALUE  (32768U)    /*!< Value of the External Low Speed oscillator in Hz */
+#endif /* LSE_VALUE */
+
+#if !defined  (LSE_STARTUP_TIMEOUT)
+  #define LSE_STARTUP_TIMEOUT    (5000U)   /*!< Time out for LSE start up, in ms */
+#endif /* LSE_STARTUP_TIMEOUT */
+
+/**
+  * @brief External clock source for I2S peripheral
+  *        This value is used by the I2S HAL module to compute the I2S clock source 
+  *        frequency, this source is inserted directly through I2S_CKIN pad. 
+  */
+#if !defined  (EXTERNAL_CLOCK_VALUE)
+  #define EXTERNAL_CLOCK_VALUE    (12288000U) /*!< Value of the external oscillator in Hz*/
+#endif /* EXTERNAL_CLOCK_VALUE */
+
+/* Tip: To avoid modifying this file each time you need to use different HSE,
+   ===  you can define the HSE value in your toolchain compiler preprocessor. */
+
+/* ########################### System Configuration ######################### */
+/**
+  * @brief This is the HAL system configuration section
+  */     
+#define  VDD_VALUE                    (3300U) /*!< Value of VDD in mv */
+#define  TICK_INT_PRIORITY            (0x0FU) /*!< tick interrupt priority */           
+#define  USE_RTOS                     0     
+#define  PREFETCH_ENABLE              0 /* The prefetch will be enabled in SystemClock_Config(), depending on the used 
+                                           STM32F405/415/07/417 device: RevA (prefetch must be off) or RevZ (prefetch can be on/off) */              
+#define  INSTRUCTION_CACHE_ENABLE     1
+#define  DATA_CACHE_ENABLE            1U
+
+#define  USE_HAL_ADC_REGISTER_CALLBACKS         0U /* ADC register callback disabled       */
+#define  USE_HAL_CAN_REGISTER_CALLBACKS         0U /* CAN register callback disabled       */
+#define  USE_HAL_CEC_REGISTER_CALLBACKS         0U /* CEC register callback disabled       */
+#define  USE_HAL_CRYP_REGISTER_CALLBACKS        0U /* CRYP register callback disabled      */
+#define  USE_HAL_DAC_REGISTER_CALLBACKS         0U /* DAC register callback disabled       */
+#define  USE_HAL_DCMI_REGISTER_CALLBACKS        0U /* DCMI register callback disabled      */
+#define  USE_HAL_DFSDM_REGISTER_CALLBACKS       0U /* DFSDM register callback disabled     */
+#define  USE_HAL_DMA2D_REGISTER_CALLBACKS       0U /* DMA2D register callback disabled     */
+#define  USE_HAL_DSI_REGISTER_CALLBACKS         0U /* DSI register callback disabled       */
+#define  USE_HAL_ETH_REGISTER_CALLBACKS         0U /* ETH register callback disabled       */
+#define  USE_HAL_HASH_REGISTER_CALLBACKS        0U /* HASH register callback disabled      */
+#define  USE_HAL_HCD_REGISTER_CALLBACKS         0U /* HCD register callback disabled       */
+#define  USE_HAL_I2C_REGISTER_CALLBACKS         0U /* I2C register callback disabled       */
+#define  USE_HAL_FMPI2C_REGISTER_CALLBACKS      0U /* FMPI2C register callback disabled    */
+#define  USE_HAL_I2S_REGISTER_CALLBACKS         0U /* I2S register callback disabled       */
+#define  USE_HAL_IRDA_REGISTER_CALLBACKS        0U /* IRDA register callback disabled      */
+#define  USE_HAL_LPTIM_REGISTER_CALLBACKS       0U /* LPTIM register callback disabled     */
+#define  USE_HAL_LTDC_REGISTER_CALLBACKS        0U /* LTDC register callback disabled      */
+#define  USE_HAL_MMC_REGISTER_CALLBACKS         0U /* MMC register callback disabled       */
+#define  USE_HAL_NAND_REGISTER_CALLBACKS        0U /* NAND register callback disabled      */
+#define  USE_HAL_NOR_REGISTER_CALLBACKS         0U /* NOR register callback disabled       */
+#define  USE_HAL_PCCARD_REGISTER_CALLBACKS      0U /* PCCARD register callback disabled    */
+#define  USE_HAL_PCD_REGISTER_CALLBACKS         0U /* PCD register callback disabled       */
+#define  USE_HAL_QSPI_REGISTER_CALLBACKS        0U /* QSPI register callback disabled      */
+#define  USE_HAL_RNG_REGISTER_CALLBACKS         0U /* RNG register callback disabled       */
+#define  USE_HAL_RTC_REGISTER_CALLBACKS         0U /* RTC register callback disabled       */
+#define  USE_HAL_SAI_REGISTER_CALLBACKS         0U /* SAI register callback disabled       */
+#define  USE_HAL_SD_REGISTER_CALLBACKS          0U /* SD register callback disabled        */
+#define  USE_HAL_SMARTCARD_REGISTER_CALLBACKS   0U /* SMARTCARD register callback disabled */
+#define  USE_HAL_SDRAM_REGISTER_CALLBACKS       0U /* SDRAM register callback disabled     */
+#define  USE_HAL_SRAM_REGISTER_CALLBACKS        0U /* SRAM register callback disabled      */
+#define  USE_HAL_SPDIFRX_REGISTER_CALLBACKS     0U /* SPDIFRX register callback disabled   */
+#define  USE_HAL_SMBUS_REGISTER_CALLBACKS       0U /* SMBUS register callback disabled     */
+#define  USE_HAL_SPI_REGISTER_CALLBACKS         0U /* SPI register callback disabled       */
+#define  USE_HAL_TIM_REGISTER_CALLBACKS         0U /* TIM register callback disabled       */
+#define  USE_HAL_UART_REGISTER_CALLBACKS        0U /* UART register callback disabled      */
+#define  USE_HAL_USART_REGISTER_CALLBACKS       0U /* USART register callback disabled     */
+#define  USE_HAL_WWDG_REGISTER_CALLBACKS        0U /* WWDG register callback disabled      */
+
+/* ########################## Assert Selection ############################## */
+/**
+  * @brief Uncomment the line below to expanse the "assert_param" macro in the 
+  *        HAL drivers code
+  */
+/* #define USE_FULL_ASSERT    1 */
+
+/* ################## Ethernet peripheral configuration ##################### */
+
+/* Section 1 : Ethernet peripheral configuration */
+
+/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */
+#define MAC_ADDR0   2
+#define MAC_ADDR1   0
+#define MAC_ADDR2   0
+#define MAC_ADDR3   0
+#define MAC_ADDR4   0
+#define MAC_ADDR5   0
+
+/* Definition of the Ethernet driver buffers size and count */   
+#define ETH_RX_BUF_SIZE                ETH_MAX_PACKET_SIZE /* buffer size for receive               */
+#define ETH_TX_BUF_SIZE                ETH_MAX_PACKET_SIZE /* buffer size for transmit              */
+#define ETH_RXBUFNB                    (4U)       /* 4 Rx buffers of size ETH_RX_BUF_SIZE  */
+#define ETH_TXBUFNB                    (4U)       /* 4 Tx buffers of size ETH_TX_BUF_SIZE  */
+
+/* Section 2: PHY configuration section */
+
+/* DP83848 PHY Address*/ 
+#define DP83848_PHY_ADDRESS             0x01
+/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/ 
+#define PHY_RESET_DELAY                 (0x000000FFU)
+/* PHY Configuration delay */
+#define PHY_CONFIG_DELAY                (0x00000FFFU)
+
+#define PHY_READ_TO                     (0x0000FFFFU)
+#define PHY_WRITE_TO                    (0x0000FFFFU)
+
+/* Section 3: Common PHY Registers */
+
+#define PHY_BCR                         ((uint16_t)0x00)    /*!< Transceiver Basic Control Register   */
+#define PHY_BSR                         ((uint16_t)0x01)    /*!< Transceiver Basic Status Register    */
+ 
+#define PHY_RESET                       ((uint16_t)0x8000)  /*!< PHY Reset */
+#define PHY_LOOPBACK                    ((uint16_t)0x4000)  /*!< Select loop-back mode */
+#define PHY_FULLDUPLEX_100M             ((uint16_t)0x2100)  /*!< Set the full-duplex mode at 100 Mb/s */
+#define PHY_HALFDUPLEX_100M             ((uint16_t)0x2000)  /*!< Set the half-duplex mode at 100 Mb/s */
+#define PHY_FULLDUPLEX_10M              ((uint16_t)0x0100)  /*!< Set the full-duplex mode at 10 Mb/s  */
+#define PHY_HALFDUPLEX_10M              ((uint16_t)0x0000)  /*!< Set the half-duplex mode at 10 Mb/s  */
+#define PHY_AUTONEGOTIATION             ((uint16_t)0x1000)  /*!< Enable auto-negotiation function     */
+#define PHY_RESTART_AUTONEGOTIATION     ((uint16_t)0x0200)  /*!< Restart auto-negotiation function    */
+#define PHY_POWERDOWN                   ((uint16_t)0x0800)  /*!< Select the power down mode           */
+#define PHY_ISOLATE                     ((uint16_t)0x0400)  /*!< Isolate PHY from MII                 */
+
+#define PHY_AUTONEGO_COMPLETE           ((uint16_t)0x0020)  /*!< Auto-Negotiation process completed   */
+#define PHY_LINKED_STATUS               ((uint16_t)0x0004)  /*!< Valid link established               */
+#define PHY_JABBER_DETECTION            ((uint16_t)0x0002)  /*!< Jabber condition detected            */
+  
+/* Section 4: Extended PHY Registers */
+
+#define PHY_SR                          ((uint16_t)0x10)    /*!< PHY status register Offset                      */
+#define PHY_MICR                        ((uint16_t)0x11)    /*!< MII Interrupt Control Register                  */
+#define PHY_MISR                        ((uint16_t)0x12)    /*!< MII Interrupt Status and Misc. Control Register */
+ 
+#define PHY_LINK_STATUS                 ((uint16_t)0x0001)  /*!< PHY Link mask                                   */
+#define PHY_SPEED_STATUS                ((uint16_t)0x0002)  /*!< PHY Speed mask                                  */
+#define PHY_DUPLEX_STATUS               ((uint16_t)0x0004)  /*!< PHY Duplex mask                                 */
+
+#define PHY_MICR_INT_EN                 ((uint16_t)0x0002)  /*!< PHY Enable interrupts                           */
+#define PHY_MICR_INT_OE                 ((uint16_t)0x0001)  /*!< PHY Enable output interrupt events              */
+
+#define PHY_MISR_LINK_INT_EN            ((uint16_t)0x0020U)  /*!< Enable Interrupt on change of link status       */
+#define PHY_LINK_INTERRUPT              ((uint16_t)0x2000U)  /*!< PHY link status interrupt mask                  */
+
+/* ################## SPI peripheral configuration ########################## */
+
+/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver
+* Activated: CRC code is present inside driver
+* Deactivated: CRC code cleaned from driver
+*/
+
+#define USE_SPI_CRC                     1U
+
+/* Includes ------------------------------------------------------------------*/
+/**
+  * @brief Include module's header file 
+  */
+
+#ifdef HAL_RCC_MODULE_ENABLED
+  #include "stm32f4xx_hal_rcc.h"
+#endif /* HAL_RCC_MODULE_ENABLED */
+
+#ifdef HAL_GPIO_MODULE_ENABLED
+  #include "stm32f4xx_hal_gpio.h"
+#endif /* HAL_GPIO_MODULE_ENABLED */
+
+#ifdef HAL_DMA_MODULE_ENABLED
+  #include "stm32f4xx_hal_dma.h"
+#endif /* HAL_DMA_MODULE_ENABLED */
+   
+#ifdef HAL_CORTEX_MODULE_ENABLED
+  #include "stm32f4xx_hal_cortex.h"
+#endif /* HAL_CORTEX_MODULE_ENABLED */
+
+#ifdef HAL_ADC_MODULE_ENABLED
+  #include "stm32f4xx_hal_adc.h"
+#endif /* HAL_ADC_MODULE_ENABLED */
+
+#ifdef HAL_CAN_MODULE_ENABLED
+  #include "stm32f4xx_hal_can.h"
+#endif /* HAL_CAN_MODULE_ENABLED */
+
+#ifdef HAL_CAN_LEGACY_MODULE_ENABLED
+  #include "stm32f4xx_hal_can_legacy.h"
+#endif /* HAL_CAN_LEGACY_MODULE_ENABLED */
+
+#ifdef HAL_CRC_MODULE_ENABLED
+  #include "stm32f4xx_hal_crc.h"
+#endif /* HAL_CRC_MODULE_ENABLED */
+
+#ifdef HAL_CRYP_MODULE_ENABLED
+  #include "stm32f4xx_hal_cryp.h" 
+#endif /* HAL_CRYP_MODULE_ENABLED */
+
+#ifdef HAL_DMA2D_MODULE_ENABLED
+  #include "stm32f4xx_hal_dma2d.h"
+#endif /* HAL_DMA2D_MODULE_ENABLED */
+
+#ifdef HAL_DAC_MODULE_ENABLED
+  #include "stm32f4xx_hal_dac.h"
+#endif /* HAL_DAC_MODULE_ENABLED */
+
+#ifdef HAL_DCMI_MODULE_ENABLED
+  #include "stm32f4xx_hal_dcmi.h"
+#endif /* HAL_DCMI_MODULE_ENABLED */
+
+#ifdef HAL_ETH_MODULE_ENABLED
+  #include "stm32f4xx_hal_eth.h"
+#endif /* HAL_ETH_MODULE_ENABLED */
+
+#ifdef HAL_FLASH_MODULE_ENABLED
+  #include "stm32f4xx_hal_flash.h"
+#endif /* HAL_FLASH_MODULE_ENABLED */
+ 
+#ifdef HAL_SRAM_MODULE_ENABLED
+  #include "stm32f4xx_hal_sram.h"
+#endif /* HAL_SRAM_MODULE_ENABLED */
+
+#ifdef HAL_NOR_MODULE_ENABLED
+  #include "stm32f4xx_hal_nor.h"
+#endif /* HAL_NOR_MODULE_ENABLED */
+
+#ifdef HAL_NAND_MODULE_ENABLED
+  #include "stm32f4xx_hal_nand.h"
+#endif /* HAL_NAND_MODULE_ENABLED */
+
+#ifdef HAL_PCCARD_MODULE_ENABLED
+  #include "stm32f4xx_hal_pccard.h"
+#endif /* HAL_PCCARD_MODULE_ENABLED */ 
+  
+#ifdef HAL_SDRAM_MODULE_ENABLED
+  #include "stm32f4xx_hal_sdram.h"
+#endif /* HAL_SDRAM_MODULE_ENABLED */      
+
+#ifdef HAL_HASH_MODULE_ENABLED
+ #include "stm32f4xx_hal_hash.h"
+#endif /* HAL_HASH_MODULE_ENABLED */
+
+#ifdef HAL_I2C_MODULE_ENABLED
+ #include "stm32f4xx_hal_i2c.h"
+#endif /* HAL_I2C_MODULE_ENABLED */
+
+#ifdef HAL_I2S_MODULE_ENABLED
+ #include "stm32f4xx_hal_i2s.h"
+#endif /* HAL_I2S_MODULE_ENABLED */
+
+#ifdef HAL_IWDG_MODULE_ENABLED
+ #include "stm32f4xx_hal_iwdg.h"
+#endif /* HAL_IWDG_MODULE_ENABLED */
+
+#ifdef HAL_LTDC_MODULE_ENABLED
+ #include "stm32f4xx_hal_ltdc.h"
+#endif /* HAL_LTDC_MODULE_ENABLED */
+
+#ifdef HAL_PWR_MODULE_ENABLED
+ #include "stm32f4xx_hal_pwr.h"
+#endif /* HAL_PWR_MODULE_ENABLED */
+
+#ifdef HAL_RNG_MODULE_ENABLED
+ #include "stm32f4xx_hal_rng.h"
+#endif /* HAL_RNG_MODULE_ENABLED */
+
+#ifdef HAL_RTC_MODULE_ENABLED
+ #include "stm32f4xx_hal_rtc.h"
+#endif /* HAL_RTC_MODULE_ENABLED */
+
+#ifdef HAL_SAI_MODULE_ENABLED
+ #include "stm32f4xx_hal_sai.h"
+#endif /* HAL_SAI_MODULE_ENABLED */
+
+#ifdef HAL_SD_MODULE_ENABLED
+ #include "stm32f4xx_hal_sd.h"
+#endif /* HAL_SD_MODULE_ENABLED */
+
+#ifdef HAL_SPI_MODULE_ENABLED
+ #include "stm32f4xx_hal_spi.h"
+#endif /* HAL_SPI_MODULE_ENABLED */
+
+#ifdef HAL_TIM_MODULE_ENABLED
+ #include "stm32f4xx_hal_tim.h"
+#endif /* HAL_TIM_MODULE_ENABLED */
+
+#ifdef HAL_UART_MODULE_ENABLED
+ #include "stm32f4xx_hal_uart.h"
+#endif /* HAL_UART_MODULE_ENABLED */
+
+#ifdef HAL_USART_MODULE_ENABLED
+ #include "stm32f4xx_hal_usart.h"
+#endif /* HAL_USART_MODULE_ENABLED */
+
+#ifdef HAL_IRDA_MODULE_ENABLED
+ #include "stm32f4xx_hal_irda.h"
+#endif /* HAL_IRDA_MODULE_ENABLED */
+
+#ifdef HAL_SMARTCARD_MODULE_ENABLED
+ #include "stm32f4xx_hal_smartcard.h"
+#endif /* HAL_SMARTCARD_MODULE_ENABLED */
+
+#ifdef HAL_WWDG_MODULE_ENABLED
+ #include "stm32f4xx_hal_wwdg.h"
+#endif /* HAL_WWDG_MODULE_ENABLED */
+
+#ifdef HAL_PCD_MODULE_ENABLED
+ #include "stm32f4xx_hal_pcd.h"
+#endif /* HAL_PCD_MODULE_ENABLED */
+
+#ifdef HAL_HCD_MODULE_ENABLED
+ #include "stm32f4xx_hal_hcd.h"
+#endif /* HAL_HCD_MODULE_ENABLED */
+   
+/* Exported macro ------------------------------------------------------------*/
+#ifdef  USE_FULL_ASSERT
+/**
+  * @brief  The assert_param macro is used for function's parameters check.
+  * @param  expr: If expr is false, it calls assert_failed function
+  *         which reports the name of the source file and the source
+  *         line number of the call that failed. 
+  *         If expr is true, it returns no value.
+  * @retval None
+  */
+  #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
+/* Exported functions ------------------------------------------------------- */
+  void assert_failed(uint8_t* file, uint32_t line);
+#else
+  #define assert_param(expr) ((void)0U)
+#endif /* USE_FULL_ASSERT */    
+    
+/**
+  * @}
+  */ 
+
+/**
+  * @}
+  */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F4xx_HAL_CONF_H */
+ 
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 67 - 0
stm32-hal-freertos-uart-tensorflow/Inc/stm32f4xx_it.h

@@ -0,0 +1,67 @@
+/* USER CODE BEGIN Header */
+/**
+  ******************************************************************************
+  * @file    stm32f4xx_it.h
+  * @brief   This file contains the headers of the interrupt handlers.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+ ******************************************************************************
+  */
+/* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __STM32F4xx_IT_H
+#define __STM32F4xx_IT_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif 
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+
+/* USER CODE END Includes */
+
+/* Exported types ------------------------------------------------------------*/
+/* USER CODE BEGIN ET */
+
+/* USER CODE END ET */
+
+/* Exported constants --------------------------------------------------------*/
+/* USER CODE BEGIN EC */
+
+/* USER CODE END EC */
+
+/* Exported macro ------------------------------------------------------------*/
+/* USER CODE BEGIN EM */
+
+/* USER CODE END EM */
+
+/* Exported functions prototypes ---------------------------------------------*/
+void NMI_Handler(void);
+void HardFault_Handler(void);
+void MemManage_Handler(void);
+void BusFault_Handler(void);
+void UsageFault_Handler(void);
+void DebugMon_Handler(void);
+void SysTick_Handler(void);
+/* USER CODE BEGIN EFP */
+
+/* USER CODE END EFP */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STM32F4xx_IT_H */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 674 - 0
stm32-hal-freertos-uart-tensorflow/LICENSE

@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<https://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<https://www.gnu.org/licenses/why-not-lgpl.html>.

+ 2 - 0
stm32-hal-freertos-uart-tensorflow/README.md

@@ -0,0 +1,2 @@
+# STM3240G-EVAL TensorFlow Lite Micro Hello World
+[Hello world](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/micro/examples/hello_world) TensorFlow Lite Micro example implemented to run on the STM3240G Evaluation board using FreeRTOS and the STM32 HAL libraries to drive the touch display and the UART.

+ 19 - 0
stm32-hal-freertos-uart-tensorflow/Src/constants.cc

@@ -0,0 +1,19 @@
+/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+#include "constants.h"
+
+// This is a small number so that it's easy to read the logs
+const int kInferencesPerCycle = 20;

+ 107 - 0
stm32-hal-freertos-uart-tensorflow/Src/freertos.c

@@ -0,0 +1,107 @@
+/* USER CODE BEGIN Header */
+/**
+  ******************************************************************************
+  * File Name          : freertos.c
+  * Description        : Code for freertos applications
+  ******************************************************************************
+  * This notice applies to any and all portions of this file
+  * that are not between comment pairs USER CODE BEGIN and
+  * USER CODE END. Other portions of this file, whether 
+  * inserted by the user or by software development tools
+  * are owned by their respective copyright owners.
+  *
+  * Copyright (c) 2020 STMicroelectronics International N.V. 
+  * All rights reserved.
+  *
+  * Redistribution and use in source and binary forms, with or without 
+  * modification, are permitted, provided that the following conditions are met:
+  *
+  * 1. Redistribution of source code must retain the above copyright notice, 
+  *    this list of conditions and the following disclaimer.
+  * 2. Redistributions in binary form must reproduce the above copyright notice,
+  *    this list of conditions and the following disclaimer in the documentation
+  *    and/or other materials provided with the distribution.
+  * 3. Neither the name of STMicroelectronics nor the names of other 
+  *    contributors to this software may be used to endorse or promote products 
+  *    derived from this software without specific written permission.
+  * 4. This software, including modifications and/or derivative works of this 
+  *    software, must execute solely and exclusively on microcontroller or
+  *    microprocessor devices manufactured by or for STMicroelectronics.
+  * 5. Redistribution and use of this software other than as permitted under 
+  *    this license is void and will automatically terminate your rights under 
+  *    this license. 
+  *
+  * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" 
+  * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT 
+  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
+  * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
+  * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT 
+  * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
+  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
+  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "FreeRTOS.h"
+#include "task.h"
+#include "main.h"
+
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */     
+
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN PTD */
+
+/* USER CODE END PTD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN Variables */
+
+/* USER CODE END Variables */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN FunctionPrototypes */
+   
+/* USER CODE END FunctionPrototypes */
+
+/* GetIdleTaskMemory prototype (linked to static allocation support) */
+void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize );
+
+/* USER CODE BEGIN GET_IDLE_TASK_MEMORY */
+static StaticTask_t xIdleTaskTCBBuffer;
+static StackType_t xIdleStack[configMINIMAL_STACK_SIZE];
+  
+void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize )
+{
+  *ppxIdleTaskTCBBuffer = &xIdleTaskTCBBuffer;
+  *ppxIdleTaskStackBuffer = &xIdleStack[0];
+  *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;
+  /* place for user code */
+}                   
+/* USER CODE END GET_IDLE_TASK_MEMORY */
+
+/* Private application code --------------------------------------------------*/
+/* USER CODE BEGIN Application */
+     
+/* USER CODE END Application */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 296 - 0
stm32-hal-freertos-uart-tensorflow/Src/main.c

@@ -0,0 +1,296 @@
+#include <string.h>
+#include "main.h"
+#include "cmsis_os.h"
+#include "data_types.h"
+#include "main_functions.h"
+#include "constants.h"
+#include "color.h"
+
+void SystemClock_Config(void);
+static void MX_GPIO_Init(void);
+void inferenceTask(void const *argument);
+void blinkTask(void const *argument);
+void UARTTask(void const *argument);
+
+osThreadId defaultTaskHandle;
+osThreadId UARTTaskHandle;
+osThreadId blinkTaskHandle;
+
+UART_HandleTypeDef UartHandle;
+
+void UARTTask(void const *argument)
+{
+	char *hello_string = "Hello World\n";
+	volatile HAL_StatusTypeDef err;
+
+	while (1) {
+		HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_SET);
+		HAL_Delay(500);
+		err = HAL_UART_Transmit(&UartHandle, (uint8_t *)hello_string,
+					sizeof(hello_string) + 1,
+					HAL_MAX_DELAY);
+		if (err == HAL_OK)
+			HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin,
+					  GPIO_PIN_RESET);
+		HAL_Delay(500);
+	}
+}
+
+void inferenceTask(void const *argument)
+{
+	circle_t *tmp_circle;
+	int count = 0;
+	uint16_t screen_height = BSP_LCD_GetYSize();
+	uint16_t screen_width = BSP_LCD_GetXSize();
+	uint16_t x_pos, y_pos;
+	setup();
+
+	for (;;) {
+		tmp_circle = loop();
+		if (tmp_circle) {
+			x_pos = (uint16_t)(tmp_circle->x * screen_width /
+					   (2 * PI));
+			y_pos = (uint16_t)((screen_height / 2) +
+					   tmp_circle->y * screen_height / 2);
+			BSP_LCD_FillCircle(x_pos, y_pos, tmp_circle->size);
+		}
+		count++;
+		if (count == 40)
+			vTaskSuspend(NULL);
+		else
+			HAL_Delay(100);
+	}
+}
+
+void blinkTask(void const *argument)
+{
+	int count = 0;
+
+	HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);
+	HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET);
+	HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET);
+	HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_RESET);
+
+	for (;;) {
+		count %= 10;
+
+		switch (count++) {
+		case 0:
+			HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin,
+					  GPIO_PIN_SET);
+			break;
+		case 1:
+			HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin,
+					  GPIO_PIN_SET);
+			break;
+		case 2:
+			HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin,
+					  GPIO_PIN_SET);
+			break;
+		case 3:
+			break;
+		case 5:
+			HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin,
+					  GPIO_PIN_RESET);
+			break;
+		case 6:
+			HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin,
+					  GPIO_PIN_RESET);
+			break;
+		case 7:
+			HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin,
+					  GPIO_PIN_RESET);
+			break;
+		case 8:
+			break;
+		default:
+			break;
+		}
+
+		HAL_Delay(100);
+	}
+}
+
+int main(void)
+{
+	HAL_Init();
+
+	BSP_LCD_Init();
+	BSP_LCD_DisplayOn();
+	BSP_LCD_Clear(LCD_COLOR_WHITE);
+
+	BSP_LCD_Clear(LCD_COLOR_WHITE);
+
+	SystemClock_Config();
+
+	UartHandle.Instance = USARTx;
+	UartHandle.Init.BaudRate = 9600;
+	UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
+	UartHandle.Init.StopBits = UART_STOPBITS_1;
+	UartHandle.Init.Parity = UART_PARITY_ODD;
+	UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
+	UartHandle.Init.Mode = UART_MODE_TX_RX;
+	UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;
+
+	if (HAL_UART_Init(&UartHandle) != HAL_OK) {
+		Error_Handler();
+	}
+
+	MX_GPIO_Init();
+
+	osThreadDef(defaultTask, inferenceTask, osPriorityNormal, 0, 256);
+	defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);
+
+	osThreadDef(UARTTaskHandle, UARTTask, osPriorityNormal, 0, 256);
+	UARTTaskHandle = osThreadCreate(osThread(UARTTaskHandle), NULL);
+
+	osThreadDef(blinkTaskHandle, blinkTask, osPriorityNormal, 0, 256);
+	blinkTaskHandle = osThreadCreate(osThread(blinkTaskHandle), NULL);
+
+	/* Start scheduler */
+	osKernelStart();
+
+	while (1) {
+	}
+}
+
+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_HSI;
+	RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+	RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+	RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+	RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
+	RCC_OscInitStruct.PLL.PLLM = 8;
+	RCC_OscInitStruct.PLL.PLLN = 168;
+	RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
+	RCC_OscInitStruct.PLL.PLLQ = 7;
+	if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
+		Error_Handler();
+	}
+	/** 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_5) !=
+	    HAL_OK) {
+		Error_Handler();
+	}
+}
+
+static void MX_GPIO_Init(void)
+{
+	GPIO_InitTypeDef GPIO_InitStruct = { 0 };
+
+	/* GPIO Ports Clock Enable */
+	__HAL_RCC_GPIOE_CLK_ENABLE();
+	__HAL_RCC_GPIOB_CLK_ENABLE();
+	__HAL_RCC_GPIOG_CLK_ENABLE();
+	__HAL_RCC_GPIOD_CLK_ENABLE();
+	__HAL_RCC_GPIOC_CLK_ENABLE();
+	__HAL_RCC_GPIOA_CLK_ENABLE();
+	__HAL_RCC_GPIOI_CLK_ENABLE();
+	__HAL_RCC_GPIOH_CLK_ENABLE();
+	__HAL_RCC_GPIOF_CLK_ENABLE();
+
+	/*Configure GPIO pin Output Level */
+	HAL_GPIO_WritePin(GPIOG, LED2_Pin | LED1_Pin, GPIO_PIN_RESET);
+
+	/*Configure GPIO pin Output Level */
+	HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET);
+
+	/*Configure GPIO pin Output Level */
+	HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_RESET);
+
+	/*Configure GPIO pins : FSMC_NE1_Pin FSMC_NWAIT_Pin D2_Pin FSMC_NWE_Pin 
+                           D3_Pin FSMC_NOE_Pin FSMC_CLK_Pin D1_Pin 
+                           D0_Pin A18_Pin A17_Pin A16_Pin 
+                           D15_Pin D14_Pin D13_Pin */
+	GPIO_InitStruct.Pin = FSMC_NE1_Pin | FSMC_NWAIT_Pin | D2_Pin |
+			      FSMC_NWE_Pin | D3_Pin | FSMC_NOE_Pin |
+			      FSMC_CLK_Pin | D1_Pin | D0_Pin | A18_Pin |
+			      A17_Pin | A16_Pin | D15_Pin | D14_Pin | D13_Pin;
+	GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+	GPIO_InitStruct.Pull = GPIO_NOPULL;
+	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+	GPIO_InitStruct.Alternate = GPIO_AF12_FSMC;
+	HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
+
+	/*Configure GPIO pin : FSMC_NL_Pin */
+	GPIO_InitStruct.Pin = FSMC_NL_Pin;
+	GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+	GPIO_InitStruct.Pull = GPIO_NOPULL;
+	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+	GPIO_InitStruct.Alternate = GPIO_AF12_FSMC;
+	HAL_GPIO_Init(FSMC_NL_GPIO_Port, &GPIO_InitStruct);
+
+	/*Configure GPIO pin : User_Button_Pin */
+	GPIO_InitStruct.Pin = User_Button_Pin;
+	GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING;
+	GPIO_InitStruct.Pull = GPIO_NOPULL;
+	HAL_GPIO_Init(User_Button_GPIO_Port, &GPIO_InitStruct);
+
+	/*Configure GPIO pins : LED2_Pin LED1_Pin */
+	GPIO_InitStruct.Pin = LED2_Pin | LED1_Pin;
+	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);
+
+	/*Configure GPIO pins : FSMC_NE3_Pin FSMC_NE2_Pin A15_Pin A14_Pin 
+                           A13_Pin A12_Pin A11_Pin A10_Pin */
+	GPIO_InitStruct.Pin = FSMC_NE3_Pin | FSMC_NE2_Pin | A15_Pin | A14_Pin |
+			      A13_Pin | A12_Pin | A11_Pin | A10_Pin;
+	GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+	GPIO_InitStruct.Pull = GPIO_NOPULL;
+	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+	GPIO_InitStruct.Alternate = GPIO_AF12_FSMC;
+	HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
+
+	/*Configure GPIO pin : LED3_Pin */
+	GPIO_InitStruct.Pin = LED3_Pin;
+	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+	GPIO_InitStruct.Pull = GPIO_NOPULL;
+	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+	HAL_GPIO_Init(LED3_GPIO_Port, &GPIO_InitStruct);
+
+	/*Configure GPIO pin : LED4_Pin */
+	GPIO_InitStruct.Pin = LED4_Pin;
+	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
+	GPIO_InitStruct.Pull = GPIO_NOPULL;
+	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+	HAL_GPIO_Init(LED4_GPIO_Port, &GPIO_InitStruct);
+
+	/*Configure GPIO pin : SW1_Pin */
+	GPIO_InitStruct.Pin = SW1_Pin;
+	GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+	GPIO_InitStruct.Pull = GPIO_NOPULL;
+	HAL_GPIO_Init(SW1_GPIO_Port, &GPIO_InitStruct);
+}
+
+void Error_Handler(void)
+{
+	while (1) {
+	}
+}
+
+#ifdef USE_FULL_ASSERT
+void assert_failed(uint8_t *file, uint32_t line)
+{
+}
+#endif /* USE_FULL_ASSERT */

+ 131 - 0
stm32-hal-freertos-uart-tensorflow/Src/main_functions.cc

@@ -0,0 +1,131 @@
+/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+#include "tensorflow/lite/micro/all_ops_resolver.h"
+#include "tensorflow/lite/micro/micro_error_reporter.h"
+#include "tensorflow/lite/micro/micro_interpreter.h"
+#include "tensorflow/lite/schema/schema_generated.h"
+#include "tensorflow/lite/version.h"
+
+#include "sine_model_quantized.h"
+
+#include "main_functions.h"
+#include "data_types.h"
+#include "constants.h"
+
+// extern const unsigned char sine_model_quantized_tflite[];
+// extern const unsigned int sine_model_quantized_tflite_len;
+// Globals, used for compatibility with Arduino-style sketches.
+namespace
+{
+tflite::ErrorReporter *error_reporter = nullptr;
+const tflite::Model *model = nullptr;
+tflite::MicroInterpreter *interpreter = nullptr;
+TfLiteTensor *input = nullptr;
+TfLiteTensor *output = nullptr;
+int inference_count = 0;
+
+// Create an area of memory to use for input, output, and intermediate arrays.
+// Finding the minimum value for your model may require some trial and error.
+const int kModelArenaSize = 2468;
+const int kExtraArenaSize = 560 + 16 + 100;
+const int kTensorArenaSize = kModelArenaSize + kExtraArenaSize;
+uint8_t tensor_arena[kTensorArenaSize];
+} // namespace
+
+// The name of this function is important for Arduino compatibility.
+void setup()
+{
+	// Set up logging. Google style is to avoid globals or statics because of
+	// lifetime uncertainty, but since this has a trivial destructor it's okay.
+	// NOLINTNEXTLINE(runtime-global-variables)
+	static tflite::MicroErrorReporter micro_error_reporter;
+	error_reporter = &micro_error_reporter;
+
+	error_reporter->Report("Hello from the error reporter");
+
+	// Map the model into a usable data structure. This doesn't involve any
+	// copying or parsing, it's a very lightweight operation.
+	model = tflite::GetModel(sine_model_quantized_tflite);
+	if (model->version() != TFLITE_SCHEMA_VERSION) {
+		error_reporter->Report(
+			"Model provided is schema version %d not equal "
+			"to supported version %d.",
+			model->version(), TFLITE_SCHEMA_VERSION);
+		return;
+	}
+
+	// This pulls in all the operation implementations we need.
+	// NOLINTNEXTLINE(runtime-global-variables)
+	static tflite::AllOpsResolver resolver;
+
+	// Build an interpreter to run the model with.
+	static tflite::MicroInterpreter static_interpreter(
+		model, resolver, tensor_arena, kTensorArenaSize, error_reporter,
+		nullptr);
+	interpreter = &static_interpreter;
+
+	// Allocate memory from the tensor_arena for the model's tensors.
+	TfLiteStatus allocate_status = interpreter->AllocateTensors();
+	if (allocate_status != kTfLiteOk) {
+		error_reporter->Report("AllocateTensors() failed");
+		return;
+	}
+
+	// Obtain pointers to the model's input and output tensors.
+	input = interpreter->input(0);
+	output = interpreter->output(0);
+
+	// Keep track of how many inferences we have performed.
+	inference_count = 0;
+}
+
+// The name of this function is important for Arduino compatibility.
+circle_t *loop()
+{
+	static circle_t ret;
+	ret.size = 4;
+	// Calculate an x value to feed into the model. We compare the current
+	// inference_count to the number of inferences per cycle to determine
+	// our position within the range of possible x values the model was
+	// trained on, and use this to calculate a value.
+	float position = static_cast<float>(inference_count) /
+			 static_cast<float>(kInferencesPerCycle);
+	float x_val = position * kXrange;
+
+	// Place our calculated x value in the model's input tensor
+	input->data.f[0] = x_val;
+
+	// Run inference, and report any error
+	TfLiteStatus invoke_status = interpreter->Invoke();
+	if (invoke_status != kTfLiteOk) {
+		error_reporter->Report("Invoke failed on x_val: %f\n",
+				       static_cast<double>(x_val));
+		return NULL;
+	}
+
+	// Read the predicted y value from the model's output tensor
+	float y_val = output->data.f[0];
+
+	ret.x = x_val;
+	ret.y = y_val;
+
+	// Increment the inference_counter, and reset it if we have reached
+	// the total number per cycle
+	inference_count++;
+	if (inference_count >= kInferencesPerCycle)
+		inference_count = 0;
+
+	return &ret;
+}

+ 218 - 0
stm32-hal-freertos-uart-tensorflow/Src/sine_model_quantized.cc

@@ -0,0 +1,218 @@
+#include "sine_model_quantized.h"
+
+alignas(8) const unsigned char sine_model_quantized_tflite[] = {
+  0x08, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x32, 0xfa, 0xff, 0xff,
+  0x03, 0x00, 0x00, 0x00, 0xc8, 0x09, 0x00, 0x00, 0xb8, 0x05, 0x00, 0x00,
+  0xa0, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00,
+  0x90, 0x05, 0x00, 0x00, 0x88, 0x05, 0x00, 0x00, 0x38, 0x05, 0x00, 0x00,
+  0xe0, 0x04, 0x00, 0x00, 0xcc, 0x04, 0x00, 0x00, 0x7c, 0x04, 0x00, 0x00,
+  0x6c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+  0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xa0, 0xf6, 0xff, 0xff,
+  0xa4, 0xf6, 0xff, 0xff, 0xa8, 0xf6, 0xff, 0xff, 0xfe, 0xfa, 0xff, 0xff,
+  0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x8f, 0x8a, 0x19, 0x3f,
+  0x86, 0x18, 0xbb, 0xbe, 0x50, 0xfd, 0xe1, 0xbe, 0xa8, 0x18, 0x72, 0xbe,
+  0x9e, 0x7f, 0xec, 0xbe, 0x60, 0x68, 0x96, 0x3d, 0xb7, 0x5c, 0x8b, 0xbe,
+  0xca, 0x9f, 0x8e, 0xbf, 0xdd, 0x4e, 0x72, 0xbd, 0x31, 0xbf, 0xe1, 0x3e,
+  0x1c, 0x4e, 0x35, 0x3f, 0x17, 0x32, 0x3e, 0x3f, 0xb7, 0xbf, 0x73, 0x3e,
+  0xb6, 0x55, 0x9a, 0xbe, 0x49, 0xf5, 0xb0, 0x3e, 0x1d, 0x38, 0xc4, 0x3f,
+  0x4a, 0xfb, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
+  0xb4, 0x5c, 0xab, 0xbe, 0xd0, 0x41, 0xc9, 0xbc, 0x78, 0x72, 0xb1, 0x3e,
+  0xf0, 0xcb, 0x08, 0xbe, 0x31, 0x5c, 0x9b, 0xbe, 0x8d, 0x1d, 0x87, 0x3e,
+  0x2f, 0x58, 0xad, 0xbe, 0x7a, 0x21, 0x8f, 0xbe, 0x5b, 0x44, 0x81, 0x3e,
+  0xfa, 0x11, 0x5c, 0xbf, 0xdc, 0x67, 0xa1, 0x3d, 0xb6, 0xf8, 0x0a, 0xbf,
+  0xde, 0x52, 0x87, 0xbe, 0x5f, 0x63, 0x95, 0x3e, 0xd6, 0x71, 0xae, 0x3c,
+  0x0b, 0x91, 0xb0, 0x3e, 0xfc, 0x1a, 0xd4, 0x3d, 0xc6, 0x30, 0x5d, 0x3e,
+  0xd9, 0x9f, 0x42, 0x3e, 0x3a, 0x82, 0x3f, 0xbe, 0x96, 0x49, 0x81, 0xbd,
+  0xbb, 0xb1, 0xa2, 0x3e, 0xf0, 0xeb, 0xaf, 0x3c, 0x34, 0x2c, 0xf2, 0xbe,
+  0x08, 0xb5, 0x60, 0xbe, 0x15, 0x73, 0x9b, 0x3e, 0x77, 0xfd, 0xb3, 0x3e,
+  0x9a, 0x6a, 0x83, 0xbd, 0xe6, 0x74, 0x79, 0x3e, 0x8e, 0x08, 0x82, 0xbe,
+  0xdc, 0x31, 0x8e, 0x3e, 0xda, 0x7b, 0x5d, 0x3e, 0xf4, 0x77, 0x32, 0xbe,
+  0x2f, 0xaa, 0xc4, 0xbe, 0x2e, 0x35, 0x26, 0x3e, 0x1e, 0x85, 0x39, 0x3b,
+  0xb1, 0xcb, 0x48, 0xbe, 0x98, 0xc1, 0x3c, 0xbc, 0x6c, 0xa1, 0xc3, 0xbe,
+  0x00, 0x6d, 0xe4, 0xba, 0xec, 0x34, 0x8a, 0xbd, 0x93, 0x3e, 0x18, 0x3e,
+  0xef, 0x37, 0x56, 0x3e, 0xf4, 0x97, 0x6a, 0x3e, 0xfb, 0xe9, 0xc6, 0x3e,
+  0xed, 0xc5, 0x94, 0x3e, 0x13, 0x85, 0x99, 0x3e, 0x02, 0xe0, 0x8d, 0xbe,
+  0x1a, 0x2f, 0x04, 0x3e, 0x36, 0x80, 0x39, 0x3e, 0xd6, 0x09, 0x15, 0x3e,
+  0x08, 0xa9, 0xc4, 0xbe, 0x48, 0xd3, 0x54, 0xbd, 0x87, 0xb0, 0xa4, 0x3e,
+  0x73, 0xef, 0x9d, 0x3e, 0x33, 0x97, 0xd4, 0xbe, 0xa2, 0x5d, 0x72, 0x3e,
+  0x8a, 0x8a, 0x84, 0xbe, 0xd0, 0x7f, 0x95, 0xbe, 0xfc, 0x8d, 0xa8, 0xbd,
+  0xb4, 0xe8, 0xee, 0x3d, 0x40, 0xa7, 0x24, 0x3c, 0x20, 0xe9, 0xd7, 0xbe,
+  0xc8, 0xb5, 0xf7, 0xbd, 0xa0, 0x6f, 0xd6, 0xbd, 0xea, 0xba, 0x7c, 0x3e,
+  0xeb, 0x3a, 0x2d, 0xbe, 0x03, 0x3f, 0xdb, 0xbd, 0xe4, 0xd3, 0xa6, 0xbe,
+  0xd0, 0xe3, 0x9d, 0x3e, 0x3e, 0x04, 0x1d, 0x3e, 0x00, 0x52, 0x8f, 0x3e,
+  0x5a, 0x4c, 0x32, 0xbe, 0x71, 0xf6, 0xa8, 0xbe, 0xc8, 0x92, 0x10, 0x3e,
+  0x46, 0x02, 0x27, 0x3e, 0xa7, 0xeb, 0xa1, 0x3e, 0x70, 0x67, 0xeb, 0x3c,
+  0x18, 0x3d, 0xd0, 0x3e, 0x98, 0x76, 0xbb, 0xbe, 0x8a, 0xe2, 0xd0, 0xbe,
+  0x63, 0x5e, 0xd3, 0x3e, 0x05, 0x2d, 0x79, 0xbe, 0x39, 0x4e, 0xd1, 0xbe,
+  0xe0, 0x31, 0x7f, 0x3c, 0x90, 0xfe, 0x2b, 0x3d, 0x8d, 0x81, 0xdc, 0xbe,
+  0x45, 0xc4, 0x53, 0xbe, 0xfe, 0x16, 0x87, 0xbe, 0x17, 0xc5, 0xca, 0x3e,
+  0x1d, 0x10, 0xb7, 0x3e, 0xc2, 0x13, 0xca, 0xbe, 0xaf, 0xa1, 0xd0, 0x3e,
+  0x9c, 0xaf, 0xdd, 0x3d, 0x70, 0x68, 0x99, 0xbe, 0x28, 0xd0, 0x71, 0xbd,
+  0x80, 0xd0, 0x9c, 0xbe, 0x29, 0x9e, 0x9c, 0x3e, 0xed, 0x87, 0xc3, 0x3e,
+  0x62, 0xbf, 0x15, 0xbf, 0x8f, 0x69, 0x8a, 0xbe, 0x31, 0x2d, 0x80, 0x3d,
+  0x06, 0xc6, 0x53, 0x3e, 0x28, 0x55, 0x07, 0xbe, 0x7e, 0x77, 0x52, 0x3e,
+  0x27, 0xdb, 0x55, 0x3e, 0x3e, 0x7e, 0xce, 0x3e, 0x8a, 0xb4, 0xdf, 0xbe,
+  0xfb, 0x8d, 0xbe, 0x3e, 0xb5, 0xb2, 0xd1, 0xbe, 0x01, 0x15, 0xd8, 0x3e,
+  0xc0, 0xd2, 0x6b, 0xbd, 0x40, 0xd3, 0x56, 0xbc, 0xae, 0xfb, 0x21, 0xbe,
+  0xf2, 0x67, 0x9c, 0xbf, 0xa0, 0xf9, 0x8d, 0xbd, 0xec, 0x8a, 0xb7, 0xbe,
+  0x42, 0xec, 0x38, 0x3e, 0x28, 0xb4, 0x68, 0xbe, 0x36, 0xd3, 0x11, 0x3f,
+  0x73, 0xe4, 0xce, 0x3e, 0x71, 0x9b, 0x68, 0x3f, 0xe2, 0x61, 0x06, 0xbf,
+  0xa4, 0x15, 0xef, 0xbc, 0x1c, 0x8f, 0xd3, 0xbd, 0xbe, 0x80, 0x5d, 0x3e,
+  0xb7, 0x51, 0x82, 0x3f, 0x62, 0x1e, 0x07, 0xbe, 0xf0, 0x47, 0xbf, 0xbd,
+  0x10, 0xbe, 0x54, 0xbe, 0x4f, 0x55, 0xac, 0x3e, 0x27, 0x4d, 0xdc, 0x3d,
+  0x6c, 0xcb, 0xb7, 0xbe, 0x0f, 0xc9, 0xa9, 0xbd, 0x84, 0xd1, 0x99, 0x3d,
+  0xe9, 0x31, 0x8a, 0x3e, 0x5e, 0x05, 0x59, 0x3e, 0x3c, 0xff, 0xd0, 0xbd,
+  0xc8, 0x3e, 0x0c, 0xbe, 0xd2, 0x91, 0x09, 0xbe, 0x1a, 0x21, 0x36, 0xbe,
+  0x88, 0x1c, 0x4d, 0x3d, 0x08, 0xb5, 0x24, 0xbc, 0x9f, 0x09, 0xb8, 0x3e,
+  0xda, 0x61, 0x1e, 0x3e, 0x59, 0x76, 0xb2, 0x3e, 0xbc, 0x7f, 0xa3, 0x3d,
+  0x78, 0xf1, 0x05, 0x3f, 0x66, 0xce, 0x56, 0xbe, 0x2d, 0x59, 0x2a, 0x3e,
+  0xe0, 0xd8, 0xa4, 0xbe, 0xe6, 0xe5, 0x88, 0x3e, 0x31, 0x06, 0xb4, 0x3e,
+  0x6b, 0xeb, 0xac, 0x3e, 0xa5, 0x1e, 0xcc, 0xbc, 0x1b, 0xb6, 0x88, 0xbd,
+  0x92, 0x3f, 0x6e, 0x3e, 0x00, 0xe2, 0xd1, 0x3b, 0x69, 0xc4, 0xce, 0xbe,
+  0x66, 0xb5, 0x2a, 0xbe, 0x19, 0xcc, 0xba, 0x3e, 0xae, 0x6d, 0x0a, 0x3e,
+  0x18, 0x7c, 0xd4, 0x3e, 0xa3, 0xa2, 0x20, 0x3f, 0xdf, 0x98, 0x41, 0xbd,
+  0xcb, 0xab, 0x0f, 0xbf, 0x05, 0x4d, 0xd4, 0x3e, 0xff, 0xb1, 0xf2, 0x3d,
+  0xe2, 0x39, 0x00, 0xbe, 0x82, 0xfb, 0x80, 0x3e, 0x1c, 0xff, 0x04, 0x3d,
+  0x42, 0xc5, 0xcd, 0x3e, 0xb1, 0x0d, 0xca, 0x3e, 0x5e, 0xb0, 0x13, 0xbe,
+  0xf1, 0x03, 0x45, 0xbf, 0xbd, 0x1d, 0xdc, 0x3e, 0x80, 0x25, 0x5d, 0xbd,
+  0x14, 0xeb, 0xbf, 0xbd, 0xf4, 0x20, 0x87, 0xbd, 0xcb, 0x73, 0x3a, 0x3f,
+  0x75, 0x73, 0x93, 0x3d, 0x29, 0x23, 0x94, 0x3e, 0xc0, 0x5c, 0x3e, 0x3d,
+  0x3f, 0x8d, 0xe0, 0x3d, 0xcb, 0xfa, 0xc2, 0x3e, 0x87, 0x1b, 0xc7, 0x3e,
+  0xb0, 0x11, 0x23, 0xbe, 0x67, 0x44, 0x0a, 0xbd, 0x2d, 0x41, 0xc1, 0xbe,
+  0xdf, 0x32, 0xd5, 0x3e, 0xec, 0xbc, 0x12, 0xbf, 0x3e, 0x4d, 0x12, 0xbe,
+  0x7d, 0x10, 0xd0, 0x3e, 0x2e, 0xf8, 0x3c, 0x3e, 0x4d, 0xfe, 0x8b, 0xbe,
+  0x1c, 0x2a, 0x16, 0xbe, 0x95, 0x4f, 0x68, 0x3d, 0xb5, 0xea, 0xae, 0x3e,
+  0xd4, 0x8b, 0x80, 0x3d, 0x38, 0x47, 0xc6, 0xbe, 0xf5, 0xb3, 0xb8, 0xbe,
+  0x70, 0x72, 0x9e, 0xbe, 0xa7, 0xdc, 0xb1, 0xbe, 0x8a, 0x5b, 0x1e, 0xbe,
+  0x5e, 0x84, 0x40, 0x3e, 0x1f, 0x7c, 0xd1, 0xbe, 0xbf, 0x85, 0x88, 0xbe,
+  0x3c, 0x23, 0x19, 0xbe, 0x6c, 0x78, 0x9f, 0x3d, 0xda, 0x15, 0x6c, 0x3e,
+  0xff, 0x75, 0x64, 0xbe, 0x2b, 0xf6, 0xc0, 0x3e, 0x48, 0x12, 0x2d, 0xbd,
+  0xa0, 0xf5, 0x4a, 0xbd, 0x83, 0xa3, 0xcc, 0x3e, 0x3a, 0x01, 0xd6, 0xbe,
+  0x84, 0x88, 0x7a, 0xbe, 0x82, 0xa4, 0x65, 0xbe, 0x6c, 0x80, 0x9f, 0xbe,
+  0x54, 0x5e, 0xa6, 0xbe, 0x03, 0xd0, 0xc0, 0x3e, 0xa0, 0xfa, 0x21, 0xbc,
+  0x04, 0xd2, 0x50, 0xbe, 0x35, 0xeb, 0xcf, 0x3e, 0x25, 0x27, 0xbc, 0x3e,
+  0xd8, 0x36, 0x42, 0xbd, 0xf2, 0x22, 0xc3, 0x3e, 0x3c, 0x99, 0xd0, 0xbb,
+  0xfe, 0xfc, 0x2b, 0x3e, 0x4c, 0x33, 0x15, 0xbd, 0x27, 0xa6, 0xb2, 0xbe,
+  0x49, 0x11, 0xfd, 0x3e, 0x7a, 0xe4, 0x9a, 0xbe, 0x39, 0x86, 0x50, 0x3d,
+  0x71, 0xeb, 0x29, 0x3d, 0x4c, 0x51, 0xbb, 0xbe, 0xba, 0x71, 0x1f, 0x3e,
+  0x81, 0x85, 0xc8, 0x3e, 0x89, 0x3d, 0x5c, 0xbf, 0x7d, 0x3b, 0xbb, 0xbe,
+  0xd0, 0x0a, 0xbf, 0x3c, 0xe0, 0x46, 0xf1, 0xbd, 0xd2, 0xb4, 0x37, 0xbe,
+  0x02, 0x02, 0xa3, 0xbf, 0x76, 0xda, 0x02, 0xbe, 0x38, 0x9a, 0x04, 0x3f,
+  0xd8, 0x90, 0x33, 0xbd, 0x31, 0xa7, 0x72, 0xbe, 0xcc, 0x85, 0x47, 0xbe,
+  0xdb, 0xe2, 0xc0, 0xbe, 0xb4, 0xf1, 0x4c, 0x3e, 0xd7, 0x6f, 0xb4, 0xbe,
+  0x26, 0x03, 0x4d, 0x3e, 0x00, 0xf0, 0xa7, 0x3b, 0x2f, 0x1d, 0x75, 0x3f,
+  0x50, 0x31, 0x48, 0xbd, 0x56, 0xff, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00,
+  0x40, 0x00, 0x00, 0x00, 0x98, 0x7a, 0xa6, 0xbe, 0x56, 0x9e, 0x73, 0xbe,
+  0x31, 0x08, 0xea, 0x3e, 0xca, 0xd2, 0x4b, 0x3e, 0x1d, 0x10, 0xea, 0x3e,
+  0xe5, 0x34, 0x8f, 0x3e, 0x00, 0x1a, 0x96, 0xbe, 0x23, 0xbf, 0xda, 0x3e,
+  0xa8, 0x32, 0x94, 0xbd, 0x00, 0xbd, 0x78, 0x3e, 0xf1, 0x6b, 0xad, 0x3e,
+  0x37, 0xf4, 0xd4, 0x3e, 0xd4, 0x5f, 0x7e, 0xbe, 0xf6, 0x8d, 0x0e, 0xbf,
+  0x3f, 0xe0, 0x8a, 0xbd, 0xae, 0x3f, 0x03, 0xbf, 0xa2, 0xff, 0xff, 0xff,
+  0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xc1, 0x09, 0xa3, 0xbe,
+  0xb2, 0xff, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+  0xf1, 0x6d, 0x1f, 0xbd, 0x1d, 0x64, 0x7a, 0x3e, 0x90, 0x97, 0x67, 0x3e,
+  0x00, 0x00, 0x00, 0x00, 0xc4, 0xee, 0x86, 0x3e, 0x00, 0x00, 0x00, 0x00,
+  0x06, 0x20, 0x9b, 0x3e, 0xf1, 0x7d, 0x24, 0x3f, 0x25, 0x28, 0xaa, 0xbc,
+  0x30, 0xa9, 0xda, 0xbe, 0x74, 0x0c, 0xfd, 0xbe, 0xbc, 0xe1, 0xe2, 0xbe,
+  0x8c, 0x66, 0x14, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x62, 0x67, 0xde, 0xbe,
+  0xcc, 0xf1, 0x4e, 0x3f, 0x00, 0x00, 0x06, 0x00, 0x08, 0x00, 0x04, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0c, 0x5a, 0xbb,
+  0x5b, 0x01, 0x03, 0xbf, 0x4f, 0x1d, 0x35, 0xbe, 0xa2, 0xa5, 0x07, 0x3f,
+  0x00, 0x00, 0x00, 0x00, 0xa6, 0x68, 0xf5, 0xbe, 0x00, 0x00, 0x00, 0x00,
+  0x5b, 0x75, 0xce, 0xbe, 0x91, 0xe0, 0xb9, 0x3e, 0x8e, 0x1a, 0x71, 0xbe,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x84, 0x6b, 0x3f,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x04, 0xfc, 0xff, 0xff,
+  0x0f, 0x00, 0x00, 0x00, 0x4d, 0x4c, 0x49, 0x52, 0x20, 0x43, 0x6f, 0x6e,
+  0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x2e, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x04, 0x00,
+  0x08, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x00, 0x00,
+  0x00, 0x01, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00,
+  0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+  0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+  0x90, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+  0xce, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x08, 0x18, 0x00, 0x00, 0x00,
+  0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0xff, 0xff,
+  0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+  0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00,
+  0x07, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+  0x1c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+  0xba, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00,
+  0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
+  0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00,
+  0x16, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x10, 0x00,
+  0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x00, 0x00,
+  0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+  0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+  0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xb0, 0x02, 0x00, 0x00,
+  0x4c, 0x02, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0xa4, 0x01, 0x00, 0x00,
+  0x5c, 0x01, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00,
+  0x84, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+  0x86, 0xfd, 0xff, 0xff, 0x24, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
+  0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x78, 0xfd, 0xff, 0xff,
+  0x08, 0x00, 0x00, 0x00, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
+  0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0xba, 0xfd, 0xff, 0xff, 0x34, 0x00, 0x00, 0x00,
+  0x09, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+  0xac, 0xfd, 0xff, 0xff, 0x19, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75,
+  0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e,
+  0x73, 0x65, 0x5f, 0x33, 0x2f, 0x52, 0x65, 0x6c, 0x75, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+  0xfe, 0xfd, 0xff, 0xff, 0x34, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+  0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xf0, 0xfd, 0xff, 0xff,
+  0x19, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69,
+  0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32,
+  0x2f, 0x52, 0x65, 0x6c, 0x75, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x42, 0xfe, 0xff, 0xff,
+  0x34, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+  0x04, 0x00, 0x00, 0x00, 0x34, 0xfe, 0xff, 0xff, 0x1b, 0x00, 0x00, 0x00,
+  0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31,
+  0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x34, 0x2f, 0x4d, 0x61, 0x74,
+  0x4d, 0x75, 0x6c, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x10, 0x00, 0x00, 0x00, 0x86, 0xfe, 0xff, 0xff, 0x34, 0x00, 0x00, 0x00,
+  0x06, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+  0x78, 0xfe, 0xff, 0xff, 0x1b, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75,
+  0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e,
+  0x73, 0x65, 0x5f, 0x33, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x00,
+  0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+  0xca, 0xfe, 0xff, 0xff, 0x34, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+  0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xbc, 0xfe, 0xff, 0xff,
+  0x1b, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69,
+  0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32,
+  0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0xff, 0xff, 0xff,
+  0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
+  0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x2b, 0x00, 0x00, 0x00,
+  0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31,
+  0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x34, 0x2f, 0x42, 0x69, 0x61,
+  0x73, 0x41, 0x64, 0x64, 0x2f, 0x52, 0x65, 0x61, 0x64, 0x56, 0x61, 0x72,
+  0x69, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, 0x00,
+  0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+  0x50, 0xff, 0xff, 0xff, 0x2b, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75,
+  0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e,
+  0x73, 0x65, 0x5f, 0x33, 0x2f, 0x42, 0x69, 0x61, 0x73, 0x41, 0x64, 0x64,
+  0x2f, 0x52, 0x65, 0x61, 0x64, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c,
+  0x65, 0x4f, 0x70, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+  0xae, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+  0x0c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xa0, 0xff, 0xff, 0xff,
+  0x2b, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69,
+  0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32,
+  0x2f, 0x42, 0x69, 0x61, 0x73, 0x41, 0x64, 0x64, 0x2f, 0x52, 0x65, 0x61,
+  0x64, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00,
+  0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x10, 0x00,
+  0x0e, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00,
+  0x04, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x6e, 0x73,
+  0x65, 0x5f, 0x32, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x00,
+  0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+  0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00,
+  0x0c, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x09, 0x03, 0x00, 0x00, 0x00
+};
+const unsigned int sine_model_quantized_tflite_len = 2552;

+ 35 - 0
stm32-hal-freertos-uart-tensorflow/Src/stm32f4xx_hal_msp.c

@@ -0,0 +1,35 @@
+#include "main.h"
+
+/**
+  * Initializes the Global MSP.
+  */
+void HAL_MspInit(void)
+{
+	GPIO_InitTypeDef GPIO_init;
+
+	__HAL_RCC_SYSCFG_CLK_ENABLE();
+	__HAL_RCC_PWR_CLK_ENABLE();
+
+	//UART
+	USARTx_TX_GPIO_CLK_ENABLE();
+	USARTx_RX_GPIO_CLK_ENABLE();
+
+	USARTx_CLK_ENABLE();
+
+	GPIO_init.Pin = USARTx_TX_PIN;
+	GPIO_init.Mode = GPIO_MODE_AF_PP;
+	GPIO_init.Pull = GPIO_PULLUP;
+	GPIO_init.Speed = GPIO_SPEED_FAST;
+	GPIO_init.Alternate = USARTx_TX_AF;
+
+	HAL_GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_init);
+
+	GPIO_init.Pin = USARTx_RX_PIN;
+	GPIO_init.Alternate = USARTx_RX_AF;
+
+	HAL_GPIO_Init(USARTx_RX_GPIO_PORT, &GPIO_init);
+
+	/* System interrupt init*/
+	/* PendSV_IRQn interrupt configuration */
+	HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0);
+}

+ 187 - 0
stm32-hal-freertos-uart-tensorflow/Src/stm32f4xx_it.c

@@ -0,0 +1,187 @@
+/* USER CODE BEGIN Header */
+/**
+  ******************************************************************************
+  * @file    stm32f4xx_it.c
+  * @brief   Interrupt Service Routines.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
+  * All rights reserved.</center></h2>
+  *
+  * This software component is licensed by ST under Ultimate Liberty license
+  * SLA0044, the "License"; You may not use this file except in compliance with
+  * the License. You may obtain a copy of the License at:
+  *                             www.st.com/SLA0044
+  *
+  ******************************************************************************
+  */
+/* USER CODE END Header */
+
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+#include "stm32f4xx_it.h"
+#include "FreeRTOS.h"
+#include "task.h"
+/* Private includes ----------------------------------------------------------*/
+/* USER CODE BEGIN Includes */
+/* USER CODE END Includes */
+
+/* Private typedef -----------------------------------------------------------*/
+/* USER CODE BEGIN TD */
+
+/* USER CODE END TD */
+
+/* Private define ------------------------------------------------------------*/
+/* USER CODE BEGIN PD */
+ 
+/* USER CODE END PD */
+
+/* Private macro -------------------------------------------------------------*/
+/* USER CODE BEGIN PM */
+
+/* USER CODE END PM */
+
+/* Private variables ---------------------------------------------------------*/
+/* USER CODE BEGIN PV */
+
+/* USER CODE END PV */
+
+/* Private function prototypes -----------------------------------------------*/
+/* USER CODE BEGIN PFP */
+
+/* USER CODE END PFP */
+
+/* Private user code ---------------------------------------------------------*/
+/* USER CODE BEGIN 0 */
+
+/* USER CODE END 0 */
+
+/* External variables --------------------------------------------------------*/
+
+/* USER CODE BEGIN EV */
+
+/* USER CODE END EV */
+
+/******************************************************************************/
+/*           Cortex-M4 Processor Interruption and Exception Handlers          */ 
+/******************************************************************************/
+/**
+  * @brief This function handles Non maskable interrupt.
+  */
+void NMI_Handler(void)
+{
+  /* USER CODE BEGIN NonMaskableInt_IRQn 0 */
+
+  /* USER CODE END NonMaskableInt_IRQn 0 */
+  /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
+
+  /* USER CODE END NonMaskableInt_IRQn 1 */
+}
+
+/**
+  * @brief This function handles Hard fault interrupt.
+  */
+void HardFault_Handler(void)
+{
+  /* USER CODE BEGIN HardFault_IRQn 0 */
+
+  /* USER CODE END HardFault_IRQn 0 */
+  while (1)
+  {
+    /* USER CODE BEGIN W1_HardFault_IRQn 0 */
+    /* USER CODE END W1_HardFault_IRQn 0 */
+  }
+}
+
+/**
+  * @brief This function handles Memory management fault.
+  */
+void MemManage_Handler(void)
+{
+  /* USER CODE BEGIN MemoryManagement_IRQn 0 */
+
+  /* USER CODE END MemoryManagement_IRQn 0 */
+  while (1)
+  {
+    /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */
+    /* USER CODE END W1_MemoryManagement_IRQn 0 */
+  }
+}
+
+/**
+  * @brief This function handles Pre-fetch fault, memory access fault.
+  */
+void BusFault_Handler(void)
+{
+  /* USER CODE BEGIN BusFault_IRQn 0 */
+
+  /* USER CODE END BusFault_IRQn 0 */
+  while (1)
+  {
+    /* USER CODE BEGIN W1_BusFault_IRQn 0 */
+    /* USER CODE END W1_BusFault_IRQn 0 */
+  }
+}
+
+/**
+  * @brief This function handles Undefined instruction or illegal state.
+  */
+void UsageFault_Handler(void)
+{
+  /* USER CODE BEGIN UsageFault_IRQn 0 */
+
+  /* USER CODE END UsageFault_IRQn 0 */
+  while (1)
+  {
+    /* USER CODE BEGIN W1_UsageFault_IRQn 0 */
+    /* USER CODE END W1_UsageFault_IRQn 0 */
+  }
+}
+
+/**
+  * @brief This function handles Debug monitor.
+  */
+void DebugMon_Handler(void)
+{
+  /* USER CODE BEGIN DebugMonitor_IRQn 0 */
+
+  /* USER CODE END DebugMonitor_IRQn 0 */
+  /* USER CODE BEGIN DebugMonitor_IRQn 1 */
+
+  /* USER CODE END DebugMonitor_IRQn 1 */
+}
+
+/**
+  * @brief This function handles System tick timer.
+  */
+void SysTick_Handler(void)
+{
+  /* USER CODE BEGIN SysTick_IRQn 0 */
+
+  /* USER CODE END SysTick_IRQn 0 */
+  HAL_IncTick();
+#if (INCLUDE_xTaskGetSchedulerState == 1 )
+  if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED)
+  {
+#endif /* INCLUDE_xTaskGetSchedulerState */
+  xPortSysTickHandler();
+#if (INCLUDE_xTaskGetSchedulerState == 1 )
+  }
+#endif /* INCLUDE_xTaskGetSchedulerState */
+  /* USER CODE BEGIN SysTick_IRQn 1 */
+
+  /* USER CODE END SysTick_IRQn 1 */
+}
+
+/******************************************************************************/
+/* STM32F4xx Peripheral Interrupt Handlers                                    */
+/* Add here the Interrupt Handlers for the used peripherals.                  */
+/* For the available peripheral interrupt handler names,                      */
+/* please refer to the startup file (startup_stm32f4xx.s).                    */
+/******************************************************************************/
+
+/* USER CODE BEGIN 1 */
+
+/* USER CODE END 1 */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 207 - 0
stm32-hal-freertos-uart-tensorflow/Src/syscalls.c

@@ -0,0 +1,207 @@
+/**
+*****************************************************************************
+**
+**  File        : syscalls.c
+**
+**  Author		: Auto-generated by System workbench for STM32
+**
+**  Abstract    : System Workbench Minimal System calls file
+**
+** 		          For more information about which c-functions
+**                need which of these lowlevel functions
+**                please consult the Newlib libc-manual
+**
+**  Target      : STMicroelectronics STM32
+**
+**  Distribution: The file is distributed “as is,” without any warranty
+**                of any kind.
+**
+*****************************************************************************
+** @attention
+**
+** <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
+**
+** Redistribution and use in source and binary forms, with or without modification,
+** are permitted provided that the following conditions are met:
+**   1. Redistributions of source code must retain the above copyright notice,
+**      this list of conditions and the following disclaimer.
+**   2. Redistributions in binary form must reproduce the above copyright notice,
+**      this list of conditions and the following disclaimer in the documentation
+**      and/or other materials provided with the distribution.
+**   3. Neither the name of STMicroelectronics nor the names of its contributors
+**      may be used to endorse or promote products derived from this software
+**      without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+*****************************************************************************
+*/
+
+/* Includes */
+#include <sys/stat.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <stdio.h>
+#include <signal.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/times.h>
+
+
+/* Variables */
+//#undef errno
+extern int errno;
+extern int __io_putchar(int ch) __attribute__((weak));
+extern int __io_getchar(void) __attribute__((weak));
+
+register char * stack_ptr asm("sp");
+
+char *__env[1] = { 0 };
+char **environ = __env;
+
+
+/* Functions */
+void initialise_monitor_handles()
+{
+}
+
+int _getpid(void)
+{
+	return 1;
+}
+
+int _kill(int pid, int sig)
+{
+	errno = EINVAL;
+	return -1;
+}
+
+void _exit (int status)
+{
+	_kill(status, -1);
+	while (1) {}		/* Make sure we hang here */
+}
+
+__attribute__((weak)) int _read(int file, char *ptr, int len)
+{
+	int DataIdx;
+
+	for (DataIdx = 0; DataIdx < len; DataIdx++)
+	{
+		*ptr++ = __io_getchar();
+	}
+
+return len;
+}
+
+__attribute__((weak)) int _write(int file, char *ptr, int len)
+{
+	int DataIdx;
+
+	for (DataIdx = 0; DataIdx < len; DataIdx++)
+	{
+		__io_putchar(*ptr++);
+	}
+	return len;
+}
+
+caddr_t _sbrk(int incr)
+{
+	extern char end asm("end");
+	static char *heap_end;
+	char *prev_heap_end;
+
+	if (heap_end == 0)
+		heap_end = &end;
+
+	prev_heap_end = heap_end;
+	if (heap_end + incr > stack_ptr)
+	{
+//		write(1, "Heap and stack collision\n", 25);
+//		abort();
+		errno = ENOMEM;
+		return (caddr_t) -1;
+	}
+
+	heap_end += incr;
+
+	return (caddr_t) prev_heap_end;
+}
+
+int _close(int file)
+{
+	return -1;
+}
+
+
+int _fstat(int file, struct stat *st)
+{
+	st->st_mode = S_IFCHR;
+	return 0;
+}
+
+int _isatty(int file)
+{
+	return 1;
+}
+
+int _lseek(int file, int ptr, int dir)
+{
+	return 0;
+}
+
+int _open(char *path, int flags, ...)
+{
+	/* Pretend like we always fail */
+	return -1;
+}
+
+int _wait(int *status)
+{
+	errno = ECHILD;
+	return -1;
+}
+
+int _unlink(char *name)
+{
+	errno = ENOENT;
+	return -1;
+}
+
+int _times(struct tms *buf)
+{
+	return -1;
+}
+
+int _stat(char *file, struct stat *st)
+{
+	st->st_mode = S_IFCHR;
+	return 0;
+}
+
+int _link(char *old, char *new)
+{
+	errno = EMLINK;
+	return -1;
+}
+
+int _fork(void)
+{
+	errno = EAGAIN;
+	return -1;
+}
+
+int _execve(char *name, char **argv, char **env)
+{
+	errno = ENOMEM;
+	return -1;
+}

+ 237 - 0
stm32-hal-freertos-uart-tensorflow/Src/ts_calibration.c

@@ -0,0 +1,237 @@
+/**
+  ******************************************************************************
+  * @file    Display/LCD_Paint/Src/ts_calibration.c 
+  * @author  MCD Application Team
+  * @brief   This application code shows how to calibrate the touchscreen.
+  ******************************************************************************
+  * @attention
+  *
+  * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics International N.V. 
+  * All rights reserved.</center></h2>
+  *
+  * Redistribution and use in source and binary forms, with or without 
+  * modification, are permitted, provided that the following conditions are met:
+  *
+  * 1. Redistribution of source code must retain the above copyright notice, 
+  *    this list of conditions and the following disclaimer.
+  * 2. Redistributions in binary form must reproduce the above copyright notice,
+  *    this list of conditions and the following disclaimer in the documentation
+  *    and/or other materials provided with the distribution.
+  * 3. Neither the name of STMicroelectronics nor the names of other 
+  *    contributors to this software may be used to endorse or promote products 
+  *    derived from this software without specific written permission.
+  * 4. This software, including modifications and/or derivative works of this 
+  *    software, must execute solely and exclusively on microcontroller or
+  *    microprocessor devices manufactured by or for STMicroelectronics.
+  * 5. Redistribution and use of this software other than as permitted under 
+  *    this license is void and will automatically terminate your rights under 
+  *    this license. 
+  *
+  * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" 
+  * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT 
+  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
+  * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
+  * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT 
+  * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
+  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
+  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
+  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  *
+  ******************************************************************************
+  */
+/* Includes ------------------------------------------------------------------*/
+#include "main.h"
+
+/** @addtogroup STM32F4xx_HAL_Applications
+  * @{
+  */
+
+/** @addtogroup LCD_Paint
+  * @{
+  */
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+static TS_StateTypeDef  TS_State;
+static uint8_t Calibration_Done = 0;
+static int16_t  A1, A2, B1, B2;
+static int16_t aPhysX[2], aPhysY[2], aLogX[2], aLogY[2];
+/* Private function prototypes -----------------------------------------------*/
+static void TouchscreenCalibration_SetHint(void);
+static void GetPhysValues(int16_t LogX, int16_t LogY, int16_t * pPhysX, int16_t * pPhysY);
+static void WaitForPressedState(uint8_t Pressed);
+/* Private functions ---------------------------------------------------------*/
+
+/**
+  * @brief  Performs the TS calibration
+  * @param  None
+  * @retval None
+  */
+void Touchscreen_Calibration(void)
+{ 
+  uint8_t status = 0;
+  uint8_t i = 0;
+
+  TouchscreenCalibration_SetHint();
+  
+  status = BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
+  
+  if (status != TS_OK)
+  {
+    BSP_LCD_SetBackColor(LCD_COLOR_WHITE); 
+    BSP_LCD_SetTextColor(LCD_COLOR_RED);
+    BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 95, (uint8_t*)"ERROR", CENTER_MODE);
+    BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()- 80, (uint8_t*)"Touchscreen cannot be initialized", CENTER_MODE);
+  }
+  
+  while (1)
+  {
+    if (status == TS_OK)
+    {
+      aLogX[0] = 15;
+      aLogY[0] = 15;
+      aLogX[1] = BSP_LCD_GetXSize() - 15;
+      aLogY[1] = BSP_LCD_GetYSize() - 15;
+      
+      for (i = 0; i < 2; i++) 
+      {
+        GetPhysValues(aLogX[i], aLogY[i], &aPhysX[i], &aPhysY[i]);
+      }
+      A1 = (1000 * ( aLogX[1] - aLogX[0]))/ ( aPhysX[1] - aPhysX[0]); 
+      B1 = (1000 * aLogX[0]) - A1 * aPhysX[0]; 
+      
+      A2 = (1000 * ( aLogY[1] - aLogY[0]))/ ( aPhysY[1] - aPhysY[0]); 
+      B2 = (1000 * aLogY[0]) - A2 * aPhysY[0]; 
+      
+      Calibration_Done = 1;
+      return;
+    }
+   
+    HAL_Delay(5);
+  }
+}
+
+/**
+  * @brief  Display calibration hint
+  * @param  None
+  * @retval None
+  */
+static void TouchscreenCalibration_SetHint(void)
+{
+  /* Clear the LCD */ 
+  BSP_LCD_Clear(LCD_COLOR_WHITE);
+  
+  /* Set Touchscreen Demo description */
+  BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
+  BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
+
+  BSP_LCD_SetFont(&Font12);
+  BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()/2 - 27, (uint8_t*)"Before using the Touchscreen", CENTER_MODE);
+  BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()/2 - 12, (uint8_t*)"you need to calibrate it.", CENTER_MODE);
+  BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize()/2 + 3, (uint8_t*)"Press on the black circles", CENTER_MODE);
+}
+
+
+/**
+  * @brief  Get Physical position
+  * @param  LogX : logical X position
+  * @param  LogY : logical Y position
+  * @param  pPhysX : Physical X position
+  * @param  pPhysY : Physical Y position
+  * @retval None
+  */
+static void GetPhysValues(int16_t LogX, int16_t LogY, int16_t * pPhysX, int16_t * pPhysY) 
+{
+  /* Draw the ring */
+  BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
+  BSP_LCD_FillCircle(LogX, LogY, 5);
+  BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
+  BSP_LCD_FillCircle(LogX, LogY, 2);
+  
+  /* Wait until touch is pressed */
+  WaitForPressedState(1);
+  
+  BSP_TS_GetState(&TS_State);
+  *pPhysX = TS_State.x;
+  *pPhysY = TS_State.y; 
+  
+  /* Wait until touch is released */
+  WaitForPressedState(0);
+  BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
+  BSP_LCD_FillCircle(LogX, LogY, 5);
+}
+
+/**
+  * @brief  wait for touch detected
+  * @param  Pressed: touch pressed. 
+  * @retval None
+  */
+static void WaitForPressedState(uint8_t Pressed) 
+{
+  TS_StateTypeDef  State;
+  
+  do 
+  {
+    BSP_TS_GetState(&State);
+    HAL_Delay(10);
+    if (State.TouchDetected == Pressed) 
+    {
+      uint16_t TimeStart = HAL_GetTick();
+      do {
+        BSP_TS_GetState(&State);      
+        HAL_Delay(10);
+        if (State.TouchDetected != Pressed) 
+        {
+          break;
+        } else if ((HAL_GetTick() - 100) > TimeStart) 
+        {
+          return;
+        }
+      } while (1);
+    }
+  } while (1);
+}
+
+/**
+  * @brief  Calibrate X position
+  * @param  x : X position
+  * @retval calibrated x
+  */
+uint16_t Calibration_GetX(uint16_t x)
+{
+  return (((A1 * x) + B1)/1000);
+}
+
+/**
+  * @brief  Calibrate Y position
+  * @param  y : Y position
+  * @retval calibrated y
+  */
+uint16_t Calibration_GetY(uint16_t y)
+{
+  return (((A2 * y) + B2)/1000);
+}
+
+/**check if the TS is calibrated
+  * @param  None
+* @retval calibration state (1 : calibrated / 0: no)
+  */
+uint8_t IsCalibrationDone(void)
+{
+  return (Calibration_Done);
+}
+
+/**
+  * @}
+  */ 
+  
+/**
+  * @}
+  */
+    
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 1 - 0
stm32-hal-freertos-uart-tensorflow/cmake

@@ -0,0 +1 @@
+../cmake/

+ 29 - 0
stm32-hal-freertos-uart-tensorflow/stm32f40g_eval.cfg

@@ -0,0 +1,29 @@
+# This is an STM3240G-EVAL board with a single STM32F407IGHx chip
+#
+# Generated by System Workbench for STM32
+# Take care that such file, as generated, may be overridden without any early notice. Please have a look to debug launch configuration setup(s)
+
+source [find interface/stlink.cfg] 
+
+set WORKAREASIZE 0x8000
+
+transport select "hla_swd"
+
+set CHIPNAME STM32F407IGHx
+set BOARDNAME STM3240G-EVAL
+
+# Enable debug when in low power modes
+set ENABLE_LOW_POWER 1
+
+# Stop Watchdog counters when halt
+set STOP_WATCHDOG 1
+
+# STlink Debug clock frequency
+set CLOCK_FREQ 4000
+
+# use hardware reset, connect under reset
+# connect_assert_srst needed if low power mode application running (WFI...)
+reset_config srst_only srst_nogate connect_assert_srst
+set CONNECT_UNDER_RESET 1
+
+source [find target/stm32f4x.cfg]