From 4eecba6295993a94c92c6a85eaf42b92d1ccf98b Mon Sep 17 00:00:00 2001 From: Martin Vladic Date: Sun, 10 Jul 2022 13:34:22 +0200 Subject: [PATCH] working version --- .cproject | 107 +- .mxproject | 84 +- .settings/language.settings.xml | 4 +- .vscode/settings.json | 26 +- Core/Inc/FreeRTOSConfig.h | 6 +- Core/Inc/my_lcd.h | 2 - Core/Inc/stm32f4xx_hal_conf.h | 4 +- .../Target/usbh_platform.h => Core/Inc/usb_otg.h | 32 +- Core/Src/freertos.c | 58 +- Core/Src/main.c | 10 +- Core/Src/my_lcd.c | 143 +- Core/Src/my_stm32f4xx_hal_msp.c | 53 - Core/Src/my_stm32f4xx_it.c | 166 - Core/Src/my_system_stm32f4xx.c | 433 - Core/Src/stm32f4xx_it.c | 5 +- .../STM32469I-Discovery/stm32469i_discovery_lcd.c | 6 +- .../STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_hcd.h | 316 - .../STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h | 459 + .../Inc/stm32f4xx_hal_pcd_ex.h | 88 + .../STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c | 1728 --- .../STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c | 2387 ++++ .../Src/stm32f4xx_hal_pcd_ex.c | 341 + .../Class/CDC/Inc/usbd_cdc.h | 179 + .../Class/CDC/Src/usbd_cdc.c | 875 ++ .../STM32_USB_Device_Library/Core/Inc/usbd_core.h | 172 + .../Core/Inc/usbd_ctlreq.h | 101 + .../STM32_USB_Device_Library/Core/Inc/usbd_def.h | 514 + .../STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h | 113 + .../STM32_USB_Device_Library/Core/Src/usbd_core.c | 1220 ++ .../Core/Src/usbd_ctlreq.c | 1051 ++ .../STM32_USB_Device_Library/Core/Src/usbd_ioreq.c | 224 + .../ST/STM32_USB_Device_Library/LICENSE.txt | 86 + .../Class/CDC/Inc/usbh_cdc.h | 448 - .../Class/CDC/Src/usbh_cdc.c | 837 -- .../ST/STM32_USB_Host_Library/Core/Inc/usbh_core.h | 192 - .../STM32_USB_Host_Library/Core/Inc/usbh_ctlreq.h | 141 - .../ST/STM32_USB_Host_Library/Core/Inc/usbh_def.h | 512 - .../STM32_USB_Host_Library/Core/Inc/usbh_ioreq.h | 160 - .../STM32_USB_Host_Library/Core/Inc/usbh_pipes.h | 123 - .../ST/STM32_USB_Host_Library/Core/Src/usbh_core.c | 1397 -- .../STM32_USB_Host_Library/Core/Src/usbh_ctlreq.c | 1140 -- .../STM32_USB_Host_Library/Core/Src/usbh_ioreq.c | 350 - .../STM32_USB_Host_Library/Core/Src/usbh_pipes.c | 188 - Middlewares/eez | 2 +- Src/CMakeLists.txt | 209 + Src/cmake.bat | 11 + Src/cmake/Emscripten.cmake | 361 + Src/cmake/FindSDL2.cmake | 200 + Src/cmake/FindSDL2_image.cmake | 102 + Src/conf/eez/conf.h | 13 +- Src/date_time.cpp | 175 + Src/date_time.h | 22 + Src/debug.cpp | 27 + ...-flow-template-stm32f469i-disco-gui.eez-project | 98 +- Src/eez-flow-template-stm32f469i-disco.eez-project | 13946 +++++++++++++++++-- Src/firmware.cpp | 189 + Src/firmware.h | 25 + Src/flow/hooks.cpp | 32 + Src/flow/hooks.h | 9 + Src/fonts/Oswald-Medium.ttf | Bin 0 -> 75668 bytes Src/gui/action.cpp | 30 + Src/gui/app_context.cpp | 56 + Src/gui/app_context.h | 23 + Src/gui/data.cpp | 45 + Src/gui/document.cpp | 10160 +++++++++++++- Src/gui/document.h | 277 +- Src/gui/hooks.cpp | 124 + Src/gui/hooks.h | 9 + Src/gui/keypad.cpp | 103 + Src/gui/keypad.h | 30 + Src/images/front_panel.pdn | Bin 0 -> 58744 bytes Src/images/front_panel.png | Bin 0 -> 7808 bytes Src/images/icon.ico | Bin 0 -> 37194 bytes Src/images/icon.png | Bin 0 -> 1838 bytes Src/keyboard.cpp | 34 + Src/lcd.cpp | 64 + Src/platform/simulator/emscripten/index.html | 47 + Src/platform/simulator/emscripten/main.css | 139 + Src/platform/simulator/emscripten/main.js | 206 + Src/platform/simulator/front_panel.cpp | 40 + Src/platform/simulator/front_panel.h | 23 + Src/platform/simulator/simulator.eez-project | 111 + Src/platform/simulator/win32/icon.rc | Bin 0 -> 1818 bytes Src/sound.cpp | 41 + Src/tasks.cpp | 188 + Src/tasks.h | 25 + Src/test_split_string.eez-project | 240 + USB_DEVICE/App/usb_device.c | 100 + USB_DEVICE/App/usb_device.h | 102 + USB_DEVICE/App/usbd_cdc_if.c | 328 + USB_DEVICE/App/usbd_cdc_if.h | 131 + USB_DEVICE/App/usbd_desc.c | 443 + USB_DEVICE/App/usbd_desc.h | 143 + USB_DEVICE/Target/usbd_conf.c | 724 + USB_DEVICE/Target/usbd_conf.h | 173 + USB_HOST/App/usb_host.c | 128 - USB_HOST/App/usb_host.h | 90 - USB_HOST/Target/usbh_conf.c | 548 - USB_HOST/Target/usbh_conf.h | 194 - USB_HOST/Target/usbh_platform.c | 52 - eez-flow-template-stm32f469i-disco.ioc | 106 +- 101 files changed, 36151 insertions(+), 11028 deletions(-) rename USB_HOST/Target/usbh_platform.h => Core/Inc/usb_otg.h (60%) delete mode 100644 Core/Src/my_stm32f4xx_hal_msp.c delete mode 100644 Core/Src/my_stm32f4xx_it.c delete mode 100644 Core/Src/my_system_stm32f4xx.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_hcd.h create mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h create mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c create mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c create mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c create mode 100644 Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h create mode 100644 Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c create mode 100644 Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h create mode 100644 Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h create mode 100644 Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h create mode 100644 Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h create mode 100644 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c create mode 100644 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c create mode 100644 Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c create mode 100644 Middlewares/ST/STM32_USB_Device_Library/LICENSE.txt delete mode 100644 Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc/usbh_cdc.h delete mode 100644 Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.c delete mode 100644 Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_core.h delete mode 100644 Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_ctlreq.h delete mode 100644 Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_def.h delete mode 100644 Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_ioreq.h delete mode 100644 Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_pipes.h delete mode 100644 Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c delete mode 100644 Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.c delete mode 100644 Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.c delete mode 100644 Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.c create mode 100644 Src/CMakeLists.txt create mode 100644 Src/cmake.bat create mode 100644 Src/cmake/Emscripten.cmake create mode 100644 Src/cmake/FindSDL2.cmake create mode 100644 Src/cmake/FindSDL2_image.cmake create mode 100644 Src/date_time.cpp create mode 100644 Src/date_time.h create mode 100644 Src/debug.cpp create mode 100644 Src/firmware.cpp create mode 100644 Src/firmware.h create mode 100644 Src/flow/hooks.cpp create mode 100644 Src/flow/hooks.h create mode 100644 Src/fonts/Oswald-Medium.ttf create mode 100644 Src/gui/action.cpp create mode 100644 Src/gui/app_context.cpp create mode 100644 Src/gui/app_context.h create mode 100644 Src/gui/data.cpp create mode 100644 Src/gui/hooks.cpp create mode 100644 Src/gui/hooks.h create mode 100644 Src/gui/keypad.cpp create mode 100644 Src/gui/keypad.h create mode 100644 Src/images/front_panel.pdn create mode 100644 Src/images/front_panel.png create mode 100644 Src/images/icon.ico create mode 100644 Src/images/icon.png create mode 100644 Src/keyboard.cpp create mode 100644 Src/lcd.cpp create mode 100644 Src/platform/simulator/emscripten/index.html create mode 100644 Src/platform/simulator/emscripten/main.css create mode 100644 Src/platform/simulator/emscripten/main.js create mode 100644 Src/platform/simulator/front_panel.cpp create mode 100644 Src/platform/simulator/front_panel.h create mode 100644 Src/platform/simulator/simulator.eez-project create mode 100644 Src/platform/simulator/win32/icon.rc create mode 100644 Src/sound.cpp create mode 100644 Src/tasks.cpp create mode 100644 Src/tasks.h create mode 100644 Src/test_split_string.eez-project create mode 100644 USB_DEVICE/App/usb_device.c create mode 100644 USB_DEVICE/App/usb_device.h create mode 100644 USB_DEVICE/App/usbd_cdc_if.c create mode 100644 USB_DEVICE/App/usbd_cdc_if.h create mode 100644 USB_DEVICE/App/usbd_desc.c create mode 100644 USB_DEVICE/App/usbd_desc.h create mode 100644 USB_DEVICE/Target/usbd_conf.c create mode 100644 USB_DEVICE/Target/usbd_conf.h delete mode 100644 USB_HOST/App/usb_host.c delete mode 100644 USB_HOST/App/usb_host.h delete mode 100644 USB_HOST/Target/usbh_conf.c delete mode 100644 USB_HOST/Target/usbh_conf.h delete mode 100644 USB_HOST/Target/usbh_platform.c diff --git a/.cproject b/.cproject index 8c9d092..a521512 100644 --- a/.cproject +++ b/.cproject @@ -23,7 +23,7 @@ @@ -237,11 +296,11 @@ - + diff --git a/.mxproject b/.mxproject index 3cc6dc9..8b6f133 100644 --- a/.mxproject +++ b/.mxproject @@ -1,25 +1,25 @@ [PreviousLibFiles] -LibFiles=Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_hcd.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usb.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_crc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_crc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma2d.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma2d.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dsi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_fmc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sdram.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_ltdc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_ltdc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_qspi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sai.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sai_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_sdmmc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sd.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usart.h;Middlewares\Third_Party\FatFs\src\diskio.h;Middlewares\Third_Party\FatFs\src\ff.h;Middlewares\Third_Party\FatFs\src\ff_gen_drv.h;Middlewares\Third_Party\FatFs\src\integer.h;Middlewares\Third_Party\FreeRTOS\Source\include\croutine.h;Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h;Middlewares\Third_Party\FreeRTOS\Source\include\event_groups.h;Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h;Middlewares\Third_Party\FreeRTOS\Source\include\list.h;Middlewares\Third_Party\FreeRTOS\Source\include\message_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_prototypes.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h;Middlewares\Third_Party\FreeRTOS\Source\include\portable.h;Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h;Middlewares\Third_Party\FreeRTOS\Source\include\queue.h;Middlewares\Third_Party\FreeRTOS\Source\include\semphr.h;Middlewares\Third_Party\FreeRTOS\Source\include\stack_macros.h;Middlewares\Third_Party\FreeRTOS\Source\include\StackMacros.h;Middlewares\Third_Party\FreeRTOS\Source\include\stream_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\task.h;Middlewares\Third_Party\FreeRTOS\Source\include\timers.h;Middlewares\Third_Party\FreeRTOS\Source\include\atomic.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_mpool.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_os2.h;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F\portmacro.h;Middlewares\ST\STM32_USB_Host_Library\Core\Inc\usbh_core.h;Middlewares\ST\STM32_USB_Host_Library\Core\Inc\usbh_ctlreq.h;Middlewares\ST\STM32_USB_Host_Library\Core\Inc\usbh_def.h;Middlewares\ST\STM32_USB_Host_Library\Core\Inc\usbh_ioreq.h;Middlewares\ST\STM32_USB_Host_Library\Core\Inc\usbh_pipes.h;Middlewares\ST\STM32_USB_Host_Library\Class\CDC\Inc\usbh_cdc.h;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_hcd.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usb.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma2d.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dsi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fmc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sdram.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_qspi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_sdmmc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sd.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c;Middlewares\Third_Party\FatFs\src\diskio.c;Middlewares\Third_Party\FatFs\src\ff.c;Middlewares\Third_Party\FatFs\src\ff_gen_drv.c;Middlewares\Third_Party\FatFs\src\option\syscall.c;Middlewares\Third_Party\FreeRTOS\Source\croutine.c;Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;Middlewares\Third_Party\FreeRTOS\Source\list.c;Middlewares\Third_Party\FreeRTOS\Source\queue.c;Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;Middlewares\Third_Party\FreeRTOS\Source\tasks.c;Middlewares\Third_Party\FreeRTOS\Source\timers.c;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c;Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F\port.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_core.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_ctlreq.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_ioreq.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_pipes.c;Middlewares\ST\STM32_USB_Host_Library\Class\CDC\Src\usbh_cdc.c;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_hcd.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usb.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_crc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_crc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma2d.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma2d.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dsi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_fmc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sdram.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_ltdc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_ltdc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_qspi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sai.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sai_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_sdmmc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sd.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usart.h;Middlewares\Third_Party\FatFs\src\diskio.h;Middlewares\Third_Party\FatFs\src\ff.h;Middlewares\Third_Party\FatFs\src\ff_gen_drv.h;Middlewares\Third_Party\FatFs\src\integer.h;Middlewares\Third_Party\FreeRTOS\Source\include\croutine.h;Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h;Middlewares\Third_Party\FreeRTOS\Source\include\event_groups.h;Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h;Middlewares\Third_Party\FreeRTOS\Source\include\list.h;Middlewares\Third_Party\FreeRTOS\Source\include\message_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_prototypes.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h;Middlewares\Third_Party\FreeRTOS\Source\include\portable.h;Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h;Middlewares\Third_Party\FreeRTOS\Source\include\queue.h;Middlewares\Third_Party\FreeRTOS\Source\include\semphr.h;Middlewares\Third_Party\FreeRTOS\Source\include\stack_macros.h;Middlewares\Third_Party\FreeRTOS\Source\include\StackMacros.h;Middlewares\Third_Party\FreeRTOS\Source\include\stream_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\task.h;Middlewares\Third_Party\FreeRTOS\Source\include\timers.h;Middlewares\Third_Party\FreeRTOS\Source\include\atomic.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_mpool.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_os2.h;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F\portmacro.h;Middlewares\ST\STM32_USB_Host_Library\Core\Inc\usbh_core.h;Middlewares\ST\STM32_USB_Host_Library\Core\Inc\usbh_ctlreq.h;Middlewares\ST\STM32_USB_Host_Library\Core\Inc\usbh_def.h;Middlewares\ST\STM32_USB_Host_Library\Core\Inc\usbh_ioreq.h;Middlewares\ST\STM32_USB_Host_Library\Core\Inc\usbh_pipes.h;Middlewares\ST\STM32_USB_Host_Library\Class\CDC\Inc\usbh_cdc.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f469xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\system_stm32f4xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h; +LibFiles=Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pcd.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pcd_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usb.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_crc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_crc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma2d.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma2d.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dsi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_fmc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sdram.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_ltdc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_ltdc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_qspi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sai.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sai_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_sdmmc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sd.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usart.h;Middlewares\Third_Party\FreeRTOS\Source\include\croutine.h;Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h;Middlewares\Third_Party\FreeRTOS\Source\include\event_groups.h;Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h;Middlewares\Third_Party\FreeRTOS\Source\include\list.h;Middlewares\Third_Party\FreeRTOS\Source\include\message_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_prototypes.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h;Middlewares\Third_Party\FreeRTOS\Source\include\portable.h;Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h;Middlewares\Third_Party\FreeRTOS\Source\include\queue.h;Middlewares\Third_Party\FreeRTOS\Source\include\semphr.h;Middlewares\Third_Party\FreeRTOS\Source\include\stack_macros.h;Middlewares\Third_Party\FreeRTOS\Source\include\StackMacros.h;Middlewares\Third_Party\FreeRTOS\Source\include\stream_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\task.h;Middlewares\Third_Party\FreeRTOS\Source\include\timers.h;Middlewares\Third_Party\FreeRTOS\Source\include\atomic.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_mpool.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_os2.h;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F\portmacro.h;Middlewares\Third_Party\FatFs\src\diskio.h;Middlewares\Third_Party\FatFs\src\ff.h;Middlewares\Third_Party\FatFs\src\ff_gen_drv.h;Middlewares\Third_Party\FatFs\src\integer.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_core.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ctlreq.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_def.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ioreq.h;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc\usbd_cdc.h;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pcd.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pcd_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usb.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma2d.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dsi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fmc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sdram.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_qspi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_sdmmc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sd.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c;Middlewares\Third_Party\FreeRTOS\Source\croutine.c;Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;Middlewares\Third_Party\FreeRTOS\Source\list.c;Middlewares\Third_Party\FreeRTOS\Source\queue.c;Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;Middlewares\Third_Party\FreeRTOS\Source\tasks.c;Middlewares\Third_Party\FreeRTOS\Source\timers.c;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c;Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F\port.c;Middlewares\Third_Party\FatFs\src\diskio.c;Middlewares\Third_Party\FatFs\src\ff.c;Middlewares\Third_Party\FatFs\src\ff_gen_drv.c;Middlewares\Third_Party\FatFs\src\option\syscall.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Src\usbd_cdc.c;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pcd.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pcd_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usb.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_crc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_crc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma2d.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma2d.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dsi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_fmc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sdram.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_i2c.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_ltdc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_ltdc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_qspi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sai.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sai_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_sdmmc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_sd.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usart.h;Middlewares\Third_Party\FreeRTOS\Source\include\croutine.h;Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h;Middlewares\Third_Party\FreeRTOS\Source\include\event_groups.h;Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h;Middlewares\Third_Party\FreeRTOS\Source\include\list.h;Middlewares\Third_Party\FreeRTOS\Source\include\message_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_prototypes.h;Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h;Middlewares\Third_Party\FreeRTOS\Source\include\portable.h;Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h;Middlewares\Third_Party\FreeRTOS\Source\include\queue.h;Middlewares\Third_Party\FreeRTOS\Source\include\semphr.h;Middlewares\Third_Party\FreeRTOS\Source\include\stack_macros.h;Middlewares\Third_Party\FreeRTOS\Source\include\StackMacros.h;Middlewares\Third_Party\FreeRTOS\Source\include\stream_buffer.h;Middlewares\Third_Party\FreeRTOS\Source\include\task.h;Middlewares\Third_Party\FreeRTOS\Source\include\timers.h;Middlewares\Third_Party\FreeRTOS\Source\include\atomic.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_mpool.h;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\freertos_os2.h;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F\portmacro.h;Middlewares\Third_Party\FatFs\src\diskio.h;Middlewares\Third_Party\FatFs\src\ff.h;Middlewares\Third_Party\FatFs\src\ff_gen_drv.h;Middlewares\Third_Party\FatFs\src\integer.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_core.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ctlreq.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_def.h;Middlewares\ST\STM32_USB_Device_Library\Core\Inc\usbd_ioreq.h;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc\usbd_cdc.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f469xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\system_stm32f4xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h; [PreviousUsedCubeIDEFiles] -SourceFiles=Core\Src\main.c;Core\Src\gpio.c;Core\Src\crc.c;Core\Src\dma2d.c;Core\Src\dsihost.c;FATFS\Target\bsp_driver_sd.c;FATFS\Target\sd_diskio.c;FATFS\App\fatfs.c;FATFS\Target\fatfs_platform.c;Core\Src\fmc.c;Core\Src\freertos.c;Core\Src\i2c.c;Core\Src\ltdc.c;Core\Src\quadspi.c;Core\Src\sai.c;Core\Src\sdio.c;Core\Src\tim.c;Core\Src\usart.c;USB_HOST\App\usb_host.c;USB_HOST\Target\usbh_conf.c;USB_HOST\Target\usbh_platform.c;Core\Src\stm32f4xx_it.c;Core\Src\stm32f4xx_hal_msp.c;Core\Src\stm32f4xx_hal_timebase_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_hcd.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usb.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma2d.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dsi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fmc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sdram.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_qspi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_sdmmc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sd.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c;Middlewares\Third_Party\FatFs\src\diskio.c;Middlewares\Third_Party\FatFs\src\ff.c;Middlewares\Third_Party\FatFs\src\ff_gen_drv.c;Middlewares\Third_Party\FatFs\src\option\syscall.c;Middlewares\Third_Party\FreeRTOS\Source\croutine.c;Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;Middlewares\Third_Party\FreeRTOS\Source\list.c;Middlewares\Third_Party\FreeRTOS\Source\queue.c;Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;Middlewares\Third_Party\FreeRTOS\Source\tasks.c;Middlewares\Third_Party\FreeRTOS\Source\timers.c;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c;Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F\port.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_core.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_ctlreq.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_ioreq.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_pipes.c;Middlewares\ST\STM32_USB_Host_Library\Class\CDC\Src\usbh_cdc.c;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Core\Src\system_stm32f4xx.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_hcd.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usb.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma2d.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dsi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fmc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sdram.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_qspi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_sdmmc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sd.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c;Middlewares\Third_Party\FatFs\src\diskio.c;Middlewares\Third_Party\FatFs\src\ff.c;Middlewares\Third_Party\FatFs\src\ff_gen_drv.c;Middlewares\Third_Party\FatFs\src\option\syscall.c;Middlewares\Third_Party\FreeRTOS\Source\croutine.c;Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;Middlewares\Third_Party\FreeRTOS\Source\list.c;Middlewares\Third_Party\FreeRTOS\Source\queue.c;Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;Middlewares\Third_Party\FreeRTOS\Source\tasks.c;Middlewares\Third_Party\FreeRTOS\Source\timers.c;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c;Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F\port.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_core.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_ctlreq.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_ioreq.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_pipes.c;Middlewares\ST\STM32_USB_Host_Library\Class\CDC\Src\usbh_cdc.c;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Core\Src\system_stm32f4xx.c;;;Middlewares\Third_Party\FatFs\src\diskio.c;Middlewares\Third_Party\FatFs\src\ff.c;Middlewares\Third_Party\FatFs\src\ff_gen_drv.c;Middlewares\Third_Party\FatFs\src\option\syscall.c;Middlewares\Third_Party\FreeRTOS\Source\croutine.c;Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;Middlewares\Third_Party\FreeRTOS\Source\list.c;Middlewares\Third_Party\FreeRTOS\Source\queue.c;Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;Middlewares\Third_Party\FreeRTOS\Source\tasks.c;Middlewares\Third_Party\FreeRTOS\Source\timers.c;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c;Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F\port.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_core.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_ctlreq.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_ioreq.c;Middlewares\ST\STM32_USB_Host_Library\Core\Src\usbh_pipes.c;Middlewares\ST\STM32_USB_Host_Library\Class\CDC\Src\usbh_cdc.c; -HeaderPath=Drivers\STM32F4xx_HAL_Driver\Inc;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy;Middlewares\Third_Party\FatFs\src;Middlewares\Third_Party\FreeRTOS\Source\include;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F;Middlewares\ST\STM32_USB_Host_Library\Core\Inc;Middlewares\ST\STM32_USB_Host_Library\Class\CDC\Inc;Drivers\CMSIS\Device\ST\STM32F4xx\Include;Drivers\CMSIS\Include;Core\Inc;FATFS\Target;FATFS\App;USB_HOST\App;USB_HOST\Target; +SourceFiles=Core\Src\main.c;Core\Src\gpio.c;Core\Src\freertos.c;Core\Src\crc.c;Core\Src\dma2d.c;Core\Src\dsihost.c;FATFS\Target\bsp_driver_sd.c;FATFS\Target\sd_diskio.c;FATFS\App\fatfs.c;FATFS\Target\fatfs_platform.c;Core\Src\fmc.c;Core\Src\i2c.c;Core\Src\ltdc.c;Core\Src\quadspi.c;Core\Src\sai.c;Core\Src\sdio.c;Core\Src\tim.c;Core\Src\usart.c;USB_DEVICE\App\usb_device.c;USB_DEVICE\Target\usbd_conf.c;USB_DEVICE\App\usbd_desc.c;USB_DEVICE\App\usbd_cdc_if.c;Core\Src\stm32f4xx_it.c;Core\Src\stm32f4xx_hal_msp.c;Core\Src\stm32f4xx_hal_timebase_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pcd.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pcd_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usb.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma2d.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dsi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fmc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sdram.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_qspi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_sdmmc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sd.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c;Middlewares\Third_Party\FreeRTOS\Source\croutine.c;Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;Middlewares\Third_Party\FreeRTOS\Source\list.c;Middlewares\Third_Party\FreeRTOS\Source\queue.c;Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;Middlewares\Third_Party\FreeRTOS\Source\tasks.c;Middlewares\Third_Party\FreeRTOS\Source\timers.c;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c;Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F\port.c;Middlewares\Third_Party\FatFs\src\diskio.c;Middlewares\Third_Party\FatFs\src\ff.c;Middlewares\Third_Party\FatFs\src\ff_gen_drv.c;Middlewares\Third_Party\FatFs\src\option\syscall.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Src\usbd_cdc.c;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Core\Src\system_stm32f4xx.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pcd.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pcd_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usb.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma2d.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dsi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fmc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sdram.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_qspi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_sdmmc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sd.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c;Middlewares\Third_Party\FreeRTOS\Source\croutine.c;Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;Middlewares\Third_Party\FreeRTOS\Source\list.c;Middlewares\Third_Party\FreeRTOS\Source\queue.c;Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;Middlewares\Third_Party\FreeRTOS\Source\tasks.c;Middlewares\Third_Party\FreeRTOS\Source\timers.c;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c;Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F\port.c;Middlewares\Third_Party\FatFs\src\diskio.c;Middlewares\Third_Party\FatFs\src\ff.c;Middlewares\Third_Party\FatFs\src\ff_gen_drv.c;Middlewares\Third_Party\FatFs\src\option\syscall.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Src\usbd_cdc.c;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Core\Src\system_stm32f4xx.c;;;Middlewares\Third_Party\FatFs\src\diskio.c;Middlewares\Third_Party\FatFs\src\ff.c;Middlewares\Third_Party\FatFs\src\ff_gen_drv.c;Middlewares\Third_Party\FatFs\src\option\syscall.c;Middlewares\Third_Party\FreeRTOS\Source\croutine.c;Middlewares\Third_Party\FreeRTOS\Source\event_groups.c;Middlewares\Third_Party\FreeRTOS\Source\list.c;Middlewares\Third_Party\FreeRTOS\Source\queue.c;Middlewares\Third_Party\FreeRTOS\Source\stream_buffer.c;Middlewares\Third_Party\FreeRTOS\Source\tasks.c;Middlewares\Third_Party\FreeRTOS\Source\timers.c;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.c;Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang\heap_4.c;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F\port.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_core.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ctlreq.c;Middlewares\ST\STM32_USB_Device_Library\Core\Src\usbd_ioreq.c;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Src\usbd_cdc.c; +HeaderPath=Drivers\STM32F4xx_HAL_Driver\Inc;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy;Middlewares\Third_Party\FreeRTOS\Source\include;Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2;Middlewares\Third_Party\FreeRTOS\Source\portable\GCC\ARM_CM4F;Middlewares\Third_Party\FatFs\src;Middlewares\ST\STM32_USB_Device_Library\Core\Inc;Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc;Drivers\CMSIS\Device\ST\STM32F4xx\Include;Drivers\CMSIS\Include;Core\Inc;FATFS\Target;FATFS\App;USB_DEVICE\App;USB_DEVICE\Target; CDefines=USE_HAL_DRIVER;STM32F469xx;USE_HAL_DRIVER;USE_HAL_DRIVER; [PreviousGenFiles] AdvancedFolderStructure=true -HeaderFileListSize=24 +HeaderFileListSize=25 HeaderFiles#0=..\Core\Inc\gpio.h -HeaderFiles#1=..\Core\Inc\crc.h -HeaderFiles#2=..\Core\Inc\dma2d.h -HeaderFiles#3=..\Core\Inc\dsihost.h -HeaderFiles#4=..\FATFS\Target\ffconf.h -HeaderFiles#5=..\FATFS\Target\bsp_driver_sd.h -HeaderFiles#6=..\FATFS\Target\sd_diskio.h -HeaderFiles#7=..\FATFS\App\fatfs.h -HeaderFiles#8=..\FATFS\Target\fatfs_platform.h -HeaderFiles#9=..\Core\Inc\fmc.h -HeaderFiles#10=..\Core\Inc\FreeRTOSConfig.h +HeaderFiles#1=..\Core\Inc\FreeRTOSConfig.h +HeaderFiles#2=..\Core\Inc\crc.h +HeaderFiles#3=..\Core\Inc\dma2d.h +HeaderFiles#4=..\Core\Inc\dsihost.h +HeaderFiles#5=..\FATFS\Target\ffconf.h +HeaderFiles#6=..\FATFS\Target\bsp_driver_sd.h +HeaderFiles#7=..\FATFS\Target\sd_diskio.h +HeaderFiles#8=..\FATFS\App\fatfs.h +HeaderFiles#9=..\FATFS\Target\fatfs_platform.h +HeaderFiles#10=..\Core\Inc\fmc.h HeaderFiles#11=..\Core\Inc\i2c.h HeaderFiles#12=..\Core\Inc\ltdc.h HeaderFiles#13=..\Core\Inc\quadspi.h @@ -27,30 +27,31 @@ HeaderFiles#14=..\Core\Inc\sai.h HeaderFiles#15=..\Core\Inc\sdio.h HeaderFiles#16=..\Core\Inc\tim.h HeaderFiles#17=..\Core\Inc\usart.h -HeaderFiles#18=..\USB_HOST\App\usb_host.h -HeaderFiles#19=..\USB_HOST\Target\usbh_conf.h -HeaderFiles#20=..\USB_HOST\Target\usbh_platform.h -HeaderFiles#21=..\Core\Inc\stm32f4xx_it.h -HeaderFiles#22=..\Core\Inc\stm32f4xx_hal_conf.h -HeaderFiles#23=..\Core\Inc\main.h +HeaderFiles#18=..\USB_DEVICE\App\usb_device.h +HeaderFiles#19=..\USB_DEVICE\Target\usbd_conf.h +HeaderFiles#20=..\USB_DEVICE\App\usbd_desc.h +HeaderFiles#21=..\USB_DEVICE\App\usbd_cdc_if.h +HeaderFiles#22=..\Core\Inc\stm32f4xx_it.h +HeaderFiles#23=..\Core\Inc\stm32f4xx_hal_conf.h +HeaderFiles#24=..\Core\Inc\main.h HeaderFolderListSize=5 HeaderPath#0=..\Core\Inc HeaderPath#1=..\FATFS\Target HeaderPath#2=..\FATFS\App -HeaderPath#3=..\USB_HOST\App -HeaderPath#4=..\USB_HOST\Target +HeaderPath#3=..\USB_DEVICE\App +HeaderPath#4=..\USB_DEVICE\Target HeaderFiles=; -SourceFileListSize=24 +SourceFileListSize=25 SourceFiles#0=..\Core\Src\gpio.c -SourceFiles#1=..\Core\Src\crc.c -SourceFiles#2=..\Core\Src\dma2d.c -SourceFiles#3=..\Core\Src\dsihost.c -SourceFiles#4=..\FATFS\Target\bsp_driver_sd.c -SourceFiles#5=..\FATFS\Target\sd_diskio.c -SourceFiles#6=..\FATFS\App\fatfs.c -SourceFiles#7=..\FATFS\Target\fatfs_platform.c -SourceFiles#8=..\Core\Src\fmc.c -SourceFiles#9=..\Core\Src\freertos.c +SourceFiles#1=..\Core\Src\freertos.c +SourceFiles#2=..\Core\Src\crc.c +SourceFiles#3=..\Core\Src\dma2d.c +SourceFiles#4=..\Core\Src\dsihost.c +SourceFiles#5=..\FATFS\Target\bsp_driver_sd.c +SourceFiles#6=..\FATFS\Target\sd_diskio.c +SourceFiles#7=..\FATFS\App\fatfs.c +SourceFiles#8=..\FATFS\Target\fatfs_platform.c +SourceFiles#9=..\Core\Src\fmc.c SourceFiles#10=..\Core\Src\i2c.c SourceFiles#11=..\Core\Src\ltdc.c SourceFiles#12=..\Core\Src\quadspi.c @@ -58,18 +59,19 @@ SourceFiles#13=..\Core\Src\sai.c SourceFiles#14=..\Core\Src\sdio.c SourceFiles#15=..\Core\Src\tim.c SourceFiles#16=..\Core\Src\usart.c -SourceFiles#17=..\USB_HOST\App\usb_host.c -SourceFiles#18=..\USB_HOST\Target\usbh_conf.c -SourceFiles#19=..\USB_HOST\Target\usbh_platform.c -SourceFiles#20=..\Core\Src\stm32f4xx_it.c -SourceFiles#21=..\Core\Src\stm32f4xx_hal_msp.c -SourceFiles#22=..\Core\Src\stm32f4xx_hal_timebase_tim.c -SourceFiles#23=..\Core\Src\main.c +SourceFiles#17=..\USB_DEVICE\App\usb_device.c +SourceFiles#18=..\USB_DEVICE\Target\usbd_conf.c +SourceFiles#19=..\USB_DEVICE\App\usbd_desc.c +SourceFiles#20=..\USB_DEVICE\App\usbd_cdc_if.c +SourceFiles#21=..\Core\Src\stm32f4xx_it.c +SourceFiles#22=..\Core\Src\stm32f4xx_hal_msp.c +SourceFiles#23=..\Core\Src\stm32f4xx_hal_timebase_tim.c +SourceFiles#24=..\Core\Src\main.c SourceFolderListSize=5 SourcePath#0=..\Core\Src SourcePath#1=..\FATFS\Target SourcePath#2=..\FATFS\App -SourcePath#3=..\USB_HOST\App -SourcePath#4=..\USB_HOST\Target +SourcePath#3=..\USB_DEVICE\App +SourcePath#4=..\USB_DEVICE\Target SourceFiles=; diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml index 25202d9..e9abc67 100644 --- a/.settings/language.settings.xml +++ b/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/.vscode/settings.json b/.vscode/settings.json index 65e1ec0..7ececfa 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,27 @@ { - "makefile.extensionOutputFolder": "./.vscode" + "makefile.extensionOutputFolder": "./.vscode", + "files.associations": { + "xmemory": "cpp", + "bit": "c", + "charconv": "c", + "chrono": "c", + "compare": "c", + "cstddef": "c", + "filesystem": "c", + "format": "c", + "iterator": "c", + "limits": "c", + "memory": "c", + "sstream": "c", + "system_error": "c", + "type_traits": "c", + "vector": "c", + "xiosbase": "c", + "xlocale": "c", + "xlocbuf": "c", + "xlocmon": "c", + "xloctime": "c", + "xtree": "c", + "xutility": "c" + } } \ No newline at end of file diff --git a/Core/Inc/FreeRTOSConfig.h b/Core/Inc/FreeRTOSConfig.h index 617b3b0..b60d39d 100644 --- a/Core/Inc/FreeRTOSConfig.h +++ b/Core/Inc/FreeRTOSConfig.h @@ -62,21 +62,19 @@ #define configUSE_PREEMPTION 1 #define configSUPPORT_STATIC_ALLOCATION 1 #define configSUPPORT_DYNAMIC_ALLOCATION 1 -#define configUSE_IDLE_HOOK 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 ( 56 ) #define configMINIMAL_STACK_SIZE ((uint16_t)128) -#define configTOTAL_HEAP_SIZE ((size_t)32768) +#define configTOTAL_HEAP_SIZE ((size_t)131072) #define configMAX_TASK_NAME_LEN ( 16 ) #define configUSE_TRACE_FACILITY 1 #define configUSE_16_BIT_TICKS 0 #define configUSE_MUTEXES 1 #define configQUEUE_REGISTRY_SIZE 8 -#define configCHECK_FOR_STACK_OVERFLOW 2 #define configUSE_RECURSIVE_MUTEXES 1 -#define configUSE_MALLOC_FAILED_HOOK 1 #define configUSE_APPLICATION_TASK_TAG 1 #define configUSE_COUNTING_SEMAPHORES 1 #define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 diff --git a/Core/Inc/my_lcd.h b/Core/Inc/my_lcd.h index 567ba73..e591a1c 100644 --- a/Core/Inc/my_lcd.h +++ b/Core/Inc/my_lcd.h @@ -1,4 +1,2 @@ -void My_SystemClock_Config(void); - void MY_LCD_Init(); void MY_LCD_Tick(); diff --git a/Core/Inc/stm32f4xx_hal_conf.h b/Core/Inc/stm32f4xx_hal_conf.h index 444c911..aa984f1 100644 --- a/Core/Inc/stm32f4xx_hal_conf.h +++ b/Core/Inc/stm32f4xx_hal_conf.h @@ -70,8 +70,8 @@ /* #define HAL_SMARTCARD_MODULE_ENABLED */ /* #define HAL_SMBUS_MODULE_ENABLED */ /* #define HAL_WWDG_MODULE_ENABLED */ -/* #define HAL_PCD_MODULE_ENABLED */ -#define HAL_HCD_MODULE_ENABLED +#define HAL_PCD_MODULE_ENABLED +/* #define HAL_HCD_MODULE_ENABLED */ #define HAL_DSI_MODULE_ENABLED /* #define HAL_QSPI_MODULE_ENABLED */ #define HAL_QSPI_MODULE_ENABLED diff --git a/USB_HOST/Target/usbh_platform.h b/Core/Inc/usb_otg.h similarity index 60% rename from USB_HOST/Target/usbh_platform.h rename to Core/Inc/usb_otg.h index 2f2be07..c900599 100644 --- a/USB_HOST/Target/usbh_platform.h +++ b/Core/Inc/usb_otg.h @@ -1,8 +1,9 @@ /* USER CODE BEGIN Header */ /** ****************************************************************************** - * @file : usbh_platform.h - * @brief : Header for usbh_platform.c file. + * @file usb_otg.h + * @brief This file contains all the function prototypes for + * the usb_otg.c file ****************************************************************************** * @attention * @@ -16,27 +17,36 @@ ****************************************************************************** */ /* USER CODE END Header */ - /* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USBH_PLATFORM_H__ -#define __USBH_PLATFORM_H__ +#ifndef __USB_OTG_H__ +#define __USB_OTG_H__ #ifdef __cplusplus - extern "C" { +extern "C" { #endif /* Includes ------------------------------------------------------------------*/ -#include "usb_host.h" +#include "main.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +extern PCD_HandleTypeDef hpcd_USB_OTG_FS; + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ -/* USER CODE BEGIN INCLUDE */ +void MX_USB_OTG_FS_PCD_Init(void); -/* USER CODE END INCLUDE */ +/* USER CODE BEGIN Prototypes */ -void MX_DriverVbusFS(uint8_t state); +/* USER CODE END Prototypes */ #ifdef __cplusplus } #endif -#endif /* __USBH_PLATFORM_H__ */ +#endif /* __USB_OTG_H__ */ diff --git a/Core/Src/freertos.c b/Core/Src/freertos.c index 7d5273a..c526c4b 100644 --- a/Core/Src/freertos.c +++ b/Core/Src/freertos.c @@ -25,7 +25,6 @@ /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ -#include "my_lcd.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -57,58 +56,17 @@ const osThreadAttr_t defaultTask_attributes = { /* Private function prototypes -----------------------------------------------*/ /* USER CODE BEGIN FunctionPrototypes */ +void init(); +void tick(); +void MY_LCD_Tick(); + /* USER CODE END FunctionPrototypes */ void StartDefaultTask(void *argument); -extern void MX_USB_HOST_Init(void); +extern void MX_USB_DEVICE_Init(void); void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */ -/* Hook prototypes */ -void vApplicationIdleHook(void); -void vApplicationStackOverflowHook(xTaskHandle xTask, signed char *pcTaskName); -void vApplicationMallocFailedHook(void); - -/* USER CODE BEGIN 2 */ -__weak void vApplicationIdleHook( void ) -{ - /* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set - to 1 in FreeRTOSConfig.h. It will be called on each iteration of the idle - task. It is essential that code added to this hook function never attempts - to block in any way (for example, call xQueueReceive() with a block time - specified, or call vTaskDelay()). If the application makes use of the - vTaskDelete() API function (as this demo application does) then it is also - important that vApplicationIdleHook() is permitted to return to its calling - function, because it is the responsibility of the idle task to clean up - memory allocated by the kernel to any task that has since been deleted. */ -} -/* USER CODE END 2 */ - -/* USER CODE BEGIN 4 */ -__weak void vApplicationStackOverflowHook(xTaskHandle xTask, signed char *pcTaskName) -{ - /* Run time stack overflow checking is performed if - configCHECK_FOR_STACK_OVERFLOW is defined to 1 or 2. This hook function is - called if a stack overflow is detected. */ -} -/* USER CODE END 4 */ - -/* USER CODE BEGIN 5 */ -__weak void vApplicationMallocFailedHook(void) -{ - /* vApplicationMallocFailedHook() will only be called if - configUSE_MALLOC_FAILED_HOOK is set to 1 in FreeRTOSConfig.h. It is a hook - function that will get called if a call to pvPortMalloc() fails. - pvPortMalloc() is called internally by the kernel whenever a task, queue, - timer or semaphore is created. It is also called by various parts of the - demo application. If heap_1.c or heap_2.c are used, then the size of the - heap available to pvPortMalloc() is defined by configTOTAL_HEAP_SIZE in - FreeRTOSConfig.h, and the xPortGetFreeHeapSize() API function can be used - to query the size of free heap space that remains (although it does not - provide information on how the remaining heap might be fragmented). */ -} -/* USER CODE END 5 */ - /** * @brief FreeRTOS initialization * @param None @@ -158,12 +116,14 @@ void MX_FREERTOS_Init(void) { /* USER CODE END Header_StartDefaultTask */ void StartDefaultTask(void *argument) { - /* init code for USB_HOST */ - MX_USB_HOST_Init(); + /* init code for USB_DEVICE */ + MX_USB_DEVICE_Init(); /* USER CODE BEGIN StartDefaultTask */ + init(); /* Infinite loop */ for(;;) { + tick(); MY_LCD_Tick(); } /* USER CODE END StartDefaultTask */ diff --git a/Core/Src/main.c b/Core/Src/main.c index dedebee..eb1d403 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -30,13 +30,12 @@ #include "sdio.h" #include "tim.h" #include "usart.h" -#include "usb_host.h" +#include "usb_device.h" #include "gpio.h" #include "fmc.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ -#include "my_lcd.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -66,6 +65,7 @@ void MX_FREERTOS_Init(void); /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ +void MY_LCD_Init(); /* USER CODE END 0 */ /** @@ -78,7 +78,7 @@ int main(void) #if 1 HAL_Init(); SystemClock_Config(); - MY_LCD_Init(); + //MY_LCD_Init(); #else /* USER CODE END 1 */ @@ -204,10 +204,10 @@ void PeriphCommonClock_Config(void) */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SAI_PLLSAI|RCC_PERIPHCLK_SDIO |RCC_PERIPHCLK_CLK48|RCC_PERIPHCLK_LTDC; - PeriphClkInitStruct.PLLSAI.PLLSAIN = 192; + PeriphClkInitStruct.PLLSAI.PLLSAIN = 288; PeriphClkInitStruct.PLLSAI.PLLSAIR = 2; PeriphClkInitStruct.PLLSAI.PLLSAIQ = 2; - PeriphClkInitStruct.PLLSAI.PLLSAIP = RCC_PLLSAIP_DIV4; + PeriphClkInitStruct.PLLSAI.PLLSAIP = RCC_PLLSAIP_DIV6; PeriphClkInitStruct.PLLSAIDivQ = 1; PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_4; PeriphClkInitStruct.Clk48ClockSelection = RCC_CLK48CLKSOURCE_PLLSAIP; diff --git a/Core/Src/my_lcd.c b/Core/Src/my_lcd.c index 60aaf6c..d212f43 100644 --- a/Core/Src/my_lcd.c +++ b/Core/Src/my_lcd.c @@ -24,12 +24,13 @@ static const uint32_t * Images[] = static const uint32_t Buffers[] = { LAYER0_ADDRESS, - LAYER0_ADDRESS + (800*480*4), + LAYER0_ADDRESS + (800*480*2), }; static void OnError_Handler(uint32_t condition); static void LCD_BriefDisplay(void); static void CopyBuffer(uint32_t *pSrc, uint32_t *pDst, uint16_t x, uint16_t y, uint16_t xsize, uint16_t ysize); +static void CopyImage(uint32_t *pSrc, uint32_t *pDst, uint16_t x, uint16_t y, uint16_t xsize, uint16_t ysize); void MY_LCD_Init() { uint8_t lcd_status = LCD_OK; @@ -54,7 +55,7 @@ void MY_LCD_Tick() { if(pend_buffer < 0) { /* Prepare back buffer */ - CopyBuffer((uint32_t *)Images[ImageIndex++], (uint32_t *)Buffers[1- front_buffer], 240, 160, 320, 240); + CopyImage((uint32_t *)Images[ImageIndex++], (uint32_t *)Buffers[1- front_buffer], 240, 160, 320, 240); pend_buffer = 1- front_buffer; if(ImageIndex >= 2) @@ -67,63 +68,6 @@ void MY_LCD_Tick() { } } -void My_SystemClock_Config(void) -{ - RCC_ClkInitTypeDef RCC_ClkInitStruct; - RCC_OscInitTypeDef RCC_OscInitStruct; - HAL_StatusTypeDef ret = HAL_OK; - - /* Enable Power Control clock */ - __HAL_RCC_PWR_CLK_ENABLE(); - - /* The voltage scaling allows optimizing the power consumption when the device is - clocked below the maximum system frequency, to update the voltage scaling value - regarding system frequency refer to product datasheet. */ - __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); - - /* Enable HSE Oscillator and activate PLL with HSE as source */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; - RCC_OscInitStruct.HSEState = RCC_HSE_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; -#if defined(USE_STM32469I_DISCO_REVA) - RCC_OscInitStruct.PLL.PLLM = 25; -#else - RCC_OscInitStruct.PLL.PLLM = 8; -#endif /* USE_STM32469I_DISCO_REVA */ - RCC_OscInitStruct.PLL.PLLN = 360; - RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; - RCC_OscInitStruct.PLL.PLLQ = 7; - RCC_OscInitStruct.PLL.PLLR = 6; - - ret = HAL_RCC_OscConfig(&RCC_OscInitStruct); - if(ret != HAL_OK) - { - while(1) { ; } - } - - /* Activate the OverDrive to reach the 180 MHz Frequency */ - ret = HAL_PWREx_EnableOverDrive(); - if(ret != HAL_OK) - { - while(1) { ; } - } - - /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */ - RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | 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; - - ret = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5); - if(ret != HAL_OK) - { - while(1) { ; } - } -} - - /** * @brief On Error Handler on condition TRUE. * @param condition : Can be TRUE or FALSE @@ -144,7 +88,7 @@ static void OnError_Handler(uint32_t condition) * the configuration information for the LTDC. * @retval None */ -void HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef *hltdc) +void HAL_LTDC_LineEventCallback1(LTDC_HandleTypeDef *hltdc) { if(pend_buffer >= 0) { @@ -166,14 +110,31 @@ void HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef *hltdc) static void LCD_BriefDisplay(void) { BSP_LCD_Clear(LCD_COLOR_WHITE); + BSP_LCD_SetBackColor(LCD_COLOR_RED); + BSP_LCD_SetTextColor(LCD_COLOR_RED); + BSP_LCD_FillRect(0, 0, 800, 112); + BSP_LCD_SetBackColor(LCD_COLOR_BLUE); BSP_LCD_SetTextColor(LCD_COLOR_BLUE); - BSP_LCD_FillRect(0, 0, 800, 112); + BSP_LCD_FillRect(0, 112, 800, 112); + + BSP_LCD_SetBackColor(LCD_COLOR_GREEN); + BSP_LCD_SetTextColor(LCD_COLOR_GREEN); + BSP_LCD_FillRect(0, 224, 800, 112); + + BSP_LCD_SetBackColor(LCD_COLOR_CYAN); + BSP_LCD_SetTextColor(LCD_COLOR_CYAN); + BSP_LCD_FillRect(0, 336, 400, 144); + + BSP_LCD_SetBackColor(LCD_COLOR_MAGENTA); + BSP_LCD_SetTextColor(LCD_COLOR_MAGENTA); + BSP_LCD_FillRect(400, 336, 400, 144); + BSP_LCD_SetTextColor(LCD_COLOR_WHITE); - BSP_LCD_DisplayStringAtLine(1, (uint8_t *)" LCD_DSI_VideoMode_DoubleBuffering"); + //BSP_LCD_DisplayStringAtLine(1, (uint8_t *)" LCD_DSI_VideoMode_DoubleBuffering"); BSP_LCD_SetFont(&Font16); - BSP_LCD_DisplayStringAtLine(4, (uint8_t *)"This example shows how to display images on LCD DSI using two buffers"); - BSP_LCD_DisplayStringAtLine(5, (uint8_t *)"one for display and the other for draw "); + //BSP_LCD_DisplayStringAtLine(4, (uint8_t *)"This example shows how to display images on LCD DSI using two buffers"); + //BSP_LCD_DisplayStringAtLine(5, (uint8_t *)"one for display and the other for draw "); } @@ -188,12 +149,12 @@ static void LCD_BriefDisplay(void) static void CopyBuffer(uint32_t *pSrc, uint32_t *pDst, uint16_t x, uint16_t y, uint16_t xsize, uint16_t ysize) { - uint32_t destination = (uint32_t)pDst + (y * 800 + x) * 4; + uint32_t destination = (uint32_t)pDst + (y * 800 + x) * 2; uint32_t source = (uint32_t)pSrc; /*##-1- Configure the DMA2D Mode, Color Mode and output offset #############*/ hdma2d_eval.Init.Mode = DMA2D_M2M; - hdma2d_eval.Init.ColorMode = DMA2D_ARGB8888; + hdma2d_eval.Init.ColorMode = DMA2D_OUTPUT_RGB565; hdma2d_eval.Init.OutputOffset = 800 - xsize; /*##-2- DMA2D Callbacks Configuration ######################################*/ @@ -202,7 +163,7 @@ static void CopyBuffer(uint32_t *pSrc, uint32_t *pDst, uint16_t x, uint16_t y, u /*##-3- Foreground Configuration ###########################################*/ hdma2d_eval.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; hdma2d_eval.LayerCfg[1].InputAlpha = 0xFF; - hdma2d_eval.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d_eval.LayerCfg[1].InputColorMode = DMA2D_INPUT_RGB565; hdma2d_eval.LayerCfg[1].InputOffset = 0; hdma2d_eval.Instance = DMA2D; @@ -220,3 +181,51 @@ static void CopyBuffer(uint32_t *pSrc, uint32_t *pDst, uint16_t x, uint16_t y, u } } } + +/** + * @brief Converts a line to an ARGB8888 pixel format. + * @param pSrc: Pointer to source buffer + * @param pDst: Output color + * @param xSize: Buffer width + * @param ColorMode: Input color mode + * @retval None + */ +static void CopyImage(uint32_t *pSrc, uint32_t *pDst, uint16_t x, uint16_t y, uint16_t xsize, uint16_t ysize) +{ + uint32_t destination = ((uint32_t)pDst) + (y * 800 + x) * 2; + uint32_t source = (uint32_t)pSrc; + + /*##-1- Configure the DMA2D Mode, Color Mode and output offset #############*/ + hdma2d_eval.Init.Mode = DMA2D_M2M_BLEND; + hdma2d_eval.Init.ColorMode = DMA2D_OUTPUT_RGB565; + hdma2d_eval.Init.OutputOffset = 800 - xsize; + + /*##-2- DMA2D Callbacks Configuration ######################################*/ + hdma2d_eval.XferCpltCallback = NULL; + + hdma2d_eval.LayerCfg[0].InputOffset = 800 - xsize; + hdma2d_eval.LayerCfg[0].InputColorMode = DMA2D_INPUT_RGB565; + hdma2d_eval.LayerCfg[0].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d_eval.LayerCfg[0].InputAlpha = 0; + + /*##-3- Foreground Configuration ###########################################*/ + hdma2d_eval.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; + hdma2d_eval.LayerCfg[1].InputAlpha = 0xFF; + hdma2d_eval.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888; + hdma2d_eval.LayerCfg[1].InputOffset = 0; + + hdma2d_eval.Instance = DMA2D; + + /* DMA2D Initialization */ + if(HAL_DMA2D_Init(&hdma2d_eval) == HAL_OK) + { + if(HAL_DMA2D_ConfigLayer(&hdma2d_eval, 1) == HAL_OK && HAL_DMA2D_ConfigLayer(&hdma2d_eval, 0) == HAL_OK) + { + if (HAL_DMA2D_BlendingStart(&hdma2d_eval, source, destination, destination, xsize, ysize) == HAL_OK) + { + /* Polling For DMA transfer */ + HAL_DMA2D_PollForTransfer(&hdma2d_eval, 100); + } + } + } +} diff --git a/Core/Src/my_stm32f4xx_hal_msp.c b/Core/Src/my_stm32f4xx_hal_msp.c deleted file mode 100644 index 2deb592..0000000 --- a/Core/Src/my_stm32f4xx_hal_msp.c +++ /dev/null @@ -1,53 +0,0 @@ -/** - ****************************************************************************** - * @file LCD_DSI/LCD_DSI_VideoMode_DoubleBuffering/Src/stm32f4xx_hal_msp.c - * @author MCD Application Team - * @brief HAL MSP module. - ****************************************************************************** - * @attention - * - * Copyright (c) 2017 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "main.h" - -/** @addtogroup STM32F4xx_HAL_Examples - * @{ - */ - -/** @defgroup HAL_MSP - * @brief HAL MSP module. - * @{ - */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/** @defgroup HAL_MSP_Private_Functions - * @{ - */ - - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ diff --git a/Core/Src/my_stm32f4xx_it.c b/Core/Src/my_stm32f4xx_it.c deleted file mode 100644 index c5b6ea0..0000000 --- a/Core/Src/my_stm32f4xx_it.c +++ /dev/null @@ -1,166 +0,0 @@ -/** - ****************************************************************************** - * @file LCD_DSI/LCD_DSI_VideoMode_DoubleBuffering/Src/stm32f4xx_it.c - * @author MCD Application Team - * @brief Main Interrupt Service Routines. - * This file provides template for all exceptions handler and - * peripherals interrupt service routine. - ****************************************************************************** - * @attention - * - * Copyright (c) 2017 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "main.h" -#include "stm32f4xx_it.h" - -/** @addtogroup STM32F4xx_HAL_Examples - * @{ - */ - -/** @addtogroup LCD_DSI_Video_OneLayer - * @{ - */ - -/* Private typedef -----------------------------------------------------------*/ -extern LTDC_HandleTypeDef hltdc_eval; -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************/ -/* Cortex-M4 Processor Exceptions Handlers */ -/******************************************************************************/ - -/** - * @brief This function handles NMI exception. - * @param None - * @retval None - */ -void NMI_Handler(void) -{ -} - -/** - * @brief This function handles Hard Fault exception. - * @param None - * @retval None - */ -void HardFault_Handler(void) -{ - /* Go to infinite loop when Hard Fault exception occurs */ - while (1) - { - } -} - -/** - * @brief This function handles Memory Manage exception. - * @param None - * @retval None - */ -void MemManage_Handler(void) -{ - /* Go to infinite loop when Memory Manage exception occurs */ - while (1) - { - } -} - -/** - * @brief This function handles Bus Fault exception. - * @param None - * @retval None - */ -void BusFault_Handler(void) -{ - /* Go to infinite loop when Bus Fault exception occurs */ - while (1) - { - } -} - -/** - * @brief This function handles Usage Fault exception. - * @param None - * @retval None - */ -void UsageFault_Handler(void) -{ - /* Go to infinite loop when Usage Fault exception occurs */ - while (1) - { - } -} - -/** - * @brief This function handles SVCall exception. - * @param None - * @retval None - */ -void SVC_Handler(void) -{ -} - -/** - * @brief This function handles Debug Monitor exception. - * @param None - * @retval None - */ -void DebugMon_Handler(void) -{ -} - -/** - * @brief This function handles PendSVC exception. - * @param None - * @retval None - */ -void PendSV_Handler(void) -{ -} - -/** - * @brief This function handles SysTick Handler. - * @param None - * @retval None - */ -void SysTick_Handler(void) -{ - HAL_IncTick(); -} - -/******************************************************************************/ -/* STM32F4xx Peripherals Interrupt Handlers */ -/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */ -/* available peripheral interrupt handler's name please refer to the startup */ -/* file (startup_stm32f4xx.s). */ -/******************************************************************************/ - -/** - * @brief This function handles LTDC interrupt request. - * @param None - * @retval None - */ -void LTDC_IRQHandler(void) -{ - HAL_LTDC_IRQHandler(&hltdc_eval); -} - -/** - * @} - */ - -/** - * @} - */ diff --git a/Core/Src/my_system_stm32f4xx.c b/Core/Src/my_system_stm32f4xx.c deleted file mode 100644 index cf8ea07..0000000 --- a/Core/Src/my_system_stm32f4xx.c +++ /dev/null @@ -1,433 +0,0 @@ -/** - ****************************************************************************** - * @file system_stm32f4xx.c - * @author MCD Application Team - * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File. - * - * This file provides two functions and one global variable to be called from - * user application: - * - SystemInit(): This function is called at startup just after reset and - * before branch to main program. This call is made inside - * the "startup_stm32f4xx.s" file. - * - * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used - * by the user application to setup the SysTick - * timer or configure other parameters. - * - * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must - * be called whenever the core clock is changed - * during program execution. - * - * - ****************************************************************************** - * @attention - * - * Copyright (c) 2017 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ - -/** @addtogroup CMSIS - * @{ - */ - -/** @addtogroup stm32f4xx_system - * @{ - */ - -/** @addtogroup STM32F4xx_System_Private_Includes - * @{ - */ - - -#include "stm32f4xx.h" - -#if !defined (HSE_VALUE) -#if defined(USE_STM32469I_DISCO_REVA) - #define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */ -#else - #define HSE_VALUE ((uint32_t)8000000) /*!< Default value of the External oscillator in Hz */ -#endif /* USE_STM32469I_DISCO_REVA */ -#endif /* HSE_VALUE */ - -#if !defined (HSI_VALUE) - #define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/ -#endif /* HSI_VALUE */ - -/** - * @} - */ - -/** @addtogroup STM32F4xx_System_Private_TypesDefinitions - * @{ - */ - -/** - * @} - */ - -/** @addtogroup STM32F4xx_System_Private_Defines - * @{ - */ - -/************************* Miscellaneous Configuration ************************/ -/*!< Uncomment the following line if you need to use external SDRAM mounted - on DK as data memory */ -/* #define DATA_IN_ExtSDRAM */ - -/*!< Uncomment the following line if you need to relocate your vector Table in - Internal SRAM. */ -/* #define VECT_TAB_SRAM */ -#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field. - This value must be a multiple of 0x200. */ -/******************************************************************************/ - -/** - * @} - */ - -/** @addtogroup STM32F4xx_System_Private_Macros - * @{ - */ - -/** - * @} - */ - -/** @addtogroup STM32F4xx_System_Private_Variables - * @{ - */ - /* This variable is updated in three ways: - 1) by calling CMSIS function SystemCoreClockUpdate() - 2) by calling HAL API function HAL_RCC_GetHCLKFreq() - 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency - Note: If you use this function to configure the system clock; then there - is no need to call the 2 first functions listed above, since SystemCoreClock - variable is updated automatically. - */ -uint32_t SystemCoreClock = 16000000; -const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; -const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4}; -/** - * @} - */ - -/** @addtogroup STM32F4xx_System_Private_FunctionPrototypes - * @{ - */ - -#if defined (DATA_IN_ExtSDRAM) - static void SystemInit_ExtMemCtl(void); -#endif /* DATA_IN_ExtSDRAM */ - -/** - * @} - */ - -/** @addtogroup STM32F4xx_System_Private_Functions - * @{ - */ - -/** - * @brief Setup the microcontroller system - * Initialize the FPU setting, vector table location and External memory - * configuration. - * @param None - * @retval None - */ -void SystemInit(void) -{ - /* FPU settings ------------------------------------------------------------*/ - #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) - SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ - #endif - /* Reset the RCC clock configuration to the default reset state ------------*/ - /* Set HSION bit */ - RCC->CR |= (uint32_t)0x00000001; - - /* Reset CFGR register */ - RCC->CFGR = 0x00000000; - - /* Reset HSEON, CSSON and PLLON bits */ - RCC->CR &= (uint32_t)0xFEF6FFFF; - - /* Reset PLLCFGR register */ - RCC->PLLCFGR = 0x24003010; - - /* Reset HSEBYP bit */ - RCC->CR &= (uint32_t)0xFFFBFFFF; - - /* Disable all interrupts */ - RCC->CIR = 0x00000000; - -#if defined (DATA_IN_ExtSDRAM) - SystemInit_ExtMemCtl(); -#endif /* DATA_IN_ExtSDRAM */ - - /* Configure the Vector Table location add offset address ------------------*/ -#ifdef VECT_TAB_SRAM - SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ -#else - SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ -#endif -} - -/** - * @brief Update SystemCoreClock variable according to Clock Register Values. - * The SystemCoreClock variable contains the core clock (HCLK), it can - * be used by the user application to setup the SysTick timer or configure - * other parameters. - * - * @note Each time the core clock (HCLK) changes, this function must be called - * to update SystemCoreClock variable value. Otherwise, any configuration - * based on this variable will be incorrect. - * - * @note - The system frequency computed by this function is not the real - * frequency in the chip. It is calculated based on the predefined - * constant and the selected clock source: - * - * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) - * - * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) - * - * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) - * or HSI_VALUE(*) multiplied/divided by the PLL factors. - * - * (*) HSI_VALUE is a constant defined in stm32f4xx_hal_conf.h file (default value - * 16 MHz) but the real value may vary depending on the variations - * in voltage and temperature. - * - * (**) HSE_VALUE is a constant defined in stm32f4xx_hal_conf.h file (its value - * depends on the application requirements), user has to ensure that HSE_VALUE - * is same as the real frequency of the crystal used. Otherwise, this function - * may have wrong result. - * - * - The result of this function could be not correct when using fractional - * value for HSE crystal. - * - * @param None - * @retval None - */ -void SystemCoreClockUpdate(void) -{ - uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2; - - /* Get SYSCLK source -------------------------------------------------------*/ - tmp = RCC->CFGR & RCC_CFGR_SWS; - - switch (tmp) - { - case 0x00: /* HSI used as system clock source */ - SystemCoreClock = HSI_VALUE; - break; - case 0x04: /* HSE used as system clock source */ - SystemCoreClock = HSE_VALUE; - break; - case 0x08: /* PLL used as system clock source */ - - /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N - SYSCLK = PLL_VCO / PLL_P - */ - pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22; - pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; - - if (pllsource != 0) - { - /* HSE used as PLL clock source */ - pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); - } - else - { - /* HSI used as PLL clock source */ - pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); - } - - pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2; - SystemCoreClock = pllvco/pllp; - break; - default: - SystemCoreClock = HSI_VALUE; - break; - } - /* Compute HCLK frequency --------------------------------------------------*/ - /* Get HCLK prescaler */ - tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; - /* HCLK frequency */ - SystemCoreClock >>= tmp; -} - -#if defined (DATA_IN_ExtSDRAM) -/** - * @brief Setup the external memory controller. - * Called in startup_stm32f4xx.s before jump to main. - * This function configures the external memories (SRAM/SDRAM) - * This SRAM/SDRAM will be used as program data memory (including heap and stack). - * @param None - * @retval None - */ -void SystemInit_ExtMemCtl(void) -{ - register uint32_t tmpreg = 0, timeout = 0xFFFF; - register __IO uint32_t index; - - /* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH, and GPIOI interface - clock */ - RCC->AHB1ENR |= 0x000001FC; - - /* Connect PCx pins to FMC Alternate function */ - GPIOC->AFR[0] = 0x0000000C; - GPIOC->AFR[1] = 0x00000000; - /* Configure PCx pins in Alternate function mode */ - GPIOC->MODER = 0x00000002; - /* Configure PCx pins speed to 100 MHz */ - GPIOC->OSPEEDR = 0x00000003; - /* Configure PCx pins Output type to push-pull */ - GPIOC->OTYPER = 0x00000000; - /* No pull-up, pull-down for PCx pins */ - GPIOC->PUPDR = 0x00000000; - - /* Connect PDx pins to FMC Alternate function */ - GPIOD->AFR[0] = 0x000000CC; - GPIOD->AFR[1] = 0xCC000CCC; - /* Configure PDx pins in Alternate function mode */ - GPIOD->MODER = 0xA02A000A; - /* Configure PDx pins speed to 100 MHz */ - GPIOD->OSPEEDR = 0xF03F000F; - /* Configure PDx pins Output type to push-pull */ - GPIOD->OTYPER = 0x00000000; - /* No pull-up, pull-down for PDx pins */ - GPIOD->PUPDR = 0x00000000; - - /* Connect PEx pins to FMC Alternate function */ - GPIOE->AFR[0] = 0xC00000CC; - GPIOE->AFR[1] = 0xCCCCCCCC; - /* Configure PEx pins in Alternate function mode */ - GPIOE->MODER = 0xAAAA800A; - /* Configure PEx pins speed to 100 MHz */ - GPIOE->OSPEEDR = 0xFFFFC00F; - /* Configure PEx pins Output type to push-pull */ - GPIOE->OTYPER = 0x00000000; - /* No pull-up, pull-down for PEx pins */ - GPIOE->PUPDR = 0x00000000; - - /* Connect PFx pins to FMC Alternate function */ - GPIOF->AFR[0] = 0x00CCCCCC; - GPIOF->AFR[1] = 0xCCCCC000; - /* Configure PFx pins in Alternate function mode */ - GPIOF->MODER = 0xAA800AAA; - /* Configure PFx pins speed to 100 MHz */ - GPIOF->OSPEEDR = 0xFFC00FFF; - /* Configure PFx pins Output type to push-pull */ - GPIOF->OTYPER = 0x00000000; - /* No pull-up, pull-down for PFx pins */ - GPIOF->PUPDR = 0x00000000; - - /* Connect PGx pins to FMC Alternate function */ - GPIOG->AFR[0] = 0x00CC00CC; - GPIOG->AFR[1] = 0xC000000C; - /* Configure PGx pins in Alternate function mode */ - GPIOG->MODER = 0x80020A0A; - /* Configure PGx pins speed to 100 MHz */ - GPIOG->OSPEEDR = 0xC0030F0F; - /* Configure PGx pins Output type to push-pull */ - GPIOG->OTYPER = 0x00000000; - /* No pull-up, pull-down for PGx pins */ - GPIOG->PUPDR = 0x00000000; - - /* Connect PHx pins to FMC Alternate function */ - GPIOH->AFR[0] = 0x0000CC00; - GPIOH->AFR[1] = 0xCCCCCCCC; - /* Configure PHx pins in Alternate function mode */ - GPIOH->MODER = 0xAAAA00A0; - /* Configure PHx pins speed to 100 MHz */ - GPIOH->OSPEEDR = 0xFFFF00F0; - /* Configure PHx pins Output type to push-pull */ - GPIOH->OTYPER = 0x00000000; - /* No pull-up, pull-down for PHx pins */ - GPIOH->PUPDR = 0x00000000; - - /* Connect PIx pins to FMC Alternate function */ - GPIOI->AFR[0] = 0xCCCCCCCC; - GPIOI->AFR[1] = 0x00000CC0; - /* Configure PIx pins in Alternate function mode */ - GPIOI->MODER = 0x0028AAAA; - /* Configure PIx pins speed to 100 MHz */ - GPIOI->OSPEEDR = 0x003CFFFF; - /* Configure PIx pins Output type to push-pull */ - GPIOI->OTYPER = 0x00000000; - /* No pull-up, pull-down for PIx pins */ - GPIOI->PUPDR = 0x00000000; - - /* FMC Configuration */ - /* Enable the FMC interface clock */ - RCC->AHB3ENR |= 0x00000001; - - /* Configure and enable SDRAM bank2 */ - FMC_Bank5_6->SDCR[0] = 0x000019E4; - FMC_Bank5_6->SDTR[0] = 0x01115351; - - /* SDRAM initialization sequence */ - /* Clock enable command */ - FMC_Bank5_6->SDCMR = 0x00000011; - tmpreg = FMC_Bank5_6->SDSR & 0x00000020; - while((tmpreg != 0) && (timeout-- > 0)) - { - tmpreg = FMC_Bank5_6->SDSR & 0x00000020; - } - - /* Delay */ - for (index = 0; index<1000; index++); - - /* PALL command */ - FMC_Bank5_6->SDCMR = 0x00000012; - tmpreg = FMC_Bank5_6->SDSR & 0x00000020; - timeout = 0xFFFF; - while((tmpreg != 0) && (timeout-- > 0)) - { - tmpreg = FMC_Bank5_6->SDSR & 0x00000020; - } - - /* Auto refresh command */ - FMC_Bank5_6->SDCMR = 0x000000F3; - tmpreg = FMC_Bank5_6->SDSR & 0x00000020; - timeout = 0xFFFF; - while((tmpreg != 0) && (timeout-- > 0)) - { - tmpreg = FMC_Bank5_6->SDSR & 0x00000020; - } - - /* MRD register program */ - FMC_Bank5_6->SDCMR = 0x00046014; - tmpreg = FMC_Bank5_6->SDSR & 0x00000020; - timeout = 0xFFFF; - while((tmpreg != 0) && (timeout-- > 0)) - { - tmpreg = FMC_Bank5_6->SDSR & 0x00000020; - } - - /* Set refresh count */ - tmpreg = FMC_Bank5_6->SDRTR; - FMC_Bank5_6->SDRTR = (tmpreg | (0x0000056A<<1)); - - /* Disable write protection */ - tmpreg = FMC_Bank5_6->SDCR[0]; - FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF); -} -#endif /* DATA_IN_ExtSDRAM */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ diff --git a/Core/Src/stm32f4xx_it.c b/Core/Src/stm32f4xx_it.c index 3031af8..da18ecf 100644 --- a/Core/Src/stm32f4xx_it.c +++ b/Core/Src/stm32f4xx_it.c @@ -56,7 +56,7 @@ extern DMA2D_HandleTypeDef hdma2d_eval; /* USER CODE END 0 */ /* External variables --------------------------------------------------------*/ -extern HCD_HandleTypeDef hhcd_USB_OTG_FS; +extern PCD_HandleTypeDef hpcd_USB_OTG_FS; extern DMA2D_HandleTypeDef hdma2d; extern DSI_HandleTypeDef hdsi; extern LTDC_HandleTypeDef hltdc; @@ -172,6 +172,7 @@ void TIM6_DAC_IRQHandler(void) /* USER CODE BEGIN TIM6_DAC_IRQn 0 */ /* USER CODE END TIM6_DAC_IRQn 0 */ + HAL_TIM_IRQHandler(&htim6); /* USER CODE BEGIN TIM6_DAC_IRQn 1 */ /* USER CODE END TIM6_DAC_IRQn 1 */ @@ -185,7 +186,7 @@ void OTG_FS_IRQHandler(void) /* USER CODE BEGIN OTG_FS_IRQn 0 */ /* USER CODE END OTG_FS_IRQn 0 */ - HAL_HCD_IRQHandler(&hhcd_USB_OTG_FS); + HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS); /* USER CODE BEGIN OTG_FS_IRQn 1 */ /* USER CODE END OTG_FS_IRQn 1 */ diff --git a/Drivers/BSP/STM32469I-Discovery/stm32469i_discovery_lcd.c b/Drivers/BSP/STM32469I-Discovery/stm32469i_discovery_lcd.c index 6a4515b..e3d8496 100644 --- a/Drivers/BSP/STM32469I-Discovery/stm32469i_discovery_lcd.c +++ b/Drivers/BSP/STM32469I-Discovery/stm32469i_discovery_lcd.c @@ -485,7 +485,7 @@ void BSP_LCD_LayerDefaultInit(uint16_t LayerIndex, uint32_t FB_Address) Layercfg.WindowX1 = BSP_LCD_GetXSize(); Layercfg.WindowY0 = 0; Layercfg.WindowY1 = BSP_LCD_GetYSize(); - Layercfg.PixelFormat = LTDC_PIXEL_FORMAT_ARGB8888; + Layercfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; Layercfg.FBStartAdress = FB_Address; Layercfg.Alpha = 255; Layercfg.Alpha0 = 0; @@ -1110,7 +1110,7 @@ void BSP_LCD_FillRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Hei BSP_LCD_SetTextColor(DrawProp[ActiveLayer].TextColor); /* Get the rectangle start address */ - Xaddress = (hltdc_eval.LayerCfg[ActiveLayer].FBStartAdress) + 4*(BSP_LCD_GetXSize()*Ypos + Xpos); + Xaddress = (hltdc_eval.LayerCfg[ActiveLayer].FBStartAdress) + 2*(BSP_LCD_GetXSize()*Ypos + Xpos); /* Fill the rectangle */ LL_FillBuffer(ActiveLayer, (uint32_t *)Xaddress, Width, Height, (BSP_LCD_GetXSize() - Width), DrawProp[ActiveLayer].TextColor); @@ -1577,7 +1577,7 @@ static void LL_FillBuffer(uint32_t LayerIndex, void *pDst, uint32_t xSize, uint3 { /* Register to memory mode with ARGB8888 as color Mode */ hdma2d_eval.Init.Mode = DMA2D_R2M; - hdma2d_eval.Init.ColorMode = DMA2D_ARGB8888; + hdma2d_eval.Init.ColorMode = DMA2D_OUTPUT_RGB565; hdma2d_eval.Init.OutputOffset = OffLine; hdma2d_eval.Instance = DMA2D; diff --git a/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_hcd.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_hcd.h deleted file mode 100644 index 31332a7..0000000 --- a/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_hcd.h +++ /dev/null @@ -1,316 +0,0 @@ -/** - ****************************************************************************** - * @file stm32f4xx_hal_hcd.h - * @author MCD Application Team - * @brief Header file of HCD HAL module. - ****************************************************************************** - * @attention - * - * Copyright (c) 2016 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef STM32F4xx_HAL_HCD_H -#define STM32F4xx_HAL_HCD_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f4xx_ll_usb.h" - -#if defined (USB_OTG_FS) || defined (USB_OTG_HS) -/** @addtogroup STM32F4xx_HAL_Driver - * @{ - */ - -/** @addtogroup HCD HCD - * @{ - */ - -/* Exported types ------------------------------------------------------------*/ -/** @defgroup HCD_Exported_Types HCD Exported Types - * @{ - */ - -/** @defgroup HCD_Exported_Types_Group1 HCD State Structure definition - * @{ - */ -typedef enum -{ - HAL_HCD_STATE_RESET = 0x00, - HAL_HCD_STATE_READY = 0x01, - HAL_HCD_STATE_ERROR = 0x02, - HAL_HCD_STATE_BUSY = 0x03, - HAL_HCD_STATE_TIMEOUT = 0x04 -} HCD_StateTypeDef; - -typedef USB_OTG_GlobalTypeDef HCD_TypeDef; -typedef USB_OTG_CfgTypeDef HCD_InitTypeDef; -typedef USB_OTG_HCTypeDef HCD_HCTypeDef; -typedef USB_OTG_URBStateTypeDef HCD_URBStateTypeDef; -typedef USB_OTG_HCStateTypeDef HCD_HCStateTypeDef; -/** - * @} - */ - -/** @defgroup HCD_Exported_Types_Group2 HCD Handle Structure definition - * @{ - */ -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) -typedef struct __HCD_HandleTypeDef -#else -typedef struct -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ -{ - HCD_TypeDef *Instance; /*!< Register base address */ - HCD_InitTypeDef Init; /*!< HCD required parameters */ - HCD_HCTypeDef hc[16]; /*!< Host channels parameters */ - HAL_LockTypeDef Lock; /*!< HCD peripheral status */ - __IO HCD_StateTypeDef State; /*!< HCD communication state */ - __IO uint32_t ErrorCode; /*!< HCD Error code */ - void *pData; /*!< Pointer Stack Handler */ -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) - void (* SOFCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD SOF callback */ - void (* ConnectCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Connect callback */ - void (* DisconnectCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Disconnect callback */ - void (* PortEnabledCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Port Enable callback */ - void (* PortDisabledCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Port Disable callback */ - void (* HC_NotifyURBChangeCallback)(struct __HCD_HandleTypeDef *hhcd, uint8_t chnum, - HCD_URBStateTypeDef urb_state); /*!< USB OTG HCD Host Channel Notify URB Change callback */ - - void (* MspInitCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Msp Init callback */ - void (* MspDeInitCallback)(struct __HCD_HandleTypeDef *hhcd); /*!< USB OTG HCD Msp DeInit callback */ -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ -} HCD_HandleTypeDef; -/** - * @} - */ - -/** - * @} - */ - -/* Exported constants --------------------------------------------------------*/ -/** @defgroup HCD_Exported_Constants HCD Exported Constants - * @{ - */ - -/** @defgroup HCD_Speed HCD Speed - * @{ - */ -#define HCD_SPEED_HIGH USBH_HS_SPEED -#define HCD_SPEED_FULL USBH_FSLS_SPEED -#define HCD_SPEED_LOW USBH_FSLS_SPEED -/** - * @} - */ - -/** @defgroup HCD_Device_Speed HCD Device Speed - * @{ - */ -#define HCD_DEVICE_SPEED_HIGH 0U -#define HCD_DEVICE_SPEED_FULL 1U -#define HCD_DEVICE_SPEED_LOW 2U -/** - * @} - */ - -/** @defgroup HCD_PHY_Module HCD PHY Module - * @{ - */ -#define HCD_PHY_ULPI 1U -#define HCD_PHY_EMBEDDED 2U -/** - * @} - */ - -/** @defgroup HCD_Error_Code_definition HCD Error Code definition - * @brief HCD Error Code definition - * @{ - */ -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) -#define HAL_HCD_ERROR_INVALID_CALLBACK (0x00000010U) /*!< Invalid Callback error */ -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ - -/** - * @} - */ - -/** - * @} - */ - -/* Exported macro ------------------------------------------------------------*/ -/** @defgroup HCD_Exported_Macros HCD Exported Macros - * @brief macros to handle interrupts and specific clock configurations - * @{ - */ -#define __HAL_HCD_ENABLE(__HANDLE__) (void)USB_EnableGlobalInt ((__HANDLE__)->Instance) -#define __HAL_HCD_DISABLE(__HANDLE__) (void)USB_DisableGlobalInt ((__HANDLE__)->Instance) - -#define __HAL_HCD_GET_FLAG(__HANDLE__, __INTERRUPT__) ((USB_ReadInterrupts((__HANDLE__)->Instance)\ - & (__INTERRUPT__)) == (__INTERRUPT__)) -#define __HAL_HCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->GINTSTS) = (__INTERRUPT__)) -#define __HAL_HCD_IS_INVALID_INTERRUPT(__HANDLE__) (USB_ReadInterrupts((__HANDLE__)->Instance) == 0U) - -#define __HAL_HCD_CLEAR_HC_INT(chnum, __INTERRUPT__) (USBx_HC(chnum)->HCINT = (__INTERRUPT__)) -#define __HAL_HCD_MASK_HALT_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINTMSK_CHHM) -#define __HAL_HCD_UNMASK_HALT_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_CHHM) -#define __HAL_HCD_MASK_ACK_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK &= ~USB_OTG_HCINTMSK_ACKM) -#define __HAL_HCD_UNMASK_ACK_HC_INT(chnum) (USBx_HC(chnum)->HCINTMSK |= USB_OTG_HCINTMSK_ACKM) -/** - * @} - */ - -/* Exported functions --------------------------------------------------------*/ -/** @addtogroup HCD_Exported_Functions HCD Exported Functions - * @{ - */ - -/** @defgroup HCD_Exported_Functions_Group1 Initialization and de-initialization functions - * @{ - */ -HAL_StatusTypeDef HAL_HCD_Init(HCD_HandleTypeDef *hhcd); -HAL_StatusTypeDef HAL_HCD_DeInit(HCD_HandleTypeDef *hhcd); -HAL_StatusTypeDef HAL_HCD_HC_Init(HCD_HandleTypeDef *hhcd, uint8_t ch_num, - uint8_t epnum, uint8_t dev_address, - uint8_t speed, uint8_t ep_type, uint16_t mps); - -HAL_StatusTypeDef HAL_HCD_HC_Halt(HCD_HandleTypeDef *hhcd, uint8_t ch_num); -void HAL_HCD_MspInit(HCD_HandleTypeDef *hhcd); -void HAL_HCD_MspDeInit(HCD_HandleTypeDef *hhcd); - -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) -/** @defgroup HAL_HCD_Callback_ID_enumeration_definition HAL USB OTG HCD Callback ID enumeration definition - * @brief HAL USB OTG HCD Callback ID enumeration definition - * @{ - */ -typedef enum -{ - HAL_HCD_SOF_CB_ID = 0x01, /*!< USB HCD SOF callback ID */ - HAL_HCD_CONNECT_CB_ID = 0x02, /*!< USB HCD Connect callback ID */ - HAL_HCD_DISCONNECT_CB_ID = 0x03, /*!< USB HCD Disconnect callback ID */ - HAL_HCD_PORT_ENABLED_CB_ID = 0x04, /*!< USB HCD Port Enable callback ID */ - HAL_HCD_PORT_DISABLED_CB_ID = 0x05, /*!< USB HCD Port Disable callback ID */ - - HAL_HCD_MSPINIT_CB_ID = 0x06, /*!< USB HCD MspInit callback ID */ - HAL_HCD_MSPDEINIT_CB_ID = 0x07 /*!< USB HCD MspDeInit callback ID */ - -} HAL_HCD_CallbackIDTypeDef; -/** - * @} - */ - -/** @defgroup HAL_HCD_Callback_pointer_definition HAL USB OTG HCD Callback pointer definition - * @brief HAL USB OTG HCD Callback pointer definition - * @{ - */ - -typedef void (*pHCD_CallbackTypeDef)(HCD_HandleTypeDef *hhcd); /*!< pointer to a common USB OTG HCD callback function */ -typedef void (*pHCD_HC_NotifyURBChangeCallbackTypeDef)(HCD_HandleTypeDef *hhcd, - uint8_t epnum, - HCD_URBStateTypeDef urb_state); /*!< pointer to USB OTG HCD host channel callback */ -/** - * @} - */ - -HAL_StatusTypeDef HAL_HCD_RegisterCallback(HCD_HandleTypeDef *hhcd, - HAL_HCD_CallbackIDTypeDef CallbackID, - pHCD_CallbackTypeDef pCallback); - -HAL_StatusTypeDef HAL_HCD_UnRegisterCallback(HCD_HandleTypeDef *hhcd, - HAL_HCD_CallbackIDTypeDef CallbackID); - -HAL_StatusTypeDef HAL_HCD_RegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd, - pHCD_HC_NotifyURBChangeCallbackTypeDef pCallback); - -HAL_StatusTypeDef HAL_HCD_UnRegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd); -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ -/** - * @} - */ - -/* I/O operation functions ***************************************************/ -/** @addtogroup HCD_Exported_Functions_Group2 Input and Output operation functions - * @{ - */ -HAL_StatusTypeDef HAL_HCD_HC_SubmitRequest(HCD_HandleTypeDef *hhcd, uint8_t ch_num, - uint8_t direction, uint8_t ep_type, - uint8_t token, uint8_t *pbuff, - uint16_t length, uint8_t do_ping); - -/* Non-Blocking mode: Interrupt */ -void HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd); -void HAL_HCD_WKUP_IRQHandler(HCD_HandleTypeDef *hhcd); -void HAL_HCD_SOF_Callback(HCD_HandleTypeDef *hhcd); -void HAL_HCD_Connect_Callback(HCD_HandleTypeDef *hhcd); -void HAL_HCD_Disconnect_Callback(HCD_HandleTypeDef *hhcd); -void HAL_HCD_PortEnabled_Callback(HCD_HandleTypeDef *hhcd); -void HAL_HCD_PortDisabled_Callback(HCD_HandleTypeDef *hhcd); -void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, uint8_t chnum, - HCD_URBStateTypeDef urb_state); -/** - * @} - */ - -/* Peripheral Control functions **********************************************/ -/** @addtogroup HCD_Exported_Functions_Group3 Peripheral Control functions - * @{ - */ -HAL_StatusTypeDef HAL_HCD_ResetPort(HCD_HandleTypeDef *hhcd); -HAL_StatusTypeDef HAL_HCD_Start(HCD_HandleTypeDef *hhcd); -HAL_StatusTypeDef HAL_HCD_Stop(HCD_HandleTypeDef *hhcd); -/** - * @} - */ - -/* Peripheral State functions ************************************************/ -/** @addtogroup HCD_Exported_Functions_Group4 Peripheral State functions - * @{ - */ -HCD_StateTypeDef HAL_HCD_GetState(HCD_HandleTypeDef *hhcd); -HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef *hhcd, uint8_t chnum); -HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef *hhcd, uint8_t chnum); -uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef *hhcd, uint8_t chnum); -uint32_t HAL_HCD_GetCurrentFrame(HCD_HandleTypeDef *hhcd); -uint32_t HAL_HCD_GetCurrentSpeed(HCD_HandleTypeDef *hhcd); - -/** - * @} - */ - -/** - * @} - */ - -/* Private macros ------------------------------------------------------------*/ -/** @defgroup HCD_Private_Macros HCD Private Macros - * @{ - */ -/** - * @} - */ -/* Private functions prototypes ----------------------------------------------*/ - -/** - * @} - */ -/** - * @} - */ -#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ - -#ifdef __cplusplus -} -#endif - -#endif /* STM32F4xx_HAL_HCD_H */ diff --git a/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h new file mode 100644 index 0000000..a9f0c5b --- /dev/null +++ b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd.h @@ -0,0 +1,459 @@ +/** + ****************************************************************************** + * @file stm32f4xx_hal_pcd.h + * @author MCD Application Team + * @brief Header file of PCD HAL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F4xx_HAL_PCD_H +#define STM32F4xx_HAL_PCD_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f4xx_ll_usb.h" + +#if defined (USB_OTG_FS) || defined (USB_OTG_HS) + +/** @addtogroup STM32F4xx_HAL_Driver + * @{ + */ + +/** @addtogroup PCD + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup PCD_Exported_Types PCD Exported Types + * @{ + */ + +/** + * @brief PCD State structure definition + */ +typedef enum +{ + HAL_PCD_STATE_RESET = 0x00, + HAL_PCD_STATE_READY = 0x01, + HAL_PCD_STATE_ERROR = 0x02, + HAL_PCD_STATE_BUSY = 0x03, + HAL_PCD_STATE_TIMEOUT = 0x04 +} PCD_StateTypeDef; + +/* Device LPM suspend state */ +typedef enum +{ + LPM_L0 = 0x00, /* on */ + LPM_L1 = 0x01, /* LPM L1 sleep */ + LPM_L2 = 0x02, /* suspend */ + LPM_L3 = 0x03, /* off */ +} PCD_LPM_StateTypeDef; + +typedef enum +{ + PCD_LPM_L0_ACTIVE = 0x00, /* on */ + PCD_LPM_L1_ACTIVE = 0x01, /* LPM L1 sleep */ +} PCD_LPM_MsgTypeDef; + +typedef enum +{ + PCD_BCD_ERROR = 0xFF, + PCD_BCD_CONTACT_DETECTION = 0xFE, + PCD_BCD_STD_DOWNSTREAM_PORT = 0xFD, + PCD_BCD_CHARGING_DOWNSTREAM_PORT = 0xFC, + PCD_BCD_DEDICATED_CHARGING_PORT = 0xFB, + PCD_BCD_DISCOVERY_COMPLETED = 0x00, + +} PCD_BCD_MsgTypeDef; + +#if defined (USB_OTG_FS) || defined (USB_OTG_HS) +typedef USB_OTG_GlobalTypeDef PCD_TypeDef; +typedef USB_OTG_CfgTypeDef PCD_InitTypeDef; +typedef USB_OTG_EPTypeDef PCD_EPTypeDef; +#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ + +/** + * @brief PCD Handle Structure definition + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +typedef struct __PCD_HandleTypeDef +#else +typedef struct +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + PCD_TypeDef *Instance; /*!< Register base address */ + PCD_InitTypeDef Init; /*!< PCD required parameters */ + __IO uint8_t USB_Address; /*!< USB Address */ + PCD_EPTypeDef IN_ep[16]; /*!< IN endpoint parameters */ + PCD_EPTypeDef OUT_ep[16]; /*!< OUT endpoint parameters */ + HAL_LockTypeDef Lock; /*!< PCD peripheral status */ + __IO PCD_StateTypeDef State; /*!< PCD communication state */ + __IO uint32_t ErrorCode; /*!< PCD Error code */ + uint32_t Setup[12]; /*!< Setup packet buffer */ + PCD_LPM_StateTypeDef LPM_State; /*!< LPM State */ + uint32_t BESL; + uint32_t FrameNumber; /*!< Store Current Frame number */ + + + uint32_t lpm_active; /*!< Enable or disable the Link Power Management . + This parameter can be set to ENABLE or DISABLE */ + + uint32_t battery_charging_active; /*!< Enable or disable Battery charging. + This parameter can be set to ENABLE or DISABLE */ + void *pData; /*!< Pointer to upper stack Handler */ + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + void (* SOFCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD SOF callback */ + void (* SetupStageCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Setup Stage callback */ + void (* ResetCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Reset callback */ + void (* SuspendCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Suspend callback */ + void (* ResumeCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Resume callback */ + void (* ConnectCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Connect callback */ + void (* DisconnectCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Disconnect callback */ + + void (* DataOutStageCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD Data OUT Stage callback */ + void (* DataInStageCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD Data IN Stage callback */ + void (* ISOOUTIncompleteCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD ISO OUT Incomplete callback */ + void (* ISOINIncompleteCallback)(struct __PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< USB OTG PCD ISO IN Incomplete callback */ + void (* BCDCallback)(struct __PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg); /*!< USB OTG PCD BCD callback */ + void (* LPMCallback)(struct __PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg); /*!< USB OTG PCD LPM callback */ + + void (* MspInitCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Msp Init callback */ + void (* MspDeInitCallback)(struct __PCD_HandleTypeDef *hpcd); /*!< USB OTG PCD Msp DeInit callback */ +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +} PCD_HandleTypeDef; + +/** + * @} + */ + +/* Include PCD HAL Extended module */ +#include "stm32f4xx_hal_pcd_ex.h" + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup PCD_Exported_Constants PCD Exported Constants + * @{ + */ + +/** @defgroup PCD_Speed PCD Speed + * @{ + */ +#define PCD_SPEED_HIGH USBD_HS_SPEED +#define PCD_SPEED_HIGH_IN_FULL USBD_HSINFS_SPEED +#define PCD_SPEED_FULL USBD_FS_SPEED +/** + * @} + */ + +/** @defgroup PCD_PHY_Module PCD PHY Module + * @{ + */ +#define PCD_PHY_ULPI 1U +#define PCD_PHY_EMBEDDED 2U +#define PCD_PHY_UTMI 3U +/** + * @} + */ + +/** @defgroup PCD_Error_Code_definition PCD Error Code definition + * @brief PCD Error Code definition + * @{ + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +#define HAL_PCD_ERROR_INVALID_CALLBACK (0x00000010U) /*!< Invalid Callback error */ +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macros -----------------------------------------------------------*/ +/** @defgroup PCD_Exported_Macros PCD Exported Macros + * @brief macros to handle interrupts and specific clock configurations + * @{ + */ +#if defined (USB_OTG_FS) || defined (USB_OTG_HS) +#define __HAL_PCD_ENABLE(__HANDLE__) (void)USB_EnableGlobalInt ((__HANDLE__)->Instance) +#define __HAL_PCD_DISABLE(__HANDLE__) (void)USB_DisableGlobalInt ((__HANDLE__)->Instance) + +#define __HAL_PCD_GET_FLAG(__HANDLE__, __INTERRUPT__) \ + ((USB_ReadInterrupts((__HANDLE__)->Instance) & (__INTERRUPT__)) == (__INTERRUPT__)) + +#define __HAL_PCD_CLEAR_FLAG(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->GINTSTS) &= (__INTERRUPT__)) +#define __HAL_PCD_IS_INVALID_INTERRUPT(__HANDLE__) (USB_ReadInterrupts((__HANDLE__)->Instance) == 0U) + +#define __HAL_PCD_UNGATE_PHYCLOCK(__HANDLE__) \ + *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) &= ~(USB_OTG_PCGCCTL_STOPCLK) + +#define __HAL_PCD_GATE_PHYCLOCK(__HANDLE__) \ + *(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE) |= USB_OTG_PCGCCTL_STOPCLK + +#define __HAL_PCD_IS_PHY_SUSPENDED(__HANDLE__) \ + ((*(__IO uint32_t *)((uint32_t)((__HANDLE__)->Instance) + USB_OTG_PCGCCTL_BASE)) & 0x10U) + +#define __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= (USB_OTG_HS_WAKEUP_EXTI_LINE) +#define __HAL_USB_OTG_HS_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE) +#define __HAL_USB_OTG_HS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_HS_WAKEUP_EXTI_LINE) +#define __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = (USB_OTG_HS_WAKEUP_EXTI_LINE) + +#define __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE() \ + do { \ + EXTI->FTSR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE); \ + EXTI->RTSR |= USB_OTG_HS_WAKEUP_EXTI_LINE; \ + } while(0U) +#define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= USB_OTG_FS_WAKEUP_EXTI_LINE +#define __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE) +#define __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_FS_WAKEUP_EXTI_LINE) +#define __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = USB_OTG_FS_WAKEUP_EXTI_LINE + +#define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE() \ + do { \ + EXTI->FTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE); \ + EXTI->RTSR |= USB_OTG_FS_WAKEUP_EXTI_LINE; \ + } while(0U) +#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ + + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup PCD_Exported_Functions PCD Exported Functions + * @{ + */ + +/* Initialization/de-initialization functions ********************************/ +/** @addtogroup PCD_Exported_Functions_Group1 Initialization and de-initialization functions + * @{ + */ +HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd); +HAL_StatusTypeDef HAL_PCD_DeInit(PCD_HandleTypeDef *hpcd); +void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd); +void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd); + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +/** @defgroup HAL_PCD_Callback_ID_enumeration_definition HAL USB OTG PCD Callback ID enumeration definition + * @brief HAL USB OTG PCD Callback ID enumeration definition + * @{ + */ +typedef enum +{ + HAL_PCD_SOF_CB_ID = 0x01, /*!< USB PCD SOF callback ID */ + HAL_PCD_SETUPSTAGE_CB_ID = 0x02, /*!< USB PCD Setup Stage callback ID */ + HAL_PCD_RESET_CB_ID = 0x03, /*!< USB PCD Reset callback ID */ + HAL_PCD_SUSPEND_CB_ID = 0x04, /*!< USB PCD Suspend callback ID */ + HAL_PCD_RESUME_CB_ID = 0x05, /*!< USB PCD Resume callback ID */ + HAL_PCD_CONNECT_CB_ID = 0x06, /*!< USB PCD Connect callback ID */ + HAL_PCD_DISCONNECT_CB_ID = 0x07, /*!< USB PCD Disconnect callback ID */ + + HAL_PCD_MSPINIT_CB_ID = 0x08, /*!< USB PCD MspInit callback ID */ + HAL_PCD_MSPDEINIT_CB_ID = 0x09 /*!< USB PCD MspDeInit callback ID */ + +} HAL_PCD_CallbackIDTypeDef; +/** + * @} + */ + +/** @defgroup HAL_PCD_Callback_pointer_definition HAL USB OTG PCD Callback pointer definition + * @brief HAL USB OTG PCD Callback pointer definition + * @{ + */ + +typedef void (*pPCD_CallbackTypeDef)(PCD_HandleTypeDef *hpcd); /*!< pointer to a common USB OTG PCD callback function */ +typedef void (*pPCD_DataOutStageCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD Data OUT Stage callback */ +typedef void (*pPCD_DataInStageCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD Data IN Stage callback */ +typedef void (*pPCD_IsoOutIncpltCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD ISO OUT Incomplete callback */ +typedef void (*pPCD_IsoInIncpltCallbackTypeDef)(PCD_HandleTypeDef *hpcd, uint8_t epnum); /*!< pointer to USB OTG PCD ISO IN Incomplete callback */ +typedef void (*pPCD_LpmCallbackTypeDef)(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg); /*!< pointer to USB OTG PCD LPM callback */ +typedef void (*pPCD_BcdCallbackTypeDef)(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg); /*!< pointer to USB OTG PCD BCD callback */ + +/** + * @} + */ + +HAL_StatusTypeDef HAL_PCD_RegisterCallback(PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef CallbackID, + pPCD_CallbackTypeDef pCallback); + +HAL_StatusTypeDef HAL_PCD_UnRegisterCallback(PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef CallbackID); + +HAL_StatusTypeDef HAL_PCD_RegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd, + pPCD_DataOutStageCallbackTypeDef pCallback); + +HAL_StatusTypeDef HAL_PCD_UnRegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd); + +HAL_StatusTypeDef HAL_PCD_RegisterDataInStageCallback(PCD_HandleTypeDef *hpcd, + pPCD_DataInStageCallbackTypeDef pCallback); + +HAL_StatusTypeDef HAL_PCD_UnRegisterDataInStageCallback(PCD_HandleTypeDef *hpcd); + +HAL_StatusTypeDef HAL_PCD_RegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd, + pPCD_IsoOutIncpltCallbackTypeDef pCallback); + +HAL_StatusTypeDef HAL_PCD_UnRegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd); + +HAL_StatusTypeDef HAL_PCD_RegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd, + pPCD_IsoInIncpltCallbackTypeDef pCallback); + +HAL_StatusTypeDef HAL_PCD_UnRegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd); + +HAL_StatusTypeDef HAL_PCD_RegisterBcdCallback(PCD_HandleTypeDef *hpcd, pPCD_BcdCallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_PCD_UnRegisterBcdCallback(PCD_HandleTypeDef *hpcd); + +HAL_StatusTypeDef HAL_PCD_RegisterLpmCallback(PCD_HandleTypeDef *hpcd, pPCD_LpmCallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_PCD_UnRegisterLpmCallback(PCD_HandleTypeDef *hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +/** + * @} + */ + +/* I/O operation functions ***************************************************/ +/* Non-Blocking mode: Interrupt */ +/** @addtogroup PCD_Exported_Functions_Group2 Input and Output operation functions + * @{ + */ +HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd); +HAL_StatusTypeDef HAL_PCD_Stop(PCD_HandleTypeDef *hpcd); +void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd); +void HAL_PCD_WKUP_IRQHandler(PCD_HandleTypeDef *hpcd); + +void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd); +void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd); +void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd); +void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd); +void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd); +void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd); +void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd); + +void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); +void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); +void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); +void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum); +/** + * @} + */ + +/* Peripheral Control functions **********************************************/ +/** @addtogroup PCD_Exported_Functions_Group3 Peripheral Control functions + * @{ + */ +HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd); +HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd); +HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address); +HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint16_t ep_mps, uint8_t ep_type); +HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); +HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len); +HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len); +HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); +HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); +HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); +HAL_StatusTypeDef HAL_PCD_EP_Abort(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); +HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd); +HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup(PCD_HandleTypeDef *hpcd); +HAL_StatusTypeDef HAL_PCD_SetTestMode(PCD_HandleTypeDef *hpcd, uint8_t testmode); + +uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef *hpcd, uint8_t ep_addr); +/** + * @} + */ + +/* Peripheral State functions ************************************************/ +/** @addtogroup PCD_Exported_Functions_Group4 Peripheral State functions + * @{ + */ +PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef *hpcd); +/** + * @} + */ + +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup PCD_Private_Constants PCD Private Constants + * @{ + */ +/** @defgroup USB_EXTI_Line_Interrupt USB EXTI line interrupt + * @{ + */ +#if defined (USB_OTG_FS) || defined (USB_OTG_HS) +#define USB_OTG_FS_WAKEUP_EXTI_LINE (0x1U << 18) /*!< USB FS EXTI Line WakeUp Interrupt */ +#define USB_OTG_HS_WAKEUP_EXTI_LINE (0x1U << 20) /*!< USB HS EXTI Line WakeUp Interrupt */ +#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ + + +/** + * @} + */ +/** + * @} + */ + +#if defined (USB_OTG_FS) || defined (USB_OTG_HS) +#ifndef USB_OTG_DOEPINT_OTEPSPR +#define USB_OTG_DOEPINT_OTEPSPR (0x1UL << 5) /*!< Status Phase Received interrupt */ +#endif /* defined USB_OTG_DOEPINT_OTEPSPR */ + +#ifndef USB_OTG_DOEPMSK_OTEPSPRM +#define USB_OTG_DOEPMSK_OTEPSPRM (0x1UL << 5) /*!< Setup Packet Received interrupt mask */ +#endif /* defined USB_OTG_DOEPMSK_OTEPSPRM */ + +#ifndef USB_OTG_DOEPINT_NAK +#define USB_OTG_DOEPINT_NAK (0x1UL << 13) /*!< NAK interrupt */ +#endif /* defined USB_OTG_DOEPINT_NAK */ + +#ifndef USB_OTG_DOEPMSK_NAKM +#define USB_OTG_DOEPMSK_NAKM (0x1UL << 13) /*!< OUT Packet NAK interrupt mask */ +#endif /* defined USB_OTG_DOEPMSK_NAKM */ + +#ifndef USB_OTG_DOEPINT_STPKTRX +#define USB_OTG_DOEPINT_STPKTRX (0x1UL << 15) /*!< Setup Packet Received interrupt */ +#endif /* defined USB_OTG_DOEPINT_STPKTRX */ + +#ifndef USB_OTG_DOEPMSK_NYETM +#define USB_OTG_DOEPMSK_NYETM (0x1UL << 14) /*!< Setup Packet Received interrupt mask */ +#endif /* defined USB_OTG_DOEPMSK_NYETM */ +#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup PCD_Private_Macros PCD Private Macros + * @{ + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F4xx_HAL_PCD_H */ diff --git a/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h new file mode 100644 index 0000000..8eab87e --- /dev/null +++ b/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pcd_ex.h @@ -0,0 +1,88 @@ +/** + ****************************************************************************** + * @file stm32f4xx_hal_pcd_ex.h + * @author MCD Application Team + * @brief Header file of PCD HAL Extension module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F4xx_HAL_PCD_EX_H +#define STM32F4xx_HAL_PCD_EX_H + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f4xx_hal_def.h" + +#if defined (USB_OTG_FS) || defined (USB_OTG_HS) +/** @addtogroup STM32F4xx_HAL_Driver + * @{ + */ + +/** @addtogroup PCDEx + * @{ + */ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Exported macros -----------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup PCDEx_Exported_Functions PCDEx Exported Functions + * @{ + */ +/** @addtogroup PCDEx_Exported_Functions_Group1 Peripheral Control functions + * @{ + */ + +#if defined (USB_OTG_FS) || defined (USB_OTG_HS) +HAL_StatusTypeDef HAL_PCDEx_SetTxFiFo(PCD_HandleTypeDef *hpcd, uint8_t fifo, uint16_t size); +HAL_StatusTypeDef HAL_PCDEx_SetRxFiFo(PCD_HandleTypeDef *hpcd, uint16_t size); +#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ + +#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) +HAL_StatusTypeDef HAL_PCDEx_ActivateLPM(PCD_HandleTypeDef *hpcd); +HAL_StatusTypeDef HAL_PCDEx_DeActivateLPM(PCD_HandleTypeDef *hpcd); +#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */ +#if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) +HAL_StatusTypeDef HAL_PCDEx_ActivateBCD(PCD_HandleTypeDef *hpcd); +HAL_StatusTypeDef HAL_PCDEx_DeActivateBCD(PCD_HandleTypeDef *hpcd); +void HAL_PCDEx_BCD_VBUSDetect(PCD_HandleTypeDef *hpcd); +#endif /* defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */ +void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg); +void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + +#endif /* STM32F4xx_HAL_PCD_EX_H */ diff --git a/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c deleted file mode 100644 index 5f9503e..0000000 --- a/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_hcd.c +++ /dev/null @@ -1,1728 +0,0 @@ -/** - ****************************************************************************** - * @file stm32f4xx_hal_hcd.c - * @author MCD Application Team - * @brief HCD HAL module driver. - * This file provides firmware functions to manage the following - * functionalities of the USB Peripheral Controller: - * + Initialization and de-initialization functions - * + IO operation functions - * + Peripheral Control functions - * + Peripheral State functions - * - ****************************************************************************** - * @attention - * - * Copyright (c) 2016 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - @verbatim - ============================================================================== - ##### How to use this driver ##### - ============================================================================== - [..] - (#)Declare a HCD_HandleTypeDef handle structure, for example: - HCD_HandleTypeDef hhcd; - - (#)Fill parameters of Init structure in HCD handle - - (#)Call HAL_HCD_Init() API to initialize the HCD peripheral (Core, Host core, ...) - - (#)Initialize the HCD low level resources through the HAL_HCD_MspInit() API: - (##) Enable the HCD/USB Low Level interface clock using the following macros - (+++) __HAL_RCC_USB_OTG_FS_CLK_ENABLE(); - (+++) __HAL_RCC_USB_OTG_HS_CLK_ENABLE(); (For High Speed Mode) - (+++) __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE(); (For High Speed Mode) - - (##) Initialize the related GPIO clocks - (##) Configure HCD pin-out - (##) Configure HCD NVIC interrupt - - (#)Associate the Upper USB Host stack to the HAL HCD Driver: - (##) hhcd.pData = phost; - - (#)Enable HCD transmission and reception: - (##) HAL_HCD_Start(); - - @endverbatim - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f4xx_hal.h" - -/** @addtogroup STM32F4xx_HAL_Driver - * @{ - */ - -#ifdef HAL_HCD_MODULE_ENABLED -#if defined (USB_OTG_FS) || defined (USB_OTG_HS) - -/** @defgroup HCD HCD - * @brief HCD HAL module driver - * @{ - */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/** @defgroup HCD_Private_Functions HCD Private Functions - * @{ - */ -static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum); -static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum); -static void HCD_RXQLVL_IRQHandler(HCD_HandleTypeDef *hhcd); -static void HCD_Port_IRQHandler(HCD_HandleTypeDef *hhcd); -/** - * @} - */ - -/* Exported functions --------------------------------------------------------*/ -/** @defgroup HCD_Exported_Functions HCD Exported Functions - * @{ - */ - -/** @defgroup HCD_Exported_Functions_Group1 Initialization and de-initialization functions - * @brief Initialization and Configuration functions - * -@verbatim - =============================================================================== - ##### Initialization and de-initialization functions ##### - =============================================================================== - [..] This section provides functions allowing to: - -@endverbatim - * @{ - */ - -/** - * @brief Initialize the host driver. - * @param hhcd HCD handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_HCD_Init(HCD_HandleTypeDef *hhcd) -{ - USB_OTG_GlobalTypeDef *USBx; - - /* Check the HCD handle allocation */ - if (hhcd == NULL) - { - return HAL_ERROR; - } - - /* Check the parameters */ - assert_param(IS_HCD_ALL_INSTANCE(hhcd->Instance)); - - USBx = hhcd->Instance; - - if (hhcd->State == HAL_HCD_STATE_RESET) - { - /* Allocate lock resource and initialize it */ - hhcd->Lock = HAL_UNLOCKED; - -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) - hhcd->SOFCallback = HAL_HCD_SOF_Callback; - hhcd->ConnectCallback = HAL_HCD_Connect_Callback; - hhcd->DisconnectCallback = HAL_HCD_Disconnect_Callback; - hhcd->PortEnabledCallback = HAL_HCD_PortEnabled_Callback; - hhcd->PortDisabledCallback = HAL_HCD_PortDisabled_Callback; - hhcd->HC_NotifyURBChangeCallback = HAL_HCD_HC_NotifyURBChange_Callback; - - if (hhcd->MspInitCallback == NULL) - { - hhcd->MspInitCallback = HAL_HCD_MspInit; - } - - /* Init the low level hardware */ - hhcd->MspInitCallback(hhcd); -#else - /* Init the low level hardware : GPIO, CLOCK, NVIC... */ - HAL_HCD_MspInit(hhcd); -#endif /* (USE_HAL_HCD_REGISTER_CALLBACKS) */ - } - - hhcd->State = HAL_HCD_STATE_BUSY; - - /* Disable DMA mode for FS instance */ - if ((USBx->CID & (0x1U << 8)) == 0U) - { - hhcd->Init.dma_enable = 0U; - } - - /* Disable the Interrupts */ - __HAL_HCD_DISABLE(hhcd); - - /* Init the Core (common init.) */ - (void)USB_CoreInit(hhcd->Instance, hhcd->Init); - - /* Force Host Mode*/ - (void)USB_SetCurrentMode(hhcd->Instance, USB_HOST_MODE); - - /* Init Host */ - (void)USB_HostInit(hhcd->Instance, hhcd->Init); - - hhcd->State = HAL_HCD_STATE_READY; - - return HAL_OK; -} - -/** - * @brief Initialize a host channel. - * @param hhcd HCD handle - * @param ch_num Channel number. - * This parameter can be a value from 1 to 15 - * @param epnum Endpoint number. - * This parameter can be a value from 1 to 15 - * @param dev_address Current device address - * This parameter can be a value from 0 to 255 - * @param speed Current device speed. - * This parameter can be one of these values: - * HCD_DEVICE_SPEED_HIGH: High speed mode, - * HCD_DEVICE_SPEED_FULL: Full speed mode, - * HCD_DEVICE_SPEED_LOW: Low speed mode - * @param ep_type Endpoint Type. - * This parameter can be one of these values: - * EP_TYPE_CTRL: Control type, - * EP_TYPE_ISOC: Isochronous type, - * EP_TYPE_BULK: Bulk type, - * EP_TYPE_INTR: Interrupt type - * @param mps Max Packet Size. - * This parameter can be a value from 0 to32K - * @retval HAL status - */ -HAL_StatusTypeDef HAL_HCD_HC_Init(HCD_HandleTypeDef *hhcd, - uint8_t ch_num, - uint8_t epnum, - uint8_t dev_address, - uint8_t speed, - uint8_t ep_type, - uint16_t mps) -{ - HAL_StatusTypeDef status; - - __HAL_LOCK(hhcd); - hhcd->hc[ch_num].do_ping = 0U; - hhcd->hc[ch_num].dev_addr = dev_address; - hhcd->hc[ch_num].max_packet = mps; - hhcd->hc[ch_num].ch_num = ch_num; - hhcd->hc[ch_num].ep_type = ep_type; - hhcd->hc[ch_num].ep_num = epnum & 0x7FU; - - if ((epnum & 0x80U) == 0x80U) - { - hhcd->hc[ch_num].ep_is_in = 1U; - } - else - { - hhcd->hc[ch_num].ep_is_in = 0U; - } - - hhcd->hc[ch_num].speed = speed; - - status = USB_HC_Init(hhcd->Instance, - ch_num, - epnum, - dev_address, - speed, - ep_type, - mps); - __HAL_UNLOCK(hhcd); - - return status; -} - -/** - * @brief Halt a host channel. - * @param hhcd HCD handle - * @param ch_num Channel number. - * This parameter can be a value from 1 to 15 - * @retval HAL status - */ -HAL_StatusTypeDef HAL_HCD_HC_Halt(HCD_HandleTypeDef *hhcd, uint8_t ch_num) -{ - HAL_StatusTypeDef status = HAL_OK; - - __HAL_LOCK(hhcd); - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - __HAL_UNLOCK(hhcd); - - return status; -} - -/** - * @brief DeInitialize the host driver. - * @param hhcd HCD handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_HCD_DeInit(HCD_HandleTypeDef *hhcd) -{ - /* Check the HCD handle allocation */ - if (hhcd == NULL) - { - return HAL_ERROR; - } - - hhcd->State = HAL_HCD_STATE_BUSY; - -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) - if (hhcd->MspDeInitCallback == NULL) - { - hhcd->MspDeInitCallback = HAL_HCD_MspDeInit; /* Legacy weak MspDeInit */ - } - - /* DeInit the low level hardware */ - hhcd->MspDeInitCallback(hhcd); -#else - /* DeInit the low level hardware: CLOCK, NVIC.*/ - HAL_HCD_MspDeInit(hhcd); -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ - - __HAL_HCD_DISABLE(hhcd); - - hhcd->State = HAL_HCD_STATE_RESET; - - return HAL_OK; -} - -/** - * @brief Initialize the HCD MSP. - * @param hhcd HCD handle - * @retval None - */ -__weak void HAL_HCD_MspInit(HCD_HandleTypeDef *hhcd) -{ - /* Prevent unused argument(s) compilation warning */ - UNUSED(hhcd); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_HCD_MspInit could be implemented in the user file - */ -} - -/** - * @brief DeInitialize the HCD MSP. - * @param hhcd HCD handle - * @retval None - */ -__weak void HAL_HCD_MspDeInit(HCD_HandleTypeDef *hhcd) -{ - /* Prevent unused argument(s) compilation warning */ - UNUSED(hhcd); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_HCD_MspDeInit could be implemented in the user file - */ -} - -/** - * @} - */ - -/** @defgroup HCD_Exported_Functions_Group2 Input and Output operation functions - * @brief HCD IO operation functions - * -@verbatim - =============================================================================== - ##### IO operation functions ##### - =============================================================================== - [..] This subsection provides a set of functions allowing to manage the USB Host Data - Transfer - -@endverbatim - * @{ - */ - -/** - * @brief Submit a new URB for processing. - * @param hhcd HCD handle - * @param ch_num Channel number. - * This parameter can be a value from 1 to 15 - * @param direction Channel number. - * This parameter can be one of these values: - * 0 : Output / 1 : Input - * @param ep_type Endpoint Type. - * This parameter can be one of these values: - * EP_TYPE_CTRL: Control type/ - * EP_TYPE_ISOC: Isochronous type/ - * EP_TYPE_BULK: Bulk type/ - * EP_TYPE_INTR: Interrupt type/ - * @param token Endpoint Type. - * This parameter can be one of these values: - * 0: HC_PID_SETUP / 1: HC_PID_DATA1 - * @param pbuff pointer to URB data - * @param length Length of URB data - * @param do_ping activate do ping protocol (for high speed only). - * This parameter can be one of these values: - * 0 : do ping inactive / 1 : do ping active - * @retval HAL status - */ -HAL_StatusTypeDef HAL_HCD_HC_SubmitRequest(HCD_HandleTypeDef *hhcd, - uint8_t ch_num, - uint8_t direction, - uint8_t ep_type, - uint8_t token, - uint8_t *pbuff, - uint16_t length, - uint8_t do_ping) -{ - hhcd->hc[ch_num].ep_is_in = direction; - hhcd->hc[ch_num].ep_type = ep_type; - - if (token == 0U) - { - hhcd->hc[ch_num].data_pid = HC_PID_SETUP; - hhcd->hc[ch_num].do_ping = do_ping; - } - else - { - hhcd->hc[ch_num].data_pid = HC_PID_DATA1; - } - - /* Manage Data Toggle */ - switch (ep_type) - { - case EP_TYPE_CTRL: - if ((token == 1U) && (direction == 0U)) /*send data */ - { - if (length == 0U) - { - /* For Status OUT stage, Length==0, Status Out PID = 1 */ - hhcd->hc[ch_num].toggle_out = 1U; - } - - /* Set the Data Toggle bit as per the Flag */ - if (hhcd->hc[ch_num].toggle_out == 0U) - { - /* Put the PID 0 */ - hhcd->hc[ch_num].data_pid = HC_PID_DATA0; - } - else - { - /* Put the PID 1 */ - hhcd->hc[ch_num].data_pid = HC_PID_DATA1; - } - } - break; - - case EP_TYPE_BULK: - if (direction == 0U) - { - /* Set the Data Toggle bit as per the Flag */ - if (hhcd->hc[ch_num].toggle_out == 0U) - { - /* Put the PID 0 */ - hhcd->hc[ch_num].data_pid = HC_PID_DATA0; - } - else - { - /* Put the PID 1 */ - hhcd->hc[ch_num].data_pid = HC_PID_DATA1; - } - } - else - { - if (hhcd->hc[ch_num].toggle_in == 0U) - { - hhcd->hc[ch_num].data_pid = HC_PID_DATA0; - } - else - { - hhcd->hc[ch_num].data_pid = HC_PID_DATA1; - } - } - - break; - case EP_TYPE_INTR: - if (direction == 0U) - { - /* Set the Data Toggle bit as per the Flag */ - if (hhcd->hc[ch_num].toggle_out == 0U) - { - /* Put the PID 0 */ - hhcd->hc[ch_num].data_pid = HC_PID_DATA0; - } - else - { - /* Put the PID 1 */ - hhcd->hc[ch_num].data_pid = HC_PID_DATA1; - } - } - else - { - if (hhcd->hc[ch_num].toggle_in == 0U) - { - hhcd->hc[ch_num].data_pid = HC_PID_DATA0; - } - else - { - hhcd->hc[ch_num].data_pid = HC_PID_DATA1; - } - } - break; - - case EP_TYPE_ISOC: - hhcd->hc[ch_num].data_pid = HC_PID_DATA0; - break; - - default: - break; - } - - hhcd->hc[ch_num].xfer_buff = pbuff; - hhcd->hc[ch_num].xfer_len = length; - hhcd->hc[ch_num].urb_state = URB_IDLE; - hhcd->hc[ch_num].xfer_count = 0U; - hhcd->hc[ch_num].ch_num = ch_num; - hhcd->hc[ch_num].state = HC_IDLE; - - return USB_HC_StartXfer(hhcd->Instance, &hhcd->hc[ch_num], (uint8_t)hhcd->Init.dma_enable); -} - -/** - * @brief Handle HCD interrupt request. - * @param hhcd HCD handle - * @retval None - */ -void HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd) -{ - USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; - uint32_t USBx_BASE = (uint32_t)USBx; - uint32_t i; - uint32_t interrupt; - - /* Ensure that we are in device mode */ - if (USB_GetMode(hhcd->Instance) == USB_OTG_MODE_HOST) - { - /* Avoid spurious interrupt */ - if (__HAL_HCD_IS_INVALID_INTERRUPT(hhcd)) - { - return; - } - - if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT)) - { - /* Incorrect mode, acknowledge the interrupt */ - __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT); - } - - if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_IISOIXFR)) - { - /* Incorrect mode, acknowledge the interrupt */ - __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_IISOIXFR); - } - - if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_PTXFE)) - { - /* Incorrect mode, acknowledge the interrupt */ - __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_PTXFE); - } - - if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_MMIS)) - { - /* Incorrect mode, acknowledge the interrupt */ - __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_MMIS); - } - - /* Handle Host Disconnect Interrupts */ - if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_DISCINT)) - { - __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_DISCINT); - - if ((USBx_HPRT0 & USB_OTG_HPRT_PCSTS) == 0U) - { - /* Flush USB Fifo */ - (void)USB_FlushTxFifo(USBx, 0x10U); - (void)USB_FlushRxFifo(USBx); - - /* Restore FS Clock */ - (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_48_MHZ); - - /* Handle Host Port Disconnect Interrupt */ -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) - hhcd->DisconnectCallback(hhcd); -#else - HAL_HCD_Disconnect_Callback(hhcd); -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ - } - } - - /* Handle Host Port Interrupts */ - if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_HPRTINT)) - { - HCD_Port_IRQHandler(hhcd); - } - - /* Handle Host SOF Interrupt */ - if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_SOF)) - { -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) - hhcd->SOFCallback(hhcd); -#else - HAL_HCD_SOF_Callback(hhcd); -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ - - __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_SOF); - } - - /* Handle Rx Queue Level Interrupts */ - if ((__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_RXFLVL)) != 0U) - { - USB_MASK_INTERRUPT(hhcd->Instance, USB_OTG_GINTSTS_RXFLVL); - - HCD_RXQLVL_IRQHandler(hhcd); - - USB_UNMASK_INTERRUPT(hhcd->Instance, USB_OTG_GINTSTS_RXFLVL); - } - - /* Handle Host channel Interrupt */ - if (__HAL_HCD_GET_FLAG(hhcd, USB_OTG_GINTSTS_HCINT)) - { - interrupt = USB_HC_ReadInterrupt(hhcd->Instance); - for (i = 0U; i < hhcd->Init.Host_channels; i++) - { - if ((interrupt & (1UL << (i & 0xFU))) != 0U) - { - if ((USBx_HC(i)->HCCHAR & USB_OTG_HCCHAR_EPDIR) == USB_OTG_HCCHAR_EPDIR) - { - HCD_HC_IN_IRQHandler(hhcd, (uint8_t)i); - } - else - { - HCD_HC_OUT_IRQHandler(hhcd, (uint8_t)i); - } - } - } - __HAL_HCD_CLEAR_FLAG(hhcd, USB_OTG_GINTSTS_HCINT); - } - } -} - - -/** - * @brief Handles HCD Wakeup interrupt request. - * @param hhcd HCD handle - * @retval HAL status - */ -void HAL_HCD_WKUP_IRQHandler(HCD_HandleTypeDef *hhcd) -{ - UNUSED(hhcd); -} - - -/** - * @brief SOF callback. - * @param hhcd HCD handle - * @retval None - */ -__weak void HAL_HCD_SOF_Callback(HCD_HandleTypeDef *hhcd) -{ - /* Prevent unused argument(s) compilation warning */ - UNUSED(hhcd); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_HCD_SOF_Callback could be implemented in the user file - */ -} - -/** - * @brief Connection Event callback. - * @param hhcd HCD handle - * @retval None - */ -__weak void HAL_HCD_Connect_Callback(HCD_HandleTypeDef *hhcd) -{ - /* Prevent unused argument(s) compilation warning */ - UNUSED(hhcd); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_HCD_Connect_Callback could be implemented in the user file - */ -} - -/** - * @brief Disconnection Event callback. - * @param hhcd HCD handle - * @retval None - */ -__weak void HAL_HCD_Disconnect_Callback(HCD_HandleTypeDef *hhcd) -{ - /* Prevent unused argument(s) compilation warning */ - UNUSED(hhcd); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_HCD_Disconnect_Callback could be implemented in the user file - */ -} - -/** - * @brief Port Enabled Event callback. - * @param hhcd HCD handle - * @retval None - */ -__weak void HAL_HCD_PortEnabled_Callback(HCD_HandleTypeDef *hhcd) -{ - /* Prevent unused argument(s) compilation warning */ - UNUSED(hhcd); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_HCD_Disconnect_Callback could be implemented in the user file - */ -} - -/** - * @brief Port Disabled Event callback. - * @param hhcd HCD handle - * @retval None - */ -__weak void HAL_HCD_PortDisabled_Callback(HCD_HandleTypeDef *hhcd) -{ - /* Prevent unused argument(s) compilation warning */ - UNUSED(hhcd); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_HCD_Disconnect_Callback could be implemented in the user file - */ -} - -/** - * @brief Notify URB state change callback. - * @param hhcd HCD handle - * @param chnum Channel number. - * This parameter can be a value from 1 to 15 - * @param urb_state: - * This parameter can be one of these values: - * URB_IDLE/ - * URB_DONE/ - * URB_NOTREADY/ - * URB_NYET/ - * URB_ERROR/ - * URB_STALL/ - * @retval None - */ -__weak void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, uint8_t chnum, HCD_URBStateTypeDef urb_state) -{ - /* Prevent unused argument(s) compilation warning */ - UNUSED(hhcd); - UNUSED(chnum); - UNUSED(urb_state); - - /* NOTE : This function should not be modified, when the callback is needed, - the HAL_HCD_HC_NotifyURBChange_Callback could be implemented in the user file - */ -} - -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) -/** - * @brief Register a User USB HCD Callback - * To be used instead of the weak predefined callback - * @param hhcd USB HCD handle - * @param CallbackID ID of the callback to be registered - * This parameter can be one of the following values: - * @arg @ref HAL_HCD_SOF_CB_ID USB HCD SOF callback ID - * @arg @ref HAL_HCD_CONNECT_CB_ID USB HCD Connect callback ID - * @arg @ref HAL_HCD_DISCONNECT_CB_ID OTG HCD Disconnect callback ID - * @arg @ref HAL_HCD_PORT_ENABLED_CB_ID USB HCD Port Enable callback ID - * @arg @ref HAL_HCD_PORT_DISABLED_CB_ID USB HCD Port Disable callback ID - * @arg @ref HAL_HCD_MSPINIT_CB_ID MspDeInit callback ID - * @arg @ref HAL_HCD_MSPDEINIT_CB_ID MspDeInit callback ID - * @param pCallback pointer to the Callback function - * @retval HAL status - */ -HAL_StatusTypeDef HAL_HCD_RegisterCallback(HCD_HandleTypeDef *hhcd, - HAL_HCD_CallbackIDTypeDef CallbackID, - pHCD_CallbackTypeDef pCallback) -{ - HAL_StatusTypeDef status = HAL_OK; - - if (pCallback == NULL) - { - /* Update the error code */ - hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; - return HAL_ERROR; - } - /* Process locked */ - __HAL_LOCK(hhcd); - - if (hhcd->State == HAL_HCD_STATE_READY) - { - switch (CallbackID) - { - case HAL_HCD_SOF_CB_ID : - hhcd->SOFCallback = pCallback; - break; - - case HAL_HCD_CONNECT_CB_ID : - hhcd->ConnectCallback = pCallback; - break; - - case HAL_HCD_DISCONNECT_CB_ID : - hhcd->DisconnectCallback = pCallback; - break; - - case HAL_HCD_PORT_ENABLED_CB_ID : - hhcd->PortEnabledCallback = pCallback; - break; - - case HAL_HCD_PORT_DISABLED_CB_ID : - hhcd->PortDisabledCallback = pCallback; - break; - - case HAL_HCD_MSPINIT_CB_ID : - hhcd->MspInitCallback = pCallback; - break; - - case HAL_HCD_MSPDEINIT_CB_ID : - hhcd->MspDeInitCallback = pCallback; - break; - - default : - /* Update the error code */ - hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; - /* Return error status */ - status = HAL_ERROR; - break; - } - } - else if (hhcd->State == HAL_HCD_STATE_RESET) - { - switch (CallbackID) - { - case HAL_HCD_MSPINIT_CB_ID : - hhcd->MspInitCallback = pCallback; - break; - - case HAL_HCD_MSPDEINIT_CB_ID : - hhcd->MspDeInitCallback = pCallback; - break; - - default : - /* Update the error code */ - hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; - /* Return error status */ - status = HAL_ERROR; - break; - } - } - else - { - /* Update the error code */ - hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; - /* Return error status */ - status = HAL_ERROR; - } - - /* Release Lock */ - __HAL_UNLOCK(hhcd); - return status; -} - -/** - * @brief Unregister an USB HCD Callback - * USB HCD callback is redirected to the weak predefined callback - * @param hhcd USB HCD handle - * @param CallbackID ID of the callback to be unregistered - * This parameter can be one of the following values: - * @arg @ref HAL_HCD_SOF_CB_ID USB HCD SOF callback ID - * @arg @ref HAL_HCD_CONNECT_CB_ID USB HCD Connect callback ID - * @arg @ref HAL_HCD_DISCONNECT_CB_ID OTG HCD Disconnect callback ID - * @arg @ref HAL_HCD_PORT_ENABLED_CB_ID USB HCD Port Enabled callback ID - * @arg @ref HAL_HCD_PORT_DISABLED_CB_ID USB HCD Port Disabled callback ID - * @arg @ref HAL_HCD_MSPINIT_CB_ID MspDeInit callback ID - * @arg @ref HAL_HCD_MSPDEINIT_CB_ID MspDeInit callback ID - * @retval HAL status - */ -HAL_StatusTypeDef HAL_HCD_UnRegisterCallback(HCD_HandleTypeDef *hhcd, HAL_HCD_CallbackIDTypeDef CallbackID) -{ - HAL_StatusTypeDef status = HAL_OK; - - /* Process locked */ - __HAL_LOCK(hhcd); - - /* Setup Legacy weak Callbacks */ - if (hhcd->State == HAL_HCD_STATE_READY) - { - switch (CallbackID) - { - case HAL_HCD_SOF_CB_ID : - hhcd->SOFCallback = HAL_HCD_SOF_Callback; - break; - - case HAL_HCD_CONNECT_CB_ID : - hhcd->ConnectCallback = HAL_HCD_Connect_Callback; - break; - - case HAL_HCD_DISCONNECT_CB_ID : - hhcd->DisconnectCallback = HAL_HCD_Disconnect_Callback; - break; - - case HAL_HCD_PORT_ENABLED_CB_ID : - hhcd->PortEnabledCallback = HAL_HCD_PortEnabled_Callback; - break; - - case HAL_HCD_PORT_DISABLED_CB_ID : - hhcd->PortDisabledCallback = HAL_HCD_PortDisabled_Callback; - break; - - case HAL_HCD_MSPINIT_CB_ID : - hhcd->MspInitCallback = HAL_HCD_MspInit; - break; - - case HAL_HCD_MSPDEINIT_CB_ID : - hhcd->MspDeInitCallback = HAL_HCD_MspDeInit; - break; - - default : - /* Update the error code */ - hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; - - /* Return error status */ - status = HAL_ERROR; - break; - } - } - else if (hhcd->State == HAL_HCD_STATE_RESET) - { - switch (CallbackID) - { - case HAL_HCD_MSPINIT_CB_ID : - hhcd->MspInitCallback = HAL_HCD_MspInit; - break; - - case HAL_HCD_MSPDEINIT_CB_ID : - hhcd->MspDeInitCallback = HAL_HCD_MspDeInit; - break; - - default : - /* Update the error code */ - hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; - - /* Return error status */ - status = HAL_ERROR; - break; - } - } - else - { - /* Update the error code */ - hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; - - /* Return error status */ - status = HAL_ERROR; - } - - /* Release Lock */ - __HAL_UNLOCK(hhcd); - return status; -} - -/** - * @brief Register USB HCD Host Channel Notify URB Change Callback - * To be used instead of the weak HAL_HCD_HC_NotifyURBChange_Callback() predefined callback - * @param hhcd HCD handle - * @param pCallback pointer to the USB HCD Host Channel Notify URB Change Callback function - * @retval HAL status - */ -HAL_StatusTypeDef HAL_HCD_RegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd, - pHCD_HC_NotifyURBChangeCallbackTypeDef pCallback) -{ - HAL_StatusTypeDef status = HAL_OK; - - if (pCallback == NULL) - { - /* Update the error code */ - hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; - - return HAL_ERROR; - } - - /* Process locked */ - __HAL_LOCK(hhcd); - - if (hhcd->State == HAL_HCD_STATE_READY) - { - hhcd->HC_NotifyURBChangeCallback = pCallback; - } - else - { - /* Update the error code */ - hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; - - /* Return error status */ - status = HAL_ERROR; - } - - /* Release Lock */ - __HAL_UNLOCK(hhcd); - - return status; -} - -/** - * @brief Unregister the USB HCD Host Channel Notify URB Change Callback - * USB HCD Host Channel Notify URB Change Callback is redirected - * to the weak HAL_HCD_HC_NotifyURBChange_Callback() predefined callback - * @param hhcd HCD handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_HCD_UnRegisterHC_NotifyURBChangeCallback(HCD_HandleTypeDef *hhcd) -{ - HAL_StatusTypeDef status = HAL_OK; - - /* Process locked */ - __HAL_LOCK(hhcd); - - if (hhcd->State == HAL_HCD_STATE_READY) - { - hhcd->HC_NotifyURBChangeCallback = HAL_HCD_HC_NotifyURBChange_Callback; /* Legacy weak DataOutStageCallback */ - } - else - { - /* Update the error code */ - hhcd->ErrorCode |= HAL_HCD_ERROR_INVALID_CALLBACK; - - /* Return error status */ - status = HAL_ERROR; - } - - /* Release Lock */ - __HAL_UNLOCK(hhcd); - - return status; -} -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ - -/** - * @} - */ - -/** @defgroup HCD_Exported_Functions_Group3 Peripheral Control functions - * @brief Management functions - * -@verbatim - =============================================================================== - ##### Peripheral Control functions ##### - =============================================================================== - [..] - This subsection provides a set of functions allowing to control the HCD data - transfers. - -@endverbatim - * @{ - */ - -/** - * @brief Start the host driver. - * @param hhcd HCD handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_HCD_Start(HCD_HandleTypeDef *hhcd) -{ - __HAL_LOCK(hhcd); - /* Enable port power */ - (void)USB_DriveVbus(hhcd->Instance, 1U); - - /* Enable global interrupt */ - __HAL_HCD_ENABLE(hhcd); - __HAL_UNLOCK(hhcd); - - return HAL_OK; -} - -/** - * @brief Stop the host driver. - * @param hhcd HCD handle - * @retval HAL status - */ - -HAL_StatusTypeDef HAL_HCD_Stop(HCD_HandleTypeDef *hhcd) -{ - __HAL_LOCK(hhcd); - (void)USB_StopHost(hhcd->Instance); - __HAL_UNLOCK(hhcd); - - return HAL_OK; -} - -/** - * @brief Reset the host port. - * @param hhcd HCD handle - * @retval HAL status - */ -HAL_StatusTypeDef HAL_HCD_ResetPort(HCD_HandleTypeDef *hhcd) -{ - return (USB_ResetPort(hhcd->Instance)); -} - -/** - * @} - */ - -/** @defgroup HCD_Exported_Functions_Group4 Peripheral State functions - * @brief Peripheral State functions - * -@verbatim - =============================================================================== - ##### Peripheral State functions ##### - =============================================================================== - [..] - This subsection permits to get in run-time the status of the peripheral - and the data flow. - -@endverbatim - * @{ - */ - -/** - * @brief Return the HCD handle state. - * @param hhcd HCD handle - * @retval HAL state - */ -HCD_StateTypeDef HAL_HCD_GetState(HCD_HandleTypeDef *hhcd) -{ - return hhcd->State; -} - -/** - * @brief Return URB state for a channel. - * @param hhcd HCD handle - * @param chnum Channel number. - * This parameter can be a value from 1 to 15 - * @retval URB state. - * This parameter can be one of these values: - * URB_IDLE/ - * URB_DONE/ - * URB_NOTREADY/ - * URB_NYET/ - * URB_ERROR/ - * URB_STALL - */ -HCD_URBStateTypeDef HAL_HCD_HC_GetURBState(HCD_HandleTypeDef *hhcd, uint8_t chnum) -{ - return hhcd->hc[chnum].urb_state; -} - - -/** - * @brief Return the last host transfer size. - * @param hhcd HCD handle - * @param chnum Channel number. - * This parameter can be a value from 1 to 15 - * @retval last transfer size in byte - */ -uint32_t HAL_HCD_HC_GetXferCount(HCD_HandleTypeDef *hhcd, uint8_t chnum) -{ - return hhcd->hc[chnum].xfer_count; -} - -/** - * @brief Return the Host Channel state. - * @param hhcd HCD handle - * @param chnum Channel number. - * This parameter can be a value from 1 to 15 - * @retval Host channel state - * This parameter can be one of these values: - * HC_IDLE/ - * HC_XFRC/ - * HC_HALTED/ - * HC_NYET/ - * HC_NAK/ - * HC_STALL/ - * HC_XACTERR/ - * HC_BBLERR/ - * HC_DATATGLERR - */ -HCD_HCStateTypeDef HAL_HCD_HC_GetState(HCD_HandleTypeDef *hhcd, uint8_t chnum) -{ - return hhcd->hc[chnum].state; -} - -/** - * @brief Return the current Host frame number. - * @param hhcd HCD handle - * @retval Current Host frame number - */ -uint32_t HAL_HCD_GetCurrentFrame(HCD_HandleTypeDef *hhcd) -{ - return (USB_GetCurrentFrame(hhcd->Instance)); -} - -/** - * @brief Return the Host enumeration speed. - * @param hhcd HCD handle - * @retval Enumeration speed - */ -uint32_t HAL_HCD_GetCurrentSpeed(HCD_HandleTypeDef *hhcd) -{ - return (USB_GetHostSpeed(hhcd->Instance)); -} - -/** - * @} - */ - -/** - * @} - */ - -/** @addtogroup HCD_Private_Functions - * @{ - */ -/** - * @brief Handle Host Channel IN interrupt requests. - * @param hhcd HCD handle - * @param chnum Channel number. - * This parameter can be a value from 1 to 15 - * @retval none - */ -static void HCD_HC_IN_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) -{ - USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; - uint32_t USBx_BASE = (uint32_t)USBx; - uint32_t ch_num = (uint32_t)chnum; - - uint32_t tmpreg; - - if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_AHBERR) == USB_OTG_HCINT_AHBERR) - { - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_AHBERR); - hhcd->hc[ch_num].state = HC_XACTERR; - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_BBERR) == USB_OTG_HCINT_BBERR) - { - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_BBERR); - hhcd->hc[ch_num].state = HC_BBLERR; - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_ACK) == USB_OTG_HCINT_ACK) - { - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_ACK); - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_STALL) == USB_OTG_HCINT_STALL) - { - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_STALL); - hhcd->hc[ch_num].state = HC_STALL; - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_DTERR) == USB_OTG_HCINT_DTERR) - { - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_DTERR); - hhcd->hc[ch_num].state = HC_DATATGLERR; - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_TXERR) == USB_OTG_HCINT_TXERR) - { - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_TXERR); - hhcd->hc[ch_num].state = HC_XACTERR; - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - } - else - { - /* ... */ - } - - if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_FRMOR) == USB_OTG_HCINT_FRMOR) - { - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_FRMOR); - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_XFRC) == USB_OTG_HCINT_XFRC) - { - if (hhcd->Init.dma_enable != 0U) - { - hhcd->hc[ch_num].xfer_count = hhcd->hc[ch_num].XferSize - \ - (USBx_HC(ch_num)->HCTSIZ & USB_OTG_HCTSIZ_XFRSIZ); - } - - hhcd->hc[ch_num].state = HC_XFRC; - hhcd->hc[ch_num].ErrCnt = 0U; - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_XFRC); - - if ((hhcd->hc[ch_num].ep_type == EP_TYPE_CTRL) || - (hhcd->hc[ch_num].ep_type == EP_TYPE_BULK)) - { - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NAK); - } - else if ((hhcd->hc[ch_num].ep_type == EP_TYPE_INTR) || - (hhcd->hc[ch_num].ep_type == EP_TYPE_ISOC)) - { - USBx_HC(ch_num)->HCCHAR |= USB_OTG_HCCHAR_ODDFRM; - hhcd->hc[ch_num].urb_state = URB_DONE; - -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) - hhcd->HC_NotifyURBChangeCallback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state); -#else - HAL_HCD_HC_NotifyURBChange_Callback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state); -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ - } - else - { - /* ... */ - } - - if (hhcd->Init.dma_enable == 1U) - { - if (((hhcd->hc[ch_num].XferSize / hhcd->hc[ch_num].max_packet) & 1U) != 0U) - { - hhcd->hc[ch_num].toggle_in ^= 1U; - } - } - else - { - hhcd->hc[ch_num].toggle_in ^= 1U; - } - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_CHH) == USB_OTG_HCINT_CHH) - { - if (hhcd->hc[ch_num].state == HC_XFRC) - { - hhcd->hc[ch_num].urb_state = URB_DONE; - } - else if (hhcd->hc[ch_num].state == HC_STALL) - { - hhcd->hc[ch_num].urb_state = URB_STALL; - } - else if ((hhcd->hc[ch_num].state == HC_XACTERR) || - (hhcd->hc[ch_num].state == HC_DATATGLERR)) - { - hhcd->hc[ch_num].ErrCnt++; - if (hhcd->hc[ch_num].ErrCnt > 2U) - { - hhcd->hc[ch_num].ErrCnt = 0U; - hhcd->hc[ch_num].urb_state = URB_ERROR; - } - else - { - hhcd->hc[ch_num].urb_state = URB_NOTREADY; - - /* re-activate the channel */ - tmpreg = USBx_HC(ch_num)->HCCHAR; - tmpreg &= ~USB_OTG_HCCHAR_CHDIS; - tmpreg |= USB_OTG_HCCHAR_CHENA; - USBx_HC(ch_num)->HCCHAR = tmpreg; - } - } - else if (hhcd->hc[ch_num].state == HC_NAK) - { - hhcd->hc[ch_num].urb_state = URB_NOTREADY; - - /* re-activate the channel */ - tmpreg = USBx_HC(ch_num)->HCCHAR; - tmpreg &= ~USB_OTG_HCCHAR_CHDIS; - tmpreg |= USB_OTG_HCCHAR_CHENA; - USBx_HC(ch_num)->HCCHAR = tmpreg; - } - else if (hhcd->hc[ch_num].state == HC_BBLERR) - { - hhcd->hc[ch_num].ErrCnt++; - hhcd->hc[ch_num].urb_state = URB_ERROR; - } - else - { - /* ... */ - } - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_CHH); - -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) - hhcd->HC_NotifyURBChangeCallback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state); -#else - HAL_HCD_HC_NotifyURBChange_Callback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state); -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_NAK) == USB_OTG_HCINT_NAK) - { - if (hhcd->hc[ch_num].ep_type == EP_TYPE_INTR) - { - hhcd->hc[ch_num].ErrCnt = 0U; - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - } - else if ((hhcd->hc[ch_num].ep_type == EP_TYPE_CTRL) || - (hhcd->hc[ch_num].ep_type == EP_TYPE_BULK)) - { - hhcd->hc[ch_num].ErrCnt = 0U; - - if (hhcd->Init.dma_enable == 0U) - { - hhcd->hc[ch_num].state = HC_NAK; - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - } - } - else - { - /* ... */ - } - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NAK); - } - else - { - /* ... */ - } -} - -/** - * @brief Handle Host Channel OUT interrupt requests. - * @param hhcd HCD handle - * @param chnum Channel number. - * This parameter can be a value from 1 to 15 - * @retval none - */ -static void HCD_HC_OUT_IRQHandler(HCD_HandleTypeDef *hhcd, uint8_t chnum) -{ - USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; - uint32_t USBx_BASE = (uint32_t)USBx; - uint32_t ch_num = (uint32_t)chnum; - uint32_t tmpreg; - uint32_t num_packets; - - if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_AHBERR) == USB_OTG_HCINT_AHBERR) - { - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_AHBERR); - hhcd->hc[ch_num].state = HC_XACTERR; - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_ACK) == USB_OTG_HCINT_ACK) - { - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_ACK); - - if (hhcd->hc[ch_num].do_ping == 1U) - { - hhcd->hc[ch_num].do_ping = 0U; - hhcd->hc[ch_num].urb_state = URB_NOTREADY; - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - } - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_FRMOR) == USB_OTG_HCINT_FRMOR) - { - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_FRMOR); - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_XFRC) == USB_OTG_HCINT_XFRC) - { - hhcd->hc[ch_num].ErrCnt = 0U; - - /* transaction completed with NYET state, update do ping state */ - if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_NYET) == USB_OTG_HCINT_NYET) - { - hhcd->hc[ch_num].do_ping = 1U; - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NYET); - } - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_XFRC); - hhcd->hc[ch_num].state = HC_XFRC; - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_NYET) == USB_OTG_HCINT_NYET) - { - hhcd->hc[ch_num].state = HC_NYET; - hhcd->hc[ch_num].do_ping = 1U; - hhcd->hc[ch_num].ErrCnt = 0U; - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NYET); - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_STALL) == USB_OTG_HCINT_STALL) - { - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_STALL); - hhcd->hc[ch_num].state = HC_STALL; - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_NAK) == USB_OTG_HCINT_NAK) - { - hhcd->hc[ch_num].ErrCnt = 0U; - hhcd->hc[ch_num].state = HC_NAK; - - if (hhcd->hc[ch_num].do_ping == 0U) - { - if (hhcd->hc[ch_num].speed == HCD_DEVICE_SPEED_HIGH) - { - hhcd->hc[ch_num].do_ping = 1U; - } - } - - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_NAK); - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_TXERR) == USB_OTG_HCINT_TXERR) - { - if (hhcd->Init.dma_enable == 0U) - { - hhcd->hc[ch_num].state = HC_XACTERR; - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - } - else - { - hhcd->hc[ch_num].ErrCnt++; - if (hhcd->hc[ch_num].ErrCnt > 2U) - { - hhcd->hc[ch_num].ErrCnt = 0U; - hhcd->hc[ch_num].urb_state = URB_ERROR; - -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) - hhcd->HC_NotifyURBChangeCallback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state); -#else - HAL_HCD_HC_NotifyURBChange_Callback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state); -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ - } - else - { - hhcd->hc[ch_num].urb_state = URB_NOTREADY; - } - } - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_TXERR); - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_DTERR) == USB_OTG_HCINT_DTERR) - { - hhcd->hc[ch_num].state = HC_DATATGLERR; - (void)USB_HC_Halt(hhcd->Instance, (uint8_t)ch_num); - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_DTERR); - } - else if ((USBx_HC(ch_num)->HCINT & USB_OTG_HCINT_CHH) == USB_OTG_HCINT_CHH) - { - if (hhcd->hc[ch_num].state == HC_XFRC) - { - hhcd->hc[ch_num].urb_state = URB_DONE; - if ((hhcd->hc[ch_num].ep_type == EP_TYPE_BULK) || - (hhcd->hc[ch_num].ep_type == EP_TYPE_INTR)) - { - if (hhcd->Init.dma_enable == 0U) - { - hhcd->hc[ch_num].toggle_out ^= 1U; - } - - if ((hhcd->Init.dma_enable == 1U) && (hhcd->hc[ch_num].xfer_len > 0U)) - { - num_packets = (hhcd->hc[ch_num].xfer_len + hhcd->hc[ch_num].max_packet - 1U) / hhcd->hc[ch_num].max_packet; - - if ((num_packets & 1U) != 0U) - { - hhcd->hc[ch_num].toggle_out ^= 1U; - } - } - } - } - else if (hhcd->hc[ch_num].state == HC_NAK) - { - hhcd->hc[ch_num].urb_state = URB_NOTREADY; - } - else if (hhcd->hc[ch_num].state == HC_NYET) - { - hhcd->hc[ch_num].urb_state = URB_NOTREADY; - } - else if (hhcd->hc[ch_num].state == HC_STALL) - { - hhcd->hc[ch_num].urb_state = URB_STALL; - } - else if ((hhcd->hc[ch_num].state == HC_XACTERR) || - (hhcd->hc[ch_num].state == HC_DATATGLERR)) - { - hhcd->hc[ch_num].ErrCnt++; - if (hhcd->hc[ch_num].ErrCnt > 2U) - { - hhcd->hc[ch_num].ErrCnt = 0U; - hhcd->hc[ch_num].urb_state = URB_ERROR; - } - else - { - hhcd->hc[ch_num].urb_state = URB_NOTREADY; - - /* re-activate the channel */ - tmpreg = USBx_HC(ch_num)->HCCHAR; - tmpreg &= ~USB_OTG_HCCHAR_CHDIS; - tmpreg |= USB_OTG_HCCHAR_CHENA; - USBx_HC(ch_num)->HCCHAR = tmpreg; - } - } - else - { - /* ... */ - } - - __HAL_HCD_CLEAR_HC_INT(ch_num, USB_OTG_HCINT_CHH); - -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) - hhcd->HC_NotifyURBChangeCallback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state); -#else - HAL_HCD_HC_NotifyURBChange_Callback(hhcd, (uint8_t)ch_num, hhcd->hc[ch_num].urb_state); -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ - } - else - { - /* ... */ - } -} - -/** - * @brief Handle Rx Queue Level interrupt requests. - * @param hhcd HCD handle - * @retval none - */ -static void HCD_RXQLVL_IRQHandler(HCD_HandleTypeDef *hhcd) -{ - USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; - uint32_t USBx_BASE = (uint32_t)USBx; - uint32_t pktsts; - uint32_t pktcnt; - uint32_t GrxstspReg; - uint32_t xferSizePktCnt; - uint32_t tmpreg; - uint32_t ch_num; - - GrxstspReg = hhcd->Instance->GRXSTSP; - ch_num = GrxstspReg & USB_OTG_GRXSTSP_EPNUM; - pktsts = (GrxstspReg & USB_OTG_GRXSTSP_PKTSTS) >> 17; - pktcnt = (GrxstspReg & USB_OTG_GRXSTSP_BCNT) >> 4; - - switch (pktsts) - { - case GRXSTS_PKTSTS_IN: - /* Read the data into the host buffer. */ - if ((pktcnt > 0U) && (hhcd->hc[ch_num].xfer_buff != (void *)0)) - { - if ((hhcd->hc[ch_num].xfer_count + pktcnt) <= hhcd->hc[ch_num].xfer_len) - { - (void)USB_ReadPacket(hhcd->Instance, - hhcd->hc[ch_num].xfer_buff, (uint16_t)pktcnt); - - /* manage multiple Xfer */ - hhcd->hc[ch_num].xfer_buff += pktcnt; - hhcd->hc[ch_num].xfer_count += pktcnt; - - /* get transfer size packet count */ - xferSizePktCnt = (USBx_HC(ch_num)->HCTSIZ & USB_OTG_HCTSIZ_PKTCNT) >> 19; - - if ((hhcd->hc[ch_num].max_packet == pktcnt) && (xferSizePktCnt > 0U)) - { - /* re-activate the channel when more packets are expected */ - tmpreg = USBx_HC(ch_num)->HCCHAR; - tmpreg &= ~USB_OTG_HCCHAR_CHDIS; - tmpreg |= USB_OTG_HCCHAR_CHENA; - USBx_HC(ch_num)->HCCHAR = tmpreg; - hhcd->hc[ch_num].toggle_in ^= 1U; - } - } - else - { - hhcd->hc[ch_num].urb_state = URB_ERROR; - } - } - break; - - case GRXSTS_PKTSTS_DATA_TOGGLE_ERR: - break; - - case GRXSTS_PKTSTS_IN_XFER_COMP: - case GRXSTS_PKTSTS_CH_HALTED: - default: - break; - } -} - -/** - * @brief Handle Host Port interrupt requests. - * @param hhcd HCD handle - * @retval None - */ -static void HCD_Port_IRQHandler(HCD_HandleTypeDef *hhcd) -{ - USB_OTG_GlobalTypeDef *USBx = hhcd->Instance; - uint32_t USBx_BASE = (uint32_t)USBx; - __IO uint32_t hprt0; - __IO uint32_t hprt0_dup; - - /* Handle Host Port Interrupts */ - hprt0 = USBx_HPRT0; - hprt0_dup = USBx_HPRT0; - - hprt0_dup &= ~(USB_OTG_HPRT_PENA | USB_OTG_HPRT_PCDET | \ - USB_OTG_HPRT_PENCHNG | USB_OTG_HPRT_POCCHNG); - - /* Check whether Port Connect detected */ - if ((hprt0 & USB_OTG_HPRT_PCDET) == USB_OTG_HPRT_PCDET) - { - if ((hprt0 & USB_OTG_HPRT_PCSTS) == USB_OTG_HPRT_PCSTS) - { -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) - hhcd->ConnectCallback(hhcd); -#else - HAL_HCD_Connect_Callback(hhcd); -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ - } - hprt0_dup |= USB_OTG_HPRT_PCDET; - } - - /* Check whether Port Enable Changed */ - if ((hprt0 & USB_OTG_HPRT_PENCHNG) == USB_OTG_HPRT_PENCHNG) - { - hprt0_dup |= USB_OTG_HPRT_PENCHNG; - - if ((hprt0 & USB_OTG_HPRT_PENA) == USB_OTG_HPRT_PENA) - { - if (hhcd->Init.phy_itface == USB_OTG_EMBEDDED_PHY) - { - if ((hprt0 & USB_OTG_HPRT_PSPD) == (HPRT0_PRTSPD_LOW_SPEED << 17)) - { - (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_6_MHZ); - } - else - { - (void)USB_InitFSLSPClkSel(hhcd->Instance, HCFG_48_MHZ); - } - } - else - { - if (hhcd->Init.speed == HCD_SPEED_FULL) - { - USBx_HOST->HFIR = 60000U; - } - } -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) - hhcd->PortEnabledCallback(hhcd); -#else - HAL_HCD_PortEnabled_Callback(hhcd); -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ - - } - else - { -#if (USE_HAL_HCD_REGISTER_CALLBACKS == 1U) - hhcd->PortDisabledCallback(hhcd); -#else - HAL_HCD_PortDisabled_Callback(hhcd); -#endif /* USE_HAL_HCD_REGISTER_CALLBACKS */ - } - } - - /* Check for an overcurrent */ - if ((hprt0 & USB_OTG_HPRT_POCCHNG) == USB_OTG_HPRT_POCCHNG) - { - hprt0_dup |= USB_OTG_HPRT_POCCHNG; - } - - /* Clear Port Interrupts */ - USBx_HPRT0 = hprt0_dup; -} - -/** - * @} - */ - -/** - * @} - */ - -#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ -#endif /* HAL_HCD_MODULE_ENABLED */ - -/** - * @} - */ - -/** - * @} - */ diff --git a/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c new file mode 100644 index 0000000..c8649ca --- /dev/null +++ b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd.c @@ -0,0 +1,2387 @@ +/** + ****************************************************************************** + * @file stm32f4xx_hal_pcd.c + * @author MCD Application Team + * @brief PCD HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the USB Peripheral Controller: + * + Initialization and de-initialization functions + * + IO operation functions + * + Peripheral Control functions + * + Peripheral State functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The PCD HAL driver can be used as follows: + + (#) Declare a PCD_HandleTypeDef handle structure, for example: + PCD_HandleTypeDef hpcd; + + (#) Fill parameters of Init structure in HCD handle + + (#) Call HAL_PCD_Init() API to initialize the PCD peripheral (Core, Device core, ...) + + (#) Initialize the PCD low level resources through the HAL_PCD_MspInit() API: + (##) Enable the PCD/USB Low Level interface clock using + (+++) __HAL_RCC_USB_OTG_FS_CLK_ENABLE(); + (+++) __HAL_RCC_USB_OTG_HS_CLK_ENABLE(); (For High Speed Mode) + + (##) Initialize the related GPIO clocks + (##) Configure PCD pin-out + (##) Configure PCD NVIC interrupt + + (#)Associate the Upper USB device stack to the HAL PCD Driver: + (##) hpcd.pData = pdev; + + (#)Enable PCD transmission and reception: + (##) HAL_PCD_Start(); + + @endverbatim + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f4xx_hal.h" + +/** @addtogroup STM32F4xx_HAL_Driver + * @{ + */ + +/** @defgroup PCD PCD + * @brief PCD HAL module driver + * @{ + */ + +#ifdef HAL_PCD_MODULE_ENABLED + +#if defined (USB_OTG_FS) || defined (USB_OTG_HS) + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @defgroup PCD_Private_Macros PCD Private Macros + * @{ + */ +#define PCD_MIN(a, b) (((a) < (b)) ? (a) : (b)) +#define PCD_MAX(a, b) (((a) > (b)) ? (a) : (b)) +/** + * @} + */ + +/* Private functions prototypes ----------------------------------------------*/ +/** @defgroup PCD_Private_Functions PCD Private Functions + * @{ + */ +#if defined (USB_OTG_FS) || defined (USB_OTG_HS) +static HAL_StatusTypeDef PCD_WriteEmptyTxFifo(PCD_HandleTypeDef *hpcd, uint32_t epnum); +static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint32_t epnum); +static HAL_StatusTypeDef PCD_EP_OutSetupPacket_int(PCD_HandleTypeDef *hpcd, uint32_t epnum); +#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup PCD_Exported_Functions PCD Exported Functions + * @{ + */ + +/** @defgroup PCD_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim + =============================================================================== + ##### Initialization and de-initialization functions ##### + =============================================================================== + [..] This section provides functions allowing to: + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the PCD according to the specified + * parameters in the PCD_InitTypeDef and initialize the associated handle. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd) +{ + USB_OTG_GlobalTypeDef *USBx; + uint8_t i; + + /* Check the PCD handle allocation */ + if (hpcd == NULL) + { + return HAL_ERROR; + } + + /* Check the parameters */ + assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance)); + + USBx = hpcd->Instance; + + if (hpcd->State == HAL_PCD_STATE_RESET) + { + /* Allocate lock resource and initialize it */ + hpcd->Lock = HAL_UNLOCKED; + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SOFCallback = HAL_PCD_SOFCallback; + hpcd->SetupStageCallback = HAL_PCD_SetupStageCallback; + hpcd->ResetCallback = HAL_PCD_ResetCallback; + hpcd->SuspendCallback = HAL_PCD_SuspendCallback; + hpcd->ResumeCallback = HAL_PCD_ResumeCallback; + hpcd->ConnectCallback = HAL_PCD_ConnectCallback; + hpcd->DisconnectCallback = HAL_PCD_DisconnectCallback; + hpcd->DataOutStageCallback = HAL_PCD_DataOutStageCallback; + hpcd->DataInStageCallback = HAL_PCD_DataInStageCallback; + hpcd->ISOOUTIncompleteCallback = HAL_PCD_ISOOUTIncompleteCallback; + hpcd->ISOINIncompleteCallback = HAL_PCD_ISOINIncompleteCallback; + hpcd->LPMCallback = HAL_PCDEx_LPM_Callback; + hpcd->BCDCallback = HAL_PCDEx_BCD_Callback; + + if (hpcd->MspInitCallback == NULL) + { + hpcd->MspInitCallback = HAL_PCD_MspInit; + } + + /* Init the low level hardware */ + hpcd->MspInitCallback(hpcd); +#else + /* Init the low level hardware : GPIO, CLOCK, NVIC... */ + HAL_PCD_MspInit(hpcd); +#endif /* (USE_HAL_PCD_REGISTER_CALLBACKS) */ + } + + hpcd->State = HAL_PCD_STATE_BUSY; + + /* Disable DMA mode for FS instance */ + if ((USBx->CID & (0x1U << 8)) == 0U) + { + hpcd->Init.dma_enable = 0U; + } + + /* Disable the Interrupts */ + __HAL_PCD_DISABLE(hpcd); + + /*Init the Core (common init.) */ + if (USB_CoreInit(hpcd->Instance, hpcd->Init) != HAL_OK) + { + hpcd->State = HAL_PCD_STATE_ERROR; + return HAL_ERROR; + } + + /* Force Device Mode*/ + (void)USB_SetCurrentMode(hpcd->Instance, USB_DEVICE_MODE); + + /* Init endpoints structures */ + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + { + /* Init ep structure */ + hpcd->IN_ep[i].is_in = 1U; + hpcd->IN_ep[i].num = i; + hpcd->IN_ep[i].tx_fifo_num = i; + /* Control until ep is activated */ + hpcd->IN_ep[i].type = EP_TYPE_CTRL; + hpcd->IN_ep[i].maxpacket = 0U; + hpcd->IN_ep[i].xfer_buff = 0U; + hpcd->IN_ep[i].xfer_len = 0U; + } + + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + { + hpcd->OUT_ep[i].is_in = 0U; + hpcd->OUT_ep[i].num = i; + /* Control until ep is activated */ + hpcd->OUT_ep[i].type = EP_TYPE_CTRL; + hpcd->OUT_ep[i].maxpacket = 0U; + hpcd->OUT_ep[i].xfer_buff = 0U; + hpcd->OUT_ep[i].xfer_len = 0U; + } + + /* Init Device */ + if (USB_DevInit(hpcd->Instance, hpcd->Init) != HAL_OK) + { + hpcd->State = HAL_PCD_STATE_ERROR; + return HAL_ERROR; + } + + hpcd->USB_Address = 0U; + hpcd->State = HAL_PCD_STATE_READY; +#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) + /* Activate LPM */ + if (hpcd->Init.lpm_enable == 1U) + { + (void)HAL_PCDEx_ActivateLPM(hpcd); + } +#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */ + (void)USB_DevDisconnect(hpcd->Instance); + + return HAL_OK; +} + +/** + * @brief DeInitializes the PCD peripheral. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_DeInit(PCD_HandleTypeDef *hpcd) +{ + /* Check the PCD handle allocation */ + if (hpcd == NULL) + { + return HAL_ERROR; + } + + hpcd->State = HAL_PCD_STATE_BUSY; + + /* Stop Device */ + if (USB_StopDevice(hpcd->Instance) != HAL_OK) + { + return HAL_ERROR; + } + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + if (hpcd->MspDeInitCallback == NULL) + { + hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; /* Legacy weak MspDeInit */ + } + + /* DeInit the low level hardware */ + hpcd->MspDeInitCallback(hpcd); +#else + /* DeInit the low level hardware: CLOCK, NVIC.*/ + HAL_PCD_MspDeInit(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + hpcd->State = HAL_PCD_STATE_RESET; + + return HAL_OK; +} + +/** + * @brief Initializes the PCD MSP. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_MspInit(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_MspInit could be implemented in the user file + */ +} + +/** + * @brief DeInitializes PCD MSP. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_MspDeInit(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_MspDeInit could be implemented in the user file + */ +} + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +/** + * @brief Register a User USB PCD Callback + * To be used instead of the weak predefined callback + * @param hpcd USB PCD handle + * @param CallbackID ID of the callback to be registered + * This parameter can be one of the following values: + * @arg @ref HAL_PCD_SOF_CB_ID USB PCD SOF callback ID + * @arg @ref HAL_PCD_SETUPSTAGE_CB_ID USB PCD Setup callback ID + * @arg @ref HAL_PCD_RESET_CB_ID USB PCD Reset callback ID + * @arg @ref HAL_PCD_SUSPEND_CB_ID USB PCD Suspend callback ID + * @arg @ref HAL_PCD_RESUME_CB_ID USB PCD Resume callback ID + * @arg @ref HAL_PCD_CONNECT_CB_ID USB PCD Connect callback ID + * @arg @ref HAL_PCD_DISCONNECT_CB_ID OTG PCD Disconnect callback ID + * @arg @ref HAL_PCD_MSPINIT_CB_ID MspDeInit callback ID + * @arg @ref HAL_PCD_MSPDEINIT_CB_ID MspDeInit callback ID + * @param pCallback pointer to the Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_RegisterCallback(PCD_HandleTypeDef *hpcd, + HAL_PCD_CallbackIDTypeDef CallbackID, + pPCD_CallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + return HAL_ERROR; + } + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + switch (CallbackID) + { + case HAL_PCD_SOF_CB_ID : + hpcd->SOFCallback = pCallback; + break; + + case HAL_PCD_SETUPSTAGE_CB_ID : + hpcd->SetupStageCallback = pCallback; + break; + + case HAL_PCD_RESET_CB_ID : + hpcd->ResetCallback = pCallback; + break; + + case HAL_PCD_SUSPEND_CB_ID : + hpcd->SuspendCallback = pCallback; + break; + + case HAL_PCD_RESUME_CB_ID : + hpcd->ResumeCallback = pCallback; + break; + + case HAL_PCD_CONNECT_CB_ID : + hpcd->ConnectCallback = pCallback; + break; + + case HAL_PCD_DISCONNECT_CB_ID : + hpcd->DisconnectCallback = pCallback; + break; + + case HAL_PCD_MSPINIT_CB_ID : + hpcd->MspInitCallback = pCallback; + break; + + case HAL_PCD_MSPDEINIT_CB_ID : + hpcd->MspDeInitCallback = pCallback; + break; + + default : + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (hpcd->State == HAL_PCD_STATE_RESET) + { + switch (CallbackID) + { + case HAL_PCD_MSPINIT_CB_ID : + hpcd->MspInitCallback = pCallback; + break; + + case HAL_PCD_MSPDEINIT_CB_ID : + hpcd->MspDeInitCallback = pCallback; + break; + + default : + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + return status; +} + +/** + * @brief Unregister an USB PCD Callback + * USB PCD callback is redirected to the weak predefined callback + * @param hpcd USB PCD handle + * @param CallbackID ID of the callback to be unregistered + * This parameter can be one of the following values: + * @arg @ref HAL_PCD_SOF_CB_ID USB PCD SOF callback ID + * @arg @ref HAL_PCD_SETUPSTAGE_CB_ID USB PCD Setup callback ID + * @arg @ref HAL_PCD_RESET_CB_ID USB PCD Reset callback ID + * @arg @ref HAL_PCD_SUSPEND_CB_ID USB PCD Suspend callback ID + * @arg @ref HAL_PCD_RESUME_CB_ID USB PCD Resume callback ID + * @arg @ref HAL_PCD_CONNECT_CB_ID USB PCD Connect callback ID + * @arg @ref HAL_PCD_DISCONNECT_CB_ID OTG PCD Disconnect callback ID + * @arg @ref HAL_PCD_MSPINIT_CB_ID MspDeInit callback ID + * @arg @ref HAL_PCD_MSPDEINIT_CB_ID MspDeInit callback ID + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_UnRegisterCallback(PCD_HandleTypeDef *hpcd, HAL_PCD_CallbackIDTypeDef CallbackID) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hpcd); + + /* Setup Legacy weak Callbacks */ + if (hpcd->State == HAL_PCD_STATE_READY) + { + switch (CallbackID) + { + case HAL_PCD_SOF_CB_ID : + hpcd->SOFCallback = HAL_PCD_SOFCallback; + break; + + case HAL_PCD_SETUPSTAGE_CB_ID : + hpcd->SetupStageCallback = HAL_PCD_SetupStageCallback; + break; + + case HAL_PCD_RESET_CB_ID : + hpcd->ResetCallback = HAL_PCD_ResetCallback; + break; + + case HAL_PCD_SUSPEND_CB_ID : + hpcd->SuspendCallback = HAL_PCD_SuspendCallback; + break; + + case HAL_PCD_RESUME_CB_ID : + hpcd->ResumeCallback = HAL_PCD_ResumeCallback; + break; + + case HAL_PCD_CONNECT_CB_ID : + hpcd->ConnectCallback = HAL_PCD_ConnectCallback; + break; + + case HAL_PCD_DISCONNECT_CB_ID : + hpcd->DisconnectCallback = HAL_PCD_DisconnectCallback; + break; + + case HAL_PCD_MSPINIT_CB_ID : + hpcd->MspInitCallback = HAL_PCD_MspInit; + break; + + case HAL_PCD_MSPDEINIT_CB_ID : + hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; + break; + + default : + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else if (hpcd->State == HAL_PCD_STATE_RESET) + { + switch (CallbackID) + { + case HAL_PCD_MSPINIT_CB_ID : + hpcd->MspInitCallback = HAL_PCD_MspInit; + break; + + case HAL_PCD_MSPDEINIT_CB_ID : + hpcd->MspDeInitCallback = HAL_PCD_MspDeInit; + break; + + default : + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + break; + } + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + return status; +} + +/** + * @brief Register USB PCD Data OUT Stage Callback + * To be used instead of the weak HAL_PCD_DataOutStageCallback() predefined callback + * @param hpcd PCD handle + * @param pCallback pointer to the USB PCD Data OUT Stage Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_RegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd, + pPCD_DataOutStageCallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->DataOutStageCallback = pCallback; + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Unregister the USB PCD Data OUT Stage Callback + * USB PCD Data OUT Stage Callback is redirected to the weak HAL_PCD_DataOutStageCallback() predefined callback + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_UnRegisterDataOutStageCallback(PCD_HandleTypeDef *hpcd) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->DataOutStageCallback = HAL_PCD_DataOutStageCallback; /* Legacy weak DataOutStageCallback */ + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Register USB PCD Data IN Stage Callback + * To be used instead of the weak HAL_PCD_DataInStageCallback() predefined callback + * @param hpcd PCD handle + * @param pCallback pointer to the USB PCD Data IN Stage Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_RegisterDataInStageCallback(PCD_HandleTypeDef *hpcd, + pPCD_DataInStageCallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->DataInStageCallback = pCallback; + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Unregister the USB PCD Data IN Stage Callback + * USB PCD Data OUT Stage Callback is redirected to the weak HAL_PCD_DataInStageCallback() predefined callback + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_UnRegisterDataInStageCallback(PCD_HandleTypeDef *hpcd) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->DataInStageCallback = HAL_PCD_DataInStageCallback; /* Legacy weak DataInStageCallback */ + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Register USB PCD Iso OUT incomplete Callback + * To be used instead of the weak HAL_PCD_ISOOUTIncompleteCallback() predefined callback + * @param hpcd PCD handle + * @param pCallback pointer to the USB PCD Iso OUT incomplete Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_RegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd, + pPCD_IsoOutIncpltCallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->ISOOUTIncompleteCallback = pCallback; + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Unregister the USB PCD Iso OUT incomplete Callback + * USB PCD Iso OUT incomplete Callback is redirected + * to the weak HAL_PCD_ISOOUTIncompleteCallback() predefined callback + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_UnRegisterIsoOutIncpltCallback(PCD_HandleTypeDef *hpcd) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->ISOOUTIncompleteCallback = HAL_PCD_ISOOUTIncompleteCallback; /* Legacy weak ISOOUTIncompleteCallback */ + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Register USB PCD Iso IN incomplete Callback + * To be used instead of the weak HAL_PCD_ISOINIncompleteCallback() predefined callback + * @param hpcd PCD handle + * @param pCallback pointer to the USB PCD Iso IN incomplete Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_RegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd, + pPCD_IsoInIncpltCallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->ISOINIncompleteCallback = pCallback; + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Unregister the USB PCD Iso IN incomplete Callback + * USB PCD Iso IN incomplete Callback is redirected + * to the weak HAL_PCD_ISOINIncompleteCallback() predefined callback + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_UnRegisterIsoInIncpltCallback(PCD_HandleTypeDef *hpcd) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->ISOINIncompleteCallback = HAL_PCD_ISOINIncompleteCallback; /* Legacy weak ISOINIncompleteCallback */ + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Register USB PCD BCD Callback + * To be used instead of the weak HAL_PCDEx_BCD_Callback() predefined callback + * @param hpcd PCD handle + * @param pCallback pointer to the USB PCD BCD Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_RegisterBcdCallback(PCD_HandleTypeDef *hpcd, pPCD_BcdCallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->BCDCallback = pCallback; + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Unregister the USB PCD BCD Callback + * USB BCD Callback is redirected to the weak HAL_PCDEx_BCD_Callback() predefined callback + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_UnRegisterBcdCallback(PCD_HandleTypeDef *hpcd) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->BCDCallback = HAL_PCDEx_BCD_Callback; /* Legacy weak HAL_PCDEx_BCD_Callback */ + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Register USB PCD LPM Callback + * To be used instead of the weak HAL_PCDEx_LPM_Callback() predefined callback + * @param hpcd PCD handle + * @param pCallback pointer to the USB PCD LPM Callback function + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_RegisterLpmCallback(PCD_HandleTypeDef *hpcd, pPCD_LpmCallbackTypeDef pCallback) +{ + HAL_StatusTypeDef status = HAL_OK; + + if (pCallback == NULL) + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + return HAL_ERROR; + } + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->LPMCallback = pCallback; + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} + +/** + * @brief Unregister the USB PCD LPM Callback + * USB LPM Callback is redirected to the weak HAL_PCDEx_LPM_Callback() predefined callback + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_UnRegisterLpmCallback(PCD_HandleTypeDef *hpcd) +{ + HAL_StatusTypeDef status = HAL_OK; + + /* Process locked */ + __HAL_LOCK(hpcd); + + if (hpcd->State == HAL_PCD_STATE_READY) + { + hpcd->LPMCallback = HAL_PCDEx_LPM_Callback; /* Legacy weak HAL_PCDEx_LPM_Callback */ + } + else + { + /* Update the error code */ + hpcd->ErrorCode |= HAL_PCD_ERROR_INVALID_CALLBACK; + + /* Return error status */ + status = HAL_ERROR; + } + + /* Release Lock */ + __HAL_UNLOCK(hpcd); + + return status; +} +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + +/** + * @} + */ + +/** @defgroup PCD_Exported_Functions_Group2 Input and Output operation functions + * @brief Data transfers functions + * +@verbatim + =============================================================================== + ##### IO operation functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the PCD data + transfers. + +@endverbatim + * @{ + */ + +/** + * @brief Start the USB device + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_Start(PCD_HandleTypeDef *hpcd) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + + __HAL_LOCK(hpcd); + + if ((hpcd->Init.battery_charging_enable == 1U) && + (hpcd->Init.phy_itface != USB_OTG_ULPI_PHY)) + { + /* Enable USB Transceiver */ + USBx->GCCFG |= USB_OTG_GCCFG_PWRDWN; + } + + __HAL_PCD_ENABLE(hpcd); + (void)USB_DevConnect(hpcd->Instance); + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} + +/** + * @brief Stop the USB device. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_Stop(PCD_HandleTypeDef *hpcd) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + + __HAL_LOCK(hpcd); + __HAL_PCD_DISABLE(hpcd); + (void)USB_DevDisconnect(hpcd->Instance); + + (void)USB_FlushTxFifo(hpcd->Instance, 0x10U); + + if ((hpcd->Init.battery_charging_enable == 1U) && + (hpcd->Init.phy_itface != USB_OTG_ULPI_PHY)) + { + /* Disable USB Transceiver */ + USBx->GCCFG &= ~(USB_OTG_GCCFG_PWRDWN); + } + + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} + +#if defined (USB_OTG_FS) || defined (USB_OTG_HS) +/** + * @brief Handles PCD interrupt request. + * @param hpcd PCD handle + * @retval HAL status + */ +void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + uint32_t USBx_BASE = (uint32_t)USBx; + USB_OTG_EPTypeDef *ep; + uint32_t i; + uint32_t ep_intr; + uint32_t epint; + uint32_t epnum; + uint32_t fifoemptymsk; + uint32_t RegVal; + + /* ensure that we are in device mode */ + if (USB_GetMode(hpcd->Instance) == USB_OTG_MODE_DEVICE) + { + /* avoid spurious interrupt */ + if (__HAL_PCD_IS_INVALID_INTERRUPT(hpcd)) + { + return; + } + + /* store current frame number */ + hpcd->FrameNumber = (USBx_DEVICE->DSTS & USB_OTG_DSTS_FNSOF_Msk) >> USB_OTG_DSTS_FNSOF_Pos; + + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_MMIS)) + { + /* incorrect mode, acknowledge the interrupt */ + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_MMIS); + } + + /* Handle RxQLevel Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_RXFLVL)) + { + USB_MASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL); + + RegVal = USBx->GRXSTSP; + + ep = &hpcd->OUT_ep[RegVal & USB_OTG_GRXSTSP_EPNUM]; + + if (((RegVal & USB_OTG_GRXSTSP_PKTSTS) >> 17) == STS_DATA_UPDT) + { + if ((RegVal & USB_OTG_GRXSTSP_BCNT) != 0U) + { + (void)USB_ReadPacket(USBx, ep->xfer_buff, + (uint16_t)((RegVal & USB_OTG_GRXSTSP_BCNT) >> 4)); + + ep->xfer_buff += (RegVal & USB_OTG_GRXSTSP_BCNT) >> 4; + ep->xfer_count += (RegVal & USB_OTG_GRXSTSP_BCNT) >> 4; + } + } + else if (((RegVal & USB_OTG_GRXSTSP_PKTSTS) >> 17) == STS_SETUP_UPDT) + { + (void)USB_ReadPacket(USBx, (uint8_t *)hpcd->Setup, 8U); + ep->xfer_count += (RegVal & USB_OTG_GRXSTSP_BCNT) >> 4; + } + else + { + /* ... */ + } + + USB_UNMASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL); + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_OEPINT)) + { + epnum = 0U; + + /* Read in the device interrupt bits */ + ep_intr = USB_ReadDevAllOutEpInterrupt(hpcd->Instance); + + while (ep_intr != 0U) + { + if ((ep_intr & 0x1U) != 0U) + { + epint = USB_ReadDevOutEPInterrupt(hpcd->Instance, (uint8_t)epnum); + + if ((epint & USB_OTG_DOEPINT_XFRC) == USB_OTG_DOEPINT_XFRC) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_XFRC); + (void)PCD_EP_OutXfrComplete_int(hpcd, epnum); + } + + if ((epint & USB_OTG_DOEPINT_STUP) == USB_OTG_DOEPINT_STUP) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STUP); + /* Class B setup phase done for previous decoded setup */ + (void)PCD_EP_OutSetupPacket_int(hpcd, epnum); + } + + if ((epint & USB_OTG_DOEPINT_OTEPDIS) == USB_OTG_DOEPINT_OTEPDIS) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_OTEPDIS); + } + + /* Clear OUT Endpoint disable interrupt */ + if ((epint & USB_OTG_DOEPINT_EPDISD) == USB_OTG_DOEPINT_EPDISD) + { + if ((USBx->GINTSTS & USB_OTG_GINTSTS_BOUTNAKEFF) == USB_OTG_GINTSTS_BOUTNAKEFF) + { + USBx_DEVICE->DCTL |= USB_OTG_DCTL_CGONAK; + } + + ep = &hpcd->OUT_ep[epnum]; + + if (ep->is_iso_incomplete == 1U) + { + ep->is_iso_incomplete = 0U; + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum); +#else + HAL_PCD_ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_EPDISD); + } + + /* Clear Status Phase Received interrupt */ + if ((epint & USB_OTG_DOEPINT_OTEPSPR) == USB_OTG_DOEPINT_OTEPSPR) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_OTEPSPR); + } + + /* Clear OUT NAK interrupt */ + if ((epint & USB_OTG_DOEPINT_NAK) == USB_OTG_DOEPINT_NAK) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_NAK); + } + } + epnum++; + ep_intr >>= 1U; + } + } + + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IEPINT)) + { + /* Read in the device interrupt bits */ + ep_intr = USB_ReadDevAllInEpInterrupt(hpcd->Instance); + + epnum = 0U; + + while (ep_intr != 0U) + { + if ((ep_intr & 0x1U) != 0U) /* In ITR */ + { + epint = USB_ReadDevInEPInterrupt(hpcd->Instance, (uint8_t)epnum); + + if ((epint & USB_OTG_DIEPINT_XFRC) == USB_OTG_DIEPINT_XFRC) + { + fifoemptymsk = (uint32_t)(0x1UL << (epnum & EP_ADDR_MSK)); + USBx_DEVICE->DIEPEMPMSK &= ~fifoemptymsk; + + CLEAR_IN_EP_INTR(epnum, USB_OTG_DIEPINT_XFRC); + + if (hpcd->Init.dma_enable == 1U) + { + hpcd->IN_ep[epnum].xfer_buff += hpcd->IN_ep[epnum].maxpacket; + + /* this is ZLP, so prepare EP0 for next setup */ + if ((epnum == 0U) && (hpcd->IN_ep[epnum].xfer_len == 0U)) + { + /* prepare to rx more setup packets */ + (void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup); + } + } + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataInStageCallback(hpcd, (uint8_t)epnum); +#else + HAL_PCD_DataInStageCallback(hpcd, (uint8_t)epnum); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + if ((epint & USB_OTG_DIEPINT_TOC) == USB_OTG_DIEPINT_TOC) + { + CLEAR_IN_EP_INTR(epnum, USB_OTG_DIEPINT_TOC); + } + if ((epint & USB_OTG_DIEPINT_ITTXFE) == USB_OTG_DIEPINT_ITTXFE) + { + CLEAR_IN_EP_INTR(epnum, USB_OTG_DIEPINT_ITTXFE); + } + if ((epint & USB_OTG_DIEPINT_INEPNE) == USB_OTG_DIEPINT_INEPNE) + { + CLEAR_IN_EP_INTR(epnum, USB_OTG_DIEPINT_INEPNE); + } + if ((epint & USB_OTG_DIEPINT_EPDISD) == USB_OTG_DIEPINT_EPDISD) + { + (void)USB_FlushTxFifo(USBx, epnum); + + ep = &hpcd->IN_ep[epnum]; + + if (ep->is_iso_incomplete == 1U) + { + ep->is_iso_incomplete = 0U; + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ISOINIncompleteCallback(hpcd, (uint8_t)epnum); +#else + HAL_PCD_ISOINIncompleteCallback(hpcd, (uint8_t)epnum); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + + CLEAR_IN_EP_INTR(epnum, USB_OTG_DIEPINT_EPDISD); + } + if ((epint & USB_OTG_DIEPINT_TXFE) == USB_OTG_DIEPINT_TXFE) + { + (void)PCD_WriteEmptyTxFifo(hpcd, epnum); + } + } + epnum++; + ep_intr >>= 1U; + } + } + + /* Handle Resume Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_WKUINT)) + { + /* Clear the Remote Wake-up Signaling */ + USBx_DEVICE->DCTL &= ~USB_OTG_DCTL_RWUSIG; + + if (hpcd->LPM_State == LPM_L1) + { + hpcd->LPM_State = LPM_L0; + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->LPMCallback(hpcd, PCD_LPM_L0_ACTIVE); +#else + HAL_PCDEx_LPM_Callback(hpcd, PCD_LPM_L0_ACTIVE); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else + { +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ResumeCallback(hpcd); +#else + HAL_PCD_ResumeCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_WKUINT); + } + + /* Handle Suspend Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_USBSUSP)) + { + if ((USBx_DEVICE->DSTS & USB_OTG_DSTS_SUSPSTS) == USB_OTG_DSTS_SUSPSTS) + { +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SuspendCallback(hpcd); +#else + HAL_PCD_SuspendCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_USBSUSP); + } +#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) + /* Handle LPM Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_LPMINT)) + { + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_LPMINT); + + if (hpcd->LPM_State == LPM_L0) + { + hpcd->LPM_State = LPM_L1; + hpcd->BESL = (hpcd->Instance->GLPMCFG & USB_OTG_GLPMCFG_BESL) >> 2U; + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->LPMCallback(hpcd, PCD_LPM_L1_ACTIVE); +#else + HAL_PCDEx_LPM_Callback(hpcd, PCD_LPM_L1_ACTIVE); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else + { +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SuspendCallback(hpcd); +#else + HAL_PCD_SuspendCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + } +#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */ + /* Handle Reset Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_USBRST)) + { + USBx_DEVICE->DCTL &= ~USB_OTG_DCTL_RWUSIG; + (void)USB_FlushTxFifo(hpcd->Instance, 0x10U); + + for (i = 0U; i < hpcd->Init.dev_endpoints; i++) + { + USBx_INEP(i)->DIEPINT = 0xFB7FU; + USBx_INEP(i)->DIEPCTL &= ~USB_OTG_DIEPCTL_STALL; + USBx_OUTEP(i)->DOEPINT = 0xFB7FU; + USBx_OUTEP(i)->DOEPCTL &= ~USB_OTG_DOEPCTL_STALL; + USBx_OUTEP(i)->DOEPCTL |= USB_OTG_DOEPCTL_SNAK; + } + USBx_DEVICE->DAINTMSK |= 0x10001U; + + if (hpcd->Init.use_dedicated_ep1 != 0U) + { + USBx_DEVICE->DOUTEP1MSK |= USB_OTG_DOEPMSK_STUPM | + USB_OTG_DOEPMSK_XFRCM | + USB_OTG_DOEPMSK_EPDM; + + USBx_DEVICE->DINEP1MSK |= USB_OTG_DIEPMSK_TOM | + USB_OTG_DIEPMSK_XFRCM | + USB_OTG_DIEPMSK_EPDM; + } + else + { + USBx_DEVICE->DOEPMSK |= USB_OTG_DOEPMSK_STUPM | + USB_OTG_DOEPMSK_XFRCM | + USB_OTG_DOEPMSK_EPDM | + USB_OTG_DOEPMSK_OTEPSPRM | + USB_OTG_DOEPMSK_NAKM; + + USBx_DEVICE->DIEPMSK |= USB_OTG_DIEPMSK_TOM | + USB_OTG_DIEPMSK_XFRCM | + USB_OTG_DIEPMSK_EPDM; + } + + /* Set Default Address to 0 */ + USBx_DEVICE->DCFG &= ~USB_OTG_DCFG_DAD; + + /* setup EP0 to receive SETUP packets */ + (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t)hpcd->Init.dma_enable, + (uint8_t *)hpcd->Setup); + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_USBRST); + } + + /* Handle Enumeration done Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_ENUMDNE)) + { + (void)USB_ActivateSetup(hpcd->Instance); + hpcd->Init.speed = USB_GetDevSpeed(hpcd->Instance); + + /* Set USB Turnaround time */ + (void)USB_SetTurnaroundTime(hpcd->Instance, + HAL_RCC_GetHCLKFreq(), + (uint8_t)hpcd->Init.speed); + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ResetCallback(hpcd); +#else + HAL_PCD_ResetCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_ENUMDNE); + } + + /* Handle SOF Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_SOF)) + { +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SOFCallback(hpcd); +#else + HAL_PCD_SOFCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_SOF); + } + + /* Handle Global OUT NAK effective Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_BOUTNAKEFF)) + { + USBx->GINTMSK &= ~USB_OTG_GINTMSK_GONAKEFFM; + + for (epnum = 1U; epnum < hpcd->Init.dev_endpoints; epnum++) + { + if (hpcd->OUT_ep[epnum].is_iso_incomplete == 1U) + { + /* Abort current transaction and disable the EP */ + (void)HAL_PCD_EP_Abort(hpcd, (uint8_t)epnum); + } + } + } + + /* Handle Incomplete ISO IN Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR)) + { + for (epnum = 1U; epnum < hpcd->Init.dev_endpoints; epnum++) + { + RegVal = USBx_INEP(epnum)->DIEPCTL; + + if ((hpcd->IN_ep[epnum].type == EP_TYPE_ISOC) && + ((RegVal & USB_OTG_DIEPCTL_EPENA) == USB_OTG_DIEPCTL_EPENA)) + { + hpcd->IN_ep[epnum].is_iso_incomplete = 1U; + + /* Abort current transaction and disable the EP */ + (void)HAL_PCD_EP_Abort(hpcd, (uint8_t)(epnum | 0x80U)); + } + } + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR); + } + + /* Handle Incomplete ISO OUT Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT)) + { + for (epnum = 1U; epnum < hpcd->Init.dev_endpoints; epnum++) + { + RegVal = USBx_OUTEP(epnum)->DOEPCTL; + + if ((hpcd->OUT_ep[epnum].type == EP_TYPE_ISOC) && + ((RegVal & USB_OTG_DOEPCTL_EPENA) == USB_OTG_DOEPCTL_EPENA) && + ((RegVal & (0x1U << 16)) == (hpcd->FrameNumber & 0x1U))) + { + hpcd->OUT_ep[epnum].is_iso_incomplete = 1U; + + USBx->GINTMSK |= USB_OTG_GINTMSK_GONAKEFFM; + + if ((USBx->GINTSTS & USB_OTG_GINTSTS_BOUTNAKEFF) == 0U) + { + USBx_DEVICE->DCTL |= USB_OTG_DCTL_SGONAK; + break; + } + } + } + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT); + } + + /* Handle Connection event Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_SRQINT)) + { +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->ConnectCallback(hpcd); +#else + HAL_PCD_ConnectCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + __HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_SRQINT); + } + + /* Handle Disconnection event Interrupt */ + if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_OTGINT)) + { + RegVal = hpcd->Instance->GOTGINT; + + if ((RegVal & USB_OTG_GOTGINT_SEDET) == USB_OTG_GOTGINT_SEDET) + { +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DisconnectCallback(hpcd); +#else + HAL_PCD_DisconnectCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + hpcd->Instance->GOTGINT |= RegVal; + } + } +} + + +/** + * @brief Handles PCD Wakeup interrupt request. + * @param hpcd PCD handle + * @retval HAL status + */ +void HAL_PCD_WKUP_IRQHandler(PCD_HandleTypeDef *hpcd) +{ + USB_OTG_GlobalTypeDef *USBx; + + USBx = hpcd->Instance; + + if ((USBx->CID & (0x1U << 8)) == 0U) + { + /* Clear EXTI pending Bit */ + __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG(); + } + else + { + /* Clear EXTI pending Bit */ + __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG(); + } +} +#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ + + +/** + * @brief Data OUT stage callback. + * @param hpcd PCD handle + * @param epnum endpoint number + * @retval None + */ +__weak void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + UNUSED(epnum); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_DataOutStageCallback could be implemented in the user file + */ +} + +/** + * @brief Data IN stage callback + * @param hpcd PCD handle + * @param epnum endpoint number + * @retval None + */ +__weak void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + UNUSED(epnum); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_DataInStageCallback could be implemented in the user file + */ +} +/** + * @brief Setup stage callback + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_SetupStageCallback could be implemented in the user file + */ +} + +/** + * @brief USB Start Of Frame callback. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_SOFCallback could be implemented in the user file + */ +} + +/** + * @brief USB Reset callback. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_ResetCallback could be implemented in the user file + */ +} + +/** + * @brief Suspend event callback. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_SuspendCallback could be implemented in the user file + */ +} + +/** + * @brief Resume event callback. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_ResumeCallback could be implemented in the user file + */ +} + +/** + * @brief Incomplete ISO OUT callback. + * @param hpcd PCD handle + * @param epnum endpoint number + * @retval None + */ +__weak void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + UNUSED(epnum); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_ISOOUTIncompleteCallback could be implemented in the user file + */ +} + +/** + * @brief Incomplete ISO IN callback. + * @param hpcd PCD handle + * @param epnum endpoint number + * @retval None + */ +__weak void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + UNUSED(epnum); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_ISOINIncompleteCallback could be implemented in the user file + */ +} + +/** + * @brief Connection event callback. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_ConnectCallback could be implemented in the user file + */ +} + +/** + * @brief Disconnection event callback. + * @param hpcd PCD handle + * @retval None + */ +__weak void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCD_DisconnectCallback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** @defgroup PCD_Exported_Functions_Group3 Peripheral Control functions + * @brief management functions + * +@verbatim + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the PCD data + transfers. + +@endverbatim + * @{ + */ + +/** + * @brief Connect the USB device + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_DevConnect(PCD_HandleTypeDef *hpcd) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + + __HAL_LOCK(hpcd); + + if ((hpcd->Init.battery_charging_enable == 1U) && + (hpcd->Init.phy_itface != USB_OTG_ULPI_PHY)) + { + /* Enable USB Transceiver */ + USBx->GCCFG |= USB_OTG_GCCFG_PWRDWN; + } + (void)USB_DevConnect(hpcd->Instance); + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} + +/** + * @brief Disconnect the USB device. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_DevDisconnect(PCD_HandleTypeDef *hpcd) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + + __HAL_LOCK(hpcd); + (void)USB_DevDisconnect(hpcd->Instance); + + if ((hpcd->Init.battery_charging_enable == 1U) && + (hpcd->Init.phy_itface != USB_OTG_ULPI_PHY)) + { + /* Disable USB Transceiver */ + USBx->GCCFG &= ~(USB_OTG_GCCFG_PWRDWN); + } + + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} + +/** + * @brief Set the USB Device address. + * @param hpcd PCD handle + * @param address new device address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_SetAddress(PCD_HandleTypeDef *hpcd, uint8_t address) +{ + __HAL_LOCK(hpcd); + hpcd->USB_Address = address; + (void)USB_SetDevAddress(hpcd->Instance, address); + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} +/** + * @brief Open and configure an endpoint. + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @param ep_mps endpoint max packet size + * @param ep_type endpoint type + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Open(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, + uint16_t ep_mps, uint8_t ep_type) +{ + HAL_StatusTypeDef ret = HAL_OK; + PCD_EPTypeDef *ep; + + if ((ep_addr & 0x80U) == 0x80U) + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + ep->is_in = 1U; + } + else + { + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + ep->is_in = 0U; + } + + ep->num = ep_addr & EP_ADDR_MSK; + ep->maxpacket = ep_mps; + ep->type = ep_type; + + if (ep->is_in != 0U) + { + /* Assign a Tx FIFO */ + ep->tx_fifo_num = ep->num; + } + /* Set initial data PID. */ + if (ep_type == EP_TYPE_BULK) + { + ep->data_pid_start = 0U; + } + + __HAL_LOCK(hpcd); + (void)USB_ActivateEndpoint(hpcd->Instance, ep); + __HAL_UNLOCK(hpcd); + + return ret; +} + +/** + * @brief Deactivate an endpoint. + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Close(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + PCD_EPTypeDef *ep; + + if ((ep_addr & 0x80U) == 0x80U) + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + ep->is_in = 1U; + } + else + { + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + ep->is_in = 0U; + } + ep->num = ep_addr & EP_ADDR_MSK; + + __HAL_LOCK(hpcd); + (void)USB_DeactivateEndpoint(hpcd->Instance, ep); + __HAL_UNLOCK(hpcd); + return HAL_OK; +} + + +/** + * @brief Receive an amount of data. + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @param pBuf pointer to the reception buffer + * @param len amount of data to be received + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Receive(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len) +{ + PCD_EPTypeDef *ep; + + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + + /*setup and start the Xfer */ + ep->xfer_buff = pBuf; + ep->xfer_len = len; + ep->xfer_count = 0U; + ep->is_in = 0U; + ep->num = ep_addr & EP_ADDR_MSK; + + if (hpcd->Init.dma_enable == 1U) + { + ep->dma_addr = (uint32_t)pBuf; + } + + if ((ep_addr & EP_ADDR_MSK) == 0U) + { + (void)USB_EP0StartXfer(hpcd->Instance, ep, (uint8_t)hpcd->Init.dma_enable); + } + else + { + (void)USB_EPStartXfer(hpcd->Instance, ep, (uint8_t)hpcd->Init.dma_enable); + } + + return HAL_OK; +} + +/** + * @brief Get Received Data Size + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval Data Size + */ +uint32_t HAL_PCD_EP_GetRxCount(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + return hpcd->OUT_ep[ep_addr & EP_ADDR_MSK].xfer_count; +} +/** + * @brief Send an amount of data + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @param pBuf pointer to the transmission buffer + * @param len amount of data to be sent + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Transmit(PCD_HandleTypeDef *hpcd, uint8_t ep_addr, uint8_t *pBuf, uint32_t len) +{ + PCD_EPTypeDef *ep; + + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + + /*setup and start the Xfer */ + ep->xfer_buff = pBuf; + ep->xfer_len = len; + ep->xfer_count = 0U; + ep->is_in = 1U; + ep->num = ep_addr & EP_ADDR_MSK; + + if (hpcd->Init.dma_enable == 1U) + { + ep->dma_addr = (uint32_t)pBuf; + } + + if ((ep_addr & EP_ADDR_MSK) == 0U) + { + (void)USB_EP0StartXfer(hpcd->Instance, ep, (uint8_t)hpcd->Init.dma_enable); + } + else + { + (void)USB_EPStartXfer(hpcd->Instance, ep, (uint8_t)hpcd->Init.dma_enable); + } + + return HAL_OK; +} + +/** + * @brief Set a STALL condition over an endpoint + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_SetStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + PCD_EPTypeDef *ep; + + if (((uint32_t)ep_addr & EP_ADDR_MSK) > hpcd->Init.dev_endpoints) + { + return HAL_ERROR; + } + + if ((0x80U & ep_addr) == 0x80U) + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + ep->is_in = 1U; + } + else + { + ep = &hpcd->OUT_ep[ep_addr]; + ep->is_in = 0U; + } + + ep->is_stall = 1U; + ep->num = ep_addr & EP_ADDR_MSK; + + __HAL_LOCK(hpcd); + + (void)USB_EPSetStall(hpcd->Instance, ep); + + if ((ep_addr & EP_ADDR_MSK) == 0U) + { + (void)USB_EP0_OutStart(hpcd->Instance, (uint8_t)hpcd->Init.dma_enable, (uint8_t *)hpcd->Setup); + } + + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} + +/** + * @brief Clear a STALL condition over in an endpoint + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_ClrStall(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + PCD_EPTypeDef *ep; + + if (((uint32_t)ep_addr & 0x0FU) > hpcd->Init.dev_endpoints) + { + return HAL_ERROR; + } + + if ((0x80U & ep_addr) == 0x80U) + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + ep->is_in = 1U; + } + else + { + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + ep->is_in = 0U; + } + + ep->is_stall = 0U; + ep->num = ep_addr & EP_ADDR_MSK; + + __HAL_LOCK(hpcd); + (void)USB_EPClearStall(hpcd->Instance, ep); + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} + +/** + * @brief Abort an USB EP transaction. + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Abort(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + HAL_StatusTypeDef ret; + PCD_EPTypeDef *ep; + + if ((0x80U & ep_addr) == 0x80U) + { + ep = &hpcd->IN_ep[ep_addr & EP_ADDR_MSK]; + } + else + { + ep = &hpcd->OUT_ep[ep_addr & EP_ADDR_MSK]; + } + + /* Stop Xfer */ + ret = USB_EPStopXfer(hpcd->Instance, ep); + + return ret; +} + +/** + * @brief Flush an endpoint + * @param hpcd PCD handle + * @param ep_addr endpoint address + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_EP_Flush(PCD_HandleTypeDef *hpcd, uint8_t ep_addr) +{ + __HAL_LOCK(hpcd); + + if ((ep_addr & 0x80U) == 0x80U) + { + (void)USB_FlushTxFifo(hpcd->Instance, (uint32_t)ep_addr & EP_ADDR_MSK); + } + else + { + (void)USB_FlushRxFifo(hpcd->Instance); + } + + __HAL_UNLOCK(hpcd); + + return HAL_OK; +} + +/** + * @brief Activate remote wakeup signalling + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_ActivateRemoteWakeup(PCD_HandleTypeDef *hpcd) +{ + return (USB_ActivateRemoteWakeup(hpcd->Instance)); +} + +/** + * @brief De-activate remote wakeup signalling. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_DeActivateRemoteWakeup(PCD_HandleTypeDef *hpcd) +{ + return (USB_DeActivateRemoteWakeup(hpcd->Instance)); +} + +/** + * @} + */ + +/** @defgroup PCD_Exported_Functions_Group4 Peripheral State functions + * @brief Peripheral State functions + * +@verbatim + =============================================================================== + ##### Peripheral State functions ##### + =============================================================================== + [..] + This subsection permits to get in run-time the status of the peripheral + and the data flow. + +@endverbatim + * @{ + */ + +/** + * @brief Return the PCD handle state. + * @param hpcd PCD handle + * @retval HAL state + */ +PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef *hpcd) +{ + return hpcd->State; +} + +/** + * @brief Set the USB Device high speed test mode. + * @param hpcd PCD handle + * @param testmode USB Device high speed test mode + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCD_SetTestMode(PCD_HandleTypeDef *hpcd, uint8_t testmode) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + uint32_t USBx_BASE = (uint32_t)USBx; + + switch (testmode) + { + case TEST_J: + case TEST_K: + case TEST_SE0_NAK: + case TEST_PACKET: + case TEST_FORCE_EN: + USBx_DEVICE->DCTL |= (uint32_t)testmode << 4; + break; + + default: + break; + } + + return HAL_OK; +} +/** + * @} + */ + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @addtogroup PCD_Private_Functions + * @{ + */ +#if defined (USB_OTG_FS) || defined (USB_OTG_HS) +/** + * @brief Check FIFO for the next packet to be loaded. + * @param hpcd PCD handle + * @param epnum endpoint number + * @retval HAL status + */ +static HAL_StatusTypeDef PCD_WriteEmptyTxFifo(PCD_HandleTypeDef *hpcd, uint32_t epnum) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + uint32_t USBx_BASE = (uint32_t)USBx; + USB_OTG_EPTypeDef *ep; + uint32_t len; + uint32_t len32b; + uint32_t fifoemptymsk; + + ep = &hpcd->IN_ep[epnum]; + + if (ep->xfer_count > ep->xfer_len) + { + return HAL_ERROR; + } + + len = ep->xfer_len - ep->xfer_count; + + if (len > ep->maxpacket) + { + len = ep->maxpacket; + } + + len32b = (len + 3U) / 4U; + + while (((USBx_INEP(epnum)->DTXFSTS & USB_OTG_DTXFSTS_INEPTFSAV) >= len32b) && + (ep->xfer_count < ep->xfer_len) && (ep->xfer_len != 0U)) + { + /* Write the FIFO */ + len = ep->xfer_len - ep->xfer_count; + + if (len > ep->maxpacket) + { + len = ep->maxpacket; + } + len32b = (len + 3U) / 4U; + + (void)USB_WritePacket(USBx, ep->xfer_buff, (uint8_t)epnum, (uint16_t)len, + (uint8_t)hpcd->Init.dma_enable); + + ep->xfer_buff += len; + ep->xfer_count += len; + } + + if (ep->xfer_len <= ep->xfer_count) + { + fifoemptymsk = (uint32_t)(0x1UL << (epnum & EP_ADDR_MSK)); + USBx_DEVICE->DIEPEMPMSK &= ~fifoemptymsk; + } + + return HAL_OK; +} + + +/** + * @brief process EP OUT transfer complete interrupt. + * @param hpcd PCD handle + * @param epnum endpoint number + * @retval HAL status + */ +static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint32_t epnum) +{ + USB_OTG_EPTypeDef *ep; + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t gSNPSiD = *(__IO uint32_t *)(&USBx->CID + 0x1U); + uint32_t DoepintReg = USBx_OUTEP(epnum)->DOEPINT; + + if (hpcd->Init.dma_enable == 1U) + { + if ((DoepintReg & USB_OTG_DOEPINT_STUP) == USB_OTG_DOEPINT_STUP) /* Class C */ + { + /* StupPktRcvd = 1 this is a setup packet */ + if ((gSNPSiD > USB_OTG_CORE_ID_300A) && + ((DoepintReg & USB_OTG_DOEPINT_STPKTRX) == USB_OTG_DOEPINT_STPKTRX)) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX); + } + } + else if ((DoepintReg & USB_OTG_DOEPINT_OTEPSPR) == USB_OTG_DOEPINT_OTEPSPR) /* Class E */ + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_OTEPSPR); + } + else if ((DoepintReg & (USB_OTG_DOEPINT_STUP | USB_OTG_DOEPINT_OTEPSPR)) == 0U) + { + /* StupPktRcvd = 1 this is a setup packet */ + if ((gSNPSiD > USB_OTG_CORE_ID_300A) && + ((DoepintReg & USB_OTG_DOEPINT_STPKTRX) == USB_OTG_DOEPINT_STPKTRX)) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX); + } + else + { + ep = &hpcd->OUT_ep[epnum]; + + /* out data packet received over EP */ + ep->xfer_count = ep->xfer_size - (USBx_OUTEP(epnum)->DOEPTSIZ & USB_OTG_DOEPTSIZ_XFRSIZ); + + if (epnum == 0U) + { + if (ep->xfer_len == 0U) + { + /* this is ZLP, so prepare EP0 for next setup */ + (void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup); + } + else + { + ep->xfer_buff += ep->xfer_count; + } + } + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum); +#else + HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + } + else + { + /* ... */ + } + } + else + { + if (gSNPSiD == USB_OTG_CORE_ID_310A) + { + /* StupPktRcvd = 1 this is a setup packet */ + if ((DoepintReg & USB_OTG_DOEPINT_STPKTRX) == USB_OTG_DOEPINT_STPKTRX) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX); + } + else + { + if ((DoepintReg & USB_OTG_DOEPINT_OTEPSPR) == USB_OTG_DOEPINT_OTEPSPR) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_OTEPSPR); + } + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum); +#else + HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + } + else + { + if ((epnum == 0U) && (hpcd->OUT_ep[epnum].xfer_len == 0U)) + { + /* this is ZLP, so prepare EP0 for next setup */ + (void)USB_EP0_OutStart(hpcd->Instance, 0U, (uint8_t *)hpcd->Setup); + } + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum); +#else + HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + } + + return HAL_OK; +} + + +/** + * @brief process EP OUT setup packet received interrupt. + * @param hpcd PCD handle + * @param epnum endpoint number + * @retval HAL status + */ +static HAL_StatusTypeDef PCD_EP_OutSetupPacket_int(PCD_HandleTypeDef *hpcd, uint32_t epnum) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t gSNPSiD = *(__IO uint32_t *)(&USBx->CID + 0x1U); + uint32_t DoepintReg = USBx_OUTEP(epnum)->DOEPINT; + + if ((gSNPSiD > USB_OTG_CORE_ID_300A) && + ((DoepintReg & USB_OTG_DOEPINT_STPKTRX) == USB_OTG_DOEPINT_STPKTRX)) + { + CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX); + } + + /* Inform the upper layer that a setup packet is available */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->SetupStageCallback(hpcd); +#else + HAL_PCD_SetupStageCallback(hpcd); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + + if ((gSNPSiD > USB_OTG_CORE_ID_300A) && (hpcd->Init.dma_enable == 1U)) + { + (void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup); + } + + return HAL_OK; +} +#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ + + +/** + * @} + */ +#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ +#endif /* HAL_PCD_MODULE_ENABLED */ + +/** + * @} + */ + +/** + * @} + */ diff --git a/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c new file mode 100644 index 0000000..07fcf73 --- /dev/null +++ b/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pcd_ex.c @@ -0,0 +1,341 @@ +/** + ****************************************************************************** + * @file stm32f4xx_hal_pcd_ex.c + * @author MCD Application Team + * @brief PCD Extended HAL module driver. + * This file provides firmware functions to manage the following + * functionalities of the USB Peripheral Controller: + * + Extended features functions + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f4xx_hal.h" + +/** @addtogroup STM32F4xx_HAL_Driver + * @{ + */ + +/** @defgroup PCDEx PCDEx + * @brief PCD Extended HAL module driver + * @{ + */ + +#ifdef HAL_PCD_MODULE_ENABLED + +#if defined (USB_OTG_FS) || defined (USB_OTG_HS) +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup PCDEx_Exported_Functions PCDEx Exported Functions + * @{ + */ + +/** @defgroup PCDEx_Exported_Functions_Group1 Peripheral Control functions + * @brief PCDEx control functions + * +@verbatim + =============================================================================== + ##### Extended features functions ##### + =============================================================================== + [..] This section provides functions allowing to: + (+) Update FIFO configuration + +@endverbatim + * @{ + */ +#if defined (USB_OTG_FS) || defined (USB_OTG_HS) +/** + * @brief Set Tx FIFO + * @param hpcd PCD handle + * @param fifo The number of Tx fifo + * @param size Fifo size + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCDEx_SetTxFiFo(PCD_HandleTypeDef *hpcd, uint8_t fifo, uint16_t size) +{ + uint8_t i; + uint32_t Tx_Offset; + + /* TXn min size = 16 words. (n : Transmit FIFO index) + When a TxFIFO is not used, the Configuration should be as follows: + case 1 : n > m and Txn is not used (n,m : Transmit FIFO indexes) + --> Txm can use the space allocated for Txn. + case2 : n < m and Txn is not used (n,m : Transmit FIFO indexes) + --> Txn should be configured with the minimum space of 16 words + The FIFO is used optimally when used TxFIFOs are allocated in the top + of the FIFO.Ex: use EP1 and EP2 as IN instead of EP1 and EP3 as IN ones. + When DMA is used 3n * FIFO locations should be reserved for internal DMA registers */ + + Tx_Offset = hpcd->Instance->GRXFSIZ; + + if (fifo == 0U) + { + hpcd->Instance->DIEPTXF0_HNPTXFSIZ = ((uint32_t)size << 16) | Tx_Offset; + } + else + { + Tx_Offset += (hpcd->Instance->DIEPTXF0_HNPTXFSIZ) >> 16; + for (i = 0U; i < (fifo - 1U); i++) + { + Tx_Offset += (hpcd->Instance->DIEPTXF[i] >> 16); + } + + /* Multiply Tx_Size by 2 to get higher performance */ + hpcd->Instance->DIEPTXF[fifo - 1U] = ((uint32_t)size << 16) | Tx_Offset; + } + + return HAL_OK; +} + +/** + * @brief Set Rx FIFO + * @param hpcd PCD handle + * @param size Size of Rx fifo + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCDEx_SetRxFiFo(PCD_HandleTypeDef *hpcd, uint16_t size) +{ + hpcd->Instance->GRXFSIZ = size; + + return HAL_OK; +} +#if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) +/** + * @brief Activate LPM feature. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCDEx_ActivateLPM(PCD_HandleTypeDef *hpcd) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + + hpcd->lpm_active = 1U; + hpcd->LPM_State = LPM_L0; + USBx->GINTMSK |= USB_OTG_GINTMSK_LPMINTM; + USBx->GLPMCFG |= (USB_OTG_GLPMCFG_LPMEN | USB_OTG_GLPMCFG_LPMACK | USB_OTG_GLPMCFG_ENBESL); + + return HAL_OK; +} + +/** + * @brief Deactivate LPM feature. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCDEx_DeActivateLPM(PCD_HandleTypeDef *hpcd) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + + hpcd->lpm_active = 0U; + USBx->GINTMSK &= ~USB_OTG_GINTMSK_LPMINTM; + USBx->GLPMCFG &= ~(USB_OTG_GLPMCFG_LPMEN | USB_OTG_GLPMCFG_LPMACK | USB_OTG_GLPMCFG_ENBESL); + + return HAL_OK; +} +#endif /* defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */ +#if defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) +/** + * @brief Handle BatteryCharging Process. + * @param hpcd PCD handle + * @retval HAL status + */ +void HAL_PCDEx_BCD_VBUSDetect(PCD_HandleTypeDef *hpcd) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + uint32_t tickstart = HAL_GetTick(); + + /* Enable DCD : Data Contact Detect */ + USBx->GCCFG |= USB_OTG_GCCFG_DCDEN; + + /* Wait for Min DCD Timeout */ + HAL_Delay(300U); + + /* Check Detect flag */ + if ((USBx->GCCFG & USB_OTG_GCCFG_DCDET) == USB_OTG_GCCFG_DCDET) + { +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->BCDCallback(hpcd, PCD_BCD_CONTACT_DETECTION); +#else + HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_CONTACT_DETECTION); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + + /* Primary detection: checks if connected to Standard Downstream Port + (without charging capability) */ + USBx->GCCFG &= ~ USB_OTG_GCCFG_DCDEN; + HAL_Delay(50U); + USBx->GCCFG |= USB_OTG_GCCFG_PDEN; + HAL_Delay(50U); + + if ((USBx->GCCFG & USB_OTG_GCCFG_PDET) == 0U) + { + /* Case of Standard Downstream Port */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->BCDCallback(hpcd, PCD_BCD_STD_DOWNSTREAM_PORT); +#else + HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_STD_DOWNSTREAM_PORT); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else + { + /* start secondary detection to check connection to Charging Downstream + Port or Dedicated Charging Port */ + USBx->GCCFG &= ~ USB_OTG_GCCFG_PDEN; + HAL_Delay(50U); + USBx->GCCFG |= USB_OTG_GCCFG_SDEN; + HAL_Delay(50U); + + if ((USBx->GCCFG & USB_OTG_GCCFG_SDET) == USB_OTG_GCCFG_SDET) + { + /* case Dedicated Charging Port */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->BCDCallback(hpcd, PCD_BCD_DEDICATED_CHARGING_PORT); +#else + HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_DEDICATED_CHARGING_PORT); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else + { + /* case Charging Downstream Port */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->BCDCallback(hpcd, PCD_BCD_CHARGING_DOWNSTREAM_PORT); +#else + HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_CHARGING_DOWNSTREAM_PORT); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + } + + /* Battery Charging capability discovery finished */ + (void)HAL_PCDEx_DeActivateBCD(hpcd); + + /* Check for the Timeout, else start USB Device */ + if ((HAL_GetTick() - tickstart) > 1000U) + { +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->BCDCallback(hpcd, PCD_BCD_ERROR); +#else + HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_ERROR); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } + else + { +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + hpcd->BCDCallback(hpcd, PCD_BCD_DISCOVERY_COMPLETED); +#else + HAL_PCDEx_BCD_Callback(hpcd, PCD_BCD_DISCOVERY_COMPLETED); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + } +} + +/** + * @brief Activate BatteryCharging feature. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCDEx_ActivateBCD(PCD_HandleTypeDef *hpcd) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + + USBx->GCCFG &= ~(USB_OTG_GCCFG_PDEN); + USBx->GCCFG &= ~(USB_OTG_GCCFG_SDEN); + + /* Power Down USB transceiver */ + USBx->GCCFG &= ~(USB_OTG_GCCFG_PWRDWN); + + /* Enable Battery charging */ + USBx->GCCFG |= USB_OTG_GCCFG_BCDEN; + + hpcd->battery_charging_active = 1U; + + return HAL_OK; +} + +/** + * @brief Deactivate BatteryCharging feature. + * @param hpcd PCD handle + * @retval HAL status + */ +HAL_StatusTypeDef HAL_PCDEx_DeActivateBCD(PCD_HandleTypeDef *hpcd) +{ + USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; + + USBx->GCCFG &= ~(USB_OTG_GCCFG_SDEN); + USBx->GCCFG &= ~(USB_OTG_GCCFG_PDEN); + + /* Disable Battery charging */ + USBx->GCCFG &= ~(USB_OTG_GCCFG_BCDEN); + + hpcd->battery_charging_active = 0U; + + return HAL_OK; +} +#endif /* defined(STM32F412Zx) || defined(STM32F412Vx) || defined(STM32F412Rx) || defined(STM32F412Cx) || defined(STM32F413xx) || defined(STM32F423xx) */ +#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ + +/** + * @brief Send LPM message to user layer callback. + * @param hpcd PCD handle + * @param msg LPM message + * @retval HAL status + */ +__weak void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + UNUSED(msg); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCDEx_LPM_Callback could be implemented in the user file + */ +} + +/** + * @brief Send BatteryCharging message to user layer callback. + * @param hpcd PCD handle + * @param msg LPM message + * @retval HAL status + */ +__weak void HAL_PCDEx_BCD_Callback(PCD_HandleTypeDef *hpcd, PCD_BCD_MsgTypeDef msg) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(hpcd); + UNUSED(msg); + + /* NOTE : This function should not be modified, when the callback is needed, + the HAL_PCDEx_BCD_Callback could be implemented in the user file + */ +} + +/** + * @} + */ + +/** + * @} + */ +#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */ +#endif /* HAL_PCD_MODULE_ENABLED */ + +/** + * @} + */ + +/** + * @} + */ diff --git a/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h b/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h new file mode 100644 index 0000000..83a0b2e --- /dev/null +++ b/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h @@ -0,0 +1,179 @@ +/** + ****************************************************************************** + * @file usbd_cdc.h + * @author MCD Application Team + * @brief header file for the usbd_cdc.c file. + ****************************************************************************** + * @attention + * + * Copyright (c) 2015 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_CDC_H +#define __USB_CDC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_ioreq.h" + +/** @addtogroup STM32_USB_DEVICE_LIBRARY + * @{ + */ + +/** @defgroup usbd_cdc + * @brief This file is the Header file for usbd_cdc.c + * @{ + */ + + +/** @defgroup usbd_cdc_Exported_Defines + * @{ + */ +#ifndef CDC_IN_EP +#define CDC_IN_EP 0x81U /* EP1 for data IN */ +#endif /* CDC_IN_EP */ +#ifndef CDC_OUT_EP +#define CDC_OUT_EP 0x01U /* EP1 for data OUT */ +#endif /* CDC_OUT_EP */ +#ifndef CDC_CMD_EP +#define CDC_CMD_EP 0x82U /* EP2 for CDC commands */ +#endif /* CDC_CMD_EP */ + +#ifndef CDC_HS_BINTERVAL +#define CDC_HS_BINTERVAL 0x10U +#endif /* CDC_HS_BINTERVAL */ + +#ifndef CDC_FS_BINTERVAL +#define CDC_FS_BINTERVAL 0x10U +#endif /* CDC_FS_BINTERVAL */ + +/* CDC Endpoints parameters: you can fine tune these values depending on the needed baudrates and performance. */ +#define CDC_DATA_HS_MAX_PACKET_SIZE 512U /* Endpoint IN & OUT Packet size */ +#define CDC_DATA_FS_MAX_PACKET_SIZE 64U /* Endpoint IN & OUT Packet size */ +#define CDC_CMD_PACKET_SIZE 8U /* Control Endpoint Packet size */ + +#define USB_CDC_CONFIG_DESC_SIZ 67U +#define CDC_DATA_HS_IN_PACKET_SIZE CDC_DATA_HS_MAX_PACKET_SIZE +#define CDC_DATA_HS_OUT_PACKET_SIZE CDC_DATA_HS_MAX_PACKET_SIZE + +#define CDC_DATA_FS_IN_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE +#define CDC_DATA_FS_OUT_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE + +#define CDC_REQ_MAX_DATA_SIZE 0x7U +/*---------------------------------------------------------------------*/ +/* CDC definitions */ +/*---------------------------------------------------------------------*/ +#define CDC_SEND_ENCAPSULATED_COMMAND 0x00U +#define CDC_GET_ENCAPSULATED_RESPONSE 0x01U +#define CDC_SET_COMM_FEATURE 0x02U +#define CDC_GET_COMM_FEATURE 0x03U +#define CDC_CLEAR_COMM_FEATURE 0x04U +#define CDC_SET_LINE_CODING 0x20U +#define CDC_GET_LINE_CODING 0x21U +#define CDC_SET_CONTROL_LINE_STATE 0x22U +#define CDC_SEND_BREAK 0x23U + +/** + * @} + */ + + +/** @defgroup USBD_CORE_Exported_TypesDefinitions + * @{ + */ + +/** + * @} + */ +typedef struct +{ + uint32_t bitrate; + uint8_t format; + uint8_t paritytype; + uint8_t datatype; +} USBD_CDC_LineCodingTypeDef; + +typedef struct _USBD_CDC_Itf +{ + int8_t (* Init)(void); + int8_t (* DeInit)(void); + int8_t (* Control)(uint8_t cmd, uint8_t *pbuf, uint16_t length); + int8_t (* Receive)(uint8_t *Buf, uint32_t *Len); + int8_t (* TransmitCplt)(uint8_t *Buf, uint32_t *Len, uint8_t epnum); +} USBD_CDC_ItfTypeDef; + + +typedef struct +{ + uint32_t data[CDC_DATA_HS_MAX_PACKET_SIZE / 4U]; /* Force 32-bit alignment */ + uint8_t CmdOpCode; + uint8_t CmdLength; + uint8_t *RxBuffer; + uint8_t *TxBuffer; + uint32_t RxLength; + uint32_t TxLength; + + __IO uint32_t TxState; + __IO uint32_t RxState; +} USBD_CDC_HandleTypeDef; + + + +/** @defgroup USBD_CORE_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_CORE_Exported_Variables + * @{ + */ + +extern USBD_ClassTypeDef USBD_CDC; +#define USBD_CDC_CLASS &USBD_CDC +/** + * @} + */ + +/** @defgroup USB_CORE_Exported_Functions + * @{ + */ +uint8_t USBD_CDC_RegisterInterface(USBD_HandleTypeDef *pdev, + USBD_CDC_ItfTypeDef *fops); + +uint8_t USBD_CDC_SetTxBuffer(USBD_HandleTypeDef *pdev, uint8_t *pbuff, + uint32_t length); + +uint8_t USBD_CDC_SetRxBuffer(USBD_HandleTypeDef *pdev, uint8_t *pbuff); +uint8_t USBD_CDC_ReceivePacket(USBD_HandleTypeDef *pdev); +uint8_t USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USB_CDC_H */ +/** + * @} + */ + +/** + * @} + */ + diff --git a/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c b/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c new file mode 100644 index 0000000..fbaf949 --- /dev/null +++ b/Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c @@ -0,0 +1,875 @@ +/** + ****************************************************************************** + * @file usbd_cdc.c + * @author MCD Application Team + * @brief This file provides the high layer firmware functions to manage the + * following functionalities of the USB CDC Class: + * - Initialization and Configuration of high and low layer + * - Enumeration as CDC Device (and enumeration for each implemented memory interface) + * - OUT/IN data transfer + * - Command IN transfer (class requests management) + * - Error management + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2015 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + * @verbatim + * + * =================================================================== + * CDC Class Driver Description + * =================================================================== + * This driver manages the "Universal Serial Bus Class Definitions for Communications Devices + * Revision 1.2 November 16, 2007" and the sub-protocol specification of "Universal Serial Bus + * Communications Class Subclass Specification for PSTN Devices Revision 1.2 February 9, 2007" + * This driver implements the following aspects of the specification: + * - Device descriptor management + * - Configuration descriptor management + * - Enumeration as CDC device with 2 data endpoints (IN and OUT) and 1 command endpoint (IN) + * - Requests management (as described in section 6.2 in specification) + * - Abstract Control Model compliant + * - Union Functional collection (using 1 IN endpoint for control) + * - Data interface class + * + * These aspects may be enriched or modified for a specific user application. + * + * This driver doesn't implement the following aspects of the specification + * (but it is possible to manage these features with some modifications on this driver): + * - Any class-specific aspect relative to communication classes should be managed by user application. + * - All communication classes other than PSTN are not managed + * + * @endverbatim + * + ****************************************************************************** + */ + +/* BSPDependencies +- "stm32xxxxx_{eval}{discovery}{nucleo_144}.c" +- "stm32xxxxx_{eval}{discovery}_io.c" +EndBSPDependencies */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_cdc.h" +#include "usbd_ctlreq.h" + + +/** @addtogroup STM32_USB_DEVICE_LIBRARY + * @{ + */ + + +/** @defgroup USBD_CDC + * @brief usbd core module + * @{ + */ + +/** @defgroup USBD_CDC_Private_TypesDefinitions + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_CDC_Private_Defines + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_CDC_Private_Macros + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_CDC_Private_FunctionPrototypes + * @{ + */ + +static uint8_t USBD_CDC_Init(USBD_HandleTypeDef *pdev, uint8_t cfgidx); +static uint8_t USBD_CDC_DeInit(USBD_HandleTypeDef *pdev, uint8_t cfgidx); +static uint8_t USBD_CDC_Setup(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); +static uint8_t USBD_CDC_DataIn(USBD_HandleTypeDef *pdev, uint8_t epnum); +static uint8_t USBD_CDC_DataOut(USBD_HandleTypeDef *pdev, uint8_t epnum); +static uint8_t USBD_CDC_EP0_RxReady(USBD_HandleTypeDef *pdev); +#ifndef USE_USBD_COMPOSITE +static uint8_t *USBD_CDC_GetFSCfgDesc(uint16_t *length); +static uint8_t *USBD_CDC_GetHSCfgDesc(uint16_t *length); +static uint8_t *USBD_CDC_GetOtherSpeedCfgDesc(uint16_t *length); +static uint8_t *USBD_CDC_GetOtherSpeedCfgDesc(uint16_t *length); +uint8_t *USBD_CDC_GetDeviceQualifierDescriptor(uint16_t *length); +#endif /* USE_USBD_COMPOSITE */ + +#ifndef USE_USBD_COMPOSITE +/* USB Standard Device Descriptor */ +__ALIGN_BEGIN static uint8_t USBD_CDC_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END = +{ + USB_LEN_DEV_QUALIFIER_DESC, + USB_DESC_TYPE_DEVICE_QUALIFIER, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x40, + 0x01, + 0x00, +}; +#endif /* USE_USBD_COMPOSITE */ +/** + * @} + */ + +/** @defgroup USBD_CDC_Private_Variables + * @{ + */ + + +/* CDC interface class callbacks structure */ +USBD_ClassTypeDef USBD_CDC = +{ + USBD_CDC_Init, + USBD_CDC_DeInit, + USBD_CDC_Setup, + NULL, /* EP0_TxSent */ + USBD_CDC_EP0_RxReady, + USBD_CDC_DataIn, + USBD_CDC_DataOut, + NULL, + NULL, + NULL, +#ifdef USE_USBD_COMPOSITE + NULL, + NULL, + NULL, + NULL, +#else + USBD_CDC_GetHSCfgDesc, + USBD_CDC_GetFSCfgDesc, + USBD_CDC_GetOtherSpeedCfgDesc, + USBD_CDC_GetDeviceQualifierDescriptor, +#endif /* USE_USBD_COMPOSITE */ +}; + +#ifndef USE_USBD_COMPOSITE +/* USB CDC device Configuration Descriptor */ +__ALIGN_BEGIN static uint8_t USBD_CDC_CfgDesc[USB_CDC_CONFIG_DESC_SIZ] __ALIGN_END = +{ + /* Configuration Descriptor */ + 0x09, /* bLength: Configuration Descriptor size */ + USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */ + USB_CDC_CONFIG_DESC_SIZ, /* wTotalLength */ + 0x00, + 0x02, /* bNumInterfaces: 2 interfaces */ + 0x01, /* bConfigurationValue: Configuration value */ + 0x00, /* iConfiguration: Index of string descriptor + describing the configuration */ +#if (USBD_SELF_POWERED == 1U) + 0xC0, /* bmAttributes: Bus Powered according to user configuration */ +#else + 0x80, /* bmAttributes: Bus Powered according to user configuration */ +#endif /* USBD_SELF_POWERED */ + USBD_MAX_POWER, /* MaxPower (mA) */ + + /*---------------------------------------------------------------------------*/ + + /* Interface Descriptor */ + 0x09, /* bLength: Interface Descriptor size */ + USB_DESC_TYPE_INTERFACE, /* bDescriptorType: Interface */ + /* Interface descriptor type */ + 0x00, /* bInterfaceNumber: Number of Interface */ + 0x00, /* bAlternateSetting: Alternate setting */ + 0x01, /* bNumEndpoints: One endpoint used */ + 0x02, /* bInterfaceClass: Communication Interface Class */ + 0x02, /* bInterfaceSubClass: Abstract Control Model */ + 0x01, /* bInterfaceProtocol: Common AT commands */ + 0x00, /* iInterface */ + + /* Header Functional Descriptor */ + 0x05, /* bLength: Endpoint Descriptor size */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x00, /* bDescriptorSubtype: Header Func Desc */ + 0x10, /* bcdCDC: spec release number */ + 0x01, + + /* Call Management Functional Descriptor */ + 0x05, /* bFunctionLength */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x01, /* bDescriptorSubtype: Call Management Func Desc */ + 0x00, /* bmCapabilities: D0+D1 */ + 0x01, /* bDataInterface */ + + /* ACM Functional Descriptor */ + 0x04, /* bFunctionLength */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x02, /* bDescriptorSubtype: Abstract Control Management desc */ + 0x02, /* bmCapabilities */ + + /* Union Functional Descriptor */ + 0x05, /* bFunctionLength */ + 0x24, /* bDescriptorType: CS_INTERFACE */ + 0x06, /* bDescriptorSubtype: Union func desc */ + 0x00, /* bMasterInterface: Communication class interface */ + 0x01, /* bSlaveInterface0: Data Class Interface */ + + /* Endpoint 2 Descriptor */ + 0x07, /* bLength: Endpoint Descriptor size */ + USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */ + CDC_CMD_EP, /* bEndpointAddress */ + 0x03, /* bmAttributes: Interrupt */ + LOBYTE(CDC_CMD_PACKET_SIZE), /* wMaxPacketSize */ + HIBYTE(CDC_CMD_PACKET_SIZE), + CDC_FS_BINTERVAL, /* bInterval */ + /*---------------------------------------------------------------------------*/ + + /* Data class interface descriptor */ + 0x09, /* bLength: Endpoint Descriptor size */ + USB_DESC_TYPE_INTERFACE, /* bDescriptorType: */ + 0x01, /* bInterfaceNumber: Number of Interface */ + 0x00, /* bAlternateSetting: Alternate setting */ + 0x02, /* bNumEndpoints: Two endpoints used */ + 0x0A, /* bInterfaceClass: CDC */ + 0x00, /* bInterfaceSubClass */ + 0x00, /* bInterfaceProtocol */ + 0x00, /* iInterface */ + + /* Endpoint OUT Descriptor */ + 0x07, /* bLength: Endpoint Descriptor size */ + USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */ + CDC_OUT_EP, /* bEndpointAddress */ + 0x02, /* bmAttributes: Bulk */ + LOBYTE(CDC_DATA_FS_MAX_PACKET_SIZE), /* wMaxPacketSize */ + HIBYTE(CDC_DATA_FS_MAX_PACKET_SIZE), + 0x00, /* bInterval */ + + /* Endpoint IN Descriptor */ + 0x07, /* bLength: Endpoint Descriptor size */ + USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */ + CDC_IN_EP, /* bEndpointAddress */ + 0x02, /* bmAttributes: Bulk */ + LOBYTE(CDC_DATA_FS_MAX_PACKET_SIZE), /* wMaxPacketSize */ + HIBYTE(CDC_DATA_FS_MAX_PACKET_SIZE), + 0x00 /* bInterval */ +}; +#endif /* USE_USBD_COMPOSITE */ + +static uint8_t CDCInEpAdd = CDC_IN_EP; +static uint8_t CDCOutEpAdd = CDC_OUT_EP; +static uint8_t CDCCmdEpAdd = CDC_CMD_EP; + +/** + * @} + */ + +/** @defgroup USBD_CDC_Private_Functions + * @{ + */ + +/** + * @brief USBD_CDC_Init + * Initialize the CDC interface + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_CDC_Init(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + UNUSED(cfgidx); + USBD_CDC_HandleTypeDef *hcdc; + + hcdc = (USBD_CDC_HandleTypeDef *)USBD_malloc(sizeof(USBD_CDC_HandleTypeDef)); + + if (hcdc == NULL) + { + pdev->pClassDataCmsit[pdev->classId] = NULL; + return (uint8_t)USBD_EMEM; + } + + (void)USBD_memset(hcdc, 0, sizeof(USBD_CDC_HandleTypeDef)); + + pdev->pClassDataCmsit[pdev->classId] = (void *)hcdc; + pdev->pClassData = pdev->pClassDataCmsit[pdev->classId]; + +#ifdef USE_USBD_COMPOSITE + /* Get the Endpoints addresses allocated for this class instance */ + CDCInEpAdd = USBD_CoreGetEPAdd(pdev, USBD_EP_IN, USBD_EP_TYPE_BULK); + CDCOutEpAdd = USBD_CoreGetEPAdd(pdev, USBD_EP_OUT, USBD_EP_TYPE_BULK); + CDCCmdEpAdd = USBD_CoreGetEPAdd(pdev, USBD_EP_IN, USBD_EP_TYPE_INTR); +#endif /* USE_USBD_COMPOSITE */ + + if (pdev->dev_speed == USBD_SPEED_HIGH) + { + /* Open EP IN */ + (void)USBD_LL_OpenEP(pdev, CDCInEpAdd, USBD_EP_TYPE_BULK, + CDC_DATA_HS_IN_PACKET_SIZE); + + pdev->ep_in[CDCInEpAdd & 0xFU].is_used = 1U; + + /* Open EP OUT */ + (void)USBD_LL_OpenEP(pdev, CDCOutEpAdd, USBD_EP_TYPE_BULK, + CDC_DATA_HS_OUT_PACKET_SIZE); + + pdev->ep_out[CDCOutEpAdd & 0xFU].is_used = 1U; + + /* Set bInterval for CDC CMD Endpoint */ + pdev->ep_in[CDCCmdEpAdd & 0xFU].bInterval = CDC_HS_BINTERVAL; + } + else + { + /* Open EP IN */ + (void)USBD_LL_OpenEP(pdev, CDCInEpAdd, USBD_EP_TYPE_BULK, + CDC_DATA_FS_IN_PACKET_SIZE); + + pdev->ep_in[CDCInEpAdd & 0xFU].is_used = 1U; + + /* Open EP OUT */ + (void)USBD_LL_OpenEP(pdev, CDCOutEpAdd, USBD_EP_TYPE_BULK, + CDC_DATA_FS_OUT_PACKET_SIZE); + + pdev->ep_out[CDCOutEpAdd & 0xFU].is_used = 1U; + + /* Set bInterval for CMD Endpoint */ + pdev->ep_in[CDCCmdEpAdd & 0xFU].bInterval = CDC_FS_BINTERVAL; + } + + /* Open Command IN EP */ + (void)USBD_LL_OpenEP(pdev, CDCCmdEpAdd, USBD_EP_TYPE_INTR, CDC_CMD_PACKET_SIZE); + pdev->ep_in[CDCCmdEpAdd & 0xFU].is_used = 1U; + + hcdc->RxBuffer = NULL; + + /* Init physical Interface components */ + ((USBD_CDC_ItfTypeDef *)pdev->pUserData[pdev->classId])->Init(); + + /* Init Xfer states */ + hcdc->TxState = 0U; + hcdc->RxState = 0U; + + if (hcdc->RxBuffer == NULL) + { + return (uint8_t)USBD_EMEM; + } + + if (pdev->dev_speed == USBD_SPEED_HIGH) + { + /* Prepare Out endpoint to receive next packet */ + (void)USBD_LL_PrepareReceive(pdev, CDCOutEpAdd, hcdc->RxBuffer, + CDC_DATA_HS_OUT_PACKET_SIZE); + } + else + { + /* Prepare Out endpoint to receive next packet */ + (void)USBD_LL_PrepareReceive(pdev, CDCOutEpAdd, hcdc->RxBuffer, + CDC_DATA_FS_OUT_PACKET_SIZE); + } + + return (uint8_t)USBD_OK; +} + +/** + * @brief USBD_CDC_Init + * DeInitialize the CDC layer + * @param pdev: device instance + * @param cfgidx: Configuration index + * @retval status + */ +static uint8_t USBD_CDC_DeInit(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + UNUSED(cfgidx); + + +#ifdef USE_USBD_COMPOSITE + /* Get the Endpoints addresses allocated for this CDC class instance */ + CDCInEpAdd = USBD_CoreGetEPAdd(pdev, USBD_EP_IN, USBD_EP_TYPE_BULK); + CDCOutEpAdd = USBD_CoreGetEPAdd(pdev, USBD_EP_OUT, USBD_EP_TYPE_BULK); + CDCCmdEpAdd = USBD_CoreGetEPAdd(pdev, USBD_EP_IN, USBD_EP_TYPE_INTR); +#endif /* USE_USBD_COMPOSITE */ + + /* Close EP IN */ + (void)USBD_LL_CloseEP(pdev, CDCInEpAdd); + pdev->ep_in[CDCInEpAdd & 0xFU].is_used = 0U; + + /* Close EP OUT */ + (void)USBD_LL_CloseEP(pdev, CDCOutEpAdd); + pdev->ep_out[CDCOutEpAdd & 0xFU].is_used = 0U; + + /* Close Command IN EP */ + (void)USBD_LL_CloseEP(pdev, CDCCmdEpAdd); + pdev->ep_in[CDCCmdEpAdd & 0xFU].is_used = 0U; + pdev->ep_in[CDCCmdEpAdd & 0xFU].bInterval = 0U; + + /* DeInit physical Interface components */ + if (pdev->pClassDataCmsit[pdev->classId] != NULL) + { + ((USBD_CDC_ItfTypeDef *)pdev->pUserData[pdev->classId])->DeInit(); + (void)USBD_free(pdev->pClassDataCmsit[pdev->classId]); + pdev->pClassDataCmsit[pdev->classId] = NULL; + pdev->pClassData = NULL; + } + + return (uint8_t)USBD_OK; +} + +/** + * @brief USBD_CDC_Setup + * Handle the CDC specific requests + * @param pdev: instance + * @param req: usb requests + * @retval status + */ +static uint8_t USBD_CDC_Setup(USBD_HandleTypeDef *pdev, + USBD_SetupReqTypedef *req) +{ + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *)pdev->pClassDataCmsit[pdev->classId]; + uint16_t len; + uint8_t ifalt = 0U; + uint16_t status_info = 0U; + USBD_StatusTypeDef ret = USBD_OK; + + if (hcdc == NULL) + { + return (uint8_t)USBD_FAIL; + } + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + { + case USB_REQ_TYPE_CLASS: + if (req->wLength != 0U) + { + if ((req->bmRequest & 0x80U) != 0U) + { + ((USBD_CDC_ItfTypeDef *)pdev->pUserData[pdev->classId])->Control(req->bRequest, + (uint8_t *)hcdc->data, + req->wLength); + + len = MIN(CDC_REQ_MAX_DATA_SIZE, req->wLength); + (void)USBD_CtlSendData(pdev, (uint8_t *)hcdc->data, len); + } + else + { + hcdc->CmdOpCode = req->bRequest; + hcdc->CmdLength = (uint8_t)MIN(req->wLength, USB_MAX_EP0_SIZE); + + (void)USBD_CtlPrepareRx(pdev, (uint8_t *)hcdc->data, hcdc->CmdLength); + } + } + else + { + ((USBD_CDC_ItfTypeDef *)pdev->pUserData[pdev->classId])->Control(req->bRequest, + (uint8_t *)req, 0U); + } + break; + + case USB_REQ_TYPE_STANDARD: + switch (req->bRequest) + { + case USB_REQ_GET_STATUS: + if (pdev->dev_state == USBD_STATE_CONFIGURED) + { + (void)USBD_CtlSendData(pdev, (uint8_t *)&status_info, 2U); + } + else + { + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + } + break; + + case USB_REQ_GET_INTERFACE: + if (pdev->dev_state == USBD_STATE_CONFIGURED) + { + (void)USBD_CtlSendData(pdev, &ifalt, 1U); + } + else + { + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + } + break; + + case USB_REQ_SET_INTERFACE: + if (pdev->dev_state != USBD_STATE_CONFIGURED) + { + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + } + break; + + case USB_REQ_CLEAR_FEATURE: + break; + + default: + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + break; + } + break; + + default: + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + break; + } + + return (uint8_t)ret; +} + +/** + * @brief USBD_CDC_DataIn + * Data sent on non-control IN endpoint + * @param pdev: device instance + * @param epnum: endpoint number + * @retval status + */ +static uint8_t USBD_CDC_DataIn(USBD_HandleTypeDef *pdev, uint8_t epnum) +{ + USBD_CDC_HandleTypeDef *hcdc; + PCD_HandleTypeDef *hpcd = (PCD_HandleTypeDef *)pdev->pData; + + if (pdev->pClassDataCmsit[pdev->classId] == NULL) + { + return (uint8_t)USBD_FAIL; + } + + hcdc = (USBD_CDC_HandleTypeDef *)pdev->pClassDataCmsit[pdev->classId]; + + if ((pdev->ep_in[epnum & 0xFU].total_length > 0U) && + ((pdev->ep_in[epnum & 0xFU].total_length % hpcd->IN_ep[epnum & 0xFU].maxpacket) == 0U)) + { + /* Update the packet total length */ + pdev->ep_in[epnum & 0xFU].total_length = 0U; + + /* Send ZLP */ + (void)USBD_LL_Transmit(pdev, epnum, NULL, 0U); + } + else + { + hcdc->TxState = 0U; + + if (((USBD_CDC_ItfTypeDef *)pdev->pUserData[pdev->classId])->TransmitCplt != NULL) + { + ((USBD_CDC_ItfTypeDef *)pdev->pUserData[pdev->classId])->TransmitCplt(hcdc->TxBuffer, &hcdc->TxLength, epnum); + } + } + + return (uint8_t)USBD_OK; +} + +/** + * @brief USBD_CDC_DataOut + * Data received on non-control Out endpoint + * @param pdev: device instance + * @param epnum: endpoint number + * @retval status + */ +static uint8_t USBD_CDC_DataOut(USBD_HandleTypeDef *pdev, uint8_t epnum) +{ + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *)pdev->pClassDataCmsit[pdev->classId]; + + if (pdev->pClassDataCmsit[pdev->classId] == NULL) + { + return (uint8_t)USBD_FAIL; + } + + /* Get the received data length */ + hcdc->RxLength = USBD_LL_GetRxDataSize(pdev, epnum); + + /* USB data will be immediately processed, this allow next USB traffic being + NAKed till the end of the application Xfer */ + + ((USBD_CDC_ItfTypeDef *)pdev->pUserData[pdev->classId])->Receive(hcdc->RxBuffer, &hcdc->RxLength); + + return (uint8_t)USBD_OK; +} + +/** + * @brief USBD_CDC_EP0_RxReady + * Handle EP0 Rx Ready event + * @param pdev: device instance + * @retval status + */ +static uint8_t USBD_CDC_EP0_RxReady(USBD_HandleTypeDef *pdev) +{ + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *)pdev->pClassDataCmsit[pdev->classId]; + + if (hcdc == NULL) + { + return (uint8_t)USBD_FAIL; + } + + if ((pdev->pUserData[pdev->classId] != NULL) && (hcdc->CmdOpCode != 0xFFU)) + { + ((USBD_CDC_ItfTypeDef *)pdev->pUserData[pdev->classId])->Control(hcdc->CmdOpCode, + (uint8_t *)hcdc->data, + (uint16_t)hcdc->CmdLength); + hcdc->CmdOpCode = 0xFFU; + } + + return (uint8_t)USBD_OK; +} +#ifndef USE_USBD_COMPOSITE +/** + * @brief USBD_CDC_GetFSCfgDesc + * Return configuration descriptor + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +static uint8_t *USBD_CDC_GetFSCfgDesc(uint16_t *length) +{ + USBD_EpDescTypeDef *pEpCmdDesc = USBD_GetEpDesc(USBD_CDC_CfgDesc, CDC_CMD_EP); + USBD_EpDescTypeDef *pEpOutDesc = USBD_GetEpDesc(USBD_CDC_CfgDesc, CDC_OUT_EP); + USBD_EpDescTypeDef *pEpInDesc = USBD_GetEpDesc(USBD_CDC_CfgDesc, CDC_IN_EP); + + if (pEpCmdDesc != NULL) + { + pEpCmdDesc->bInterval = CDC_FS_BINTERVAL; + } + + if (pEpOutDesc != NULL) + { + pEpOutDesc->wMaxPacketSize = CDC_DATA_FS_MAX_PACKET_SIZE; + } + + if (pEpInDesc != NULL) + { + pEpInDesc->wMaxPacketSize = CDC_DATA_FS_MAX_PACKET_SIZE; + } + + *length = (uint16_t)sizeof(USBD_CDC_CfgDesc); + return USBD_CDC_CfgDesc; +} + +/** + * @brief USBD_CDC_GetHSCfgDesc + * Return configuration descriptor + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +static uint8_t *USBD_CDC_GetHSCfgDesc(uint16_t *length) +{ + USBD_EpDescTypeDef *pEpCmdDesc = USBD_GetEpDesc(USBD_CDC_CfgDesc, CDC_CMD_EP); + USBD_EpDescTypeDef *pEpOutDesc = USBD_GetEpDesc(USBD_CDC_CfgDesc, CDC_OUT_EP); + USBD_EpDescTypeDef *pEpInDesc = USBD_GetEpDesc(USBD_CDC_CfgDesc, CDC_IN_EP); + + if (pEpCmdDesc != NULL) + { + pEpCmdDesc->bInterval = CDC_HS_BINTERVAL; + } + + if (pEpOutDesc != NULL) + { + pEpOutDesc->wMaxPacketSize = CDC_DATA_HS_MAX_PACKET_SIZE; + } + + if (pEpInDesc != NULL) + { + pEpInDesc->wMaxPacketSize = CDC_DATA_HS_MAX_PACKET_SIZE; + } + + *length = (uint16_t)sizeof(USBD_CDC_CfgDesc); + return USBD_CDC_CfgDesc; +} + +/** + * @brief USBD_CDC_GetOtherSpeedCfgDesc + * Return configuration descriptor + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +static uint8_t *USBD_CDC_GetOtherSpeedCfgDesc(uint16_t *length) +{ + USBD_EpDescTypeDef *pEpCmdDesc = USBD_GetEpDesc(USBD_CDC_CfgDesc, CDC_CMD_EP); + USBD_EpDescTypeDef *pEpOutDesc = USBD_GetEpDesc(USBD_CDC_CfgDesc, CDC_OUT_EP); + USBD_EpDescTypeDef *pEpInDesc = USBD_GetEpDesc(USBD_CDC_CfgDesc, CDC_IN_EP); + + if (pEpCmdDesc != NULL) + { + pEpCmdDesc->bInterval = CDC_FS_BINTERVAL; + } + + if (pEpOutDesc != NULL) + { + pEpOutDesc->wMaxPacketSize = CDC_DATA_FS_MAX_PACKET_SIZE; + } + + if (pEpInDesc != NULL) + { + pEpInDesc->wMaxPacketSize = CDC_DATA_FS_MAX_PACKET_SIZE; + } + + *length = (uint16_t)sizeof(USBD_CDC_CfgDesc); + return USBD_CDC_CfgDesc; +} + +/** + * @brief USBD_CDC_GetDeviceQualifierDescriptor + * return Device Qualifier descriptor + * @param length : pointer data length + * @retval pointer to descriptor buffer + */ +uint8_t *USBD_CDC_GetDeviceQualifierDescriptor(uint16_t *length) +{ + *length = (uint16_t)sizeof(USBD_CDC_DeviceQualifierDesc); + + return USBD_CDC_DeviceQualifierDesc; +} +#endif /* USE_USBD_COMPOSITE */ +/** + * @brief USBD_CDC_RegisterInterface + * @param pdev: device instance + * @param fops: CD Interface callback + * @retval status + */ +uint8_t USBD_CDC_RegisterInterface(USBD_HandleTypeDef *pdev, + USBD_CDC_ItfTypeDef *fops) +{ + if (fops == NULL) + { + return (uint8_t)USBD_FAIL; + } + + pdev->pUserData[pdev->classId] = fops; + + return (uint8_t)USBD_OK; +} + +/** + * @brief USBD_CDC_SetTxBuffer + * @param pdev: device instance + * @param pbuff: Tx Buffer + * @param length: Tx Buffer length + * @retval status + */ +uint8_t USBD_CDC_SetTxBuffer(USBD_HandleTypeDef *pdev, + uint8_t *pbuff, uint32_t length) +{ + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *)pdev->pClassDataCmsit[pdev->classId]; + + if (hcdc == NULL) + { + return (uint8_t)USBD_FAIL; + } + + hcdc->TxBuffer = pbuff; + hcdc->TxLength = length; + + return (uint8_t)USBD_OK; +} + +/** + * @brief USBD_CDC_SetRxBuffer + * @param pdev: device instance + * @param pbuff: Rx Buffer + * @retval status + */ +uint8_t USBD_CDC_SetRxBuffer(USBD_HandleTypeDef *pdev, uint8_t *pbuff) +{ + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *)pdev->pClassDataCmsit[pdev->classId]; + + if (hcdc == NULL) + { + return (uint8_t)USBD_FAIL; + } + + hcdc->RxBuffer = pbuff; + + return (uint8_t)USBD_OK; +} + +/** + * @brief USBD_CDC_TransmitPacket + * Transmit packet on IN endpoint + * @param pdev: device instance + * @retval status + */ +uint8_t USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev) +{ + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *)pdev->pClassDataCmsit[pdev->classId]; + USBD_StatusTypeDef ret = USBD_BUSY; + +#ifdef USE_USBD_COMPOSITE + /* Get the Endpoints addresses allocated for this class instance */ + CDCInEpAdd = USBD_CoreGetEPAdd(pdev, USBD_EP_IN, USBD_EP_TYPE_BULK); +#endif /* USE_USBD_COMPOSITE */ + if (pdev->pClassDataCmsit[pdev->classId] == NULL) + { + return (uint8_t)USBD_FAIL; + } + + if (hcdc->TxState == 0U) + { + /* Tx Transfer in progress */ + hcdc->TxState = 1U; + + /* Update the packet total length */ + pdev->ep_in[CDCInEpAdd & 0xFU].total_length = hcdc->TxLength; + + /* Transmit next packet */ + (void)USBD_LL_Transmit(pdev, CDCInEpAdd, hcdc->TxBuffer, hcdc->TxLength); + + ret = USBD_OK; + } + + return (uint8_t)ret; +} + +/** + * @brief USBD_CDC_ReceivePacket + * prepare OUT Endpoint for reception + * @param pdev: device instance + * @retval status + */ +uint8_t USBD_CDC_ReceivePacket(USBD_HandleTypeDef *pdev) +{ + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef *)pdev->pClassDataCmsit[pdev->classId]; + +#ifdef USE_USBD_COMPOSITE + /* Get the Endpoints addresses allocated for this class instance */ + CDCOutEpAdd = USBD_CoreGetEPAdd(pdev, USBD_EP_OUT, USBD_EP_TYPE_BULK); +#endif /* USE_USBD_COMPOSITE */ + + if (pdev->pClassDataCmsit[pdev->classId] == NULL) + { + return (uint8_t)USBD_FAIL; + } + + if (pdev->dev_speed == USBD_SPEED_HIGH) + { + /* Prepare Out endpoint to receive next packet */ + (void)USBD_LL_PrepareReceive(pdev, CDCOutEpAdd, hcdc->RxBuffer, + CDC_DATA_HS_OUT_PACKET_SIZE); + } + else + { + /* Prepare Out endpoint to receive next packet */ + (void)USBD_LL_PrepareReceive(pdev, CDCOutEpAdd, hcdc->RxBuffer, + CDC_DATA_FS_OUT_PACKET_SIZE); + } + + return (uint8_t)USBD_OK; +} +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + diff --git a/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h b/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h new file mode 100644 index 0000000..71b18a8 --- /dev/null +++ b/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_core.h @@ -0,0 +1,172 @@ +/** + ****************************************************************************** + * @file usbd_core.h + * @author MCD Application Team + * @brief Header file for usbd_core.c file + ****************************************************************************** + * @attention + * + * Copyright (c) 2015 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USBD_CORE_H +#define __USBD_CORE_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_conf.h" +#include "usbd_def.h" +#include "usbd_ioreq.h" +#include "usbd_ctlreq.h" + +/** @addtogroup STM32_USB_DEVICE_LIBRARY + * @{ + */ + +/** @defgroup USBD_CORE + * @brief This file is the Header file for usbd_core.c file + * @{ + */ + + +/** @defgroup USBD_CORE_Exported_Defines + * @{ + */ +#ifndef USBD_DEBUG_LEVEL +#define USBD_DEBUG_LEVEL 0U +#endif /* USBD_DEBUG_LEVEL */ +/** + * @} + */ + + +/** @defgroup USBD_CORE_Exported_TypesDefinitions + * @{ + */ + + +/** + * @} + */ + + + +/** @defgroup USBD_CORE_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_CORE_Exported_Variables + * @{ + */ +#define USBD_SOF USBD_LL_SOF +/** + * @} + */ + +/** @defgroup USBD_CORE_Exported_FunctionsPrototype + * @{ + */ +USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id); +USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_Stop(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass); + +#ifdef USE_USBD_COMPOSITE +USBD_StatusTypeDef USBD_RegisterClassComposite(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass, + USBD_CompositeClassTypeDef classtype, uint8_t *EpAddr); + +USBD_StatusTypeDef USBD_UnRegisterClassComposite(USBD_HandleTypeDef *pdev); +uint8_t USBD_CoreGetEPAdd(USBD_HandleTypeDef *pdev, uint8_t ep_dir, uint8_t ep_type); +#endif /* USE_USBD_COMPOSITE */ + +uint8_t USBD_CoreFindIF(USBD_HandleTypeDef *pdev, uint8_t index); +uint8_t USBD_CoreFindEP(USBD_HandleTypeDef *pdev, uint8_t index); + +USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx); +USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx); + +USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup); +USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata); +USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata); + +USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed); +USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev); + +USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum); +USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum); + +USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev); + +/* USBD Low Level Driver */ +USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev); + +USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, + uint8_t ep_type, uint16_t ep_mps); + +USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr); +USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr); +USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr); +USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr); +USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr); + +USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, + uint8_t *pbuf, uint32_t size); + +USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, + uint8_t *pbuf, uint32_t size); + +#ifdef USBD_HS_TESTMODE_ENABLE +USBD_StatusTypeDef USBD_LL_SetTestMode(USBD_HandleTypeDef *pdev, uint8_t testmode); +#endif /* USBD_HS_TESTMODE_ENABLE */ + +uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr); +uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr); + +void USBD_LL_Delay(uint32_t Delay); + +void *USBD_GetEpDesc(uint8_t *pConfDesc, uint8_t EpAddr); +USBD_DescHeaderTypeDef *USBD_GetNextDesc(uint8_t *pbuf, uint16_t *ptr); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USBD_CORE_H */ + +/** + * @} + */ + +/** + * @} + */ + + diff --git a/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h b/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h new file mode 100644 index 0000000..3c4eb16 --- /dev/null +++ b/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h @@ -0,0 +1,101 @@ +/** + ****************************************************************************** + * @file usbd_req.h + * @author MCD Application Team + * @brief Header file for the usbd_req.c file + ****************************************************************************** + * @attention + * + * Copyright (c) 2015 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_REQUEST_H +#define __USB_REQUEST_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_def.h" + + +/** @addtogroup STM32_USB_DEVICE_LIBRARY + * @{ + */ + +/** @defgroup USBD_REQ + * @brief header file for the usbd_req.c file + * @{ + */ + +/** @defgroup USBD_REQ_Exported_Defines + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_REQ_Exported_Types + * @{ + */ +/** + * @} + */ + + + +/** @defgroup USBD_REQ_Exported_Macros + * @{ + */ +/** + * @} + */ + +/** @defgroup USBD_REQ_Exported_Variables + * @{ + */ +/** + * @} + */ + +/** @defgroup USBD_REQ_Exported_FunctionsPrototype + * @{ + */ + +USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); +USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); +USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); + +void USBD_CtlError(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); +void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata); +void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USB_REQUEST_H */ + +/** + * @} + */ + +/** + * @} + */ + + diff --git a/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h b/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h new file mode 100644 index 0000000..d627837 --- /dev/null +++ b/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h @@ -0,0 +1,514 @@ +/** + ****************************************************************************** + * @file usbd_def.h + * @author MCD Application Team + * @brief General defines for the usb device library + ****************************************************************************** + * @attention + * + * Copyright (c) 2015 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USBD_DEF_H +#define __USBD_DEF_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_conf.h" + +/** @addtogroup STM32_USBD_DEVICE_LIBRARY + * @{ + */ + +/** @defgroup USB_DEF + * @brief general defines for the usb device library file + * @{ + */ + +/** @defgroup USB_DEF_Exported_Defines + * @{ + */ + +#ifndef NULL +#define NULL 0U +#endif /* NULL */ + +#ifndef USBD_MAX_NUM_INTERFACES +#define USBD_MAX_NUM_INTERFACES 1U +#endif /* USBD_MAX_NUM_CONFIGURATION */ + +#ifndef USBD_MAX_NUM_CONFIGURATION +#define USBD_MAX_NUM_CONFIGURATION 1U +#endif /* USBD_MAX_NUM_CONFIGURATION */ + +#ifdef USE_USBD_COMPOSITE +#ifndef USBD_MAX_SUPPORTED_CLASS +#define USBD_MAX_SUPPORTED_CLASS 4U +#endif /* USBD_MAX_SUPPORTED_CLASS */ +#else +#ifndef USBD_MAX_SUPPORTED_CLASS +#define USBD_MAX_SUPPORTED_CLASS 1U +#endif /* USBD_MAX_SUPPORTED_CLASS */ +#endif /* USE_USBD_COMPOSITE */ + +#ifndef USBD_MAX_CLASS_ENDPOINTS +#define USBD_MAX_CLASS_ENDPOINTS 5U +#endif /* USBD_MAX_CLASS_ENDPOINTS */ + +#ifndef USBD_MAX_CLASS_INTERFACES +#define USBD_MAX_CLASS_INTERFACES 5U +#endif /* USBD_MAX_CLASS_INTERFACES */ + +#ifndef USBD_LPM_ENABLED +#define USBD_LPM_ENABLED 0U +#endif /* USBD_LPM_ENABLED */ + +#ifndef USBD_SELF_POWERED +#define USBD_SELF_POWERED 1U +#endif /*USBD_SELF_POWERED */ + +#ifndef USBD_MAX_POWER +#define USBD_MAX_POWER 0x32U /* 100 mA */ +#endif /* USBD_MAX_POWER */ + +#ifndef USBD_SUPPORT_USER_STRING_DESC +#define USBD_SUPPORT_USER_STRING_DESC 0U +#endif /* USBD_SUPPORT_USER_STRING_DESC */ + +#ifndef USBD_CLASS_USER_STRING_DESC +#define USBD_CLASS_USER_STRING_DESC 0U +#endif /* USBD_CLASS_USER_STRING_DESC */ + +#define USB_LEN_DEV_QUALIFIER_DESC 0x0AU +#define USB_LEN_DEV_DESC 0x12U +#define USB_LEN_CFG_DESC 0x09U +#define USB_LEN_IF_DESC 0x09U +#define USB_LEN_EP_DESC 0x07U +#define USB_LEN_OTG_DESC 0x03U +#define USB_LEN_LANGID_STR_DESC 0x04U +#define USB_LEN_OTHER_SPEED_DESC_SIZ 0x09U + +#define USBD_IDX_LANGID_STR 0x00U +#define USBD_IDX_MFC_STR 0x01U +#define USBD_IDX_PRODUCT_STR 0x02U +#define USBD_IDX_SERIAL_STR 0x03U +#define USBD_IDX_CONFIG_STR 0x04U +#define USBD_IDX_INTERFACE_STR 0x05U + +#define USB_REQ_TYPE_STANDARD 0x00U +#define USB_REQ_TYPE_CLASS 0x20U +#define USB_REQ_TYPE_VENDOR 0x40U +#define USB_REQ_TYPE_MASK 0x60U + +#define USB_REQ_RECIPIENT_DEVICE 0x00U +#define USB_REQ_RECIPIENT_INTERFACE 0x01U +#define USB_REQ_RECIPIENT_ENDPOINT 0x02U +#define USB_REQ_RECIPIENT_MASK 0x03U + +#define USB_REQ_GET_STATUS 0x00U +#define USB_REQ_CLEAR_FEATURE 0x01U +#define USB_REQ_SET_FEATURE 0x03U +#define USB_REQ_SET_ADDRESS 0x05U +#define USB_REQ_GET_DESCRIPTOR 0x06U +#define USB_REQ_SET_DESCRIPTOR 0x07U +#define USB_REQ_GET_CONFIGURATION 0x08U +#define USB_REQ_SET_CONFIGURATION 0x09U +#define USB_REQ_GET_INTERFACE 0x0AU +#define USB_REQ_SET_INTERFACE 0x0BU +#define USB_REQ_SYNCH_FRAME 0x0CU + +#define USB_DESC_TYPE_DEVICE 0x01U +#define USB_DESC_TYPE_CONFIGURATION 0x02U +#define USB_DESC_TYPE_STRING 0x03U +#define USB_DESC_TYPE_INTERFACE 0x04U +#define USB_DESC_TYPE_ENDPOINT 0x05U +#define USB_DESC_TYPE_DEVICE_QUALIFIER 0x06U +#define USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION 0x07U +#define USB_DESC_TYPE_IAD 0x0BU +#define USB_DESC_TYPE_BOS 0x0FU + +#define USB_CONFIG_REMOTE_WAKEUP 0x02U +#define USB_CONFIG_SELF_POWERED 0x01U + +#define USB_FEATURE_EP_HALT 0x00U +#define USB_FEATURE_REMOTE_WAKEUP 0x01U +#define USB_FEATURE_TEST_MODE 0x02U + +#define USB_DEVICE_CAPABITY_TYPE 0x10U + +#define USB_CONF_DESC_SIZE 0x09U +#define USB_IF_DESC_SIZE 0x09U +#define USB_EP_DESC_SIZE 0x07U +#define USB_IAD_DESC_SIZE 0x08U + +#define USB_HS_MAX_PACKET_SIZE 512U +#define USB_FS_MAX_PACKET_SIZE 64U +#define USB_MAX_EP0_SIZE 64U + +/* Device Status */ +#define USBD_STATE_DEFAULT 0x01U +#define USBD_STATE_ADDRESSED 0x02U +#define USBD_STATE_CONFIGURED 0x03U +#define USBD_STATE_SUSPENDED 0x04U + + +/* EP0 State */ +#define USBD_EP0_IDLE 0x00U +#define USBD_EP0_SETUP 0x01U +#define USBD_EP0_DATA_IN 0x02U +#define USBD_EP0_DATA_OUT 0x03U +#define USBD_EP0_STATUS_IN 0x04U +#define USBD_EP0_STATUS_OUT 0x05U +#define USBD_EP0_STALL 0x06U + +#define USBD_EP_TYPE_CTRL 0x00U +#define USBD_EP_TYPE_ISOC 0x01U +#define USBD_EP_TYPE_BULK 0x02U +#define USBD_EP_TYPE_INTR 0x03U + +#ifdef USE_USBD_COMPOSITE +#define USBD_EP_IN 0x80U +#define USBD_EP_OUT 0x00U +#define USBD_FUNC_DESCRIPTOR_TYPE 0x24U +#define USBD_DESC_SUBTYPE_ACM 0x0FU +#define USBD_DESC_ECM_BCD_LOW 0x00U +#define USBD_DESC_ECM_BCD_HIGH 0x10U +#endif /* USE_USBD_COMPOSITE */ +/** + * @} + */ + + +/** @defgroup USBD_DEF_Exported_TypesDefinitions + * @{ + */ + +typedef struct usb_setup_req +{ + uint8_t bmRequest; + uint8_t bRequest; + uint16_t wValue; + uint16_t wIndex; + uint16_t wLength; +} USBD_SetupReqTypedef; + +typedef struct +{ + uint8_t bLength; + uint8_t bDescriptorType; + uint16_t wTotalLength; + uint8_t bNumInterfaces; + uint8_t bConfigurationValue; + uint8_t iConfiguration; + uint8_t bmAttributes; + uint8_t bMaxPower; +} __PACKED USBD_ConfigDescTypeDef; + +typedef struct +{ + uint8_t bLength; + uint8_t bDescriptorType; + uint16_t wTotalLength; + uint8_t bNumDeviceCaps; +} USBD_BosDescTypeDef; + +typedef struct +{ + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bEndpointAddress; + uint8_t bmAttributes; + uint16_t wMaxPacketSize; + uint8_t bInterval; +} __PACKED USBD_EpDescTypeDef; + +typedef struct +{ + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubType; +} USBD_DescHeaderTypeDef; + +struct _USBD_HandleTypeDef; + +typedef struct _Device_cb +{ + uint8_t (*Init)(struct _USBD_HandleTypeDef *pdev, uint8_t cfgidx); + uint8_t (*DeInit)(struct _USBD_HandleTypeDef *pdev, uint8_t cfgidx); + /* Control Endpoints*/ + uint8_t (*Setup)(struct _USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); + uint8_t (*EP0_TxSent)(struct _USBD_HandleTypeDef *pdev); + uint8_t (*EP0_RxReady)(struct _USBD_HandleTypeDef *pdev); + /* Class Specific Endpoints*/ + uint8_t (*DataIn)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum); + uint8_t (*DataOut)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum); + uint8_t (*SOF)(struct _USBD_HandleTypeDef *pdev); + uint8_t (*IsoINIncomplete)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum); + uint8_t (*IsoOUTIncomplete)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum); + + uint8_t *(*GetHSConfigDescriptor)(uint16_t *length); + uint8_t *(*GetFSConfigDescriptor)(uint16_t *length); + uint8_t *(*GetOtherSpeedConfigDescriptor)(uint16_t *length); + uint8_t *(*GetDeviceQualifierDescriptor)(uint16_t *length); +#if (USBD_SUPPORT_USER_STRING_DESC == 1U) + uint8_t *(*GetUsrStrDescriptor)(struct _USBD_HandleTypeDef *pdev, uint8_t index, uint16_t *length); +#endif /* USBD_SUPPORT_USER_STRING_DESC */ + +} USBD_ClassTypeDef; + +/* Following USB Device Speed */ +typedef enum +{ + USBD_SPEED_HIGH = 0U, + USBD_SPEED_FULL = 1U, + USBD_SPEED_LOW = 2U, +} USBD_SpeedTypeDef; + +/* Following USB Device status */ +typedef enum +{ + USBD_OK = 0U, + USBD_BUSY, + USBD_EMEM, + USBD_FAIL, +} USBD_StatusTypeDef; + +/* USB Device descriptors structure */ +typedef struct +{ + uint8_t *(*GetDeviceDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); + uint8_t *(*GetLangIDStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); + uint8_t *(*GetManufacturerStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); + uint8_t *(*GetProductStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); + uint8_t *(*GetSerialStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); + uint8_t *(*GetConfigurationStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); + uint8_t *(*GetInterfaceStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); +#if (USBD_CLASS_USER_STRING_DESC == 1) + uint8_t *(*GetUserStrDescriptor)(USBD_SpeedTypeDef speed, uint8_t idx, uint16_t *length); +#endif /* USBD_CLASS_USER_STRING_DESC */ +#if ((USBD_LPM_ENABLED == 1U) || (USBD_CLASS_BOS_ENABLED == 1)) + uint8_t *(*GetBOSDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length); +#endif /* (USBD_LPM_ENABLED == 1U) || (USBD_CLASS_BOS_ENABLED == 1) */ +} USBD_DescriptorsTypeDef; + +/* USB Device handle structure */ +typedef struct +{ + uint32_t status; + uint32_t total_length; + uint32_t rem_length; + uint32_t maxpacket; + uint16_t is_used; + uint16_t bInterval; +} USBD_EndpointTypeDef; + +#ifdef USE_USBD_COMPOSITE +typedef enum +{ + CLASS_TYPE_NONE = 0, + CLASS_TYPE_HID = 1, + CLASS_TYPE_CDC = 2, + CLASS_TYPE_MSC = 3, + CLASS_TYPE_DFU = 4, + CLASS_TYPE_CHID = 5, + CLASS_TYPE_AUDIO = 6, + CLASS_TYPE_ECM = 7, + CLASS_TYPE_RNDIS = 8, + CLASS_TYPE_MTP = 9, + CLASS_TYPE_VIDEO = 10, + CLASS_TYPE_PRINTER = 11, + CLASS_TYPE_CCID = 12, +} USBD_CompositeClassTypeDef; + + +/* USB Device handle structure */ +typedef struct +{ + uint8_t add; + uint8_t type; + uint8_t size; + uint8_t is_used; +} USBD_EPTypeDef; + +/* USB Device handle structure */ +typedef struct +{ + USBD_CompositeClassTypeDef ClassType; + uint32_t ClassId; + uint32_t Active; + uint32_t NumEps; + USBD_EPTypeDef Eps[USBD_MAX_CLASS_ENDPOINTS]; + uint8_t *EpAdd; + uint32_t NumIf; + uint8_t Ifs[USBD_MAX_CLASS_INTERFACES]; + uint32_t CurrPcktSze; +} USBD_CompositeElementTypeDef; +#endif /* USE_USBD_COMPOSITE */ + +/* USB Device handle structure */ +typedef struct _USBD_HandleTypeDef +{ + uint8_t id; + uint32_t dev_config; + uint32_t dev_default_config; + uint32_t dev_config_status; + USBD_SpeedTypeDef dev_speed; + USBD_EndpointTypeDef ep_in[16]; + USBD_EndpointTypeDef ep_out[16]; + __IO uint32_t ep0_state; + uint32_t ep0_data_len; + __IO uint8_t dev_state; + __IO uint8_t dev_old_state; + uint8_t dev_address; + uint8_t dev_connection_status; + uint8_t dev_test_mode; + uint32_t dev_remote_wakeup; + uint8_t ConfIdx; + + USBD_SetupReqTypedef request; + USBD_DescriptorsTypeDef *pDesc; + USBD_ClassTypeDef *pClass[USBD_MAX_SUPPORTED_CLASS]; + void *pClassData; + void *pClassDataCmsit[USBD_MAX_SUPPORTED_CLASS]; + void *pUserData[USBD_MAX_SUPPORTED_CLASS]; + void *pData; + void *pBosDesc; + void *pConfDesc; + uint32_t classId; + uint32_t NumClasses; +#ifdef USE_USBD_COMPOSITE + USBD_CompositeElementTypeDef tclasslist[USBD_MAX_SUPPORTED_CLASS]; +#endif /* USE_USBD_COMPOSITE */ +} USBD_HandleTypeDef; + +/* USB Device endpoint direction */ +typedef enum +{ + OUT = 0x00, + IN = 0x80, +} USBD_EPDirectionTypeDef; + +typedef enum +{ + NETWORK_CONNECTION = 0x00, + RESPONSE_AVAILABLE = 0x01, + CONNECTION_SPEED_CHANGE = 0x2A +} USBD_CDC_NotifCodeTypeDef; +/** + * @} + */ + + + +/** @defgroup USBD_DEF_Exported_Macros + * @{ + */ +__STATIC_INLINE uint16_t SWAPBYTE(uint8_t *addr) +{ + uint16_t _SwapVal, _Byte1, _Byte2; + uint8_t *_pbuff = addr; + + _Byte1 = *(uint8_t *)_pbuff; + _pbuff++; + _Byte2 = *(uint8_t *)_pbuff; + + _SwapVal = (_Byte2 << 8) | _Byte1; + + return _SwapVal; +} + +#ifndef LOBYTE +#define LOBYTE(x) ((uint8_t)((x) & 0x00FFU)) +#endif /* LOBYTE */ + +#ifndef HIBYTE +#define HIBYTE(x) ((uint8_t)(((x) & 0xFF00U) >> 8U)) +#endif /* HIBYTE */ + +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif /* MIN */ + +#ifndef MAX +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif /* MAX */ + +#if defined ( __GNUC__ ) +#ifndef __weak +#define __weak __attribute__((weak)) +#endif /* __weak */ +#ifndef __packed +#define __packed __attribute__((__packed__)) +#endif /* __packed */ +#endif /* __GNUC__ */ + + +/* In HS mode and when the DMA is used, all variables and data structures dealing + with the DMA during the transaction process should be 4-bytes aligned */ + +#if defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */ +#ifndef __ALIGN_END +#define __ALIGN_END __attribute__ ((aligned (4U))) +#endif /* __ALIGN_END */ +#ifndef __ALIGN_BEGIN +#define __ALIGN_BEGIN +#endif /* __ALIGN_BEGIN */ +#else +#ifndef __ALIGN_END +#define __ALIGN_END +#endif /* __ALIGN_END */ +#ifndef __ALIGN_BEGIN +#if defined (__CC_ARM) /* ARM Compiler */ +#define __ALIGN_BEGIN __align(4U) +#elif defined (__ICCARM__) /* IAR Compiler */ +#define __ALIGN_BEGIN +#endif /* __CC_ARM */ +#endif /* __ALIGN_BEGIN */ +#endif /* __GNUC__ */ + + +/** + * @} + */ + +/** @defgroup USBD_DEF_Exported_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_DEF_Exported_FunctionsPrototype + * @{ + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USBD_DEF_H */ + +/** + * @} + */ + +/** + * @} + */ + diff --git a/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h b/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h new file mode 100644 index 0000000..bad1e36 --- /dev/null +++ b/Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ioreq.h @@ -0,0 +1,113 @@ +/** + ****************************************************************************** + * @file usbd_ioreq.h + * @author MCD Application Team + * @brief Header file for the usbd_ioreq.c file + ****************************************************************************** + * @attention + * + * Copyright (c) 2015 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USBD_IOREQ_H +#define __USBD_IOREQ_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_def.h" +#include "usbd_core.h" + +/** @addtogroup STM32_USB_DEVICE_LIBRARY + * @{ + */ + +/** @defgroup USBD_IOREQ + * @brief header file for the usbd_ioreq.c file + * @{ + */ + +/** @defgroup USBD_IOREQ_Exported_Defines + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_IOREQ_Exported_Types + * @{ + */ + + +/** + * @} + */ + + + +/** @defgroup USBD_IOREQ_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_IOREQ_Exported_Variables + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_IOREQ_Exported_FunctionsPrototype + * @{ + */ + +USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint32_t len); + +USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint32_t len); + +USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint32_t len); + +USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint32_t len); + +USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev); +USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev); + +uint32_t USBD_GetRxCount(USBD_HandleTypeDef *pdev, uint8_t ep_addr); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USBD_IOREQ_H */ + +/** + * @} + */ + +/** + * @} + */ + diff --git a/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c b/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c new file mode 100644 index 0000000..f9db01b --- /dev/null +++ b/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c @@ -0,0 +1,1220 @@ +/** + ****************************************************************************** + * @file usbd_core.c + * @author MCD Application Team + * @brief This file provides all the USBD core functions. + ****************************************************************************** + * @attention + * + * Copyright (c) 2015 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_core.h" + +#ifdef USE_USBD_COMPOSITE +#include "usbd_composite_builder.h" +#endif /* USE_USBD_COMPOSITE */ + +/** @addtogroup STM32_USBD_DEVICE_LIBRARY + * @{ + */ + + +/** @defgroup USBD_CORE + * @brief usbd core module + * @{ + */ + +/** @defgroup USBD_CORE_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_CORE_Private_Defines + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_CORE_Private_Macros + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_CORE_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_CORE_Private_Variables + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_CORE_Private_Functions + * @{ + */ + +/** + * @brief USBD_Init + * Initializes the device stack and load the class driver + * @param pdev: device instance + * @param pdesc: Descriptor structure address + * @param id: Low level core index + * @retval None + */ +USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, + USBD_DescriptorsTypeDef *pdesc, uint8_t id) +{ + USBD_StatusTypeDef ret; + + /* Check whether the USB Host handle is valid */ + if (pdev == NULL) + { +#if (USBD_DEBUG_LEVEL > 1U) + USBD_ErrLog("Invalid Device handle"); +#endif /* (USBD_DEBUG_LEVEL > 1U) */ + return USBD_FAIL; + } + +#ifdef USE_USBD_COMPOSITE + /* Parse the table of classes in use */ + for (uint32_t i = 0; i < USBD_MAX_SUPPORTED_CLASS; i++) + { + /* Unlink previous class*/ + pdev->pClass[i] = NULL; + pdev->pUserData[i] = NULL; + + /* Set class as inactive */ + pdev->tclasslist[i].Active = 0; + pdev->NumClasses = 0; + pdev->classId = 0; + } +#else + /* Unlink previous class*/ + pdev->pClass[0] = NULL; + pdev->pUserData[0] = NULL; +#endif /* USE_USBD_COMPOSITE */ + + pdev->pConfDesc = NULL; + + /* Assign USBD Descriptors */ + if (pdesc != NULL) + { + pdev->pDesc = pdesc; + } + + /* Set Device initial State */ + pdev->dev_state = USBD_STATE_DEFAULT; + pdev->id = id; + + /* Initialize low level driver */ + ret = USBD_LL_Init(pdev); + + return ret; +} + +/** + * @brief USBD_DeInit + * Re-Initialize the device library + * @param pdev: device instance + * @retval status: status + */ +USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev) +{ + USBD_StatusTypeDef ret; + + /* Disconnect the USB Device */ + (void)USBD_LL_Stop(pdev); + + /* Set Default State */ + pdev->dev_state = USBD_STATE_DEFAULT; + +#ifdef USE_USBD_COMPOSITE + /* Parse the table of classes in use */ + for (uint32_t i = 0; i < USBD_MAX_SUPPORTED_CLASS; i++) + { + /* Check if current class is in use */ + if ((pdev->tclasslist[i].Active) == 1U) + { + if (pdev->pClass[i] != NULL) + { + pdev->classId = i; + /* Free Class Resources */ + pdev->pClass[i]->DeInit(pdev, (uint8_t)pdev->dev_config); + } + } + } +#else + /* Free Class Resources */ + if (pdev->pClass[0] != NULL) + { + pdev->pClass[0]->DeInit(pdev, (uint8_t)pdev->dev_config); + } + + pdev->pUserData[0] = NULL; + +#endif /* USE_USBD_COMPOSITE */ + + /* Free Device descriptors resources */ + pdev->pDesc = NULL; + pdev->pConfDesc = NULL; + + /* DeInitialize low level driver */ + ret = USBD_LL_DeInit(pdev); + + return ret; +} + +/** + * @brief USBD_RegisterClass + * Link class driver to Device Core. + * @param pDevice : Device Handle + * @param pclass: Class handle + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass) +{ + uint16_t len = 0U; + + if (pclass == NULL) + { +#if (USBD_DEBUG_LEVEL > 1U) + USBD_ErrLog("Invalid Class handle"); +#endif /* (USBD_DEBUG_LEVEL > 1U) */ + return USBD_FAIL; + } + + /* link the class to the USB Device handle */ + pdev->pClass[0] = pclass; + + /* Get Device Configuration Descriptor */ +#ifdef USE_USB_HS + if (pdev->pClass[pdev->classId]->GetHSConfigDescriptor != NULL) + { + pdev->pConfDesc = (void *)pdev->pClass[pdev->classId]->GetHSConfigDescriptor(&len); + } +#else /* Default USE_USB_FS */ + if (pdev->pClass[pdev->classId]->GetFSConfigDescriptor != NULL) + { + pdev->pConfDesc = (void *)pdev->pClass[pdev->classId]->GetFSConfigDescriptor(&len); + } +#endif /* USE_USB_FS */ + + /* Increment the NumClasses */ + pdev->NumClasses ++; + + return USBD_OK; +} + +#ifdef USE_USBD_COMPOSITE +/** + * @brief USBD_RegisterClassComposite + * Link class driver to Device Core. + * @param pdev : Device Handle + * @param pclass: Class handle + * @param classtype: Class type + * @param EpAddr: Endpoint Address handle + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_RegisterClassComposite(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass, + USBD_CompositeClassTypeDef classtype, uint8_t *EpAddr) +{ + USBD_StatusTypeDef ret = USBD_OK; + uint16_t len = 0U; + + if ((pdev->classId < USBD_MAX_SUPPORTED_CLASS) && (pdev->NumClasses < USBD_MAX_SUPPORTED_CLASS)) + { + if ((uint32_t)pclass != 0U) + { + /* Link the class to the USB Device handle */ + pdev->pClass[pdev->classId] = pclass; + ret = USBD_OK; + + pdev->tclasslist[pdev->classId].EpAdd = EpAddr; + + /* Call the composite class builder */ + (void)USBD_CMPSIT_AddClass(pdev, pclass, classtype, 0); + + /* Increment the ClassId for the next occurrence */ + pdev->classId ++; + pdev->NumClasses ++; + } + else + { +#if (USBD_DEBUG_LEVEL > 1U) + USBD_ErrLog("Invalid Class handle"); +#endif /* (USBD_DEBUG_LEVEL > 1U) */ + ret = USBD_FAIL; + } + } + + if (ret == USBD_OK) + { + /* Get Device Configuration Descriptor */ +#ifdef USE_USB_HS + pdev->pConfDesc = USBD_CMPSIT.GetHSConfigDescriptor(&len); +#else /* Default USE_USB_FS */ + pdev->pConfDesc = USBD_CMPSIT.GetFSConfigDescriptor(&len); +#endif /* USE_USB_FS */ + } + + return ret; +} + +/** + * @brief USBD_UnRegisterClassComposite + * UnLink all composite class drivers from Device Core. + * @param pDevice : Device Handle + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_UnRegisterClassComposite(USBD_HandleTypeDef *pdev) +{ + USBD_StatusTypeDef ret = USBD_FAIL; + uint8_t idx1; + uint8_t idx2; + + /* Unroll all activated classes */ + for (idx1 = 0; idx1 < pdev->NumClasses; idx1++) + { + /* Check if the class correspond to the requested type and if it is active */ + if (pdev->tclasslist[idx1].Active == 1U) + { + /* Set the new class ID */ + pdev->classId = idx1; + + /* Free resources used by the selected class */ + if (pdev->pClass[pdev->classId] != NULL) + { + /* Free Class Resources */ + if (pdev->pClass[pdev->classId]->DeInit(pdev, (uint8_t)pdev->dev_config) != 0U) + { +#if (USBD_DEBUG_LEVEL > 1U) + USBD_ErrLog("Class DeInit didn't succeed!, can't unregister selected class"); +#endif /* (USBD_DEBUG_LEVEL > 1U) */ + + ret = USBD_FAIL; + } + } + + /* Free the class pointer */ + pdev->pClass[pdev->classId] = NULL; + + /* Free the class location in classes table and reset its parameters to zero */ + pdev->tclasslist[pdev->classId].ClassType = CLASS_TYPE_NONE; + pdev->tclasslist[pdev->classId].ClassId = 0U; + pdev->tclasslist[pdev->classId].Active = 0U; + pdev->tclasslist[pdev->classId].NumEps = 0U; + pdev->tclasslist[pdev->classId].NumIf = 0U; + pdev->tclasslist[pdev->classId].CurrPcktSze = 0U; + + for (idx2 = 0U; idx2 < USBD_MAX_CLASS_ENDPOINTS; idx2++) + { + pdev->tclasslist[pdev->classId].Eps[idx2].add = 0U; + pdev->tclasslist[pdev->classId].Eps[idx2].type = 0U; + pdev->tclasslist[pdev->classId].Eps[idx2].size = 0U; + pdev->tclasslist[pdev->classId].Eps[idx2].is_used = 0U; + } + + for (idx2 = 0U; idx2 < USBD_MAX_CLASS_INTERFACES; idx2++) + { + pdev->tclasslist[pdev->classId].Ifs[idx2] = 0U; + } + } + } + + /* Reset the configuration descriptor */ + (void)USBD_CMPST_ClearConfDesc(pdev); + + /* Reset the class ID and number of classes */ + pdev->classId = 0U; + pdev->NumClasses = 0U; + + return ret; +} + + +#endif /* USE_USBD_COMPOSITE */ + +/** + * @brief USBD_Start + * Start the USB Device Core. + * @param pdev: Device Handle + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev) +{ +#ifdef USE_USBD_COMPOSITE + pdev->classId = 0U; +#endif /* USE_USBD_COMPOSITE */ + + /* Start the low level driver */ + return USBD_LL_Start(pdev); +} + +/** + * @brief USBD_Stop + * Stop the USB Device Core. + * @param pdev: Device Handle + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_Stop(USBD_HandleTypeDef *pdev) +{ + /* Disconnect USB Device */ + (void)USBD_LL_Stop(pdev); + + /* Free Class Resources */ +#ifdef USE_USBD_COMPOSITE + /* Parse the table of classes in use */ + for (uint32_t i = 0U; i < USBD_MAX_SUPPORTED_CLASS; i++) + { + /* Check if current class is in use */ + if ((pdev->tclasslist[i].Active) == 1U) + { + if (pdev->pClass[i] != NULL) + { + pdev->classId = i; + /* Free Class Resources */ + (void)pdev->pClass[i]->DeInit(pdev, (uint8_t)pdev->dev_config); + } + } + } + + /* Reset the class ID */ + pdev->classId = 0U; +#else + if (pdev->pClass[0] != NULL) + { + (void)pdev->pClass[0]->DeInit(pdev, (uint8_t)pdev->dev_config); + } +#endif /* USE_USBD_COMPOSITE */ + + return USBD_OK; +} + +/** + * @brief USBD_RunTestMode + * Launch test mode process + * @param pdev: device instance + * @retval status + */ +USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev) +{ +#ifdef USBD_HS_TESTMODE_ENABLE + USBD_StatusTypeDef ret; + + /* Run USB HS test mode */ + ret = USBD_LL_SetTestMode(pdev, pdev->dev_test_mode); + + return ret; +#else + /* Prevent unused argument compilation warning */ + UNUSED(pdev); + + return USBD_OK; +#endif /* USBD_HS_TESTMODE_ENABLE */ +} + +/** + * @brief USBD_SetClassConfig + * Configure device and start the interface + * @param pdev: device instance + * @param cfgidx: configuration index + * @retval status + */ + +USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + USBD_StatusTypeDef ret = USBD_OK; + +#ifdef USE_USBD_COMPOSITE + /* Parse the table of classes in use */ + for (uint32_t i = 0U; i < USBD_MAX_SUPPORTED_CLASS; i++) + { + /* Check if current class is in use */ + if ((pdev->tclasslist[i].Active) == 1U) + { + if (pdev->pClass[i] != NULL) + { + pdev->classId = i; + /* Set configuration and Start the Class*/ + if (pdev->pClass[i]->Init(pdev, cfgidx) != 0U) + { + ret = USBD_FAIL; + } + } + } + } +#else + if (pdev->pClass[0] != NULL) + { + /* Set configuration and Start the Class */ + ret = (USBD_StatusTypeDef)pdev->pClass[0]->Init(pdev, cfgidx); + } +#endif /* USE_USBD_COMPOSITE */ + + return ret; +} + +/** + * @brief USBD_ClrClassConfig + * Clear current configuration + * @param pdev: device instance + * @param cfgidx: configuration index + * @retval status: USBD_StatusTypeDef + */ +USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) +{ + USBD_StatusTypeDef ret = USBD_OK; + +#ifdef USE_USBD_COMPOSITE + /* Parse the table of classes in use */ + for (uint32_t i = 0U; i < USBD_MAX_SUPPORTED_CLASS; i++) + { + /* Check if current class is in use */ + if ((pdev->tclasslist[i].Active) == 1U) + { + if (pdev->pClass[i] != NULL) + { + pdev->classId = i; + /* Clear configuration and De-initialize the Class process */ + if (pdev->pClass[i]->DeInit(pdev, cfgidx) != 0U) + { + ret = USBD_FAIL; + } + } + } + } +#else + /* Clear configuration and De-initialize the Class process */ + if (pdev->pClass[0]->DeInit(pdev, cfgidx) != 0U) + { + ret = USBD_FAIL; + } +#endif /* USE_USBD_COMPOSITE */ + + return ret; +} + + +/** + * @brief USBD_LL_SetupStage + * Handle the setup stage + * @param pdev: device instance + * @retval status + */ +USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup) +{ + USBD_StatusTypeDef ret; + + USBD_ParseSetupRequest(&pdev->request, psetup); + + pdev->ep0_state = USBD_EP0_SETUP; + + pdev->ep0_data_len = pdev->request.wLength; + + switch (pdev->request.bmRequest & 0x1FU) + { + case USB_REQ_RECIPIENT_DEVICE: + ret = USBD_StdDevReq(pdev, &pdev->request); + break; + + case USB_REQ_RECIPIENT_INTERFACE: + ret = USBD_StdItfReq(pdev, &pdev->request); + break; + + case USB_REQ_RECIPIENT_ENDPOINT: + ret = USBD_StdEPReq(pdev, &pdev->request); + break; + + default: + ret = USBD_LL_StallEP(pdev, (pdev->request.bmRequest & 0x80U)); + break; + } + + return ret; +} + +/** + * @brief USBD_LL_DataOutStage + * Handle data OUT stage + * @param pdev: device instance + * @param epnum: endpoint index + * @param pdata: data pointer + * @retval status + */ +USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, + uint8_t epnum, uint8_t *pdata) +{ + USBD_EndpointTypeDef *pep; + USBD_StatusTypeDef ret = USBD_OK; + uint8_t idx; + + if (epnum == 0U) + { + pep = &pdev->ep_out[0]; + + if (pdev->ep0_state == USBD_EP0_DATA_OUT) + { + if (pep->rem_length > pep->maxpacket) + { + pep->rem_length -= pep->maxpacket; + + (void)USBD_CtlContinueRx(pdev, pdata, MIN(pep->rem_length, pep->maxpacket)); + } + else + { + /* Find the class ID relative to the current request */ + switch (pdev->request.bmRequest & 0x1FU) + { + case USB_REQ_RECIPIENT_DEVICE: + /* Device requests must be managed by the first instantiated class + (or duplicated by all classes for simplicity) */ + idx = 0U; + break; + + case USB_REQ_RECIPIENT_INTERFACE: + idx = USBD_CoreFindIF(pdev, LOBYTE(pdev->request.wIndex)); + break; + + case USB_REQ_RECIPIENT_ENDPOINT: + idx = USBD_CoreFindEP(pdev, LOBYTE(pdev->request.wIndex)); + break; + + default: + /* Back to the first class in case of doubt */ + idx = 0U; + break; + } + + if (idx < USBD_MAX_SUPPORTED_CLASS) + { + /* Setup the class ID and route the request to the relative class function */ + if (pdev->dev_state == USBD_STATE_CONFIGURED) + { + if (pdev->pClass[idx]->EP0_RxReady != NULL) + { + pdev->classId = idx; + pdev->pClass[idx]->EP0_RxReady(pdev); + } + } + } + + (void)USBD_CtlSendStatus(pdev); + } + } + else + { +#if 0 + if (pdev->ep0_state == USBD_EP0_STATUS_OUT) + { + /* + * STATUS PHASE completed, update ep0_state to idle + */ + pdev->ep0_state = USBD_EP0_IDLE; + (void)USBD_LL_StallEP(pdev, 0U); + } +#endif + } + } + else + { + /* Get the class index relative to this interface */ + idx = USBD_CoreFindEP(pdev, (epnum & 0x7FU)); + + if (((uint16_t)idx != 0xFFU) && (idx < USBD_MAX_SUPPORTED_CLASS)) + { + /* Call the class data out function to manage the request */ + if (pdev->dev_state == USBD_STATE_CONFIGURED) + { + if (pdev->pClass[idx]->DataOut != NULL) + { + pdev->classId = idx; + ret = (USBD_StatusTypeDef)pdev->pClass[idx]->DataOut(pdev, epnum); + } + } + if (ret != USBD_OK) + { + return ret; + } + } + } + + return USBD_OK; +} + +/** + * @brief USBD_LL_DataInStage + * Handle data in stage + * @param pdev: device instance + * @param epnum: endpoint index + * @retval status + */ +USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, + uint8_t epnum, uint8_t *pdata) +{ + USBD_EndpointTypeDef *pep; + USBD_StatusTypeDef ret; + uint8_t idx; + + if (epnum == 0U) + { + pep = &pdev->ep_in[0]; + + if (pdev->ep0_state == USBD_EP0_DATA_IN) + { + if (pep->rem_length > pep->maxpacket) + { + pep->rem_length -= pep->maxpacket; + + (void)USBD_CtlContinueSendData(pdev, pdata, pep->rem_length); + + /* Prepare endpoint for premature end of transfer */ + (void)USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); + } + else + { + /* last packet is MPS multiple, so send ZLP packet */ + if ((pep->maxpacket == pep->rem_length) && + (pep->total_length >= pep->maxpacket) && + (pep->total_length < pdev->ep0_data_len)) + { + (void)USBD_CtlContinueSendData(pdev, NULL, 0U); + pdev->ep0_data_len = 0U; + + /* Prepare endpoint for premature end of transfer */ + (void)USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); + } + else + { + if (pdev->dev_state == USBD_STATE_CONFIGURED) + { + if (pdev->pClass[0]->EP0_TxSent != NULL) + { + pdev->classId = 0U; + pdev->pClass[0]->EP0_TxSent(pdev); + } + } + (void)USBD_LL_StallEP(pdev, 0x80U); + (void)USBD_CtlReceiveStatus(pdev); + } + } + } + else + { +#if 0 + if ((pdev->ep0_state == USBD_EP0_STATUS_IN) || + (pdev->ep0_state == USBD_EP0_IDLE)) + { + (void)USBD_LL_StallEP(pdev, 0x80U); + } +#endif + } + + if (pdev->dev_test_mode != 0U) + { + (void)USBD_RunTestMode(pdev); + pdev->dev_test_mode = 0U; + } + } + else + { + /* Get the class index relative to this interface */ + idx = USBD_CoreFindEP(pdev, ((uint8_t)epnum | 0x80U)); + + if (((uint16_t)idx != 0xFFU) && (idx < USBD_MAX_SUPPORTED_CLASS)) + { + /* Call the class data out function to manage the request */ + if (pdev->dev_state == USBD_STATE_CONFIGURED) + { + if (pdev->pClass[idx]->DataIn != NULL) + { + pdev->classId = idx; + ret = (USBD_StatusTypeDef)pdev->pClass[idx]->DataIn(pdev, epnum); + + if (ret != USBD_OK) + { + return ret; + } + } + } + } + } + + return USBD_OK; +} + +/** + * @brief USBD_LL_Reset + * Handle Reset event + * @param pdev: device instance + * @retval status + */ + +USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev) +{ + USBD_StatusTypeDef ret = USBD_OK; + + /* Upon Reset call user call back */ + pdev->dev_state = USBD_STATE_DEFAULT; + pdev->ep0_state = USBD_EP0_IDLE; + pdev->dev_config = 0U; + pdev->dev_remote_wakeup = 0U; + pdev->dev_test_mode = 0U; + +#ifdef USE_USBD_COMPOSITE + /* Parse the table of classes in use */ + for (uint32_t i = 0U; i < USBD_MAX_SUPPORTED_CLASS; i++) + { + /* Check if current class is in use */ + if ((pdev->tclasslist[i].Active) == 1U) + { + if (pdev->pClass[i] != NULL) + { + pdev->classId = i; + /* Clear configuration and De-initialize the Class process*/ + + if (pdev->pClass[i]->DeInit != NULL) + { + if (pdev->pClass[i]->DeInit(pdev, (uint8_t)pdev->dev_config) != USBD_OK) + { + ret = USBD_FAIL; + } + } + } + } + } +#else + + if (pdev->pClass[0] != NULL) + { + if (pdev->pClass[0]->DeInit != NULL) + { + if (pdev->pClass[0]->DeInit(pdev, (uint8_t)pdev->dev_config) != USBD_OK) + { + ret = USBD_FAIL; + } + } + } +#endif /* USE_USBD_COMPOSITE */ + + /* Open EP0 OUT */ + (void)USBD_LL_OpenEP(pdev, 0x00U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); + pdev->ep_out[0x00U & 0xFU].is_used = 1U; + + pdev->ep_out[0].maxpacket = USB_MAX_EP0_SIZE; + + /* Open EP0 IN */ + (void)USBD_LL_OpenEP(pdev, 0x80U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE); + pdev->ep_in[0x80U & 0xFU].is_used = 1U; + + pdev->ep_in[0].maxpacket = USB_MAX_EP0_SIZE; + + return ret; +} + +/** + * @brief USBD_LL_SetSpeed + * Handle Reset event + * @param pdev: device instance + * @retval status + */ +USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, + USBD_SpeedTypeDef speed) +{ + pdev->dev_speed = speed; + + return USBD_OK; +} + +/** + * @brief USBD_LL_Suspend + * Handle Suspend event + * @param pdev: device instance + * @retval status + */ + +USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev) +{ + pdev->dev_old_state = pdev->dev_state; + pdev->dev_state = USBD_STATE_SUSPENDED; + + return USBD_OK; +} + +/** + * @brief USBD_LL_Resume + * Handle Resume event + * @param pdev: device instance + * @retval status + */ + +USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev) +{ + if (pdev->dev_state == USBD_STATE_SUSPENDED) + { + pdev->dev_state = pdev->dev_old_state; + } + + return USBD_OK; +} + +/** + * @brief USBD_LL_SOF + * Handle SOF event + * @param pdev: device instance + * @retval status + */ + +USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev) +{ + /* The SOF event can be distributed for all classes that support it */ + if (pdev->dev_state == USBD_STATE_CONFIGURED) + { +#ifdef USE_USBD_COMPOSITE + /* Parse the table of classes in use */ + for (uint32_t i = 0; i < USBD_MAX_SUPPORTED_CLASS; i++) + { + /* Check if current class is in use */ + if ((pdev->tclasslist[i].Active) == 1U) + { + if (pdev->pClass[i] != NULL) + { + if (pdev->pClass[i]->SOF != NULL) + { + pdev->classId = i; + (void)pdev->pClass[i]->SOF(pdev); + } + } + } + } +#else + if (pdev->pClass[0] != NULL) + { + if (pdev->pClass[0]->SOF != NULL) + { + (void)pdev->pClass[0]->SOF(pdev); + } + } +#endif /* USE_USBD_COMPOSITE */ + } + + return USBD_OK; +} + +/** + * @brief USBD_LL_IsoINIncomplete + * Handle iso in incomplete event + * @param pdev: device instance + * @retval status + */ +USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, + uint8_t epnum) +{ + if (pdev->pClass[pdev->classId] == NULL) + { + return USBD_FAIL; + } + + if (pdev->dev_state == USBD_STATE_CONFIGURED) + { + if (pdev->pClass[pdev->classId]->IsoINIncomplete != NULL) + { + (void)pdev->pClass[pdev->classId]->IsoINIncomplete(pdev, epnum); + } + } + + return USBD_OK; +} + +/** + * @brief USBD_LL_IsoOUTIncomplete + * Handle iso out incomplete event + * @param pdev: device instance + * @retval status + */ +USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, + uint8_t epnum) +{ + if (pdev->pClass[pdev->classId] == NULL) + { + return USBD_FAIL; + } + + if (pdev->dev_state == USBD_STATE_CONFIGURED) + { + if (pdev->pClass[pdev->classId]->IsoOUTIncomplete != NULL) + { + (void)pdev->pClass[pdev->classId]->IsoOUTIncomplete(pdev, epnum); + } + } + + return USBD_OK; +} + +/** + * @brief USBD_LL_DevConnected + * Handle device connection event + * @param pdev: device instance + * @retval status + */ +USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev) +{ + /* Prevent unused argument compilation warning */ + UNUSED(pdev); + + return USBD_OK; +} + +/** + * @brief USBD_LL_DevDisconnected + * Handle device disconnection event + * @param pdev: device instance + * @retval status + */ +USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev) +{ + USBD_StatusTypeDef ret = USBD_OK; + + /* Free Class Resources */ + pdev->dev_state = USBD_STATE_DEFAULT; + +#ifdef USE_USBD_COMPOSITE + /* Parse the table of classes in use */ + for (uint32_t i = 0; i < USBD_MAX_SUPPORTED_CLASS; i++) + { + /* Check if current class is in use */ + if ((pdev->tclasslist[i].Active) == 1U) + { + if (pdev->pClass[i] != NULL) + { + pdev->classId = i; + /* Clear configuration and De-initialize the Class process*/ + if (pdev->pClass[i]->DeInit(pdev, (uint8_t)pdev->dev_config) != 0U) + { + ret = USBD_FAIL; + } + } + } + } +#else + if (pdev->pClass[0] != NULL) + { + if (pdev->pClass[0]->DeInit(pdev, (uint8_t)pdev->dev_config) != 0U) + { + ret = USBD_FAIL; + } + } +#endif /* USE_USBD_COMPOSITE */ + + return ret; +} + +/** + * @brief USBD_CoreFindIF + * return the class index relative to the selected interface + * @param pdev: device instance + * @param index : selected interface number + * @retval index of the class using the selected interface number. OxFF if no class found. + */ +uint8_t USBD_CoreFindIF(USBD_HandleTypeDef *pdev, uint8_t index) +{ +#ifdef USE_USBD_COMPOSITE + /* Parse the table of classes in use */ + for (uint32_t i = 0U; i < USBD_MAX_SUPPORTED_CLASS; i++) + { + /* Check if current class is in use */ + if ((pdev->tclasslist[i].Active) == 1U) + { + /* Parse all interfaces listed in the current class */ + for (uint32_t j = 0U; j < pdev->tclasslist[i].NumIf; j++) + { + /* Check if requested Interface matches the current class interface */ + if (pdev->tclasslist[i].Ifs[j] == index) + { + if (pdev->pClass[i]->Setup != NULL) + { + return (uint8_t)i; + } + } + } + } + } + + return 0xFFU; +#else + UNUSED(pdev); + UNUSED(index); + + return 0x00U; +#endif /* USE_USBD_COMPOSITE */ +} + +/** + * @brief USBD_CoreFindEP + * return the class index relative to the selected endpoint + * @param pdev: device instance + * @param index : selected endpoint number + * @retval index of the class using the selected endpoint number. 0xFF if no class found. + */ +uint8_t USBD_CoreFindEP(USBD_HandleTypeDef *pdev, uint8_t index) +{ +#ifdef USE_USBD_COMPOSITE + /* Parse the table of classes in use */ + for (uint32_t i = 0U; i < USBD_MAX_SUPPORTED_CLASS; i++) + { + /* Check if current class is in use */ + if ((pdev->tclasslist[i].Active) == 1U) + { + /* Parse all endpoints listed in the current class */ + for (uint32_t j = 0U; j < pdev->tclasslist[i].NumEps; j++) + { + /* Check if requested endpoint matches the current class endpoint */ + if (pdev->tclasslist[i].Eps[j].add == index) + { + if (pdev->pClass[i]->Setup != NULL) + { + return (uint8_t)i; + } + } + } + } + } + + return 0xFFU; +#else + UNUSED(pdev); + UNUSED(index); + + return 0x00U; +#endif /* USE_USBD_COMPOSITE */ +} + +#ifdef USE_USBD_COMPOSITE +/** + * @brief USBD_CoreGetEPAdd + * Get the endpoint address relative to a selected class + * @param pdev: device instance + * @param ep_dir: USBD_EP_IN or USBD_EP_OUT + * @param ep_type: USBD_EP_TYPE_CTRL, USBD_EP_TYPE_ISOC, USBD_EP_TYPE_BULK or USBD_EP_TYPE_INTR + * @retval Address of the selected endpoint or 0xFFU if no endpoint found. + */ +uint8_t USBD_CoreGetEPAdd(USBD_HandleTypeDef *pdev, uint8_t ep_dir, uint8_t ep_type) +{ + uint8_t idx; + + /* Find the EP address in the selected class table */ + for (idx = 0; idx < pdev->tclasslist[pdev->classId].NumEps; idx++) + { + if (((pdev->tclasslist[pdev->classId].Eps[idx].add & USBD_EP_IN) == ep_dir) && \ + (pdev->tclasslist[pdev->classId].Eps[idx].type == ep_type) && \ + (pdev->tclasslist[pdev->classId].Eps[idx].is_used != 0U)) + { + return (pdev->tclasslist[pdev->classId].Eps[idx].add); + } + } + + /* If reaching this point, then no endpoint was found */ + return 0xFFU; +} +#endif /* USE_USBD_COMPOSITE */ + +/** + * @brief USBD_GetEpDesc + * This function return the Endpoint descriptor + * @param pdev: device instance + * @param pConfDesc: pointer to Bos descriptor + * @param EpAddr: endpoint address + * @retval pointer to video endpoint descriptor + */ +void *USBD_GetEpDesc(uint8_t *pConfDesc, uint8_t EpAddr) +{ + USBD_DescHeaderTypeDef *pdesc = (USBD_DescHeaderTypeDef *)(void *)pConfDesc; + USBD_ConfigDescTypeDef *desc = (USBD_ConfigDescTypeDef *)(void *)pConfDesc; + USBD_EpDescTypeDef *pEpDesc = NULL; + uint16_t ptr; + + if (desc->wTotalLength > desc->bLength) + { + ptr = desc->bLength; + + while (ptr < desc->wTotalLength) + { + pdesc = USBD_GetNextDesc((uint8_t *)pdesc, &ptr); + + if (pdesc->bDescriptorType == USB_DESC_TYPE_ENDPOINT) + { + pEpDesc = (USBD_EpDescTypeDef *)(void *)pdesc; + + if (pEpDesc->bEndpointAddress == EpAddr) + { + break; + } + else + { + pEpDesc = NULL; + } + } + } + } + + return (void *)pEpDesc; +} + +/** + * @brief USBD_GetNextDesc + * This function return the next descriptor header + * @param buf: Buffer where the descriptor is available + * @param ptr: data pointer inside the descriptor + * @retval next header + */ +USBD_DescHeaderTypeDef *USBD_GetNextDesc(uint8_t *pbuf, uint16_t *ptr) +{ + USBD_DescHeaderTypeDef *pnext = (USBD_DescHeaderTypeDef *)(void *)pbuf; + + *ptr += pnext->bLength; + pnext = (USBD_DescHeaderTypeDef *)(void *)(pbuf + pnext->bLength); + + return (pnext); +} + +/** + * @} + */ + + +/** + * @} + */ + + +/** + * @} + */ + diff --git a/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c b/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c new file mode 100644 index 0000000..9f2cbd2 --- /dev/null +++ b/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c @@ -0,0 +1,1051 @@ +/** + ****************************************************************************** + * @file usbd_req.c + * @author MCD Application Team + * @brief This file provides the standard USB requests following chapter 9. + ****************************************************************************** + * @attention + * + * Copyright (c) 2015 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_ctlreq.h" +#include "usbd_ioreq.h" + +#ifdef USE_USBD_COMPOSITE +#include "usbd_composite_builder.h" +#endif /* USE_USBD_COMPOSITE */ + +/** @addtogroup STM32_USBD_STATE_DEVICE_LIBRARY + * @{ + */ + + +/** @defgroup USBD_REQ + * @brief USB standard requests module + * @{ + */ + +/** @defgroup USBD_REQ_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_REQ_Private_Defines + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_REQ_Private_Macros + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_REQ_Private_Variables + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_REQ_Private_FunctionPrototypes + * @{ + */ +static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); +static void USBD_SetAddress(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); +static USBD_StatusTypeDef USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); +static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); +static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); +static void USBD_SetFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); +static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); +static uint8_t USBD_GetLen(uint8_t *buf); + +/** + * @} + */ + + +/** @defgroup USBD_REQ_Private_Functions + * @{ + */ + + +/** + * @brief USBD_StdDevReq + * Handle standard usb device requests + * @param pdev: device instance + * @param req: usb request + * @retval status + */ +USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + USBD_StatusTypeDef ret = USBD_OK; + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + { + case USB_REQ_TYPE_CLASS: + case USB_REQ_TYPE_VENDOR: + ret = (USBD_StatusTypeDef)pdev->pClass[pdev->classId]->Setup(pdev, req); + break; + + case USB_REQ_TYPE_STANDARD: + switch (req->bRequest) + { + case USB_REQ_GET_DESCRIPTOR: + USBD_GetDescriptor(pdev, req); + break; + + case USB_REQ_SET_ADDRESS: + USBD_SetAddress(pdev, req); + break; + + case USB_REQ_SET_CONFIGURATION: + ret = USBD_SetConfig(pdev, req); + break; + + case USB_REQ_GET_CONFIGURATION: + USBD_GetConfig(pdev, req); + break; + + case USB_REQ_GET_STATUS: + USBD_GetStatus(pdev, req); + break; + + case USB_REQ_SET_FEATURE: + USBD_SetFeature(pdev, req); + break; + + case USB_REQ_CLEAR_FEATURE: + USBD_ClrFeature(pdev, req); + break; + + default: + USBD_CtlError(pdev, req); + break; + } + break; + + default: + USBD_CtlError(pdev, req); + break; + } + + return ret; +} + +/** + * @brief USBD_StdItfReq + * Handle standard usb interface requests + * @param pdev: device instance + * @param req: usb request + * @retval status + */ +USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + USBD_StatusTypeDef ret = USBD_OK; + uint8_t idx; + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + { + case USB_REQ_TYPE_CLASS: + case USB_REQ_TYPE_VENDOR: + case USB_REQ_TYPE_STANDARD: + switch (pdev->dev_state) + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + case USBD_STATE_CONFIGURED: + + if (LOBYTE(req->wIndex) <= USBD_MAX_NUM_INTERFACES) + { + /* Get the class index relative to this interface */ + idx = USBD_CoreFindIF(pdev, LOBYTE(req->wIndex)); + if (((uint8_t)idx != 0xFFU) && (idx < USBD_MAX_SUPPORTED_CLASS)) + { + /* Call the class data out function to manage the request */ + if (pdev->pClass[idx]->Setup != NULL) + { + pdev->classId = idx; + ret = (USBD_StatusTypeDef)(pdev->pClass[idx]->Setup(pdev, req)); + } + else + { + /* should never reach this condition */ + ret = USBD_FAIL; + } + } + else + { + /* No relative interface found */ + ret = USBD_FAIL; + } + + if ((req->wLength == 0U) && (ret == USBD_OK)) + { + (void)USBD_CtlSendStatus(pdev); + } + } + else + { + USBD_CtlError(pdev, req); + } + break; + + default: + USBD_CtlError(pdev, req); + break; + } + break; + + default: + USBD_CtlError(pdev, req); + break; + } + + return ret; +} + +/** + * @brief USBD_StdEPReq + * Handle standard usb endpoint requests + * @param pdev: device instance + * @param req: usb request + * @retval status + */ +USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + USBD_EndpointTypeDef *pep; + uint8_t ep_addr; + uint8_t idx; + USBD_StatusTypeDef ret = USBD_OK; + + ep_addr = LOBYTE(req->wIndex); + + switch (req->bmRequest & USB_REQ_TYPE_MASK) + { + case USB_REQ_TYPE_CLASS: + case USB_REQ_TYPE_VENDOR: + /* Get the class index relative to this endpoint */ + idx = USBD_CoreFindEP(pdev, ep_addr); + if (((uint8_t)idx != 0xFFU) && (idx < USBD_MAX_SUPPORTED_CLASS)) + { + pdev->classId = idx; + /* Call the class data out function to manage the request */ + if (pdev->pClass[idx]->Setup != NULL) + { + ret = (USBD_StatusTypeDef)pdev->pClass[idx]->Setup(pdev, req); + } + } + break; + + case USB_REQ_TYPE_STANDARD: + switch (req->bRequest) + { + case USB_REQ_SET_FEATURE: + switch (pdev->dev_state) + { + case USBD_STATE_ADDRESSED: + if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) + { + (void)USBD_LL_StallEP(pdev, ep_addr); + (void)USBD_LL_StallEP(pdev, 0x80U); + } + else + { + USBD_CtlError(pdev, req); + } + break; + + case USBD_STATE_CONFIGURED: + if (req->wValue == USB_FEATURE_EP_HALT) + { + if ((ep_addr != 0x00U) && (ep_addr != 0x80U) && (req->wLength == 0x00U)) + { + (void)USBD_LL_StallEP(pdev, ep_addr); + } + } + (void)USBD_CtlSendStatus(pdev); + + break; + + default: + USBD_CtlError(pdev, req); + break; + } + break; + + case USB_REQ_CLEAR_FEATURE: + + switch (pdev->dev_state) + { + case USBD_STATE_ADDRESSED: + if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) + { + (void)USBD_LL_StallEP(pdev, ep_addr); + (void)USBD_LL_StallEP(pdev, 0x80U); + } + else + { + USBD_CtlError(pdev, req); + } + break; + + case USBD_STATE_CONFIGURED: + if (req->wValue == USB_FEATURE_EP_HALT) + { + if ((ep_addr & 0x7FU) != 0x00U) + { + (void)USBD_LL_ClearStallEP(pdev, ep_addr); + } + (void)USBD_CtlSendStatus(pdev); + + /* Get the class index relative to this interface */ + idx = USBD_CoreFindEP(pdev, ep_addr); + if (((uint8_t)idx != 0xFFU) && (idx < USBD_MAX_SUPPORTED_CLASS)) + { + pdev->classId = idx; + /* Call the class data out function to manage the request */ + if (pdev->pClass[idx]->Setup != NULL) + { + ret = (USBD_StatusTypeDef)(pdev->pClass[idx]->Setup(pdev, req)); + } + } + } + break; + + default: + USBD_CtlError(pdev, req); + break; + } + break; + + case USB_REQ_GET_STATUS: + switch (pdev->dev_state) + { + case USBD_STATE_ADDRESSED: + if ((ep_addr != 0x00U) && (ep_addr != 0x80U)) + { + USBD_CtlError(pdev, req); + break; + } + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + &pdev->ep_out[ep_addr & 0x7FU]; + + pep->status = 0x0000U; + + (void)USBD_CtlSendData(pdev, (uint8_t *)&pep->status, 2U); + break; + + case USBD_STATE_CONFIGURED: + if ((ep_addr & 0x80U) == 0x80U) + { + if (pdev->ep_in[ep_addr & 0xFU].is_used == 0U) + { + USBD_CtlError(pdev, req); + break; + } + } + else + { + if (pdev->ep_out[ep_addr & 0xFU].is_used == 0U) + { + USBD_CtlError(pdev, req); + break; + } + } + + pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \ + &pdev->ep_out[ep_addr & 0x7FU]; + + if ((ep_addr == 0x00U) || (ep_addr == 0x80U)) + { + pep->status = 0x0000U; + } + else if (USBD_LL_IsStallEP(pdev, ep_addr) != 0U) + { + pep->status = 0x0001U; + } + else + { + pep->status = 0x0000U; + } + + (void)USBD_CtlSendData(pdev, (uint8_t *)&pep->status, 2U); + break; + + default: + USBD_CtlError(pdev, req); + break; + } + break; + + default: + USBD_CtlError(pdev, req); + break; + } + break; + + default: + USBD_CtlError(pdev, req); + break; + } + + return ret; +} + + +/** + * @brief USBD_GetDescriptor + * Handle Get Descriptor requests + * @param pdev: device instance + * @param req: usb request + * @retval status + */ +static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + uint16_t len = 0U; + uint8_t *pbuf = NULL; + uint8_t err = 0U; + + switch (req->wValue >> 8) + { +#if ((USBD_LPM_ENABLED == 1U) || (USBD_CLASS_BOS_ENABLED == 1U)) + case USB_DESC_TYPE_BOS: + if (pdev->pDesc->GetBOSDescriptor != NULL) + { + pbuf = pdev->pDesc->GetBOSDescriptor(pdev->dev_speed, &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; +#endif /* (USBD_LPM_ENABLED == 1U) || (USBD_CLASS_BOS_ENABLED == 1U) */ + case USB_DESC_TYPE_DEVICE: + pbuf = pdev->pDesc->GetDeviceDescriptor(pdev->dev_speed, &len); + break; + + case USB_DESC_TYPE_CONFIGURATION: + if (pdev->dev_speed == USBD_SPEED_HIGH) + { +#ifdef USE_USBD_COMPOSITE + if ((uint8_t)(pdev->NumClasses) > 0U) + { + pbuf = (uint8_t *)USBD_CMPSIT.GetHSConfigDescriptor(&len); + } + else +#endif /* USE_USBD_COMPOSITE */ + { + pbuf = (uint8_t *)pdev->pClass[0]->GetHSConfigDescriptor(&len); + } + pbuf[1] = USB_DESC_TYPE_CONFIGURATION; + } + else + { +#ifdef USE_USBD_COMPOSITE + if ((uint8_t)(pdev->NumClasses) > 0U) + { + pbuf = (uint8_t *)USBD_CMPSIT.GetFSConfigDescriptor(&len); + } + else +#endif /* USE_USBD_COMPOSITE */ + { + pbuf = (uint8_t *)pdev->pClass[0]->GetFSConfigDescriptor(&len); + } + pbuf[1] = USB_DESC_TYPE_CONFIGURATION; + } + break; + + case USB_DESC_TYPE_STRING: + switch ((uint8_t)(req->wValue)) + { + case USBD_IDX_LANGID_STR: + if (pdev->pDesc->GetLangIDStrDescriptor != NULL) + { + pbuf = pdev->pDesc->GetLangIDStrDescriptor(pdev->dev_speed, &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + case USBD_IDX_MFC_STR: + if (pdev->pDesc->GetManufacturerStrDescriptor != NULL) + { + pbuf = pdev->pDesc->GetManufacturerStrDescriptor(pdev->dev_speed, &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + case USBD_IDX_PRODUCT_STR: + if (pdev->pDesc->GetProductStrDescriptor != NULL) + { + pbuf = pdev->pDesc->GetProductStrDescriptor(pdev->dev_speed, &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + case USBD_IDX_SERIAL_STR: + if (pdev->pDesc->GetSerialStrDescriptor != NULL) + { + pbuf = pdev->pDesc->GetSerialStrDescriptor(pdev->dev_speed, &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + case USBD_IDX_CONFIG_STR: + if (pdev->pDesc->GetConfigurationStrDescriptor != NULL) + { + pbuf = pdev->pDesc->GetConfigurationStrDescriptor(pdev->dev_speed, &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + case USBD_IDX_INTERFACE_STR: + if (pdev->pDesc->GetInterfaceStrDescriptor != NULL) + { + pbuf = pdev->pDesc->GetInterfaceStrDescriptor(pdev->dev_speed, &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + default: +#if (USBD_SUPPORT_USER_STRING_DESC == 1U) + pbuf = NULL; + + + for (uint32_t idx = 0U; (idx < pdev->NumClasses); idx++) + { + if (pdev->pClass[idx]->GetUsrStrDescriptor != NULL) + { + pdev->classId = idx; + pbuf = pdev->pClass[idx]->GetUsrStrDescriptor(pdev, LOBYTE(req->wValue), &len); + + if (pbuf == NULL) /* This means that no class recognized the string index */ + { + continue; + } + else + { + break; + } + } + } + +#endif /* USBD_SUPPORT_USER_STRING_DESC */ + +#if (USBD_CLASS_USER_STRING_DESC == 1U) + if (pdev->pDesc->GetUserStrDescriptor != NULL) + { + pbuf = pdev->pDesc->GetUserStrDescriptor(pdev->dev_speed, (req->wValue), &len); + } + else + { + USBD_CtlError(pdev, req); + err++; + } +#endif /* USBD_SUPPORT_USER_STRING_DESC */ + +#if ((USBD_CLASS_USER_STRING_DESC == 0U) && (USBD_SUPPORT_USER_STRING_DESC == 0U)) + USBD_CtlError(pdev, req); + err++; +#endif /* (USBD_CLASS_USER_STRING_DESC == 0U) && (USBD_SUPPORT_USER_STRING_DESC == 0U) */ + break; + } + break; + + case USB_DESC_TYPE_DEVICE_QUALIFIER: + if (pdev->dev_speed == USBD_SPEED_HIGH) + { +#ifdef USE_USBD_COMPOSITE + if ((uint8_t)(pdev->NumClasses) > 0U) + { + pbuf = (uint8_t *)USBD_CMPSIT.GetDeviceQualifierDescriptor(&len); + } + else +#endif /* USE_USBD_COMPOSITE */ + { + pbuf = (uint8_t *)pdev->pClass[0]->GetDeviceQualifierDescriptor(&len); + } + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + case USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION: + if (pdev->dev_speed == USBD_SPEED_HIGH) + { +#ifdef USE_USBD_COMPOSITE + if ((uint8_t)(pdev->NumClasses) > 0U) + { + pbuf = (uint8_t *)USBD_CMPSIT.GetOtherSpeedConfigDescriptor(&len); + } + else +#endif /* USE_USBD_COMPOSITE */ + { + pbuf = (uint8_t *)pdev->pClass[0]->GetOtherSpeedConfigDescriptor(&len); + } + pbuf[1] = USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION; + } + else + { + USBD_CtlError(pdev, req); + err++; + } + break; + + default: + USBD_CtlError(pdev, req); + err++; + break; + } + + if (err != 0U) + { + return; + } + + if (req->wLength != 0U) + { + if (len != 0U) + { + len = MIN(len, req->wLength); + (void)USBD_CtlSendData(pdev, pbuf, len); + } + else + { + USBD_CtlError(pdev, req); + } + } + else + { + (void)USBD_CtlSendStatus(pdev); + } +} + + +/** + * @brief USBD_SetAddress + * Set device address + * @param pdev: device instance + * @param req: usb request + * @retval status + */ +static void USBD_SetAddress(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + uint8_t dev_addr; + + if ((req->wIndex == 0U) && (req->wLength == 0U) && (req->wValue < 128U)) + { + dev_addr = (uint8_t)(req->wValue) & 0x7FU; + + if (pdev->dev_state == USBD_STATE_CONFIGURED) + { + USBD_CtlError(pdev, req); + } + else + { + pdev->dev_address = dev_addr; + (void)USBD_LL_SetUSBAddress(pdev, dev_addr); + (void)USBD_CtlSendStatus(pdev); + + if (dev_addr != 0U) + { + pdev->dev_state = USBD_STATE_ADDRESSED; + } + else + { + pdev->dev_state = USBD_STATE_DEFAULT; + } + } + } + else + { + USBD_CtlError(pdev, req); + } +} + +/** + * @brief USBD_SetConfig + * Handle Set device configuration request + * @param pdev: device instance + * @param req: usb request + * @retval status + */ +static USBD_StatusTypeDef USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + USBD_StatusTypeDef ret = USBD_OK; + static uint8_t cfgidx; + + cfgidx = (uint8_t)(req->wValue); + + if (cfgidx > USBD_MAX_NUM_CONFIGURATION) + { + USBD_CtlError(pdev, req); + return USBD_FAIL; + } + + switch (pdev->dev_state) + { + case USBD_STATE_ADDRESSED: + if (cfgidx != 0U) + { + pdev->dev_config = cfgidx; + + ret = USBD_SetClassConfig(pdev, cfgidx); + + if (ret != USBD_OK) + { + USBD_CtlError(pdev, req); + pdev->dev_state = USBD_STATE_ADDRESSED; + } + else + { + (void)USBD_CtlSendStatus(pdev); + pdev->dev_state = USBD_STATE_CONFIGURED; + } + } + else + { + (void)USBD_CtlSendStatus(pdev); + } + break; + + case USBD_STATE_CONFIGURED: + if (cfgidx == 0U) + { + pdev->dev_state = USBD_STATE_ADDRESSED; + pdev->dev_config = cfgidx; + (void)USBD_ClrClassConfig(pdev, cfgidx); + (void)USBD_CtlSendStatus(pdev); + } + else if (cfgidx != pdev->dev_config) + { + /* Clear old configuration */ + (void)USBD_ClrClassConfig(pdev, (uint8_t)pdev->dev_config); + + /* set new configuration */ + pdev->dev_config = cfgidx; + + ret = USBD_SetClassConfig(pdev, cfgidx); + + if (ret != USBD_OK) + { + USBD_CtlError(pdev, req); + (void)USBD_ClrClassConfig(pdev, (uint8_t)pdev->dev_config); + pdev->dev_state = USBD_STATE_ADDRESSED; + } + else + { + (void)USBD_CtlSendStatus(pdev); + } + } + else + { + (void)USBD_CtlSendStatus(pdev); + } + break; + + default: + USBD_CtlError(pdev, req); + (void)USBD_ClrClassConfig(pdev, cfgidx); + ret = USBD_FAIL; + break; + } + + return ret; +} + +/** + * @brief USBD_GetConfig + * Handle Get device configuration request + * @param pdev: device instance + * @param req: usb request + * @retval status + */ +static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + if (req->wLength != 1U) + { + USBD_CtlError(pdev, req); + } + else + { + switch (pdev->dev_state) + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + pdev->dev_default_config = 0U; + (void)USBD_CtlSendData(pdev, (uint8_t *)&pdev->dev_default_config, 1U); + break; + + case USBD_STATE_CONFIGURED: + (void)USBD_CtlSendData(pdev, (uint8_t *)&pdev->dev_config, 1U); + break; + + default: + USBD_CtlError(pdev, req); + break; + } + } +} + +/** + * @brief USBD_GetStatus + * Handle Get Status request + * @param pdev: device instance + * @param req: usb request + * @retval status + */ +static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + switch (pdev->dev_state) + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + case USBD_STATE_CONFIGURED: + if (req->wLength != 0x2U) + { + USBD_CtlError(pdev, req); + break; + } + +#if (USBD_SELF_POWERED == 1U) + pdev->dev_config_status = USB_CONFIG_SELF_POWERED; +#else + pdev->dev_config_status = 0U; +#endif /* USBD_SELF_POWERED */ + + if (pdev->dev_remote_wakeup != 0U) + { + pdev->dev_config_status |= USB_CONFIG_REMOTE_WAKEUP; + } + + (void)USBD_CtlSendData(pdev, (uint8_t *)&pdev->dev_config_status, 2U); + break; + + default: + USBD_CtlError(pdev, req); + break; + } +} + + +/** + * @brief USBD_SetFeature + * Handle Set device feature request + * @param pdev: device instance + * @param req: usb request + * @retval status + */ +static void USBD_SetFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) + { + pdev->dev_remote_wakeup = 1U; + (void)USBD_CtlSendStatus(pdev); + } + else if (req->wValue == USB_FEATURE_TEST_MODE) + { + pdev->dev_test_mode = req->wIndex >> 8; + (void)USBD_CtlSendStatus(pdev); + } + else + { + USBD_CtlError(pdev, req); + } +} + + +/** + * @brief USBD_ClrFeature + * Handle clear device feature request + * @param pdev: device instance + * @param req: usb request + * @retval status + */ +static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + switch (pdev->dev_state) + { + case USBD_STATE_DEFAULT: + case USBD_STATE_ADDRESSED: + case USBD_STATE_CONFIGURED: + if (req->wValue == USB_FEATURE_REMOTE_WAKEUP) + { + pdev->dev_remote_wakeup = 0U; + (void)USBD_CtlSendStatus(pdev); + } + break; + + default: + USBD_CtlError(pdev, req); + break; + } +} + + +/** + * @brief USBD_ParseSetupRequest + * Copy buffer into setup structure + * @param pdev: device instance + * @param req: usb request + * @retval None + */ +void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata) +{ + uint8_t *pbuff = pdata; + + req->bmRequest = *(uint8_t *)(pbuff); + + pbuff++; + req->bRequest = *(uint8_t *)(pbuff); + + pbuff++; + req->wValue = SWAPBYTE(pbuff); + + pbuff++; + pbuff++; + req->wIndex = SWAPBYTE(pbuff); + + pbuff++; + pbuff++; + req->wLength = SWAPBYTE(pbuff); +} + + +/** + * @brief USBD_CtlError + * Handle USB low level Error + * @param pdev: device instance + * @param req: usb request + * @retval None + */ +void USBD_CtlError(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) +{ + UNUSED(req); + + (void)USBD_LL_StallEP(pdev, 0x80U); + (void)USBD_LL_StallEP(pdev, 0U); +} + + +/** + * @brief USBD_GetString + * Convert Ascii string into unicode one + * @param desc : descriptor buffer + * @param unicode : Formatted string buffer (unicode) + * @param len : descriptor length + * @retval None + */ +void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len) +{ + uint8_t idx = 0U; + uint8_t *pdesc; + + if (desc == NULL) + { + return; + } + + pdesc = desc; + *len = ((uint16_t)USBD_GetLen(pdesc) * 2U) + 2U; + + unicode[idx] = *(uint8_t *)len; + idx++; + unicode[idx] = USB_DESC_TYPE_STRING; + idx++; + + while (*pdesc != (uint8_t)'\0') + { + unicode[idx] = *pdesc; + pdesc++; + idx++; + + unicode[idx] = 0U; + idx++; + } +} + + +/** + * @brief USBD_GetLen + * return the string length + * @param buf : pointer to the ascii string buffer + * @retval string length + */ +static uint8_t USBD_GetLen(uint8_t *buf) +{ + uint8_t len = 0U; + uint8_t *pbuff = buf; + + while (*pbuff != (uint8_t)'\0') + { + len++; + pbuff++; + } + + return len; +} +/** + * @} + */ + + +/** + * @} + */ + + +/** + * @} + */ + diff --git a/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c b/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c new file mode 100644 index 0000000..e8a44db --- /dev/null +++ b/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c @@ -0,0 +1,224 @@ +/** + ****************************************************************************** + * @file usbd_ioreq.c + * @author MCD Application Team + * @brief This file provides the IO requests APIs for control endpoints. + ****************************************************************************** + * @attention + * + * Copyright (c) 2015 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_ioreq.h" + +/** @addtogroup STM32_USB_DEVICE_LIBRARY + * @{ + */ + + +/** @defgroup USBD_IOREQ + * @brief control I/O requests module + * @{ + */ + +/** @defgroup USBD_IOREQ_Private_TypesDefinitions + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_IOREQ_Private_Defines + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_IOREQ_Private_Macros + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_IOREQ_Private_Variables + * @{ + */ + +/** + * @} + */ + + +/** @defgroup USBD_IOREQ_Private_FunctionPrototypes + * @{ + */ +/** + * @} + */ + + +/** @defgroup USBD_IOREQ_Private_Functions + * @{ + */ + +/** + * @brief USBD_CtlSendData + * send data on the ctl pipe + * @param pdev: device instance + * @param buff: pointer to data buffer + * @param len: length of data to be sent + * @retval status + */ +USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint32_t len) +{ + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_DATA_IN; + pdev->ep_in[0].total_length = len; + +#ifdef USBD_AVOID_PACKET_SPLIT_MPS + pdev->ep_in[0].rem_length = 0U; +#else + pdev->ep_in[0].rem_length = len; +#endif /* USBD_AVOID_PACKET_SPLIT_MPS */ + + /* Start the transfer */ + (void)USBD_LL_Transmit(pdev, 0x00U, pbuf, len); + + return USBD_OK; +} + +/** + * @brief USBD_CtlContinueSendData + * continue sending data on the ctl pipe + * @param pdev: device instance + * @param buff: pointer to data buffer + * @param len: length of data to be sent + * @retval status + */ +USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint32_t len) +{ + /* Start the next transfer */ + (void)USBD_LL_Transmit(pdev, 0x00U, pbuf, len); + + return USBD_OK; +} + +/** + * @brief USBD_CtlPrepareRx + * receive data on the ctl pipe + * @param pdev: device instance + * @param buff: pointer to data buffer + * @param len: length of data to be received + * @retval status + */ +USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint32_t len) +{ + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_DATA_OUT; + pdev->ep_out[0].total_length = len; + +#ifdef USBD_AVOID_PACKET_SPLIT_MPS + pdev->ep_out[0].rem_length = 0U; +#else + pdev->ep_out[0].rem_length = len; +#endif /* USBD_AVOID_PACKET_SPLIT_MPS */ + + /* Start the transfer */ + (void)USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); + + return USBD_OK; +} + +/** + * @brief USBD_CtlContinueRx + * continue receive data on the ctl pipe + * @param pdev: device instance + * @param buff: pointer to data buffer + * @param len: length of data to be received + * @retval status + */ +USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev, + uint8_t *pbuf, uint32_t len) +{ + (void)USBD_LL_PrepareReceive(pdev, 0U, pbuf, len); + + return USBD_OK; +} + +/** + * @brief USBD_CtlSendStatus + * send zero lzngth packet on the ctl pipe + * @param pdev: device instance + * @retval status + */ +USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev) +{ + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_STATUS_IN; + + /* Start the transfer */ + (void)USBD_LL_Transmit(pdev, 0x00U, NULL, 0U); + + return USBD_OK; +} + +/** + * @brief USBD_CtlReceiveStatus + * receive zero lzngth packet on the ctl pipe + * @param pdev: device instance + * @retval status + */ +USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev) +{ + /* Set EP0 State */ + pdev->ep0_state = USBD_EP0_STATUS_OUT; + + /* Start the transfer */ + (void)USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U); + + return USBD_OK; +} + +/** + * @brief USBD_GetRxCount + * returns the received data length + * @param pdev: device instance + * @param ep_addr: endpoint address + * @retval Rx Data blength + */ +uint32_t USBD_GetRxCount(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + return USBD_LL_GetRxDataSize(pdev, ep_addr); +} + +/** + * @} + */ + + +/** + * @} + */ + + +/** + * @} + */ + diff --git a/Middlewares/ST/STM32_USB_Device_Library/LICENSE.txt b/Middlewares/ST/STM32_USB_Device_Library/LICENSE.txt new file mode 100644 index 0000000..a8900af --- /dev/null +++ b/Middlewares/ST/STM32_USB_Device_Library/LICENSE.txt @@ -0,0 +1,86 @@ +This software component is provided to you as part of a software package and +applicable license terms are in the Package_license file. If you received this +software component outside of a package or without applicable license terms, +the terms of the SLA0044 license shall apply and are fully reproduced below: + +SLA0044 Rev5/February 2018 + +Software license agreement + +ULTIMATE LIBERTY SOFTWARE LICENSE AGREEMENT + +BY INSTALLING, COPYING, DOWNLOADING, ACCESSING OR OTHERWISE USING THIS SOFTWARE +OR ANY PART THEREOF (AND THE RELATED DOCUMENTATION) FROM STMICROELECTRONICS +INTERNATIONAL N.V, SWISS BRANCH AND/OR ITS AFFILIATED COMPANIES +(STMICROELECTRONICS), THE RECIPIENT, ON BEHALF OF HIMSELF OR HERSELF, OR ON +BEHALF OF ANY ENTITY BY WHICH SUCH RECIPIENT IS EMPLOYED AND/OR ENGAGED AGREES +TO BE BOUND BY THIS SOFTWARE LICENSE AGREEMENT. + +Under STMicroelectronics’ intellectual property rights, the redistribution, +reproduction and use in source and binary forms of the software or any part +thereof, with or without modification, are permitted provided that the following +conditions are met: + +1. Redistribution of source code (modified or not) must retain any copyright +notice, this list of conditions and the disclaimer set forth below as items 10 +and 11. + +2. Redistributions in binary form, except as embedded into microcontroller or +microprocessor device manufactured by or for STMicroelectronics or a software +update for such device, must reproduce any copyright notice provided with the +binary code, this list of conditions, and the disclaimer set forth below as +items 10 and 11, in 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 or part thereof without specific written permission. + +4. This software or any part thereof, including modifications and/or derivative +works of this software, must be used and execute solely and exclusively on or in +combination with a microcontroller or microprocessor device manufactured by or +for STMicroelectronics. + +5. No use, reproduction or redistribution of this software partially or totally +may be done in any manner that would subject this software to any Open Source +Terms. “Open Source Terms” shall mean any open source license which requires as +part of distribution of software that the source code of such software is +distributed therewith or otherwise made available, or open source license that +substantially complies with the Open Source definition specified at +www.opensource.org and any other comparable open source license such as for +example GNU General Public License (GPL), Eclipse Public License (EPL), Apache +Software License, BSD license or MIT license. + +6. STMicroelectronics has no obligation to provide any maintenance, support or +updates for the software. + +7. The software is and will remain the exclusive property of STMicroelectronics +and its licensors. The recipient will not take any action that jeopardizes +STMicroelectronics and its licensors' proprietary rights or acquire any rights +in the software, except the limited rights specified hereunder. + +8. The recipient shall comply with all applicable laws and regulations affecting +the use of the software or any part thereof including any applicable export +control law or regulation. + +9. Redistribution and use of this software or any part thereof other than as +permitted under this license is void and will automatically terminate your +rights under this license. + +10. 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, WHICH 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. + +11. EXCEPT AS EXPRESSLY PERMITTED HEREUNDER, NO LICENSE OR OTHER RIGHTS, WHETHER +EXPRESS OR IMPLIED, ARE GRANTED UNDER ANY PATENT OR OTHER INTELLECTUAL PROPERTY +RIGHTS OF STMICROELECTRONICS OR ANY THIRD PARTY. + diff --git a/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc/usbh_cdc.h b/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc/usbh_cdc.h deleted file mode 100644 index 3afc137..0000000 --- a/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Inc/usbh_cdc.h +++ /dev/null @@ -1,448 +0,0 @@ -/** - ****************************************************************************** - * @file usbh_cdc.h - * @author MCD Application Team - * @brief This file contains all the prototypes for the usbh_cdc.c - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2015 STMicroelectronics. - * All rights reserved.

- * - * 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 - * - ****************************************************************************** - */ - -/* Define to prevent recursive ----------------------------------------------*/ -#ifndef __USBH_CDC_H -#define __USBH_CDC_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "usbh_core.h" - - -/** @addtogroup USBH_LIB - * @{ - */ - -/** @addtogroup USBH_CLASS - * @{ - */ - -/** @addtogroup USBH_CDC_CLASS - * @{ - */ - -/** @defgroup USBH_CDC_CORE - * @brief This file is the Header file for usbh_core.c - * @{ - */ - - - - -/*Communication Class codes*/ -#define USB_CDC_CLASS 0x02U -#define COMMUNICATION_INTERFACE_CLASS_CODE 0x02U - -/*Data Interface Class Codes*/ -#define DATA_INTERFACE_CLASS_CODE 0x0AU - -/*Communication sub class codes*/ -#define RESERVED 0x00U -#define DIRECT_LINE_CONTROL_MODEL 0x01U -#define ABSTRACT_CONTROL_MODEL 0x02U -#define TELEPHONE_CONTROL_MODEL 0x03U -#define MULTICHANNEL_CONTROL_MODEL 0x04U -#define CAPI_CONTROL_MODEL 0x05U -#define ETHERNET_NETWORKING_CONTROL_MODEL 0x06U -#define ATM_NETWORKING_CONTROL_MODEL 0x07U - - -/*Communication Interface Class Control Protocol Codes*/ -#define NO_CLASS_SPECIFIC_PROTOCOL_CODE 0x00U -#define COMMON_AT_COMMAND 0x01U -#define VENDOR_SPECIFIC 0xFFU - - -#define CS_INTERFACE 0x24U -#define CDC_PAGE_SIZE_64 0x40U - -/*Class-Specific Request Codes*/ -#define CDC_SEND_ENCAPSULATED_COMMAND 0x00U -#define CDC_GET_ENCAPSULATED_RESPONSE 0x01U -#define CDC_SET_COMM_FEATURE 0x02U -#define CDC_GET_COMM_FEATURE 0x03U -#define CDC_CLEAR_COMM_FEATURE 0x04U - -#define CDC_SET_AUX_LINE_STATE 0x10U -#define CDC_SET_HOOK_STATE 0x11U -#define CDC_PULSE_SETUP 0x12U -#define CDC_SEND_PULSE 0x13U -#define CDC_SET_PULSE_TIME 0x14U -#define CDC_RING_AUX_JACK 0x15U - -#define CDC_SET_LINE_CODING 0x20U -#define CDC_GET_LINE_CODING 0x21U -#define CDC_SET_CONTROL_LINE_STATE 0x22U -#define CDC_SEND_BREAK 0x23U - -#define CDC_SET_RINGER_PARMS 0x30U -#define CDC_GET_RINGER_PARMS 0x31U -#define CDC_SET_OPERATION_PARMS 0x32U -#define CDC_GET_OPERATION_PARMS 0x33U -#define CDC_SET_LINE_PARMS 0x34U -#define CDC_GET_LINE_PARMS 0x35U -#define CDC_DIAL_DIGITS 0x36U -#define CDC_SET_UNIT_PARAMETER 0x37U -#define CDC_GET_UNIT_PARAMETER 0x38U -#define CDC_CLEAR_UNIT_PARAMETER 0x39U -#define CDC_GET_PROFILE 0x3AU - -#define CDC_SET_ETHERNET_MULTICAST_FILTERS 0x40U -#define CDC_SET_ETHERNET_POWER_MANAGEMENT_PATTERN FILTER 0x41U -#define CDC_GET_ETHERNET_POWER_MANAGEMENT_PATTERN FILTER 0x42U -#define CDC_SET_ETHERNET_PACKET_FILTER 0x43U -#define CDC_GET_ETHERNET_STATISTIC 0x44U - -#define CDC_SET_ATM_DATA_FORMAT 0x50U -#define CDC_GET_ATM_DEVICE_STATISTICS 0x51U -#define CDC_SET_ATM_DEFAULT_VC 0x52U -#define CDC_GET_ATM_VC_STATISTICS 0x53U - - -/* wValue for SetControlLineState*/ -#define CDC_ACTIVATE_CARRIER_SIGNAL_RTS 0x0002U -#define CDC_DEACTIVATE_CARRIER_SIGNAL_RTS 0x0000U -#define CDC_ACTIVATE_SIGNAL_DTR 0x0001U -#define CDC_DEACTIVATE_SIGNAL_DTR 0x0000U - -#define LINE_CODING_STRUCTURE_SIZE 0x07U -/** - * @} - */ - -/** @defgroup USBH_CDC_CORE_Exported_Types - * @{ - */ - -/* States for CDC State Machine */ -typedef enum -{ - CDC_IDLE = 0U, - CDC_SEND_DATA, - CDC_SEND_DATA_WAIT, - CDC_RECEIVE_DATA, - CDC_RECEIVE_DATA_WAIT, -} -CDC_DataStateTypeDef; - -typedef enum -{ - CDC_IDLE_STATE = 0U, - CDC_SET_LINE_CODING_STATE, - CDC_GET_LAST_LINE_CODING_STATE, - CDC_TRANSFER_DATA, - CDC_ERROR_STATE, -} -CDC_StateTypeDef; - - -/*Line coding structure*/ -typedef union _CDC_LineCodingStructure -{ - uint8_t Array[LINE_CODING_STRUCTURE_SIZE]; - - struct - { - - uint32_t dwDTERate; /*Data terminal rate, in bits per second*/ - uint8_t bCharFormat; /*Stop bits - 0 - 1 Stop bit - 1 - 1.5 Stop bits - 2 - 2 Stop bits*/ - uint8_t bParityType; /* Parity - 0 - None - 1 - Odd - 2 - Even - 3 - Mark - 4 - Space*/ - uint8_t bDataBits; /* Data bits (5, 6, 7, 8 or 16). */ - } b; -} -CDC_LineCodingTypeDef; - - - -/* Header Functional Descriptor --------------------------------------------------------------------------------- -Offset| field | Size | Value | Description -------|---------------------|-------|------------|------------------------------ -0 | bFunctionLength | 1 | number | Size of this descriptor. -1 | bDescriptorType | 1 | Constant | CS_INTERFACE (0x24) -2 | bDescriptorSubtype | 1 | Constant | Identifier (ID) of functional - | | | | descriptor. -3 | bcdCDC | 2 | | - | | | Number | USB Class Definitions for - | | | | Communication Devices Specification - | | | | release number in binary-coded - | | | | decimal -------|---------------------|-------|------------|------------------------------ - */ -typedef struct _FunctionalDescriptorHeader -{ - uint8_t bLength; /*Size of this descriptor.*/ - uint8_t bDescriptorType; /*CS_INTERFACE (0x24)*/ - uint8_t bDescriptorSubType; /* Header functional descriptor subtype as*/ - uint16_t bcdCDC; /* USB Class Definitions for Communication - Devices Specification release number in - binary-coded decimal. */ -} -CDC_HeaderFuncDesc_TypeDef; -/* Call Management Functional Descriptor --------------------------------------------------------------------------------- -Offset| field | Size | Value | Description -------|---------------------|-------|------------|------------------------------ -0 | bFunctionLength | 1 | number | Size of this descriptor. -1 | bDescriptorType | 1 | Constant | CS_INTERFACE (0x24) -2 | bDescriptorSubtype | 1 | Constant | Call Management functional - | | | | descriptor subtype. -3 | bmCapabilities | 1 | Bitmap | The capabilities that this configuration - | | | | supports: - | | | | D7..D2: RESERVED (Reset to zero) - | | | | D1: 0 - Device sends/receives call - | | | | management information only over - | | | | the Communication Class - | | | | interface. - | | | | 1 - Device can send/receive call - | \ | | management information over a - | | | | Data Class interface. - | | | | D0: 0 - Device does not handle call - | | | | management itself. - | | | | 1 - Device handles call - | | | | management itself. - | | | | The previous bits, in combination, identify - | | | | which call management scenario is used. If bit - | | | | D0 is reset to 0, then the value of bit D1 is - | | | | ignored. In this case, bit D1 is reset to zero for - | | | | future compatibility. -4 | bDataInterface | 1 | Number | Interface number of Data Class interface - | | | | optionally used for call management. -------|---------------------|-------|------------|------------------------------ - */ -typedef struct _CallMgmtFunctionalDescriptor -{ - uint8_t bLength; /*Size of this functional descriptor, in bytes.*/ - uint8_t bDescriptorType; /*CS_INTERFACE (0x24)*/ - uint8_t bDescriptorSubType; /* Call Management functional descriptor subtype*/ - uint8_t bmCapabilities; /* bmCapabilities: D0+D1 */ - uint8_t bDataInterface; /*bDataInterface: 1*/ -} -CDC_CallMgmtFuncDesc_TypeDef; -/* Abstract Control Management Functional Descriptor --------------------------------------------------------------------------------- -Offset| field | Size | Value | Description -------|---------------------|-------|------------|------------------------------ -0 | bFunctionLength | 1 | number | Size of functional descriptor, in bytes. -1 | bDescriptorType | 1 | Constant | CS_INTERFACE (0x24) -2 | bDescriptorSubtype | 1 | Constant | Abstract Control Management - | | | | functional descriptor subtype. -3 | bmCapabilities | 1 | Bitmap | The capabilities that this configuration - | | | | supports ((A bit value of zero means that the - | | | | request is not supported.) ) - D7..D4: RESERVED (Reset to zero) - | | | | D3: 1 - Device supports the notification - | | | | Network_Connection. - | | | | D2: 1 - Device supports the request - | | | | Send_Break - | | | | D1: 1 - Device supports the request - | \ | | combination of Set_Line_Coding, - | | | | Set_Control_Line_State, Get_Line_Coding, and the - notification Serial_State. - | | | | D0: 1 - Device supports the request - | | | | combination of Set_Comm_Feature, - | | | | Clear_Comm_Feature, and Get_Comm_Feature. - | | | | The previous bits, in combination, identify - | | | | which requests/notifications are supported by - | | | | a Communication Class interface with the - | | | | SubClass code of Abstract Control Model. -------|---------------------|-------|------------|------------------------------ - */ -typedef struct _AbstractCntrlMgmtFunctionalDescriptor -{ - uint8_t bLength; /*Size of this functional descriptor, in bytes.*/ - uint8_t bDescriptorType; /*CS_INTERFACE (0x24)*/ - uint8_t bDescriptorSubType; /* Abstract Control Management functional - descriptor subtype*/ - uint8_t bmCapabilities; /* The capabilities that this configuration supports */ -} -CDC_AbstCntrlMgmtFuncDesc_TypeDef; -/* Union Functional Descriptor --------------------------------------------------------------------------------- -Offset| field | Size | Value | Description -------|---------------------|-------|------------|------------------------------ -0 | bFunctionLength | 1 | number | Size of this descriptor. -1 | bDescriptorType | 1 | Constant | CS_INTERFACE (0x24) -2 | bDescriptorSubtype | 1 | Constant | Union functional - | | | | descriptor subtype. -3 | bMasterInterface | 1 | Constant | The interface number of the - | | | | Communication or Data Class interface -4 | bSlaveInterface0 | 1 | Number | nterface number of first slave or associated - | | | | interface in the union. -------|---------------------|-------|------------|------------------------------ - */ -typedef struct _UnionFunctionalDescriptor -{ - uint8_t bLength; /*Size of this functional descriptor, in bytes*/ - uint8_t bDescriptorType; /*CS_INTERFACE (0x24)*/ - uint8_t bDescriptorSubType; /* Union functional descriptor SubType*/ - uint8_t bMasterInterface; /* The interface number of the Communication or - Data Class interface,*/ - uint8_t bSlaveInterface0; /*Interface number of first slave*/ -} -CDC_UnionFuncDesc_TypeDef; - -typedef struct _USBH_CDCInterfaceDesc -{ - CDC_HeaderFuncDesc_TypeDef CDC_HeaderFuncDesc; - CDC_CallMgmtFuncDesc_TypeDef CDC_CallMgmtFuncDesc; - CDC_AbstCntrlMgmtFuncDesc_TypeDef CDC_AbstCntrlMgmtFuncDesc; - CDC_UnionFuncDesc_TypeDef CDC_UnionFuncDesc; -} -CDC_InterfaceDesc_Typedef; - - -/* Structure for CDC process */ -typedef struct -{ - uint8_t NotifPipe; - uint8_t NotifEp; - uint8_t buff[8]; - uint16_t NotifEpSize; -} -CDC_CommItfTypedef ; - -typedef struct -{ - uint8_t InPipe; - uint8_t OutPipe; - uint8_t OutEp; - uint8_t InEp; - uint8_t buff[8]; - uint16_t OutEpSize; - uint16_t InEpSize; -} -CDC_DataItfTypedef ; - -/* Structure for CDC process */ -typedef struct _CDC_Process -{ - CDC_CommItfTypedef CommItf; - CDC_DataItfTypedef DataItf; - uint8_t *pTxData; - uint8_t *pRxData; - uint32_t TxDataLength; - uint32_t RxDataLength; - CDC_InterfaceDesc_Typedef CDC_Desc; - CDC_LineCodingTypeDef LineCoding; - CDC_LineCodingTypeDef *pUserLineCoding; - CDC_StateTypeDef state; - CDC_DataStateTypeDef data_tx_state; - CDC_DataStateTypeDef data_rx_state; - uint8_t Rx_Poll; -} -CDC_HandleTypeDef; - -/** - * @} - */ - -/** @defgroup USBH_CDC_CORE_Exported_Defines - * @{ - */ - -/** - * @} - */ - -/** @defgroup USBH_CDC_CORE_Exported_Macros - * @{ - */ -/** - * @} - */ - -/** @defgroup USBH_CDC_CORE_Exported_Variables - * @{ - */ -extern USBH_ClassTypeDef CDC_Class; -#define USBH_CDC_CLASS &CDC_Class - -/** - * @} - */ - -/** @defgroup USBH_CDC_CORE_Exported_FunctionsPrototype - * @{ - */ - -USBH_StatusTypeDef USBH_CDC_SetLineCoding(USBH_HandleTypeDef *phost, - CDC_LineCodingTypeDef *linecoding); - -USBH_StatusTypeDef USBH_CDC_GetLineCoding(USBH_HandleTypeDef *phost, - CDC_LineCodingTypeDef *linecoding); - -USBH_StatusTypeDef USBH_CDC_Transmit(USBH_HandleTypeDef *phost, - uint8_t *pbuff, - uint32_t length); - -USBH_StatusTypeDef USBH_CDC_Receive(USBH_HandleTypeDef *phost, - uint8_t *pbuff, - uint32_t length); - - -uint16_t USBH_CDC_GetLastReceivedDataSize(USBH_HandleTypeDef *phost); - -USBH_StatusTypeDef USBH_CDC_Stop(USBH_HandleTypeDef *phost); - -void USBH_CDC_LineCodingChanged(USBH_HandleTypeDef *phost); - -void USBH_CDC_TransmitCallback(USBH_HandleTypeDef *phost); - -void USBH_CDC_ReceiveCallback(USBH_HandleTypeDef *phost); - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USBH_CDC_H */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ - diff --git a/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.c b/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.c deleted file mode 100644 index 3ad2b2e..0000000 --- a/Middlewares/ST/STM32_USB_Host_Library/Class/CDC/Src/usbh_cdc.c +++ /dev/null @@ -1,837 +0,0 @@ -/** - ****************************************************************************** - * @file usbh_cdc.c - * @author MCD Application Team - * @brief This file is the CDC Layer Handlers for USB Host CDC class. - * - * @verbatim - * - * =================================================================== - * CDC Class Driver Description - * =================================================================== - * This driver manages the "Universal Serial Bus Class Definitions for Communications Devices - * Revision 1.2 November 16, 2007" and the sub-protocol specification of "Universal Serial Bus - * Communications Class Subclass Specification for PSTN Devices Revision 1.2 February 9, 2007" - * This driver implements the following aspects of the specification: - * - Device descriptor management - * - Configuration descriptor management - * - Enumeration as CDC device with 2 data endpoints (IN and OUT) and 1 command endpoint (IN) - * - Requests management (as described in section 6.2 in specification) - * - Abstract Control Model compliant - * - Union Functional collection (using 1 IN endpoint for control) - * - Data interface class - * - * @endverbatim - * - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2015 STMicroelectronics. - * All rights reserved.

- * - * 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 - * - ****************************************************************************** - */ - -/* BSPDependencies -- "stm32xxxxx_{eval}{discovery}{nucleo_144}.c" -- "stm32xxxxx_{eval}{discovery}_io.c" -- "stm32xxxxx_{eval}{discovery}{adafruit}_sd.c" -- "stm32xxxxx_{eval}{discovery}{adafruit}_lcd.c" -- "stm32xxxxx_{eval}{discovery}_sdram.c" -EndBSPDependencies */ - -/* Includes ------------------------------------------------------------------*/ -#include "usbh_cdc.h" - -/** @addtogroup USBH_LIB - * @{ - */ - -/** @addtogroup USBH_CLASS - * @{ - */ - -/** @addtogroup USBH_CDC_CLASS - * @{ - */ - -/** @defgroup USBH_CDC_CORE - * @brief This file includes CDC Layer Handlers for USB Host CDC class. - * @{ - */ - -/** @defgroup USBH_CDC_CORE_Private_TypesDefinitions - * @{ - */ -/** - * @} - */ - - -/** @defgroup USBH_CDC_CORE_Private_Defines - * @{ - */ -#define USBH_CDC_BUFFER_SIZE 1024 -/** - * @} - */ - - -/** @defgroup USBH_CDC_CORE_Private_Macros - * @{ - */ -/** - * @} - */ - - -/** @defgroup USBH_CDC_CORE_Private_Variables - * @{ - */ -/** - * @} - */ - - -/** @defgroup USBH_CDC_CORE_Private_FunctionPrototypes - * @{ - */ - -static USBH_StatusTypeDef USBH_CDC_InterfaceInit(USBH_HandleTypeDef *phost); - -static USBH_StatusTypeDef USBH_CDC_InterfaceDeInit(USBH_HandleTypeDef *phost); - -static USBH_StatusTypeDef USBH_CDC_Process(USBH_HandleTypeDef *phost); - -static USBH_StatusTypeDef USBH_CDC_SOFProcess(USBH_HandleTypeDef *phost); - -static USBH_StatusTypeDef USBH_CDC_ClassRequest(USBH_HandleTypeDef *phost); - -static USBH_StatusTypeDef GetLineCoding(USBH_HandleTypeDef *phost, - CDC_LineCodingTypeDef *linecoding); - -static USBH_StatusTypeDef SetLineCoding(USBH_HandleTypeDef *phost, - CDC_LineCodingTypeDef *linecoding); - -static void CDC_ProcessTransmission(USBH_HandleTypeDef *phost); - -static void CDC_ProcessReception(USBH_HandleTypeDef *phost); - -USBH_ClassTypeDef CDC_Class = -{ - "CDC", - USB_CDC_CLASS, - USBH_CDC_InterfaceInit, - USBH_CDC_InterfaceDeInit, - USBH_CDC_ClassRequest, - USBH_CDC_Process, - USBH_CDC_SOFProcess, - NULL, -}; -/** - * @} - */ - - -/** @defgroup USBH_CDC_CORE_Private_Functions - * @{ - */ - -/** - * @brief USBH_CDC_InterfaceInit - * The function init the CDC class. - * @param phost: Host handle - * @retval USBH Status - */ -static USBH_StatusTypeDef USBH_CDC_InterfaceInit(USBH_HandleTypeDef *phost) -{ - - USBH_StatusTypeDef status; - uint8_t interface; - CDC_HandleTypeDef *CDC_Handle; - - interface = USBH_FindInterface(phost, COMMUNICATION_INTERFACE_CLASS_CODE, - ABSTRACT_CONTROL_MODEL, COMMON_AT_COMMAND); - - if ((interface == 0xFFU) || (interface >= USBH_MAX_NUM_INTERFACES)) /* No Valid Interface */ - { - USBH_DbgLog("Cannot Find the interface for Communication Interface Class.", phost->pActiveClass->Name); - return USBH_FAIL; - } - - status = USBH_SelectInterface(phost, interface); - - if (status != USBH_OK) - { - return USBH_FAIL; - } - - phost->pActiveClass->pData = (CDC_HandleTypeDef *)USBH_malloc(sizeof(CDC_HandleTypeDef)); - CDC_Handle = (CDC_HandleTypeDef *) phost->pActiveClass->pData; - - if (CDC_Handle == NULL) - { - USBH_DbgLog("Cannot allocate memory for CDC Handle"); - return USBH_FAIL; - } - - /* Initialize cdc handler */ - (void)USBH_memset(CDC_Handle, 0, sizeof(CDC_HandleTypeDef)); - - /*Collect the notification endpoint address and length*/ - if ((phost->device.CfgDesc.Itf_Desc[interface].Ep_Desc[0].bEndpointAddress & 0x80U) != 0U) - { - CDC_Handle->CommItf.NotifEp = phost->device.CfgDesc.Itf_Desc[interface].Ep_Desc[0].bEndpointAddress; - CDC_Handle->CommItf.NotifEpSize = phost->device.CfgDesc.Itf_Desc[interface].Ep_Desc[0].wMaxPacketSize; - } - - /*Allocate the length for host channel number in*/ - CDC_Handle->CommItf.NotifPipe = USBH_AllocPipe(phost, CDC_Handle->CommItf.NotifEp); - - /* Open pipe for Notification endpoint */ - (void)USBH_OpenPipe(phost, CDC_Handle->CommItf.NotifPipe, CDC_Handle->CommItf.NotifEp, - phost->device.address, phost->device.speed, USB_EP_TYPE_INTR, - CDC_Handle->CommItf.NotifEpSize); - - (void)USBH_LL_SetToggle(phost, CDC_Handle->CommItf.NotifPipe, 0U); - - interface = USBH_FindInterface(phost, DATA_INTERFACE_CLASS_CODE, - RESERVED, NO_CLASS_SPECIFIC_PROTOCOL_CODE); - - if ((interface == 0xFFU) || (interface >= USBH_MAX_NUM_INTERFACES)) /* No Valid Interface */ - { - USBH_DbgLog("Cannot Find the interface for Data Interface Class.", phost->pActiveClass->Name); - return USBH_FAIL; - } - - /*Collect the class specific endpoint address and length*/ - if ((phost->device.CfgDesc.Itf_Desc[interface].Ep_Desc[0].bEndpointAddress & 0x80U) != 0U) - { - CDC_Handle->DataItf.InEp = phost->device.CfgDesc.Itf_Desc[interface].Ep_Desc[0].bEndpointAddress; - CDC_Handle->DataItf.InEpSize = phost->device.CfgDesc.Itf_Desc[interface].Ep_Desc[0].wMaxPacketSize; - } - else - { - CDC_Handle->DataItf.OutEp = phost->device.CfgDesc.Itf_Desc[interface].Ep_Desc[0].bEndpointAddress; - CDC_Handle->DataItf.OutEpSize = phost->device.CfgDesc.Itf_Desc[interface].Ep_Desc[0].wMaxPacketSize; - } - - if ((phost->device.CfgDesc.Itf_Desc[interface].Ep_Desc[1].bEndpointAddress & 0x80U) != 0U) - { - CDC_Handle->DataItf.InEp = phost->device.CfgDesc.Itf_Desc[interface].Ep_Desc[1].bEndpointAddress; - CDC_Handle->DataItf.InEpSize = phost->device.CfgDesc.Itf_Desc[interface].Ep_Desc[1].wMaxPacketSize; - } - else - { - CDC_Handle->DataItf.OutEp = phost->device.CfgDesc.Itf_Desc[interface].Ep_Desc[1].bEndpointAddress; - CDC_Handle->DataItf.OutEpSize = phost->device.CfgDesc.Itf_Desc[interface].Ep_Desc[1].wMaxPacketSize; - } - - /*Allocate the length for host channel number out*/ - CDC_Handle->DataItf.OutPipe = USBH_AllocPipe(phost, CDC_Handle->DataItf.OutEp); - - /*Allocate the length for host channel number in*/ - CDC_Handle->DataItf.InPipe = USBH_AllocPipe(phost, CDC_Handle->DataItf.InEp); - - /* Open channel for OUT endpoint */ - (void)USBH_OpenPipe(phost, CDC_Handle->DataItf.OutPipe, CDC_Handle->DataItf.OutEp, - phost->device.address, phost->device.speed, USB_EP_TYPE_BULK, - CDC_Handle->DataItf.OutEpSize); - - /* Open channel for IN endpoint */ - (void)USBH_OpenPipe(phost, CDC_Handle->DataItf.InPipe, CDC_Handle->DataItf.InEp, - phost->device.address, phost->device.speed, USB_EP_TYPE_BULK, - CDC_Handle->DataItf.InEpSize); - - CDC_Handle->state = CDC_IDLE_STATE; - - (void)USBH_LL_SetToggle(phost, CDC_Handle->DataItf.OutPipe, 0U); - (void)USBH_LL_SetToggle(phost, CDC_Handle->DataItf.InPipe, 0U); - - return USBH_OK; -} - - - -/** - * @brief USBH_CDC_InterfaceDeInit - * The function DeInit the Pipes used for the CDC class. - * @param phost: Host handle - * @retval USBH Status - */ -static USBH_StatusTypeDef USBH_CDC_InterfaceDeInit(USBH_HandleTypeDef *phost) -{ - CDC_HandleTypeDef *CDC_Handle = (CDC_HandleTypeDef *) phost->pActiveClass->pData; - - if ((CDC_Handle->CommItf.NotifPipe) != 0U) - { - (void)USBH_ClosePipe(phost, CDC_Handle->CommItf.NotifPipe); - (void)USBH_FreePipe(phost, CDC_Handle->CommItf.NotifPipe); - CDC_Handle->CommItf.NotifPipe = 0U; /* Reset the Channel as Free */ - } - - if ((CDC_Handle->DataItf.InPipe) != 0U) - { - (void)USBH_ClosePipe(phost, CDC_Handle->DataItf.InPipe); - (void)USBH_FreePipe(phost, CDC_Handle->DataItf.InPipe); - CDC_Handle->DataItf.InPipe = 0U; /* Reset the Channel as Free */ - } - - if ((CDC_Handle->DataItf.OutPipe) != 0U) - { - (void)USBH_ClosePipe(phost, CDC_Handle->DataItf.OutPipe); - (void)USBH_FreePipe(phost, CDC_Handle->DataItf.OutPipe); - CDC_Handle->DataItf.OutPipe = 0U; /* Reset the Channel as Free */ - } - - if ((phost->pActiveClass->pData) != NULL) - { - USBH_free(phost->pActiveClass->pData); - phost->pActiveClass->pData = 0U; - } - - return USBH_OK; -} - -/** - * @brief USBH_CDC_ClassRequest - * The function is responsible for handling Standard requests - * for CDC class. - * @param phost: Host handle - * @retval USBH Status - */ -static USBH_StatusTypeDef USBH_CDC_ClassRequest(USBH_HandleTypeDef *phost) -{ - USBH_StatusTypeDef status; - CDC_HandleTypeDef *CDC_Handle = (CDC_HandleTypeDef *) phost->pActiveClass->pData; - - /* Issue the get line coding request */ - status = GetLineCoding(phost, &CDC_Handle->LineCoding); - if (status == USBH_OK) - { - phost->pUser(phost, HOST_USER_CLASS_ACTIVE); - } - else if (status == USBH_NOT_SUPPORTED) - { - USBH_ErrLog("Control error: CDC: Device Get Line Coding configuration failed"); - } - else - { - /* .. */ - } - - return status; -} - - -/** - * @brief USBH_CDC_Process - * The function is for managing state machine for CDC data transfers - * @param phost: Host handle - * @retval USBH Status - */ -static USBH_StatusTypeDef USBH_CDC_Process(USBH_HandleTypeDef *phost) -{ - USBH_StatusTypeDef status = USBH_BUSY; - USBH_StatusTypeDef req_status = USBH_OK; - CDC_HandleTypeDef *CDC_Handle = (CDC_HandleTypeDef *) phost->pActiveClass->pData; - - switch (CDC_Handle->state) - { - - case CDC_IDLE_STATE: - status = USBH_OK; - break; - - case CDC_SET_LINE_CODING_STATE: - req_status = SetLineCoding(phost, CDC_Handle->pUserLineCoding); - - if (req_status == USBH_OK) - { - CDC_Handle->state = CDC_GET_LAST_LINE_CODING_STATE; - } - - else - { - if (req_status != USBH_BUSY) - { - CDC_Handle->state = CDC_ERROR_STATE; - } - } - break; - - - case CDC_GET_LAST_LINE_CODING_STATE: - req_status = GetLineCoding(phost, &(CDC_Handle->LineCoding)); - - if (req_status == USBH_OK) - { - CDC_Handle->state = CDC_IDLE_STATE; - - if ((CDC_Handle->LineCoding.b.bCharFormat == CDC_Handle->pUserLineCoding->b.bCharFormat) && - (CDC_Handle->LineCoding.b.bDataBits == CDC_Handle->pUserLineCoding->b.bDataBits) && - (CDC_Handle->LineCoding.b.bParityType == CDC_Handle->pUserLineCoding->b.bParityType) && - (CDC_Handle->LineCoding.b.dwDTERate == CDC_Handle->pUserLineCoding->b.dwDTERate)) - { - USBH_CDC_LineCodingChanged(phost); - } - } - else - { - if (req_status != USBH_BUSY) - { - CDC_Handle->state = CDC_ERROR_STATE; - } - } - break; - - case CDC_TRANSFER_DATA: - CDC_ProcessTransmission(phost); - CDC_ProcessReception(phost); - break; - - case CDC_ERROR_STATE: - req_status = USBH_ClrFeature(phost, 0x00U); - - if (req_status == USBH_OK) - { - /*Change the state to waiting*/ - CDC_Handle->state = CDC_IDLE_STATE; - } - break; - - default: - break; - - } - - return status; -} - -/** - * @brief USBH_CDC_SOFProcess - * The function is for managing SOF callback - * @param phost: Host handle - * @retval USBH Status - */ -static USBH_StatusTypeDef USBH_CDC_SOFProcess(USBH_HandleTypeDef *phost) -{ - /* Prevent unused argument(s) compilation warning */ - UNUSED(phost); - - return USBH_OK; -} - - -/** - * @brief USBH_CDC_Stop - * Stop current CDC Transmission - * @param phost: Host handle - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_CDC_Stop(USBH_HandleTypeDef *phost) -{ - CDC_HandleTypeDef *CDC_Handle = (CDC_HandleTypeDef *) phost->pActiveClass->pData; - - if (phost->gState == HOST_CLASS) - { - CDC_Handle->state = CDC_IDLE_STATE; - - (void)USBH_ClosePipe(phost, CDC_Handle->CommItf.NotifPipe); - (void)USBH_ClosePipe(phost, CDC_Handle->DataItf.InPipe); - (void)USBH_ClosePipe(phost, CDC_Handle->DataItf.OutPipe); - } - return USBH_OK; -} -/** - * @brief This request allows the host to find out the currently - * configured line coding. - * @param pdev: Selected device - * @retval USBH_StatusTypeDef : USB ctl xfer status - */ -static USBH_StatusTypeDef GetLineCoding(USBH_HandleTypeDef *phost, CDC_LineCodingTypeDef *linecoding) -{ - - phost->Control.setup.b.bmRequestType = USB_D2H | USB_REQ_TYPE_CLASS | \ - USB_REQ_RECIPIENT_INTERFACE; - - phost->Control.setup.b.bRequest = CDC_GET_LINE_CODING; - phost->Control.setup.b.wValue.w = 0U; - phost->Control.setup.b.wIndex.w = 0U; - phost->Control.setup.b.wLength.w = LINE_CODING_STRUCTURE_SIZE; - - return USBH_CtlReq(phost, linecoding->Array, LINE_CODING_STRUCTURE_SIZE); -} - - -/** - * @brief This request allows the host to specify typical asynchronous - * line-character formatting properties - * This request applies to asynchronous byte stream data class interfaces - * and endpoints - * @param pdev: Selected device - * @retval USBH_StatusTypeDef : USB ctl xfer status - */ -static USBH_StatusTypeDef SetLineCoding(USBH_HandleTypeDef *phost, - CDC_LineCodingTypeDef *linecoding) -{ - phost->Control.setup.b.bmRequestType = USB_H2D | USB_REQ_TYPE_CLASS | - USB_REQ_RECIPIENT_INTERFACE; - - phost->Control.setup.b.bRequest = CDC_SET_LINE_CODING; - phost->Control.setup.b.wValue.w = 0U; - - phost->Control.setup.b.wIndex.w = 0U; - - phost->Control.setup.b.wLength.w = LINE_CODING_STRUCTURE_SIZE; - - return USBH_CtlReq(phost, linecoding->Array, LINE_CODING_STRUCTURE_SIZE); -} - -/** - * @brief This function prepares the state before issuing the class specific commands - * @param None - * @retval None - */ -USBH_StatusTypeDef USBH_CDC_SetLineCoding(USBH_HandleTypeDef *phost, - CDC_LineCodingTypeDef *linecoding) -{ - CDC_HandleTypeDef *CDC_Handle = (CDC_HandleTypeDef *) phost->pActiveClass->pData; - - if (phost->gState == HOST_CLASS) - { - CDC_Handle->state = CDC_SET_LINE_CODING_STATE; - CDC_Handle->pUserLineCoding = linecoding; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CLASS_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - - return USBH_OK; -} - -/** - * @brief This function prepares the state before issuing the class specific commands - * @param None - * @retval None - */ -USBH_StatusTypeDef USBH_CDC_GetLineCoding(USBH_HandleTypeDef *phost, - CDC_LineCodingTypeDef *linecoding) -{ - CDC_HandleTypeDef *CDC_Handle = (CDC_HandleTypeDef *) phost->pActiveClass->pData; - - if ((phost->gState == HOST_CLASS) || (phost->gState == HOST_CLASS_REQUEST)) - { - *linecoding = CDC_Handle->LineCoding; - return USBH_OK; - } - else - { - return USBH_FAIL; - } -} - -/** - * @brief This function return last received data size - * @param None - * @retval None - */ -uint16_t USBH_CDC_GetLastReceivedDataSize(USBH_HandleTypeDef *phost) -{ - uint32_t dataSize; - CDC_HandleTypeDef *CDC_Handle = (CDC_HandleTypeDef *) phost->pActiveClass->pData; - - if (phost->gState == HOST_CLASS) - { - dataSize = USBH_LL_GetLastXferSize(phost, CDC_Handle->DataItf.InPipe); - } - else - { - dataSize = 0U; - } - - return (uint16_t)dataSize; -} - -/** - * @brief This function prepares the state before issuing the class specific commands - * @param None - * @retval None - */ -USBH_StatusTypeDef USBH_CDC_Transmit(USBH_HandleTypeDef *phost, uint8_t *pbuff, uint32_t length) -{ - USBH_StatusTypeDef Status = USBH_BUSY; - CDC_HandleTypeDef *CDC_Handle = (CDC_HandleTypeDef *) phost->pActiveClass->pData; - - if ((CDC_Handle->state == CDC_IDLE_STATE) || (CDC_Handle->state == CDC_TRANSFER_DATA)) - { - CDC_Handle->pTxData = pbuff; - CDC_Handle->TxDataLength = length; - CDC_Handle->state = CDC_TRANSFER_DATA; - CDC_Handle->data_tx_state = CDC_SEND_DATA; - Status = USBH_OK; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CLASS_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - return Status; -} - - -/** - * @brief This function prepares the state before issuing the class specific commands - * @param None - * @retval None - */ -USBH_StatusTypeDef USBH_CDC_Receive(USBH_HandleTypeDef *phost, uint8_t *pbuff, uint32_t length) -{ - USBH_StatusTypeDef Status = USBH_BUSY; - CDC_HandleTypeDef *CDC_Handle = (CDC_HandleTypeDef *) phost->pActiveClass->pData; - - if ((CDC_Handle->state == CDC_IDLE_STATE) || (CDC_Handle->state == CDC_TRANSFER_DATA)) - { - CDC_Handle->pRxData = pbuff; - CDC_Handle->RxDataLength = length; - CDC_Handle->state = CDC_TRANSFER_DATA; - CDC_Handle->data_rx_state = CDC_RECEIVE_DATA; - Status = USBH_OK; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CLASS_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - return Status; -} - -/** - * @brief The function is responsible for sending data to the device - * @param pdev: Selected device - * @retval None - */ -static void CDC_ProcessTransmission(USBH_HandleTypeDef *phost) -{ - CDC_HandleTypeDef *CDC_Handle = (CDC_HandleTypeDef *) phost->pActiveClass->pData; - USBH_URBStateTypeDef URB_Status = USBH_URB_IDLE; - - switch (CDC_Handle->data_tx_state) - { - case CDC_SEND_DATA: - if (CDC_Handle->TxDataLength > CDC_Handle->DataItf.OutEpSize) - { - (void)USBH_BulkSendData(phost, - CDC_Handle->pTxData, - CDC_Handle->DataItf.OutEpSize, - CDC_Handle->DataItf.OutPipe, - 1U); - } - else - { - (void)USBH_BulkSendData(phost, - CDC_Handle->pTxData, - (uint16_t)CDC_Handle->TxDataLength, - CDC_Handle->DataItf.OutPipe, - 1U); - } - - CDC_Handle->data_tx_state = CDC_SEND_DATA_WAIT; - break; - - case CDC_SEND_DATA_WAIT: - - URB_Status = USBH_LL_GetURBState(phost, CDC_Handle->DataItf.OutPipe); - - /* Check the status done for transmission */ - if (URB_Status == USBH_URB_DONE) - { - if (CDC_Handle->TxDataLength > CDC_Handle->DataItf.OutEpSize) - { - CDC_Handle->TxDataLength -= CDC_Handle->DataItf.OutEpSize; - CDC_Handle->pTxData += CDC_Handle->DataItf.OutEpSize; - } - else - { - CDC_Handle->TxDataLength = 0U; - } - - if (CDC_Handle->TxDataLength > 0U) - { - CDC_Handle->data_tx_state = CDC_SEND_DATA; - } - else - { - CDC_Handle->data_tx_state = CDC_IDLE; - USBH_CDC_TransmitCallback(phost); - } - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CLASS_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - else - { - if (URB_Status == USBH_URB_NOTREADY) - { - CDC_Handle->data_tx_state = CDC_SEND_DATA; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CLASS_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - } - break; - - default: - break; - } -} -/** - * @brief This function responsible for reception of data from the device - * @param pdev: Selected device - * @retval None - */ - -static void CDC_ProcessReception(USBH_HandleTypeDef *phost) -{ - CDC_HandleTypeDef *CDC_Handle = (CDC_HandleTypeDef *) phost->pActiveClass->pData; - USBH_URBStateTypeDef URB_Status = USBH_URB_IDLE; - uint32_t length; - - switch (CDC_Handle->data_rx_state) - { - - case CDC_RECEIVE_DATA: - - (void)USBH_BulkReceiveData(phost, - CDC_Handle->pRxData, - CDC_Handle->DataItf.InEpSize, - CDC_Handle->DataItf.InPipe); - - CDC_Handle->data_rx_state = CDC_RECEIVE_DATA_WAIT; - - break; - - case CDC_RECEIVE_DATA_WAIT: - - URB_Status = USBH_LL_GetURBState(phost, CDC_Handle->DataItf.InPipe); - - /*Check the status done for reception*/ - if (URB_Status == USBH_URB_DONE) - { - length = USBH_LL_GetLastXferSize(phost, CDC_Handle->DataItf.InPipe); - - if (((CDC_Handle->RxDataLength - length) > 0U) && (length > CDC_Handle->DataItf.InEpSize)) - { - CDC_Handle->RxDataLength -= length ; - CDC_Handle->pRxData += length; - CDC_Handle->data_rx_state = CDC_RECEIVE_DATA; - } - else - { - CDC_Handle->data_rx_state = CDC_IDLE; - USBH_CDC_ReceiveCallback(phost); - } - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CLASS_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - break; - - default: - break; - } -} - -/** - * @brief The function informs user that data have been received - * @param pdev: Selected device - * @retval None - */ -__weak void USBH_CDC_TransmitCallback(USBH_HandleTypeDef *phost) -{ - /* Prevent unused argument(s) compilation warning */ - UNUSED(phost); -} - -/** - * @brief The function informs user that data have been sent - * @param pdev: Selected device - * @retval None - */ -__weak void USBH_CDC_ReceiveCallback(USBH_HandleTypeDef *phost) -{ - /* Prevent unused argument(s) compilation warning */ - UNUSED(phost); -} - -/** - * @brief The function informs user that Settings have been changed - * @param pdev: Selected device - * @retval None - */ -__weak void USBH_CDC_LineCodingChanged(USBH_HandleTypeDef *phost) -{ - /* Prevent unused argument(s) compilation warning */ - UNUSED(phost); -} - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - - -/** - * @} - */ - - -/** - * @} - */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_core.h b/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_core.h deleted file mode 100644 index b7497d8..0000000 --- a/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_core.h +++ /dev/null @@ -1,192 +0,0 @@ -/** - ****************************************************************************** - * @file usbh_core.h - * @author MCD Application Team - * @brief Header file for usbh_core.c - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2015 STMicroelectronics. - * All rights reserved.

- * - * 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 - * - ****************************************************************************** - */ -/* Define to prevent recursive ----------------------------------------------*/ -#ifndef __USBH_CORE_H -#define __USBH_CORE_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "usbh_conf.h" -#include "usbh_def.h" -#include "usbh_ioreq.h" -#include "usbh_pipes.h" -#include "usbh_ctlreq.h" - -/** @addtogroup USBH_LIB - * @{ - */ - -/** @addtogroup USBH_LIB_CORE - * @{ - */ - -/** @defgroup USBH_CORE - * @brief This file is the Header file for usbh_core.c - * @{ - */ - - -/** @defgroup USBH_CORE_Exported_Defines - * @{ - */ - -/** - * @} - */ -#define HOST_USER_SELECT_CONFIGURATION 0x01U -#define HOST_USER_CLASS_ACTIVE 0x02U -#define HOST_USER_CLASS_SELECTED 0x03U -#define HOST_USER_CONNECTION 0x04U -#define HOST_USER_DISCONNECTION 0x05U -#define HOST_USER_UNRECOVERED_ERROR 0x06U - - -/** - * @} - */ - - - -/** @defgroup USBH_CORE_Exported_Macros - * @{ - */ - -/** - * @} - */ - -/** @defgroup USBH_CORE_Exported_Variables - * @{ - */ - -/** - * @} - */ - -/** @defgroup USBH_CORE_Exported_FunctionsPrototype - * @{ - */ - - -USBH_StatusTypeDef USBH_Init(USBH_HandleTypeDef *phost, void (*pUsrFunc)(USBH_HandleTypeDef *phost, uint8_t id), uint8_t id); -USBH_StatusTypeDef USBH_DeInit(USBH_HandleTypeDef *phost); -USBH_StatusTypeDef USBH_RegisterClass(USBH_HandleTypeDef *phost, USBH_ClassTypeDef *pclass); -USBH_StatusTypeDef USBH_SelectInterface(USBH_HandleTypeDef *phost, uint8_t interface); -uint8_t USBH_FindInterface(USBH_HandleTypeDef *phost, - uint8_t Class, - uint8_t SubClass, - uint8_t Protocol); -uint8_t USBH_GetActiveClass(USBH_HandleTypeDef *phost); - -uint8_t USBH_FindInterfaceIndex(USBH_HandleTypeDef *phost, - uint8_t interface_number, - uint8_t alt_settings); - -uint8_t USBH_IsPortEnabled(USBH_HandleTypeDef *phost); - -USBH_StatusTypeDef USBH_Start(USBH_HandleTypeDef *phost); -USBH_StatusTypeDef USBH_Stop(USBH_HandleTypeDef *phost); -USBH_StatusTypeDef USBH_Process(USBH_HandleTypeDef *phost); -USBH_StatusTypeDef USBH_ReEnumerate(USBH_HandleTypeDef *phost); - -/* USBH Low Level Driver */ -USBH_StatusTypeDef USBH_LL_Init(USBH_HandleTypeDef *phost); -USBH_StatusTypeDef USBH_LL_DeInit(USBH_HandleTypeDef *phost); -USBH_StatusTypeDef USBH_LL_Start(USBH_HandleTypeDef *phost); -USBH_StatusTypeDef USBH_LL_Stop(USBH_HandleTypeDef *phost); - -USBH_StatusTypeDef USBH_LL_Connect(USBH_HandleTypeDef *phost); -USBH_StatusTypeDef USBH_LL_Disconnect(USBH_HandleTypeDef *phost); -USBH_SpeedTypeDef USBH_LL_GetSpeed(USBH_HandleTypeDef *phost); -USBH_StatusTypeDef USBH_LL_ResetPort(USBH_HandleTypeDef *phost); -uint32_t USBH_LL_GetLastXferSize(USBH_HandleTypeDef *phost, - uint8_t pipe); - -USBH_StatusTypeDef USBH_LL_DriverVBUS(USBH_HandleTypeDef *phost, - uint8_t state); - -USBH_StatusTypeDef USBH_LL_OpenPipe(USBH_HandleTypeDef *phost, - uint8_t pipe, - uint8_t epnum, - uint8_t dev_address, - uint8_t speed, - uint8_t ep_type, - uint16_t mps); - -USBH_StatusTypeDef USBH_LL_ClosePipe(USBH_HandleTypeDef *phost, - uint8_t pipe); - -USBH_StatusTypeDef USBH_LL_SubmitURB(USBH_HandleTypeDef *phost, - uint8_t pipe, - uint8_t direction, - uint8_t ep_type, - uint8_t token, - uint8_t *pbuff, - uint16_t length, - uint8_t do_ping); - -USBH_URBStateTypeDef USBH_LL_GetURBState(USBH_HandleTypeDef *phost, - uint8_t pipe); - -#if (USBH_USE_OS == 1U) -USBH_StatusTypeDef USBH_LL_NotifyURBChange(USBH_HandleTypeDef *phost); -#endif - -USBH_StatusTypeDef USBH_LL_SetToggle(USBH_HandleTypeDef *phost, - uint8_t pipe, uint8_t toggle); - -uint8_t USBH_LL_GetToggle(USBH_HandleTypeDef *phost, uint8_t pipe); - -void USBH_LL_PortDisabled(USBH_HandleTypeDef *phost); -void USBH_LL_PortEnabled(USBH_HandleTypeDef *phost); - -/* USBH Time base */ -void USBH_LL_SetTimer(USBH_HandleTypeDef *phost, uint32_t time); -void USBH_LL_IncTimer(USBH_HandleTypeDef *phost); - -void USBH_Delay(uint32_t Delay); - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USBH_CORE_H */ -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ - - - diff --git a/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_ctlreq.h b/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_ctlreq.h deleted file mode 100644 index 2b4a96a..0000000 --- a/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_ctlreq.h +++ /dev/null @@ -1,141 +0,0 @@ -/** - ****************************************************************************** - * @file usbh_ctlreq.h - * @author MCD Application Team - * @brief Header file for usbh_ctlreq.c - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2015 STMicroelectronics. - * All rights reserved.

- * - * 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 - * - ****************************************************************************** - */ - -/* Define to prevent recursive ----------------------------------------------*/ -#ifndef __USBH_CTLREQ_H -#define __USBH_CTLREQ_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "usbh_core.h" - -/** @addtogroup USBH_LIB - * @{ - */ - -/** @addtogroup USBH_LIB_CORE - * @{ - */ - -/** @defgroup USBH_CTLREQ - * @brief This file is the - * @{ - */ - - -/** @defgroup USBH_CTLREQ_Exported_Defines - * @{ - */ -/*Standard Feature Selector for clear feature command*/ -#define FEATURE_SELECTOR_ENDPOINT 0x00U -#define FEATURE_SELECTOR_DEVICE 0x01U -#define FEATURE_SELECTOR_REMOTEWAKEUP 0X01U - - -#define INTERFACE_DESC_TYPE 0x04U -#define ENDPOINT_DESC_TYPE 0x05U -#define INTERFACE_DESC_SIZE 0x09U - -/** - * @} - */ - - -/** @defgroup USBH_CTLREQ_Exported_Types - * @{ - */ -/** - * @} - */ - - -/** @defgroup USBH_CTLREQ_Exported_Macros - * @{ - */ -/** - * @} - */ - -/** @defgroup USBH_CTLREQ_Exported_Variables - * @{ - */ -extern uint8_t USBH_CfgDesc[512]; -/** - * @} - */ - -/** @defgroup USBH_CTLREQ_Exported_FunctionsPrototype - * @{ - */ -USBH_StatusTypeDef USBH_CtlReq(USBH_HandleTypeDef *phost, uint8_t *buff, - uint16_t length); - -USBH_StatusTypeDef USBH_GetDescriptor(USBH_HandleTypeDef *phost, - uint8_t req_type, uint16_t value_idx, - uint8_t *buff, uint16_t length); - -USBH_StatusTypeDef USBH_Get_DevDesc(USBH_HandleTypeDef *phost, uint8_t length); - -USBH_StatusTypeDef USBH_Get_StringDesc(USBH_HandleTypeDef *phost, - uint8_t string_index, uint8_t *buff, - uint16_t length); - -USBH_StatusTypeDef USBH_SetCfg(USBH_HandleTypeDef *phost, uint16_t cfg_idx); - -USBH_StatusTypeDef USBH_Get_CfgDesc(USBH_HandleTypeDef *phost, uint16_t length); - -USBH_StatusTypeDef USBH_SetAddress(USBH_HandleTypeDef *phost, - uint8_t DeviceAddress); - -USBH_StatusTypeDef USBH_SetInterface(USBH_HandleTypeDef *phost, uint8_t ep_num, - uint8_t altSetting); - -USBH_StatusTypeDef USBH_SetFeature(USBH_HandleTypeDef *phost, uint8_t wValue); - -USBH_StatusTypeDef USBH_ClrFeature(USBH_HandleTypeDef *phost, uint8_t ep_num); - -USBH_DescHeader_t *USBH_GetNextDesc(uint8_t *pbuf, uint16_t *ptr); -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USBH_CTLREQ_H */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ - - diff --git a/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_def.h b/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_def.h deleted file mode 100644 index e2686a9..0000000 --- a/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_def.h +++ /dev/null @@ -1,512 +0,0 @@ -/** - ****************************************************************************** - * @file usbh_def.h - * @author MCD Application Team - * @brief Definitions used in the USB host library - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2015 STMicroelectronics. - * All rights reserved.

- * - * 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 - * - ****************************************************************************** - */ - -/* Define to prevent recursive ----------------------------------------------*/ -#ifndef USBH_DEF_H -#define USBH_DEF_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "usbh_conf.h" - -/** @addtogroup USBH_LIB - * @{ - */ - -/** @addtogroup USBH_LIB_CORE - * @{ - */ - -/** @defgroup USBH_DEF - * @brief This file is includes USB descriptors - * @{ - */ - -#ifndef NULL -#define NULL 0U -#endif - -#ifndef FALSE -#define FALSE 0U -#endif - -#ifndef TRUE -#define TRUE 1U -#endif - -#ifndef USBH_DEV_RESET_TIMEOUT -#define USBH_DEV_RESET_TIMEOUT 1000U -#endif - -#define ValBit(VAR,POS) (VAR & (1 << POS)) -#define SetBit(VAR,POS) (VAR |= (1 << POS)) -#define ClrBit(VAR,POS) (VAR &= ((1 << POS)^255)) - -#ifndef MIN -#define MIN(a, b) (((a) < (b)) ? (a) : (b)) -#endif - -#ifndef MAX -#define MAX(a, b) (((a) > (b)) ? (a) : (b)) -#endif - -#define LE16(addr) (((uint16_t)(addr)[0]) | \ - ((uint16_t)(((uint32_t)(addr)[1]) << 8))) - -#define LE24(addr) (((uint32_t)(addr)[0]) | \ - (((uint32_t)(addr)[1]) << 8) | \ - (((uint32_t)(addr)[2]) << 16)) - -#define LE32(addr) (((uint32_t)(addr)[0]) | \ - (((uint32_t)(addr)[1]) << 8) | \ - (((uint32_t)(addr)[2]) << 16) | \ - (((uint32_t)(addr)[3]) << 24)) - -#define LE64(addr) (((uint64_t)(addr)[0]) | \ - (((uint64_t)(addr)[1]) << 8) | \ - (((uint64_t)(addr)[2]) << 16) | \ - (((uint64_t)(addr)[3]) << 24) | \ - (((uint64_t)(addr)[4]) << 32) | \ - (((uint64_t)(addr)[5]) << 40) | \ - (((uint64_t)(addr)[6]) << 48) | \ - (((uint64_t)(addr)[7]) << 56)) - -#define LE16S(addr) ((int16_t)(LE16((addr)))) -#define LE24S(addr) ((int32_t)(LE24((addr)))) -#define LE32S(addr) ((int32_t)(LE32((addr)))) -#define LE64S(addr) ((int64_t)(LE64((addr)))) - -#ifndef USBH_MAX_DATA_BUFFER -#define USBH_MAX_DATA_BUFFER 0x400U -#endif - -#define USBH_MAX_EP_PACKET_SIZE 0x400U - -#define USB_LEN_DESC_HDR 0x02U -#define USB_LEN_DEV_DESC 0x12U -#define USB_LEN_CFG_DESC 0x09U -#define USB_LEN_IF_DESC 0x09U -#define USB_LEN_EP_DESC 0x07U -#define USB_LEN_OTG_DESC 0x03U -#define USB_LEN_SETUP_PKT 0x08U - -/* bmRequestType :D7 Data Phase Transfer Direction */ -#define USB_REQ_DIR_MASK 0x80U -#define USB_H2D 0x00U -#define USB_D2H 0x80U - -/* bmRequestType D6..5 Type */ -#define USB_REQ_TYPE_STANDARD 0x00U -#define USB_REQ_TYPE_CLASS 0x20U -#define USB_REQ_TYPE_VENDOR 0x40U -#define USB_REQ_TYPE_RESERVED 0x60U - -/* bmRequestType D4..0 Recipient */ -#define USB_REQ_RECIPIENT_DEVICE 0x00U -#define USB_REQ_RECIPIENT_INTERFACE 0x01U -#define USB_REQ_RECIPIENT_ENDPOINT 0x02U -#define USB_REQ_RECIPIENT_OTHER 0x03U - -/* Table 9-4. Standard Request Codes */ -/* bRequest , Value */ -#define USB_REQ_GET_STATUS 0x00U -#define USB_REQ_CLEAR_FEATURE 0x01U -#define USB_REQ_SET_FEATURE 0x03U -#define USB_REQ_SET_ADDRESS 0x05U -#define USB_REQ_GET_DESCRIPTOR 0x06U -#define USB_REQ_SET_DESCRIPTOR 0x07U -#define USB_REQ_GET_CONFIGURATION 0x08U -#define USB_REQ_SET_CONFIGURATION 0x09U -#define USB_REQ_GET_INTERFACE 0x0AU -#define USB_REQ_SET_INTERFACE 0x0BU -#define USB_REQ_SYNCH_FRAME 0x0CU - -/* Table 9-5. Descriptor Types of USB Specifications */ -#define USB_DESC_TYPE_DEVICE 0x01U -#define USB_DESC_TYPE_CONFIGURATION 0x02U -#define USB_DESC_TYPE_STRING 0x03U -#define USB_DESC_TYPE_INTERFACE 0x04U -#define USB_DESC_TYPE_ENDPOINT 0x05U -#define USB_DESC_TYPE_DEVICE_QUALIFIER 0x06U -#define USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION 0x07U -#define USB_DESC_TYPE_INTERFACE_POWER 0x08U -#define USB_DESC_TYPE_HID 0x21U -#define USB_DESC_TYPE_HID_REPORT 0x22U - - -#define USB_DEVICE_DESC_SIZE 0x12U -#define USB_CONFIGURATION_DESC_SIZE 0x09U -#define USB_HID_DESC_SIZE 0x09U -#define USB_INTERFACE_DESC_SIZE 0x09U -#define USB_ENDPOINT_DESC_SIZE 0x07U - -/* Descriptor Type and Descriptor Index */ -/* Use the following values when calling the function USBH_GetDescriptor */ -#define USB_DESC_DEVICE ((USB_DESC_TYPE_DEVICE << 8) & 0xFF00U) -#define USB_DESC_CONFIGURATION ((USB_DESC_TYPE_CONFIGURATION << 8) & 0xFF00U) -#define USB_DESC_STRING ((USB_DESC_TYPE_STRING << 8) & 0xFF00U) -#define USB_DESC_INTERFACE ((USB_DESC_TYPE_INTERFACE << 8) & 0xFF00U) -#define USB_DESC_ENDPOINT ((USB_DESC_TYPE_INTERFACE << 8) & 0xFF00U) -#define USB_DESC_DEVICE_QUALIFIER ((USB_DESC_TYPE_DEVICE_QUALIFIER << 8) & 0xFF00U) -#define USB_DESC_OTHER_SPEED_CONFIGURATION ((USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION << 8) & 0xFF00U) -#define USB_DESC_INTERFACE_POWER ((USB_DESC_TYPE_INTERFACE_POWER << 8) & 0xFF00U) -#define USB_DESC_HID_REPORT ((USB_DESC_TYPE_HID_REPORT << 8) & 0xFF00U) -#define USB_DESC_HID ((USB_DESC_TYPE_HID << 8) & 0xFF00U) - - -#define USB_EP_TYPE_CTRL 0x00U -#define USB_EP_TYPE_ISOC 0x01U -#define USB_EP_TYPE_BULK 0x02U -#define USB_EP_TYPE_INTR 0x03U - -#define USB_EP_DIR_OUT 0x00U -#define USB_EP_DIR_IN 0x80U -#define USB_EP_DIR_MSK 0x80U - -#ifndef USBH_MAX_PIPES_NBR -#define USBH_MAX_PIPES_NBR 16U -#endif /* USBH_MAX_PIPES_NBR */ - -#define USBH_DEVICE_ADDRESS_DEFAULT 0x00U -#define USBH_DEVICE_ADDRESS 0x01U - -#define USBH_MAX_ERROR_COUNT 0x02U - -#if (USBH_USE_OS == 1U) -#define MSGQUEUE_OBJECTS 0x10U -#endif - - -/** - * @} - */ - - -#define USBH_CONFIGURATION_DESCRIPTOR_SIZE (USB_CONFIGURATION_DESC_SIZE \ - + USB_INTERFACE_DESC_SIZE\ - + (USBH_MAX_NUM_ENDPOINTS * USB_ENDPOINT_DESC_SIZE)) - - -#define CONFIG_DESC_wTOTAL_LENGTH (ConfigurationDescriptorData.ConfigDescfield.\ - ConfigurationDescriptor.wTotalLength) - - -typedef union -{ - uint16_t w; - struct BW - { - uint8_t msb; - uint8_t lsb; - } - bw; -} -uint16_t_uint8_t; - - -typedef union _USB_Setup -{ - uint32_t d8[2]; - - struct _SetupPkt_Struc - { - uint8_t bmRequestType; - uint8_t bRequest; - uint16_t_uint8_t wValue; - uint16_t_uint8_t wIndex; - uint16_t_uint8_t wLength; - } b; -} -USB_Setup_TypeDef; - -typedef struct _DescHeader -{ - uint8_t bLength; - uint8_t bDescriptorType; -} -USBH_DescHeader_t; - -typedef struct _DeviceDescriptor -{ - uint8_t bLength; - uint8_t bDescriptorType; - uint16_t bcdUSB; /* USB Specification Number which device complies too */ - uint8_t bDeviceClass; - uint8_t bDeviceSubClass; - uint8_t bDeviceProtocol; - /* If equal to Zero, each interface specifies its own class - code if equal to 0xFF, the class code is vendor specified. - Otherwise field is valid Class Code.*/ - uint8_t bMaxPacketSize; - uint16_t idVendor; /* Vendor ID (Assigned by USB Org) */ - uint16_t idProduct; /* Product ID (Assigned by Manufacturer) */ - uint16_t bcdDevice; /* Device Release Number */ - uint8_t iManufacturer; /* Index of Manufacturer String Descriptor */ - uint8_t iProduct; /* Index of Product String Descriptor */ - uint8_t iSerialNumber; /* Index of Serial Number String Descriptor */ - uint8_t bNumConfigurations; /* Number of Possible Configurations */ -} -USBH_DevDescTypeDef; - -typedef struct _EndpointDescriptor -{ - uint8_t bLength; - uint8_t bDescriptorType; - uint8_t bEndpointAddress; /* indicates what endpoint this descriptor is describing */ - uint8_t bmAttributes; /* specifies the transfer type. */ - uint16_t wMaxPacketSize; /* Maximum Packet Size this endpoint is capable of sending or receiving */ - uint8_t bInterval; /* is used to specify the polling interval of certain transfers. */ -} -USBH_EpDescTypeDef; - -typedef struct _InterfaceDescriptor -{ - uint8_t bLength; - uint8_t bDescriptorType; - uint8_t bInterfaceNumber; - uint8_t bAlternateSetting; /* Value used to select alternative setting */ - uint8_t bNumEndpoints; /* Number of Endpoints used for this interface */ - uint8_t bInterfaceClass; /* Class Code (Assigned by USB Org) */ - uint8_t bInterfaceSubClass; /* Subclass Code (Assigned by USB Org) */ - uint8_t bInterfaceProtocol; /* Protocol Code */ - uint8_t iInterface; /* Index of String Descriptor Describing this interface */ - USBH_EpDescTypeDef Ep_Desc[USBH_MAX_NUM_ENDPOINTS]; -} -USBH_InterfaceDescTypeDef; - - -typedef struct _ConfigurationDescriptor -{ - uint8_t bLength; - uint8_t bDescriptorType; - uint16_t wTotalLength; /* Total Length of Data Returned */ - uint8_t bNumInterfaces; /* Number of Interfaces */ - uint8_t bConfigurationValue; /* Value to use as an argument to select this configuration*/ - uint8_t iConfiguration; /*Index of String Descriptor Describing this configuration */ - uint8_t bmAttributes; /* D7 Bus Powered , D6 Self Powered, D5 Remote Wakeup , D4..0 Reserved (0)*/ - uint8_t bMaxPower; /*Maximum Power Consumption */ - USBH_InterfaceDescTypeDef Itf_Desc[USBH_MAX_NUM_INTERFACES]; -} -USBH_CfgDescTypeDef; - - -/* Following USB Host status */ -typedef enum -{ - USBH_OK = 0, - USBH_BUSY, - USBH_FAIL, - USBH_NOT_SUPPORTED, - USBH_UNRECOVERED_ERROR, - USBH_ERROR_SPEED_UNKNOWN, -} USBH_StatusTypeDef; - - -/** @defgroup USBH_CORE_Exported_Types - * @{ - */ - -typedef enum -{ - USBH_SPEED_HIGH = 0U, - USBH_SPEED_FULL = 1U, - USBH_SPEED_LOW = 2U, - -} USBH_SpeedTypeDef; - -/* Following states are used for gState */ -typedef enum -{ - HOST_IDLE = 0U, - HOST_DEV_WAIT_FOR_ATTACHMENT, - HOST_DEV_ATTACHED, - HOST_DEV_DISCONNECTED, - HOST_DETECT_DEVICE_SPEED, - HOST_ENUMERATION, - HOST_CLASS_REQUEST, - HOST_INPUT, - HOST_SET_CONFIGURATION, - HOST_SET_WAKEUP_FEATURE, - HOST_CHECK_CLASS, - HOST_CLASS, - HOST_SUSPENDED, - HOST_ABORT_STATE, -} HOST_StateTypeDef; - -/* Following states are used for EnumerationState */ -typedef enum -{ - ENUM_IDLE = 0U, - ENUM_GET_FULL_DEV_DESC, - ENUM_SET_ADDR, - ENUM_GET_CFG_DESC, - ENUM_GET_FULL_CFG_DESC, - ENUM_GET_MFC_STRING_DESC, - ENUM_GET_PRODUCT_STRING_DESC, - ENUM_GET_SERIALNUM_STRING_DESC, -} ENUM_StateTypeDef; - -/* Following states are used for CtrlXferStateMachine */ -typedef enum -{ - CTRL_IDLE = 0U, - CTRL_SETUP, - CTRL_SETUP_WAIT, - CTRL_DATA_IN, - CTRL_DATA_IN_WAIT, - CTRL_DATA_OUT, - CTRL_DATA_OUT_WAIT, - CTRL_STATUS_IN, - CTRL_STATUS_IN_WAIT, - CTRL_STATUS_OUT, - CTRL_STATUS_OUT_WAIT, - CTRL_ERROR, - CTRL_STALLED, - CTRL_COMPLETE -} CTRL_StateTypeDef; - - -/* Following states are used for RequestState */ -typedef enum -{ - CMD_IDLE = 0U, - CMD_SEND, - CMD_WAIT -} CMD_StateTypeDef; - -typedef enum -{ - USBH_URB_IDLE = 0U, - USBH_URB_DONE, - USBH_URB_NOTREADY, - USBH_URB_NYET, - USBH_URB_ERROR, - USBH_URB_STALL -} USBH_URBStateTypeDef; - -typedef enum -{ - USBH_PORT_EVENT = 1U, - USBH_URB_EVENT, - USBH_CONTROL_EVENT, - USBH_CLASS_EVENT, - USBH_STATE_CHANGED_EVENT, -} -USBH_OSEventTypeDef; - -/* Control request structure */ -typedef struct -{ - uint8_t pipe_in; - uint8_t pipe_out; - uint8_t pipe_size; - uint8_t *buff; - uint16_t length; - uint16_t timer; - USB_Setup_TypeDef setup; - CTRL_StateTypeDef state; - uint8_t errorcount; - -} USBH_CtrlTypeDef; - -/* Attached device structure */ -typedef struct -{ - uint8_t CfgDesc_Raw[USBH_MAX_SIZE_CONFIGURATION]; - uint8_t Data[USBH_MAX_DATA_BUFFER]; - uint8_t address; - uint8_t speed; - uint8_t EnumCnt; - uint8_t RstCnt; - __IO uint8_t is_connected; - __IO uint8_t is_disconnected; - __IO uint8_t is_ReEnumerated; - uint8_t PortEnabled; - uint8_t current_interface; - USBH_DevDescTypeDef DevDesc; - USBH_CfgDescTypeDef CfgDesc; -} USBH_DeviceTypeDef; - -struct _USBH_HandleTypeDef; - -/* USB Host Class structure */ -typedef struct -{ - const char *Name; - uint8_t ClassCode; - USBH_StatusTypeDef(*Init)(struct _USBH_HandleTypeDef *phost); - USBH_StatusTypeDef(*DeInit)(struct _USBH_HandleTypeDef *phost); - USBH_StatusTypeDef(*Requests)(struct _USBH_HandleTypeDef *phost); - USBH_StatusTypeDef(*BgndProcess)(struct _USBH_HandleTypeDef *phost); - USBH_StatusTypeDef(*SOFProcess)(struct _USBH_HandleTypeDef *phost); - void *pData; -} USBH_ClassTypeDef; - -/* USB Host handle structure */ -typedef struct _USBH_HandleTypeDef -{ - __IO HOST_StateTypeDef gState; /* Host State Machine Value */ - ENUM_StateTypeDef EnumState; /* Enumeration state Machine */ - CMD_StateTypeDef RequestState; - USBH_CtrlTypeDef Control; - USBH_DeviceTypeDef device; - USBH_ClassTypeDef *pClass[USBH_MAX_NUM_SUPPORTED_CLASS]; - USBH_ClassTypeDef *pActiveClass; - uint32_t ClassNumber; - uint32_t Pipes[16]; - __IO uint32_t Timer; - uint32_t Timeout; - uint8_t id; - void *pData; - void (* pUser)(struct _USBH_HandleTypeDef *pHandle, uint8_t id); - -#if (USBH_USE_OS == 1U) -#if osCMSIS < 0x20000 - osMessageQId os_event; - osThreadId thread; -#else - osMessageQueueId_t os_event; - osThreadId_t thread; -#endif - uint32_t os_msg; -#endif - -} USBH_HandleTypeDef; - - -#if defined ( __GNUC__ ) -#ifndef __weak -#define __weak __attribute__((weak)) -#endif /* __weak */ -#ifndef __packed -#define __packed __attribute__((__packed__)) -#endif /* __packed */ -#endif /* __GNUC__ */ - -#ifdef __cplusplus -} -#endif - -#endif /* USBH_DEF_H */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ - diff --git a/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_ioreq.h b/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_ioreq.h deleted file mode 100644 index 7592e55..0000000 --- a/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_ioreq.h +++ /dev/null @@ -1,160 +0,0 @@ -/** - ****************************************************************************** - * @file usbh_ioreq.h - * @author MCD Application Team - * @brief Header file for usbh_ioreq.c - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2015 STMicroelectronics. - * All rights reserved.

- * - * 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 - * - ****************************************************************************** - */ - -/* Define to prevent recursive ----------------------------------------------*/ -#ifndef __USBH_IOREQ_H -#define __USBH_IOREQ_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "usbh_conf.h" -#include "usbh_core.h" - -/** @addtogroup USBH_LIB - * @{ - */ - -/** @addtogroup USBH_LIB_CORE - * @{ - */ - -/** @defgroup USBH_IOREQ - * @brief This file is the header file for usbh_ioreq.c - * @{ - */ - - -/** @defgroup USBH_IOREQ_Exported_Defines - * @{ - */ - -#define USBH_PID_SETUP 0U -#define USBH_PID_DATA 1U - -#define USBH_EP_CONTROL 0U -#define USBH_EP_ISO 1U -#define USBH_EP_BULK 2U -#define USBH_EP_INTERRUPT 3U - -#define USBH_SETUP_PKT_SIZE 8U -/** - * @} - */ - - -/** @defgroup USBH_IOREQ_Exported_Types - * @{ - */ -/** - * @} - */ - - -/** @defgroup USBH_IOREQ_Exported_Macros - * @{ - */ -/** - * @} - */ - -/** @defgroup USBH_IOREQ_Exported_Variables - * @{ - */ -/** - * @} - */ - -/** @defgroup USBH_IOREQ_Exported_FunctionsPrototype - * @{ - */ -USBH_StatusTypeDef USBH_CtlSendSetup(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint8_t pipe_num); - -USBH_StatusTypeDef USBH_CtlSendData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint16_t length, - uint8_t pipe_num, - uint8_t do_ping); - -USBH_StatusTypeDef USBH_CtlReceiveData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint16_t length, - uint8_t pipe_num); - -USBH_StatusTypeDef USBH_BulkReceiveData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint16_t length, - uint8_t pipe_num); - -USBH_StatusTypeDef USBH_BulkSendData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint16_t length, - uint8_t pipe_num, - uint8_t do_ping); - -USBH_StatusTypeDef USBH_InterruptReceiveData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint8_t length, - uint8_t pipe_num); - -USBH_StatusTypeDef USBH_InterruptSendData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint8_t length, - uint8_t pipe_num); - - -USBH_StatusTypeDef USBH_IsocReceiveData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint32_t length, - uint8_t pipe_num); - - -USBH_StatusTypeDef USBH_IsocSendData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint32_t length, - uint8_t pipe_num); -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USBH_IOREQ_H */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ - - diff --git a/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_pipes.h b/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_pipes.h deleted file mode 100644 index 98d4f0a..0000000 --- a/Middlewares/ST/STM32_USB_Host_Library/Core/Inc/usbh_pipes.h +++ /dev/null @@ -1,123 +0,0 @@ -/** - ****************************************************************************** - * @file usbh_pipes.h - * @author MCD Application Team - * @brief Header file for usbh_pipes.c - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2015 STMicroelectronics. - * All rights reserved.

- * - * 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 - * - ****************************************************************************** - */ - -/* Define to prevent recursive ----------------------------------------------*/ -#ifndef __USBH_PIPES_H -#define __USBH_PIPES_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "usbh_core.h" - -/** @addtogroup USBH_LIB - * @{ - */ - -/** @addtogroup USBH_LIB_CORE - * @{ - */ - -/** @defgroup USBH_PIPES - * @brief This file is the header file for usbh_pipes.c - * @{ - */ - -/** @defgroup USBH_PIPES_Exported_Defines - * @{ - */ -/** - * @} - */ - -/** @defgroup USBH_PIPES_Exported_Types - * @{ - */ -/** - * @} - */ - - -/** @defgroup USBH_PIPES_Exported_Macros - * @{ - */ -/** - * @} - */ - -/** @defgroup USBH_PIPES_Exported_Variables - * @{ - */ -/** - * @} - */ - -/** @defgroup USBH_PIPES_Exported_FunctionsPrototype - * @{ - */ - -USBH_StatusTypeDef USBH_OpenPipe(USBH_HandleTypeDef *phost, - uint8_t pipe_num, - uint8_t epnum, - uint8_t dev_address, - uint8_t speed, - uint8_t ep_type, - uint16_t mps); - -USBH_StatusTypeDef USBH_ClosePipe(USBH_HandleTypeDef *phost, - uint8_t pipe_num); - -uint8_t USBH_AllocPipe(USBH_HandleTypeDef *phost, - uint8_t ep_addr); - -USBH_StatusTypeDef USBH_FreePipe(USBH_HandleTypeDef *phost, - uint8_t idx); - - - - -/** - * @} - */ - - -#ifdef __cplusplus -} -#endif - -#endif /* __USBH_PIPES_H */ - - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ - - diff --git a/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c b/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c deleted file mode 100644 index 832559a..0000000 --- a/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_core.c +++ /dev/null @@ -1,1397 +0,0 @@ -/** - ****************************************************************************** - * @file usbh_core.c - * @author MCD Application Team - * @brief This file implements the functions for the core state machine process - * the enumeration and the control transfer process - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2015 STMicroelectronics. - * All rights reserved.

- * - * 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 - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "usbh_core.h" - - -/** @addtogroup USBH_LIB - * @{ - */ - -/** @addtogroup USBH_LIB_CORE - * @{ - */ - -/** @defgroup USBH_CORE - * @brief This file handles the basic enumeration when a device is connected - * to the host. - * @{ - */ - - -/** @defgroup USBH_CORE_Private_Defines - * @{ - */ -#define USBH_ADDRESS_DEFAULT 0x00U -#define USBH_ADDRESS_ASSIGNED 0x01U -#define USBH_MPS_DEFAULT 0x40U -/** - * @} - */ - -/** @defgroup USBH_CORE_Private_Macros - * @{ - */ -/** - * @} - */ - - -/** @defgroup USBH_CORE_Private_Variables - * @{ - */ -#if (USBH_USE_OS == 1U) -#if (osCMSIS >= 0x20000U) -osThreadAttr_t USBH_Thread_Atrr; -#endif -#endif - - -/** - * @} - */ - - -/** @defgroup USBH_CORE_Private_Functions - * @{ - */ -static USBH_StatusTypeDef USBH_HandleEnum(USBH_HandleTypeDef *phost); -static void USBH_HandleSof(USBH_HandleTypeDef *phost); -static USBH_StatusTypeDef DeInitStateMachine(USBH_HandleTypeDef *phost); - -#if (USBH_USE_OS == 1U) -#if (osCMSIS < 0x20000U) -static void USBH_Process_OS(void const *argument); -#else -static void USBH_Process_OS(void *argument); -#endif -#endif - - -/** - * @brief HCD_Init - * Initialize the HOST Core. - * @param phost: Host Handle - * @param pUsrFunc: User Callback - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_Init(USBH_HandleTypeDef *phost, - void (*pUsrFunc)(USBH_HandleTypeDef *phost, - uint8_t id), uint8_t id) -{ - /* Check whether the USB Host handle is valid */ - if (phost == NULL) - { - USBH_ErrLog("Invalid Host handle"); - return USBH_FAIL; - } - - /* Set DRiver ID */ - phost->id = id; - - /* Unlink class*/ - phost->pActiveClass = NULL; - phost->ClassNumber = 0U; - - /* Restore default states and prepare EP0 */ - (void)DeInitStateMachine(phost); - - /* Restore default Device connection states */ - phost->device.PortEnabled = 0U; - phost->device.is_connected = 0U; - phost->device.is_disconnected = 0U; - phost->device.is_ReEnumerated = 0U; - - /* Assign User process */ - if (pUsrFunc != NULL) - { - phost->pUser = pUsrFunc; - } - -#if (USBH_USE_OS == 1U) -#if (osCMSIS < 0x20000U) - - /* Create USB Host Queue */ - osMessageQDef(USBH_Queue, MSGQUEUE_OBJECTS, uint16_t); - phost->os_event = osMessageCreate(osMessageQ(USBH_Queue), NULL); - - /* Create USB Host Task */ -#if defined (USBH_PROCESS_STACK_SIZE) - osThreadDef(USBH_Thread, USBH_Process_OS, USBH_PROCESS_PRIO, 0U, USBH_PROCESS_STACK_SIZE); -#else - osThreadDef(USBH_Thread, USBH_Process_OS, USBH_PROCESS_PRIO, 0U, 8U * configMINIMAL_STACK_SIZE); -#endif /* defined (USBH_PROCESS_STACK_SIZE) */ - - phost->thread = osThreadCreate(osThread(USBH_Thread), phost); - -#else - - /* Create USB Host Queue */ - phost->os_event = osMessageQueueNew(MSGQUEUE_OBJECTS, sizeof(uint32_t), NULL); - - /* Create USB Host Task */ - USBH_Thread_Atrr.name = "USBH_Queue"; - -#if defined (USBH_PROCESS_STACK_SIZE) - USBH_Thread_Atrr.stack_size = USBH_PROCESS_STACK_SIZE; -#else - USBH_Thread_Atrr.stack_size = (8U * configMINIMAL_STACK_SIZE); -#endif /* defined (USBH_PROCESS_STACK_SIZE) */ - - USBH_Thread_Atrr.priority = USBH_PROCESS_PRIO; - phost->thread = osThreadNew(USBH_Process_OS, phost, &USBH_Thread_Atrr); - -#endif /* (osCMSIS < 0x20000U) */ -#endif /* (USBH_USE_OS == 1U) */ - - /* Initialize low level driver */ - (void)USBH_LL_Init(phost); - - return USBH_OK; -} - - -/** - * @brief HCD_Init - * De-Initialize the Host portion of the driver. - * @param phost: Host Handle - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_DeInit(USBH_HandleTypeDef *phost) -{ - (void)DeInitStateMachine(phost); - - /* Restore default Device connection states */ - phost->device.PortEnabled = 0U; - phost->device.is_connected = 0U; - phost->device.is_disconnected = 0U; - phost->device.is_ReEnumerated = 0U; - phost->device.RstCnt = 0U; - phost->device.EnumCnt = 0U; - - if (phost->pData != NULL) - { - (void)USBH_LL_Stop(phost); - } - -#if (USBH_USE_OS == 1U) -#if (osCMSIS < 0x20000U) - - /* Free allocated resource for USBH process */ - (void)osThreadTerminate(phost->thread); - (void)osMessageDelete(phost->os_event); - -#else - - /* Free allocated resource for USBH process */ - (void)osThreadTerminate(phost->thread); - (void)osMessageQueueDelete(phost->os_event); - -#endif /* (osCMSIS < 0x20000U) */ -#endif /* (USBH_USE_OS == 1U) */ - - return USBH_OK; -} - - -/** - * @brief DeInitStateMachine - * De-Initialize the Host state machine. - * @param phost: Host Handle - * @retval USBH Status - */ -static USBH_StatusTypeDef DeInitStateMachine(USBH_HandleTypeDef *phost) -{ - uint32_t i = 0U; - - /* Clear Pipes flags*/ - for (i = 0U; i < USBH_MAX_PIPES_NBR; i++) - { - phost->Pipes[i] = 0U; - } - - for (i = 0U; i < USBH_MAX_DATA_BUFFER; i++) - { - phost->device.Data[i] = 0U; - } - - phost->gState = HOST_IDLE; - phost->EnumState = ENUM_IDLE; - phost->RequestState = CMD_SEND; - phost->Timer = 0U; - - phost->Control.state = CTRL_SETUP; - phost->Control.pipe_size = USBH_MPS_DEFAULT; - phost->Control.errorcount = 0U; - - phost->device.address = USBH_ADDRESS_DEFAULT; - phost->device.speed = (uint8_t)USBH_SPEED_FULL; - phost->device.RstCnt = 0U; - phost->device.EnumCnt = 0U; - - return USBH_OK; -} - - -/** - * @brief USBH_RegisterClass - * Link class driver to Host Core. - * @param phost : Host Handle - * @param pclass: Class handle - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_RegisterClass(USBH_HandleTypeDef *phost, USBH_ClassTypeDef *pclass) -{ - USBH_StatusTypeDef status = USBH_OK; - - if (pclass != NULL) - { - if (phost->ClassNumber < USBH_MAX_NUM_SUPPORTED_CLASS) - { - /* link the class to the USB Host handle */ - phost->pClass[phost->ClassNumber++] = pclass; - status = USBH_OK; - } - else - { - USBH_ErrLog("Max Class Number reached"); - status = USBH_FAIL; - } - } - else - { - USBH_ErrLog("Invalid Class handle"); - status = USBH_FAIL; - } - - return status; -} - - -/** - * @brief USBH_SelectInterface - * Select current interface. - * @param phost: Host Handle - * @param interface: Interface number - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_SelectInterface(USBH_HandleTypeDef *phost, uint8_t interface) -{ - USBH_StatusTypeDef status = USBH_OK; - - if (interface < phost->device.CfgDesc.bNumInterfaces) - { - phost->device.current_interface = interface; - USBH_UsrLog("Switching to Interface (#%d)", interface); - USBH_UsrLog("Class : %xh", phost->device.CfgDesc.Itf_Desc[interface].bInterfaceClass); - USBH_UsrLog("SubClass : %xh", phost->device.CfgDesc.Itf_Desc[interface].bInterfaceSubClass); - USBH_UsrLog("Protocol : %xh", phost->device.CfgDesc.Itf_Desc[interface].bInterfaceProtocol); - } - else - { - USBH_ErrLog("Cannot Select This Interface."); - status = USBH_FAIL; - } - - return status; -} - - -/** - * @brief USBH_GetActiveClass - * Return Device Class. - * @param phost: Host Handle - * @param interface: Interface index - * @retval Class Code - */ -uint8_t USBH_GetActiveClass(USBH_HandleTypeDef *phost) -{ - return (phost->device.CfgDesc.Itf_Desc[0].bInterfaceClass); -} - - -/** - * @brief USBH_FindInterface - * Find the interface index for a specific class. - * @param phost: Host Handle - * @param Class: Class code - * @param SubClass: SubClass code - * @param Protocol: Protocol code - * @retval interface index in the configuration structure - * @note : (1)interface index 0xFF means interface index not found - */ -uint8_t USBH_FindInterface(USBH_HandleTypeDef *phost, uint8_t Class, uint8_t SubClass, uint8_t Protocol) -{ - USBH_InterfaceDescTypeDef *pif; - USBH_CfgDescTypeDef *pcfg; - uint8_t if_ix = 0U; - - pif = (USBH_InterfaceDescTypeDef *)NULL; - pcfg = &phost->device.CfgDesc; - - while (if_ix < USBH_MAX_NUM_INTERFACES) - { - pif = &pcfg->Itf_Desc[if_ix]; - if (((pif->bInterfaceClass == Class) || (Class == 0xFFU)) && - ((pif->bInterfaceSubClass == SubClass) || (SubClass == 0xFFU)) && - ((pif->bInterfaceProtocol == Protocol) || (Protocol == 0xFFU))) - { - return if_ix; - } - if_ix++; - } - return 0xFFU; -} - - -/** - * @brief USBH_FindInterfaceIndex - * Find the interface index for a specific class interface and alternate setting number. - * @param phost: Host Handle - * @param interface_number: interface number - * @param alt_settings : alternate setting number - * @retval interface index in the configuration structure - * @note : (1)interface index 0xFF means interface index not found - */ -uint8_t USBH_FindInterfaceIndex(USBH_HandleTypeDef *phost, uint8_t interface_number, uint8_t alt_settings) -{ - USBH_InterfaceDescTypeDef *pif; - USBH_CfgDescTypeDef *pcfg; - uint8_t if_ix = 0U; - - pif = (USBH_InterfaceDescTypeDef *)NULL; - pcfg = &phost->device.CfgDesc; - - while (if_ix < USBH_MAX_NUM_INTERFACES) - { - pif = &pcfg->Itf_Desc[if_ix]; - if ((pif->bInterfaceNumber == interface_number) && (pif->bAlternateSetting == alt_settings)) - { - return if_ix; - } - if_ix++; - } - return 0xFFU; -} - - -/** - * @brief USBH_Start - * Start the USB Host Core. - * @param phost: Host Handle - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_Start(USBH_HandleTypeDef *phost) -{ - /* Start the low level driver */ - (void)USBH_LL_Start(phost); - - /* Activate VBUS on the port */ - (void)USBH_LL_DriverVBUS(phost, TRUE); - - return USBH_OK; -} - - -/** - * @brief USBH_Stop - * Stop the USB Host Core. - * @param phost: Host Handle - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_Stop(USBH_HandleTypeDef *phost) -{ - /* DeActivate VBUS on the port */ - (void)USBH_LL_DriverVBUS(phost, FALSE); - - /* Stop and cleanup the low level driver */ - (void)USBH_LL_Stop(phost); - - /* Free Control Pipes */ - (void)USBH_FreePipe(phost, phost->Control.pipe_in); - (void)USBH_FreePipe(phost, phost->Control.pipe_out); - - return USBH_OK; -} - - -/** - * @brief HCD_ReEnumerate - * Perform a new Enumeration phase. - * @param phost: Host Handle - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_ReEnumerate(USBH_HandleTypeDef *phost) -{ - if (USBH_IsPortEnabled(phost) != 0U) - { - phost->device.is_ReEnumerated = 1U; - - /* Stop Host */ - (void)USBH_Stop(phost); - - phost->device.is_disconnected = 1U; - } - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_PORT_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - - return USBH_OK; -} - - -/** - * @brief USBH_Process - * Background process of the USB Core. - * @param phost: Host Handle - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_Process(USBH_HandleTypeDef *phost) -{ - __IO USBH_StatusTypeDef status = USBH_FAIL; - uint8_t idx = 0U; - - /* check for Host pending port disconnect event */ - if (phost->device.is_disconnected == 1U) - { - phost->gState = HOST_DEV_DISCONNECTED; - } - - switch (phost->gState) - { - case HOST_IDLE : - - if ((phost->device.is_connected) != 0U) - { - USBH_UsrLog("USB Device Connected"); - - /* Wait for 200 ms after connection */ - phost->gState = HOST_DEV_WAIT_FOR_ATTACHMENT; - USBH_Delay(200U); - (void)USBH_LL_ResetPort(phost); - - /* Make sure to start with Default address */ - phost->device.address = USBH_ADDRESS_DEFAULT; - phost->Timeout = 0U; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_PORT_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - break; - - case HOST_DEV_WAIT_FOR_ATTACHMENT: /* Wait for Port Enabled */ - - if (phost->device.PortEnabled == 1U) - { - USBH_UsrLog("USB Device Reset Completed"); - phost->device.RstCnt = 0U; - phost->gState = HOST_DEV_ATTACHED; - } - else - { - if (phost->Timeout > USBH_DEV_RESET_TIMEOUT) - { - phost->device.RstCnt++; - if (phost->device.RstCnt > 3U) - { - /* Buggy Device can't complete reset */ - USBH_UsrLog("USB Reset Failed, Please unplug the Device."); - phost->gState = HOST_ABORT_STATE; - } - else - { - phost->gState = HOST_IDLE; - } - } - else - { - phost->Timeout += 10U; - USBH_Delay(10U); - } - } -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_PORT_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - break; - - case HOST_DEV_ATTACHED : - - if (phost->pUser != NULL) - { - phost->pUser(phost, HOST_USER_CONNECTION); - } - - /* Wait for 100 ms after Reset */ - USBH_Delay(100U); - - phost->device.speed = (uint8_t)USBH_LL_GetSpeed(phost); - - phost->gState = HOST_ENUMERATION; - - phost->Control.pipe_out = USBH_AllocPipe(phost, 0x00U); - phost->Control.pipe_in = USBH_AllocPipe(phost, 0x80U); - - /* Open Control pipes */ - (void)USBH_OpenPipe(phost, phost->Control.pipe_in, 0x80U, - phost->device.address, phost->device.speed, - USBH_EP_CONTROL, (uint16_t)phost->Control.pipe_size); - - /* Open Control pipes */ - (void)USBH_OpenPipe(phost, phost->Control.pipe_out, 0x00U, - phost->device.address, phost->device.speed, - USBH_EP_CONTROL, (uint16_t)phost->Control.pipe_size); - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_PORT_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - break; - - case HOST_ENUMERATION: - /* Check for enumeration status */ - status = USBH_HandleEnum(phost); - if (status == USBH_OK) - { - /* The function shall return USBH_OK when full enumeration is complete */ - USBH_UsrLog("Enumeration done."); - - phost->device.current_interface = 0U; - - if (phost->device.DevDesc.bNumConfigurations == 1U) - { - USBH_UsrLog("This device has only 1 configuration."); - phost->gState = HOST_SET_CONFIGURATION; - } - else - { - phost->gState = HOST_INPUT; - } -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_STATE_CHANGED_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - break; - - case HOST_INPUT: - { - /* user callback for end of device basic enumeration */ - if (phost->pUser != NULL) - { - phost->pUser(phost, HOST_USER_SELECT_CONFIGURATION); - phost->gState = HOST_SET_CONFIGURATION; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_STATE_CHANGED_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - } - break; - - case HOST_SET_CONFIGURATION: - /* set configuration */ - if (USBH_SetCfg(phost, (uint16_t)phost->device.CfgDesc.bConfigurationValue) == USBH_OK) - { - phost->gState = HOST_SET_WAKEUP_FEATURE; - USBH_UsrLog("Default configuration set."); - } - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_PORT_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - break; - - case HOST_SET_WAKEUP_FEATURE: - - if (((phost->device.CfgDesc.bmAttributes) & (1U << 5)) != 0U) - { - status = USBH_SetFeature(phost, FEATURE_SELECTOR_REMOTEWAKEUP); - - if (status == USBH_OK) - { - USBH_UsrLog("Device remote wakeup enabled"); - phost->gState = HOST_CHECK_CLASS; - } - else if (status == USBH_NOT_SUPPORTED) - { - USBH_UsrLog("Remote wakeup not supported by the device"); - phost->gState = HOST_CHECK_CLASS; - } - else - { - /* .. */ - } - } - else - { - phost->gState = HOST_CHECK_CLASS; - } - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_PORT_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - break; - - case HOST_CHECK_CLASS: - - if (phost->ClassNumber == 0U) - { - USBH_UsrLog("No Class has been registered."); - } - else - { - phost->pActiveClass = NULL; - - for (idx = 0U; idx < USBH_MAX_NUM_SUPPORTED_CLASS; idx++) - { - if (phost->pClass[idx]->ClassCode == phost->device.CfgDesc.Itf_Desc[0].bInterfaceClass) - { - phost->pActiveClass = phost->pClass[idx]; - break; - } - } - - if (phost->pActiveClass != NULL) - { - if (phost->pActiveClass->Init(phost) == USBH_OK) - { - phost->gState = HOST_CLASS_REQUEST; - USBH_UsrLog("%s class started.", phost->pActiveClass->Name); - - /* Inform user that a class has been activated */ - phost->pUser(phost, HOST_USER_CLASS_SELECTED); - } - else - { - phost->gState = HOST_ABORT_STATE; - USBH_UsrLog("Device not supporting %s class.", phost->pActiveClass->Name); - } - } - else - { - phost->gState = HOST_ABORT_STATE; - USBH_UsrLog("No registered class for this device."); - } - } - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_STATE_CHANGED_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - break; - - case HOST_CLASS_REQUEST: - /* process class standard control requests state machine */ - if (phost->pActiveClass != NULL) - { - status = phost->pActiveClass->Requests(phost); - - if (status == USBH_OK) - { - phost->gState = HOST_CLASS; - } - else if (status == USBH_FAIL) - { - phost->gState = HOST_ABORT_STATE; - USBH_ErrLog("Device not responding Please Unplug."); - } - else - { - /* .. */ - } - } - else - { - phost->gState = HOST_ABORT_STATE; - USBH_ErrLog("Invalid Class Driver."); - } -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_STATE_CHANGED_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - break; - - case HOST_CLASS: - /* process class state machine */ - if (phost->pActiveClass != NULL) - { - phost->pActiveClass->BgndProcess(phost); - } - break; - - case HOST_DEV_DISCONNECTED : - phost->device.is_disconnected = 0U; - - (void)DeInitStateMachine(phost); - - /* Re-Initilaize Host for new Enumeration */ - if (phost->pActiveClass != NULL) - { - phost->pActiveClass->DeInit(phost); - phost->pActiveClass = NULL; - } - - if (phost->pUser != NULL) - { - phost->pUser(phost, HOST_USER_DISCONNECTION); - } - USBH_UsrLog("USB Device disconnected"); - - if (phost->device.is_ReEnumerated == 1U) - { - phost->device.is_ReEnumerated = 0U; - - /* Start the host and re-enable Vbus */ - (void)USBH_Start(phost); - } - else - { - /* Device Disconnection Completed, start USB Driver */ - (void)USBH_LL_Start(phost); - } - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_PORT_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - break; - - case HOST_ABORT_STATE: - default : - break; - } - return USBH_OK; -} - - -/** - * @brief USBH_HandleEnum - * This function includes the complete enumeration process - * @param phost: Host Handle - * @retval USBH_Status - */ -static USBH_StatusTypeDef USBH_HandleEnum(USBH_HandleTypeDef *phost) -{ - USBH_StatusTypeDef Status = USBH_BUSY; - USBH_StatusTypeDef ReqStatus = USBH_BUSY; - - switch (phost->EnumState) - { - case ENUM_IDLE: - /* Get Device Desc for only 1st 8 bytes : To get EP0 MaxPacketSize */ - ReqStatus = USBH_Get_DevDesc(phost, 8U); - if (ReqStatus == USBH_OK) - { - phost->Control.pipe_size = phost->device.DevDesc.bMaxPacketSize; - - phost->EnumState = ENUM_GET_FULL_DEV_DESC; - - /* modify control channels configuration for MaxPacket size */ - (void)USBH_OpenPipe(phost, phost->Control.pipe_in, 0x80U, phost->device.address, - phost->device.speed, USBH_EP_CONTROL, - (uint16_t)phost->Control.pipe_size); - - /* Open Control pipes */ - (void)USBH_OpenPipe(phost, phost->Control.pipe_out, 0x00U, phost->device.address, - phost->device.speed, USBH_EP_CONTROL, - (uint16_t)phost->Control.pipe_size); - } - else if (ReqStatus == USBH_NOT_SUPPORTED) - { - USBH_ErrLog("Control error: Get Device Descriptor request failed"); - phost->device.EnumCnt++; - if (phost->device.EnumCnt > 3U) - { - /* Buggy Device can't complete get device desc request */ - USBH_UsrLog("Control error, Device not Responding Please unplug the Device."); - phost->gState = HOST_ABORT_STATE; - } - else - { - /* free control pipes */ - (void)USBH_FreePipe(phost, phost->Control.pipe_out); - (void)USBH_FreePipe(phost, phost->Control.pipe_in); - - /* Reset the USB Device */ - phost->gState = HOST_IDLE; - } - } - else - { - /* .. */ - } - break; - - case ENUM_GET_FULL_DEV_DESC: - /* Get FULL Device Desc */ - ReqStatus = USBH_Get_DevDesc(phost, USB_DEVICE_DESC_SIZE); - if (ReqStatus == USBH_OK) - { - USBH_UsrLog("PID: %xh", phost->device.DevDesc.idProduct); - USBH_UsrLog("VID: %xh", phost->device.DevDesc.idVendor); - - phost->EnumState = ENUM_SET_ADDR; - } - else if (ReqStatus == USBH_NOT_SUPPORTED) - { - USBH_ErrLog("Control error: Get Full Device Descriptor request failed"); - phost->device.EnumCnt++; - if (phost->device.EnumCnt > 3U) - { - /* Buggy Device can't complete get device desc request */ - USBH_UsrLog("Control error, Device not Responding Please unplug the Device."); - phost->gState = HOST_ABORT_STATE; - } - else - { - /* Free control pipes */ - (void)USBH_FreePipe(phost, phost->Control.pipe_out); - (void)USBH_FreePipe(phost, phost->Control.pipe_in); - - /* Reset the USB Device */ - phost->EnumState = ENUM_IDLE; - phost->gState = HOST_IDLE; - } - } - else - { - /* .. */ - } - break; - - case ENUM_SET_ADDR: - /* set address */ - ReqStatus = USBH_SetAddress(phost, USBH_DEVICE_ADDRESS); - if (ReqStatus == USBH_OK) - { - USBH_Delay(2U); - phost->device.address = USBH_DEVICE_ADDRESS; - - /* user callback for device address assigned */ - USBH_UsrLog("Address (#%d) assigned.", phost->device.address); - phost->EnumState = ENUM_GET_CFG_DESC; - - /* modify control channels to update device address */ - (void)USBH_OpenPipe(phost, phost->Control.pipe_in, 0x80U, phost->device.address, - phost->device.speed, USBH_EP_CONTROL, - (uint16_t)phost->Control.pipe_size); - - /* Open Control pipes */ - (void)USBH_OpenPipe(phost, phost->Control.pipe_out, 0x00U, phost->device.address, - phost->device.speed, USBH_EP_CONTROL, - (uint16_t)phost->Control.pipe_size); - } - else if (ReqStatus == USBH_NOT_SUPPORTED) - { - USBH_ErrLog("Control error: Device Set Address request failed"); - - /* Buggy Device can't complete get device desc request */ - USBH_UsrLog("Control error, Device not Responding Please unplug the Device."); - phost->gState = HOST_ABORT_STATE; - phost->EnumState = ENUM_IDLE; - } - else - { - /* .. */ - } - break; - - case ENUM_GET_CFG_DESC: - /* get standard configuration descriptor */ - ReqStatus = USBH_Get_CfgDesc(phost, USB_CONFIGURATION_DESC_SIZE); - if (ReqStatus == USBH_OK) - { - phost->EnumState = ENUM_GET_FULL_CFG_DESC; - } - else if (ReqStatus == USBH_NOT_SUPPORTED) - { - USBH_ErrLog("Control error: Get Device configuration descriptor request failed"); - phost->device.EnumCnt++; - if (phost->device.EnumCnt > 3U) - { - /* Buggy Device can't complete get device desc request */ - USBH_UsrLog("Control error, Device not Responding Please unplug the Device."); - phost->gState = HOST_ABORT_STATE; - } - else - { - /* Free control pipes */ - (void)USBH_FreePipe(phost, phost->Control.pipe_out); - (void)USBH_FreePipe(phost, phost->Control.pipe_in); - - /* Reset the USB Device */ - phost->EnumState = ENUM_IDLE; - phost->gState = HOST_IDLE; - } - } - else - { - /* .. */ - } - break; - - case ENUM_GET_FULL_CFG_DESC: - /* get FULL config descriptor (config, interface, endpoints) */ - ReqStatus = USBH_Get_CfgDesc(phost, phost->device.CfgDesc.wTotalLength); - if (ReqStatus == USBH_OK) - { - phost->EnumState = ENUM_GET_MFC_STRING_DESC; - } - else if (ReqStatus == USBH_NOT_SUPPORTED) - { - USBH_ErrLog("Control error: Get Device configuration descriptor request failed"); - phost->device.EnumCnt++; - if (phost->device.EnumCnt > 3U) - { - /* Buggy Device can't complete get device desc request */ - USBH_UsrLog("Control error, Device not Responding Please unplug the Device."); - phost->gState = HOST_ABORT_STATE; - } - else - { - /* Free control pipes */ - (void)USBH_FreePipe(phost, phost->Control.pipe_out); - (void)USBH_FreePipe(phost, phost->Control.pipe_in); - - /* Reset the USB Device */ - phost->EnumState = ENUM_IDLE; - phost->gState = HOST_IDLE; - } - } - else - { - /* .. */ - } - break; - - case ENUM_GET_MFC_STRING_DESC: - if (phost->device.DevDesc.iManufacturer != 0U) - { - /* Check that Manufacturer String is available */ - ReqStatus = USBH_Get_StringDesc(phost, phost->device.DevDesc.iManufacturer, - phost->device.Data, 0xFFU); - if (ReqStatus == USBH_OK) - { - /* User callback for Manufacturing string */ - USBH_UsrLog("Manufacturer : %s", (char *)(void *)phost->device.Data); - phost->EnumState = ENUM_GET_PRODUCT_STRING_DESC; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_STATE_CHANGED_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - else if (ReqStatus == USBH_NOT_SUPPORTED) - { - USBH_UsrLog("Manufacturer : N/A"); - phost->EnumState = ENUM_GET_PRODUCT_STRING_DESC; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_STATE_CHANGED_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - else - { - /* .. */ - } - } - else - { - USBH_UsrLog("Manufacturer : N/A"); - phost->EnumState = ENUM_GET_PRODUCT_STRING_DESC; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_STATE_CHANGED_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - break; - - case ENUM_GET_PRODUCT_STRING_DESC: - if (phost->device.DevDesc.iProduct != 0U) - { - /* Check that Product string is available */ - ReqStatus = USBH_Get_StringDesc(phost, phost->device.DevDesc.iProduct, - phost->device.Data, 0xFFU); - if (ReqStatus == USBH_OK) - { - /* User callback for Product string */ - USBH_UsrLog("Product : %s", (char *)(void *)phost->device.Data); - phost->EnumState = ENUM_GET_SERIALNUM_STRING_DESC; - } - else if (ReqStatus == USBH_NOT_SUPPORTED) - { - USBH_UsrLog("Product : N/A"); - phost->EnumState = ENUM_GET_SERIALNUM_STRING_DESC; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_STATE_CHANGED_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - else - { - /* .. */ - } - } - else - { - USBH_UsrLog("Product : N/A"); - phost->EnumState = ENUM_GET_SERIALNUM_STRING_DESC; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_STATE_CHANGED_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - break; - - case ENUM_GET_SERIALNUM_STRING_DESC: - if (phost->device.DevDesc.iSerialNumber != 0U) - { - /* Check that Serial number string is available */ - ReqStatus = USBH_Get_StringDesc(phost, phost->device.DevDesc.iSerialNumber, - phost->device.Data, 0xFFU); - if (ReqStatus == USBH_OK) - { - /* User callback for Serial number string */ - USBH_UsrLog("Serial Number : %s", (char *)(void *)phost->device.Data); - Status = USBH_OK; - } - else if (ReqStatus == USBH_NOT_SUPPORTED) - { - USBH_UsrLog("Serial Number : N/A"); - Status = USBH_OK; - } - else - { - /* .. */ - } - } - else - { - USBH_UsrLog("Serial Number : N/A"); - Status = USBH_OK; - } - break; - - default: - break; - } - return Status; -} - - -/** - * @brief USBH_LL_SetTimer - * Set the initial Host Timer tick - * @param phost: Host Handle - * @retval None - */ -void USBH_LL_SetTimer(USBH_HandleTypeDef *phost, uint32_t time) -{ - phost->Timer = time; -} - - -/** - * @brief USBH_LL_IncTimer - * Increment Host Timer tick - * @param phost: Host Handle - * @retval None - */ -void USBH_LL_IncTimer(USBH_HandleTypeDef *phost) -{ - phost->Timer++; - USBH_HandleSof(phost); -} - - -/** - * @brief USBH_HandleSof - * Call SOF process - * @param phost: Host Handle - * @retval None - */ -static void USBH_HandleSof(USBH_HandleTypeDef *phost) -{ - if ((phost->gState == HOST_CLASS) && (phost->pActiveClass != NULL)) - { - phost->pActiveClass->SOFProcess(phost); - } -} - - -/** - * @brief USBH_PortEnabled - * Port Enabled - * @param phost: Host Handle - * @retval None - */ -void USBH_LL_PortEnabled(USBH_HandleTypeDef *phost) -{ - phost->device.PortEnabled = 1U; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_PORT_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - - return; -} - - -/** - * @brief USBH_LL_PortDisabled - * Port Disabled - * @param phost: Host Handle - * @retval None - */ -void USBH_LL_PortDisabled(USBH_HandleTypeDef *phost) -{ - phost->device.PortEnabled = 0U; - - return; -} - - -/** - * @brief HCD_IsPortEnabled - * Is Port Enabled - * @param phost: Host Handle - * @retval None - */ -uint8_t USBH_IsPortEnabled(USBH_HandleTypeDef *phost) -{ - return (phost->device.PortEnabled); -} - - -/** - * @brief USBH_LL_Connect - * Handle USB Host connexion event - * @param phost: Host Handle - * @retval USBH_Status - */ -USBH_StatusTypeDef USBH_LL_Connect(USBH_HandleTypeDef *phost) -{ - phost->device.is_connected = 1U; - phost->device.is_disconnected = 0U; - phost->device.is_ReEnumerated = 0U; - - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_PORT_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - - return USBH_OK; -} - - -/** - * @brief USBH_LL_Disconnect - * Handle USB Host disconnection event - * @param phost: Host Handle - * @retval USBH_Status - */ -USBH_StatusTypeDef USBH_LL_Disconnect(USBH_HandleTypeDef *phost) -{ - /* update device connection states */ - phost->device.is_disconnected = 1U; - phost->device.is_connected = 0U; - phost->device.PortEnabled = 0U; - - /* Stop Host */ - (void)USBH_LL_Stop(phost); - - /* FRee Control Pipes */ - (void)USBH_FreePipe(phost, phost->Control.pipe_in); - (void)USBH_FreePipe(phost, phost->Control.pipe_out); -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_PORT_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - - return USBH_OK; -} - - -#if (USBH_USE_OS == 1U) -/** - * @brief USB Host Thread task - * @param pvParameters not used - * @retval None - */ - -#if (osCMSIS < 0x20000U) -static void USBH_Process_OS(void const *argument) -{ - osEvent event; - - for (;;) - { - event = osMessageGet(((USBH_HandleTypeDef *)argument)->os_event, osWaitForever); - if (event.status == osEventMessage) - { - USBH_Process((USBH_HandleTypeDef *)argument); - } - } -} -#else -static void USBH_Process_OS(void *argument) -{ - osStatus_t status; - - for (;;) - { - status = osMessageQueueGet(((USBH_HandleTypeDef *)argument)->os_event, - &((USBH_HandleTypeDef *)argument)->os_msg, NULL, osWaitForever); - if (status == osOK) - { - USBH_Process((USBH_HandleTypeDef *)argument); - } - } -} -#endif /* (osCMSIS < 0x20000U) */ - - -/** - * @brief USBH_LL_NotifyURBChange - * Notify URB state Change - * @param phost: Host handle - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_LL_NotifyURBChange(USBH_HandleTypeDef *phost) -{ - phost->os_msg = (uint32_t)USBH_PORT_EVENT; - -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif - - return USBH_OK; -} -#endif -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.c b/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.c deleted file mode 100644 index 3b75767..0000000 --- a/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ctlreq.c +++ /dev/null @@ -1,1140 +0,0 @@ -/** - ****************************************************************************** - * @file usbh_ctlreq.c - * @author MCD Application Team - * @brief This file implements the control requests for device enumeration - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2015 STMicroelectronics. - * All rights reserved.

- * - * 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 - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "usbh_ctlreq.h" - -/** @addtogroup USBH_LIB - * @{ - */ - -/** @addtogroup USBH_LIB_CORE - * @{ - */ - -/** @defgroup USBH_CTLREQ - * @brief This file implements the standard requests for device enumeration - * @{ - */ - - -/** @defgroup USBH_CTLREQ_Private_Defines - * @{ - */ -/** - * @} - */ - - -/** @defgroup USBH_CTLREQ_Private_TypesDefinitions - * @{ - */ -/** - * @} - */ - - - -/** @defgroup USBH_CTLREQ_Private_Macros - * @{ - */ -/** - * @} - */ - - -/** @defgroup USBH_CTLREQ_Private_Variables - * @{ - */ -/** - * @} - */ - -/** @defgroup USBH_CTLREQ_Private_FunctionPrototypes - * @{ - */ -static USBH_StatusTypeDef USBH_HandleControl(USBH_HandleTypeDef *phost); - -static void USBH_ParseDevDesc(USBH_DevDescTypeDef *dev_desc, - uint8_t *buf, uint16_t length); - -static USBH_StatusTypeDef USBH_ParseCfgDesc(USBH_HandleTypeDef *phost, - uint8_t *buf, uint16_t length); - -static USBH_StatusTypeDef USBH_ParseEPDesc(USBH_HandleTypeDef *phost, USBH_EpDescTypeDef *ep_descriptor, uint8_t *buf); -static void USBH_ParseStringDesc(uint8_t *psrc, uint8_t *pdest, uint16_t length); -static void USBH_ParseInterfaceDesc(USBH_InterfaceDescTypeDef *if_descriptor, uint8_t *buf); - - -/** - * @} - */ - - -/** @defgroup USBH_CTLREQ_Private_Functions - * @{ - */ - - -/** - * @brief USBH_Get_DevDesc - * Issue Get Device Descriptor command to the device. Once the response - * received, it parses the device descriptor and updates the status. - * @param phost: Host Handle - * @param length: Length of the descriptor - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_Get_DevDesc(USBH_HandleTypeDef *phost, uint8_t length) -{ - USBH_StatusTypeDef status; - - status = USBH_GetDescriptor(phost, - USB_REQ_RECIPIENT_DEVICE | USB_REQ_TYPE_STANDARD, - USB_DESC_DEVICE, phost->device.Data, - (uint16_t)length); - - if (status == USBH_OK) - { - /* Commands successfully sent and Response Received */ - USBH_ParseDevDesc(&phost->device.DevDesc, phost->device.Data, - (uint16_t)length); - } - - return status; -} - - -/** - * @brief USBH_Get_CfgDesc - * Issues Configuration Descriptor to the device. Once the response - * received, it parses the configuration descriptor and updates the - * status. - * @param phost: Host Handle - * @param length: Length of the descriptor - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_Get_CfgDesc(USBH_HandleTypeDef *phost, - uint16_t length) - -{ - USBH_StatusTypeDef status; - uint8_t *pData = phost->device.CfgDesc_Raw; - - status = USBH_GetDescriptor(phost, (USB_REQ_RECIPIENT_DEVICE | USB_REQ_TYPE_STANDARD), - USB_DESC_CONFIGURATION, pData, length); - - if (status == USBH_OK) - { - /* Commands successfully sent and Response Received */ - status = USBH_ParseCfgDesc(phost, pData, length); - } - - return status; -} - - -/** - * @brief USBH_Get_StringDesc - * Issues string Descriptor command to the device. Once the response - * received, it parses the string descriptor and updates the status. - * @param phost: Host Handle - * @param string_index: String index for the descriptor - * @param buff: Buffer address for the descriptor - * @param length: Length of the descriptor - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_Get_StringDesc(USBH_HandleTypeDef *phost, - uint8_t string_index, uint8_t *buff, - uint16_t length) -{ - USBH_StatusTypeDef status; - - status = USBH_GetDescriptor(phost, - USB_REQ_RECIPIENT_DEVICE | USB_REQ_TYPE_STANDARD, - USB_DESC_STRING | string_index, - phost->device.Data, length); - - if (status == USBH_OK) - { - /* Commands successfully sent and Response Received */ - USBH_ParseStringDesc(phost->device.Data, buff, length); - } - - return status; -} - - -/** - * @brief USBH_GetDescriptor - * Issues Descriptor command to the device. Once the response received, - * it parses the descriptor and updates the status. - * @param phost: Host Handle - * @param req_type: Descriptor type - * @param value_idx: Value for the GetDescriptr request - * @param buff: Buffer to store the descriptor - * @param length: Length of the descriptor - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_GetDescriptor(USBH_HandleTypeDef *phost, - uint8_t req_type, - uint16_t value_idx, - uint8_t *buff, - uint16_t length) -{ - if (phost->RequestState == CMD_SEND) - { - phost->Control.setup.b.bmRequestType = USB_D2H | req_type; - phost->Control.setup.b.bRequest = USB_REQ_GET_DESCRIPTOR; - phost->Control.setup.b.wValue.w = value_idx; - - if ((value_idx & 0xff00U) == USB_DESC_STRING) - { - phost->Control.setup.b.wIndex.w = 0x0409U; - } - else - { - phost->Control.setup.b.wIndex.w = 0U; - } - phost->Control.setup.b.wLength.w = length; - } - - return USBH_CtlReq(phost, buff, length); -} - - -/** - * @brief USBH_SetAddress - * This command sets the address to the connected device - * @param phost: Host Handle - * @param DeviceAddress: Device address to assign - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_SetAddress(USBH_HandleTypeDef *phost, - uint8_t DeviceAddress) -{ - if (phost->RequestState == CMD_SEND) - { - phost->Control.setup.b.bmRequestType = USB_H2D | USB_REQ_RECIPIENT_DEVICE | \ - USB_REQ_TYPE_STANDARD; - - phost->Control.setup.b.bRequest = USB_REQ_SET_ADDRESS; - - phost->Control.setup.b.wValue.w = (uint16_t)DeviceAddress; - phost->Control.setup.b.wIndex.w = 0U; - phost->Control.setup.b.wLength.w = 0U; - } - - return USBH_CtlReq(phost, NULL, 0U); -} - - -/** - * @brief USBH_SetCfg - * The command sets the configuration value to the connected device - * @param phost: Host Handle - * @param cfg_idx: Configuration value - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_SetCfg(USBH_HandleTypeDef *phost, uint16_t cfg_idx) -{ - if (phost->RequestState == CMD_SEND) - { - phost->Control.setup.b.bmRequestType = USB_H2D | USB_REQ_RECIPIENT_DEVICE - | USB_REQ_TYPE_STANDARD; - - phost->Control.setup.b.bRequest = USB_REQ_SET_CONFIGURATION; - phost->Control.setup.b.wValue.w = cfg_idx; - phost->Control.setup.b.wIndex.w = 0U; - phost->Control.setup.b.wLength.w = 0U; - } - - return USBH_CtlReq(phost, NULL, 0U); -} - - -/** - * @brief USBH_SetInterface - * The command sets the Interface value to the connected device - * @param phost: Host Handle - * @param altSetting: Interface value - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_SetInterface(USBH_HandleTypeDef *phost, uint8_t ep_num, - uint8_t altSetting) -{ - if (phost->RequestState == CMD_SEND) - { - phost->Control.setup.b.bmRequestType = USB_H2D | USB_REQ_RECIPIENT_INTERFACE - | USB_REQ_TYPE_STANDARD; - - phost->Control.setup.b.bRequest = USB_REQ_SET_INTERFACE; - phost->Control.setup.b.wValue.w = altSetting; - phost->Control.setup.b.wIndex.w = ep_num; - phost->Control.setup.b.wLength.w = 0U; - } - - return USBH_CtlReq(phost, NULL, 0U); -} - - -/** - * @brief USBH_SetFeature - * The command sets the device features (remote wakeup feature,..) - * @param pdev: Selected device - * @param itf_idx - * @retval Status - */ -USBH_StatusTypeDef USBH_SetFeature(USBH_HandleTypeDef *phost, uint8_t wValue) -{ - if (phost->RequestState == CMD_SEND) - { - phost->Control.setup.b.bmRequestType = USB_H2D | USB_REQ_RECIPIENT_DEVICE - | USB_REQ_TYPE_STANDARD; - - phost->Control.setup.b.bRequest = USB_REQ_SET_FEATURE; - phost->Control.setup.b.wValue.w = wValue; - phost->Control.setup.b.wIndex.w = 0U; - phost->Control.setup.b.wLength.w = 0U; - } - - return USBH_CtlReq(phost, NULL, 0U); -} - - -/** - * @brief USBH_ClrFeature - * This request is used to clear or disable a specific feature. - * @param phost: Host Handle - * @param ep_num: endpoint number - * @param hc_num: Host channel number - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_ClrFeature(USBH_HandleTypeDef *phost, uint8_t ep_num) -{ - if (phost->RequestState == CMD_SEND) - { - phost->Control.setup.b.bmRequestType = USB_H2D | USB_REQ_RECIPIENT_ENDPOINT - | USB_REQ_TYPE_STANDARD; - - phost->Control.setup.b.bRequest = USB_REQ_CLEAR_FEATURE; - phost->Control.setup.b.wValue.w = FEATURE_SELECTOR_ENDPOINT; - phost->Control.setup.b.wIndex.w = ep_num; - phost->Control.setup.b.wLength.w = 0U; - } - return USBH_CtlReq(phost, NULL, 0U); -} - - -/** - * @brief USBH_ParseDevDesc - * This function Parses the device descriptor - * @param dev_desc: device_descriptor destination address - * @param buf: Buffer where the source descriptor is available - * @param length: Length of the descriptor - * @retval None - */ -static void USBH_ParseDevDesc(USBH_DevDescTypeDef *dev_desc, uint8_t *buf, - uint16_t length) -{ - dev_desc->bLength = *(uint8_t *)(buf + 0); - dev_desc->bDescriptorType = *(uint8_t *)(buf + 1); - dev_desc->bcdUSB = LE16(buf + 2); - dev_desc->bDeviceClass = *(uint8_t *)(buf + 4); - dev_desc->bDeviceSubClass = *(uint8_t *)(buf + 5); - dev_desc->bDeviceProtocol = *(uint8_t *)(buf + 6); - dev_desc->bMaxPacketSize = *(uint8_t *)(buf + 7); - - /* Make sure that the max packet size is either 8, 16, 32, 64 or force it to 64 */ - switch (dev_desc->bMaxPacketSize) - { - case 8: - case 16: - case 32: - case 64: - dev_desc->bMaxPacketSize = dev_desc->bMaxPacketSize; - break; - - default: - /*set the size to 64 in case the device has answered with incorrect size */ - dev_desc->bMaxPacketSize = 64U; - break; - } - - if (length > 8U) - { - /* For 1st time after device connection, Host may issue only 8 bytes for - Device Descriptor Length */ - dev_desc->idVendor = LE16(buf + 8); - dev_desc->idProduct = LE16(buf + 10); - dev_desc->bcdDevice = LE16(buf + 12); - dev_desc->iManufacturer = *(uint8_t *)(buf + 14); - dev_desc->iProduct = *(uint8_t *)(buf + 15); - dev_desc->iSerialNumber = *(uint8_t *)(buf + 16); - dev_desc->bNumConfigurations = *(uint8_t *)(buf + 17); - } -} - - -/** - * @brief USBH_ParseCfgDesc - * This function Parses the configuration descriptor - * @param phost: USB Host handler - * @param buf: Buffer where the source descriptor is available - * @param length: Length of the descriptor - * @retval USBH statuse - */ -static USBH_StatusTypeDef USBH_ParseCfgDesc(USBH_HandleTypeDef *phost, uint8_t *buf, uint16_t length) -{ - USBH_CfgDescTypeDef *cfg_desc = &phost->device.CfgDesc; - USBH_StatusTypeDef status = USBH_OK; - USBH_InterfaceDescTypeDef *pif ; - USBH_EpDescTypeDef *pep; - USBH_DescHeader_t *pdesc = (USBH_DescHeader_t *)(void *)buf; - uint16_t ptr; - uint8_t if_ix = 0U; - uint8_t ep_ix = 0U; - - pdesc = (USBH_DescHeader_t *)(void *)buf; - - /* Parse configuration descriptor */ - cfg_desc->bLength = *(uint8_t *)(buf + 0); - cfg_desc->bDescriptorType = *(uint8_t *)(buf + 1); - cfg_desc->wTotalLength = MIN(((uint16_t) LE16(buf + 2)), ((uint16_t)USBH_MAX_SIZE_CONFIGURATION)); - cfg_desc->bNumInterfaces = *(uint8_t *)(buf + 4); - cfg_desc->bConfigurationValue = *(uint8_t *)(buf + 5); - cfg_desc->iConfiguration = *(uint8_t *)(buf + 6); - cfg_desc->bmAttributes = *(uint8_t *)(buf + 7); - cfg_desc->bMaxPower = *(uint8_t *)(buf + 8); - - /* Make sure that the Confguration descriptor's bLength is equal to USB_CONFIGURATION_DESC_SIZE */ - if (cfg_desc->bLength != USB_CONFIGURATION_DESC_SIZE) - { - cfg_desc->bLength = USB_CONFIGURATION_DESC_SIZE; - } - - if (length > USB_CONFIGURATION_DESC_SIZE) - { - ptr = USB_LEN_CFG_DESC; - pif = (USBH_InterfaceDescTypeDef *)NULL; - - while ((if_ix < USBH_MAX_NUM_INTERFACES) && (ptr < cfg_desc->wTotalLength)) - { - pdesc = USBH_GetNextDesc((uint8_t *)(void *)pdesc, &ptr); - if (pdesc->bDescriptorType == USB_DESC_TYPE_INTERFACE) - { - /* Make sure that the interface descriptor's bLength is equal to USB_INTERFACE_DESC_SIZE */ - if (pdesc->bLength != USB_INTERFACE_DESC_SIZE) - { - pdesc->bLength = USB_INTERFACE_DESC_SIZE; - } - - pif = &cfg_desc->Itf_Desc[if_ix]; - USBH_ParseInterfaceDesc(pif, (uint8_t *)(void *)pdesc); - - ep_ix = 0U; - pep = (USBH_EpDescTypeDef *)NULL; - - while ((ep_ix < pif->bNumEndpoints) && (ptr < cfg_desc->wTotalLength)) - { - pdesc = USBH_GetNextDesc((uint8_t *)(void *)pdesc, &ptr); - - if (pdesc->bDescriptorType == USB_DESC_TYPE_ENDPOINT) - { - /* Check if the endpoint is appartening to an audio streaming interface */ - if ((pif->bInterfaceClass == 0x01U) && (pif->bInterfaceSubClass == 0x02U)) - { - /* Check if it is supporting the USB AUDIO 01 class specification */ - if ((pif->bInterfaceProtocol == 0x00U) && (pdesc->bLength != 0x09U)) - { - pdesc->bLength = 0x09U; - } - } - /* Make sure that the endpoint descriptor's bLength is equal to - USB_ENDPOINT_DESC_SIZE for all other endpoints types */ - else if (pdesc->bLength != USB_ENDPOINT_DESC_SIZE) - { - pdesc->bLength = USB_ENDPOINT_DESC_SIZE; - } - else - { - /* ... */ - } - - pep = &cfg_desc->Itf_Desc[if_ix].Ep_Desc[ep_ix]; - - status = USBH_ParseEPDesc(phost, pep, (uint8_t *)(void *)pdesc); - - ep_ix++; - } - } - - /* Check if the required endpoint(s) data are parsed */ - if (ep_ix < pif->bNumEndpoints) - { - return USBH_NOT_SUPPORTED; - } - - if_ix++; - } - } - - /* Check if the required interface(s) data are parsed */ - if (if_ix < MIN(cfg_desc->bNumInterfaces, (uint8_t)USBH_MAX_NUM_INTERFACES)) - { - return USBH_NOT_SUPPORTED; - } - } - - return status; -} - - -/** - * @brief USBH_ParseInterfaceDesc - * This function Parses the interface descriptor - * @param if_descriptor : Interface descriptor destination - * @param buf: Buffer where the descriptor data is available - * @retval None - */ -static void USBH_ParseInterfaceDesc(USBH_InterfaceDescTypeDef *if_descriptor, - uint8_t *buf) -{ - if_descriptor->bLength = *(uint8_t *)(buf + 0); - if_descriptor->bDescriptorType = *(uint8_t *)(buf + 1); - if_descriptor->bInterfaceNumber = *(uint8_t *)(buf + 2); - if_descriptor->bAlternateSetting = *(uint8_t *)(buf + 3); - if_descriptor->bNumEndpoints = *(uint8_t *)(buf + 4); - if_descriptor->bInterfaceClass = *(uint8_t *)(buf + 5); - if_descriptor->bInterfaceSubClass = *(uint8_t *)(buf + 6); - if_descriptor->bInterfaceProtocol = *(uint8_t *)(buf + 7); - if_descriptor->iInterface = *(uint8_t *)(buf + 8); -} - - -/** - * @brief USBH_ParseEPDesc - * This function Parses the endpoint descriptor - * @param phost: USB Host handler - * @param ep_descriptor: Endpoint descriptor destination address - * @param buf: Buffer where the parsed descriptor stored - * @retval USBH Status - */ -static USBH_StatusTypeDef USBH_ParseEPDesc(USBH_HandleTypeDef *phost, USBH_EpDescTypeDef *ep_descriptor, - uint8_t *buf) -{ - USBH_StatusTypeDef status = USBH_OK; - ep_descriptor->bLength = *(uint8_t *)(buf + 0); - ep_descriptor->bDescriptorType = *(uint8_t *)(buf + 1); - ep_descriptor->bEndpointAddress = *(uint8_t *)(buf + 2); - ep_descriptor->bmAttributes = *(uint8_t *)(buf + 3); - ep_descriptor->wMaxPacketSize = LE16(buf + 4); - ep_descriptor->bInterval = *(uint8_t *)(buf + 6); - - /* Make sure that wMaxPacketSize is different from 0 */ - if (ep_descriptor->wMaxPacketSize == 0x00U) - { - status = USBH_NOT_SUPPORTED; - } - else if (USBH_MAX_EP_PACKET_SIZE < (uint16_t)USBH_MAX_DATA_BUFFER) - { - /* Make sure that maximum packet size (bits 0..10) does not exceed the max endpoint packet size */ - ep_descriptor->wMaxPacketSize &= ~0x7FFU; - ep_descriptor->wMaxPacketSize |= MIN((uint16_t)(LE16(buf + 4) & 0x7FFU), (uint16_t)USBH_MAX_EP_PACKET_SIZE); - - } - else if ((uint16_t)USBH_MAX_DATA_BUFFER < USBH_MAX_EP_PACKET_SIZE) - { - /* Make sure that maximum packet size (bits 0..10) does not exceed the total buffer length */ - ep_descriptor->wMaxPacketSize &= ~0x7FFU; - ep_descriptor->wMaxPacketSize |= MIN((uint16_t)(LE16(buf + 4) & 0x7FFU), (uint16_t)USBH_MAX_DATA_BUFFER); - } - else - { - /* ... */ - } - - /* For high-speed interrupt/isochronous endpoints, bInterval can vary from 1 to 16 */ - if (phost->device.speed == (uint8_t)USBH_SPEED_HIGH) - { - if (((ep_descriptor->bmAttributes & EP_TYPE_MSK) == EP_TYPE_ISOC) || - ((ep_descriptor->bmAttributes & EP_TYPE_MSK) == EP_TYPE_INTR)) - { - if ((ep_descriptor->bInterval == 0U) || (ep_descriptor->bInterval > 0x10U)) - { - status = USBH_NOT_SUPPORTED; - } - } - } - else - { - /* For full-speed isochronous endpoints, the value of bInterval must be in the range from 1 to 16.*/ - if ((ep_descriptor->bmAttributes & EP_TYPE_MSK) == EP_TYPE_ISOC) - { - if ((ep_descriptor->bInterval == 0U) || (ep_descriptor->bInterval > 0x10U)) - { - status = USBH_NOT_SUPPORTED; - } - } - /* For full-/low-speed interrupt endpoints, the value of bInterval may be from 1 to 255.*/ - else if ((ep_descriptor->bmAttributes & EP_TYPE_MSK) == EP_TYPE_INTR) - { - if (ep_descriptor->bInterval == 0U) - { - status = USBH_NOT_SUPPORTED; - } - } - else - { - /* ... */ - } - } - - return status; -} - - -/** - * @brief USBH_ParseStringDesc - * This function Parses the string descriptor - * @param psrc: Source pointer containing the descriptor data - * @param pdest: Destination address pointer - * @param length: Length of the descriptor - * @retval None - */ -static void USBH_ParseStringDesc(uint8_t *psrc, uint8_t *pdest, uint16_t length) -{ - uint16_t strlength; - uint16_t idx; - - /* The UNICODE string descriptor is not NULL-terminated. The string length is - computed by subtracting two from the value of the first byte of the descriptor. - */ - - /* Check which is lower size, the Size of string or the length of bytes read - from the device */ - - if (psrc[1] == USB_DESC_TYPE_STRING) - { - /* Make sure the Descriptor is String Type */ - - /* psrc[0] contains Size of Descriptor, subtract 2 to get the length of string */ - strlength = ((((uint16_t)psrc[0] - 2U) <= length) ? ((uint16_t)psrc[0] - 2U) : length); - - /* Adjust the offset ignoring the String Len and Descriptor type */ - psrc += 2U; - - for (idx = 0U; idx < strlength; idx += 2U) - { - /* Copy Only the string and ignore the UNICODE ID, hence add the src */ - *pdest = psrc[idx]; - pdest++; - } - *pdest = 0U; /* mark end of string */ - } -} - - -/** - * @brief USBH_GetNextDesc - * This function return the next descriptor header - * @param buf: Buffer where the cfg descriptor is available - * @param ptr: data pointer inside the cfg descriptor - * @retval next header - */ -USBH_DescHeader_t *USBH_GetNextDesc(uint8_t *pbuf, uint16_t *ptr) -{ - USBH_DescHeader_t *pnext; - - *ptr += ((USBH_DescHeader_t *)(void *)pbuf)->bLength; - pnext = (USBH_DescHeader_t *)(void *)((uint8_t *)(void *)pbuf + \ - ((USBH_DescHeader_t *)(void *)pbuf)->bLength); - - return (pnext); -} - - -/** - * @brief USBH_CtlReq - * USBH_CtlReq sends a control request and provide the status after - * completion of the request - * @param phost: Host Handle - * @param req: Setup Request Structure - * @param buff: data buffer address to store the response - * @param length: length of the response - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_CtlReq(USBH_HandleTypeDef *phost, uint8_t *buff, - uint16_t length) -{ - USBH_StatusTypeDef status; - status = USBH_BUSY; - - switch (phost->RequestState) - { - case CMD_SEND: - /* Start a SETUP transfer */ - phost->Control.buff = buff; - phost->Control.length = length; - phost->Control.state = CTRL_SETUP; - phost->RequestState = CMD_WAIT; - status = USBH_BUSY; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - break; - - case CMD_WAIT: - status = USBH_HandleControl(phost); - if ((status == USBH_OK) || (status == USBH_NOT_SUPPORTED)) - { - /* Transaction completed, move control state to idle */ - phost->RequestState = CMD_SEND; - phost->Control.state = CTRL_IDLE; - } - else if (status == USBH_FAIL) - { - /* Failure Mode */ - phost->RequestState = CMD_SEND; - } - else - { - /* .. */ - } -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - break; - - default: - break; - } - return status; -} - - -/** - * @brief USBH_HandleControl - * Handles the USB control transfer state machine - * @param phost: Host Handle - * @retval USBH Status - */ -static USBH_StatusTypeDef USBH_HandleControl(USBH_HandleTypeDef *phost) -{ - uint8_t direction; - USBH_StatusTypeDef status = USBH_BUSY; - USBH_URBStateTypeDef URB_Status = USBH_URB_IDLE; - - switch (phost->Control.state) - { - case CTRL_SETUP: - /* send a SETUP packet */ - (void)USBH_CtlSendSetup(phost, (uint8_t *)(void *)phost->Control.setup.d8, - phost->Control.pipe_out); - - phost->Control.state = CTRL_SETUP_WAIT; - break; - - case CTRL_SETUP_WAIT: - - URB_Status = USBH_LL_GetURBState(phost, phost->Control.pipe_out); - /* case SETUP packet sent successfully */ - if (URB_Status == USBH_URB_DONE) - { - direction = (phost->Control.setup.b.bmRequestType & USB_REQ_DIR_MASK); - - /* check if there is a data stage */ - if (phost->Control.setup.b.wLength.w != 0U) - { - if (direction == USB_D2H) - { - /* Data Direction is IN */ - phost->Control.state = CTRL_DATA_IN; - } - else - { - /* Data Direction is OUT */ - phost->Control.state = CTRL_DATA_OUT; - } - } - /* No DATA stage */ - else - { - /* If there is No Data Transfer Stage */ - if (direction == USB_D2H) - { - /* Data Direction is IN */ - phost->Control.state = CTRL_STATUS_OUT; - } - else - { - /* Data Direction is OUT */ - phost->Control.state = CTRL_STATUS_IN; - } - } - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - else - { - if ((URB_Status == USBH_URB_ERROR) || (URB_Status == USBH_URB_NOTREADY)) - { - phost->Control.state = CTRL_ERROR; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - } - break; - - case CTRL_DATA_IN: - /* Issue an IN token */ - phost->Control.timer = (uint16_t)phost->Timer; - (void)USBH_CtlReceiveData(phost, phost->Control.buff, - phost->Control.length, phost->Control.pipe_in); - - phost->Control.state = CTRL_DATA_IN_WAIT; - break; - - case CTRL_DATA_IN_WAIT: - - URB_Status = USBH_LL_GetURBState(phost, phost->Control.pipe_in); - - /* check is DATA packet transferred successfully */ - if (URB_Status == USBH_URB_DONE) - { - phost->Control.state = CTRL_STATUS_OUT; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - - /* manage error cases*/ - if (URB_Status == USBH_URB_STALL) - { - /* In stall case, return to previous machine state*/ - status = USBH_NOT_SUPPORTED; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - else - { - if (URB_Status == USBH_URB_ERROR) - { - /* Device error */ - phost->Control.state = CTRL_ERROR; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - } - break; - - case CTRL_DATA_OUT: - - (void)USBH_CtlSendData(phost, phost->Control.buff, phost->Control.length, - phost->Control.pipe_out, 1U); - - phost->Control.timer = (uint16_t)phost->Timer; - phost->Control.state = CTRL_DATA_OUT_WAIT; - break; - - case CTRL_DATA_OUT_WAIT: - - URB_Status = USBH_LL_GetURBState(phost, phost->Control.pipe_out); - - if (URB_Status == USBH_URB_DONE) - { - /* If the Setup Pkt is sent successful, then change the state */ - phost->Control.state = CTRL_STATUS_IN; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - - /* handle error cases */ - else if (URB_Status == USBH_URB_STALL) - { - /* In stall case, return to previous machine state*/ - phost->Control.state = CTRL_STALLED; - status = USBH_NOT_SUPPORTED; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - else if (URB_Status == USBH_URB_NOTREADY) - { - /* Nack received from device */ - phost->Control.state = CTRL_DATA_OUT; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - else - { - if (URB_Status == USBH_URB_ERROR) - { - /* device error */ - phost->Control.state = CTRL_ERROR; - status = USBH_FAIL; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - } - break; - - case CTRL_STATUS_IN: - /* Send 0 bytes out packet */ - (void)USBH_CtlReceiveData(phost, NULL, 0U, phost->Control.pipe_in); - - phost->Control.timer = (uint16_t)phost->Timer; - phost->Control.state = CTRL_STATUS_IN_WAIT; - - break; - - case CTRL_STATUS_IN_WAIT: - - URB_Status = USBH_LL_GetURBState(phost, phost->Control.pipe_in); - - if (URB_Status == USBH_URB_DONE) - { - /* Control transfers completed, Exit the State Machine */ - phost->Control.state = CTRL_COMPLETE; - status = USBH_OK; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - else if (URB_Status == USBH_URB_ERROR) - { - phost->Control.state = CTRL_ERROR; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - else - { - if (URB_Status == USBH_URB_STALL) - { - /* Control transfers completed, Exit the State Machine */ - status = USBH_NOT_SUPPORTED; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - } - break; - - case CTRL_STATUS_OUT: - (void)USBH_CtlSendData(phost, NULL, 0U, phost->Control.pipe_out, 1U); - - phost->Control.timer = (uint16_t)phost->Timer; - phost->Control.state = CTRL_STATUS_OUT_WAIT; - break; - - case CTRL_STATUS_OUT_WAIT: - URB_Status = USBH_LL_GetURBState(phost, phost->Control.pipe_out); - if (URB_Status == USBH_URB_DONE) - { - status = USBH_OK; - phost->Control.state = CTRL_COMPLETE; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - else if (URB_Status == USBH_URB_NOTREADY) - { - phost->Control.state = CTRL_STATUS_OUT; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - else - { - if (URB_Status == USBH_URB_ERROR) - { - phost->Control.state = CTRL_ERROR; - -#if (USBH_USE_OS == 1U) - phost->os_msg = (uint32_t)USBH_CONTROL_EVENT; -#if (osCMSIS < 0x20000U) - (void)osMessagePut(phost->os_event, phost->os_msg, 0U); -#else - (void)osMessageQueuePut(phost->os_event, &phost->os_msg, 0U, 0U); -#endif -#endif - } - } - break; - - case CTRL_ERROR: - /* - After a halt condition is encountered or an error is detected by the - host, a control endpoint is allowed to recover by accepting the next Setup - PID; i.e., recovery actions via some other pipe are not required for control - endpoints. For the Default Control Pipe, a device reset will ultimately be - required to clear the halt or error condition if the next Setup PID is not - accepted. - */ - if (++phost->Control.errorcount <= USBH_MAX_ERROR_COUNT) - { - /* Do the transmission again, starting from SETUP Packet */ - phost->Control.state = CTRL_SETUP; - phost->RequestState = CMD_SEND; - } - else - { - phost->pUser(phost, HOST_USER_UNRECOVERED_ERROR); - phost->Control.errorcount = 0U; - USBH_ErrLog("Control error: Device not responding"); - - /* Free control pipes */ - (void)USBH_FreePipe(phost, phost->Control.pipe_out); - (void)USBH_FreePipe(phost, phost->Control.pipe_in); - - phost->gState = HOST_IDLE; - status = USBH_FAIL; - } - break; - - default: - break; - } - - return status; -} - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ - - - - diff --git a/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.c b/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.c deleted file mode 100644 index 00131f3..0000000 --- a/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_ioreq.c +++ /dev/null @@ -1,350 +0,0 @@ -/** - ****************************************************************************** - * @file usbh_ioreq.c - * @author MCD Application Team - * @brief This file handles the issuing of the USB transactions - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2015 STMicroelectronics. - * All rights reserved.

- * - * 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 - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "usbh_ioreq.h" - -/** @addtogroup USBH_LIB - * @{ - */ - -/** @addtogroup USBH_LIB_CORE - * @{ - */ - -/** @defgroup USBH_IOREQ - * @brief This file handles the standard protocol processing (USB v2.0) - * @{ - */ - - -/** @defgroup USBH_IOREQ_Private_Defines - * @{ - */ - -/** - * @} - */ - - -/** @defgroup USBH_IOREQ_Private_TypesDefinitions - * @{ - */ -/** - * @} - */ - - - -/** @defgroup USBH_IOREQ_Private_Macros - * @{ - */ -/** - * @} - */ - - -/** @defgroup USBH_IOREQ_Private_Variables - * @{ - */ -/** - * @} - */ -/** @defgroup USBH_IOREQ_Private_FunctionPrototypes - * @{ - */ - -/** - * @} - */ - - -/** @defgroup USBH_IOREQ_Private_Functions - * @{ - */ - - - -/** - * @brief USBH_CtlSendSetup - * Sends the Setup Packet to the Device - * @param phost: Host Handle - * @param buff: Buffer pointer from which the Data will be send to Device - * @param pipe_num: Pipe Number - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_CtlSendSetup(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint8_t pipe_num) -{ - - (void)USBH_LL_SubmitURB(phost, /* Driver handle */ - pipe_num, /* Pipe index */ - 0U, /* Direction : OUT */ - USBH_EP_CONTROL, /* EP type */ - USBH_PID_SETUP, /* Type setup */ - buff, /* data buffer */ - USBH_SETUP_PKT_SIZE, /* data length */ - 0U); - return USBH_OK; -} - - -/** - * @brief USBH_CtlSendData - * Sends a data Packet to the Device - * @param phost: Host Handle - * @param buff: Buffer pointer from which the Data will be sent to Device - * @param length: Length of the data to be sent - * @param pipe_num: Pipe Number - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_CtlSendData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint16_t length, - uint8_t pipe_num, - uint8_t do_ping) -{ - if (phost->device.speed != USBH_SPEED_HIGH) - { - do_ping = 0U; - } - - (void)USBH_LL_SubmitURB(phost, /* Driver handle */ - pipe_num, /* Pipe index */ - 0U, /* Direction : OUT */ - USBH_EP_CONTROL, /* EP type */ - USBH_PID_DATA, /* Type Data */ - buff, /* data buffer */ - length, /* data length */ - do_ping); /* do ping (HS Only)*/ - - return USBH_OK; -} - - -/** - * @brief USBH_CtlReceiveData - * Receives the Device Response to the Setup Packet - * @param phost: Host Handle - * @param buff: Buffer pointer in which the response needs to be copied - * @param length: Length of the data to be received - * @param pipe_num: Pipe Number - * @retval USBH Status. - */ -USBH_StatusTypeDef USBH_CtlReceiveData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint16_t length, - uint8_t pipe_num) -{ - (void)USBH_LL_SubmitURB(phost, /* Driver handle */ - pipe_num, /* Pipe index */ - 1U, /* Direction : IN */ - USBH_EP_CONTROL, /* EP type */ - USBH_PID_DATA, /* Type Data */ - buff, /* data buffer */ - length, /* data length */ - 0U); - return USBH_OK; - -} - - -/** - * @brief USBH_BulkSendData - * Sends the Bulk Packet to the device - * @param phost: Host Handle - * @param buff: Buffer pointer from which the Data will be sent to Device - * @param length: Length of the data to be sent - * @param pipe_num: Pipe Number - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_BulkSendData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint16_t length, - uint8_t pipe_num, - uint8_t do_ping) -{ - if (phost->device.speed != USBH_SPEED_HIGH) - { - do_ping = 0U; - } - - (void)USBH_LL_SubmitURB(phost, /* Driver handle */ - pipe_num, /* Pipe index */ - 0U, /* Direction : IN */ - USBH_EP_BULK, /* EP type */ - USBH_PID_DATA, /* Type Data */ - buff, /* data buffer */ - length, /* data length */ - do_ping); /* do ping (HS Only)*/ - return USBH_OK; -} - - -/** - * @brief USBH_BulkReceiveData - * Receives IN bulk packet from device - * @param phost: Host Handle - * @param buff: Buffer pointer in which the received data packet to be copied - * @param length: Length of the data to be received - * @param pipe_num: Pipe Number - * @retval USBH Status. - */ -USBH_StatusTypeDef USBH_BulkReceiveData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint16_t length, - uint8_t pipe_num) -{ - (void)USBH_LL_SubmitURB(phost, /* Driver handle */ - pipe_num, /* Pipe index */ - 1U, /* Direction : IN */ - USBH_EP_BULK, /* EP type */ - USBH_PID_DATA, /* Type Data */ - buff, /* data buffer */ - length, /* data length */ - 0U); - return USBH_OK; -} - - -/** - * @brief USBH_InterruptReceiveData - * Receives the Device Response to the Interrupt IN token - * @param phost: Host Handle - * @param buff: Buffer pointer in which the response needs to be copied - * @param length: Length of the data to be received - * @param pipe_num: Pipe Number - * @retval USBH Status. - */ -USBH_StatusTypeDef USBH_InterruptReceiveData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint8_t length, - uint8_t pipe_num) -{ - (void)USBH_LL_SubmitURB(phost, /* Driver handle */ - pipe_num, /* Pipe index */ - 1U, /* Direction : IN */ - USBH_EP_INTERRUPT, /* EP type */ - USBH_PID_DATA, /* Type Data */ - buff, /* data buffer */ - (uint16_t)length, /* data length */ - 0U); - - return USBH_OK; -} - -/** - * @brief USBH_InterruptSendData - * Sends the data on Interrupt OUT Endpoint - * @param phost: Host Handle - * @param buff: Buffer pointer from where the data needs to be copied - * @param length: Length of the data to be sent - * @param pipe_num: Pipe Number - * @retval USBH Status. - */ -USBH_StatusTypeDef USBH_InterruptSendData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint8_t length, - uint8_t pipe_num) -{ - (void)USBH_LL_SubmitURB(phost, /* Driver handle */ - pipe_num, /* Pipe index */ - 0U, /* Direction : OUT */ - USBH_EP_INTERRUPT, /* EP type */ - USBH_PID_DATA, /* Type Data */ - buff, /* data buffer */ - (uint16_t)length, /* data length */ - 0U); - - return USBH_OK; -} - -/** - * @brief USBH_IsocReceiveData - * Receives the Device Response to the Isochronous IN token - * @param phost: Host Handle - * @param buff: Buffer pointer in which the response needs to be copied - * @param length: Length of the data to be received - * @param pipe_num: Pipe Number - * @retval USBH Status. - */ -USBH_StatusTypeDef USBH_IsocReceiveData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint32_t length, - uint8_t pipe_num) -{ - (void)USBH_LL_SubmitURB(phost, /* Driver handle */ - pipe_num, /* Pipe index */ - 1U, /* Direction : IN */ - USBH_EP_ISO, /* EP type */ - USBH_PID_DATA, /* Type Data */ - buff, /* data buffer */ - (uint16_t)length, /* data length */ - 0U); - - - return USBH_OK; -} - -/** - * @brief USBH_IsocSendData - * Sends the data on Isochronous OUT Endpoint - * @param phost: Host Handle - * @param buff: Buffer pointer from where the data needs to be copied - * @param length: Length of the data to be sent - * @param pipe_num: Pipe Number - * @retval USBH Status. - */ -USBH_StatusTypeDef USBH_IsocSendData(USBH_HandleTypeDef *phost, - uint8_t *buff, - uint32_t length, - uint8_t pipe_num) -{ - (void)USBH_LL_SubmitURB(phost, /* Driver handle */ - pipe_num, /* Pipe index */ - 0U, /* Direction : OUT */ - USBH_EP_ISO, /* EP type */ - USBH_PID_DATA, /* Type Data */ - buff, /* data buffer */ - (uint16_t)length, /* data length */ - 0U); - - return USBH_OK; -} -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ - - - diff --git a/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.c b/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.c deleted file mode 100644 index 091473f..0000000 --- a/Middlewares/ST/STM32_USB_Host_Library/Core/Src/usbh_pipes.c +++ /dev/null @@ -1,188 +0,0 @@ -/** - ****************************************************************************** - * @file usbh_pipes.c - * @author MCD Application Team - * @brief This file implements functions for opening and closing Pipes - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2015 STMicroelectronics. - * All rights reserved.

- * - * 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 - * - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "usbh_pipes.h" - -/** @addtogroup USBH_LIB - * @{ - */ - -/** @addtogroup USBH_LIB_CORE - * @{ - */ - -/** @defgroup USBH_PIPES - * @brief This file includes opening and closing Pipes - * @{ - */ - -/** @defgroup USBH_PIPES_Private_Defines - * @{ - */ -/** - * @} - */ - -/** @defgroup USBH_PIPES_Private_TypesDefinitions - * @{ - */ -/** - * @} - */ - - -/** @defgroup USBH_PIPES_Private_Macros - * @{ - */ -/** - * @} - */ - - -/** @defgroup USBH_PIPES_Private_Variables - * @{ - */ - -/** - * @} - */ - - -/** @defgroup USBH_PIPES_Private_Functions - * @{ - */ -static uint16_t USBH_GetFreePipe(USBH_HandleTypeDef *phost); - - -/** - * @brief USBH_Open_Pipe - * Open a pipe - * @param phost: Host Handle - * @param pipe_num: Pipe Number - * @param dev_address: USB Device address allocated to attached device - * @param speed : USB device speed (Full/Low) - * @param ep_type: end point type (Bulk/int/ctl) - * @param mps: max pkt size - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_OpenPipe(USBH_HandleTypeDef *phost, uint8_t pipe_num, - uint8_t epnum, uint8_t dev_address, - uint8_t speed, uint8_t ep_type, uint16_t mps) -{ - (void)USBH_LL_OpenPipe(phost, pipe_num, epnum, dev_address, speed, ep_type, mps); - - return USBH_OK; -} - - -/** - * @brief USBH_ClosePipe - * Close a pipe - * @param phost: Host Handle - * @param pipe_num: Pipe Number - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_ClosePipe(USBH_HandleTypeDef *phost, uint8_t pipe_num) -{ - (void)USBH_LL_ClosePipe(phost, pipe_num); - - return USBH_OK; -} - - -/** - * @brief USBH_Alloc_Pipe - * Allocate a new Pipe - * @param phost: Host Handle - * @param ep_addr: End point for which the Pipe to be allocated - * @retval Pipe number - */ -uint8_t USBH_AllocPipe(USBH_HandleTypeDef *phost, uint8_t ep_addr) -{ - uint16_t pipe; - - pipe = USBH_GetFreePipe(phost); - - if (pipe != 0xFFFFU) - { - phost->Pipes[pipe & 0xFU] = (uint32_t)(0x8000U | ep_addr); - } - - return (uint8_t)pipe; -} - - -/** - * @brief USBH_Free_Pipe - * Free the USB Pipe - * @param phost: Host Handle - * @param idx: Pipe number to be freed - * @retval USBH Status - */ -USBH_StatusTypeDef USBH_FreePipe(USBH_HandleTypeDef *phost, uint8_t idx) -{ - if (idx < USBH_MAX_PIPES_NBR) - { - phost->Pipes[idx] &= 0x7FFFU; - } - - return USBH_OK; -} - - -/** - * @brief USBH_GetFreePipe - * @param phost: Host Handle - * Get a free Pipe number for allocation to a device endpoint - * @retval idx: Free Pipe number - */ -static uint16_t USBH_GetFreePipe(USBH_HandleTypeDef *phost) -{ - uint8_t idx = 0U; - - for (idx = 0U ; idx < USBH_MAX_PIPES_NBR ; idx++) - { - if ((phost->Pipes[idx] & 0x8000U) == 0U) - { - return (uint16_t)idx; - } - } - - return 0xFFFFU; -} -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ - - diff --git a/Middlewares/eez b/Middlewares/eez index 2b21d11..6aaa013 160000 --- a/Middlewares/eez +++ b/Middlewares/eez @@ -1 +1 @@ -Subproject commit 2b21d11c561fcc5d7ca82a6fb21180c10b0f016b +Subproject commit 6aaa013284b2712761200fffd02de09a4610e808 diff --git a/Src/CMakeLists.txt b/Src/CMakeLists.txt new file mode 100644 index 0000000..f8314dd --- /dev/null +++ b/Src/CMakeLists.txt @@ -0,0 +1,209 @@ +cmake_minimum_required(VERSION 3.10) + +project(eez-flow-template-stm32f469i-disco) + +set (CMAKE_CXX_STANDARD 17) + +if(MSVC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /wd4100 /wd4214 /wd4200 /wd4244 /wd4456 /wd4457 /wd4458 /wd4459 /wd4245 /wd4389 /wd4706 /wd4611 /wd4310") +endif() + +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") + +if(${CMAKE_SYSTEM_NAME} STREQUAL "Emscripten") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-const-variable -Wno-nested-anon-types -Wno-dollar-in-identifier-extension -O2 --no-entry") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_CXX_FLAGS} -s DEMANGLE_SUPPORT=1 -s FORCE_FILESYSTEM=1 -s ALLOW_MEMORY_GROWTH=1 -s INITIAL_MEMORY=83886080 -s LLD_REPORT_UNDEFINED -s ASSERTIONS=1 -s EXPORTED_RUNTIME_METHODS=allocateUTF8,AsciiToString,UTF8ToString --bind -lidbfs.js") + #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --preload-file ../../images/eez.png") + add_definitions(-DEMCC_DEBUG) +endif() + +add_definitions(-DSKIP_TOUCH_CALIBRATION) + +add_definitions(-DFIRMWARE_VERSION_MAJOR=0) +add_definitions(-DFIRMWARE_VERSION_MINOR=1) + +if(${CMAKE_SYSTEM_NAME} STREQUAL "Emscripten") +else() + set(SDL2_BUILDING_LIBRARY 1) + find_package(SDL2 REQUIRED) + find_package(SDL2_image REQUIRED) + include_directories(SYSTEM ${SDL2_INCLUDE_DIRS}) + include_directories(SYSTEM ${SDL2IMAGE_INCLUDE_DIR}) +endif() + +if (UNIX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -pedantic") +endif (UNIX) + +add_definitions(-DDEBUG) + +add_definitions(-DEEZ_PLATFORM_SIMULATOR) + +if(WIN32) + ENABLE_LANGUAGE(RC) + add_definitions(-D_CRT_SECURE_NO_WARNINGS) + add_definitions(-DEEZ_PLATFORM_SIMULATOR_WIN32) +endif() + +if (UNIX) + add_definitions(-DEEZ_PLATFORM_SIMULATOR_UNIX) +endif() + +if(${CMAKE_SYSTEM_NAME} STREQUAL "Emscripten") + add_definitions(-DEEZ_PLATFORM_SIMULATOR_EMSCRIPTEN) +endif() + +include_directories( + ../Middlewares + ../Middlewares/eez/libs/agg + ../Middlewares/eez/libs/libscpi/inc + ../Middlewares/eez/platform/simulator + ../Src/scpi + ../Src/conf +) + +set(src_files) +set(header_files) + + +################################################################################ +# EEZ Framework files +file(GLOB_RECURSE src_eez + ../Middlewares/eez/*.cpp + ../Middlewares/eez/*.c +) +file(GLOB_RECURSE header_eez + ../Middlewares/eez/*.h +) + +# exclude STM32 platform specific files +set (EXCLUDE_DIR "../Middlewares/eez/platform/stm32") +foreach (TMP_PATH ${src_eez}) + string (FIND ${TMP_PATH} ${EXCLUDE_DIR} EXCLUDE_DIR_FOUND) + if (NOT ${EXCLUDE_DIR_FOUND} EQUAL -1) + list (REMOVE_ITEM src_eez ${TMP_PATH}) + endif () +endforeach(TMP_PATH) +foreach (TMP_PATH ${header_eez}) + string (FIND ${TMP_PATH} ${EXCLUDE_DIR} EXCLUDE_DIR_FOUND) + if (NOT ${EXCLUDE_DIR_FOUND} EQUAL -1) + list (REMOVE_ITEM header_eez ${TMP_PATH}) + endif () +endforeach(TMP_PATH) + +list (APPEND src_files ${src_eez}) +list (APPEND header_files ${header_eez}) + +source_group(TREE "../../../Middlewares/eez" PREFIX "eez" FILES ${src_eez} ${header_eez}) + +if(MSVC) + set(libscpi_src_files ${src_files}) + list(FILTER libscpi_src_files INCLUDE REGEX "${CMAKE_CURRENT_SOURCE_DIR}/../Middlewares/eez/libs/libscpi") + set_source_files_properties(${libscpi_src_files} PROPERTIES COMPILE_FLAGS /W0) +endif() + +################################################################################ + + +################################################################################ +file(GLOB_RECURSE src_custom + *.cpp + *.c +) +file(GLOB_RECURSE header_custom + *.h +) + +# exclude STM32 platform specific files +set (EXCLUDE_DIR "build") +foreach (TMP_PATH ${src_custom}) + string (FIND ${TMP_PATH} ${EXCLUDE_DIR} EXCLUDE_DIR_FOUND) + if (NOT ${EXCLUDE_DIR_FOUND} EQUAL -1) + list (REMOVE_ITEM src_custom ${TMP_PATH}) + endif () +endforeach(TMP_PATH) +foreach (TMP_PATH ${header_custom}) + string (FIND ${TMP_PATH} ${EXCLUDE_DIR} EXCLUDE_DIR_FOUND) + if (NOT ${EXCLUDE_DIR_FOUND} EQUAL -1) + list (REMOVE_ITEM header_custom ${TMP_PATH}) + endif () +endforeach(TMP_PATH) + +list (APPEND src_files ${src_custom}) +list (APPEND header_files ${header_custom}) + +source_group(TREE "../../../Src" PREFIX "Src" FILES ${src_custom} ${header_custom}) + +################################################################################ + + +if(WIN32) + set(src_win32_specific + ../Src/platform/simulator/win32/icon.rc + ) + list (APPEND src_files ${src_win32_specific}) + source_group("win32" FILES ${src_win32_specific}) + + set(SOURCES Src/platform/simulator/win32/icon.rc ${src_files}) +endif() + +add_executable(eez-flow-template-stm32f469i-disco ${src_files} ${header_files}) + +if(MSVC) + target_compile_options(eez-flow-template-stm32f469i-disco PRIVATE "/MP") +endif() + +if (UNIX AND NOT(${CMAKE_SYSTEM_NAME} STREQUAL "Emscripten")) + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_package(Threads REQUIRED) + target_link_libraries(eez-flow-template-stm32f469i-disco Threads::Threads bsd) +endif () + +target_link_libraries(eez-flow-template-stm32f469i-disco ${SDL2_LIBRARIES} ${SDL2_IMAGE_LIBRARIES}) + +if(WIN32) + target_link_libraries(eez-flow-template-stm32f469i-disco wsock32 ws2_32) + + add_custom_command(TARGET eez-flow-template-stm32f469i-disco POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${PROJECT_SOURCE_DIR}/../../SDL2-2.0.14/lib/x86/SDL2.dll" + $) + + add_custom_command(TARGET eez-flow-template-stm32f469i-disco POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${PROJECT_SOURCE_DIR}/../../SDL2_image-2.0.4/lib/x86/libjpeg-9.dll" + $) + + add_custom_command(TARGET eez-flow-template-stm32f469i-disco POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${PROJECT_SOURCE_DIR}/../../SDL2_image-2.0.4/lib/x86/libpng16-16.dll" + $) + + add_custom_command(TARGET eez-flow-template-stm32f469i-disco POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${PROJECT_SOURCE_DIR}/../../SDL2_image-2.0.4/lib/x86/libtiff-5.dll" + $) + + add_custom_command(TARGET eez-flow-template-stm32f469i-disco POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${PROJECT_SOURCE_DIR}/../../SDL2_image-2.0.4/lib/x86/libwebp-7.dll" + $) + + add_custom_command(TARGET eez-flow-template-stm32f469i-disco POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${PROJECT_SOURCE_DIR}/../../SDL2_image-2.0.4/lib/x86/SDL2_image.dll" + $) + + add_custom_command(TARGET eez-flow-template-stm32f469i-disco POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${PROJECT_SOURCE_DIR}/../../SDL2_image-2.0.4/lib/x86/zlib1.dll" + $) + +endif() + +if(${CMAKE_SYSTEM_NAME} STREQUAL "Emscripten") + add_custom_command(TARGET eez-flow-template-stm32f469i-disco POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + "${PROJECT_SOURCE_DIR}/platform/simulator/emscripten" + $) +endif() diff --git a/Src/cmake.bat b/Src/cmake.bat new file mode 100644 index 0000000..82dfe18 --- /dev/null +++ b/Src/cmake.bat @@ -0,0 +1,11 @@ +set SDL2DIR=..\..\SDL2-2.0.14 +set SDL2IMAGEDIR=..\..\SDL2_image-2.0.4 + +if not exist "build" mkdir "build" +if not exist "build\win32" mkdir "build\win32" + +cd build\win32 + +cmake -G "Visual Studio 15 2017" ..\.. + +cd ..\.. \ No newline at end of file diff --git a/Src/cmake/Emscripten.cmake b/Src/cmake/Emscripten.cmake new file mode 100644 index 0000000..f484ed9 --- /dev/null +++ b/Src/cmake/Emscripten.cmake @@ -0,0 +1,361 @@ +# This file is a 'toolchain description file' for CMake. +# It teaches CMake about the Emscripten compiler, so that CMake can generate makefiles +# from CMakeLists.txt that invoke emcc. + +# At the moment this required minimum version is not exact (i.e. we do not know of a feature that needs CMake 3.0.0 specifically) +# It is possible that CMake 3.0.0 is too old and will not actually work. If you do find such a case, please report it at Emscripten +# bug tracker to revise the minimum requirement. See also https://github.com/juj/emsdk/issues/108 +cmake_minimum_required(VERSION 3.0.0) + +# To use this toolchain file with CMake, invoke CMake with the following command line parameters +# cmake -DCMAKE_TOOLCHAIN_FILE=/cmake/Modules/Platform/Emscripten.cmake +# -DCMAKE_BUILD_TYPE= +# -G "Unix Makefiles" (Linux and OSX) +# -G "MinGW Makefiles" (Windows) +# # Note, pass in here ONLY the path to the file, not the filename 'CMakeLists.txt' itself. + +# After that, build the generated Makefile with the command 'make'. On Windows, you may download and use 'mingw32-make' instead. + +# The following variable describes the target OS we are building to. +set(CMAKE_SYSTEM_NAME Emscripten) +set(CMAKE_SYSTEM_VERSION 1) + +set(CMAKE_CROSSCOMPILING TRUE) + +# Advertise Emscripten as a 32-bit platform (as opposed to CMAKE_SYSTEM_PROCESSOR=x86_64 for 64-bit platform), +# since some projects (e.g. OpenCV) use this to detect bitness. +set(CMAKE_SYSTEM_PROCESSOR x86) + +# Tell CMake how it should instruct the compiler to generate multiple versions of an outputted .so library: e.g. "libfoo.so, libfoo.so.1, libfoo.so.1.4" etc. +# This feature is activated if a shared library project has the property SOVERSION defined. +set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,") + +# In CMake, CMAKE_HOST_WIN32 is set when we are cross-compiling from Win32 to Emscripten: http://www.cmake.org/cmake/help/v2.8.12/cmake.html#variable:CMAKE_HOST_WIN32 +# The variable WIN32 is set only when the target arch that will run the code will be WIN32, so unset WIN32 when cross-compiling. +set(WIN32) + +# The same logic as above applies for APPLE and CMAKE_HOST_APPLE, so unset APPLE. +set(APPLE) + +# And for UNIX and CMAKE_HOST_UNIX. However, Emscripten is often able to mimic being a Linux/Unix system, in which case a lot of existing CMakeLists.txt files can be configured for Emscripten while assuming UNIX build, so this is left enabled. +set(UNIX 1) + +# Do a no-op access on the CMAKE_TOOLCHAIN_FILE variable so that CMake will not issue a warning on it being unused. +if (CMAKE_TOOLCHAIN_FILE) +endif() + +# In order for check_function_exists() detection to work, we must signal it to pass an additional flag, which causes the compilation +# to abort if linking results in any undefined symbols. The CMake detection mechanism depends on the undefined symbol error to be raised. +# Disable wasm in cmake checks so that (1) we do not depend on wasm support just for configuration (perhaps the user does not intend +# to build to wasm; using asm.js only depends on js which we need anyhow), and (2) we don't have issues with a separate .wasm file +# on the side, async startup, etc.. +set(CMAKE_REQUIRED_FLAGS "-s WASM=0") + +# Locate where the Emscripten compiler resides in relative to this toolchain file. +if ("${EMSCRIPTEN_ROOT_PATH}" STREQUAL "") + get_filename_component(GUESS_EMSCRIPTEN_ROOT_PATH "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE) + if (EXISTS "${GUESS_EMSCRIPTEN_ROOT_PATH}/emranlib") + set(EMSCRIPTEN_ROOT_PATH "${GUESS_EMSCRIPTEN_ROOT_PATH}") + endif() +endif() + +# If not found by above search, locate using the EMSCRIPTEN environment variable. +if ("${EMSCRIPTEN_ROOT_PATH}" STREQUAL "") + set(EMSCRIPTEN_ROOT_PATH "$ENV{EMSCRIPTEN}") +endif() + +# Abort if not found. +if ("${EMSCRIPTEN_ROOT_PATH}" STREQUAL "") + message(FATAL_ERROR "Could not locate the Emscripten compiler toolchain directory! Either set the EMSCRIPTEN environment variable, or pass -DEMSCRIPTEN_ROOT_PATH=xxx to CMake to explicitly specify the location of the compiler!") +endif() + +# Normalize, convert Windows backslashes to forward slashes or CMake will crash. +get_filename_component(EMSCRIPTEN_ROOT_PATH "${EMSCRIPTEN_ROOT_PATH}" ABSOLUTE) + +list(APPEND CMAKE_MODULE_PATH "${EMSCRIPTEN_ROOT_PATH}/cmake/Modules") + +list(APPEND CMAKE_FIND_ROOT_PATH "${EMSCRIPTEN_ROOT_PATH}/system") + +if (CMAKE_HOST_WIN32) + set(EMCC_SUFFIX ".bat") +else() + set(EMCC_SUFFIX "") +endif() + +# Specify the compilers to use for C and C++ +if ("${CMAKE_C_COMPILER}" STREQUAL "") + set(CMAKE_C_COMPILER "${EMSCRIPTEN_ROOT_PATH}/emcc${EMCC_SUFFIX}") +endif() +if ("${CMAKE_CXX_COMPILER}" STREQUAL "") + set(CMAKE_CXX_COMPILER "${EMSCRIPTEN_ROOT_PATH}/em++${EMCC_SUFFIX}") +endif() + +if ("${CMAKE_AR}" STREQUAL "") + set(CMAKE_AR "${EMSCRIPTEN_ROOT_PATH}/emar${EMCC_SUFFIX}" CACHE FILEPATH "Emscripten ar") +endif() + +if ("${CMAKE_RANLIB}" STREQUAL "") + set(CMAKE_RANLIB "${EMSCRIPTEN_ROOT_PATH}/emranlib${EMCC_SUFFIX}" CACHE FILEPATH "Emscripten ranlib") +endif() + +# Don't allow CMake to autodetect the compiler, since it does not understand Emscripten. +# Pass -DEMSCRIPTEN_FORCE_COMPILERS=OFF to disable (sensible mostly only for testing/debugging purposes). +option(EMSCRIPTEN_FORCE_COMPILERS "Force C/C++ compiler" ON) +if (EMSCRIPTEN_FORCE_COMPILERS) + + # Detect version of the 'emcc' executable. Note that for CMake, we tell it the version of the Clang compiler and not the version of Emscripten, + # because CMake understands Clang better. + if (NOT CMAKE_C_COMPILER_VERSION) # Toolchain script is interpreted multiple times, so don't rerun the check if already done before. + execute_process(COMMAND "${CMAKE_C_COMPILER}" "-v" RESULT_VARIABLE _cmake_compiler_result ERROR_VARIABLE _cmake_compiler_output OUTPUT_QUIET) + if (NOT _cmake_compiler_result EQUAL 0) + message(FATAL_ERROR "Failed to fetch compiler version information with command \"'${CMAKE_C_COMPILER}' -v\"! Process returned with error code ${_cmake_compiler_result}.") + endif() + if (NOT "${_cmake_compiler_output}" MATCHES "[Ee]mscripten") + message(FATAL_ERROR "System LLVM compiler cannot be used to build with Emscripten! Check Emscripten's LLVM toolchain location in .emscripten configuration file, and make sure to point CMAKE_C_COMPILER to where emcc is located. (was pointing to \"${CMAKE_C_COMPILER}\")") + endif() + string(REGEX MATCH "clang version ([0-9\\.]+)" _dummy_unused "${_cmake_compiler_output}") + if (NOT CMAKE_MATCH_1) + message(FATAL_ERROR "Failed to regex parse Clang compiler version from version string: ${_cmake_compiler_output}") + endif() + + set(CMAKE_C_COMPILER_VERSION "${CMAKE_MATCH_1}") + set(CMAKE_CXX_COMPILER_VERSION "${CMAKE_MATCH_1}") + if (${CMAKE_C_COMPILER_VERSION} VERSION_LESS 3.9.0) + message(WARNING "CMAKE_C_COMPILER version looks too old. Was ${CMAKE_C_COMPILER_VERSION}, should be at least 3.9.0.") + endif() + endif() + + # Capture the Emscripten version to EMSCRIPTEN_VERSION variable. + if (NOT EMSCRIPTEN_VERSION) + execute_process(COMMAND "${CMAKE_C_COMPILER}" "-v" RESULT_VARIABLE _cmake_compiler_result ERROR_VARIABLE _cmake_compiler_output OUTPUT_QUIET) + if (NOT _cmake_compiler_result EQUAL 0) + message(FATAL_ERROR "Failed to fetch Emscripten version information with command \"'${CMAKE_C_COMPILER}' -v\"! Process returned with error code ${_cmake_compiler_result}.") + endif() + string(REGEX MATCH "emcc \\(.*\\) ([0-9\\.]+)" _dummy_unused "${_cmake_compiler_output}") + if (NOT CMAKE_MATCH_1) + message(FATAL_ERROR "Failed to regex parse Emscripten compiler version from version string: ${_cmake_compiler_output}") + endif() + + set(EMSCRIPTEN_VERSION "${CMAKE_MATCH_1}") + endif() + + set(CMAKE_C_COMPILER_ID_RUN TRUE) + set(CMAKE_C_COMPILER_FORCED TRUE) + set(CMAKE_C_COMPILER_WORKS TRUE) + set(CMAKE_C_COMPILER_ID Clang) + set(CMAKE_C_STANDARD_COMPUTED_DEFAULT 11) + + set(CMAKE_CXX_COMPILER_ID_RUN TRUE) + set(CMAKE_CXX_COMPILER_FORCED TRUE) + set(CMAKE_CXX_COMPILER_WORKS TRUE) + set(CMAKE_CXX_COMPILER_ID Clang) + set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT 98) + + set(CMAKE_C_PLATFORM_ID "emscripten") + set(CMAKE_CXX_PLATFORM_ID "emscripten") + + if ("${CMAKE_VERSION}" VERSION_LESS "3.8") + set(CMAKE_C_COMPILE_FEATURES "c_function_prototypes;c_restrict;c_variadic_macros;c_static_assert") + set(CMAKE_C90_COMPILE_FEATURES "c_function_prototypes") + set(CMAKE_C99_COMPILE_FEATURES "c_restrict;c_variadic_macros") + set(CMAKE_C11_COMPILE_FEATURES "c_static_assert") + + set(CMAKE_CXX_COMPILE_FEATURES "cxx_template_template_parameters;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") + set(CMAKE_CXX98_COMPILE_FEATURES "cxx_template_template_parameters") + set(CMAKE_CXX11_COMPILE_FEATURES "cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") + set(CMAKE_CXX14_COMPILE_FEATURES "cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") + else() + set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert") + set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") + set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") + set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") + + set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17") + set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") + set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") + set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") + endif() +endif() + +# To find programs to execute during CMake run time with find_program(), e.g. 'git' or so, we allow looking +# into system paths. +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + +# Since Emscripten is a cross-compiler, we should never look at the system-provided directories like /usr/include and so on. +# Therefore only CMAKE_FIND_ROOT_PATH should be used as a find directory. See http://www.cmake.org/cmake/help/v3.0/variable/CMAKE_FIND_ROOT_PATH_MODE_INCLUDE.html +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + +set(CMAKE_SYSTEM_INCLUDE_PATH "${EMSCRIPTEN_ROOT_PATH}/system/include") + +# We would prefer to specify a standard set of Clang+Emscripten-friendly common convention for suffix files, especially for CMake executable files, +# but if these are adjusted, ${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake will fail, since it depends on being able to compile output files with predefined names. +#SET(CMAKE_LINK_LIBRARY_SUFFIX "") +#SET(CMAKE_STATIC_LIBRARY_PREFIX "") +#SET(CMAKE_SHARED_LIBRARY_PREFIX "") +#SET(CMAKE_FIND_LIBRARY_PREFIXES "") +#SET(CMAKE_FIND_LIBRARY_SUFFIXES ".bc") +#SET(CMAKE_SHARED_LIBRARY_SUFFIX ".bc") + +option(EMSCRIPTEN_GENERATE_BITCODE_STATIC_LIBRARIES "If set, static library targets generate LLVM bitcode files (.bc). If disabled (default), UNIX ar archives (.a) are generated." OFF) +if (EMSCRIPTEN_GENERATE_BITCODE_STATIC_LIBRARIES) + SET(CMAKE_STATIC_LIBRARY_SUFFIX ".bc") + + SET(CMAKE_C_CREATE_STATIC_LIBRARY " -o ") + SET(CMAKE_CXX_CREATE_STATIC_LIBRARY " -o ") +else() + # Specify the program to use when building static libraries. Force Emscripten-related command line options to clang. + SET(CMAKE_C_CREATE_STATIC_LIBRARY " rc ") + SET(CMAKE_CXX_CREATE_STATIC_LIBRARY " rc ") +endif() + +SET(CMAKE_EXECUTABLE_SUFFIX ".js") + +SET(CMAKE_C_USE_RESPONSE_FILE_FOR_LIBRARIES 1) +SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_LIBRARIES 1) +SET(CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1) +SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS 1) +SET(CMAKE_C_USE_RESPONSE_FILE_FOR_INCLUDES 1) +SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES 1) + +set(CMAKE_C_RESPONSE_FILE_LINK_FLAG "@") +set(CMAKE_CXX_RESPONSE_FILE_LINK_FLAG "@") + +# Set a global EMSCRIPTEN variable that can be used in client CMakeLists.txt to detect when building using Emscripten. +set(EMSCRIPTEN 1 CACHE BOOL "If true, we are targeting Emscripten output.") + +# Hardwire support for cmake-2.8/Modules/CMakeBackwardsCompatibilityC.cmake without having CMake to try complex things +# to autodetect these: +set(CMAKE_SKIP_COMPATIBILITY_TESTS 1) +set(CMAKE_SIZEOF_CHAR 1) +set(CMAKE_SIZEOF_UNSIGNED_SHORT 2) +set(CMAKE_SIZEOF_SHORT 2) +set(CMAKE_SIZEOF_INT 4) +set(CMAKE_SIZEOF_UNSIGNED_LONG 4) +set(CMAKE_SIZEOF_UNSIGNED_INT 4) +set(CMAKE_SIZEOF_LONG 4) +set(CMAKE_SIZEOF_VOID_P 4) +set(CMAKE_SIZEOF_FLOAT 4) +set(CMAKE_SIZEOF_DOUBLE 8) +set(CMAKE_C_SIZEOF_DATA_PTR 4) +set(CMAKE_CXX_SIZEOF_DATA_PTR 4) +set(CMAKE_HAVE_LIMITS_H 1) +set(CMAKE_HAVE_UNISTD_H 1) +set(CMAKE_HAVE_PTHREAD_H 1) +set(CMAKE_HAVE_SYS_PRCTL_H 1) +set(CMAKE_WORDS_BIGENDIAN 0) +set(CMAKE_DL_LIBS) + +set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O2" CACHE STRING "Emscripten-overridden CMAKE_C_FLAGS_RELEASE") +set(CMAKE_C_FLAGS_MINSIZEREL "-DNDEBUG -Os" CACHE STRING "Emscripten-overridden CMAKE_C_FLAGS_MINSIZEREL") +set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2" CACHE STRING "Emscripten-overridden CMAKE_C_FLAGS_RELWITHDEBINFO") +set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O2" CACHE STRING "Emscripten-overridden CMAKE_CXX_FLAGS_RELEASE") +set(CMAKE_CXX_FLAGS_MINSIZEREL "-DNDEBUG -Os" CACHE STRING "Emscripten-overridden CMAKE_CXX_FLAGS_MINSIZEREL") +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2" CACHE STRING "Emscripten-overridden CMAKE_CXX_FLAGS_RELWITHDEBINFO") + +set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-O2" CACHE STRING "Emscripten-overridden CMAKE_EXE_LINKER_FLAGS_RELEASE") +set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "-Os" CACHE STRING "Emscripten-overridden CMAKE_EXE_LINKER_FLAGS_MINSIZEREL") +set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Emscripten-overridden CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO") +set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "-O2" CACHE STRING "Emscripten-overridden CMAKE_SHARED_LINKER_FLAGS_RELEASE") +set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "-Os" CACHE STRING "Emscripten-overridden CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL") +set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Emscripten-overridden CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO") +set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "-O2" CACHE STRING "Emscripten-overridden CMAKE_MODULE_LINKER_FLAGS_RELEASE") +set(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL "-Os" CACHE STRING "Emscripten-overridden CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL") +set(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Emscripten-overridden CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO") + +function(em_validate_asmjs_after_build target) + add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo Validating build output for asm.js... COMMAND "python" ARGS "${EMSCRIPTEN_ROOT_PATH}/tools/validate_asmjs.py" "$") +endfunction() + +# A global counter to guarantee unique names for js library files. +set(link_js_counter 1) + +# Internal function: Do not call from user CMakeLists.txt files. Use one of em_link_js_library()/em_link_pre_js()/em_link_post_js() instead. +function(em_add_tracked_link_flag target flagname) + + # User can input list of JS files either as a single list, or as variable arguments to this function, so iterate over varargs, and treat each + # item in varargs as a list itself, to support both syntax forms. + foreach(jsFileList ${ARGN}) + foreach(jsfile ${jsFileList}) + # If the user edits the JS file, we want to relink the emscripten application, but unfortunately it is not possible to make a link step + # depend directly on a source file. Instead, we must make a dummy no-op build target on that source file, and make the project depend on + # that target. + + # Sanitate the source .js filename to a good symbol name to use as a dummy filename. + get_filename_component(jsname "${jsfile}" NAME) + string(REGEX REPLACE "[/:\\\\.\ ]" "_" dummy_js_target ${jsname}) + set(dummy_lib_name ${target}_${link_js_counter}_${dummy_js_target}) + set(dummy_c_name "${CMAKE_BINARY_DIR}/${dummy_js_target}_tracker.c") + + # Create a new static library target that with a single dummy .c file. + add_library(${dummy_lib_name} STATIC ${dummy_c_name}) + # Make the dummy .c file depend on the .js file we are linking, so that if the .js file is edited, the dummy .c file, and hence the static library will be rebuild (no-op). This causes the main application to be relinked, which is what we want. + # This approach was recommended by http://www.cmake.org/pipermail/cmake/2010-May/037206.html + add_custom_command(OUTPUT ${dummy_c_name} COMMAND ${CMAKE_COMMAND} -E touch ${dummy_c_name} DEPENDS ${jsfile}) + target_link_libraries(${target} ${dummy_lib_name}) + + # Link the js-library to the target + # When a linked library starts with a "-" cmake will just add it to the linker command line as it is. + # The advantage of doing it this way is that the js-library will also be automatically linked to targets + # that depend on this target. + get_filename_component(js_file_absolute_path "${jsfile}" ABSOLUTE ) + target_link_libraries(${target} "${flagname} \"${js_file_absolute_path}\"") + + math(EXPR link_js_counter "${link_js_counter} + 1") + endforeach() + endforeach() +endfunction() + +# This function links a (list of ) .js library file(s) to the given CMake project. +# Example: em_link_js_library(my_executable "lib1.js" "lib2.js") +# will result in emcc passing --js-library lib1.js --js-library lib2.js to the emscripten linker, as well as +# tracking the modification timestamp between the linked .js files and the main project, so that editing the .js file +# will cause the target project to be relinked. +function(em_link_js_library target) + em_add_tracked_link_flag(${target} "--js-library" ${ARGN}) +endfunction() + +# This function is identical to em_link_js_library(), except the .js files will be added with '--pre-js file.js' command line flag, +# which is generally used to add some preamble .js code to a generated output file. +function(em_link_pre_js target) + em_add_tracked_link_flag(${target} "--pre-js" ${ARGN}) +endfunction() + +# This function is identical to em_link_js_library(), except the .js files will be added with '--post-js file.js' command line flag, +# which is generally used to add some postamble .js code to a generated output file. +function(em_link_post_js target) + em_add_tracked_link_flag(${target} "--post-js" ${ARGN}) +endfunction() + +# Experimental support for targeting generation of Visual Studio project files (vs-tool) of Emscripten projects for Windows. +# To use this, pass the combination -G "Visual Studio 10" -DCMAKE_TOOLCHAIN_FILE=Emscripten.cmake +if ("${CMAKE_GENERATOR}" MATCHES "^Visual Studio.*") + # By default, CMake generates VS project files with a true directive. + # This causes VS to attempt to invoke rc.exe during the build, which will fail since app manifests are meaningless for Emscripten. + # To disable this, add the following linker flag. This flag will not go to emcc, since the Visual Studio CMake generator will swallow it. + set(EMSCRIPTEN_VS_LINKER_FLAGS "/MANIFEST:NO") + # CMake is hardcoded to write a ClCompile directive $(IntDir) in all VS project files it generates. + # This makes VS pass emcc a -o param that points to a directory instead of a file, which causes emcc autogenerate the output filename. + # CMake is hardcoded to assume all object files have the suffix .obj, so adjust the emcc-autogenerated default suffix name to match. + set(EMSCRIPTEN_VS_LINKER_FLAGS "${EMSCRIPTEN_VS_LINKER_FLAGS} --default-obj-ext .obj") + # Also hint CMake that it should not hardcode generation. Requires a custom CMake build for this to work (ignored on others) + # See http://www.cmake.org/Bug/view.php?id=14673 and https://github.com/juj/CMake + set(CMAKE_VS_NO_DEFAULT_OBJECTFILENAME 1) + + # Apply and cache Emscripten Visual Studio IDE-specific linker flags. + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EMSCRIPTEN_VS_LINKER_FLAGS}" CACHE STRING "") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${EMSCRIPTEN_VS_LINKER_FLAGS}" CACHE STRING "") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${EMSCRIPTEN_VS_LINKER_FLAGS}" CACHE STRING "") +endif() + +if (NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR) + find_program(NODE_JS_EXECUTABLE NAMES nodejs node) + if(NODE_JS_EXECUTABLE) + set(CMAKE_CROSSCOMPILING_EMULATOR "${NODE_JS_EXECUTABLE}" CACHE FILEPATH "Path to the emulator for the target system.") + endif() +endif() +# No-op on CMAKE_CROSSCOMPILING_EMULATOR so older versions of cmake do not +# complain about unused CMake variable. +if(CMAKE_CROSSCOMPILING_EMULATOR) +endif() diff --git a/Src/cmake/FindSDL2.cmake b/Src/cmake/FindSDL2.cmake new file mode 100644 index 0000000..2a9545d --- /dev/null +++ b/Src/cmake/FindSDL2.cmake @@ -0,0 +1,200 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#.rst: +# FindSDL2 +# ------- +# +# Locate SDL2 library +# +# This module defines +# +# :: +# +# SDL2_LIBRARY, the name of the library to link against +# SDL2_FOUND, if false, do not try to link to SDL +# SDL2_INCLUDE_DIR, where to find SDL.h +# SDL2_VERSION_STRING, human-readable string containing the version of SDL +# +# +# +# This module responds to the flag: +# +# :: +# +# SDL2_BUILDING_LIBRARY +# If this is defined, then no SDL2_main will be linked in because +# only applications need main(). +# Otherwise, it is assumed you are building an application and this +# module will attempt to locate and set the proper link flags +# as part of the returned SDL2_LIBRARY variable. +# +# +# +# Don't forget to include SDLmain.h and SDLmain.m your project for the +# OS X framework based version. (Other versions link to -lSDLmain which +# this module will try to find on your behalf.) Also for OS X, this +# module will automatically add the -framework Cocoa on your behalf. +# +# +# +# Additional Note: If you see an empty SDL2_LIBRARY_TEMP in your +# configuration and no SDL2_LIBRARY, it means CMake did not find your SDL +# library (SDL.dll, libsdl.so, SDL.framework, etc). Set +# SDL2_LIBRARY_TEMP to point to your SDL library, and configure again. +# Similarly, if you see an empty SDLMAIN_LIBRARY, you should set this +# value as appropriate. These values are used to generate the final +# SDL2_LIBRARY variable, but when these values are unset, SDL2_LIBRARY +# does not get created. +# +# +# +# $SDL2DIR is an environment variable that would correspond to the +# ./configure --prefix=$SDL2DIR used in building SDL. l.e.galup 9-20-02 +# +# Modified by Eric Wing. Added code to assist with automated building +# by using environmental variables and providing a more +# controlled/consistent search behavior. Added new modifications to +# recognize OS X frameworks and additional Unix paths (FreeBSD, etc). +# Also corrected the header search path to follow "proper" SDL +# guidelines. Added a search for SDLmain which is needed by some +# platforms. Added a search for threads which is needed by some +# platforms. Added needed compile switches for MinGW. +# +# On OSX, this will prefer the Framework version (if found) over others. +# People will have to manually change the cache values of SDL2_LIBRARY to +# override this selection or set the CMake environment +# CMAKE_INCLUDE_PATH to modify the search paths. +# +# Note that the header path has changed from SDL/SDL.h to just SDL.h +# This needed to change because "proper" SDL convention is #include +# "SDL.h", not . This is done for portability reasons +# because not all systems place things in SDL/ (see FreeBSD). + +if(NOT SDL2_DIR) + set(SDL2_DIR "" CACHE PATH "SDL2 directory") +endif() + +find_path(SDL2_INCLUDE_DIR SDL.h + HINTS + ENV SDL2DIR + ${SDL2_DIR} + PATH_SUFFIXES SDL2 + # path suffixes to search inside ENV{SDL2DIR} + include/SDL2 include +) + +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(VC_LIB_PATH_SUFFIX lib/x64) +else() + set(VC_LIB_PATH_SUFFIX lib/x86) +endif() + +find_library(SDL2_LIBRARY_TEMP + NAMES SDL2 + HINTS + ENV SDL2DIR + ${SDL2_DIR} + PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX} +) + +# Hide this cache variable from the user, it's an internal implementation +# detail. The documented library variable for the user is SDL2_LIBRARY +# which is derived from SDL2_LIBRARY_TEMP further below. +set_property(CACHE SDL2_LIBRARY_TEMP PROPERTY TYPE INTERNAL) + +if(NOT SDL2_BUILDING_LIBRARY) + if(NOT SDL2_INCLUDE_DIR MATCHES ".framework") + # Non-OS X framework versions expect you to also dynamically link to + # SDLmain. This is mainly for Windows and OS X. Other (Unix) platforms + # seem to provide SDLmain for compatibility even though they don't + # necessarily need it. + find_library(SDL2MAIN_LIBRARY + NAMES SDL2main + HINTS + ENV SDL2DIR + ${SDL2_DIR} + PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX} + PATHS + /sw + /opt/local + /opt/csw + /opt + ) + endif() +endif() + +# SDL may require threads on your system. +# The Apple build may not need an explicit flag because one of the +# frameworks may already provide it. +# But for non-OSX systems, I will use the CMake Threads package. +if(NOT APPLE) + find_package(Threads) +endif() + +# MinGW needs an additional link flag, -mwindows +# It's total link flags should look like -lmingw32 -lSDLmain -lSDL -mwindows +if(MINGW) + set(MINGW32_LIBRARY mingw32 "-mwindows" CACHE STRING "link flags for MinGW") +endif() + +if(SDL2_LIBRARY_TEMP) + # For SDLmain + if(SDL2MAIN_LIBRARY AND NOT SDL2_BUILDING_LIBRARY) + list(FIND SDL2_LIBRARY_TEMP "${SDLMAIN_LIBRARY}" _SDL2_MAIN_INDEX) + if(_SDL2_MAIN_INDEX EQUAL -1) + set(SDL2_LIBRARY_TEMP "${SDLMAIN_LIBRARY}" ${SDL2_LIBRARY_TEMP}) + endif() + unset(_SDL2_MAIN_INDEX) + endif() + + # For OS X, SDL uses Cocoa as a backend so it must link to Cocoa. + # CMake doesn't display the -framework Cocoa string in the UI even + # though it actually is there if I modify a pre-used variable. + # I think it has something to do with the CACHE STRING. + # So I use a temporary variable until the end so I can set the + # "real" variable in one-shot. + if(APPLE) + set(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} "-framework Cocoa") + endif() + + # For threads, as mentioned Apple doesn't need this. + # In fact, there seems to be a problem if I used the Threads package + # and try using this line, so I'm just skipping it entirely for OS X. + if(NOT APPLE) + set(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} ${CMAKE_THREAD_LIBS_INIT}) + endif() + + # For MinGW library + if(MINGW) + set(SDL2_LIBRARY_TEMP ${MINGW32_LIBRARY} ${SDL2_LIBRARY_TEMP}) + endif() + + # Set the final string here so the GUI reflects the final state. + set(SDL2_LIBRARY ${SDL2_LIBRARY_TEMP} CACHE STRING "Where the SDL Library can be found") +endif() + +if(SDL2_INCLUDE_DIR AND EXISTS "${SDL2_INCLUDE_DIR}/SDL2_version.h") + file(STRINGS "${SDL2_INCLUDE_DIR}/SDL2_version.h" SDL2_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL2_MAJOR_VERSION[ \t]+[0-9]+$") + file(STRINGS "${SDL2_INCLUDE_DIR}/SDL2_version.h" SDL2_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL2_MINOR_VERSION[ \t]+[0-9]+$") + file(STRINGS "${SDL2_INCLUDE_DIR}/SDL2_version.h" SDL2_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL2_PATCHLEVEL[ \t]+[0-9]+$") + string(REGEX REPLACE "^#define[ \t]+SDL2_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MAJOR "${SDL2_VERSION_MAJOR_LINE}") + string(REGEX REPLACE "^#define[ \t]+SDL2_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_MINOR "${SDL2_VERSION_MINOR_LINE}") + string(REGEX REPLACE "^#define[ \t]+SDL2_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_VERSION_PATCH "${SDL2_VERSION_PATCH_LINE}") + set(SDL2_VERSION_STRING ${SDL2_VERSION_MAJOR}.${SDL2_VERSION_MINOR}.${SDL2_VERSION_PATCH}) + unset(SDL2_VERSION_MAJOR_LINE) + unset(SDL2_VERSION_MINOR_LINE) + unset(SDL2_VERSION_PATCH_LINE) + unset(SDL2_VERSION_MAJOR) + unset(SDL2_VERSION_MINOR) + unset(SDL2_VERSION_PATCH) +endif() + +set(SDL2_LIBRARIES ${SDL2_LIBRARY} ${SDL2MAIN_LIBRARY}) +set(SDL2_INCLUDE_DIRS ${SDL2_INCLUDE_DIR}) + +include(FindPackageHandleStandardArgs) + +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 + REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR + VERSION_VAR SDL2_VERSION_STRING) \ No newline at end of file diff --git a/Src/cmake/FindSDL2_image.cmake b/Src/cmake/FindSDL2_image.cmake new file mode 100644 index 0000000..b310cfd --- /dev/null +++ b/Src/cmake/FindSDL2_image.cmake @@ -0,0 +1,102 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#.rst: +# FindSDL2_image +# ------------- +# +# Locate SDL2_image library +# +# This module defines: +# +# :: +# +# SDL2_IMAGE_LIBRARIES, the name of the library to link against +# SDL2_IMAGE_INCLUDE_DIRS, where to find the headers +# SDL2_IMAGE_FOUND, if false, do not try to link against +# SDL2_IMAGE_VERSION_STRING - human-readable string containing the +# version of SDL2_image +# +# +# +# For backward compatibility the following variables are also set: +# +# :: +# +# SDL2IMAGE_LIBRARY (same value as SDL2_IMAGE_LIBRARIES) +# SDL2IMAGE_INCLUDE_DIR (same value as SDL2_IMAGE_INCLUDE_DIRS) +# SDL2IMAGE_FOUND (same value as SDL2_IMAGE_FOUND) +# +# +# +# $SDLDIR is an environment variable that would correspond to the +# ./configure --prefix=$SDLDIR used in building SDL. +# +# Created by Eric Wing. This was influenced by the FindSDL.cmake +# module, but with modifications to recognize OS X frameworks and +# additional Unix paths (FreeBSD, etc). + +if(NOT SDL2_IMAGE_INCLUDE_DIR AND SDL2IMAGE_INCLUDE_DIR) + set(SDL2_IMAGE_INCLUDE_DIR ${SDL2IMAGE_INCLUDE_DIR} CACHE PATH "directory cache +entry initialized from old variable name") +endif() +find_path(SDL2_IMAGE_INCLUDE_DIR SDL_image.h + HINTS + ENV SDL2IMAGEDIR + ENV SDL2DIR + ${SDL2_DIR} + PATH_SUFFIXES SDL2 + # path suffixes to search inside ENV{SDL2DIR} + include/SDL2 include +) + +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(VC_LIB_PATH_SUFFIX lib/x64) +else() + set(VC_LIB_PATH_SUFFIX lib/x86) +endif() + +if(NOT SDL2_IMAGE_LIBRARY AND SDL2IMAGE_LIBRARY) + set(SDL2_IMAGE_LIBRARY ${SDL2IMAGE_LIBRARY} CACHE FILEPATH "file cache entry +initialized from old variable name") +endif() +find_library(SDL2_IMAGE_LIBRARY + NAMES SDL2_image + HINTS + ENV SDL2IMAGEDIR + ENV SDL2DIR + ${SDL2_DIR} + PATH_SUFFIXES lib ${VC_LIB_PATH_SUFFIX} +) + +if(SDL2_IMAGE_INCLUDE_DIR AND EXISTS "${SDL2_IMAGE_INCLUDE_DIR}/SDL2_image.h") + file(STRINGS "${SDL2_IMAGE_INCLUDE_DIR}/SDL2_image.h" SDL2_IMAGE_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL2_IMAGE_MAJOR_VERSION[ \t]+[0-9]+$") + file(STRINGS "${SDL2_IMAGE_INCLUDE_DIR}/SDL2_image.h" SDL2_IMAGE_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL2_IMAGE_MINOR_VERSION[ \t]+[0-9]+$") + file(STRINGS "${SDL2_IMAGE_INCLUDE_DIR}/SDL2_image.h" SDL2_IMAGE_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL2_IMAGE_PATCHLEVEL[ \t]+[0-9]+$") + string(REGEX REPLACE "^#define[ \t]+SDL2_IMAGE_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_IMAGE_VERSION_MAJOR "${SDL2_IMAGE_VERSION_MAJOR_LINE}") + string(REGEX REPLACE "^#define[ \t]+SDL2_IMAGE_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_IMAGE_VERSION_MINOR "${SDL2_IMAGE_VERSION_MINOR_LINE}") + string(REGEX REPLACE "^#define[ \t]+SDL2_IMAGE_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_IMAGE_VERSION_PATCH "${SDL2_IMAGE_VERSION_PATCH_LINE}") + set(SDL2_IMAGE_VERSION_STRING ${SDL2_IMAGE_VERSION_MAJOR}.${SDL2_IMAGE_VERSION_MINOR}.${SDL2_IMAGE_VERSION_PATCH}) + unset(SDL2_IMAGE_VERSION_MAJOR_LINE) + unset(SDL2_IMAGE_VERSION_MINOR_LINE) + unset(SDL2_IMAGE_VERSION_PATCH_LINE) + unset(SDL2_IMAGE_VERSION_MAJOR) + unset(SDL2_IMAGE_VERSION_MINOR) + unset(SDL2_IMAGE_VERSION_PATCH) +endif() + +set(SDL2_IMAGE_LIBRARIES ${SDL2_IMAGE_LIBRARY}) +set(SDL2_IMAGE_INCLUDE_DIRS ${SDL2_IMAGE_INCLUDE_DIR}) + +include(FindPackageHandleStandardArgs) + +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_image + REQUIRED_VARS SDL2_IMAGE_LIBRARIES SDL2_IMAGE_INCLUDE_DIRS + VERSION_VAR SDL2_IMAGE_VERSION_STRING) + +# for backward compatibility +set(SDL2IMAGE_LIBRARY ${SDL2_IMAGE_LIBRARIES}) +set(SDL2IMAGE_INCLUDE_DIR ${SDL2_IMAGE_INCLUDE_DIRS}) +set(SDL2IMAGE_FOUND ${SDL2_IMAGE_FOUND}) + +mark_as_advanced(SDL2_IMAGE_LIBRARY SDL2_IMAGE_INCLUDE_DIR) \ No newline at end of file diff --git a/Src/conf/eez/conf.h b/Src/conf/eez/conf.h index 9f15eae..5b46baa 100644 --- a/Src/conf/eez/conf.h +++ b/Src/conf/eez/conf.h @@ -3,23 +3,18 @@ #include #if defined(EEZ_PLATFORM_STM32) -#if CONF_OPTION_FPGA static const uint32_t DISPLAY_WIDTH = 800; static const uint32_t DISPLAY_HEIGHT = 480; -#else -static const uint32_t DISPLAY_WIDTH = 480; -static const uint32_t DISPLAY_HEIGHT = 272; -#endif static const uint32_t DISPLAY_BPP = 16; // RGB565 #endif #if defined(EEZ_PLATFORM_SIMULATOR) -static const uint32_t DISPLAY_WIDTH = 680; -static const uint32_t DISPLAY_HEIGHT = 472; +static const uint32_t DISPLAY_WIDTH = 1000; +static const uint32_t DISPLAY_HEIGHT = 680; static const uint32_t DISPLAY_BPP = 32; // RGBA8888 -static const char *TITLE = "Uvitron Integrated Rayven"; -static const char *ICON = "uvitron.png"; +static const char *TITLE = "STM32F469I-DISCO Template"; +static const char *ICON = "icon.png"; #endif diff --git a/Src/date_time.cpp b/Src/date_time.cpp new file mode 100644 index 0000000..61f00d2 --- /dev/null +++ b/Src/date_time.cpp @@ -0,0 +1,175 @@ +#ifdef EEZ_PLATFORM_STM32 +#include "main.h" +//#include "rtc.h" +#endif + +#if defined(EEZ_PLATFORM_SIMULATOR) +#include +#include +#endif + +#include "date_time.h" + +namespace date_time { + +// leap year calulator expects year argument as years offset from 1970 +#define LEAP_YEAR(Y) \ + (((1970 + Y) > 0) && !((1970 + Y) % 4) && (((1970 + Y) % 100) || !((1970 + Y) % 400))) + +#define SECONDS_PER_MINUTE 60UL +#define SECONDS_PER_HOUR (SECONDS_PER_MINUTE * 60) +#define SECONDS_PER_DAY (SECONDS_PER_HOUR * 24) + +// API starts months from 1, this array starts from 0 +static const uint8_t monthDays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; + +#if defined(EEZ_PLATFORM_SIMULATOR) +static uint32_t g_offset; +#endif + +DateTime g_dateTime; + +uint32_t makeTime(int year, int month, int day, int hour, int minute, int second) { + // seconds from 1970 till 1 jan 00:00:00 of the given year + year -= 1970; + + uint32_t seconds = year * 365 * SECONDS_PER_DAY; + + for (int i = 0; i < year; i++) { + if (LEAP_YEAR(i)) { + seconds += SECONDS_PER_DAY; // add extra days for leap years + } + } + + // add days for this year, months start from 1 + for (int i = 1; i < month; i++) { + if ((i == 2) && LEAP_YEAR(year)) { + seconds += SECONDS_PER_DAY * 29; + } + else { + seconds += SECONDS_PER_DAY * monthDays[i - 1]; // monthDay array starts from 0 + } + } + seconds += (day - 1) * SECONDS_PER_DAY; + seconds += hour * SECONDS_PER_HOUR; + seconds += minute * SECONDS_PER_MINUTE; + seconds += second; + + return seconds; +} + +void breakTime(uint32_t time, int &resultYear, int &resultMonth, int &resultDay, int &resultHour, + int &resultMinute, int &resultSecond) { + // break the given time_t into time components + uint8_t year; + uint8_t month, monthLength; + uint32_t days; + + resultSecond = time % 60; + time /= 60; // now it is minutes + + resultMinute = time % 60; + time /= 60; // now it is hours + + resultHour = time % 24; + time /= 24; // now it is days + + year = 0; + days = 0; + while ((unsigned)(days += (LEAP_YEAR(year) ? 366 : 365)) <= time) { + year++; + } + resultYear = year + 1970; // year is offset from 1970 + + days -= LEAP_YEAR(year) ? 366 : 365; + time -= days; // now it is days in this year, starting at 0 + + days = 0; + month = 0; + monthLength = 0; + for (month = 0; month < 12; ++month) { + if (month == 1) { // february + if (LEAP_YEAR(year)) { + monthLength = 29; + } + else { + monthLength = 28; + } + } + else { + monthLength = monthDays[month]; + } + + if (time >= monthLength) { + time -= monthLength; + } + else { + break; + } + } + + resultMonth = month + 1; // jan is month 1 + resultDay = time + 1; // day of month +} + +#if defined(EEZ_PLATFORM_SIMULATOR) +uint32_t nowUtc() { + time_t now_time_t = time(0); + struct tm *now_tm = gmtime(&now_time_t); + return makeTime(1900 + now_tm->tm_year, now_tm->tm_mon + 1, now_tm->tm_mday, + now_tm->tm_hour, now_tm->tm_min, now_tm->tm_sec); +} +#endif + +bool readTime(uint8_t &hour, uint8_t &minute, uint8_t &second, uint8_t &subSeconds) { +#if defined(EEZ_PLATFORM_STM32) +// RTC_TimeTypeDef time; +// HAL_RTC_GetTime(&hrtc, &time, FORMAT_BIN); +// +// second = time.Seconds; +// minute = time.Minutes; +// hour = time.Hours; +// subSeconds = time.SubSeconds; +#endif + +#if defined(EEZ_PLATFORM_SIMULATOR) + int year_, month_, day_, hour_, minute_, second_; + breakTime(g_offset + nowUtc(), year_, month_, day_, hour_, minute_, second_); + + hour = uint8_t(hour_); + minute = uint8_t(minute_); + second = uint8_t(second_); + subSeconds = 0; +#endif + + return true; +} + +bool readDate(uint8_t &year, uint8_t &month, uint8_t &day) { +#if defined(EEZ_PLATFORM_STM32) +// RTC_DateTypeDef date; +// HAL_RTC_GetDate(&hrtc, &date, FORMAT_BIN); +// +// day = date.Date; +// month = date.Month; +// year = date.Year; +#endif + +#if defined(EEZ_PLATFORM_SIMULATOR) + int year_, month_, day_, hour_, minute_, second_; + breakTime(g_offset + nowUtc(), year_, month_, day_, hour_, minute_, second_); + + year = uint8_t(year_ - 2000); + month = uint8_t(month_); + day = uint8_t(day_); +#endif + + return true; +} + +void tick() { + readTime(g_dateTime.hour, g_dateTime.minute, g_dateTime.second, g_dateTime.subSecond); + readDate(g_dateTime.year, g_dateTime.month, g_dateTime.day); +} + +} // date_time diff --git a/Src/date_time.h b/Src/date_time.h new file mode 100644 index 0000000..7451295 --- /dev/null +++ b/Src/date_time.h @@ -0,0 +1,22 @@ +#pragma once + +#include + +namespace date_time { + +struct DateTime { + uint8_t year; + uint8_t month; + uint8_t day; + + uint8_t hour; + uint8_t minute; + uint8_t second; + uint8_t subSecond; +}; + +extern DateTime g_dateTime; + +void tick(); + +} \ No newline at end of file diff --git a/Src/debug.cpp b/Src/debug.cpp new file mode 100644 index 0000000..70aa8b8 --- /dev/null +++ b/Src/debug.cpp @@ -0,0 +1,27 @@ +#include +#include +#include "firmware.h" + +namespace eez { +namespace debug { + +void pushDebugTraceHook(const char *message, size_t messageLength) { + serialWrite("DEBUG: "); + osDelay(1); + serialWrite(message, messageLength); +} + +void pushInfoTraceHook(const char *message, size_t messageLength) { + serialWrite("INFO: "); + osDelay(1); + serialWrite(message, messageLength); +} + +void pushErrorTraceHook(const char *message, size_t messageLength) { + serialWrite("ERROR: "); + osDelay(1); + serialWrite(message, messageLength); +} + +} // namespace debug +} // namespace eez diff --git a/Src/eez-flow-template-stm32f469i-disco-gui.eez-project b/Src/eez-flow-template-stm32f469i-disco-gui.eez-project index 0b0a2f7..72f0b1f 100644 --- a/Src/eez-flow-template-stm32f469i-disco-gui.eez-project +++ b/Src/eez-flow-template-stm32f469i-disco-gui.eez-project @@ -9,8 +9,8 @@ } ], "flowSupport": true, - "displayWidth": 480, - "displayHeight": 272 + "displayWidth": 800, + "displayHeight": 480 }, "build": { "configurations": [ @@ -312,8 +312,8 @@ "type": "Select", "left": 0, "top": 0, - "width": 480, - "height": 272, + "width": 800, + "height": 480, "wireID": "29b822b5-0191-44ac-ccfc-b5d473083547", "customInputs": [], "customOutputs": [], @@ -321,24 +321,26 @@ "style": { "inheritFrom": "touch_calibration" }, + "timeline": [], "widgets": [ { "type": "Container", "left": 0, "top": 0, - "width": 480, - "height": 272, + "width": 800, + "height": 480, "wireID": "7311d830-c36c-464b-ee3a-7d04e357b513", "customInputs": [], "customOutputs": [], "style": { "inheritFrom": "touch_calibration" }, + "timeline": [], "widgets": [ { "type": "MultilineText", - "left": 95, - "top": 98, + "left": 255, + "top": 202, "width": 290, "height": 76, "wireID": "b835daad-dba0-4ddc-bf30-e59136add4ee", @@ -347,7 +349,8 @@ "data": "\"Touch top-left cross in the center until change color\"", "style": { "inheritFrom": "note_M" - } + }, + "timeline": [] }, { "type": "Text", @@ -363,27 +366,30 @@ "style": { "inheritFrom": "touch_calibration_point", "activeBackgroundColor": "#000000" - } + }, + "timeline": [] } - ] + ], + "layout": "static" }, { "type": "Container", "left": 0, "top": 0, - "width": 480, - "height": 272, + "width": 800, + "height": 480, "wireID": "6e7b9361-0965-4ca2-9116-613a7b8d9735", "customInputs": [], "customOutputs": [], "style": { "inheritFrom": "touch_calibration" }, + "timeline": [], "widgets": [ { "type": "MultilineText", - "left": 95, - "top": 98, + "left": 255, + "top": 202, "width": 290, "height": 76, "wireID": "729f4182-e9be-49d4-c1c1-2bf4767ac4fd", @@ -392,12 +398,13 @@ "data": "\"Touch bottom-right cross in the center until change color\"", "style": { "inheritFrom": "note_M" - } + }, + "timeline": [] }, { "type": "Text", - "left": 445, - "top": 237, + "left": 765, + "top": 445, "width": 35, "height": 35, "wireID": "4a88c334-572d-4f06-a440-9c667eef30e2", @@ -407,27 +414,30 @@ "action": "", "style": { "inheritFrom": "touch_calibration_point" - } + }, + "timeline": [] } - ] + ], + "layout": "static" }, { "type": "Container", "left": 0, "top": 0, - "width": 480, - "height": 272, + "width": 800, + "height": 480, "wireID": "9ce862b9-9ec4-4173-f463-59bcb854e96d", "customInputs": [], "customOutputs": [], "style": { "inheritFrom": "touch_calibration" }, + "timeline": [], "widgets": [ { "type": "MultilineText", - "left": 95, - "top": 98, + "left": 255, + "top": 202, "width": 290, "height": 76, "wireID": "1513bc9a-aca5-4cb0-efca-c777e048c478", @@ -436,11 +446,12 @@ "data": "\"Touch top-right cross in the center until change color\"", "style": { "inheritFrom": "note_M" - } + }, + "timeline": [] }, { "type": "Text", - "left": 445, + "left": 765, "top": 0, "width": 35, "height": 35, @@ -451,9 +462,11 @@ "action": "", "style": { "inheritFrom": "touch_calibration_point" - } + }, + "timeline": [] } - ] + ], + "layout": "static" } ] } @@ -465,16 +478,16 @@ "style": "background", "left": 0, "top": 0, - "width": 480, - "height": 272 + "width": 800, + "height": 480 }, { "components": [ { "type": "DisplayData", "left": 0, - "top": 82, - "width": 480, + "top": 186, + "width": 800, "height": 40, "wireID": "5ffa4219-e9d1-4160-a8f6-f8bf4cbfadc4", "customInputs": [], @@ -483,12 +496,13 @@ "style": { "inheritFrom": "default" }, + "timeline": [], "displayOption": 0 }, { "type": "Text", - "left": 90, - "top": 176, + "left": 250, + "top": 280, "width": 140, "height": 40, "wireID": "15ec65f7-bed9-4a08-b4b5-b91d2e5bd549", @@ -498,12 +512,13 @@ "action": "yes", "style": { "inheritFrom": "button" - } + }, + "timeline": [] }, { "type": "Text", - "left": 250, - "top": 176, + "left": 410, + "top": 280, "width": 140, "height": 40, "wireID": "0c230611-18aa-4d6f-d95c-2cffe0881728", @@ -513,7 +528,8 @@ "action": "no", "style": { "inheritFrom": "button" - } + }, + "timeline": [] } ], "connectionLines": [], @@ -524,8 +540,8 @@ "style": "background", "left": 0, "top": 0, - "width": 480, - "height": 272 + "width": 800, + "height": 480 } ], "styles": [ @@ -725,6 +741,7 @@ { "id": 1, "name": "shadow", + "renderingEngine": "freetype", "source": { "filePath": "Oswald-Medium.ttf", "size": 14 @@ -843,6 +860,7 @@ }, { "name": "gui_icons", + "renderingEngine": "freetype", "source": { "filePath": "Oswald-Medium.ttf", "size": 14 diff --git a/Src/eez-flow-template-stm32f469i-disco.eez-project b/Src/eez-flow-template-stm32f469i-disco.eez-project index 6896c0f..61418b5 100644 --- a/Src/eez-flow-template-stm32f469i-disco.eez-project +++ b/Src/eez-flow-template-stm32f469i-disco.eez-project @@ -6,6 +6,9 @@ "imports": [ { "projectFilePath": "eez-flow-template-stm32f469i-disco-gui.eez-project" + }, + { + "projectFilePath": "platform\\simulator\\simulator.eez-project" } ], "flowSupport": true, @@ -15,17 +18,20 @@ "build": { "configurations": [ { - "name": "default" + "name": "stm32" + }, + { + "name": "simulator" } ], "files": [ { "fileName": "gui/document.h", - "template": "#pragma once\n\n#include \n#include \n\nnamespace eez {\nnamespace gui {\n\n//${eez-studio DATA_ENUM}\n\n//${eez-studio DATA_FUNCS_DECL}\n\n//${eez-studio DATA_ARRAY_DECL}\n\n//${eez-studio ACTIONS_ENUM}\n\n//${eez-studio ACTIONS_FUNCS_DECL}\n\n//${eez-studio ACTIONS_ARRAY_DECL}\n\n//${eez-studio GUI_FONTS_ENUM}\n\n//${eez-studio GUI_BITMAPS_ENUM}\n\n//${eez-studio GUI_STYLES_ENUM}\n\n//${eez-studio GUI_THEMES_ENUM}\n\n//${eez-studio GUI_COLORS_ENUM}\n\n//${eez-studio GUI_PAGES_ENUM}\n\n//${eez-studio GUI_ASSETS_DECL_COMPRESSED}\n\n} // namespace gui\n} // namespace eez\n" + "template": "#pragma once\n\n#include \n#include \n\nnamespace eez {\nnamespace gui {\n\n#if defined(EEZ_PLATFORM_STM32)\n\n//${eez-studio DATA_ENUM stm32}\n\n//${eez-studio DATA_FUNCS_DECL stm32}\n\n//${eez-studio DATA_ARRAY_DECL stm32}\n\n//${eez-studio ACTIONS_ENUM stm32}\n\n//${eez-studio ACTIONS_FUNCS_DECL stm32}\n\n//${eez-studio ACTIONS_ARRAY_DECL stm32}\n\n//${eez-studio GUI_FONTS_ENUM stm32}\n\n//${eez-studio GUI_BITMAPS_ENUM stm32}\n\n//${eez-studio GUI_STYLES_ENUM stm32}\n\n//${eez-studio GUI_THEMES_ENUM stm32}\n\n//${eez-studio GUI_COLORS_ENUM stm32}\n\n//${eez-studio GUI_PAGES_ENUM stm32}\n\n//${eez-studio GUI_ASSETS_DECL_COMPRESSED stm32}\n\n#elif defined(EEZ_PLATFORM_SIMULATOR)\n\n//${eez-studio DATA_ENUM simulator}\n\n//${eez-studio DATA_FUNCS_DECL simulator}\n\n//${eez-studio DATA_ARRAY_DECL simulator}\n\n//${eez-studio ACTIONS_ENUM simulator}\n\n//${eez-studio ACTIONS_FUNCS_DECL simulator}\n\n//${eez-studio ACTIONS_ARRAY_DECL simulator}\n\n//${eez-studio GUI_FONTS_ENUM simulator}\n\n//${eez-studio GUI_BITMAPS_ENUM simulator}\n\n//${eez-studio GUI_STYLES_ENUM simulator}\n\n//${eez-studio GUI_THEMES_ENUM simulator}\n\n//${eez-studio GUI_COLORS_ENUM simulator}\n\n//${eez-studio GUI_PAGES_ENUM simulator}\n\n//${eez-studio GUI_ASSETS_DECL_COMPRESSED simulator}\n\n#endif\n\n} // namespace gui\n} // namespace eez\n" }, { "fileName": "gui/document.cpp", - "template": "#include \"document.h\"\n\nnamespace eez {\nnamespace gui {\n\n//${eez-studio DATA_ARRAY_DEF}\n\n//${eez-studio ACTIONS_ARRAY_DEF}\n\n//${eez-studio GUI_ASSETS_DEF_COMPRESSED}\n\n} // namespace gui\n} // namespace eez\n" + "template": "#include \"document.h\"\n\nnamespace eez {\nnamespace gui {\n\n#if defined(EEZ_PLATFORM_STM32)\n\n//${eez-studio DATA_ARRAY_DEF stm32}\n\n//${eez-studio ACTIONS_ARRAY_DEF stm32}\n\n//${eez-studio GUI_ASSETS_DEF_COMPRESSED stm32}\n\n#elif defined(EEZ_PLATFORM_SIMULATOR)\n\n//${eez-studio DATA_ARRAY_DEF simulator}\n\n//${eez-studio ACTIONS_ARRAY_DEF simulator}\n\n//${eez-studio GUI_ASSETS_DEF_COMPRESSED simulator}\n\n#endif\n\n} // namespace gui\n} // namespace eez\n" } ], "destinationFolder": "." @@ -41,22 +47,175 @@ { "components": [ { - "type": "TextWidget", + "type": "LayoutViewWidget", "left": 0, - "top": 218, - "width": 800, - "height": 44, + "top": 0, + "width": 84, + "height": 73, + "wireID": "7f852df5-ddd4-47eb-a89b-8892f0d3e186", + "customInputs": [], + "customOutputs": [], + "style": { + "inheritFrom": "default" + }, + "timeline": [], + "layout": "anim1" + }, + { + "type": "RectangleWidget", + "left": 284, + "top": 177, + "width": 64, + "height": 64, + "wireID": "988f3c94-6cdf-42a4-b1a9-217efea7a769", + "customInputs": [], + "customOutputs": [], + "style": { + "inheritFrom": "default", + "backgroundColor": "#3510e6" + }, + "timeline": [] + }, + { + "type": "RectangleWidget", + "left": 378, + "top": 177, + "width": 64, + "height": 64, + "wireID": "c56152a4-ff50-4f73-bf9f-a29340d00d5e", + "customInputs": [], + "customOutputs": [], + "style": { + "inheritFrom": "default", + "backgroundColor": "#14d224" + }, + "timeline": [] + }, + { + "type": "RectangleWidget", + "left": 471, + "top": 177, + "width": 64, + "height": 64, + "wireID": "1595ae54-cebe-4f4c-c5a2-4c74e217beb2", + "customInputs": [], + "customOutputs": [], + "style": { + "inheritFrom": "default", + "backgroundColor": "#ec2a15" + }, + "timeline": [] + }, + { + "type": "TextWidget", + "left": 176, + "top": 44, + "width": 452, + "height": 72, "wireID": "eab24b5b-fd70-4464-d05a-d3bf0df7eac9", "customInputs": [], "customOutputs": [], "data": "\"Hello, world!\"", "style": { - "inheritFrom": "default" + "inheritFrom": "default_24" }, "timeline": [] + }, + { + "type": "ButtonWidget", + "left": 144, + "top": 306, + "width": 180, + "height": 80, + "wireID": "c5804c61-ddf1-41b4-e695-fa70c9a8a987", + "customInputs": [], + "customOutputs": [], + "asOutputProperties": [ + "action" + ], + "data": "\"ANIMATION DEMO\"", + "style": { + "inheritFrom": "button" + }, + "timeline": [], + "disabledStyle": { + "inheritFrom": "button_disabled" + } + }, + { + "type": "ShowPageActionComponent", + "left": 281, + "top": 524, + "width": 97, + "height": 55, + "wireID": "b3ebe0f2-d88d-4c29-a516-f8a740950989", + "customInputs": [], + "customOutputs": [], + "page": "anim_demo" + }, + { + "type": "StartActionComponent", + "left": -156, + "top": -73, + "width": 87, + "height": 25, + "wireID": "d8079e47-45e9-46b0-c5a1-05d4a07e69cb", + "customInputs": [], + "customOutputs": [] + }, + { + "type": "ButtonWidget", + "left": 483, + "top": 306, + "width": 180, + "height": 80, + "wireID": "9182d6ca-cdfa-4d89-c846-4066bd4a6b6e", + "customInputs": [], + "customOutputs": [], + "asOutputProperties": [ + "action" + ], + "data": "\"INPUT DEMO\"", + "style": { + "inheritFrom": "button" + }, + "timeline": [], + "disabledStyle": { + "inheritFrom": "button_disabled" + } + }, + { + "type": "ShowPageActionComponent", + "left": 575, + "top": 524, + "width": 97, + "height": 55, + "wireID": "2efc9054-ab03-4613-9145-c56f9f4f8978", + "customInputs": [], + "customOutputs": [], + "page": "input_demo" + } + ], + "connectionLines": [ + { + "source": "c5804c61-ddf1-41b4-e695-fa70c9a8a987", + "output": "action", + "target": "b3ebe0f2-d88d-4c29-a516-f8a740950989", + "input": "@seqin" + }, + { + "source": "d8079e47-45e9-46b0-c5a1-05d4a07e69cb", + "output": "@seqout", + "target": "7f852df5-ddd4-47eb-a89b-8892f0d3e186", + "input": "@seqin" + }, + { + "source": "9182d6ca-cdfa-4d89-c846-4066bd4a6b6e", + "output": "action", + "target": "2efc9054-ab03-4613-9145-c56f9f4f8978", + "input": "@seqin" } ], - "connectionLines": [], "localVariables": [], "id": 1, "name": "main", @@ -64,32 +223,11910 @@ "left": 0, "top": 0, "width": 800, - "height": 480 + "height": 480, + "scaleToFit": false + }, + { + "components": [ + { + "type": "DisplayData", + "left": 0, + "top": 0, + "width": 210, + "height": 272, + "wireID": "dbc0c503-2f2f-4e43-fb0c-c98eb04e62e7", + "customInputs": [], + "customOutputs": [], + "data": "keypad_text", + "style": { + "inheritFrom": "default_38" + }, + "timeline": [], + "displayOption": 0 + }, + { + "type": "Text", + "left": 210, + "top": 3, + "width": 65, + "height": 65, + "wireID": "e374964a-8dac-46c1-d763-eef26b271289", + "customInputs": [], + "customOutputs": [], + "data": "\"1\"", + "action": "keypad_key", + "style": { + "inheritFrom": "button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 277, + "top": 3, + "width": 65, + "height": 65, + "wireID": "e4b91b93-db34-4f2f-dfea-ea9d98ef1dd4", + "customInputs": [], + "customOutputs": [], + "data": "\"2\"", + "action": "keypad_key", + "style": { + "inheritFrom": "button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 344, + "top": 3, + "width": 65, + "height": 65, + "wireID": "2d460edd-f4d1-4960-fbff-6fdae001c110", + "customInputs": [], + "customOutputs": [], + "data": "\"3\"", + "action": "keypad_key", + "style": { + "inheritFrom": "button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 210, + "top": 70, + "width": 65, + "height": 65, + "wireID": "b436b6d8-01ba-476a-9cec-731b15fec5a5", + "customInputs": [], + "customOutputs": [], + "data": "\"4\"", + "action": "keypad_key", + "style": { + "inheritFrom": "button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 277, + "top": 70, + "width": 65, + "height": 65, + "wireID": "dd0e99f9-a269-4abc-b727-a685d4801c49", + "customInputs": [], + "customOutputs": [], + "data": "\"5\"", + "action": "keypad_key", + "style": { + "inheritFrom": "button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 344, + "top": 70, + "width": 65, + "height": 65, + "wireID": "0631f0ec-5112-4166-e00f-74533d31ab49", + "customInputs": [], + "customOutputs": [], + "data": "\"6\"", + "action": "keypad_key", + "style": { + "inheritFrom": "button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 210, + "top": 137, + "width": 65, + "height": 65, + "wireID": "ac774321-cb76-4660-989c-e13806374f6e", + "customInputs": [], + "customOutputs": [], + "data": "\"7\"", + "action": "keypad_key", + "style": { + "inheritFrom": "button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 277, + "top": 137, + "width": 65, + "height": 65, + "wireID": "5a5086da-50d0-4794-e03e-d1476892fc5a", + "customInputs": [], + "customOutputs": [], + "data": "\"8\"", + "action": "keypad_key", + "style": { + "inheritFrom": "button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 344, + "top": 137, + "width": 65, + "height": 65, + "wireID": "1ee52ded-910a-4844-f4bd-a4795124bdea", + "customInputs": [], + "customOutputs": [], + "data": "\"9\"", + "action": "keypad_key", + "style": { + "inheritFrom": "button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 210, + "top": 204, + "width": 132, + "height": 65, + "wireID": "869a4233-3a77-415c-afd0-e799d95dd70a", + "customInputs": [], + "customOutputs": [], + "data": "\"0\"", + "action": "keypad_key", + "style": { + "inheritFrom": "button" + }, + "timeline": [] + }, + { + "type": "Button", + "left": 344, + "top": 204, + "width": 65, + "height": 65, + "wireID": "abd73c1b-0256-47ad-a13d-954fe9dcb095", + "customInputs": [], + "customOutputs": [], + "data": "\".\"", + "action": "keypad_key", + "style": { + "inheritFrom": "button" + }, + "timeline": [], + "enabled": "keypad_dot_enabled", + "disabledStyle": { + "inheritFrom": "disabled_button" + } + }, + { + "type": "Text", + "left": 411, + "top": 3, + "width": 65, + "height": 65, + "wireID": "248ed0f2-6508-4fa1-d0e8-e9a4246d6695", + "customInputs": [], + "customOutputs": [], + "data": "\"\\u0020\"", + "action": "keypad_back", + "style": { + "inheritFrom": "button_icon" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 411, + "top": 70, + "width": 65, + "height": 65, + "wireID": "801ca594-78e7-4648-a8d9-ae84c729cdb7", + "customInputs": [], + "customOutputs": [], + "data": "\"\\u0022\"", + "action": "keypad_cancel", + "style": { + "inheritFrom": "button_icon" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 411, + "top": 137, + "width": 65, + "height": 132, + "wireID": "ade7f838-a0d6-41a1-fa8c-3099e9cdfa37", + "customInputs": [], + "customOutputs": [], + "data": "\"\\u0021\"", + "action": "keypad_ok", + "style": { + "inheritFrom": "button_icon" + }, + "timeline": [] + } + ], + "connectionLines": [], + "localVariables": [], + "name": "numeric_keypad", + "left": 0, + "top": 0, + "width": 480, + "height": 272, + "scaleToFit": true + }, + { + "components": [ + { + "type": "DisplayData", + "left": 0, + "top": 0, + "width": 480, + "height": 40, + "wireID": "6925d2fd-cfc8-4440-fbfe-f39b17bc971e", + "customInputs": [], + "customOutputs": [], + "data": "keypad_text", + "style": { + "inheritFrom": "text_input" + }, + "timeline": [], + "displayOption": 0 + }, + { + "type": "Container", + "left": 1, + "top": 42, + "width": 479, + "height": 230, + "wireID": "dfae0323-c66d-4c23-eac9-ee69133b2778", + "customInputs": [], + "customOutputs": [], + "style": { + "inheritFrom": "default" + }, + "timeline": [], + "widgets": [ + { + "type": "Text", + "left": 0, + "top": 0, + "width": 46, + "height": 44, + "wireID": "0de4e2f5-1cc2-4f0c-8c9e-b6b3c3e89a71", + "customInputs": [], + "customOutputs": [], + "data": "\"1\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 48, + "top": 0, + "width": 46, + "height": 44, + "wireID": "e26881f5-eeb9-4697-e998-e20e7087ab4e", + "customInputs": [], + "customOutputs": [], + "data": "\"2\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 96, + "top": 0, + "width": 46, + "height": 44, + "wireID": "a5cca9cb-1eba-4b93-e9fa-fbb1e7d4001e", + "customInputs": [], + "customOutputs": [], + "data": "\"3\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 144, + "top": 0, + "width": 46, + "height": 44, + "wireID": "fdcdb298-d120-4dd6-a2da-8d382a0be50b", + "customInputs": [], + "customOutputs": [], + "data": "\"4\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 192, + "top": 0, + "width": 46, + "height": 44, + "wireID": "bc57426c-1892-4a84-a4b8-d16701752f61", + "customInputs": [], + "customOutputs": [], + "data": "\"5\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 240, + "top": 0, + "width": 46, + "height": 44, + "wireID": "2db75b67-a108-46c4-80ba-f2c1aad2536a", + "customInputs": [], + "customOutputs": [], + "data": "\"6\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 288, + "top": 0, + "width": 46, + "height": 44, + "wireID": "722d0ff3-9436-4523-c37b-1d6485647cca", + "customInputs": [], + "customOutputs": [], + "data": "\"7\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 336, + "top": 0, + "width": 46, + "height": 44, + "wireID": "b4989870-3447-4e80-fcf8-3c3a9d18032f", + "customInputs": [], + "customOutputs": [], + "data": "\"8\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 384, + "top": 0, + "width": 46, + "height": 44, + "wireID": "05a49771-9f35-4dc0-a23b-c2a84a8f36c3", + "customInputs": [], + "customOutputs": [], + "data": "\"9\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 432, + "top": 0, + "width": 46, + "height": 44, + "wireID": "4b99b42c-0a9c-47f9-dd01-f1084963beef", + "customInputs": [], + "customOutputs": [], + "data": "\"0\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Select", + "left": 0, + "top": 46, + "width": 479, + "height": 138, + "wireID": "7bae9b9a-1bd7-4723-d9cd-f3bf590cd872", + "customInputs": [], + "customOutputs": [], + "data": "keypad_mode", + "action": "", + "style": { + "inheritFrom": "default" + }, + "timeline": [], + "widgets": [ + { + "type": "Container", + "left": 0, + "top": 0, + "width": 479, + "height": 138, + "wireID": "f1c92d20-6e63-4f46-9b17-01fbb8633df6", + "customInputs": [], + "customOutputs": [], + "style": { + "inheritFrom": "default" + }, + "timeline": [], + "widgets": [ + { + "type": "Text", + "left": 0, + "top": 0, + "width": 46, + "height": 44, + "wireID": "290fc729-e31e-46b4-e40d-dee9f39a26da", + "customInputs": [], + "customOutputs": [], + "data": "\"q\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 48, + "top": 0, + "width": 46, + "height": 44, + "wireID": "2d77bc06-03b1-4c91-b148-65566def2398", + "customInputs": [], + "customOutputs": [], + "data": "\"w\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 96, + "top": 0, + "width": 46, + "height": 44, + "wireID": "9a46864f-75a7-4243-f42d-6a526fb99ded", + "customInputs": [], + "customOutputs": [], + "data": "\"e\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 144, + "top": 0, + "width": 46, + "height": 44, + "wireID": "50046b26-4211-4566-b289-c4c493718421", + "customInputs": [], + "customOutputs": [], + "data": "\"r\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 192, + "top": 0, + "width": 46, + "height": 44, + "wireID": "0354288d-7477-485c-c5ef-0d61e03697fb", + "customInputs": [], + "customOutputs": [], + "data": "\"t\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 240, + "top": 0, + "width": 46, + "height": 44, + "wireID": "b9abe865-9f6c-477e-9723-b8e2619fc865", + "customInputs": [], + "customOutputs": [], + "data": "\"y\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 288, + "top": 0, + "width": 46, + "height": 44, + "wireID": "f29b9a65-3063-4bf0-9ddf-213f73c80cf3", + "customInputs": [], + "customOutputs": [], + "data": "\"u\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 336, + "top": 0, + "width": 46, + "height": 44, + "wireID": "eb055942-11a6-42e9-928b-9f5a96d06f51", + "customInputs": [], + "customOutputs": [], + "data": "\"i\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 384, + "top": 0, + "width": 46, + "height": 44, + "wireID": "8cfab99d-0499-4bb7-a885-8d4bc507cf6e", + "customInputs": [], + "customOutputs": [], + "data": "\"o\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 432, + "top": 0, + "width": 46, + "height": 44, + "wireID": "9256a904-fd2d-41b9-cefb-ca13828d9512", + "customInputs": [], + "customOutputs": [], + "data": "\"p\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 0, + "top": 46, + "width": 46, + "height": 44, + "wireID": "231e6275-dc1b-4d26-f89c-51908bf647ae", + "customInputs": [], + "customOutputs": [], + "data": "\"a\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 48, + "top": 46, + "width": 46, + "height": 44, + "wireID": "82b6463a-4408-4745-d3be-68c72005fc4a", + "customInputs": [], + "customOutputs": [], + "data": "\"s\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 96, + "top": 46, + "width": 46, + "height": 44, + "wireID": "b1e9f3d5-5bf8-4c33-c005-84b8441a1e02", + "customInputs": [], + "customOutputs": [], + "data": "\"d\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 144, + "top": 46, + "width": 46, + "height": 44, + "wireID": "f362cfcf-0c6e-467d-cf2e-0189c16d84fb", + "customInputs": [], + "customOutputs": [], + "data": "\"f\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 192, + "top": 46, + "width": 46, + "height": 44, + "wireID": "93096f2e-e14d-4ee2-851b-d7b797ad7a67", + "customInputs": [], + "customOutputs": [], + "data": "\"g\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 240, + "top": 46, + "width": 46, + "height": 44, + "wireID": "4286e6da-ab6d-4941-a69b-49e2d3d7df03", + "customInputs": [], + "customOutputs": [], + "data": "\"h\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 288, + "top": 46, + "width": 46, + "height": 44, + "wireID": "46a8b962-8425-4b3a-d769-7906be7e9bbe", + "customInputs": [], + "customOutputs": [], + "data": "\"j\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 336, + "top": 46, + "width": 46, + "height": 44, + "wireID": "f50d36d7-7697-4e59-a487-94335e3a195b", + "customInputs": [], + "customOutputs": [], + "data": "\"k\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 384, + "top": 46, + "width": 46, + "height": 44, + "wireID": "8b7b8e09-fda3-4b90-bcc3-6d849851beaa", + "customInputs": [], + "customOutputs": [], + "data": "\"l\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 432, + "top": 46, + "width": 46, + "height": 44, + "wireID": "bb5b410b-3ce2-468e-9c85-411825710dbf", + "customInputs": [], + "customOutputs": [], + "data": "\"#\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 0, + "top": 92, + "width": 46, + "height": 44, + "wireID": "b7784791-952f-408e-8b6e-6bff1851312f", + "customInputs": [], + "customOutputs": [], + "data": "\"z\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 48, + "top": 92, + "width": 46, + "height": 44, + "wireID": "66ad955b-6ae0-46d2-e99d-41c47c2cb033", + "customInputs": [], + "customOutputs": [], + "data": "\"x\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 96, + "top": 92, + "width": 46, + "height": 44, + "wireID": "10674392-54a2-4ed4-a6af-3676a5b952ac", + "customInputs": [], + "customOutputs": [], + "data": "\"c\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 144, + "top": 92, + "width": 46, + "height": 44, + "wireID": "1ac6a97f-3326-4d7c-954c-d0b7559e9c42", + "customInputs": [], + "customOutputs": [], + "data": "\"v\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 192, + "top": 92, + "width": 46, + "height": 44, + "wireID": "c56bcba5-2cc2-4d5c-aea2-12ba631d638e", + "customInputs": [], + "customOutputs": [], + "data": "\"b\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 240, + "top": 92, + "width": 46, + "height": 44, + "wireID": "61368151-22ce-40ee-ea33-c8d47121cebf", + "customInputs": [], + "customOutputs": [], + "data": "\"n\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 288, + "top": 92, + "width": 46, + "height": 44, + "wireID": "ecd96198-b877-444c-c329-875f29be7237", + "customInputs": [], + "customOutputs": [], + "data": "\"m\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 336, + "top": 92, + "width": 46, + "height": 44, + "wireID": "8c8a454e-b14c-497a-a43c-185a3c0dd23f", + "customInputs": [], + "customOutputs": [], + "data": "\",\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 384, + "top": 92, + "width": 46, + "height": 44, + "wireID": "39911921-9a35-4759-aa8c-de3d4564a2a1", + "customInputs": [], + "customOutputs": [], + "data": "\".\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 432, + "top": 92, + "width": 46, + "height": 44, + "wireID": "1d54c295-679b-4c7e-fe67-b7cbbca516a0", + "customInputs": [], + "customOutputs": [], + "data": "\"/\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + } + ], + "layout": "static" + }, + { + "type": "Container", + "left": 0, + "top": 0, + "width": 479, + "height": 138, + "wireID": "dffe371c-ca62-47f9-99c7-539491b1fadc", + "customInputs": [], + "customOutputs": [], + "style": { + "inheritFrom": "default" + }, + "timeline": [], + "widgets": [ + { + "type": "Text", + "left": 0, + "top": 0, + "width": 46, + "height": 44, + "wireID": "a235e62a-af95-4b72-a777-a5614e1b0f0b", + "customInputs": [], + "customOutputs": [], + "data": "\"Q\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 48, + "top": 0, + "width": 46, + "height": 44, + "wireID": "1dae7fd3-559e-418f-a2db-20a1091c6c33", + "customInputs": [], + "customOutputs": [], + "data": "\"W\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 96, + "top": 0, + "width": 46, + "height": 44, + "wireID": "0ce8816e-ac10-4cbd-fd97-3dcdcf634c76", + "customInputs": [], + "customOutputs": [], + "data": "\"E\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 144, + "top": 0, + "width": 46, + "height": 44, + "wireID": "9346e350-b091-4563-c0ed-8b3650d17e80", + "customInputs": [], + "customOutputs": [], + "data": "\"R\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 192, + "top": 0, + "width": 46, + "height": 44, + "wireID": "60ad6c8a-478d-4030-a1c0-af5c70805042", + "customInputs": [], + "customOutputs": [], + "data": "\"T\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 240, + "top": 0, + "width": 46, + "height": 44, + "wireID": "da81d3df-578b-4949-f95d-f19cc98526c0", + "customInputs": [], + "customOutputs": [], + "data": "\"Y\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 288, + "top": 0, + "width": 46, + "height": 44, + "wireID": "197a7bfe-ec68-49a3-9089-3de74da180ac", + "customInputs": [], + "customOutputs": [], + "data": "\"U\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 336, + "top": 0, + "width": 46, + "height": 44, + "wireID": "09b80fa2-8adc-4f92-a3e2-2bc4e697bbe9", + "customInputs": [], + "customOutputs": [], + "data": "\"I\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 384, + "top": 0, + "width": 46, + "height": 44, + "wireID": "34100e43-9530-4f2c-a953-4dd933be9357", + "customInputs": [], + "customOutputs": [], + "data": "\"O\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 432, + "top": 0, + "width": 46, + "height": 44, + "wireID": "3f1cc81d-1d88-4161-f7fa-94eba55e4715", + "customInputs": [], + "customOutputs": [], + "data": "\"P\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 0, + "top": 46, + "width": 46, + "height": 44, + "wireID": "ebe7a04b-6d4e-480e-9ba2-222c97701f05", + "customInputs": [], + "customOutputs": [], + "data": "\"A\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 48, + "top": 46, + "width": 46, + "height": 44, + "wireID": "3b508039-84fd-4d2e-9f99-c624aa324253", + "customInputs": [], + "customOutputs": [], + "data": "\"S\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 96, + "top": 46, + "width": 46, + "height": 44, + "wireID": "a8e93c24-2558-4879-f218-57c2d6b1dd4f", + "customInputs": [], + "customOutputs": [], + "data": "\"D\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 144, + "top": 46, + "width": 46, + "height": 44, + "wireID": "1beabac5-638e-4fe4-aa4c-fddeada03838", + "customInputs": [], + "customOutputs": [], + "data": "\"F\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 192, + "top": 46, + "width": 46, + "height": 44, + "wireID": "f4615eb4-040e-49ca-d23e-7c6707863706", + "customInputs": [], + "customOutputs": [], + "data": "\"G\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 240, + "top": 46, + "width": 46, + "height": 44, + "wireID": "e10019a4-a186-4d5c-83c1-6cb31b2c15c8", + "customInputs": [], + "customOutputs": [], + "data": "\"H\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 288, + "top": 46, + "width": 46, + "height": 44, + "wireID": "40db3cad-5380-4f2e-d038-516f62645bb9", + "customInputs": [], + "customOutputs": [], + "data": "\"J\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 336, + "top": 46, + "width": 46, + "height": 44, + "wireID": "c7fd7ad9-2d7e-4f27-b5fb-e38dc0c84556", + "customInputs": [], + "customOutputs": [], + "data": "\"K\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 384, + "top": 46, + "width": 46, + "height": 44, + "wireID": "64524895-9da2-4f72-fbd8-49e5b02c24e9", + "customInputs": [], + "customOutputs": [], + "data": "\"L\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 432, + "top": 46, + "width": 46, + "height": 44, + "wireID": "cb3ba876-39e9-435a-d61e-4159429b02fa", + "customInputs": [], + "customOutputs": [], + "data": "\"#\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 0, + "top": 92, + "width": 46, + "height": 44, + "wireID": "984496da-2fd2-49f7-80b6-f3a321a9017c", + "customInputs": [], + "customOutputs": [], + "data": "\"Z\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 48, + "top": 92, + "width": 46, + "height": 44, + "wireID": "ddff995e-dbef-40ff-edbb-646c2869fb22", + "customInputs": [], + "customOutputs": [], + "data": "\"X\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 96, + "top": 92, + "width": 46, + "height": 44, + "wireID": "78854a8b-a2f0-4996-99dd-0afb32d85631", + "customInputs": [], + "customOutputs": [], + "data": "\"C\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 144, + "top": 92, + "width": 46, + "height": 44, + "wireID": "10c3ac63-caef-4b7d-86fd-1a8167da37d6", + "customInputs": [], + "customOutputs": [], + "data": "\"V\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 192, + "top": 92, + "width": 46, + "height": 44, + "wireID": "b04d0689-c42e-432d-a62a-a6ab6909d4df", + "customInputs": [], + "customOutputs": [], + "data": "\"B\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 240, + "top": 92, + "width": 46, + "height": 44, + "wireID": "6004a29a-0f97-4924-8d4e-0d54f2e2db80", + "customInputs": [], + "customOutputs": [], + "data": "\"N\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 288, + "top": 92, + "width": 46, + "height": 44, + "wireID": "5c035883-b6a8-4879-d9c2-243074954269", + "customInputs": [], + "customOutputs": [], + "data": "\"M\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 336, + "top": 92, + "width": 46, + "height": 44, + "wireID": "c93ef652-b146-45d8-9e2f-ee41e015cc4e", + "customInputs": [], + "customOutputs": [], + "data": "\",\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 384, + "top": 92, + "width": 46, + "height": 44, + "wireID": "53ea664e-7065-4315-d0b0-3aee0090d2db", + "customInputs": [], + "customOutputs": [], + "data": "\".\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 432, + "top": 92, + "width": 46, + "height": 44, + "wireID": "4d59b749-2eb4-45cf-9d6b-21c657299b4b", + "customInputs": [], + "customOutputs": [], + "data": "\"/\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + } + ], + "layout": "static" + }, + { + "type": "Container", + "left": 0, + "top": 0, + "width": 479, + "height": 138, + "wireID": "75a8cd27-2af8-491e-8a25-6c2893964e3b", + "customInputs": [], + "customOutputs": [], + "style": { + "inheritFrom": "default" + }, + "timeline": [], + "widgets": [ + { + "type": "Text", + "left": 0, + "top": 0, + "width": 46, + "height": 44, + "wireID": "185bb9e1-47ed-4738-df89-539f337e3024", + "customInputs": [], + "customOutputs": [], + "data": "\"!\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 48, + "top": 0, + "width": 46, + "height": 44, + "wireID": "61fd8501-8fa1-4a12-9535-4fb0c9c2f9ff", + "customInputs": [], + "customOutputs": [], + "data": "\"@\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 96, + "top": 0, + "width": 46, + "height": 44, + "wireID": "b4adcea6-de33-417b-fd4c-acc8a08576ff", + "customInputs": [], + "customOutputs": [], + "data": "\"#\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 144, + "top": 0, + "width": 46, + "height": 44, + "wireID": "0091a152-97d5-4def-f07c-38a6e44bc724", + "customInputs": [], + "customOutputs": [], + "data": "\"$\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 192, + "top": 0, + "width": 46, + "height": 44, + "wireID": "5e4242bb-95a4-4355-e884-f8524b88183a", + "customInputs": [], + "customOutputs": [], + "data": "\"%\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 240, + "top": 0, + "width": 46, + "height": 44, + "wireID": "41acdb31-ec96-489b-8b6e-d3755df7b1ef", + "customInputs": [], + "customOutputs": [], + "data": "\"^\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 288, + "top": 0, + "width": 46, + "height": 44, + "wireID": "856f9949-452b-4720-bd4a-e8eec32d684e", + "customInputs": [], + "customOutputs": [], + "data": "\"&\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 336, + "top": 0, + "width": 46, + "height": 44, + "wireID": "ae71f775-6d22-40ee-ad40-054673906318", + "customInputs": [], + "customOutputs": [], + "data": "\"*\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 384, + "top": 0, + "width": 46, + "height": 44, + "wireID": "bfc38b3a-2464-4567-cd04-f87d6f2f62c0", + "customInputs": [], + "customOutputs": [], + "data": "\"(\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 432, + "top": 0, + "width": 46, + "height": 44, + "wireID": "4ac08efa-f5ca-43b9-9e70-93efb705caee", + "customInputs": [], + "customOutputs": [], + "data": "\")\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 0, + "top": 46, + "width": 46, + "height": 44, + "wireID": "c185aae3-38f7-4ee2-8dd2-a5a3861094a9", + "customInputs": [], + "customOutputs": [], + "data": "\"+\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 48, + "top": 46, + "width": 46, + "height": 44, + "wireID": "9c07c64e-67f3-4a27-97d3-9f6609873d4f", + "customInputs": [], + "customOutputs": [], + "data": "\"-\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 96, + "top": 46, + "width": 46, + "height": 44, + "wireID": "d834cf3c-7a35-431a-876a-055b7a3b3c98", + "customInputs": [], + "customOutputs": [], + "data": "\"=\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 144, + "top": 46, + "width": 46, + "height": 44, + "wireID": "a7662dfc-513b-417e-bdf0-bf1da5b0afdf", + "customInputs": [], + "customOutputs": [], + "data": "\"_\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 192, + "top": 46, + "width": 46, + "height": 44, + "wireID": "d2f4d2a8-d02c-4bef-aa8f-6f31e37847df", + "customInputs": [], + "customOutputs": [], + "data": "\"[\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 240, + "top": 46, + "width": 46, + "height": 44, + "wireID": "70e81285-0e40-4ba1-9572-da6c6ddb3e55", + "customInputs": [], + "customOutputs": [], + "data": "\"]\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 288, + "top": 46, + "width": 46, + "height": 44, + "wireID": "7cae08da-7d1e-4a12-8acf-144af3c93a18", + "customInputs": [], + "customOutputs": [], + "data": "\"{\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 336, + "top": 46, + "width": 46, + "height": 44, + "wireID": "0a2ca474-f3f4-4632-887e-608d5dddbc8b", + "customInputs": [], + "customOutputs": [], + "data": "\"}\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 384, + "top": 46, + "width": 46, + "height": 44, + "wireID": "8632e018-697a-459d-fcd9-d7d0621bb668", + "customInputs": [], + "customOutputs": [], + "data": "\"\\\\\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 432, + "top": 46, + "width": 46, + "height": 44, + "wireID": "b085d122-6421-4126-e6cf-baf04a765e82", + "customInputs": [], + "customOutputs": [], + "data": "\"|\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 0, + "top": 92, + "width": 46, + "height": 44, + "wireID": "49eac5a5-1d38-455c-fb62-0dddfc3c6ccb", + "customInputs": [], + "customOutputs": [], + "data": "\"?\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 48, + "top": 92, + "width": 46, + "height": 44, + "wireID": "7ee78199-8c74-4dc8-aae3-d0cd744312e0", + "customInputs": [], + "customOutputs": [], + "data": "\"`\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 96, + "top": 92, + "width": 46, + "height": 44, + "wireID": "7bc3dca2-7716-4aac-84c1-e72ac43467e2", + "customInputs": [], + "customOutputs": [], + "data": "\"~\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 144, + "top": 92, + "width": 46, + "height": 44, + "wireID": "774b7cd3-8548-469c-c9a2-50d6acf200b6", + "customInputs": [], + "customOutputs": [], + "data": "\";\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 192, + "top": 92, + "width": 46, + "height": 44, + "wireID": "df385344-c774-4643-82fa-0b40e589b900", + "customInputs": [], + "customOutputs": [], + "data": "\":\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 240, + "top": 92, + "width": 46, + "height": 44, + "wireID": "679c1c27-7149-46d6-ae55-b0e90d318fd2", + "customInputs": [], + "customOutputs": [], + "data": "\"'\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 288, + "top": 92, + "width": 46, + "height": 44, + "wireID": "87971d4d-5bd6-48ae-a755-5afd5f0af9e0", + "customInputs": [], + "customOutputs": [], + "data": "\"\\\"\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 336, + "top": 92, + "width": 46, + "height": 44, + "wireID": "1c0fd089-41b5-408b-a091-614b6acf368a", + "customInputs": [], + "customOutputs": [], + "data": "\"<\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 384, + "top": 92, + "width": 46, + "height": 44, + "wireID": "eb38fc09-6928-4077-9753-957149d15dd9", + "customInputs": [], + "customOutputs": [], + "data": "\">\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 432, + "top": 92, + "width": 46, + "height": 44, + "wireID": "e1c22683-e65c-48a2-cc5c-f9b9cb9ca26f", + "customInputs": [], + "customOutputs": [], + "data": "\"/\"", + "action": "keypad_key", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + } + ], + "layout": "static" + } + ] + }, + { + "type": "Text", + "left": 0, + "top": 184, + "width": 70, + "height": 44, + "wireID": "39abf419-0b2f-4ba3-d0ce-1b3411e4767d", + "customInputs": [], + "customOutputs": [], + "data": "\"\\u0020\"", + "action": "keypad_back", + "style": { + "inheritFrom": "text_button_icon" + }, + "timeline": [] + }, + { + "type": "Select", + "left": 72, + "top": 184, + "width": 70, + "height": 44, + "wireID": "ec292715-b83a-4e68-9d0f-d7d4110fa54f", + "customInputs": [], + "customOutputs": [], + "data": "keypad_mode", + "action": "toggle_keypad_mode", + "style": { + "inheritFrom": "default" + }, + "timeline": [], + "widgets": [ + { + "type": "Text", + "left": 0, + "top": 0, + "width": 70, + "height": 44, + "wireID": "51686f97-ca54-490a-dccf-46e7c6a5d23a", + "customInputs": [], + "customOutputs": [], + "data": "\"ABC\"", + "action": "", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 0, + "top": 0, + "width": 70, + "height": 44, + "wireID": "6d60ac60-e82c-4337-f116-b2b08fb50120", + "customInputs": [], + "customOutputs": [], + "data": "\"sym\"", + "action": "", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 0, + "top": 0, + "width": 70, + "height": 44, + "wireID": "3abaf55c-4fc8-461f-95d8-7ca69e7fb069", + "customInputs": [], + "customOutputs": [], + "data": "\"abc\"", + "action": "", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + } + ] + }, + { + "type": "Text", + "left": 144, + "top": 184, + "width": 190, + "height": 44, + "wireID": "bbd55df5-ea2a-48f6-dea3-9d4620a30d03", + "customInputs": [], + "customOutputs": [], + "data": "\"Space\"", + "action": "keypad_space", + "style": { + "inheritFrom": "text_button" + }, + "timeline": [] + }, + { + "type": "Button", + "left": 336, + "top": 184, + "width": 94, + "height": 44, + "wireID": "97a60ef8-eaba-4242-9968-5d3e73218011", + "customInputs": [], + "customOutputs": [], + "data": "\"\\u0021\"", + "action": "keypad_ok", + "style": { + "inheritFrom": "text_button_icon" + }, + "timeline": [], + "enabled": "keypad_ok_enabled", + "disabledStyle": { + "inheritFrom": "text_button_icon_disabled" + } + }, + { + "type": "Text", + "left": 432, + "top": 184, + "width": 46, + "height": 44, + "wireID": "51482dc7-3716-4f20-9184-ac9644401ed1", + "customInputs": [], + "customOutputs": [], + "data": "\"\\u0022\"", + "action": "keypad_cancel", + "style": { + "inheritFrom": "text_button_icon" + }, + "timeline": [] + } + ], + "layout": "static" + } + ], + "connectionLines": [], + "localVariables": [], + "name": "keyboard", + "left": 0, + "top": 0, + "width": 480, + "height": 272, + "scaleToFit": true + }, + { + "components": [ + { + "type": "TextWidget", + "left": 0, + "top": 0, + "width": 120, + "height": 48, + "wireID": "406a8ddd-e285-4ce5-f145-9d81df0daefc", + "customInputs": [], + "customOutputs": [], + "asOutputProperties": [ + "action" + ], + "data": "\"Albert Einstein\"", + "style": { + "inheritFrom": "tab" + }, + "timeline": [] + }, + { + "type": "MultilineTextWidget", + "left": 94, + "top": 67, + "width": 400, + "height": 35, + "wireID": "b1252ce5-b912-46b2-8161-13656dc15f66", + "customInputs": [], + "customOutputs": [], + "data": "\"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe.\"", + "style": { + "inheritFrom": "quote" + }, + "timeline": [ + { + "start": 0, + "end": 0, + "left": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": true, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 1, + "easingFunction": "linear" + } + }, + { + "start": 0, + "end": 0.5, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 0.5, + "end": 1, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 1, + "end": 1.5, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 1.5, + "end": 2, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + } + ] + }, + { + "type": "TextWidget", + "left": 120, + "top": 0, + "width": 120, + "height": 48, + "wireID": "e2405229-1953-4aaa-e2fd-bfae07344ee5", + "customInputs": [], + "customOutputs": [], + "asOutputProperties": [ + "action" + ], + "data": "\"Marilyn Monroe\"", + "style": { + "inheritFrom": "tab" + }, + "timeline": [], + "name": "" + }, + { + "type": "MultilineTextWidget", + "left": 94, + "top": 102, + "width": 400, + "height": 32, + "wireID": "b83d3369-19c7-47db-9e5c-d12d243cc026", + "customInputs": [], + "customOutputs": [], + "data": "\"I'm selfish, impatient and a little insecure. I make mistakes, I am out of control and at times hard to handle. But if you can't handle me at my worst, then you sure as hell don't deserve me at my best.\"", + "style": { + "inheritFrom": "quote" + }, + "timeline": [ + { + "start": 0, + "end": 0, + "left": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": true, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 0, + "end": 0.5, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 1, + "easingFunction": "linear" + } + }, + { + "start": 0.5, + "end": 1, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 1, + "end": 1.5, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 1.5, + "end": 2, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + } + ] + }, + { + "type": "TextWidget", + "left": 240, + "top": 0, + "width": 120, + "height": 48, + "wireID": "6f867542-f447-49ca-b3e3-12774a732bd1", + "customInputs": [], + "customOutputs": [], + "asOutputProperties": [ + "action" + ], + "data": "\"Albert Camus\"", + "style": { + "inheritFrom": "tab" + }, + "timeline": [] + }, + { + "type": "MultilineTextWidget", + "left": 94, + "top": 134, + "width": 400, + "height": 32, + "wireID": "7afb9b2b-3372-447a-baa8-e2dc81bb17c3", + "customInputs": [], + "customOutputs": [], + "data": "\"Don’t walk in front of me… I may not follow Don’t walk behind me... I may not lead Walk beside me... just be my friend\"", + "style": { + "inheritFrom": "quote" + }, + "timeline": [ + { + "start": 0, + "end": 0, + "left": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": true, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 0, + "end": 0.5, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 0.5, + "end": 1, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 1, + "easingFunction": "linear" + } + }, + { + "start": 1, + "end": 1.5, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 1.5, + "end": 2, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + } + ] + }, + { + "type": "TextWidget", + "left": 360, + "top": 0, + "width": 120, + "height": 48, + "wireID": "e06dd50e-680a-4c74-c6bd-14675d4426c5", + "customInputs": [], + "customOutputs": [], + "asOutputProperties": [ + "action" + ], + "data": "\"Oscar Wilde\"", + "style": { + "inheritFrom": "tab" + }, + "timeline": [] + }, + { + "type": "MultilineTextWidget", + "left": 94, + "top": 166, + "width": 400, + "height": 32, + "wireID": "9217742b-9901-4de3-a6ee-c4e68bdc8860", + "customInputs": [], + "customOutputs": [], + "data": "\"I am so clever that sometimes I don't understand a single word of what I am saying.\"", + "style": { + "inheritFrom": "quote" + }, + "timeline": [ + { + "start": 0, + "end": 0, + "left": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": true, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 0, + "end": 0.5, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 0.5, + "end": 1, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 1, + "end": 1.5, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 1, + "easingFunction": "linear" + } + }, + { + "start": 1.5, + "end": 2, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + } + ] + }, + { + "type": "TextWidget", + "left": 480, + "top": 0, + "width": 120, + "height": 48, + "wireID": "9cec254a-dfe8-48bb-91c7-40d798cac885", + "customInputs": [], + "customOutputs": [], + "asOutputProperties": [ + "action" + ], + "data": "\"Mark Twain\"", + "style": { + "inheritFrom": "tab" + }, + "timeline": [] + }, + { + "type": "MultilineTextWidget", + "left": 94, + "top": 198, + "width": 400, + "height": 32, + "wireID": "b6b62a99-bfca-46d8-e490-89e4f151c581", + "customInputs": [], + "customOutputs": [], + "data": "\"If you tell the truth, you don't have to remember anything.\"", + "style": { + "inheritFrom": "quote" + }, + "locked": false, + "timeline": [ + { + "start": 0, + "end": 0, + "left": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": true, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 0, + "end": 0.5, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 0.5, + "end": 1, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 1, + "end": 1.5, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + } + }, + { + "start": 1.5, + "end": 2, + "left": { + "enabled": false, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 52, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "value": 600, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 180, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": true, + "value": 1, + "easingFunction": "linear" + } + } + ] + }, + { + "type": "ContainerWidget", + "left": 0, + "top": 48, + "width": 120, + "height": 4, + "wireID": "2411340e-7a68-46b0-960e-8ee93401830d", + "customInputs": [], + "customOutputs": [], + "style": { + "inheritFrom": "default", + "backgroundColor": "#b9f3f0" + }, + "timeline": [ + { + "start": 0, + "end": 0, + "left": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 48, + "easingFunction": "linear" + }, + "width": { + "enabled": true, + "value": 120, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 4, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + }, + { + "start": 0, + "end": 0.5, + "left": { + "enabled": true, + "value": 120, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 48, + "easingFunction": "linear" + }, + "width": { + "enabled": true, + "value": 120, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 4, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + }, + { + "start": 0.5, + "end": 1, + "left": { + "enabled": true, + "value": 240, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 48, + "easingFunction": "linear" + }, + "width": { + "enabled": true, + "value": 120, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 4, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + }, + { + "start": 1, + "end": 1.5, + "left": { + "enabled": true, + "value": 360, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 48, + "easingFunction": "linear" + }, + "width": { + "enabled": true, + "value": 120, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 4, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + }, + { + "start": 1.5, + "end": 2, + "left": { + "enabled": true, + "value": 480, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 48, + "easingFunction": "linear" + }, + "width": { + "enabled": true, + "value": 120, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 4, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + } + ], + "widgets": [], + "layout": "static" + }, + { + "type": "AnimateActionComponent", + "left": 863, + "top": -447, + "width": 410, + "height": 55, + "wireID": "92a50d75-69a7-474d-ff90-396eca1a2394", + "customInputs": [], + "customOutputs": [], + "from": "Flow.pageTimelinePosition()", + "to": "0", + "speed": "Math.abs(Flow.pageTimelinePosition() - 0) / 0.25" + }, + { + "type": "AnimateActionComponent", + "left": 863, + "top": -374, + "width": 435, + "height": 55, + "wireID": "931be737-c10b-4ba3-9e16-6934234e998e", + "customInputs": [], + "customOutputs": [], + "from": "Flow.pageTimelinePosition()", + "to": "0.5", + "speed": "Math.abs(Flow.pageTimelinePosition() - 0.5) / 0.25" + }, + { + "type": "AnimateActionComponent", + "left": 863, + "top": -300, + "width": 435, + "height": 55, + "wireID": "4459e9e5-0243-4ead-df38-1829c069c450", + "customInputs": [], + "customOutputs": [], + "from": "Flow.pageTimelinePosition()", + "to": "1.0", + "speed": "Math.abs(Flow.pageTimelinePosition() - 1.0) / 0.25" + }, + { + "type": "AnimateActionComponent", + "left": 863, + "top": -227, + "width": 435, + "height": 55, + "wireID": "246943be-229b-47a2-b01f-a1bb7bcdc1d4", + "customInputs": [], + "customOutputs": [], + "from": "Flow.pageTimelinePosition()", + "to": "1.5", + "speed": "Math.abs(Flow.pageTimelinePosition() - 1.5) / 0.25" + }, + { + "type": "AnimateActionComponent", + "left": 863, + "top": -154, + "width": 435, + "height": 55, + "wireID": "64958314-8598-4e1b-dc16-0c01c7600477", + "customInputs": [], + "customOutputs": [], + "from": "Flow.pageTimelinePosition()", + "to": "2.0", + "speed": "Math.abs(Flow.pageTimelinePosition() - 2.0) / 0.25" + }, + { + "type": "StartActionComponent", + "left": -172, + "top": -124, + "width": 87, + "height": 25, + "wireID": "1161d81e-090e-43c2-e2ec-8e1097125f33", + "customInputs": [], + "customOutputs": [] + }, + { + "type": "LayoutViewWidget", + "left": 4, + "top": 248, + "width": 30, + "height": 20, + "wireID": "f88273ea-a4a6-4162-f828-280e9b82c4f9", + "customInputs": [], + "customOutputs": [], + "style": { + "inheritFrom": "default" + }, + "timeline": [], + "layout": "anim1" + }, + { + "type": "RectangleWidget", + "left": 58, + "top": 248, + "width": 436, + "height": 20, + "wireID": "a8ed332c-5da2-4a5a-c089-460053d7b347", + "customInputs": [], + "customOutputs": [], + "style": { + "inheritFrom": "default", + "backgroundColor": "#eee30f" + }, + "timeline": [ + { + "start": 0, + "end": 0, + "left": { + "enabled": false, + "value": 58, + "easingFunction": "linear" + }, + "top": { + "enabled": false, + "value": 248, + "easingFunction": "linear" + }, + "width": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "height": { + "enabled": false, + "value": 20, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + }, + { + "start": 0, + "end": 2, + "left": { + "enabled": true, + "value": 58, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 248, + "easingFunction": "linear" + }, + "width": { + "enabled": true, + "value": 422, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 20, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + } + ] + }, + { + "type": "ButtonWidget", + "left": 510, + "top": 230, + "width": 90, + "height": 42, + "wireID": "107d076f-b79d-40ad-df99-548be14a5c76", + "customInputs": [], + "customOutputs": [], + "asOutputProperties": [ + "action" + ], + "data": "\"BACK\"", + "style": { + "inheritFrom": "button" + }, + "timeline": [], + "disabledStyle": { + "inheritFrom": "button_disabled" + } + }, + { + "type": "ShowPageActionComponent", + "left": 906, + "top": 504, + "width": 97, + "height": 55, + "wireID": "d5666b94-c9ce-40cd-e4eb-843e8283521a", + "customInputs": [], + "customOutputs": [], + "page": "main" + } + ], + "connectionLines": [ + { + "source": "1161d81e-090e-43c2-e2ec-8e1097125f33", + "output": "@seqout", + "target": "92a50d75-69a7-474d-ff90-396eca1a2394", + "input": "@seqin" + }, + { + "source": "406a8ddd-e285-4ce5-f145-9d81df0daefc", + "output": "action", + "target": "92a50d75-69a7-474d-ff90-396eca1a2394", + "input": "@seqin" + }, + { + "source": "e2405229-1953-4aaa-e2fd-bfae07344ee5", + "output": "action", + "target": "931be737-c10b-4ba3-9e16-6934234e998e", + "input": "@seqin" + }, + { + "source": "6f867542-f447-49ca-b3e3-12774a732bd1", + "output": "action", + "target": "4459e9e5-0243-4ead-df38-1829c069c450", + "input": "@seqin" + }, + { + "source": "e06dd50e-680a-4c74-c6bd-14675d4426c5", + "output": "action", + "target": "246943be-229b-47a2-b01f-a1bb7bcdc1d4", + "input": "@seqin" + }, + { + "source": "9cec254a-dfe8-48bb-91c7-40d798cac885", + "output": "action", + "target": "64958314-8598-4e1b-dc16-0c01c7600477", + "input": "@seqin" + }, + { + "source": "1161d81e-090e-43c2-e2ec-8e1097125f33", + "output": "@seqout", + "target": "f88273ea-a4a6-4162-f828-280e9b82c4f9", + "input": "@seqin" + }, + { + "source": "107d076f-b79d-40ad-df99-548be14a5c76", + "output": "action", + "target": "d5666b94-c9ce-40cd-e4eb-843e8283521a", + "input": "@seqin" + } + ], + "localVariables": [], + "name": "anim_demo", + "style": "background", + "left": 0, + "top": 0, + "width": 600, + "height": 272, + "scaleToFit": true + }, + { + "components": [ + { + "type": "RectangleWidget", + "left": 0, + "top": 0, + "width": 8, + "height": 20, + "wireID": "17541954-3e22-48af-866a-62fa2d1da19c", + "customInputs": [], + "customOutputs": [], + "style": { + "inheritFrom": "block" + }, + "timeline": [ + { + "start": 0, + "end": 0, + "left": { + "enabled": false, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 20, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + }, + { + "start": 0, + "end": 0.5, + "left": { + "enabled": false, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 20, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + }, + { + "start": 2.5, + "end": 3, + "left": { + "enabled": false, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 20, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + } + ] + }, + { + "type": "RectangleWidget", + "left": 11, + "top": 0, + "width": 8, + "height": 20, + "wireID": "9ed45c07-f3ca-4127-cf64-fac57bb00432", + "customInputs": [], + "customOutputs": [], + "style": { + "inheritFrom": "block" + }, + "timeline": [ + { + "start": 0, + "end": 0, + "left": { + "enabled": false, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 20, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + }, + { + "start": 0.5, + "end": 1, + "left": { + "enabled": false, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 20, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + }, + { + "start": 2, + "end": 2.5, + "left": { + "enabled": false, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 20, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + } + ] + }, + { + "type": "RectangleWidget", + "left": 22, + "top": 0, + "width": 8, + "height": 20, + "wireID": "0a636500-228c-4b5a-d596-b9c3168cb12f", + "customInputs": [], + "customOutputs": [], + "style": { + "inheritFrom": "block" + }, + "timeline": [ + { + "start": 0, + "end": 0, + "left": { + "enabled": false, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 20, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + }, + { + "start": 1, + "end": 1.5, + "left": { + "enabled": true, + "value": 22, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "width": { + "enabled": true, + "value": 8, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 20, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + }, + { + "start": 1.5, + "end": 2, + "left": { + "enabled": false, + "easingFunction": "linear" + }, + "top": { + "enabled": true, + "value": 20, + "easingFunction": "linear" + }, + "width": { + "enabled": false, + "easingFunction": "linear" + }, + "height": { + "enabled": true, + "value": 0, + "easingFunction": "linear" + }, + "scaleX": { + "enabled": false, + "easingFunction": "linear" + }, + "scaleY": { + "enabled": false, + "easingFunction": "linear" + }, + "rotate": { + "enabled": false, + "easingFunction": "linear" + }, + "opacity": { + "enabled": false, + "easingFunction": "linear" + } + } + ] + }, + { + "type": "AnimateActionComponent", + "left": 5, + "top": -115, + "width": 188, + "height": 55, + "wireID": "63ff1f66-9745-4a71-ac43-e28d1f980833", + "customInputs": [], + "customOutputs": [], + "from": "0", + "to": "3", + "speed": "2" + }, + { + "type": "StartActionComponent", + "left": -126, + "top": -115, + "width": 87, + "height": 25, + "wireID": "ff1e2a92-1ab0-4c94-90d4-8207da21190f", + "customInputs": [], + "customOutputs": [] + } + ], + "connectionLines": [ + { + "source": "ff1e2a92-1ab0-4c94-90d4-8207da21190f", + "output": "@seqout", + "target": "63ff1f66-9745-4a71-ac43-e28d1f980833", + "input": "@seqin" + }, + { + "source": "63ff1f66-9745-4a71-ac43-e28d1f980833", + "output": "@seqout", + "target": "63ff1f66-9745-4a71-ac43-e28d1f980833", + "input": "@seqin" + } + ], + "localVariables": [], + "name": "anim1", + "left": 0, + "top": 0, + "width": 30, + "height": 20, + "isUsedAsCustomWidget": true + }, + { + "components": [ + { + "type": "ButtonWidget", + "left": 40, + "top": 42, + "width": 180, + "height": 80, + "wireID": "6d46dba4-8d89-467a-9b6e-32530dc63a4a", + "customInputs": [], + "customOutputs": [], + "asOutputProperties": [ + "action" + ], + "data": "\"TEXT INPUT DEMO\"", + "style": { + "inheritFrom": "button" + }, + "timeline": [], + "disabledStyle": { + "inheritFrom": "button_disabled" + } + }, + { + "type": "ButtonWidget", + "left": 310, + "top": 42, + "width": 180, + "height": 80, + "wireID": "975e70e8-d8c8-44f6-cd30-333def5ec885", + "customInputs": [], + "customOutputs": [], + "asOutputProperties": [ + "action" + ], + "data": "\"NUMBER INPUT DEMO\"", + "style": { + "inheritFrom": "button" + }, + "timeline": [], + "disabledStyle": { + "inheritFrom": "button_disabled" + } + }, + { + "type": "ButtonWidget", + "left": 579, + "top": 42, + "width": 180, + "height": 80, + "wireID": "85669a4c-6dc9-410d-ed22-cc7579346496", + "customInputs": [], + "customOutputs": [], + "asOutputProperties": [ + "action" + ], + "data": "\"ROLLER INPUT DEMO\"", + "style": { + "inheritFrom": "button" + }, + "timeline": [], + "disabledStyle": { + "inheritFrom": "button_disabled" + } + }, + { + "type": "ButtonWidget", + "left": 669, + "top": 411, + "width": 122, + "height": 61, + "wireID": "81b5ea3b-b9d2-4524-e14c-ab30a244d169", + "customInputs": [], + "customOutputs": [], + "asOutputProperties": [ + "action" + ], + "data": "\"BACK\"", + "style": { + "inheritFrom": "button" + }, + "timeline": [], + "disabledStyle": { + "inheritFrom": "button_disabled" + } + }, + { + "type": "ShowPageActionComponent", + "left": 852, + "top": 480, + "width": 97, + "height": 55, + "wireID": "a2565c16-2b80-40b0-b603-5d0abaf26764", + "customInputs": [], + "customOutputs": [], + "page": "main" + }, + { + "type": "ShowPageActionComponent", + "left": 759, + "top": -130, + "width": 121, + "height": 55, + "wireID": "a4c23d02-0185-4c6b-8edd-37ececcc7c75", + "customInputs": [], + "customOutputs": [], + "page": "roller_input_demo" + }, + { + "type": "ShowKeyboardActionComponent", + "left": 40, + "top": -129, + "width": 121, + "height": 73, + "wireID": "64382530-3c9e-4cd8-a7af-089ad654c351", + "customInputs": [], + "customOutputs": [], + "label": "\"\"", + "initalText": "\"\"", + "minChars": "1", + "maxChars": "50" + }, + { + "type": "ShowKeypadActionComponent", + "left": 373, + "top": -129, + "width": 109, + "height": 73, + "wireID": "3126c504-4546-4c53-d5d2-83542863b807", + "customInputs": [], + "customOutputs": [], + "label": "\"\"", + "initalValue": "0", + "min": "0", + "max": "100", + "precision": "0.01", + "unit": "\"\"" + }, + { + "type": "LogActionComponent", + "left": 196, + "top": -129, + "width": 87, + "height": 54, + "wireID": "f4a059de-c98c-43c9-f5e5-6c7055672009", + "customInputs": [ + { + "name": "value", + "type": "string" + } + ], + "customOutputs": [], + "value": "value" + }, + { + "type": "LogActionComponent", + "left": 523, + "top": -129, + "width": 87, + "height": 54, + "wireID": "2f8cbcc7-fe49-4dfb-985f-7d919ac2d6cb", + "customInputs": [ + { + "name": "value", + "type": "float" + } + ], + "customOutputs": [], + "value": "value" + } + ], + "connectionLines": [ + { + "source": "81b5ea3b-b9d2-4524-e14c-ab30a244d169", + "output": "action", + "target": "a2565c16-2b80-40b0-b603-5d0abaf26764", + "input": "@seqin" + }, + { + "source": "85669a4c-6dc9-410d-ed22-cc7579346496", + "output": "action", + "target": "a4c23d02-0185-4c6b-8edd-37ececcc7c75", + "input": "@seqin" + }, + { + "source": "6d46dba4-8d89-467a-9b6e-32530dc63a4a", + "output": "action", + "target": "64382530-3c9e-4cd8-a7af-089ad654c351", + "input": "@seqin" + }, + { + "source": "975e70e8-d8c8-44f6-cd30-333def5ec885", + "output": "action", + "target": "3126c504-4546-4c53-d5d2-83542863b807", + "input": "@seqin" + }, + { + "source": "64382530-3c9e-4cd8-a7af-089ad654c351", + "output": "result", + "target": "f4a059de-c98c-43c9-f5e5-6c7055672009", + "input": "value" + }, + { + "source": "3126c504-4546-4c53-d5d2-83542863b807", + "output": "result", + "target": "2f8cbcc7-fe49-4dfb-985f-7d919ac2d6cb", + "input": "value" + } + ], + "localVariables": [], + "name": "input_demo", + "left": 0, + "top": 0, + "width": 800, + "height": 480 + }, + { + "components": [ + { + "type": "RollerWidget", + "left": 8, + "top": 0, + "width": 127, + "height": 480, + "wireID": "2673c45e-c2a5-4799-afe1-d516dcd4f5e5", + "customInputs": [], + "customOutputs": [], + "data": "hours", + "style": { + "inheritFrom": "default" + }, + "timeline": [], + "min": "0", + "max": "99", + "text": "String.padStart(hours, 2, \"0\")", + "selectedValueStyle": { + "inheritFrom": "default_38", + "borderSize": "2", + "borderRadius": "4", + "borderColor": "#c0c0c0" + }, + "unselectedValueStyle": { + "inheritFrom": "default_24", + "color": "#808080" + } + }, + { + "type": "TextWidget", + "left": 135, + "top": 196, + "width": 103, + "height": 88, + "wireID": "867e68cc-8d64-4336-8c6e-b8804c92567c", + "customInputs": [], + "customOutputs": [], + "data": "\"hours\"", + "style": { + "inheritFrom": "label_left_aligned" + }, + "timeline": [] + }, + { + "type": "ShowPageActionComponent", + "left": 1268, + "top": 160, + "width": 97, + "height": 55, + "wireID": "c0865643-c4ae-4d1f-9450-40e6ba501bee", + "customInputs": [], + "customOutputs": [], + "page": "input_demo" + }, + { + "type": "RollerWidget", + "left": 242, + "top": 0, + "width": 130, + "height": 480, + "wireID": "0064b411-0764-471b-cfb1-8900606f9a4c", + "customInputs": [], + "customOutputs": [], + "data": "min", + "style": { + "inheritFrom": "default" + }, + "timeline": [], + "min": "0", + "max": "59", + "text": "String.padStart(min, 2, \"0\")", + "selectedValueStyle": { + "inheritFrom": "default_38", + "borderSize": "2", + "borderRadius": "4", + "borderColor": "#c0c0c0" + }, + "unselectedValueStyle": { + "inheritFrom": "default_24", + "color": "#808080" + } + }, + { + "type": "TextWidget", + "left": 372, + "top": 196, + "width": 102, + "height": 88, + "wireID": "867e68cc-8d64-4336-8c6e-b8804c92567c", + "customInputs": [], + "customOutputs": [], + "data": "\"min\"", + "style": { + "inheritFrom": "label_left_aligned" + }, + "timeline": [] + }, + { + "type": "RollerWidget", + "left": 473, + "top": 0, + "width": 127, + "height": 480, + "wireID": "0ef49596-d8ac-46b0-8694-4bf00358a9e9", + "customInputs": [], + "customOutputs": [], + "data": "sec", + "style": { + "inheritFrom": "default" + }, + "timeline": [], + "min": "0", + "max": "59", + "text": "String.padStart(sec, 2, \"0\")", + "selectedValueStyle": { + "inheritFrom": "default_38", + "borderSize": "2", + "borderRadius": "4", + "borderColor": "#c0c0c0" + }, + "unselectedValueStyle": { + "inheritFrom": "default_24", + "color": "#808080" + } + }, + { + "type": "TextWidget", + "left": 600, + "top": 196, + "width": 92, + "height": 88, + "wireID": "867e68cc-8d64-4336-8c6e-b8804c92567c", + "customInputs": [], + "customOutputs": [], + "data": "\"sec\"", + "style": { + "inheritFrom": "label_left_aligned" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 685, + "top": 5, + "width": 108, + "height": 115, + "wireID": "b6571b4c-698e-4d9f-a9bb-fa9273bebd29", + "customInputs": [], + "customOutputs": [], + "asOutputProperties": [ + "action" + ], + "data": "\"C\"", + "style": { + "inheritFrom": "button_large" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 685, + "top": 124, + "width": 108, + "height": 115, + "wireID": "19b601eb-02af-4f71-f1d8-385a7bc56bee", + "customInputs": [], + "customOutputs": [], + "asOutputProperties": [ + "action" + ], + "data": "\"\\u0022\"", + "style": { + "inheritFrom": "button_icon" + }, + "timeline": [] + }, + { + "type": "Text", + "left": 685, + "top": 242, + "width": 108, + "height": 233, + "wireID": "cddb3284-6ed3-4392-fdca-e728bb225c1b", + "customInputs": [], + "customOutputs": [], + "asOutputProperties": [ + "action" + ], + "data": "\"\\u0021\"", + "style": { + "inheritFrom": "button_icon" + }, + "timeline": [] + }, + { + "type": "StartActionComponent", + "left": -12, + "top": -167, + "width": 87, + "height": 25, + "wireID": "8c03a81b-0979-4567-a325-77c9428d5e2f", + "customInputs": [], + "customOutputs": [] + }, + { + "type": "SetVariableActionComponent", + "left": 908, + "top": -170, + "width": 264, + "height": 56, + "wireID": "51cb2090-ba52-420f-ce26-4c238eb83ac2", + "customInputs": [], + "customOutputs": [], + "entries": [ + { + "variable": "hours", + "value": "Math.floor(duration / 3600)" + } + ] + }, + { + "type": "SetVariableActionComponent", + "left": 1189, + "top": -170, + "width": 282, + "height": 56, + "wireID": "8f27467d-9dba-47f8-a8d9-6e908d65bbaa", + "customInputs": [], + "customOutputs": [], + "entries": [ + { + "variable": "min", + "value": "Math.floor(duration % 3600 / 60)" + } + ] + }, + { + "type": "SetVariableActionComponent", + "left": 1521, + "top": -170, + "width": 165, + "height": 56, + "wireID": "5a3ea439-d64e-4b0a-9b36-69c2e424690f", + "customInputs": [], + "customOutputs": [], + "entries": [ + { + "variable": "sec", + "value": "duration % 60" + } + ] + }, + { + "type": "SetVariableActionComponent", + "left": 908, + "top": 296, + "width": 294, + "height": 56, + "wireID": "80492ef2-1977-44f9-fed5-2aa133097e3e", + "customInputs": [], + "customOutputs": [], + "entries": [ + { + "variable": "duration", + "value": "hours * 3600 + min * 60 + sec" + } + ] + } + ], + "connectionLines": [ + { + "source": "cddb3284-6ed3-4392-fdca-e728bb225c1b", + "output": "action", + "target": "80492ef2-1977-44f9-fed5-2aa133097e3e", + "input": "@seqin" + }, + { + "source": "8c03a81b-0979-4567-a325-77c9428d5e2f", + "output": "@seqout", + "target": "51cb2090-ba52-420f-ce26-4c238eb83ac2", + "input": "@seqin" + }, + { + "source": "51cb2090-ba52-420f-ce26-4c238eb83ac2", + "output": "@seqout", + "target": "8f27467d-9dba-47f8-a8d9-6e908d65bbaa", + "input": "@seqin" + }, + { + "source": "8f27467d-9dba-47f8-a8d9-6e908d65bbaa", + "output": "@seqout", + "target": "5a3ea439-d64e-4b0a-9b36-69c2e424690f", + "input": "@seqin" + }, + { + "source": "19b601eb-02af-4f71-f1d8-385a7bc56bee", + "output": "action", + "target": "c0865643-c4ae-4d1f-9450-40e6ba501bee", + "input": "@seqin" + }, + { + "source": "80492ef2-1977-44f9-fed5-2aa133097e3e", + "output": "@seqout", + "target": "c0865643-c4ae-4d1f-9450-40e6ba501bee", + "input": "@seqin" + }, + { + "source": "19b601eb-02af-4f71-f1d8-385a7bc56bee", + "output": "action", + "target": "51cb2090-ba52-420f-ce26-4c238eb83ac2", + "input": "@seqin" + }, + { + "source": "b6571b4c-698e-4d9f-a9bb-fa9273bebd29", + "output": "action", + "target": "2673c45e-c2a5-4799-afe1-d516dcd4f5e5", + "input": "clear" + }, + { + "source": "b6571b4c-698e-4d9f-a9bb-fa9273bebd29", + "output": "action", + "target": "0064b411-0764-471b-cfb1-8900606f9a4c", + "input": "clear" + }, + { + "source": "b6571b4c-698e-4d9f-a9bb-fa9273bebd29", + "output": "action", + "target": "0ef49596-d8ac-46b0-8694-4bf00358a9e9", + "input": "clear" + } + ], + "localVariables": [ + { + "name": "duration", + "type": "float", + "defaultValue": "0", + "persistent": false + }, + { + "name": "hours", + "type": "integer", + "defaultValue": "0", + "persistent": false + }, + { + "name": "min", + "type": "integer", + "defaultValue": "0", + "persistent": false + }, + { + "name": "sec", + "type": "integer", + "defaultValue": "0", + "persistent": false + } + ], + "name": "roller_input_demo", + "style": "background", + "left": 0, + "top": 0, + "width": 800, + "height": 480, + "scaleToFit": false + } + ], + "styles": [ + { + "name": "quote", + "inheritFrom": "default_17" + }, + { + "name": "tab", + "inheritFrom": "default_17" + }, + { + "name": "block", + "inheritFrom": "default", + "backgroundColor": "#c8c8c8" + }, + { + "name": "default_17", + "description": "", + "inheritFrom": "default", + "font": "Oswald_17" + }, + { + "name": "default_24", + "description": "", + "inheritFrom": "default", + "font": "Oswald_24" + }, + { + "name": "default_38", + "description": "", + "inheritFrom": "default", + "font": "Oswald_38" + }, + { + "name": "label_left_aligned", + "inheritFrom": "default", + "font": "Oswald_17", + "alignHorizontal": "left", + "padding": "0 0 0 6" + }, + { + "name": "button_large", + "inheritFrom": "button", + "font": "Oswald_38" + }, + { + "name": "button_icon", + "inheritFrom": "button", + "font": "icons" + }, + { + "name": "disabled_button", + "description": "", + "inheritFrom": "button", + "color": "button_disabled_text", + "backgroundColor": "button_disabled_background", + "borderColor": "button_disabled_border" + }, + { + "name": "text_input", + "font": "Oswald_17", + "alignHorizontal": "left", + "color": "text_input_color", + "backgroundColor": "text_input_background", + "activeColor": "text_input_color", + "activeBackgroundColor": "text_input_active_background", + "borderSize": "2", + "borderRadius": "8", + "borderColor": "text_input_border", + "padding": "0 0 0 4" + }, + { + "name": "text_input_small", + "inheritFrom": "text_input", + "font": "medium" + }, + { + "name": "text_button", + "description": "", + "inheritFrom": "button", + "borderSize": "2", + "borderRadius": "8" + }, + { + "name": "text_button_disabled", + "description": "", + "inheritFrom": "text_button", + "color": "button_disabled_text", + "backgroundColor": "button_disabled_background" + }, + { + "name": "text_button_icon", + "inheritFrom": "text_button", + "font": "icons" + }, + { + "name": "text_button_icon_disabled", + "inheritFrom": "text_button_disabled", + "font": "icons" + } + ], + "fonts": [ + { + "name": "medium", + "renderingEngine": "freetype", + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12 + }, + "bpp": 8, + "height": 22, + "ascent": 18, + "descent": 4, + "glyphs": [ + { + "encoding": 32, + "x": 0, + "y": 0, + "width": 0, + "height": 0, + "dx": 4, + "glyphBitmap": { + "width": 0, + "height": 0, + "pixelArray": "" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 32 + } + }, + { + "encoding": 33, + "x": 0, + "y": 0, + "width": 4, + "height": 14, + "dx": 4, + "glyphBitmap": { + "width": 4, + "height": 14, + "pixelArray": "28fcfc1718ffff0508fff20000f8df0000e7cd0000d7ba0000c7a80000b6950000a682000095700000855d0000020200239c9c0538ffff08" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 33 + } + }, + { + "encoding": 34, + "x": 1, + "y": 8, + "width": 5, + "height": 6, + "dx": 6, + "glyphBitmap": { + "width": 5, + "height": 6, + "pixelArray": "f5f122fccbf8ca20ffa1f89e20ff75f87220ff48f84620ff1b0401010401" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 34 + } + }, + { + "encoding": 35, + "x": 0, + "y": 0, + "width": 9, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "00006cfc7d1efcc80000008fff5c41ffa8000000b1ff3964ff85000000d3ff1687ff620056fcfffffdfffffe0b3ab5ffe7a4f4ffa8060042ffa401f3f4010039beffd49ffff39c055fffffffffffffff0502a9ff435bff8f040100c7ff2078ff6d000000e7fc0498ff4e000008ffe000b8ff2f000025ffc000d8ff100000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 35 + } + }, + { + "encoding": 36, + "x": 0, + "y": -2, + "width": 8, + "height": 18, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 18, + "pixelArray": "0000001844000000000000308e0000000030bcf7ffd443000febffcdc1fff21358fff40701d5ff6271fff505009acb5652ffff87000000000ce6ffff8c0200000039f4ffffa70500000034e9ffff9f0000000023ddffff490532470023f6ffa86fffd30000adffc83cfffd2100b0ffac03d1ffe2adfeff4c001cadf2ffe4630000000000b7010000000000005a000000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 36 + } + }, + { + "encoding": 37, + "x": 0, + "y": 0, + "width": 16, + "height": 14, + "dx": 16, + "glyphBitmap": { + "width": 16, + "height": 14, + "pixelArray": "0043d0f9e381020000c8d6000000000009eeffb3ebff540014fe9200000000003bffc4006cff990059ff4b000000000052ffb10056ffaf00a0f90b000000000052ffb10056ffae01e6bd00000000000039ffc90072ff962eff7500000000000007eaffaeecff4e75ff2e0a6897893700003fd3ffec8201bce601b5fffffffe410000000200000bf9a016ffeb197cffa00000000000004aff5838ffc60043ffc100000000000091fe133bffc50041ffc3000000000000d8ca0026ffdb0155ffaf00000000001fff830002e0ffb2e1ff69000000000065ff3c000036c7faeb9205" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 37 + } + }, + { + "encoding": 38, + "x": 0, + "y": 0, + "width": 10, + "height": 14, + "dx": 10, + "glyphBitmap": { + "width": 10, + "height": 14, + "pixelArray": "000063dcf7bf380000000039fff6b5ffef0c0000008fff8c00caff4800000094ff8701e3ff3600000054ffbe36ffd90200000005dcfcc2fd40000000000064ffff6400000000000ad2fffe31009ab817008affcaffc604f4fe0902eeff28b7ff8bffca0021fff40129fcffff670016fffb0c02c3ffff480300bcffc8cbfff1ffff30001baff7f0a8177ef630" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 38 + } + }, + { + "encoding": 39, + "x": 1, + "y": 8, + "width": 3, + "height": 6, + "dx": 5, + "glyphBitmap": { + "width": 3, + "height": 6, + "pixelArray": "d9fc0ddce300dcbb00dc9200dc6900040200" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 39 + } + }, + { + "encoding": 40, + "x": 1, + "y": -3, + "width": 4, + "height": 17, + "dx": 5, + "glyphBitmap": { + "width": 4, + "height": 17, + "pixelArray": "001badd402cdffb342ffe00588ff9700afff7700c6ff6300d6ff5900dbff5500dcff5400dcff5400d6ff5800c7ff6100b0ff75008aff980042ffdf0502cfffb0001db1d7" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 40 + } + }, + { + "encoding": 41, + "x": 0, + "y": -3, + "width": 5, + "height": 17, + "dx": 5, + "glyphBitmap": { + "width": 5, + "height": 17, + "pixelArray": "71d552000050f8fe3900007affa7000030ffed01000dffff170001fbff2d0000f0ff3a0000edff410000ecff440000edff420000f0ff3a0001faff2e000cffff170032ffee01007cffa7004ff8fe390073d9540000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 41 + } + }, + { + "encoding": 42, + "x": 0, + "y": 8, + "width": 7, + "height": 6, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 6, + "pixelArray": "000018fc890000018e2bfc78723d19e6fdfefafe780004a1fff62600002cf88ff698000036c40f878402" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 42 + } + }, + { + "encoding": 43, + "x": 0, + "y": 3, + "width": 7, + "height": 8, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 8, + "pixelArray": "000028fc7b0000000028ff7c0000589cacffcd9c9590fffffffffff403042cff7f0404000028ff7c0000000028ff7c000000000104020000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 43 + } + }, + { + "encoding": 44, + "x": 0, + "y": -3, + "width": 3, + "height": 6, + "dx": 4, + "glyphBitmap": { + "width": 3, + "height": 6, + "pixelArray": "0c242354fff454fff4003ae016e16e022c00" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 44 + } + }, + { + "encoding": 45, + "x": 0, + "y": 4, + "width": 6, + "height": 3, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 3, + "pixelArray": "089c9c9c9c0a0cffffffff10010404040401" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 45 + } + }, + { + "encoding": 46, + "x": 0, + "y": 0, + "width": 4, + "height": 3, + "dx": 4, + "glyphBitmap": { + "width": 4, + "height": 3, + "pixelArray": "0824240238ffff0838ffff08" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 46 + } + }, + { + "encoding": 47, + "x": 0, + "y": 0, + "width": 7, + "height": 14, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 14, + "pixelArray": "00000000a1f20800000002eab60000000032ff6e0000000079ff2700000000c0df010000000dfb98000000004fff500000000096fb0e00000000ddc10000000024ff7a000000006cff3200000000b3ea0200000006f4a30000000041ff5c00000000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 47 + } + }, + { + "encoding": 48, + "x": 0, + "y": 0, + "width": 8, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "00098de6f9d25900009bffebb2feff480bfaff5200a6ffb734ffff27007cffe33cffff240078ffec3cffff240078ffec3cffff240078ffec3cffff240078ffec3cffff240078ffec3cffff240078ffec35ffff29007dffe40efbff5700abffb80099ffebaffeff4a00098ee9fdd55c00" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 48 + } + }, + { + "encoding": 49, + "x": 1, + "y": 0, + "width": 6, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 6, + "height": 14, + "pixelArray": "00056bf6fc0c4cdcffffff0c88fde1ffff0c210f50ffff0c000050ffff0c000050ffff0c000050ffff0c000050ffff0c000050ffff0c000050ffff0c000050ffff0c000050ffff0c000050ffff0c000050ffff0c" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 49 + } + }, + { + "encoding": 50, + "x": 0, + "y": 0, + "width": 8, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "000685e1fadb74020089fff6b1f9ff6d02f0ff700087ffce1cffff390064fff317a0a01e008bffe9000000000ceaffaa000000008cffff380000002bfbff9d00000001c0ffe7100000005affff540000000fe7ffb0010000008ffff21b00000023fcffd99c9c9c603cffffffffffff9c" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 50 + } + }, + { + "encoding": 51, + "x": 0, + "y": 0, + "width": 8, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "001098e9f8d15b0000b8ffe4b5feff4f25ffff3a00a7ffb84cffff11007dffdc25747406008affc8000000001cd8ff750000006bffff940300000046c6ffea2a0000000001baffa41d5c5c050080ffd84affff170080ffd821ffff6106c0ffaa00c2fffffbffff4b0017a4eefdd76300" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 51 + } + }, + { + "encoding": 52, + "x": 0, + "y": 0, + "width": 9, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "0000001dfafcdd00000000007fffffe00000000003e3ffffe0000000004bffc7ffe000000000b0ff75ffe00000001afcc858ffe00000007bff7558ffe0000002e0ff2258ffe0000045ffcf0058ffe0000064fffffcfefffffc4b63fcfcfcfefffffc4b0000000058ffe000000000000058ffe000000000000058ffe00000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 52 + } + }, + { + "encoding": 53, + "x": 0, + "y": 0, + "width": 8, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "00dbfcfcfcfcfc6300e2ffb2a4a4a44100e6ff200000000000e9ff170000000000edff0e0000000000f0ffabf3ea890300f4ffebb0fbff6900d0d836008fffc2000000000064ffe400000000005effe926fcfc270064ffd80dfeff4f008affa800b5ffe7a8f8ff440018aef0fdd96100" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 53 + } + }, + { + "encoding": 54, + "x": 0, + "y": 0, + "width": 9, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "000276dff9dd820400006afff9aff4ff7c0000d8ff7b007affd5000fffff4c0031887f0022ffff3d000000000024ffff5f899244000024fffffcffffff5a0024ffff9310afffcd0024ffff3c005dfffc0323ffff3c0052ffff0913ffff420057fff60100dbff740086ffc1000068fff5a9f7ff5400000173e1fddd690000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 54 + } + }, + { + "encoding": 55, + "x": 0, + "y": 0, + "width": 7, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 7, + "height": 14, + "pixelArray": "53fcfcfcfcfc9e36a4a4a4e8ff9100000000e1ff5c00000019ffff2600000050ffee0100000088ffb800000000bfff8200000004f4ff4b0000002fffff1500000066ffde000000009effa700000000d6ff7000000010ffff3a00000045fffb090000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 55 + } + }, + { + "encoding": 56, + "x": 0, + "y": 0, + "width": 8, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "000c95e9f8cb4400009effe9befff92206f6ff4b01d1ff771cffff2300a7ff980cfeff3300b6ff8600b9ff8b1af1ff390020f1ffffff92000088ffe7b9ffe81f1afdff3600b5ff974cfffb03007dffcf4dfff801007affd128ffff2600a8ffab01c2ffdcaeffff480016a4effcd45d00" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 56 + } + }, + { + "encoding": 57, + "x": 0, + "y": 0, + "width": 8, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "00058ae5f8ca4400008fffeab9fffb2e0af6ff5200b8ff9d34ffff200084ffd246ffff19007cffe33effff24007cffe413fdff720fbdffe4009cfffffffeffe40005699f818effe400000000007effe11aa0a014008fffcd10feff4c04caff9900b6fffbe8fffc310014a1ecfcd45000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 57 + } + }, + { + "encoding": 58, + "x": 1, + "y": 0, + "width": 3, + "height": 9, + "dx": 4, + "glyphBitmap": { + "width": 3, + "height": 9, + "pixelArray": "959c2cf4ff48040402000000000000000000959c2cf4ff48040402" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 58 + } + }, + { + "encoding": 59, + "x": 1, + "y": -2, + "width": 3, + "height": 12, + "dx": 4, + "glyphBitmap": { + "width": 3, + "height": 12, + "pixelArray": "f5fc47f8ff482b2c0d00000000000000000023240cf8ff54f8ff5407db42a9cc08150200" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 59 + } + }, + { + "encoding": 60, + "x": 0, + "y": 0, + "width": 6, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 6, + "height": 11, + "pixelArray": "000000000005000000016689000016b2ff94004be9ffc8235ffffd8205007cff940100004ffaffa810000030d4ffe03700000990ff94000000004579000000000001" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 60 + } + }, + { + "encoding": 61, + "x": 0, + "y": 4, + "width": 7, + "height": 6, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 6, + "pixelArray": "039c9c9c9c9c3104ffffffffff5001040404040402039c9c9c9c9c3104ffffffffff5001040404040402" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 61 + } + }, + { + "encoding": 62, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "020300000000000cc421000000000cfff25f010000016bf7ffab130000002ad0ffe6050000001cedff08000047e8ffd104038dfffe8907000cffe13f0000000ca20f0000000001000000000000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 62 + } + }, + { + "encoding": 63, + "x": 0, + "y": 0, + "width": 8, + "height": 14, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "002db9f2f4c23f0009e7ffd3c5fff92836fffe0e01c9ff872afff70700a7ffa60533060001d6ff8b000000003fffff3b0000000dd8ffad00000006b6ffd51000000079ffd8190000000084ff94000000000047884f0000000000162419000000000098ffb0000000000098ffb0000000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 63 + } + }, + { + "encoding": 64, + "x": 0, + "y": -3, + "width": 16, + "height": 17, + "dx": 16, + "glyphBitmap": { + "width": 16, + "height": 17, + "pixelArray": "00000000003c9dd4f6f6d289150000000000000da0ffffd5abb1e6ffed3b0000000008c4ffc429000000036dfceb180000007fffb70600000000000076ff92000015f6f6180024b7f4a0fcaf05e3ec02006dff920015e6ffcfd5ff8b0096ff2300adff3f0093ffa90292ff650070ff3700daff0d07f2ff1e00b6ff3f006cff3401faea0035ffdd0000daff19008dff1a06ffdf004bffcd0005faf30102d6de0101faeb0038fff7337cffd9006cff790000deff1406e2fffff5f6fac3ffd50a00009dff640030bfd7576cf2f4a6160000003affe111000000000001010000000000009fffd43700000000010c000000000000069bffffdaaea4bce89a00000000000000003ba0d8fafce0ba6800000000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 64 + } + }, + { + "encoding": 65, + "x": 0, + "y": 0, + "width": 9, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "000006f5fcd2000000000031fffffd0b0000000064ffffff3a0000000097ffeeff6d00000000caffa0ffa000000006f9ff4dffd300000031ffec0efffd0a000064ffc300e4ff39000097ff9900baff6c0000cafffffcffff9f0006f9ffb9a4c4ffd20031ffff1b003cfffc0964fff0010011ffff3897ffc5000000e6ff6b" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 65 + } + }, + { + "encoding": 66, + "x": 1, + "y": 0, + "width": 8, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "f5fcfcfae5a42100f8ffd5abe4ffe00af8ff88000dedff4df8ff880000c5ff6df8ff880000d8ff5bf8ff880352fff318f8ffffffffe93c00f8ffd5a9e5ffcf17f8ff88000ae2ff8ef8ff8800009fffcbf8ff88000099ffd2f8ff880003d5ffa9f8ffd29fd6fffe3ef8fffffff7c84b00" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 66 + } + }, + { + "encoding": 67, + "x": 0, + "y": 0, + "width": 9, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "00047ad8f8edb225000084fffaaedaffe00703eeff860016ffff4820ffff5d0000fbff6b2fffff580000f8ff7030ffff58000010100730ffff58000000000030ffff58000000000030ffff5800003334172fffff580000f8ff7021ffff5e0001fcff6903efff89001bffff430083fffaabd5ffdb0400037bdffcf2b52500" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 67 + } + }, + { + "encoding": 68, + "x": 1, + "y": 0, + "width": 8, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "f5fcfcfae4a72300f8ffd5a9e8ffe60df8ff880025ffff63f8ff880001f8ff8cf8ff880000f5ff98f8ff880000f4ff98f8ff880000f4ff98f8ff880000f4ff98f8ff880000f4ff98f8ff880000f5ff98f8ff880001fcff88f8ff88002cffff5bf8ffd2a2e6ffe009f8ffffffe9ac2100" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 68 + } + }, + { + "encoding": 69, + "x": 1, + "y": 0, + "width": 6, + "height": 14, + "dx": 7, + "glyphBitmap": { + "width": 6, + "height": 14, + "pixelArray": "f5fcfcfcfcc9f8ffd5a4a483f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8fffffcfc1cf8ffd5a4a412f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ffd29c9c82f8ffffffffd4" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 69 + } + }, + { + "encoding": 70, + "x": 1, + "y": 0, + "width": 6, + "height": 14, + "dx": 7, + "glyphBitmap": { + "width": 6, + "height": 14, + "pixelArray": "f5fcfcfcfcaef8ffd5a4a471f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8fffffcfc0cf8ffd5a4a408f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 70 + } + }, + { + "encoding": 71, + "x": 0, + "y": 0, + "width": 9, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "000377d8f9eeb32c00007ffffab1d6ffeb0f02ecff87000cf9ff5e1dffff5c0000e0ff852dffff58000094ac5f30ffff58000000000030ffff58000000000030ffff5820fcfcfc9a30ffff5815a4dfff9c2dffff580000a5ff9c19ffff610000afff9c01e6ff900005e2ff9c0080fffcafcbf6ff9c000582e4fdd049ff9c" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 71 + } + }, + { + "encoding": 72, + "x": 1, + "y": 0, + "width": 8, + "height": 14, + "dx": 10, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "f1fc8e0000a2fcd9f4ff900000a4ffdcf4ff900000a4ffdcf4ff900000a4ffdcf4ff900000a4ffdcf4ff900000a4ffdcf4fffffcfcffffdcf4ffd8a4a4dfffdcf4ff900000a4ffdcf4ff900000a4ffdcf4ff900000a4ffdcf4ff900000a4ffdcf4ff900000a4ffdcf4ff900000a4ffdc" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 72 + } + }, + { + "encoding": 73, + "x": 1, + "y": 0, + "width": 3, + "height": 14, + "dx": 5, + "glyphBitmap": { + "width": 3, + "height": 14, + "pixelArray": "e1fc92e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 73 + } + }, + { + "encoding": 74, + "x": 0, + "y": 0, + "width": 5, + "height": 14, + "dx": 6, + "glyphBitmap": { + "width": 5, + "height": 14, + "pixelArray": "0000fcfc7e0000ffff7f0000ffff7f0000ffff7e0000ffff7e0000ffff7e0000ffff7d0000ffff7d0000ffff7c0000ffff7c0002ffff7b002fffff6ca9f4ffff30d8fde37000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 74 + } + }, + { + "encoding": 75, + "x": 1, + "y": 0, + "width": 8, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "f5fc86000bebfc6df8ff88006afff410f8ff8802dbff9800f8ff884fffff2d00f8ff88c1ffc00000f8ffbcffff540000f8ffffffff1e0000f8ffefefff750000f8ff9198ffd60100f8ff883bffff3600f8ff8801ddff9600f8ff880081ffef08f8ff880025ffff57f8ff880000c7ffb8" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 75 + } + }, + { + "encoding": 76, + "x": 1, + "y": 0, + "width": 6, + "height": 14, + "dx": 7, + "glyphBitmap": { + "width": 6, + "height": 14, + "pixelArray": "f5fc86000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ffdfb8b899f8ffffffffd4" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 76 + } + }, + { + "encoding": 77, + "x": 1, + "y": 0, + "width": 10, + "height": 14, + "dx": 12, + "glyphBitmap": { + "width": 10, + "height": 14, + "pixelArray": "c4fce200000042fcfc5dcbffff1a000078ffff62cfffff4d0000adffff66d4ffff810000e2ffff6bd8fff4b50018fff6ff6fdcffbfe9014dffc0ff73e0ff85ff1d82ff88ff77e5ff4cff51b7e46bff7ce9ff14ff86edaf66ff80edfe00dcdaff7a61ff84f2fa00a7ffff455dff89f6f60072ffff1158ff8dfaf2003dffdb0054ff91feee000bfda6004fff96" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 77 + } + }, + { + "encoding": 78, + "x": 1, + "y": 0, + "width": 8, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "f5ea090000ddfc34f8ff620000e0ff34f8ffcf0100e0ff34f8ffff3b00e0ff34f8ffffa800e0ff34f8fffcfb1ae0ff34f8ffadff82e0ff34f8ff47fee9e7ff34f8ff28b3ffffff34f8ff284affffff34f8ff2803dfffff34f8ff280078ffff34f8ff280016faff34f8ff280000a5ff34" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 78 + } + }, + { + "encoding": 79, + "x": 0, + "y": 0, + "width": 9, + "height": 14, + "dx": 10, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "000479d7f9eeb52e000084fffbb1d5fff01803f0ff87000bf2ff7921ffff5f0000d3ffab2fffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbb1fffff5e0000d3ffaa02ecff850009f2ff790082fff9a9cefff01800047adafcf2be3100" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 79 + } + }, + { + "encoding": 80, + "x": 1, + "y": 0, + "width": 8, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "f5fcfcfcf3ba2c00f8ffd5a8ddffe80ef8ff880010f8ff59f8ff880000dcff7ef8ff880000e5ff7af8ff88024cffff48f8ffffffffffba02f8ffd5a496570400f8ff880000000000f8ff880000000000f8ff880000000000f8ff880000000000f8ff880000000000f8ff880000000000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 80 + } + }, + { + "encoding": 81, + "x": 0, + "y": -3, + "width": 9, + "height": 17, + "dx": 10, + "glyphBitmap": { + "width": 9, + "height": 17, + "pixelArray": "000479d7f9eeb52e000084fffbb1d5fff01703f0ff87000bf2ff7821ffff5f0000d3ffab2fffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbb1fffff5e0000d3ffaa02ecff850009f2ff780082fff9a9cefff11800047adafdfffa3a00000000000090ffaa08000000000004acf709000000000000034d00" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 81 + } + }, + { + "encoding": 82, + "x": 1, + "y": 0, + "width": 8, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "f5fcfcf9e3a62700f8ffd5aae8ffeb15f8ff880016fbff69f8ff880000d6ff8cf8ff880001e5ff82f8ff880764ffff50f8ffffffffffb604f8ffd5c0fffa0a00f8ff8820ffff4500f8ff8800deff8d00f8ff88009cffd500f8ff88005affff1df8ff880019ffff64f8ff880000d6ffac" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 82 + } + }, + { + "encoding": 83, + "x": 0, + "y": 0, + "width": 8, + "height": 14, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "0016a1ebf7cc490001c8ffdab4fffa272fffff1e00aeff874affff200076d2722dffffb10500000002d0ffffb60c00000026e8ffffca1400000023dbffffc90600000016ccffff74022a520011e5ffd044fff5030089ffed15fdff430088ffd100a1ffefa8f5ff6700098be4fedc6d01" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 83 + } + }, + { + "encoding": 84, + "x": 0, + "y": 0, + "width": 8, + "height": 14, + "dx": 7, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "edfcfcfcfcfcfc1c9aa4defff5a4a4120000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe0000000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 84 + } + }, + { + "encoding": 85, + "x": 0, + "y": 0, + "width": 9, + "height": 14, + "dx": 10, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "14fcfc5b0000c5fca614ffff5c0000c8ffa814ffff5c0000c8ffa814ffff5c0000c8ffa814ffff5c0000c8ffa814ffff5c0000c8ffa814ffff5c0000c8ffa814ffff5c0000c8ffa814ffff5c0000c8ffa813ffff5c0000c9ffa606ffff630000cfff9600d6ff95000df5ff68006dfffeaed3ffed14000274dbfbf3bc3200" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 85 + } + }, + { + "encoding": 86, + "x": 0, + "y": 0, + "width": 9, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "81fcb1000001eefc4e51ffe2000020ffff1c1effff13004dffe90101ecff42007affb60000b9ff7100a7ff82000086ffa100d4ff4f000053ffd007fcff1c000020fffa35ffe901000001edff8bffb600000000baffe5ff820000000087ffffff4f0000000054ffffff1c0000000021ffffe9010000000001eeffb6000000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 86 + } + }, + { + "encoding": 87, + "x": 0, + "y": 0, + "width": 12, + "height": 14, + "dx": 12, + "glyphBitmap": { + "width": 12, + "height": 14, + "pixelArray": "5efcb90000cefb0b007bfc903bffdb0003f8ff33009cff6e17fffa0224ffff5d00bcff4a01f3ff1b4effff8800dcff2600cfff3b77fffcb202fafd0600abff5aa1fac2dd1bffde000087ff7acbd394fe45ffba000063ff9bf4a869ff8cff9600003fffd8ff7e3fffd7ff7200001bffffff5314ffffff4e000002f6ffff2900eaffff2a000000d3fffa0500bffffe08000000afffd4000095ffe2000000008bffa900006affbe0000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 87 + } + }, + { + "encoding": 88, + "x": 0, + "y": 0, + "width": 9, + "height": 14, + "dx": 8, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "8bfcc9000040fce70627ffff35009bff900000bdff9f07efff30000054fff761ffcf00000005e7fff4ff6e0000000083fffffa14000000002bffffad000000000067ffffa80000000000c7fffffa1700000027fff3e1ff7900000086ff9f78ffdf030003e4ff4316f9ff4a0045ffe40300a4ffb300a5ff8a00003afffe1f" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 88 + } + }, + { + "encoding": 89, + "x": 0, + "y": 0, + "width": 9, + "height": 14, + "dx": 8, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "adfca4000050fcf0085effef05009bffaa0011fbff4101e5ff580000b8ff8f30fff90e000065ffde7bffb400000016fdffe4ff6200000000c0fffffd14000000006dffffbe00000000001dffff71000000000008ffff5c000000000008ffff5c000000000008ffff5c000000000008ffff5c000000000008ffff5c000000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 89 + } + }, + { + "encoding": 90, + "x": 0, + "y": 0, + "width": 7, + "height": 14, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 14, + "pixelArray": "38fcfcfcfcfccd24a4a4a4efffb200000011faff5c00000061fff70e000000b7ffad00000013fbff5600000063fff40b000000baffa700000015fcff5000000066fff108000000bcffa100000016fdff4a0000005effffa29c9c8268ffffffffffd4" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 90 + } + }, + { + "encoding": 91, + "x": 0, + "y": -3, + "width": 6, + "height": 17, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 17, + "pixelArray": "05fcfcfcfc1405ffffa7a40d05ffff08000005ffff08000006ffff08000006ffff08000006ffff08000006ffff08000007ffff08000007ffff08000007ffff08000007ffff08000008ffff08000008ffff08000008ffff08000008ffffa3a00a08ffffffff10" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 91 + } + }, + { + "encoding": 92, + "x": 0, + "y": 0, + "width": 7, + "height": 14, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 14, + "pixelArray": "40fc5a0000000007f5a20000000000b4e802000000006dff310000000026ff780000000001dec0000000000097fb0d0000000050ff4f000000000efb960000000000c1de01000000007aff250000000033ff6d0000000002eab40000000000a4f508" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 92 + } + }, + { + "encoding": 93, + "x": 0, + "y": -3, + "width": 5, + "height": 17, + "dx": 5, + "glyphBitmap": { + "width": 5, + "height": 17, + "pixelArray": "9efcfcfc7767a4dbff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff7864a0d9ff78a0ffffff78" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 93 + } + }, + { + "encoding": 94, + "x": 0, + "y": 8, + "width": 8, + "height": 6, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 6, + "pixelArray": "00004dfcfc3200000000bbffffa000000029ffb9d2f916000095ff5d76ff7d000ff4f50c1dfee7062c846100006e8421" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 94 + } + }, + { + "encoding": 95, + "x": 0, + "y": -3, + "width": 7, + "height": 2, + "dx": 6, + "glyphBitmap": { + "width": 7, + "height": 2, + "pixelArray": "a0a0a0a0a0a00affffffffffff10" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 95 + } + }, + { + "encoding": 96, + "x": 0, + "y": 10, + "width": 5, + "height": 4, + "dx": 5, + "glyphBitmap": { + "width": 5, + "height": 4, + "pixelArray": "04c8fc6100002af8b700000073fb120000010401" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 96 + } + }, + { + "encoding": 97, + "x": 0, + "y": 0, + "width": 8, + "height": 10, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 10, + "pixelArray": "0024aff1f1a7100001cfffc9e5ff8d0021ffff1770ffd300145c5c0370ffe000000040bfffffe000007cffd287ffe00022fffd1e64ffe0004fffef026bffe1002affffb7e4ffeb00007df3db51fffe05" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 97 + } + }, + { + "encoding": 98, + "x": 0, + "y": 0, + "width": 8, + "height": 14, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "18fcfc3c0000000018ffff3c0000000018ffff3c0000000018ffff3c0000000018ffff88d4f0700018ffffdbc4fffd1a18ffff3d09fbff5618ffff3c00edff6418ffff3c00ecff6418ffff3c00ecff6418ffff3c00edff6318ffff3c07fbff5018ffffcfbbfffa1518ffff95e0f16800" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 98 + } + }, + { + "encoding": 99, + "x": 0, + "y": 0, + "width": 7, + "height": 10, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 10, + "pixelArray": "0030c3f6eda41003e0ffc8e3ff8c2fffff1964ffcb4affff0944c4a34cffff080000004cffff080000004affff0954f4cb30ffff1865ffc904e2ffc8e2ff890034c8faf0a30e" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 99 + } + }, + { + "encoding": 100, + "x": 0, + "y": 0, + "width": 8, + "height": 14, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "000000002cfcfc28000000002cffff28000000002cffff28000000002cffff28004ce3e99affff2804e9ffd2ceffff282fffff272cffff2846ffff112cffff2848ffff102cffff2848ffff102cffff2847ffff112cffff2834ffff222cffff2806f4ffccc5ffff28005be6ed9cffff28" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 100 + } + }, + { + "encoding": 101, + "x": 0, + "y": 0, + "width": 7, + "height": 10, + "dx": 8, + "glyphBitmap": { + "width": 7, + "height": 10, + "pixelArray": "002dc1f6ee9f0b03ddffc3deff832effff0f58ffcb4affff9ebcffe14cffffffffffe44cffff080404044affff042b887930ffff1460ffd504e3ffcde6ff8d0035c7f9efa00d" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 101 + } + }, + { + "encoding": 102, + "x": 0, + "y": 0, + "width": 6, + "height": 14, + "dx": 5, + "glyphBitmap": { + "width": 6, + "height": 14, + "pixelArray": "000caef5f00f006dfffcb30d0098ffbe000000a0ffb00000aefffffffc1071deffe4a40b00a0ffb0000000a0ffb0000000a0ffb0000000a0ffb0000000a0ffb0000000a0ffb0000000a0ffb0000000a0ffb00000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 102 + } + }, + { + "encoding": 103, + "x": 0, + "y": -3, + "width": 9, + "height": 14, + "dx": 8, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "000000000000000f00002abbf6e56486d40101d9ffc2e1ffdb680428fff70457ffa7000042ffe60044ffcf00002ffff40454ffc2000003d3ffbaddff7d0000007df2f8f39d0800002cfe9b1b03000000002cfafffffdda73010002a8e99eb9f2ff430066ff84000068ff6f0096ffeeada6e7ff440020b0ecfffdda7c0100" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 103 + } + }, + { + "encoding": 104, + "x": 0, + "y": 0, + "width": 8, + "height": 14, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "10fcfc3f0000000010ffff400000000010ffff400000000010ffff400000000010ffff6fb8f6b30310ffffe9beffff3b10ffff4309ffff4c10ffff4004ffff4c10ffff4004ffff4c10ffff4004ffff4c10ffff4004ffff4c10ffff4004ffff4c10ffff4004ffff4c10ffff4004ffff4c" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 104 + } + }, + { + "encoding": 105, + "x": 0, + "y": 0, + "width": 4, + "height": 14, + "dx": 4, + "glyphBitmap": { + "width": 4, + "height": 14, + "pixelArray": "08fcfc4b06a4a431000000000000000008fcfc4708ffff4808ffff4808ffff4808ffff4808ffff4808ffff4808ffff4808ffff4808ffff48" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 105 + } + }, + { + "encoding": 106, + "x": -1, + "y": -3, + "width": 5, + "height": 17, + "dx": 4, + "glyphBitmap": { + "width": 5, + "height": 17, + "pixelArray": "0000e1fc73000093a44b000000000000000000000000ddfc6f0000e0ff700000e0ff700000e0ff700000e0ff700000e0ff700000e0ff700000e0ff700000e0ff700000e0ff700004eeff6d31d9ffff3734f7ec7d01" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 106 + } + }, + { + "encoding": 107, + "x": 0, + "y": 0, + "width": 9, + "height": 14, + "dx": 8, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "18fcfc38000000000018ffff38000000000018ffff38000000000018ffff38000000000018ffff38009ffcd90818ffff383fffff4c0018ffff3ed6ffb3000018ffffb0fff822000018ffffffffef09000018ffffb3e3ff5d000018ffff3c89ffc3000018ffff382effff2a0018ffff3800d2ff8f0018ffff380076ffee08" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 107 + } + }, + { + "encoding": 108, + "x": 1, + "y": 0, + "width": 3, + "height": 14, + "dx": 4, + "glyphBitmap": { + "width": 3, + "height": 14, + "pixelArray": "f5fc5bf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5c" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 108 + } + }, + { + "encoding": 109, + "x": 0, + "y": 0, + "width": 12, + "height": 10, + "dx": 12, + "glyphBitmap": { + "width": 12, + "height": 10, + "pixelArray": "1cfcfc67d3f69039c7f7a6031cffffe9bbffffe9b4ffff3c1cffff2303fcff4600deff5b1cffff1800f8ff3c00d8ff5c1cffff1800f8ff3c00d8ff5c1cffff1800f8ff3c00d8ff5c1cffff1800f8ff3c00d8ff5c1cffff1800f8ff3c00d8ff5c1cffff1800f8ff3c00d8ff5c1cffff1800f8ff3c00d8ff5c" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 109 + } + }, + { + "encoding": 110, + "x": 0, + "y": 0, + "width": 8, + "height": 10, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 10, + "pixelArray": "1cfcfc6fb7f6a1011cffffe3c4ffff221cffff3a21ffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff38" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 110 + } + }, + { + "encoding": 111, + "x": 0, + "y": 0, + "width": 7, + "height": 10, + "dx": 8, + "glyphBitmap": { + "width": 7, + "height": 10, + "pixelArray": "002cbff6ed9d0d04dfffc8e3ff9633ffff135dffe74bffff014dffff4cffff004cffff4cffff004cffff4bffff004dffff34ffff0f5dffe804e3ffc1deff9b0032c1f9efa110" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 111 + } + }, + { + "encoding": 112, + "x": 0, + "y": -3, + "width": 8, + "height": 13, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 13, + "pixelArray": "1cfcfc8dd8ef6d001cffffdac7fffc171cffff390bfdff4f1cffff3800f1ff601cffff3800f0ff601cffff3800f0ff601cffff3800f1ff5f1cffff3808fdff4c1cffffcdbefff9121cffff91e0ef65001cffff38000000001cffff38000000001cffff3800000000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 112 + } + }, + { + "encoding": 113, + "x": 0, + "y": -3, + "width": 8, + "height": 13, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 13, + "pixelArray": "0048e1e995fcfc3004e8ffd3cdffff3030ffff2724ffff3043ffff1124ffff3044ffff1024ffff3044ffff1024ffff3043ffff1124ffff3030ffff2224ffff3005f1ffccc4ffff300059e6ed97ffff300000000024ffff300000000024ffff300000000024ffff30" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 113 + } + }, + { + "encoding": 114, + "x": 0, + "y": 0, + "width": 6, + "height": 11, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 11, + "pixelArray": "00000000000214fcfc6bcea614fffffbb87914ffff77000014ffff40000014ffff40000014ffff40000014ffff40000014ffff40000014ffff40000014ffff400000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 114 + } + }, + { + "encoding": 115, + "x": 0, + "y": 0, + "width": 7, + "height": 10, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 10, + "pixelArray": "0054d4f7bb240021fdfbb4fccd015fffc6008ed71531ffff730a01000093ffff8b0200000283ffff9200000c0863ffff3167f56300c7ff5b31fef4abfcfd20005bd7fbd15700" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 115 + } + }, + { + "encoding": 116, + "x": 0, + "y": 0, + "width": 6, + "height": 13, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 13, + "pixelArray": "00b6fc9e000000b8ffa0000000b8ffa00000aefffffffc1c71e7ffdea41200b8ffa0000000b8ffa0000000b8ffa0000000b8ffa0000000b8ffa0000000b4ffad00000088ffffdb320017c6fcf533" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 116 + } + }, + { + "encoding": 117, + "x": 0, + "y": 0, + "width": 8, + "height": 10, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 10, + "pixelArray": "2cfcfc2434fcfc1c2cffff2434ffff1c2cffff2434ffff1c2cffff2434ffff1c2cffff2434ffff1c2cffff2434ffff1c2cffff2434ffff1c2cffff2a37ffff1c19ffffd0e7ffff1c009ffac067ffff1c" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 117 + } + }, + { + "encoding": 118, + "x": 0, + "y": 0, + "width": 7, + "height": 10, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 10, + "pixelArray": "aefc8b00a3fc9280ffaf00c7ff634effd200e8ff331dfff40cfffb0701ecff43ffd10000bbff88ffa0000089ffccff6f000058fffeff3e000027ffffff0e000002f3ffdc0000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 118 + } + }, + { + "encoding": 119, + "x": 0, + "y": 0, + "width": 10, + "height": 10, + "dx": 10, + "glyphBitmap": { + "width": 10, + "height": 10, + "pixelArray": "7ffc6700d6f9063afc965bff8907fcff295eff7134ffab2cffff5082ff490effcc55fffe76a6ff2100e7ed7ef1cd9dcbf80300c0ffb7c3a0c4f0d2000099fff79474f5ffaa000072ffff6547ffff8300004bffff361bffff5b000024fffe0a01efff3400" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 119 + } + }, + { + "encoding": 120, + "x": 0, + "y": 0, + "width": 7, + "height": 10, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 10, + "pixelArray": "92fcb10064fc9926feff26c8ff2f00b1ffbdffc200003fffffff55000001d8ffe405000015f9ffe808000073ffffff620001d9ff98ffd4013fffc210f3ff48a5ff63008effbb" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 120 + } + }, + { + "encoding": 121, + "x": 0, + "y": -3, + "width": 7, + "height": 13, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 13, + "pixelArray": "c3fc750067fcd289ffa50090ff9e4bffd300b8ff6610fefb07e0ff2f00ceff3afff504008fff8fffc0000051ffe4ff89000014ffffff51000000d5ffff1a00000098ffe30000000075ffab00000bb6f0ff52000010fdd574010000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 121 + } + }, + { + "encoding": 122, + "x": 0, + "y": 0, + "width": 6, + "height": 10, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 10, + "pixelArray": "2cfcfcfcfcd51da4a4e3ffbe000009eeff5b00005effee080000c6ff9000002effff2b000095ffc400000cf2ff5e00005dffffa69c7f70ffffffffd0" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 122 + } + }, + { + "encoding": 123, + "x": 0, + "y": -3, + "width": 6, + "height": 17, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 17, + "pixelArray": "00007de8fc4b0017ffffcc310035ffff1f000038ffff14000038ffff1400003affff1400004afffa05002ad4ffa8000044fffc5200000270ffe10000003effff0b000039ffff14000038ffff14000038ffff14000032ffff21000013feffca30000076ebff4c" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 123 + } + }, + { + "encoding": 124, + "x": 1, + "y": -3, + "width": 3, + "height": 17, + "dx": 4, + "glyphBitmap": { + "width": 3, + "height": 17, + "pixelArray": "dafc28ddff28ddff28ddff28deff28deff28deff28deff28dfff28dfff28dfff28dfff28e0ff28e0ff28e0ff28e0ff28e0ff28" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 124 + } + }, + { + "encoding": 125, + "x": 0, + "y": -3, + "width": 6, + "height": 17, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 17, + "pixelArray": "43fce98400002cc9ffff1e000018ffff3e00000dffff4400000cffff4400000cffff44000002f6ff50000000a3ffd72f00004dfaff4c0000dcff76020006ffff4600000cffff4400000cffff4400000dffff4400001affff3b002bc7ffff1a0044ffed7d0000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 125 + } + }, + { + "encoding": 126, + "x": 0, + "y": 5, + "width": 8, + "height": 4, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 4, + "pixelArray": "00218c630700220026efffffe4b4fd2e067a1753cbf57a010000000000010000" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 126 + } + }, + { + "encoding": 127, + "x": 0, + "y": 0, + "width": 6, + "height": 12, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 12, + "pixelArray": "25545454540770553c3c9b14702000007c14702000007c14702000007c14702000007c14702000007c14702000007c14702000007c14702000007c14702000007c14709b8c8cc514" + }, + "source": { + "filePath": "Oswald-Medium.ttf", + "size": 12, + "encoding": 127 + } + } + ], + "alwaysBuild": false + }, + { + "name": "Oswald_9", + "renderingEngine": "freetype", + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9 + }, + "bpp": 8, + "height": 16, + "ascent": 13, + "descent": 3, + "glyphs": [ + { + "encoding": 32, + "x": 0, + "y": 0, + "width": 0, + "height": 0, + "dx": 3, + "glyphBitmap": { + "width": 0, + "height": 0, + "pixelArray": "" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 32 + } + }, + { + "encoding": 33, + "x": 0, + "y": 0, + "width": 3, + "height": 11, + "dx": 3, + "glyphBitmap": { + "width": 3, + "height": 11, + "pixelArray": "5bfc594bff4739ff3328ff2016ff0c05f80100d80000b3000003001d481864ff54" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 33 + } + }, + { + "encoding": 34, + "x": 0, + "y": 6, + "width": 5, + "height": 5, + "dx": 5, + "glyphBitmap": { + "width": 5, + "height": 5, + "pixelArray": "38fc4afc6a38ff21ff4138eb0cff1738c10ced010103010400" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 34 + } + }, + { + "encoding": 35, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "000bfc6980eb00002eff46a6cc000052ff22caaa007dfefffdffff2628bde45fff910c07b8c436ff520287ffffffffff2223fa9d95ff440814ff5f8ee7000034ff3eafc6000054ff1dd0a50000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 35 + } + }, + { + "encoding": 36, + "x": 0, + "y": -2, + "width": 6, + "height": 15, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 15, + "pixelArray": "000001060000000014790000038ceffeb80f55ff9d7cff7f90ff3d01efb07bffab03170121f2ffa806000041f3ffb304000034ecff771e600c3bffd984ff3600e7ef39ffb961fdb40070e7ffc5230000008d0000000000120000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 36 + } + }, + { + "encoding": 37, + "x": 0, + "y": 0, + "width": 13, + "height": 11, + "dx": 13, + "glyphBitmap": { + "width": 13, + "height": 11, + "pixelArray": "049ff4e0570008f341000000004aff7cbfea0244f6070000000078ff0f73ff1889b800000000007aff0d72ff1ace73000000000057ff42a0f41aff2e00070200000dd7ffff8958e80cb8ffed600000043623009ea35dff64bfe6010000000001e35e85ff027eff0e0000000028ff1a84ff037fff0d000000006dd40057ff6ec7e00100000000b28f0008a9f9e05300" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 37 + } + }, + { + "encoding": 38, + "x": 0, + "y": 0, + "width": 8, + "height": 11, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 11, + "pixelArray": "0033d0f5aa0e000000c6e36dff76000000efad0dff8e000000beda55ff4400000048ffe3a00000000023f9e707274c0001c8e9ff4e97ed0033ff68b2dcd0ac0058ff4226faff50002bffac89feffa302007aeef18d6af504" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 38 + } + }, + { + "encoding": 39, + "x": 0, + "y": 6, + "width": 3, + "height": 5, + "dx": 4, + "glyphBitmap": { + "width": 3, + "height": 5, + "pixelArray": "20fc5020ff2a20fd0720dc00010400" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 39 + } + }, + { + "encoding": 40, + "x": 0, + "y": -2, + "width": 4, + "height": 13, + "dx": 4, + "glyphBitmap": { + "width": 4, + "height": 13, + "pixelArray": "000ba6ae0081ff5800d5ce0003fca60015ff95001eff8e0020ff8c001eff8d0015ff940004fda40000d7cb000083ff56000caab1" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 40 + } + }, + { + "encoding": 41, + "x": 0, + "y": -2, + "width": 4, + "height": 13, + "dx": 4, + "glyphBitmap": { + "width": 4, + "height": 13, + "pixelArray": "92b716003ff7a20000aaf3030081ff230071ff380069ff420068ff440069ff420070ff380083ff2300abf3033ef7a10094bb1600" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 41 + } + }, + { + "encoding": 42, + "x": 0, + "y": 6, + "width": 6, + "height": 5, + "dx": 5, + "glyphBitmap": { + "width": 6, + "height": 5, + "pixelArray": "0101c276010034bccea8c4031683ffe85f040081c2f03600006a3c713800" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 42 + } + }, + { + "encoding": 43, + "x": 0, + "y": 2, + "width": 6, + "height": 7, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 7, + "pixelArray": "0000d16b00000000d46c0000080cd7730c04a8ffffffff502a40df9140140000d46c0000000004020000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 43 + } + }, + { + "encoding": 44, + "x": 0, + "y": -2, + "width": 3, + "height": 4, + "dx": 3, + "glyphBitmap": { + "width": 3, + "height": 4, + "pixelArray": "2348147cff4401b2363f8e02" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 44 + } + }, + { + "encoding": 45, + "x": 0, + "y": 3, + "width": 4, + "height": 3, + "dx": 5, + "glyphBitmap": { + "width": 4, + "height": 3, + "pixelArray": "040c0c0b44ffffdc11404037" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 45 + } + }, + { + "encoding": 46, + "x": 0, + "y": 0, + "width": 3, + "height": 2, + "dx": 3, + "glyphBitmap": { + "width": 3, + "height": 2, + "pixelArray": "1e481868ff54" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 46 + } + }, + { + "encoding": 47, + "x": 0, + "y": 0, + "width": 5, + "height": 11, + "dx": 5, + "glyphBitmap": { + "width": 5, + "height": 11, + "pixelArray": "000000b088000005f34500003df809000082bb000000c776000010fd30000052ea02000097a6000000dc61000021ff1c000066d7000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 47 + } + }, + { + "encoding": 48, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "005addf7bc200019fbcd66fcb4005bff7100cefa056cff6800c5ff106cff6800c4ff106cff6800c4ff106cff6800c4ff106cff6800c4ff105dff7300cffb0619fbcf63fcb600005bdffabe2100" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 48 + } + }, + { + "encoding": 49, + "x": 1, + "y": 0, + "width": 4, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 4, + "height": 11, + "pixelArray": "015ff49ebdffffa0877effa00030ffa00030ffa00030ffa00030ffa00030ffa00030ffa00030ffa00030ffa0" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 49 + } + }, + { + "encoding": 50, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "0051dbf8c72f0012f6dd62f3cc004aff8000bbff1039a44800d3ff0c0000003effca00000004d0ff4c0000006affad00000013eef21b00000096ff6e0000002ffdea4b483c0068ffffffffd400" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 50 + } + }, + { + "encoding": 51, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "0179e1f7c130003fffb962f7d00074fc5800caff0400000428efcd00000044ffef22000000116fff9b0000000000dbef0166dc4a00c6ff0560ff6f00d9ea001efde5a2ffa1000064e2fabb1900" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 51 + } + }, + { + "encoding": 52, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "000014f6fc3f00000072ffff40000001d6e9ff4000003bff99ff4000009fd770ff40000ff58470ff400066ff3270ff400088fffdfefffd574d9090c1ffac3200000070ff400000000070ff4000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 52 + } + }, + { + "encoding": 53, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "22fcfcfcfca60026ff96505035002aff5d000000002eff540601000032ffdaffe8410036ffbd52f2d1000b301200baff070f281100b2ff0d57ff7100bdf60124ffca59f4b3000076eafbc62200" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 53 + } + }, + { + "encoding": 54, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "0041d4f8cc390007ebde5eeadb013cff8a0073a40855ff790502000058ffd3faec4d0058ffcd51f0e50158ff7800b2ff1c57ff7900a9ff2441ff8800b9fd0b08eadf5cf4bb000041dbfcc92300" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 54 + } + }, + { + "encoding": 55, + "x": 0, + "y": 0, + "width": 6, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 6, + "height": 11, + "pixelArray": "7bfcfcfcfc10275050d9f403000003f3c10000002bff8b00000061ff5600000097ff21000000cdec01000009fbb600000039ff810000006fff4c000000a5ff170000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 55 + } + }, + { + "encoding": 56, + "x": 0, + "y": 0, + "width": 6, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 6, + "height": 11, + "pixelArray": "0059def5ae1011facd79ff864aff6f01f2c849ff6e01f2c810f3b33eff82008afffff4152afcb55dfca472ff4c00d0f471ff4a00ccf631ffb360fbb60074e7fac123" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 56 + } + }, + { + "encoding": 57, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "005ee0f6b5150021fcc86bfda20063ff6800d2f00072ff6200c8ff0655ff9b21e2ff0809d2fffdf3ff080006371dc8ff080b1c0b00ccff0656ff6d01e7ee0018fdd695ffa600005be0fbc01900" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 57 + } + }, + { + "encoding": 58, + "x": 0, + "y": 1, + "width": 3, + "height": 8, + "dx": 3, + "glyphBitmap": { + "width": 3, + "height": 8, + "pixelArray": "030c0734ff840d4021000000000000030c0734ff840d4021" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 58 + } + }, + { + "encoding": 59, + "x": 0, + "y": -1, + "width": 3, + "height": 9, + "dx": 3, + "glyphBitmap": { + "width": 3, + "height": 9, + "pixelArray": "38fc7e125028000000000000030c0734ff8c0d808b0ad655013401" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 59 + } + }, + { + "encoding": 60, + "x": 0, + "y": 0, + "width": 5, + "height": 9, + "dx": 5, + "glyphBitmap": { + "width": 5, + "height": 9, + "pixelArray": "000000000300000791440025cdfb324df3e038009cee1900005efbd026000036def32a00000fa9440000000109" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 60 + } + }, + { + "encoding": 61, + "x": 0, + "y": 3, + "width": 5, + "height": 6, + "dx": 6, + "glyphBitmap": { + "width": 5, + "height": 6, + "pixelArray": "030c0c0c0a40ffffffd41040404035030c0c0c0a40ffffffd41040404035" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 61 + } + }, + { + "encoding": 62, + "x": 0, + "y": 0, + "width": 5, + "height": 9, + "dx": 5, + "glyphBitmap": { + "width": 5, + "height": 9, + "pixelArray": "0300000000449007000032fbcd24000038e0f34d00001aee9c0026d0fb5d2af3de360044a80f00000901000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 62 + } + }, + { + "encoding": 63, + "x": 0, + "y": 0, + "width": 6, + "height": 11, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 11, + "pixelArray": "0287e9f2a41046ffaa7bff8f66ff4c01ecd424500f0afbcc00000063ff8600001aebe7130009cef53a00001cff8600000012a0500000000d482b0000002cff980000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 63 + } + }, + { + "encoding": 64, + "x": 0, + "y": -3, + "width": 12, + "height": 14, + "dx": 12, + "glyphBitmap": { + "width": 12, + "height": 14, + "pixelArray": "0000001386d1f7f1bc450000000034e6e8875764b9ff6200000fe7ca150000000188f6150082fb220ba4f2c9ea07ea6a00dea7009cfb77d5c800ad9a13ff6418fd8c00dba2009fa336ff3f54ff4105fb7d00bd8d41ff3465ff3d2fff591df94c30ff463dffd8ddff9fd3d1030af783018ade73bbfdc1210000a3ed1b0000000002000000001be4e5652414314f000000000019a7fbffffffdf010000000000000b31381a01000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 64 + } + }, + { + "encoding": 65, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "0000b7fc7700000001ebffaa0000001cfffbdb0000004effb7ff0f000080ff64ff3f0000b2ec26ff710000e4c710faa30017ffffffffd50048ff9444befd0b7aff490082ff39acff200059ff6b" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 65 + } + }, + { + "encoding": 66, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "38fcfcfad9630038ffcc5ac5ff2f38ffb40045ff6a38ffb40044ff6a38ffb815a0fd2938ffffffff840038ffc747b0ff5d38ffb40026ffb438ffb40022ffba38ffca4daaff7838ffffffeb9408" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 66 + } + }, + { + "encoding": 67, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "0048d2f9e26d0010f3e459c2ff2e4dff97006aff6963ff900061f87164ff900000000064ff900000000064ff90000a180b63ff900064ff7450ff9c006aff6912f4e355c2ff2d004bd8fce76f00" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 67 + } + }, + { + "encoding": 68, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "38fcfcf8da6d0038ffcc57d0ff3e38ffb4006bff7f38ffb40061ff8f38ffb40060ff9038ffb40060ff9038ffb40060ff9038ffb40061ff8e38ffb4006dff7a38ffca50d0ff3638fffffddf6b00" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 68 + } + }, + { + "encoding": 69, + "x": 0, + "y": 0, + "width": 6, + "height": 11, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 11, + "pixelArray": "38fcfcfcfc3038ffcc50500f38ffb400000038ffb400000038ffb80c090038ffffffac0038ffc7402b0038ffb400000038ffb400000038ffca48481038ffffffff38" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 69 + } + }, + { + "encoding": 70, + "x": 0, + "y": 0, + "width": 6, + "height": 11, + "dx": 5, + "glyphBitmap": { + "width": 6, + "height": 11, + "pixelArray": "38fcfcfcfc1c38ffcc50500938ffb400000038ffb400000038ffb80c080038ffffffa00038ffc740280038ffb400000038ffb400000038ffb400000038ffb4000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 70 + } + }, + { + "encoding": 71, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "0047d5f9e380010ef1e75cb5ff434bff990050ff8161ff90001b582f64ff90040c0c0864ff9048ffff9864ff90125bff9861ff910026ff9844ffa0003eff980cf4e959b5ff980050dcfcb1c098" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 71 + } + }, + { + "encoding": 72, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 8, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "30fcb60024fcc530ffb80024ffc830ffb80024ffc830ffb80024ffc830ffbc0c2fffc830ffffffffffc830ffca405bffc830ffb80024ffc830ffb80024ffc830ffb80024ffc830ffb80024ffc8" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 72 + } + }, + { + "encoding": 73, + "x": 0, + "y": 0, + "width": 3, + "height": 11, + "dx": 4, + "glyphBitmap": { + "width": 3, + "height": 11, + "pixelArray": "28fcba28ffbc28ffbc28ffbc28ffbc28ffbc28ffbc28ffbc28ffbc28ffbc28ffbc" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 73 + } + }, + { + "encoding": 74, + "x": 0, + "y": 0, + "width": 4, + "height": 11, + "dx": 4, + "glyphBitmap": { + "width": 4, + "height": 11, + "pixelArray": "0077fc6f0078ff700078ff700078ff700078ff700078ff700078ff700078ff70007fff6d5fdbff4ce0f8ae05" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 74 + } + }, + { + "encoding": 75, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "38fcb2006dfc6838ffb402daf50f38ffb449ff9c0038ffb4b6ff340038ffd9ffcd000038ffffffc6000038ffceb7ff260038ffb45aff840038ffb40bf4e10238ffb400a2ff4238ffb40046ffa1" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 75 + } + }, + { + "encoding": 76, + "x": 0, + "y": 0, + "width": 6, + "height": 11, + "dx": 5, + "glyphBitmap": { + "width": 6, + "height": 11, + "pixelArray": "38fcb200000038ffb400000038ffb400000038ffb400000038ffb400000038ffb400000038ffb400000038ffb400000038ffb400000038ffd160601538ffffffff38" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 76 + } + }, + { + "encoding": 77, + "x": 0, + "y": 0, + "width": 9, + "height": 11, + "dx": 9, + "glyphBitmap": { + "width": 9, + "height": 11, + "pixelArray": "12fcf707001afcea0016ffff32004dfff1001affff650081fff5001efffa9700b4fbf90022ffc9ca01e7cbfd0026ff90f81fff92ff022aff59fe7cee6dff052eff49d6e0ba68ff0932ff45a1ff8663ff0d36ff416cff525fff113aff3e37ff1e5bff16" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 77 + } + }, + { + "encoding": 78, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "38fc4f004ffc4338ffb70050ff4438fffe2250ff4438ffff8950ff4438fff7eb57ff4438ff9fffabff4438ff69d0fbff4438ff6868ffff4438ff680df3ff4438ff680098ff4438ff680031ff44" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 78 + } + }, + { + "encoding": 79, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "0049d3f9e47a0112f4e65cbaff4d50ff97004dff9763ff900044ffae64ff900044ffb064ff900044ffb064ff900044ffb063ff900044ffae49ff97004dff990df5e453b5ff4f004cd5fce98001" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 79 + } + }, + { + "encoding": 80, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "38fcfcfce56f0038ffcc55c3ff2d38ffb40057ff6f38ffb40053ff7b38ffb814a2ff4e38ffffffffb00438ffc74021000038ffb40000000038ffb40000000038ffb40000000038ffb400000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 80 + } + }, + { + "encoding": 81, + "x": 0, + "y": -3, + "width": 7, + "height": 14, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 14, + "pixelArray": "0049d3f9e47a0112f4e65cbaff4d50ff97004dff9763ff900044ffae64ff900044ffb064ff900044ffb064ff900044ffb063ff900044ffaf49ff97004dff980df5e453b5ff52004cd5fdff9b0100000004c2da160000000013c50f00000000000200" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 81 + } + }, + { + "encoding": 82, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "38fcfcf8d8690038ffcc59cdff4138ffb40056ff8138ffb4004eff8638ffb819abff5b38ffffffffb80738ffc782ff760038ffb41dffbe0038ffb400d9fa0d38ffb40096ff4f38ffb40052ff98" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 82 + } + }, + { + "encoding": 83, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 6, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "006de0f6b5150033ffb369fe970073ff5d00d2cb0061ffc30916010013e9ffc11000000034ebffcd0d00000026e0ff990017591927fbf60467ff5200c9ff0e1cfccc58f1cc000058dcfbc32b00" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 83 + } + }, + { + "encoding": 84, + "x": 0, + "y": 0, + "width": 6, + "height": 11, + "dx": 5, + "glyphBitmap": { + "width": 6, + "height": 11, + "pixelArray": "f1fcfcfcfc6f4d71ffd250230030ffbc00000030ffbc00000030ffbc00000030ffbc00000030ffbc00000030ffbc00000030ffbc00000030ffbc00000030ffbc0000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 84 + } + }, + { + "encoding": 85, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "4bfc8e003cfc9e4cff90003cffa04cff90003cffa04cff90003cffa04cff90003cffa04cff90003cffa04cff90003cffa04aff91003dff9e37ffa0004bff8a07eceb57b9ff470045d5fceb8201" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 85 + } + }, + { + "encoding": 86, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "9afc170064fc566bff440091ff2539ff7300bcf2020bfda100e7c10000d5cf13ff8e0000a3f943ff5c000071ff95ff2a00003fffeaf50300000fffffc500000000dbff9300000000a9ff610000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 86 + } + }, + { + "encoding": 87, + "x": 0, + "y": 0, + "width": 9, + "height": 11, + "dx": 9, + "glyphBitmap": { + "width": 9, + "height": 11, + "pixelArray": "81fc170dfc6300b9d460ff3634ff8d00dbb43dff565dffb702f8911aff7585fee018ff6e01f694adc1ff42ff4b00d3b4d570fe88ff2800b0d7fa3cddcffe07008cffff13b3ffe2000069ffe80089ffbf000046ffbe005fff9c000022ff950035ff7900" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 87 + } + }, + { + "encoding": 88, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "9dfc2d00a0f40f3bff9007f1aa0001d6ed54ff4c000071ffe6ea05000014f9ff9200000001deff4500000036ffff8a00000094fae0eb070006edb173ff590050ff5513f8c000aef20900a1ff29" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 88 + } + }, + { + "encoding": 89, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 6, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "b7f91100adfa176aff5705f1c5001cffa23cff760000cbeb85ff2600007bffeed60000002bffff8600000001dcff3800000000bcff1800000000bcff1800000000bcff1800000000bcff180000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 89 + } + }, + { + "encoding": 90, + "x": 0, + "y": 0, + "width": 6, + "height": 11, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 11, + "pixelArray": "67fcfcfcfc37215050e8f90f000025ffb200000079ff5c000000cdf90f000022ffb100000076ff5b000000caf80e00001fffb000000071ff924848108cffffffff38" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 90 + } + }, + { + "encoding": 91, + "x": 0, + "y": -2, + "width": 4, + "height": 13, + "dx": 4, + "glyphBitmap": { + "width": 4, + "height": 13, + "pixelArray": "3ffcfcdd40ff8a4640ff530040ff530040ff520040ff520040ff520040ff510040ff510040ff510040ff500040ff854340ffffe0" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 91 + } + }, + { + "encoding": 92, + "x": 0, + "y": 0, + "width": 5, + "height": 11, + "dx": 5, + "glyphBitmap": { + "width": 5, + "height": 11, + "pixelArray": "65d300000021ff1c000000dc6000000096a500000051e902000010fc2f000000c67500000080ba0000003bf708000005f144000000af89" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 92 + } + }, + { + "encoding": 93, + "x": 0, + "y": -2, + "width": 4, + "height": 13, + "dx": 4, + "glyphBitmap": { + "width": 4, + "height": 13, + "pixelArray": "b6fcfc6b3a6fff6c002cff6c002cff6c002bff6c002bff6c002bff6c002aff6c002aff6c002aff6c0029ff6c3769ff6cb8ffff6c" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 93 + } + }, + { + "encoding": 94, + "x": 0, + "y": 6, + "width": 6, + "height": 5, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 5, + "pixelArray": "0009ebf10e00005cf9f6690000c3b3a9d0012aff5e52ff373d8410098445" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 94 + } + }, + { + "encoding": 95, + "x": 0, + "y": -2, + "width": 5, + "height": 2, + "dx": 5, + "glyphBitmap": { + "width": 5, + "height": 2, + "pixelArray": "4c4c4c4c31ffffffffa4" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 95 + } + }, + { + "encoding": 96, + "x": 0, + "y": 8, + "width": 4, + "height": 3, + "dx": 4, + "glyphBitmap": { + "width": 4, + "height": 3, + "pixelArray": "1cf494000088da00000fd117" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 96 + } + }, + { + "encoding": 97, + "x": 0, + "y": 0, + "width": 6, + "height": 8, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 8, + "pixelArray": "0080e9ee7c0032ffa5bbff1d40a8367aff43000f85ecff4414decf91ff4468ff4678ff446dff8bbfff4915cfed89ff5b" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 97 + } + }, + { + "encoding": 98, + "x": 0, + "y": 0, + "width": 6, + "height": 11, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 11, + "pixelArray": "4bfc770000004cff780000004cff780000004cffb9deda1f4cffbb89ff834cff7823ffa64cff7820ffa84cff7820ffa84cff7822ffa44cffb07fff7e4cffc3e8d81a" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 98 + } + }, + { + "encoding": 99, + "x": 0, + "y": 0, + "width": 6, + "height": 8, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 8, + "pixelArray": "0192f0ea7a003bffa3b7fe166eff5372ff3774ff5004080274ff501228096eff5371ff373dffa3b6fe150297f4ed7a00" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 99 + } + }, + { + "encoding": 100, + "x": 0, + "y": 0, + "width": 6, + "height": 11, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 11, + "pixelArray": "0000004ffc7700000050ff7800000050ff7804b1f2c1ff7845ffaf97ff786eff5b50ff7874ff5850ff7874ff5850ff7871ff5a50ff784cffaa90ff7808b9f6c2ff78" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 100 + } + }, + { + "encoding": 101, + "x": 0, + "y": 0, + "width": 6, + "height": 8, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 8, + "pixelArray": "0189eeec6e0039ffa1b3fb146dff5771ff3f74ffffffff4874ff794040126eff4e4bb42f3cffa3b4ff1e0195f3ed7d00" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 101 + } + }, + { + "encoding": 102, + "x": 0, + "y": 0, + "width": 4, + "height": 11, + "dx": 4, + "glyphBitmap": { + "width": 4, + "height": 11, + "pixelArray": "006bf0d400e1f25200f4d100c1ffffdd3ef8df4600f4d00000f4d00000f4d00000f4d00000f4d00000f4d000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 102 + } + }, + { + "encoding": 103, + "x": 0, + "y": -2, + "width": 7, + "height": 11, + "dx": 6, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "00000000000900028ef0e170e5103eff96b0fe39006dff3b64ff300057ff6089ff220007d9ffffb0000047f1472d01000048fefff7c1280035eb5869e59d00adf56055de9c0050dbfefdcb2b00" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 103 + } + }, + { + "encoding": 104, + "x": 0, + "y": 0, + "width": 6, + "height": 11, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 11, + "pixelArray": "47fc7b00000048ff7c00000048ff7c00000048ffacc5f13d48ffc384ff8e48ff7c31ff9448ff7c30ff9448ff7c30ff9448ff7c30ff9448ff7c30ff9448ff7c30ff94" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 104 + } + }, + { + "encoding": 105, + "x": 0, + "y": 0, + "width": 3, + "height": 11, + "dx": 3, + "glyphBitmap": { + "width": 3, + "height": 11, + "pixelArray": "43fc8216502a00000043fc8244ff8444ff8444ff8444ff8444ff8444ff8444ff84" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 105 + } + }, + { + "encoding": 106, + "x": -1, + "y": -2, + "width": 4, + "height": 13, + "dx": 3, + "glyphBitmap": { + "width": 4, + "height": 13, + "pixelArray": "0028fca2000d5034000000000024fc9e0024ffa00024ffa00024ffa00024ffa00024ffa00024ffa00025ffa0159eff8c28fad223" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 106 + } + }, + { + "encoding": 107, + "x": 0, + "y": 0, + "width": 7, + "height": 11, + "dx": 6, + "glyphBitmap": { + "width": 7, + "height": 11, + "pixelArray": "4bfc77000000004cff78000000004cff78000000004cff780de3e8104cff7888ff69004cff9efad304004cfffdff8d00004cffc3d6e503004cff787dff49004cff7826ffaa004cff7800cdf913" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 107 + } + }, + { + "encoding": 108, + "x": 0, + "y": 0, + "width": 3, + "height": 11, + "dx": 3, + "glyphBitmap": { + "width": 3, + "height": 11, + "pixelArray": "34fc9234ff9434ff9434ff9434ff9434ff9434ff9434ff9434ff9434ff9434ff94" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 108 + } + }, + { + "encoding": 109, + "x": 0, + "y": 0, + "width": 9, + "height": 8, + "dx": 9, + "glyphBitmap": { + "width": 9, + "height": 8, + "pixelArray": "53fca5d8e85cc8ed4454ffbc7fffd26bffa554ff6025ff8801ffb054ff6024ff8800ffb054ff6024ff8800ffb054ff6024ff8800ffb054ff6024ff8800ffb054ff6024ff8800ffb0" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 109 + } + }, + { + "encoding": 110, + "x": 0, + "y": 0, + "width": 6, + "height": 8, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 8, + "pixelArray": "53fcaccbec3154ffbc8eff7d54ff7441ff8454ff7440ff8454ff7440ff8454ff7440ff8454ff7440ff8454ff7440ff84" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 110 + } + }, + { + "encoding": 111, + "x": 0, + "y": 0, + "width": 6, + "height": 8, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 8, + "pixelArray": "0189eee874003cffa3b7ff2270ff4e6aff5874ff4c68ff5c74ff4c68ff5c70ff4d6aff583eff9cb0ff25018ff2ec7a00" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 111 + } + }, + { + "encoding": 112, + "x": 0, + "y": -2, + "width": 6, + "height": 10, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 10, + "pixelArray": "53fcbbe1d71b54ffb98cff7f54ff7427ffa254ff7424ffa454ff7424ffa454ff7426ffa054ffae83ff7a54ffc1e9d61854ff7400000054ff74000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 112 + } + }, + { + "encoding": 113, + "x": 0, + "y": -2, + "width": 6, + "height": 10, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 10, + "pixelArray": "04b1f2bbfc7b45ffb193ff7c6cff5b48ff7c70ff5848ff7c70ff5848ff7c6dff5b48ff7c48ffad8cff7c07b7f6beff7c00000048ff7c00000048ff7c" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 113 + } + }, + { + "encoding": 114, + "x": 0, + "y": 0, + "width": 5, + "height": 9, + "dx": 5, + "glyphBitmap": { + "width": 5, + "height": 9, + "pixelArray": "00000000014bfca7d9544cffe760204cff7f00004cff7c00004cff7c00004cff7c00004cff7c00004cff7c0000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 114 + } + }, + { + "encoding": 115, + "x": 0, + "y": 0, + "width": 5, + "height": 8, + "dx": 5, + "glyphBitmap": { + "width": 5, + "height": 8, + "pixelArray": "0cadf6bf176cff74dc9177ff63382313e5fd62000023daff56265918ebd085f85fe1c610b5fbd63c" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 115 + } + }, + { + "encoding": 116, + "x": 0, + "y": 0, + "width": 4, + "height": 11, + "dx": 4, + "glyphBitmap": { + "width": 4, + "height": 11, + "pixelArray": "027c5f0004ffc40004ffc400c1ffffe540ffd74904ffc40004ffc40004ffc40004ffc50001f2f07a0079f7f3" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 116 + } + }, + { + "encoding": 117, + "x": 0, + "y": 0, + "width": 6, + "height": 8, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 8, + "pixelArray": "5ffc6753fc6f60ff6854ff7060ff6854ff7060ff6854ff7060ff6854ff7060ff6954ff705affa9a6ff701be5da9fff70" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 117 + } + }, + { + "encoding": 118, + "x": 0, + "y": 0, + "width": 6, + "height": 8, + "dx": 5, + "glyphBitmap": { + "width": 6, + "height": 8, + "pixelArray": "bbf301aaf70790ff18ced30061ff38efa40032ff68ff750008fca9ff470000d5eaff180000a7ffea01000078ffbb0000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 118 + } + }, + { + "encoding": 119, + "x": 0, + "y": 0, + "width": 8, + "height": 8, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 8, + "pixelArray": "98d900d59811fc5476f907fbbf34ff2f51ff41ffe556ff0a2cff87d8ff84e10009ffce9ee2cbbb0000e2ff72b7ff940000bdff468dff6e000097ff1a62ff4700" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 119 + } + }, + { + "encoding": 120, + "x": 0, + "y": 0, + "width": 6, + "height": 8, + "dx": 5, + "glyphBitmap": { + "width": 6, + "height": 8, + "pixelArray": "a0f91e85f00d36ff8be39a0000c8fcff33000062ffcc0000008cffcf010006eaf1ff3d0051ff52fbab00b3dd01a5fc1e" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 120 + } + }, + { + "encoding": 121, + "x": 0, + "y": -2, + "width": 6, + "height": 10, + "dx": 5, + "glyphBitmap": { + "width": 6, + "height": 10, + "pixelArray": "cbe7007ffc3491ff17aaf80653ff45d2c60016ff75f88e0000d6c3ff57000097ffff1f00005affe80100001effb000001a7aff72000048f3ab0a0000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 121 + } + }, + { + "encoding": 122, + "x": 0, + "y": 0, + "width": 5, + "height": 8, + "dx": 5, + "glyphBitmap": { + "width": 5, + "height": 8, + "pixelArray": "5ffcfcfc771e50b0ff490002dde4030041ff860000a4ff250010f7c3000069ff98482190ffffff74" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 122 + } + }, + { + "encoding": 123, + "x": 0, + "y": -2, + "width": 5, + "height": 13, + "dx": 4, + "glyphBitmap": { + "width": 5, + "height": 13, + "pixelArray": "0039dffc100095ff7e0500a4ff1d0000a4ff1c0000a6ff1b0007c4fa060070ff8d00001ed5f0030000a7ff1a0000a4ff1c0000a4ff1d000097ff7a05003de4ff10" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 123 + } + }, + { + "encoding": 124, + "x": 0, + "y": -2, + "width": 3, + "height": 13, + "dx": 3, + "glyphBitmap": { + "width": 3, + "height": 13, + "pixelArray": "20fc6a21ff6b21ff6b22ff6b22ff6a22ff6a23ff6a23ff6923ff6924ff6924ff6824ff6824ff68" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 124 + } + }, + { + "encoding": 125, + "x": 0, + "y": -2, + "width": 5, + "height": 13, + "dx": 5, + "glyphBitmap": { + "width": 5, + "height": 13, + "pixelArray": "6ff9b5050024c2ff33000082ff40000080ff4000007fff42000064ff6901000ee3ff0c0057ff8e03007eff44000080ff40000082ff400023c0ff350070fcbc0600" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 125 + } + }, + { + "encoding": 126, + "x": 0, + "y": 4, + "width": 6, + "height": 4, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 4, + "pixelArray": "0002030000001bd1e4545343428e76f5fa4a000000171f00" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 126 + } + }, + { + "encoding": 127, + "x": 0, + "y": 0, + "width": 4, + "height": 10, + "dx": 5, + "glyphBitmap": { + "width": 4, + "height": 10, + "pixelArray": "0c1414127b64649e6c0000706c0000706c0000706c0000706c0000706c0000706c0000707c7070a3" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 9, + "encoding": 127 + } + } + ] + }, + { + "name": "Oswald_17", + "renderingEngine": "freetype", + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17 + }, + "bpp": 8, + "height": 31, + "ascent": 25, + "descent": 6, + "glyphs": [ + { + "encoding": 32, + "x": 0, + "y": 0, + "width": 0, + "height": 0, + "dx": 6, + "glyphBitmap": { + "width": 0, + "height": 0, + "pixelArray": "" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 32 + } + }, + { + "encoding": 33, + "x": 1, + "y": 0, + "width": 4, + "height": 19, + "dx": 6, + "glyphBitmap": { + "width": 4, + "height": 19, + "pixelArray": "d1fcfc5ec4ffff4bb3ffff38a1ffff2590ffff127ffffd026effeb005dffd8004cffc5003bffb2002aff9f0019ff8b0008ff780000f7650000e6520000040200e1fcfc4be4ffff4ce4ffff4c" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 33 + } + }, + { + "encoding": 34, + "x": 1, + "y": 11, + "width": 8, + "height": 8, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 8, + "pixelArray": "8afcfc3686fcfc3d8cffff0c88ffff118cffdd0088ffe4008cffb00088ffb7008cff840088ff89008cff570088ff5c008cff2b0088ff2f000304010003040100" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 34 + } + }, + { + "encoding": 35, + "x": 0, + "y": 0, + "width": 12, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "00000056fcfc5b00a6fcf9080000007effff3400d0ffdc00000000a4ffff0d02f7ffb400000000caffe40020ffff8c00000001f1ffbc0048ffff640011fcfdfffffffcfefffffe5d13ffffffffffffffffffff5b07509cffff7e50d3fff4501c000084ffff2900d8ffd5000000009fffff0c01f5ffb700001afcfffffffcfdfffffffc521effffffffffffffffffff510a59ffffbe5095ffff8550190029ffff830081ffff300000004affff6100a2ffff0f0000006cffff3f00c4ffed000000008dffff1d00e5ffcb00000000affff90309ffffaa00000000d0ffd90028ffff89000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 35 + } + }, + { + "encoding": 36, + "x": 0, + "y": -2, + "width": 11, + "height": 24, + "dx": 12, + "glyphBitmap": { + "width": 11, + "height": 24, + "pixelArray": "00000000004c330000000000000000009c680000000000000000009c6d0000000000002ba9e8feffdf7a03000039f7ffffffffffff970001cfffffc65a7dfefffe251cffffff2c0000acffff7236ffffff22000074ffff9624ffffff7600002a4a1b0102ecfffffb5200000000000079fffffffd6f010000000002adffffffff950400000000059effffffffac05000000000178ffffffff9600000000000055faffffff430000000a000051ffffffb321a6dbde000000aaffffec29fffffe0d00006afffffd04f1ffff57000077ffffe10096ffffea6561e7ffff8d0015dbffffffffffffd9110000128eddfdffee961200000000000034cf02000000000000000034cc00000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 36 + } + }, + { + "encoding": 37, + "x": 0, + "y": 0, + "width": 23, + "height": 19, + "dx": 23, + "glyphBitmap": { + "width": 23, + "height": 19, + "pixelArray": "000052c4f2f9db880c00000003eafc5b000000000000000050ffffffffffffb40000003afffe150000000000000000c3ffff815ee3ffff2a000084ffc8000000000000000001f7ffdc00007dffff5d0000ceff7e00000000000000000bffffc900006affff6f001affff3400000000000000000cffffc9000069ffff700062ffe902000000000000000003fcffd6000076ffff6300acffa000000000000000000000d2fffe350ec7ffff3805f2ff560000000000000000000070ffffffffffffd50340fffc110162ccf5f5ce680100000494fcffffffd229008affc2006cffffffffffff780000000015444c2b010000d4ff7801e2fffa706df8ffee040000000000000000001fffff2e1cffffb80000afffff2a00000000000000000068ffe40134ffffa2000097ffff41000000000000000000b2ff9a0038ffffa0000095ffff44000000000000000008f5ff500034ffffa4000098ffff40000000000000000046fffa0d0019ffffc10000b6ffff25000000000000000090ffbc000000dafffe6d6afbffe7020000000000000000daff720000005fffffffffffff6d000000000000000024ffff290000000059cbf8f9cf630100" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 37 + } + }, + { + "encoding": 38, + "x": 1, + "y": 0, + "width": 12, + "height": 19, + "dx": 14, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "000034b6f0f5ca62010000000038f9ffffffffff8f00000000c3ffff9c65efffff21000006fcfff706009dffff50000009fffff00000b6ffff3d000000d7ffff1d09f2ffef090000007cffff6a68ffff77000000000feaffcee6ffbb04000000000067ffffffce0f0000000000006bfffffe1f000029302d0043fdffffff8c0000e9ffe30be5fff5c7fffc2f12ffffc162ffff912afbffc748ffff83a6ffff440088ffffe0ffff2dc8ffff24000be0ffffffb600baffff42000085ffffff8d0478ffffcb528bfdffffffffe90cd9ffffffffffee7bfafff8001496e6fde4a120003bd0f6" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 38 + } + }, + { + "encoding": 39, + "x": 1, + "y": 11, + "width": 4, + "height": 8, + "dx": 8, + "glyphBitmap": { + "width": 4, + "height": 8, + "pixelArray": "5ffcfc5360ffff2c60fffd0760ffda0060ffb20060ff890060ff610002040200" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 39 + } + }, + { + "encoding": 40, + "x": 1, + "y": -4, + "width": 6, + "height": 23, + "dx": 8, + "glyphBitmap": { + "width": 6, + "height": 23, + "pixelArray": "0000015ac7d6000089ffffe0002efefff35f0092ffff790000deffff240010fffff6010030ffffd9000047ffffc7000056ffffbd00005effffb6000060ffffb4000060ffffb4000060ffffb400005effffb5000056ffffbc000048ffffc7000032ffffd9000012fffff5010000e0ffff22000093ffff76000030fffff25d00008dffffe00000015dcbd9" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 40 + } + }, + { + "encoding": 41, + "x": 0, + "y": -4, + "width": 7, + "height": 23, + "dx": 7, + "glyphBitmap": { + "width": 7, + "height": 23, + "pixelArray": "3beaaa2a0000003cfffff7390000149cffffd201000002d2ffff3900000083ffff8400000053ffffb600000035ffffd600000023ffffeb0000001afffff900000013ffffff03000011ffffff07000010ffffff08000010ffffff07000012ffffff0300001afffff900000025ffffeb00000037ffffd500000052ffffb500000083ffff83000002d4ffff3700139affffd001003cfffff73800003ceeae2c000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 41 + } + }, + { + "encoding": 42, + "x": 1, + "y": 10, + "width": 9, + "height": 9, + "dx": 10, + "glyphBitmap": { + "width": 9, + "height": 9, + "pixelArray": "000000e8fc6e000000120b00d1ff55001c007fe86bbcff60abf50eb7fffffffffffffa440138b2fffff37115000005caffeaff5000000086ffcd4fffee1d00018dfc5101d1d73700000027020023050000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 42 + } + }, + { + "encoding": 43, + "x": 0, + "y": 4, + "width": 10, + "height": 11, + "dx": 10, + "glyphBitmap": { + "width": 10, + "height": 11, + "pixelArray": "00000000f9fc5300000000000000fcff5400000000000000fcff5400000000000000fcff540000005ffcfcfcfffffefcfcd160ffffffffffffffffd41e505050feff8a50504300000000fcff5400000000000000fcff5400000000000000fcff5400000000000000040402000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 43 + } + }, + { + "encoding": 44, + "x": 0, + "y": -4, + "width": 5, + "height": 7, + "dx": 5, + "glyphBitmap": { + "width": 5, + "height": 7, + "pixelArray": "0cfcfcfc2c0cffffff2c0cffffff2c00006aff1d0022dad50000c4df31000021070000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 44 + } + }, + { + "encoding": 45, + "x": 1, + "y": 5, + "width": 7, + "height": 4, + "dx": 8, + "glyphBitmap": { + "width": 7, + "height": 4, + "pixelArray": "3048484848480ba8ffffffffff24a8ffffffffff2403040404040401" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 45 + } + }, + { + "encoding": 46, + "x": 1, + "y": 0, + "width": 4, + "height": 3, + "dx": 5, + "glyphBitmap": { + "width": 4, + "height": 3, + "pixelArray": "e1fcfc4be4ffff4ce4ffff4c" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 46 + } + }, + { + "encoding": 47, + "x": 0, + "y": 0, + "width": 9, + "height": 19, + "dx": 10, + "glyphBitmap": { + "width": 9, + "height": 19, + "pixelArray": "000000000000c6fc7e000000000016feff3500000000005dffea020000000000a7ffa1000000000004eeff5700000000003bfffd11000000000086ffc3000000000000d0ff7800000000001bffff2e000000000064ffe4010000000000aeff9a000000000006f3ff50000000000043fffa0d00000000008dffbb000000000000d7ff71000000000022ffff2700000000006bffdd010000000000b5ff93000000000009f7ff490000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 47 + } + }, + { + "encoding": 48, + "x": 1, + "y": 0, + "width": 11, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 11, + "height": 19, + "pixelArray": "000266c7f2f8d5840d000001a7ffffffffffffd510004efffffd7d63e8ffff8e00acffffa9000066ffffec02dbffff7900003affffff1eecffff71000031ffffff30ecffff70000030ffffff30ecffff70000030ffffff30ecffff70000030ffffff30ecffff70000030ffffff30ecffff70000030ffffff30ecffff70000030ffffff30ecffff70000030ffffff30ecffff71000031ffffff30dcffff7c00003cffffff1facffffb1000072ffffed034bffffff7c62ebffff8d0001a2ffffffffffffd40f00000263c8f5fbd8840c0000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 48 + } + }, + { + "encoding": 49, + "x": 2, + "y": 0, + "width": 7, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 7, + "height": 19, + "pixelArray": "00000284fcfc860147cfffffff88cbffffffffff88ecfffffeffff888e5b1accffff88000000ccffff88000000ccffff88000000ccffff88000000ccffff88000000ccffff88000000ccffff88000000ccffff88000000ccffff88000000ccffff88000000ccffff88000000ccffff88000000ccffff88000000ccffff88000000ccffff88" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 49 + } + }, + { + "encoding": 50, + "x": 1, + "y": 0, + "width": 11, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 11, + "height": 19, + "pixelArray": "00015dc2effadf9b2000000091fffffffffffff02c0031ffffff9a5dd3ffffbe008dffffcf01003fffffff15b7ffff93000014ffffff39c7ffff81000025ffffff3a3948482400006dffffff19000000000007deffffd000000000000081ffffff5800000000002cfbffffbf010000000003c7fffff42200000000006bffffff6900000000001cf2ffffbd020000000001b1fffff320000000000053ffffff68000000000010e6ffffbb01000000000097ffffff67484848483600e8ffffffffffffffffc000e8ffffffffffffffffc000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 50 + } + }, + { + "encoding": 51, + "x": 0, + "y": 0, + "width": 12, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "00000b7bd0f5f7d689130000000dd1ffffffffffffe21b000087fffff16b67e4ffffa50000deffff81000064fffff70304ffffff54000037ffffff1c07c8c8c83c00003bffffff120000000000000073ffffd30000000000004778f0ffff53000000000000f4ffffe94400000000000000f4ffffffa9080000000000000637e1ffff8300000000000000006fffffde00022828280c00003cffffff1208ffffff4f000032ffffff1e01f7ffff6a000044ffffff0a00cdffffb6030092ffffdb000074ffffffdfd3ffffff80000009ccffffffffffffd60e0000000a7ed3f8fbd8870e0000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 51 + } + }, + { + "encoding": 52, + "x": 0, + "y": 0, + "width": 12, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "00000000006cfcfcfcb200000000000003ddffffffb400000000000053ffffffffb4000000000000c6fff9ffffb400000000003affffaaffffb40000000000adffdb71ffffb40000000023feff7d70ffffb40000000093ffff2170ffffb400000012f5ffc10070ffffb40000007affff620070ffffb4000007e7fff70e0070ffffb4000024fffff2bcbcdaffffecbc8824ffffffffffffffffffffb824ffffffffffffffffffffb801040404040473ffffb6040300000000000070ffffb4000000000000000070ffffb4000000000000000070ffffb4000000000000000070ffffb40000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 52 + } + }, + { + "encoding": 53, + "x": 1, + "y": 0, + "width": 11, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 11, + "height": 19, + "pixelArray": "65fcfcfcfcfcfcfcfc6f006affffffffffffffff70006effffffffffffffff700072ffff700404040404020076ffff60000000000000007affff53000000000000007effff87c4f6eeb32c000082fffffffffffffff1230086fffffc8061e0ffff9d008affff8d000051ffffef020b14140700001effffff1900000000000010ffffff2d0000000000000dffffff2ca1c0c05500000effffff20c7ffff7d00001bfffffb07a3ffffae00004effffc90052fffffe7756d8ffff6f0003c1ffffffffffffce0700000985d5f8fbd8850b0000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 53 + } + }, + { + "encoding": 54, + "x": 1, + "y": 0, + "width": 11, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 11, + "height": 19, + "pixelArray": "000042b8edfae3a83200000064fffffffffffffa440015f5ffff9f59c1ffffd60168ffffdb010029ffffff1aa0ffffab000006b0b0b023bdffff9400000000000000c7ffff9000000000000000c8ffff9d9cebf7cb550000c8fffffeffffffffff5c00c8ffffff8c5bceffffe102c8ffffa6000035ffffff2bc8ffff90000007ffffff4ec8ffff90000000fbffff5bc2ffff91000000fbffff50a8ffffa300000dffffff316cffffdb030041fffff10513f3ffff9b54d2ffff9100005afeffffffffffdc140000003ebaeffddd96160000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 54 + } + }, + { + "encoding": 55, + "x": 0, + "y": 0, + "width": 10, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 10, + "height": 19, + "pixelArray": "0cfcfcfcfcfcfcfcfc5b0cffffffffffffffff5b045050505054fdffff33000000000031fffff60500000000006bffffc1000000000000a5ffff87000000000000dfffff4e00000000001affffff16000000000053ffffdc0000000000008dffffa3000000000000c7ffff6a000000000008faffff3100000000003bfffff404000000000075ffffbe000000000000afffff85000000000001e9ffff4c000000000023ffffff1400000000005dffffda00000000000097ffffa100000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 55 + } + }, + { + "encoding": 56, + "x": 0, + "y": 0, + "width": 12, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "00000775cff5f6cf750700000003bcffffffffffffb802000059fffff87475faffff520000a5ffff9c0000a2ffff9f0000c2ffff70000075ffffbd0000b4ffff7900007dffffb0000079ffffad0000b0ffff77000014ebfffd7472feffec1300000037f8fffffffff83700000004a6ffffffffffffa20300006bffffdd2827deffff660000d0ffff6800006bffffce0006fdffff3700003bfffffc050effffff2a00002effffff0f02f9ffff3800003bfffffa0200ceffff72000073ffffd1000075ffffee6664efffff7b000009c8ffffffffffffcd0b000000097dd3f9f9d5810b0000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 56 + } + }, + { + "encoding": 57, + "x": 1, + "y": 0, + "width": 11, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 11, + "height": 19, + "pixelArray": "000165c7f3f6cc70040000019cffffffffffffb2030043fffffb766cf1ffff6100a8ffffa000007cffffc900dcffff6d000045fffffd05f7ffff61000039ffffff1ef8ffff63000038ffffff24e3ffff7c000039ffffff24acffffd91b10aaffffff2442ffffffffffffffffff24006df6fffffeaeffffff2400000f414a1c38ffffff240000000000003affffff231f24240f000043ffffff19d2ffff6f000062fffff904b0ffffa30000a5ffffc40062ffffffb4aeffffff660005c3ffffffffffffc40400000a7cd3f8fad67e090000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 57 + } + }, + { + "encoding": 58, + "x": 1, + "y": 1, + "width": 4, + "height": 12, + "dx": 6, + "glyphBitmap": { + "width": 4, + "height": 12, + "pixelArray": "82fcfca284ffffa484ffffa4030404030000000000000000000000000000000082fcfca284ffffa484ffffa403040403" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 58 + } + }, + { + "encoding": 59, + "x": 1, + "y": -2, + "width": 4, + "height": 16, + "dx": 6, + "glyphBitmap": { + "width": 4, + "height": 16, + "pixelArray": "8afcfc9e8cffffa08cffffa003040403000000000000000000000000000000000000000086fcfcae88ffffb088ffffb00304e3ab0053ff7d46fff1210e701e00" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 59 + } + }, + { + "encoding": 60, + "x": 0, + "y": 1, + "width": 8, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "000000000000000900000000000045c5000000000a92ffe000000033d7ffffdb00047cfbffffc82418c6fffffc7f040044ffffdc3900000044ffff990800000032fbffffd12b00000032d6fffff76c010000098fffffffa80000000043e3ffe0000000000010a4e00000000000000042" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 60 + } + }, + { + "encoding": 61, + "x": 1, + "y": 5, + "width": 8, + "height": 8, + "dx": 10, + "glyphBitmap": { + "width": 8, + "height": 8, + "pixelArray": "2c484848484848429cffffffffffffe89cffffffffffffe803040404040404042c484848484848429cffffffffffffe89cffffffffffffe80304040404040404" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 61 + } + }, + { + "encoding": 62, + "x": 1, + "y": 1, + "width": 8, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 14, + "pixelArray": "09000000000000009e6b010000000000a8ffb91b00000000a3ffffee5700000010a4ffffffa61100000058efffffe4390000001dbdffff840000000168feff84000014afffffff6c0045e6ffffee570071ffffffb81b0000a8fff56901000000a8c82500000000003e04000000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 62 + } + }, + { + "encoding": 63, + "x": 1, + "y": 0, + "width": 10, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 10, + "height": 19, + "pixelArray": "00229de0faefc36303002cf2ffffffffffffac01b0ffffd35e85fdffff56e5ffff4600009bffffabdeffff3c00006fffffcd9aa9761e00008affffc1000000000001cfffff9100000000004bffffff320000000014e3ffffa10000000007bfffffd50c00000009b5ffffdf1e000000007affffd61d000000000080ffff7400000000000080ffff740000000000001e3c3c1c000000000000000000000000000000009afcfc9e0000000000009cffffa00000000000009cffffa000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 63 + } + }, + { + "encoding": 64, + "x": 1, + "y": -4, + "width": 21, + "height": 23, + "dx": 22, + "glyphBitmap": { + "width": 21, + "height": 23, + "pixelArray": "000000000000044b95c2ebfaf5d4a551020000000000000000004edfffffffffffffffffffcf3200000000000008a3ffffffd79364536189d6fffff5380000000003b1ffffe54c010000000000025bf3ffe6130000006bffffcc1600000000000000000042fdff8d000018f1ffec1900001899e5e95ff6fc870097ffed060083ffff6e00002ae7ffffffffffff640032ffff3d01e0ffec070007d6ffffce62bbffff3e0001f1ff6821ffff9a00006cffffcb0800adffff180000d6ff7d51ffff5f0000d5ffff360000d1fff2010000cfff7f7effff33001fffffd8000001f5ffcc000000e0ff6a95ffff17004bffffa7000019ffffa700000effff3e9effff0e005bffff9300003dffff81000051fff00894ffff1c0048ffffb400007cffff5d0002c7ff910078ffff390015fcfffb686af5ffff4f0180ffe715004effff7b000089ffffffffa5fbffd8d8ffef3a00000af6ffdd06000481dcec9a085bdbffe59d1d0000000098ffff7c000000000000000000020000000000000014edffff80060000000000000000000000000000000040f5ffffda7a39130309264b7d2b000000000000000030ceffffffffffffffffffff70000000000000000000045bb9fafffffffffff5c85b0000000000000000000000000425444a3e1c0100000000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 64 + } + }, + { + "encoding": 65, + "x": 0, + "y": 0, + "width": 13, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 13, + "height": 19, + "pixelArray": "00000000b4fcfcfc320000000000000001ecffffff670000000000000021ffffffff9c0000000000000056ffffffffd1000000000000008bfffff5fffc0a000000000000c0ffffa6ffff3b000000000003f3ffea64ffff7000000000002affffbd38ffffa500000000005fffff910dffffda000000000095ffff6400dfffff1100000000caffff3700b3ffff4500000006f9ffff0d0087ffff7a00000034fffffffcfcfeffffaf00000069ffffffffffffffffe40000009effffac505052fdffff190000d3ffff60000000daffff4e000bfdffff35000000afffff83003dffffff0b00000085ffffb80072ffffde000000005affffed01" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 65 + } + }, + { + "encoding": 66, + "x": 1, + "y": 0, + "width": 12, + "height": 19, + "dx": 13, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "8afcfcfcfcfae9c26b0800008cffffffffffffffffca0a008cffffff515b8bf5ffff7e008cffffff0000006affffc6008cffffff00000033ffffe5008cffffff0000003bffffdb008cffffff0000007cffffa1008cffffff485085f6fff72f008cffffffffffffffc52b00008cffffffffffffffffc31b008cffffff040c44d8ffffca018cffffff0000003dffffff348cffffff00000005f9ffff6a8cffffff00000000ecffff7a8cffffff00000009fbffff698cffffff0000004affffff3a8cffffff484d78eaffffd7028cfffffffffffffffff238008cfffffffffffbdb951e0000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 66 + } + }, + { + "encoding": 67, + "x": 1, + "y": 0, + "width": 11, + "height": 19, + "dx": 13, + "glyphBitmap": { + "width": 11, + "height": 19, + "pixelArray": "000048b2e4faf0c87407000081ffffffffffffffc4062dffffffac5672f7ffff6789ffffec0500009effffbcbeffffc200000083ffffe1d5ffffb90000007dffffecdcffffb80000006bdcdccbdcffffb800000000000000dcffffb800000000000000dcffffb800000000000000dcffffb800000000000000dcffffb80000001020201edcffffb80000007cffffecd6ffffb90000007dffffeabfffffc700000083ffffdc8afffff1060000a9ffffb22dfeffffaf5074fbffff5c007cffffffffffffffbb04000048b8e8fef4cf750800" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 67 + } + }, + { + "encoding": 68, + "x": 1, + "y": 0, + "width": 12, + "height": 19, + "dx": 13, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "8afcfcfcfcf9e3bd6a0500008cffffffffffffffffc80b008cffffff505898ffffff81008cffffff000000b3ffffe0008cffffff00000084ffffff088cffffff00000079ffffff1d8cffffff00000078ffffff208cffffff00000078ffffff208cffffff00000078ffffff208cffffff00000078ffffff208cffffff00000078ffffff208cffffff00000078ffffff208cffffff00000079ffffff208cffffff0000007bffffff1a8cffffff00000086fffffd048cffffff000000b9ffffd2008cffffff485299ffffff6f008cffffffffffffffffbd06008cfffffffffee7c168040000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 68 + } + }, + { + "encoding": 69, + "x": 1, + "y": 0, + "width": 9, + "height": 19, + "dx": 10, + "glyphBitmap": { + "width": 9, + "height": 19, + "pixelArray": "8afcfcfcfcfcfcfc968cffffffffffffff988cffffff50505050308cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff4848482d008cffffffffffffa0008cffffffffffffa0008cffffff04040403008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff484848482f8cffffffffffffffa48cffffffffffffffa4" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 69 + } + }, + { + "encoding": 70, + "x": 1, + "y": 0, + "width": 9, + "height": 19, + "dx": 10, + "glyphBitmap": { + "width": 9, + "height": 19, + "pixelArray": "8afcfcfcfcfcfcfc6f8cffffffffffffff708cffffff50505050238cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff48484828008cffffffffffff8c008cffffffffffff8c008cffffff04040403008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff0000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 70 + } + }, + { + "encoding": 71, + "x": 1, + "y": 0, + "width": 12, + "height": 19, + "dx": 13, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "000048b3e4faf1ce831100000077ffffffffffffffde140023fdffffb35872efffff8f0082ffffee0700007dffffe100b7ffffc400000059ffffff08d1ffffb900000055ffffff10dcffffb80000000610101001dcffffb80000000000000000dcffffb80000000000000000dcffffb80020fcfcfcfcfc2cdcffffb80020ffffffffff2cdcffffb8000a5053ffffff2cdcffffb800000005ffffff2cd2ffffba00000009ffffff2cb7ffffcd00000021ffffff2c80fffff70c000065ffffff2c25feffffb85369eeffffff2c0086ffffffffffffb7ffff2c000156c0f1fdd56333ffff2c" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 71 + } + }, + { + "encoding": 72, + "x": 1, + "y": 0, + "width": 12, + "height": 19, + "dx": 14, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "82fcfcfc08000004fcfcfc8284ffffff08000004ffffff8484ffffff08000004ffffff8484ffffff08000004ffffff8484ffffff08000004ffffff8484ffffff08000004ffffff8484ffffff08000004ffffff8484ffffff4e48484bffffff8484ffffffffffffffffffff8484ffffffffffffffffffff8484ffffff0c040408ffffff8484ffffff08000004ffffff8484ffffff08000004ffffff8484ffffff08000004ffffff8484ffffff08000004ffffff8484ffffff08000004ffffff8484ffffff08000004ffffff8484ffffff08000004ffffff8484ffffff08000004ffffff84" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 72 + } + }, + { + "encoding": 73, + "x": 1, + "y": 0, + "width": 5, + "height": 19, + "dx": 7, + "glyphBitmap": { + "width": 5, + "height": 19, + "pixelArray": "6ffcfcfc0c70ffffff0c70ffffff0c70ffffff0c70ffffff0c70ffffff0c70ffffff0c70ffffff0c70ffffff0c70ffffff0c70ffffff0c70ffffff0c70ffffff0c70ffffff0c70ffffff0c70ffffff0c70ffffff0c70ffffff0c70ffffff0c" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 73 + } + }, + { + "encoding": 74, + "x": 0, + "y": 0, + "width": 7, + "height": 19, + "dx": 8, + "glyphBitmap": { + "width": 7, + "height": 19, + "pixelArray": "000030fcfcfc5b000030ffffff5b000030ffffff5b000030ffffff5b000030ffffff5a000030ffffff5a000030ffffff5a000030ffffff5a000030ffffff59000030ffffff59000030ffffff59000030ffffff58000030ffffff58000030ffffff58000035ffffff56000068ffffff455e9bf2ffffff19c8ffffffffa800c8fffadd8b0b00" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 74 + } + }, + { + "encoding": 75, + "x": 1, + "y": 0, + "width": 12, + "height": 19, + "dx": 13, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "8afcfcfc00000068fcfcec0b8cffffff000003dbffff8c008cffffff000051fffffe21008cffffff0000c5ffffb000008cffffff003affffff4200008cffffff00adffffd40100008cffffff24feffff660000008cffffff96ffffee0b0000008cfffffff6ffff96000000008cffffffffffffcc000000008cffffffb3ffffff330000008cffffff0ecfffff980000008cffffff006dfffff20c00008cffffff0013f9ffff6300008cffffff0000abffffc900008cffffff000049ffffff30008cffffff000003e5ffff95008cffffff00000087fffff10b8cffffff00000026ffffff61" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 75 + } + }, + { + "encoding": 76, + "x": 1, + "y": 0, + "width": 9, + "height": 19, + "dx": 10, + "glyphBitmap": { + "width": 9, + "height": 19, + "pixelArray": "8afcfcfc00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff00000000008cffffff6c6c6c6c468cffffffffffffffa48cffffffffffffffa4" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 76 + } + }, + { + "encoding": 77, + "x": 1, + "y": 0, + "width": 14, + "height": 19, + "dx": 16, + "glyphBitmap": { + "width": 14, + "height": 19, + "pixelArray": "46fcfcfc79000000000cf9fcfca04bffffffaf000000003fffffffa64fffffffe50000000076ffffffab53ffffffff1b000000adffffffaf58ffffffff50000000e4ffffffb45cffffffff8600001bffffffffb860ffffe7ffbc000052fff4f6ffbc64ffffabfff002008affbfeeffc168ffff6effff2700c1ff88eaffc56dffff4ae9ff5c04f5ff50e5ffca71ffff45b1ff922fffff19e0ffce75ffff4079ffc866ffe100dcffd379ffff3c41fff8a2ffa900d7ffd77dffff380dfdfff6ff7200d2ffdb82ffff3300d1ffffff3a00ceffe086ffff2f0099fffffa0900c9ffe48affff2b0061ffffcb0000c4ffe98effff260029ffff930000c0ffed92ffff220002efff5c0000bbfff2" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 77 + } + }, + { + "encoding": 78, + "x": 1, + "y": 0, + "width": 11, + "height": 19, + "dx": 13, + "glyphBitmap": { + "width": 11, + "height": 19, + "pixelArray": "8afcf91f00000057fcfc928cffff8a00000058ffff948cffffef0c000058ffff948cffffff6a000058ffff948cffffffd9020058ffff948cffffffff4a0058ffff948cffffffffba0058ffff948cffffffffff2b58ffff948cffffbcffff9a58ffff948cffff76d8fff76cffff948cffff746affffd2ffff948cffff740cf0ffffffff948cffff74008dffffffff948cffff740021fdffffff948cffff740000afffffff948cffff74000040ffffff948cffff74000001d1ffff948cffff7400000063ffff948cffff7400000009ecff94" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 78 + } + }, + { + "encoding": 79, + "x": 1, + "y": 0, + "width": 12, + "height": 19, + "dx": 13, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "000047b2e3faf2cd800e0000007fffffffffffffffdd18002dffffffaf5871f2ffffa00091ffffed06000079fffff80bc0ffffc300000049ffffff39d8ffffbc00000041ffffff53dcffffbc00000040ffffff58dcffffbc00000040ffffff58dcffffbc00000040ffffff58dcffffbc00000040ffffff58dcffffbc00000040ffffff58dcffffbc00000040ffffff58dcffffbc00000040ffffff58d7ffffbc00000041ffffff52bcffffc200000049ffffff3986ffffec05000079fffffa0d29feffffaa506befffffa0000080ffffffffffffffdc170000004ab3e6fef6d2870f0000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 79 + } + }, + { + "encoding": 80, + "x": 1, + "y": 0, + "width": 12, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "8afcfcfcfcfcf7d4840e00008cffffffffffffffffd30d008cffffff50557ff6ffff7f008cffffff00000084ffffd1008cffffff00000058fffff8018cffffff00000054ffffff028cffffff00000078ffffe8008cffffff000439ddffffaa008cfffffffcfffffffff92f008cffffffffffffffce3d00008cffffff50504621000000008cffffff00000000000000008cffffff00000000000000008cffffff00000000000000008cffffff00000000000000008cffffff00000000000000008cffffff00000000000000008cffffff00000000000000008cffffff0000000000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 80 + } + }, + { + "encoding": 81, + "x": 1, + "y": -4, + "width": 12, + "height": 23, + "dx": 13, + "glyphBitmap": { + "width": 12, + "height": 23, + "pixelArray": "000047b2e3faf2cc7e0d0000007fffffffffffffffdb17002dffffffaf5871f2ffff9e0091ffffed06000079fffff70ac0ffffc300000049ffffff38d8ffffbc00000041ffffff53dcffffbc00000040ffffff58dcffffbc00000040ffffff58dcffffbc00000040ffffff58dcffffbc00000040ffffff58dcffffbc00000040ffffff58dcffffbc00000040ffffff58dcffffbc00000040ffffff58d7ffffbc00000041ffffff52bcffffc200000049ffffff3386ffffec05000079fffff90829feffffaa506befffff99000080ffffffffffffffde180000004ab3e6feffffe61500000000000000007fffff9c040000000000000002adffff69000000000000000007adff3000000000000000000001630200" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 81 + } + }, + { + "encoding": 82, + "x": 1, + "y": 0, + "width": 12, + "height": 19, + "dx": 13, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "8afcfcfcfcf8e4bc6b0900008cffffffffffffffffd411008cffffff505892fbffff98008cffffff00000090ffffe8008cffffff0000004effffff0d8cffffff00000047ffffff108cffffff00000076ffffee018cffffff000a4beaffffb4008cfffffffdfffffffff334008cffffffffffffffe72e00008cffffff508dfffff60800008cffffff001fffffff4700008cffffff0000dbffff9100008cffffff000096ffffda00008cffffff000052ffffff25008cffffff000010fdffff6e008cffffff000000c8ffffb7008cffffff00000084fffff80a8cffffff0000003fffffff4b" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 82 + } + }, + { + "encoding": 83, + "x": 0, + "y": 0, + "width": 12, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "00000e81d3f6f5ce720600000012d8ffffffffffffb302000092ffffe26468eeffff500000e4ffff64000074ffffa60002ffffff5a00003cffffce0000f3ffffb00100125627030000beffffff8a010000000000004effffffffa60800000000000085ffffffffc71700000000000179ffffffffdc1c00000000000054f7ffffffd20900000000000036eaffffff81000000000902002bf2ffffea020299cefb1800007affffff2400edffff41000035ffffff3500b7ffff8f00003effffff160053fffffc7b55caffffbd000001a2ffffffffffffeb27000000025ec2f1fee1961a0000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 83 + } + }, + { + "encoding": 84, + "x": 0, + "y": 0, + "width": 11, + "height": 19, + "dx": 10, + "glyphBitmap": { + "width": 11, + "height": 19, + "pixelArray": "e5fcfcfcfcfcfcfcfcfc0ce8ffffffffffffffffff0c495050c1ffffed50505004000000a4ffffe400000000000000a4ffffe400000000000000a4ffffe400000000000000a4ffffe400000000000000a4ffffe400000000000000a4ffffe400000000000000a4ffffe400000000000000a4ffffe400000000000000a4ffffe400000000000000a4ffffe400000000000000a4ffffe400000000000000a4ffffe400000000000000a4ffffe400000000000000a4ffffe400000000000000a4ffffe400000000000000a4ffffe400000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 84 + } + }, + { + "encoding": 85, + "x": 1, + "y": 0, + "width": 12, + "height": 19, + "dx": 14, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "b2fcfcba00000034fcfcfc38b4ffffbc00000034ffffff38b4ffffbc00000034ffffff38b4ffffbc00000034ffffff38b4ffffbc00000034ffffff38b4ffffbc00000034ffffff38b4ffffbc00000034ffffff38b4ffffbc00000034ffffff38b4ffffbc00000034ffffff38b4ffffbc00000034ffffff38b4ffffbc00000034ffffff38b4ffffbc00000034ffffff38b4ffffbc00000034ffffff37acffffbf00000036ffffff3095ffffd000000047ffffff1963fffffa11000082ffffe80114f7ffffc05372f5ffff90000069ffffffffffffffdb1100000042b3e7fef6d486110000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 85 + } + }, + { + "encoding": 86, + "x": 0, + "y": 0, + "width": 12, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "59fcfcc5000000006efcfcc326fffff6030000009dffff9002f0ffff2a000000ccffff5b00bcffff5c000004f7ffff250087ffff8d000028ffffef010052ffffbe000056ffffba00001dffffef010085ffff85000001e8ffff2100b3ffff4f000000b2ffff5200e1ffff1a0000007dffff8310ffffe40000000048ffffb53effffaf0000000014ffffe66cffff790000000000deffffb1ffff440000000000a9fffffbffff10000000000074ffffffffd90000000000003fffffffffa30000000000000dfeffffff6e00000000000000d5ffffff38000000000000009ffffffb08000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 86 + } + }, + { + "encoding": 87, + "x": 0, + "y": 0, + "width": 17, + "height": 19, + "dx": 17, + "glyphBitmap": { + "width": 17, + "height": 19, + "pixelArray": "26fcfcd1000000a3fce200000087fcfc5d06fcfff5010000d1ffff120000aaffff3800dcffff160004f9ffff3d0000cbffff1300b6ffff370027ffffff690000ecffee000091ffff580052ffffff95000dffffc900006bffff79007dffffffc1002effffa3000046ffff9a00a8fff6ffed014fffff7e000020ffffbb00d4ffa9ffff1970ffff59000003f9ffdc05faff56fbff4591ffff33000000d5fffb2dffff23d4ff71b2ffff0e000000b0ffff73fff402a7ff9dd3ffe9000000008affffbfffc9007affcaf4ffc40000000065fffffcff9c004dfffbffff9e000000003fffffffff6f0020ffffffff79000000001affffffff420001f2ffffff540000000001f4ffffff150000c6ffffff2e0000000000cfffffe800000099ffffff0a0000000000a9ffffbb0000006cffffe400000000000083ffff8e0000003fffffbf000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 87 + } + }, + { + "encoding": 88, + "x": 0, + "y": 0, + "width": 12, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "6efcfcdb02000000cefcfc4611f6ffff4900002dffffe203009affffb2000088ffff8100002ffffffe2002e2fffe20000000c4ffff863effffbb0000000059ffffe9a0ffff580000000006e8ffffffffed08000000000082ffffffff910000000000001bfcffffff2e0000000000000ef6ffffd50000000000000068fffffffa19000000000000cdffffffff81000000000032fffff9ffffe9070000000097ffff76ecffff5e0000000bf1fff91385ffffcd01000060ffffaa001bfbffff3c0000c5ffff480000a7ffffab002bffffe403000038fffffc1e8effff8500000000c8ffff89" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 88 + } + }, + { + "encoding": 89, + "x": 0, + "y": 0, + "width": 12, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "9cfcfcad00000002e5fcfc554afffff60a000036fffff70c06efffff4e000082ffffad00009fffff9e0000ceffff5900004affffeb031bfffff80d000006efffff3d66ffffaf000000009fffff8db3ffff5a0000000049ffffe1f6fff80e0000000006efffffffffb10000000000009effffffff5c00000000000049fffffff90f00000000000006efffffb30000000000000000d0ffff900000000000000000d0ffff900000000000000000d0ffff900000000000000000d0ffff900000000000000000d0ffff900000000000000000d0ffff900000000000000000d0ffff9000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 89 + } + }, + { + "encoding": 90, + "x": 0, + "y": 0, + "width": 10, + "height": 19, + "dx": 10, + "glyphBitmap": { + "width": 10, + "height": 19, + "pixelArray": "00e1fcfcfcfcfcfcfc9e00e4ffffffffffffff9b004850505066ffffff5200000000006dffffef080000000000c8ffff9a000000000024ffffff3e00000000007effffe1020000000001d9ffff87000000000034ffffff2b00000000008fffffcf000000000003e7ffff73000000000044fffffe1a00000000009fffffbb000000000009f2ffff5f000000000055fffff60e0000000000b0ffffa8000000000010faffff88484848482f28ffffffffffffffffa428ffffffffffffffffa4" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 90 + } + }, + { + "encoding": 91, + "x": 1, + "y": -4, + "width": 7, + "height": 23, + "dx": 8, + "glyphBitmap": { + "width": 7, + "height": 23, + "pixelArray": "9bfcfcfcfcfc289dffff6b2c2c079dffff4b0000009dffff4b0000009dffff4b0000009effff4b0000009effff4b0000009effff4a0000009effff4a0000009effff4a0000009effff4a0000009fffff4a0000009fffff490000009fffff490000009fffff490000009fffff490000009fffff49000000a0ffff48000000a0ffff48000000a0ffff48000000a0ffff48000000a0ffff65282807a0ffffffffff28" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 91 + } + }, + { + "encoding": 92, + "x": 0, + "y": 0, + "width": 9, + "height": 19, + "dx": 10, + "glyphBitmap": { + "width": 9, + "height": 19, + "pixelArray": "09f3fc48000000000000b6ff920000000000006cffdd01000000000022ffff26000000000000d8ff700000000000008effba00000000000044fff90c000000000007f3ff4f000000000000afff9900000000000065ffe30100000000001cffff2d000000000000d1ff7700000000000087ffc20000000000003cfffc11000000000004efff56000000000000a8ffa00000000000005effe902000000000016ffff34000000000000caff7f" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 92 + } + }, + { + "encoding": 93, + "x": 0, + "y": -4, + "width": 7, + "height": 23, + "dx": 8, + "glyphBitmap": { + "width": 7, + "height": 23, + "pixelArray": "77fcfcfcfcfc4f152c2caeffff500000009cffff500000009cffff500000009cffff500000009cffff500000009cffff500000009bffff500000009bffff500000009bffff500000009bffff500000009bffff500000009affff500000009affff500000009affff500000009affff500000009affff5000000099ffff5000000099ffff5000000099ffff5000000099ffff50132828a9ffff5078ffffffffff50" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 93 + } + }, + { + "encoding": 94, + "x": 0, + "y": 10, + "width": 11, + "height": 9, + "dx": 11, + "glyphBitmap": { + "width": 11, + "height": 9, + "pixelArray": "0000001cf9fcfc4000000000000082ffffffab000000000006e7fffafffc1b0000000056ffff77ffff8100000000c0ffef07cdffe70600002bffff9d0073ffff57000094ffff43001cfeffc2000df2ffe7030000bfffff2d0104040300000003040402" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 94 + } + }, + { + "encoding": 95, + "x": 0, + "y": -4, + "width": 9, + "height": 3, + "dx": 9, + "glyphBitmap": { + "width": 9, + "height": 3, + "pixelArray": "4c4c4c4c4c4c4c4c2bffffffffffffffff90ffffffffffffffff90" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 95 + } + }, + { + "encoding": 96, + "x": 1, + "y": 13, + "width": 5, + "height": 6, + "dx": 7, + "glyphBitmap": { + "width": 5, + "height": 6, + "pixelArray": "81fcfca9000ce5fff004005bffff3d0001c5ff86000034fece0000000404" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 96 + } + }, + { + "encoding": 97, + "x": 0, + "y": 0, + "width": 10, + "height": 14, + "dx": 11, + "glyphBitmap": { + "width": 10, + "height": 14, + "pixelArray": "00001c98e0faebab25000015e5ffffffffffe9120085ffffca5cddffff7600c8ffff570089ffffaa009bb0b030007dffffb8000000000348c8ffffb800000157dbffffffffb80005a8ffffb291ffffb80087ffffb2027cffffb800e7ffff32007cffffb80cffffff21007effffb903f1ffffa362ecffffc10091ffffffffadffffd0000a9bf4ec8817ffffeb" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 97 + } + }, + { + "encoding": 98, + "x": 1, + "y": 0, + "width": 10, + "height": 19, + "dx": 11, + "glyphBitmap": { + "width": 10, + "height": 19, + "pixelArray": "b2fcfc92000000000000b4ffff94000000000000b4ffff94000000000000b4ffff94000000000000b4ffff94000000000000b4ffff966adaf7b81c00b4fffff5ffffffffc200b4ffffe76d8dffffff27b4ffff940002f0ffff5bb4ffff940000daffff6fb4ffff940000d8ffff70b4ffff940000d8ffff70b4ffff940000d8ffff70b4ffff940000d8ffff70b4ffff940000daffff6bb4ffff940001eeffff55b4ffffd25c7dffffff1eb4fffffbffffffffb400b4ffff9879e6f7b11400" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 98 + } + }, + { + "encoding": 99, + "x": 1, + "y": 0, + "width": 9, + "height": 14, + "dx": 11, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "002cade9fbe6a5230024f4ffffffffffe8119affffc85ad7ffff6adeffff5c007affff99fbffff49006dffffa4ffffff48001f48482fffffff480000000000ffffff480000000000ffffff48003a888858fbffff49006dffffa4deffff5d007affff979bffffcc5fd9ffff6526f5ffffffffffe30d002fb1edfee8a32000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 99 + } + }, + { + "encoding": 100, + "x": 1, + "y": 0, + "width": 10, + "height": 19, + "dx": 11, + "glyphBitmap": { + "width": 10, + "height": 19, + "pixelArray": "00000000002cfcfcfc1c00000000002cffffff1c00000000002cffffff1c00000000002cffffff1c00000000002cffffff1c005ddbf7bb5effffff1c3cffffffffffffffff1ca3ffffdc5ca9ffffff1cdcffff6d002cffffff1cf6ffff51002cffffff1cfcffff50002cffffff1cfcffff50002cffffff1cfcffff50002cffffff1cfcffff50002cffffff1cf8ffff52002cffffff1ce3ffff69002cffffff1cb3ffffd9538fffffff1c53fffffffffeffffff1c016de1fbc25dffffff1c" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 100 + } + }, + { + "encoding": 101, + "x": 1, + "y": 0, + "width": 9, + "height": 14, + "dx": 11, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "0029aae8fae39f180022f2ffffffffffdb0998ffffc25ad2ffff5ddcffff52006dffff9afaffff410061ffffb4ffffffdfd4e5ffffbcffffffffffffffffbcffffff430404040403ffffff400000000000fbffff41005cf4f4b3deffff550073ffffaa9cffffcf6adeffff7028f6ffffffffffe10d002fb0ebfee79f1b00" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 101 + } + }, + { + "encoding": 102, + "x": 0, + "y": 0, + "width": 8, + "height": 19, + "dx": 7, + "glyphBitmap": { + "width": 8, + "height": 19, + "pixelArray": "0000129ee9f9ea230000a1ffffffff280001f0ffffb25a12000bffffff3e00000010ffffff3400008efdfffffffdfc2890ffffffffffff282d5bffffff74500d0010ffffff3400000010ffffff3400000010ffffff3400000010ffffff3400000010ffffff3400000010ffffff3400000010ffffff3400000010ffffff3400000010ffffff3400000010ffffff3400000010ffffff340000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 102 + } + }, + { + "encoding": 103, + "x": 0, + "y": -4, + "width": 12, + "height": 19, + "dx": 11, + "glyphBitmap": { + "width": 12, + "height": 19, + "pixelArray": "000000000000000000001a0000001ea3e8f9d55f0699f00a0017e7ffffffffffcefff43d0088ffffb85ad5ffff790c0000ceffff36006affff64000000eeffff1d0051ffff95000000f1ffff1a0050ffffa2000000d3ffff310069ffff8a0000008dffffb352d1ffff4f0000000ed2ffffffffffcc0300000023deece5ffe9991300000000ceff84000200000000000001f7ffffe2c2aa8b4b0300000060efffffffffffffc006000050f3ec61738dd0ffff560024f9ff8700000015ffff80006effffd86c5155a1ffff6a0045ffffffffffffffffef18000050b4e8fdfffbe1a72e0000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 103 + } + }, + { + "encoding": 104, + "x": 1, + "y": 0, + "width": 10, + "height": 19, + "dx": 11, + "glyphBitmap": { + "width": 10, + "height": 19, + "pixelArray": "aefcfc92000000000000b0ffff94000000000000b0ffff94000000000000b0ffff94000000000000b0ffff94000000000000b0ffff9434afefeb6200b0ffffdffdfffffff912b0fffff98579ffffff43b0ffff970002fbffff4cb0ffff940000f8ffff4cb0ffff940000f8ffff4cb0ffff940000f8ffff4cb0ffff940000f8ffff4cb0ffff940000f8ffff4cb0ffff940000f8ffff4cb0ffff940000f8ffff4cb0ffff940000f8ffff4cb0ffff940000f8ffff4cb0ffff940000f8ffff4c" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 104 + } + }, + { + "encoding": 105, + "x": 1, + "y": 0, + "width": 4, + "height": 19, + "dx": 6, + "glyphBitmap": { + "width": 4, + "height": 19, + "pixelArray": "a2fcfca6a4ffffa8345050350000000000000000a2fcfca2a4ffffa4a4ffffa4a4ffffa4a4ffffa4a4ffffa4a4ffffa4a4ffffa4a4ffffa4a4ffffa4a4ffffa4a4ffffa4a4ffffa4a4ffffa4" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 105 + } + }, + { + "encoding": 106, + "x": -1, + "y": -4, + "width": 6, + "height": 23, + "dx": 6, + "glyphBitmap": { + "width": 6, + "height": 23, + "pixelArray": "00006bfcfcdd00006cffffe000002250504600000000000000000000000000006bfcfcd900006cffffdc00006cffffdc00006cffffdc00006cffffdc00006cffffdc00006cffffdc00006cffffdc00006cffffdc00006cffffdc00006cffffdc00006cffffdc00006cffffdc00006cffffdc00007cffffda2f84ecffffb858ffffffff5048effdd65f00" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 106 + } + }, + { + "encoding": 107, + "x": 1, + "y": 0, + "width": 11, + "height": 19, + "dx": 12, + "glyphBitmap": { + "width": 11, + "height": 19, + "pixelArray": "b2fcfc8a00000000000000b4ffff8c00000000000000b4ffff8c00000000000000b4ffff8c00000000000000b4ffff8c00000000000000b4ffff8c00004afcfcfc43b4ffff8c000adfffffaa00b4ffff8c0087fffff31b00b4ffff8c2cfbffff730000b4ffff8ec4ffffd4050000b4ffffe3ffffff51000000b4ffffffffffff86000000b4ffffff95ffffe8050000b4ffffb102e3ffff520000b4ffff8c0089ffffb80000b4ffff8c002efffffe2100b4ffff8c0000d2ffff8400b4ffff8c000076ffffe605b4ffff8c00001dfeffff51" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 107 + } + }, + { + "encoding": 108, + "x": 1, + "y": 0, + "width": 4, + "height": 19, + "dx": 6, + "glyphBitmap": { + "width": 4, + "height": 19, + "pixelArray": "86fcfcbd88ffffc088ffffc088ffffc088ffffc088ffffc088ffffc088ffffc088ffffc088ffffc088ffffc088ffffc088ffffc088ffffc088ffffc088ffffc088ffffc088ffffc088ffffc0" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 108 + } + }, + { + "encoding": 109, + "x": 1, + "y": 0, + "width": 16, + "height": 14, + "dx": 17, + "glyphBitmap": { + "width": 16, + "height": 14, + "pixelArray": "bdfcfc6065cff8d437077ddaf8b91e00c0ffffe4ffffffffddc4ffffffffb000c0ffffed7973ffffffdb6994fffff602c0ffff640000eaffff3a001affffff0cc0ffff600000e4ffff380014ffffff0cc0ffff600000e4ffff380014ffffff0cc0ffff600000e4ffff380014ffffff0cc0ffff600000e4ffff380014ffffff0cc0ffff600000e4ffff380014ffffff0cc0ffff600000e4ffff380014ffffff0cc0ffff600000e4ffff380014ffffff0cc0ffff600000e4ffff380014ffffff0cc0ffff600000e4ffff380014ffffff0cc0ffff600000e4ffff380014ffffff0c" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 109 + } + }, + { + "encoding": 110, + "x": 1, + "y": 0, + "width": 10, + "height": 14, + "dx": 11, + "glyphBitmap": { + "width": 10, + "height": 14, + "pixelArray": "bdfcfc8640b7f2e35100c0ffffe4ffffffffeb03c0fffff2798bffffff29c0ffff890018ffffff34c0ffff880014ffffff34c0ffff880014ffffff34c0ffff880014ffffff34c0ffff880014ffffff34c0ffff880014ffffff34c0ffff880014ffffff34c0ffff880014ffffff34c0ffff880014ffffff34c0ffff880014ffffff34c0ffff880014ffffff34" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 110 + } + }, + { + "encoding": 111, + "x": 1, + "y": 0, + "width": 9, + "height": 14, + "dx": 11, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "0028aae8fae29b1a0024f1ffffffffffe3129effffc75bd9ffff80e3ffff540072ffffc6feffff41005effffe2ffffff40005cffffe4ffffff40005cffffe4ffffff40005cffffe4ffffff40005cffffe4feffff41005dffffe2e4ffff500072ffffc7a2ffffc252d4ffff8327f4ffffffffffe614002baeecfee6a01d00" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 111 + } + }, + { + "encoding": 112, + "x": 1, + "y": -4, + "width": 10, + "height": 18, + "dx": 11, + "glyphBitmap": { + "width": 10, + "height": 18, + "pixelArray": "bdfcfc8c79def7b41800c0fffffaffffffffba00c0ffffe46b93ffffff20c0ffff880005f6ffff53c0ffff880000deffff67c0ffff880000dcffff68c0ffff880000dcffff68c0ffff880000dcffff68c0ffff880000dcffff68c0ffff880000dfffff63c0ffff880003f5ffff4dc0ffffcc5a85fffffe17c0fffffaffffffffac00c0ffff8d7ce8f6ad1000c0ffff88000000000000c0ffff88000000000000c0ffff88000000000000c0ffff88000000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 112 + } + }, + { + "encoding": 113, + "x": 1, + "y": -4, + "width": 10, + "height": 18, + "dx": 11, + "glyphBitmap": { + "width": 10, + "height": 18, + "pixelArray": "005bdcf8c057fcfcfc2437fefffffffeffffff24a2ffffde5ca6ffffff24dcffff6e0024ffffff24f3ffff510024ffffff24f8ffff500024ffffff24f8ffff500024ffffff24f8ffff500024ffffff24f8ffff500024ffffff24f4ffff520024ffffff24e0ffff690024ffffff24b0ffffdb548cffffff2452fffffffffeffffff24016de0fbc457ffffff24000000000024ffffff24000000000024ffffff24000000000024ffffff24000000000024ffffff24" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 113 + } + }, + { + "encoding": 114, + "x": 1, + "y": 0, + "width": 7, + "height": 15, + "dx": 8, + "glyphBitmap": { + "width": 7, + "height": 15, + "pixelArray": "00000000000005b2fcfc9226befbb4ffffaae2ffffb4fffffffff9fdb4fffffe6a050bb4ffffa4000000b4ffff94000000b4ffff94000000b4ffff94000000b4ffff94000000b4ffff94000000b4ffff94000000b4ffff94000000b4ffff94000000b4ffff94000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 114 + } + }, + { + "encoding": 115, + "x": 0, + "y": 0, + "width": 9, + "height": 14, + "dx": 10, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "00015fcef7ea9a12000074ffffffffffcc0405f1fffd7289ffff5d21ffffdd0100bcff9009f8ffff74003a2e000092ffffff810100000009c3ffffff9d050000000aacffffffb0030000000285ffffff7700095309007fffffe14af1ff5e0005fafffc1dfaffeb6483ffffd50080ffffffffffff58000165d0faf4c14a00" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 115 + } + }, + { + "encoding": 116, + "x": 0, + "y": 0, + "width": 8, + "height": 18, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 18, + "pixelArray": "0030fcfcfc1c00000030ffffff1c00000030ffffff1c00000030ffffff1c00008afdfffffffdfc388cffffffffffff382c71ffffff6450120030ffffff1c00000030ffffff1c00000030ffffff1c00000030ffffff1c00000030ffffff1c00000030ffffff1c00000030ffffff1c0000002affffff2a0000000dfdffffd2943a0000b1ffffffff5c000017b0f2fcef51" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 116 + } + }, + { + "encoding": 117, + "x": 1, + "y": 0, + "width": 10, + "height": 14, + "dx": 11, + "glyphBitmap": { + "width": 10, + "height": 14, + "pixelArray": "d5fcfc6f0038fcfcfc0cd8ffff700038ffffff0cd8ffff700038ffffff0cd8ffff700038ffffff0cd8ffff700038ffffff0cd8ffff700038ffffff0cd8ffff700038ffffff0cd8ffff700038ffffff0cd8ffff700038ffffff0cd8ffff700038ffffff0cd8ffff750038ffffff0cceffffd270cbffffff0c94ffffffffdaffffff0c1cc8fbd3683affffff0c" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 117 + } + }, + { + "encoding": 118, + "x": 0, + "y": 0, + "width": 10, + "height": 14, + "dx": 10, + "glyphBitmap": { + "width": 10, + "height": 14, + "pixelArray": "96fcfc930000cefcfc4f67ffffb70001f3ffff1f36ffffd90015ffffee0109fcfffa0337ffffbe0000d3ffff1e5affff8d0000a1ffff417cffff5c000070ffff639effff2b00003effff86c0fff70400000effffa8e2ffc900000000dbffd2feff9800000000aaffffffff670000000078ffffffff360000000047fffffffc090000000016ffffffd4000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 118 + } + }, + { + "encoding": 119, + "x": 0, + "y": 0, + "width": 14, + "height": 14, + "dx": 14, + "glyphBitmap": { + "width": 14, + "height": 14, + "pixelArray": "54fcfc5f0019fcfc720006f9fc962fffff810042ffff9a0026ffff700affffa2006cffffc10049ffff4700e0ffc40096ffffe8006dffff1f00b9ffe500bfffffff0f91fff5020092ffff08e9ffeeff36b4ffce00006bffff3afff2a7ff5ed8ffa6000044ffff84ffc378ff87f9ff7e00001cffffcfff944bffcbffff55000001f4ffffff651dffffffff2d000000ceffffff3501f0fffffd08000000a7fffffd0900c2ffffdc0000000080ffffd7000095ffffb40000000058ffffa8000067ffff8c0000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 119 + } + }, + { + "encoding": 120, + "x": 0, + "y": 0, + "width": 10, + "height": 14, + "dx": 10, + "glyphBitmap": { + "width": 10, + "height": 14, + "pixelArray": "7bfcfcb400006bfcfc6516f8ffff2700ccfff00c009cffff952dffff9000002cfffff59effff26000000b9ffffffffb80000000048ffffffff4c0000000001e5ffffde030000000026ffffffd702000000008cffffffff4d00000008edfffdffffc20000005cffff7df4ffff390000c4fff9138fffffae002dffffab001efcfffe2694ffff4c0000a3ffff99" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 120 + } + }, + { + "encoding": 121, + "x": 0, + "y": -4, + "width": 10, + "height": 18, + "dx": 10, + "glyphBitmap": { + "width": 10, + "height": 18, + "pixelArray": "b7fcfc7200007bfcfcae7cffffa20000a6ffff783dffffd10000cfffff3f07f7fffb0702f6fffc0b00bdffff3021ffffce00007dffff604affff9600003dffff8f73ffff5d000007f7ffbe9cffff24000000bdffeec5ffeb010000007dfffffaffb3000000003effffffff7b0000000008f9ffffff420000000000c2fffffd0d000000000085ffffd100000000000064ffff99000000004074d4ffff5300000000acffffffc50400000000acf5c67d0c00000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 121 + } + }, + { + "encoding": 122, + "x": 0, + "y": 0, + "width": 9, + "height": 14, + "dx": 9, + "glyphBitmap": { + "width": 9, + "height": 14, + "pixelArray": "00d5fcfcfcfcfcfc3f00d8ffffffffffff3f004450508dfffff00b00000000b2ffff930000000020feffff2c0000000086ffffc40000000007e9ffff5c0000000059ffffed0800000000c3ffff8d000000002dffffff270000000096ffffbe000000000df3ffff914848481034ffffffffffffff3834ffffffffffffff38" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 122 + } + }, + { + "encoding": 123, + "x": 1, + "y": -4, + "width": 7, + "height": 23, + "dx": 8, + "glyphBitmap": { + "width": 7, + "height": 23, + "pixelArray": "00005acbf5fc7b002afeffffff7c0068fffffb7028007affffcd0000007cffffc10000007cffffc00000007dffffc000000080ffffbf00000093ffffa9000050e1ffff6f0000f4ffffa2090000f4ffffcb0f000012ceffff7200000090ffffa400000080ffffbd0000007dffffc00000007cffffc00000007cffffc00000007cffffc200000077ffffd10000005dfffffd7026001df9ffffff7c00004cc8f8ff7c" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 123 + } + }, + { + "encoding": 124, + "x": 1, + "y": -4, + "width": 4, + "height": 23, + "dx": 6, + "glyphBitmap": { + "width": 4, + "height": 23, + "pixelArray": "5ffcfc7661ffff7762ffff7762ffff7762ffff7763ffff7763ffff7663ffff7664ffff7664ffff7664ffff7665ffff7665ffff7565ffff7566ffff7566ffff7566ffff7567ffff7567ffff7467ffff7468ffff7468ffff7468ffff74" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 124 + } + }, + { + "encoding": 125, + "x": 1, + "y": -4, + "width": 7, + "height": 23, + "dx": 9, + "glyphBitmap": { + "width": 7, + "height": 23, + "pixelArray": "f5fbe6a5190000f8ffffffaf000053bbffffed00000049ffffff0200003dffffff0400003cffffff0400003cffffff0400003bffffff06000026ffffff17000003ecffff9224000043e3ffff7c00005cfbffff7c0003eeffff62040021ffffff13000039ffffff0600003cffffff0400003cffffff0400003dffffff0400003effffff0300004dfffffb000050beffffe30000f8ffffff9d0000f8ffe79d100000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 125 + } + }, + { + "encoding": 126, + "x": 0, + "y": 7, + "width": 11, + "height": 5, + "dx": 11, + "glyphBitmap": { + "width": 11, + "height": 5, + "pixelArray": "000275eacf4d00000a3c00019cffffffffb559cdf32a05c8e56697fcffffffdb16001f2000002db7fbb11a000000000000000001000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 126 + } + }, + { + "encoding": 127, + "x": 0, + "y": 0, + "width": 8, + "height": 16, + "dx": 9, + "glyphBitmap": { + "width": 8, + "height": 16, + "pixelArray": "2fdbccccccccdb28349800000000a02c349800000000a02c349800000000a02c349800000000a02c349800000000a02c349800000000a02c349800000000a02c349800000000a02c349800000000a02c349800000000a02c349800000000a02c349800000000a02c349800000000a02c349800000000a02c34eac8c8c8c8eb2c" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 17, + "encoding": 127 + } + } + ] + }, + { + "name": "Oswald_24", + "renderingEngine": "freetype", + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24 + }, + "bpp": 8, + "height": 45, + "ascent": 36, + "descent": 9, + "glyphs": [ + { + "encoding": 32, + "x": 0, + "y": 0, + "width": 0, + "height": 0, + "dx": 8, + "glyphBitmap": { + "width": 0, + "height": 0, + "pixelArray": "" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 32 + } + }, + { + "encoding": 33, + "x": 1, + "y": 0, + "width": 6, + "height": 28, + "dx": 8, + "glyphBitmap": { + "width": 6, + "height": 28, + "pixelArray": "67fcfcfcfc0758fffffff40047ffffffe10036ffffffce0026ffffffbb0015ffffffa90005ffffff960000f3ffff830000e3ffff700000d2ffff5d0000c1ffff4a0000b0ffff370000a0ffff2500008fffff1200007efffd0200006dffec0000005dffd90000004cffc60000003bffb30000002affa10000001aff8e000000010403000000000000000000000000000077fcfcfce10078ffffffe40078ffffffe40078ffffffe400" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 33 + } + }, + { + "encoding": 34, + "x": 2, + "y": 18, + "width": 10, + "height": 10, + "dx": 12, + "glyphBitmap": { + "width": 10, + "height": 10, + "pixelArray": "fcfcfcce007bfcfcfc57ffffffa1007cffffff28ffffff72007cfffff603ffffff42007cffffc800ffffff13007cffff9800ffffe300007cffff6800ffffb300007cffff3800ffff8400007cfffe0b00ffff5400007cffd8000004040100000204030000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 34 + } + }, + { + "encoding": 35, + "x": 1, + "y": 0, + "width": 15, + "height": 28, + "dx": 17, + "glyphBitmap": { + "width": 15, + "height": 28, + "pixelArray": "00000000e9fcfcc400007ffcfcfc2f0000000fffffffa50000a3ffffff0e00000030ffffff830000c5ffffeb0000000051ffffff610000e7ffffc90000000073ffffff3f000affffffa70000000094ffffff1d002bffffff8500000000b6fffff903004dffffff6300000000d7ffffd900006fffffff4100b4fcfcfffffffffcfcfefffffffd9dbaffffffffffffffffffffffffff9cbeffffffffffffffffffffffffff9a334499ffffff71444affffffc4442900008bffffff23001fffffff9300000000a7ffffff07003bffffff7500000000c2ffffe7000056ffffff570000c3fcfffffffffcfcfefffffffefc91c8ffffffffffffffffffffffffff90cbffffffffffffffffffffffffff8e377fffffff8b4444ecffffda444426006bffffff440004fcffffb1000000008bffffff240020ffffff9100000000aafffffe070040ffffff7100000000c9ffffe4000060ffffff5200000000e8ffffc4000080ffffff3200000009ffffffa40000a0ffffff1200000027ffffff840000c0fffff30100000046ffffff640000e0ffffd30000000065ffffff440004fcffffb400000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 35 + } + }, + { + "encoding": 36, + "x": 1, + "y": -3, + "width": 15, + "height": 34, + "dx": 16, + "glyphBitmap": { + "width": 15, + "height": 34, + "pixelArray": "0000000000004a650000000000000000000000000098d00000000000000000000000000098d40400000000000000000463bdecfefff9be56010000000015c7ffffffffffffffff9201000001beffffffffffffffffffff5c00004dffffffffb55058d9ffffffd70100a6ffffffe10400002bffffffff3300d6ffffffa400000000d4ffffff6b00edffffffac00000000a6ffffff9200e9ffffffe4030000008ffacb974600c6ffffffff7100000015070000000094fffffffffd4f00000000000000003cfffffffffffb5b0000000000000000a9ffffffffffff6e000000000000000ed8ffffffffffff82010000000000001fddffffffffffff8f0100000000000019d1ffffffffffff7d0000000000000010c3ffffffffffff46000000000000000ab3ffffffffffdf080000000000000005acffffffffff64000000000000000007c6ffffffffc0000c4179b23f00000025fdfffffff602f1ffffff5e00000000bcffffffff16d7ffffff860000000093ffffffff1eacffffffc30000000091fffffffd0866ffffffff39000001ceffffffd00012f1ffffffea6745a0ffffffff7300006fffffffffffffffffffffda0900000187ffffffffffffffffdb25000000000038a1dbfbffffe1830f00000000000000000008ff6501000000000000000000000008ff5800000000000000000000000008ff58000000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 36 + } + }, + { + "encoding": 37, + "x": 1, + "y": 0, + "width": 30, + "height": 28, + "dx": 32, + "glyphBitmap": { + "width": 30, + "height": 28, + "pixelArray": "00001788d1f5f9dda33500000000000008f3fcfc2e000000000000000000002be9fffffffffffffc64000000000043ffffe90200000000000000000001c8fffffffffffffffff91c0000000088ffffa50000000000000000000032ffffffec6353cfffffff7e00000000cdffff600000000000000000000073ffffff76000034ffffffbe00000014feffff1b0000000000000000000097ffffff45000006ffffffe000000057ffffd60000000000000000000000acffffff36000000f4fffff50000009cffff910000000000000000000000b0ffffff34000000f1fffff8000001e1ffff4c0000000000000000000000b0ffffff35000000f1fffff8000025fffffb0d0000000000000000000000aaffffff39000000f6fffff200006affffc300000000000000000000000091ffffff4c00000bffffffdb0000afffff7e00000000000000000000000069ffffff82000042ffffffb50004f1ffff3900000000000000000000000025fffffff15e4fd7ffffff710039fffff00400000003213a33110000000000b5fffffffffffffffff211007effffaf00000784ebffffffffc7420000001fe0fffffffffffff9530000c3ffff6a0002b9fffffffffffffffe520000001285d5fbffe1a22f00000dfbffff250051ffffffffffffffffffe2060000000000010200000000004dffffe00100acffffff870e2adbffffff4000000000000000000000000092ffff9b0000e3fffffa09000075ffffff76000000000000000000000000d6ffff560003fdffffe000000054ffffff9200000000000000000000001cfffffe14000cffffffd90000004dffffff9c000000000000000000000060ffffcd00000cffffffd80000004cffffff9c0000000000000000000000a5ffff88000009ffffffdb0000004effffff9a0000000000000000000002e9ffff43000001f5ffffeb0000005dffffff87000000000000000000002ffffff708000000d1ffffff21000093ffffff650000000000000000000074ffffb9000000008effffffbd4769f7ffffff2400000000000000000000b9ffff740000000025fdffffffffffffffffb70000000000000000000008f7ffff2f00000000006ffeffffffffffffe2210000000000000000000042ffffe9020000000000003caae2fdf5d083110000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 37 + } + }, + { + "encoding": 38, + "x": 1, + "y": 0, + "width": 17, + "height": 28, + "dx": 20, + "glyphBitmap": { + "width": 17, + "height": 28, + "pixelArray": "0000000045b3eafae2a53700000000000000000189ffffffffffffff82010000000000005affffffffffffffffff5d000000000001dcffffffb24ca6ffffffdd01000000002afffffff30a0003e9ffffff1c0000000050ffffffc3000000d3ffffff310000000052ffffffc4000003f5ffffff1d0000000031ffffffe801002dffffffec010000000004edffffff22007effffff9600000000000097ffffff6705e1fffffa2000000000000026fdffffba5fffffff7b00000000000000009ffffffde6ffffc003000000000000000020faffffffffdd1600000000000000000001beffffffe7230000000000000000000074ffffffffbc010000057070705400003afcffffffffff4e00001effffffb60008ddfffffffbffffdb07003cffffff98006dffffffbc86ffffff750067ffffff7500d3ffffff4a10ecfffff21896ffffff371cfffffff405006dffffff9ddbffffec0347ffffffc8000005d9ffffffffffff8d005affffffaf0000004efffffffffffe240050ffffffc000000001beffffffffa9000028fffffff50d000014d5fffffffff3620a01d9ffffffba4569e0ffffffffffffffd40056ffffffffffffffffffe2edffffffd4000084ffffffffffffffcf212ee4ffffd40000003faee8fdedba68070000169fefd3" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 38 + } + }, + { + "encoding": 39, + "x": 2, + "y": 18, + "width": 5, + "height": 10, + "dx": 11, + "glyphBitmap": { + "width": 5, + "height": 10, + "pixelArray": "c5fcfcf403c8ffffcf00c8ffffa400c8ffff7800c8ffff4c00c8ffff2100c8fff40200c8ffca0000c8ff9e00000404030000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 39 + } + }, + { + "encoding": 40, + "x": 2, + "y": -7, + "width": 8, + "height": 35, + "dx": 11, + "glyphBitmap": { + "width": 8, + "height": 35, + "pixelArray": "000000003face6720000028fffffff74000075ffffffff740013f4ffffff9e22006effffffc6010000c3ffffff5900000efcffffff1300003cffffffe500000063ffffffc40000007fffffffaa00000095ffffff99000000a7ffffff8d000000b5ffffff85000000c0ffffff80000000c4ffffff7c000000c7ffffff7a000000c8ffffff78000000c8ffffff78000000c8ffffff79000000c6ffffff7b000000c2ffffff7e000000b9ffffff84000000acffffff8c0000009affffff9700000086ffffffa50000006bffffffbd00000048ffffffdd0000001afffffffd0a000000d7ffffff4500000085ffffffa600000026fefffffe5c0300009dffffffff7400000fcaffffff740000000782eeff74000000000003291c" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 40 + } + }, + { + "encoding": 41, + "x": 1, + "y": -7, + "width": 8, + "height": 35, + "dx": 10, + "glyphBitmap": { + "width": 8, + "height": 35, + "pixelArray": "eacd7e0e00000000f4ffffe02f000000f4ffffffe60f00005be7ffffff8700000044ffffffeb04000001d6ffffff4300000095ffffff8700000066ffffffba00000043ffffffe30000002afffffffc03000017ffffffff1500000affffffff26000003ffffffff32000000fdffffff3c000000f9ffffff41000000f7ffffff46000000f5ffffff47000000f5ffffff48000000f6ffffff46000000f9ffffff43000000fcffffff3e000002ffffffff3500000affffffff2a000016ffffffff19000028ffffffff0600003fffffffe90000005dffffffc50000008cffffff95000000c9ffffff54000028fffffff60c001bc8ffffffa20000f4fffffff8220000f4fffffb5b000000f4ffc135000000003711000000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 41 + } + }, + { + "encoding": 42, + "x": 1, + "y": 16, + "width": 12, + "height": 12, + "dx": 14, + "glyphBitmap": { + "width": 12, + "height": 12, + "pixelArray": "0000000067fcfcd9000000000000000050ffffc3000000000049160037ffffaa0001530a02e3f27927ffff9137c4ff5942ffffffe7ffffe6ffffffb630acfbffffffffffffffe07800001878faffffffc04702000000005cffffffffc905000000001df0ffee98ffff8000000002bcffff821af9fffc39000019d4fff615009bfffa6d000000057688000026ba280000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 42 + } + }, + { + "encoding": 43, + "x": 0, + "y": 6, + "width": 14, + "height": 15, + "dx": 14, + "glyphBitmap": { + "width": 14, + "height": 15, + "pixelArray": "000000000077fcfcb20000000000000000000078ffffb40000000000000000000078ffffb40000000000000000000078ffffb40000000000000000000078ffffb4000000000024fcfcfcfcfefffffffcfcfcfc7e24ffffffffffffffffffffffff8024ffffffffffffffffffffffff800a444444449dffffc94444444422000000000078ffffb40000000000000000000078ffffb40000000000000000000078ffffb40000000000000000000078ffffb40000000000000000000078ffffb400000000000000000000020404030000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 43 + } + }, + { + "encoding": 44, + "x": 1, + "y": -5, + "width": 5, + "height": 10, + "dx": 7, + "glyphBitmap": { + "width": 5, + "height": 10, + "pixelArray": "aefcfcfcbab0ffffffbcb0ffffffbcb0ffffffbcb0ffffffbb000064ffa80001b7ff76149afff51a54fff752001187210000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 44 + } + }, + { + "encoding": 45, + "x": 1, + "y": 8, + "width": 9, + "height": 5, + "dx": 12, + "glyphBitmap": { + "width": 9, + "height": 5, + "pixelArray": "093c3c3c3c3c3c3c3124ffffffffffffffd024ffffffffffffffd024ffffffffffffffd0010404040404040404" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 45 + } + }, + { + "encoding": 46, + "x": 1, + "y": 0, + "width": 5, + "height": 5, + "dx": 7, + "glyphBitmap": { + "width": 5, + "height": 5, + "pixelArray": "7bfcfcfce17cffffffe47cffffffe47cffffffe47cffffffe4" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 46 + } + }, + { + "encoding": 47, + "x": 1, + "y": 0, + "width": 11, + "height": 28, + "dx": 13, + "glyphBitmap": { + "width": 11, + "height": 28, + "pixelArray": "0000000000000065fcfcbb00000000000000acffff7900000000000003eeffff3400000000000036ffffed030000000000007bffffaa00000000000000c0ffff640000000000000cfaffff1f0000000000004bffffda0000000000000090ffff9500000000000000d5ffff500000000000001bfffffc0f0000000000005fffffc500000000000000a5ffff8000000000000002e9ffff3b0000000000002ffffff20500000000000074ffffb100000000000000b9ffff6b00000000000008f7ffff2600000000000044ffffe10100000000000089ffff9c00000000000000ceffff5700000000000015fffffe1400000000000058ffffcc000000000000009effff8700000000000001e3ffff4200000000000028fffff6070000000000006dffffb800000000000000b2ffff7300000000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 47 + } + }, + { + "encoding": 48, + "x": 1, + "y": 0, + "width": 15, + "height": 28, + "dx": 17, + "glyphBitmap": { + "width": 15, + "height": 28, + "pixelArray": "0000001073c2edfae8ba6107000000000033e1ffffffffffffffcd1e00000018ebffffffffffffffffffd408000096ffffffffffffffffffffff6e0009f5ffffffeb410a54faffffffd70043ffffffff750000009bffffffff1d69ffffffff360000005cffffffff4380ffffffff1f00000045ffffffff5c84ffffffff1c00000041ffffffff6084ffffffff1c00000040ffffffff6084ffffffff1c00000040ffffffff6084ffffffff1c00000040ffffffff6084ffffffff1c00000040ffffffff6084ffffffff1c00000040ffffffff6084ffffffff1c00000040ffffffff6084ffffffff1c00000040ffffffff6084ffffffff1c00000040ffffffff6084ffffffff1c00000040ffffffff6084ffffffff1c00000040ffffffff6084ffffffff1c00000040ffffffff6081ffffffff2100000045ffffffff5d6affffffff4000000065ffffffff4443ffffffff7f000000a4ffffffff1d08f4ffffffef3d0454fcffffffd4000091ffffffffffffffffffffff6a000015e7ffffffffffffffffffce060000002ddcffffffffffffffc81a00000000000d6fc3f0fdeabb6005000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 48 + } + }, + { + "encoding": 49, + "x": 2, + "y": 0, + "width": 10, + "height": 28, + "dx": 17, + "glyphBitmap": { + "width": 10, + "height": 28, + "pixelArray": "00000000003df4fcfcba0000000269f8ffffffbc00014bcaffffffffffbc16d4ffffffffffffffbc24ffffffffffffffffbc24fffffff2f9ffffffbc22c7813b05d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc0000000000d8ffffffbc" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 49 + } + }, + { + "encoding": 50, + "x": 1, + "y": 0, + "width": 15, + "height": 28, + "dx": 17, + "glyphBitmap": { + "width": 15, + "height": 28, + "pixelArray": "0000000665b6e6faefc87f18000000000019c9ffffffffffffffee4b00000004cbfffffffffffffffffff82c000059ffffffffffffffffffffffb40000c3fffffffe660c38e3fffffffd150cfdffffffac00000068ffffffff4b30ffffffff660000002dffffffff6c4bffffffff3e0000001cffffffff7654ffffffff320000002cffffffff6a3db8b8b8b82300000061ffffffff48000000000000000000c1fffffffc13000000000000000039ffffffffb8000000000000000002c8ffffffff43000000000000000068ffffffffbc010000000000000016effffffffa2b0000000000000000a0ffffffff8400000000000000003cffffffffdd090000000000000004d2ffffffff47000000000000000070ffffffffa800000000000000001af2fffffff1190000000000000000a6ffffffff6a000000000000000042ffffffffc9030000000000000006d7fffffffc30000000000000000077ffffffff8d00000000000000001ef5fffffff5483c3c3c3c3c3c2f007dffffffffffffffffffffffffc80080ffffffffffffffffffffffffc80080ffffffffffffffffffffffffc800" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 50 + } + }, + { + "encoding": 51, + "x": 1, + "y": 0, + "width": 15, + "height": 28, + "dx": 17, + "glyphBitmap": { + "width": 15, + "height": 28, + "pixelArray": "000000258bcef2fae7bb690900000000006ff9ffffffffffffffdd2f0000005bffffffffffffffffffffea150008ebffffffed6b4b92ffffffff950051ffffffff5a000000aeffffffef0586ffffffff1100000069ffffffff28a3fffffff30000000047ffffffff46a8ffffffe90000000046ffffffff48283c3c3c370000000064ffffffff2d000000000000000000aaffffffec0300000000000001177affffffff8200000000000010fdffffffffffc30800000000000010fffffffff882080000000000000010ffffffffffc31c0000000000000010ffffffffffffdb0f0000000000000105229dffffffff8500000000000000000002ceffffffe4010000000000000000007bffffffff1f00000000000000000051ffffffff3e93e0e0e0cc0000000043ffffffff4aa6fffffff10000000046ffffffff4392ffffffff110000005affffffff2870ffffffff4700000091fffffff90830ffffffffcd25044bf4ffffffbc0001d0ffffffffffffffffffffff55000046ffffffffffffffffffffc80300000065f8ffffffffffffffc9190000000000258dcff5fde9ba6007000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 51 + } + }, + { + "encoding": 52, + "x": 1, + "y": 0, + "width": 16, + "height": 28, + "dx": 17, + "glyphBitmap": { + "width": 16, + "height": 28, + "pixelArray": "0000000000003ffcfcfcfcfc57000000000000000000a8ffffffffff58000000000000000017faffffffffff5800000000000000007affffffffffff580000000000000003e1ffffffffffff58000000000000004cfffff2fbffffff5800000000000000b5ffffa4f8ffffff5800000000000020feffff4ff8ffffff5800000000000086fffff208f8ffffff58000000000006e9ffffa400f8ffffff58000000000058ffffff4f00f8ffffff580000000000c1fffff20800f8ffffff58000000002affffffa50000f8ffffff580000000092ffffff4f0000f8ffffff580000000bf1fffff2080000f8ffffff5800000064ffffffa5000000f8ffffff58000000c3ffffff50000000f8ffffff58000000d4fffffffdfcfcfcfffffffffefcfc1cd4ffffffffffffffffffffffffffff1cd4ffffffffffffffffffffffffffff1cd4ffffffffffffffffffffffffffff1c0404040404040404f9ffffff5b0404010000000000000000f8ffffff580000000000000000000000f8ffffff580000000000000000000000f8ffffff580000000000000000000000f8ffffff580000000000000000000000f8ffffff580000000000000000000000f8ffffff58000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 52 + } + }, + { + "encoding": 53, + "x": 1, + "y": 0, + "width": 15, + "height": 28, + "dx": 17, + "glyphBitmap": { + "width": 15, + "height": 28, + "pixelArray": "00cbfcfcfcfcfcfcfcfcfcfcfc570000d2ffffffffffffffffffffff580000d5ffffffffffffffffffffff580000d9ffffffffffffffffffffff580000dcffffff1f04040404040404020000dfffffff1000000000000000000000e3ffffff0600000000000000000000e6fffffc0100000000000000000000e9fffff20000000000000000000000edffffe80003273a21010000000000f0ffffde6ee8ffffffe77302000000f3ffffffffffffffffffff9b010000f7ffffffffffffffffffffff470000faffffffea490a49f0ffffffb20000fdffffff570000007cfffffff908008080807f030000003cffffffff3000000000000000000020ffffffff4b00000000000000000014ffffffff5d00000000000000000011ffffffff5d0a181818180300000013ffffffff5665ffffffff1b00000018ffffffff4454ffffffff2700000025ffffffff2b3affffffff4900000045fffffff4040dfcffffff9500000094ffffffb70000b1fffffffd7f437dfbffffff59000039feffffffffffffffffffcb0200000067fbffffffffffffffd01d0000000000319cd1f5feebbe6a06000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 53 + } + }, + { + "encoding": 54, + "x": 1, + "y": 0, + "width": 15, + "height": 28, + "dx": 17, + "glyphBitmap": { + "width": 15, + "height": 28, + "pixelArray": "0000000155b2e4faf2d08f2800000000000cb4fffffffffffffffb6c00000000a4ffffffffffffffffffff4a000039ffffffffb14d69ecffffffd000009effffffde06000063ffffffff2201e5ffffff940000002affffffff4f1cffffffff700000000dffffffff6539ffffffff53000000010c0c0c0c054bffffffff4700000000000000000053ffffffff4400000000000000000054ffffffff4400103732090000000054ffffffff57b0fffffffba416000054fffffffff0ffffffffffffde120054ffffffffffffffffffffffff9a0054fffffffff8600d34defffffff80f54ffffffff720000005effffffff4a54ffffffff440000001cffffffff7554ffffffff4400000005ffffffff8f54ffffffff4400000000fcffffff9a51ffffffff4400000000f9ffffff9640ffffffff4700000001feffffff8023ffffffff5a0000000fffffffff6402ecffffff8500000036ffffffff33009fffffffd703000087ffffffe3030035ffffffffa94571f9ffffff7f00000095ffffffffffffffffffe20f00000007a7ffffffffffffffe0260000000000004db4e6fdf2c27b0e000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 54 + } + }, + { + "encoding": 55, + "x": 1, + "y": 0, + "width": 12, + "height": 28, + "dx": 17, + "glyphBitmap": { + "width": 12, + "height": 28, + "pixelArray": "aefcfcfcfcfcfcfcfcfcfcd9b0ffffffffffffffffffffdcb0ffffffffffffffffffffd62f444444444444ccffffffa700000000000001e8ffffff720000000000001dffffffff3d00000000000053fffffffd0c00000000000089ffffffd400000000000000beffffff9f00000000000003f2ffffff6a0000000000002affffffff3500000000000060fffffffa0700000000000096ffffffcb00000000000000ccffffff9600000000000008fbffffff6200000000000037ffffffff2d0000000000006dfffffff504000000000000a3ffffffc300000000000000d9ffffff8e00000000000011ffffffff5900000000000045ffffffff240000000000007bffffffef01000000000000b0ffffffbb00000000000001e7ffffff860000000000001cffffffff5100000000000052ffffffff1c00000000000088ffffffe701000000000000beffffffb20000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 55 + } + }, + { + "encoding": 56, + "x": 1, + "y": 0, + "width": 15, + "height": 28, + "dx": 17, + "glyphBitmap": { + "width": 15, + "height": 28, + "pixelArray": "0000001d86cdf2fae3b15301000000000051f2ffffffffffffffb30a0000002bf9ffffffffffffffffff9b000000aefffffff7714ebffffffffe28000cf9ffffff7c000010f5ffffff7b0033ffffffff35000000beffffffaa004dffffffff17000000a0ffffffc40049ffffffff1d000000a4ffffffc20025ffffffff3f000000c5ffffff9f0001ebffffff7a00000cf4ffffff67000081ffffffeb330995fffffff10f00000ed6ffffffffffffffffff660000000022e1ffffffffffffff8400000000006afcffffffffffffffc91600000053ffffffffffffffffffffc8040004e2ffffffd9310e7dffffffff600047ffffffff46000001c8ffffffc5007dfffffff8030000007efffffff805a7ffffffcf0000000053ffffffff29b3ffffffbc0000000040ffffffff36acffffffbb0000000040ffffffff3193ffffffcb000000004effffffff186ffffffff20400000077fffffff4022dffffffff50000003cdffffffb40001caffffffed6646a9ffffffff5200003dfcffffffffffffffffffc0020000005af6ffffffffffffffc4150000000000218bcef5fde6b65b04000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 56 + } + }, + { + "encoding": 57, + "x": 1, + "y": 0, + "width": 15, + "height": 28, + "dx": 17, + "glyphBitmap": { + "width": 15, + "height": 28, + "pixelArray": "0000000c74beeef9e1aa4a01000000000025dcffffffffffffffa10600000010e2ffffffffffffffffff9b00000083fffffffd7f4db0ffffffff320005e9ffffff95000004ddffffffa0003bffffffff420000008dffffffee026bffffffff1a00000061ffffffff2286ffffffff090000004fffffffff4099ffffffff050000004cffffffff5299ffffffff050000004cffffffff548effffffff0f0000004cffffffff5473ffffffff2e0000004cffffffff5442ffffffff750000008cffffffff5407eefffffff46c4491ffffffffff54007dffffffffffffffffffffffff540007bfffffffffffffdfffffffff5400000571cff9fedb7d51ffffffff540000000000010200004cffffffff540000000000000000004dffffffff5200000000000000000051ffffffff4b0d20202020020000005cffffffff3765ffffffff0e00000078ffffffff1a4cffffffff2c0000009affffffe50120ffffffff64000006e1ffffff9e0000cdffffffeb6445abffffffff39000048ffffffffffffffffffffa6000000006cfbffffffffffffffba0e00000000002a92d3f5fee7b75b02000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 57 + } + }, + { + "encoding": 58, + "x": 2, + "y": 2, + "width": 5, + "height": 17, + "dx": 8, + "glyphBitmap": { + "width": 5, + "height": 17, + "pixelArray": "f5fcfcfc5ff8ffffff60f8ffffff60f8ffffff60f8ffffff600404040402000000000000000000000000000000000000000000000000000000000000f5fcfcfc5ff8ffffff60f8ffffff60f8ffffff600404040402" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 58 + } + }, + { + "encoding": 59, + "x": 2, + "y": -3, + "width": 5, + "height": 23, + "dx": 8, + "glyphBitmap": { + "width": 5, + "height": 23, + "pixelArray": "fcfcfcfc5bffffffff5cffffffff5cffffffff5cffffffff5c040404040200000000000000000000000000000000000000000000000000000000000000000000000000000000f9fcfcfc73fcffffff74fcffffff74fcffffff74fcffffff700404bbff52065ffcf512a4fffc6100336d240000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 59 + } + }, + { + "encoding": 60, + "x": 1, + "y": 2, + "width": 10, + "height": 19, + "dx": 13, + "glyphBitmap": { + "width": 10, + "height": 19, + "pixelArray": "0000000000000000001200000000000000005bc60000000000000da2ffd4000000000035dcffffd40000000277fbffffffd400001abcffffffffeb4a004cebffffffffbe1a0091fffffffffc7b030000ffffffffe13b00000000ffffffb8110000000000ffffffeb4a0000000000ffffffffff8c060000004aeaffffffffc92100000018b9fffffffff0540000000271faffffffff8a0000000031d8ffffffd400000000000b9affffd40000000000000054efd400000000000000001d95" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 60 + } + }, + { + "encoding": 61, + "x": 1, + "y": 8, + "width": 12, + "height": 11, + "dx": 14, + "glyphBitmap": { + "width": 12, + "height": 11, + "pixelArray": "053c3c3c3c3c3c3c3c3c3c0f14ffffffffffffffffffff4014ffffffffffffffffffff4014ffffffffffffffffffff40010404040404040404040401000000000000000000000000053c3c3c3c3c3c3c3c3c3c0f14ffffffffffffffffffff4014ffffffffffffffffffff4014ffffffffffffffffffff40010404040404040404040401" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 61 + } + }, + { + "encoding": 62, + "x": 1, + "y": 2, + "width": 11, + "height": 19, + "dx": 13, + "glyphBitmap": { + "width": 11, + "height": 19, + "pixelArray": "0a0800000000000000000024d22b000000000000000024fff7690100000000000024ffffffb014000000000024ffffffffe542000000000484fefffffffe87050000000042e6ffffffffca230000000015b6fffffffff356000000000272faffffffb800000000000034e6ffffb800000000000484feffffb8000000001dc4ffffffffb70000004eedffffffffc822000790fffffffffe8305000fccffffffffe33e00000024ffffffffab110000000024fffff56201000000000024ffcd2700000000000000238a060000000000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 62 + } + }, + { + "encoding": 63, + "x": 1, + "y": 0, + "width": 14, + "height": 28, + "dx": 16, + "glyphBitmap": { + "width": 14, + "height": 28, + "pixelArray": "00000148aadef9f5d59c390000000006a3ffffffffffffffff9b0500008effffffffffffffffffff940019faffffffffffffffffffffff2e5effffffff8d1421a3ffffffff8b7dffffffe902000003e1ffffffbe7fffffffc7000000009effffffdc66ffffffde000000009cffffffd939e5b27e4b01000000bfffffffb801000000000000000af5ffffff86000000000000000067ffffffff32000000000000000ce3ffffffba00000000000000009dfffffffb310000000000000064ffffffff77000000000000004afbffffffad0200000000000048f8ffffffc20a00000000000022faffffffc20e0000000000000030ffffffeb0a000000000000000030ffffffe000000000000000000030ffffffe00000000000000000001b8c8c8c7b0000000000000000000000000000000000000000000000000000000000000000000000000057fcfcfcfc1c000000000000000058ffffffff1c000000000000000058ffffffff1c000000000000000058ffffffff1c000000000000000058ffffffff1c0000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 63 + } + }, + { + "encoding": 64, + "x": 1, + "y": -5, + "width": 29, + "height": 33, + "dx": 31, + "glyphBitmap": { + "width": 29, + "height": 33, + "pixelArray": "00000000000000000000064489badef3fbf3d4ab721e0000000000000000000000000000000f81eafffffffffffffffffffffea41c00000000000000000000000055ebfffffffffffffffffffffffffffff557000000000000000000038effffffffffdf96664c47597eb6fafffffffe5900000000000000019cffffffffca4301000000000000001999fefffff62f00000000000071fffffffe7c03000000000000000000000051fbffffcc02000000002afbffffff6400000000000000000000000000006fffffff5200000000baffffff8e000000000e7ccbf7d43eb7fcfcbf0001c9ffffb400000037ffffffe2080000002edffffffffff8f9ffff9c000058fffffc110000a4ffffff6400000025eeffffffffffffffffff7700000cf9ffff470009f5ffffe405000002c7fffffff88d4bb3ffffff51000000ceffff6e0045ffffff8a00000061fffffff73c0000a0ffffff2c000000afffff810084ffffff3f000001d7ffffff79000000c4fffffe09000000a0ffff8f00b3ffffff0c000032ffffffe807000000e8ffffe100000000a1ffff8b00dbffffe00000007dffffff930000000effffffbb00000000b2ffff7a01f5ffffb8000000b0ffffff5d00000031ffffff9600000000dcffff590bffffffa2000000cfffffff3600000055ffffff7100000012ffffff2a17ffffff96000000dfffffff2b00000079ffffff4b00000061ffffe10119ffffff94000000d5ffffff47000000aeffffff27000005d3ffff840013ffffffa6000000afffffff95000035fdffffff0d000077fffff5190003fcffffbb00000071ffffffffa094f6ffffffff17056ffdffff72000000dfffffe801000011e8ffffffffffffceffffffeaf0ffffffb202000000aeffffff2d0000003ef6ffffffffca15e9ffffffffffff9908000000006bffffff86000000002ba2d9d78b100024a6eeffe1a63d00000000000019fbfffff315000000000000000000000000000200000000000000000000a5ffffffa601000000000000000000000000000000000000000000000021f7ffffff8c02000000000000000000000000000000000000000000000065ffffffffbb29000000000000000000000104000000000000000000000087fffffffffebe6e4018060315315d97dc5e0000000000000000000000006cf9ffffffffffffffffffffffffffff91000000000000000000000000002bb6ffffffffffffffffffffffffffc40000000000000000000000000000002b87ccfaffffffffffffddb27a360000000000000000000000000000000000000421363f3a260c0000000000000000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 64 + } + }, + { + "encoding": 65, + "x": 0, + "y": 0, + "width": 17, + "height": 28, + "dx": 17, + "glyphBitmap": { + "width": 17, + "height": 28, + "pixelArray": "00000000000efbfcfcfcfc38000000000000000000003effffffffff690000000000000000000070ffffffffff9b00000000000000000000a2ffffffffffcc00000000000000000000d4fffffffffff90500000000000000000afdffffffffffff2f000000000000000037fffffffdffffff60000000000000000069ffffffc0ffffff9200000000000000009bffffff6fffffffc30000000000000000ccffffff2bf4fffff30200000000000006f9fffffc06ccffffff2600000000000030ffffffd900a3ffffff5800000000000062ffffffb0007bffffff8900000000000093ffffff870053ffffffbb000000000000c5ffffff5f002affffffec010000000003f5ffffff360007fcffffff1e0000000029ffffffff0e0000daffffff4f000000005affffffe5000000b1ffffff80000000008cfffffffffcfcfcffffffffb200000000beffffffffffffffffffffffe300000001efffffffffffffffffffffffff15000021ffffffff7144444449ffffffff46000053ffffffff1800000000e2ffffff78000085ffffffef0100000000b9ffffffa90000b7ffffffc5000000000090ffffffdb0001e9ffffff9c000000000067ffffffff0e1affffffff7200000000003effffffff3e4cffffffff49000000000015ffffffff6f" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 65 + } + }, + { + "encoding": 66, + "x": 2, + "y": 0, + "width": 16, + "height": 28, + "dx": 18, + "glyphBitmap": { + "width": 16, + "height": 28, + "pixelArray": "fcfcfcfcfcfcfcf3d9af620800000000ffffffffffffffffffffffe43f000000fffffffffffffffffffffffff5260000ffffffffe6454c65b1ffffffffb60000ffffffffdc000000007dfffffffd1000ffffffffdc000000000dfeffffff3a00ffffffffdc0000000000e6ffffff5a00ffffffffdc0000000000e1ffffff5e00ffffffffdc0000000001f3ffffff4b00ffffffffdc0000000024ffffffff2100ffffffffdc000000008fffffffd10100ffffffffe53c3e59acfffffffd450000ffffffffffffffffffffffd94a000000ffffffffffffffffffffee881b000000fffffffffffffffffffffffff3470000ffffffffdd0406206ff1fffffff52100ffffffffdc0000000045ffffffff9200ffffffffdc0000000001d4ffffffe000ffffffffdc00000000009dffffffff0cffffffffdc000000000086ffffffff24ffffffffdc000000000086ffffffff25ffffffffdc00000000009dffffffff0effffffffdc0000000000d2ffffffe900ffffffffdc0000000043ffffffffa200ffffffffe53c3d4e8af7ffffffff3c00ffffffffffffffffffffffffffa10000ffffffffffffffffffffffff9b070000fffffffffffffffff6d2983700000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 66 + } + }, + { + "encoding": 67, + "x": 1, + "y": 0, + "width": 16, + "height": 28, + "dx": 18, + "glyphBitmap": { + "width": 16, + "height": 28, + "pixelArray": "000000014ea8d8f6fae6be7812000000000018c3ffffffffffffffffe73f00000005c9fffffffffffffffffffff220000068ffffffffc9594888feffffff9d0000ccffffffed10000000a0fffffff60817ffffffffa80000000066ffffffff3443ffffffff8a0000000053ffffffff535effffffff81000000004dffffffff626affffffff80000000004cffffffff6470ffffffff80000000004cffffffff6470ffffffff800000000006141414140870ffffffff800000000000000000000070ffffffff800000000000000000000070ffffffff800000000000000000000070ffffffff800000000000000000000070ffffffff800000000000000000000070ffffffff800000000000000000000070ffffffff800000000022707070702c70ffffffff80000000004cffffffff646bffffffff80000000004cffffffff645fffffffff83000000004dffffffff5d43ffffffff930000000054ffffffff4d17ffffffffbb000000006cffffffff2a00ccfffffff310000000b3ffffffea030066ffffffffc9544492ffffffff91000004c3ffffffffffffffffffffe91700000015c1ffffffffffffffffe83700000000000152aedcf9fee9c3760d000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 67 + } + }, + { + "encoding": 68, + "x": 2, + "y": 0, + "width": 15, + "height": 28, + "dx": 18, + "glyphBitmap": { + "width": 15, + "height": 28, + "pixelArray": "fcfcfcfcfcfcfbefd0a96209000000ffffffffffffffffffffffde400000fffffffffffffffffffffffff83100ffffffffe6444863c4ffffffffbe00ffffffffdc00000004cbffffffff2affffffffdc0000000073ffffffff67ffffffffdc0000000051ffffffff88ffffffffdc0000000047ffffffffa1ffffffffdc0000000045ffffffffabffffffffdc0000000044ffffffffacffffffffdc0000000044ffffffffacffffffffdc0000000044ffffffffacffffffffdc0000000044ffffffffacffffffffdc0000000044ffffffffacffffffffdc0000000044ffffffffacffffffffdc0000000044ffffffffacffffffffdc0000000044ffffffffacffffffffdc0000000044ffffffffacffffffffdc0000000045ffffffffacffffffffdc0000000046ffffffffa8ffffffffdc000000004affffffff98ffffffffdc000000005bffffffff7dffffffffdc000000007dffffffff57ffffffffdc00000007d8fffffffd17ffffffffe53c4064c6ffffffffa300ffffffffffffffffffffffffef2100ffffffffffffffffffffffd9330000fffffffffffffff4d5ae6409000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 68 + } + }, + { + "encoding": 69, + "x": 2, + "y": 0, + "width": 12, + "height": 28, + "dx": 14, + "glyphBitmap": { + "width": 12, + "height": 28, + "pixelArray": "fcfcfcfcfcfcfcfcfcfcfc30ffffffffffffffffffffff30ffffffffffffffffffffff30ffffffffe64444444444440dffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000fffffffffffcfcfcfcd90000ffffffffffffffffffdc0000ffffffffffffffffffdc0000ffffffffe6444444443b0000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffe53c3c3c3c3c3c10ffffffffffffffffffffff44ffffffffffffffffffffff44ffffffffffffffffffffff44" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 69 + } + }, + { + "encoding": 70, + "x": 2, + "y": 0, + "width": 11, + "height": 28, + "dx": 14, + "glyphBitmap": { + "width": 11, + "height": 28, + "pixelArray": "fcfcfcfcfcfcfcfcfcfcf5fffffffffffffffffffff8fffffffffffffffffffff8ffffffffe6444444444442ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000fffffffffffcfcfcfcbd00ffffffffffffffffffc000ffffffffffffffffffc000ffffffffe6444444443300ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000ffffffffdc000000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 70 + } + }, + { + "encoding": 71, + "x": 1, + "y": 0, + "width": 16, + "height": 28, + "dx": 18, + "glyphBitmap": { + "width": 16, + "height": 28, + "pixelArray": "0000000354a8d7f6fae7c27b1b000000000012bcfffffffffffffffff25b00000003c5fffffffffffffffffffffe3e00005affffffffcf5f4b86faffffffc80000c3fffffff2120000007effffffff2310feffffffac0000000036ffffffff603bffffffff8e000000001cffffffff8054ffffffff830000000016ffffffff9168ffffffff800000000014ffffffff9470ffffffff8000000000042c2c2c2c1a70ffffffff800000000000000000000070ffffffff800000000000000000000070ffffffff800000000000000000000070ffffffff800000213c3c3c3c3c3c2c70ffffffff8000008cffffffffffffb870ffffffff8000008cffffffffffffb870ffffffff8000008cffffffffffffb870ffffffff800000030404aaffffffb870ffffffff800000000000a8ffffffb86affffffff810000000000aaffffffb854ffffffff860000000000b2ffffffb839ffffffff9e0000000000caffffffb80afbffffffc70000000008f6ffffffb800c1fffffffb1c00000063ffffffffb8005affffffffd75d427af6ffffffffb80004ccfffffffffffffffffce1ffffb800001acbffffffffffffff6da3ffffb80000000760b9e8fdefb7440081ffffb8" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 71 + } + }, + { + "encoding": 72, + "x": 2, + "y": 0, + "width": 16, + "height": 28, + "dx": 19, + "glyphBitmap": { + "width": 16, + "height": 28, + "pixelArray": "f1fcfcfce50000000000a6fcfcfcfc34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4fffffffffcfcfcfcfcffffffffff34f4ffffffffffffffffffffffffffff34f4ffffffffffffffffffffffffffff34f4ffffffef4444444444c0ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34f4ffffffe80000000000a8ffffffff34" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 72 + } + }, + { + "encoding": 73, + "x": 2, + "y": 0, + "width": 5, + "height": 28, + "dx": 9, + "glyphBitmap": { + "width": 5, + "height": 28, + "pixelArray": "d9fcfcfceddcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0dcfffffff0" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 73 + } + }, + { + "encoding": 74, + "x": 0, + "y": 0, + "width": 9, + "height": 28, + "dx": 11, + "glyphBitmap": { + "width": 9, + "height": 28, + "pixelArray": "00000020fcfcfcfcb900000020ffffffffbb00000020ffffffffbb00000020ffffffffbb00000020ffffffffbb00000020ffffffffbb00000020ffffffffba00000020ffffffffba00000020ffffffffba00000020ffffffffba00000020ffffffffba00000020ffffffffb900000020ffffffffb900000020ffffffffb900000020ffffffffb900000020ffffffffb900000020ffffffffb800000020ffffffffb800000020ffffffffb800000020ffffffffb800000020ffffffffb800000024ffffffffb60000003bffffffffa600000081ffffffff8b2c5492faffffffff56b0ffffffffffffe808b0fffffffffff84c00b0fffff7d89f290000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 74 + } + }, + { + "encoding": 75, + "x": 2, + "y": 0, + "width": 16, + "height": 28, + "dx": 17, + "glyphBitmap": { + "width": 16, + "height": 28, + "pixelArray": "fcfcfcfcd9000000001af8fcfcfc9000ffffffffdc0000000082ffffffff2c00ffffffffdc00000007e9ffffffc50000ffffffffdc0000005bffffffff5f0000ffffffffdc000000c8ffffffef090000ffffffffdc000035ffffffff92000000ffffffffdc0000a1ffffffff2c000000ffffffffdc0016f9ffffffc500000000ffffffffdc007bffffffff5e00000000ffffffffdc04e4ffffffef0900000000ffffffffdc54ffffffff910000000000ffffffffdcc1ffffffff2c0000000000fffffffff7ffffffffca000000000000ffffffffffffffffffe8040000000000ffffffffffffffffffff4b0000000000ffffffffffa4f7ffffffaa0000000000fffffffff618aafffffff91100000000ffffffffdc004fffffffff6800000000ffffffffdc0006edffffffc700000000ffffffffdc000098ffffffff26000000ffffffffdc00003dffffffff84000000ffffffffdc000002e1ffffffe1020000ffffffffdc00000087ffffffff420000ffffffffdc0000002bffffffffa10000ffffffffdc00000000d0fffffff40c00ffffffffdc0000000075ffffffff5f00ffffffffdc000000001cfeffffffbe00ffffffffdc0000000000beffffffff1f" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 75 + } + }, + { + "encoding": 76, + "x": 2, + "y": 0, + "width": 12, + "height": 28, + "dx": 14, + "glyphBitmap": { + "width": 12, + "height": 28, + "pixelArray": "fcfcfcfcd900000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffdc00000000000000ffffffffe53c3c3c3c3c3c10ffffffffffffffffffffff44ffffffffffffffffffffff44ffffffffffffffffffffff44" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 76 + } + }, + { + "encoding": 77, + "x": 1, + "y": 0, + "width": 20, + "height": 28, + "dx": 23, + "glyphBitmap": { + "width": 20, + "height": 28, + "pixelArray": "009cfcfcfcfc7700000000000000dbfcfcfcfc1e00a2ffffffffaa00000000000012ffffffffff2200a6ffffffffdc00000000000045ffffffffff2600aaffffffffff10000000000078ffffffffff2a00aeffffffffff400000000000acffffffffff2e00b2ffffffffff720000000000dfffffffffff3200b6ffffffffffa40000000013ffffffffffff3600baffffffffffd60000000046ffffffffffff3b00befffffffffffe0b0000007affffffffffff3f00c2fffff6ecffff3a000000adffffe6ffffff4300c6fffff1b8ffff6c000000e1ffffadffffff4700caffffed83ffff9f000014ffffff76ffffff4b00ceffffe94fffffd1000047ffffdc61ffffff4f00d2ffffe51bfffffc08007bffffa85dffffff5300d6ffffe101e7ffff3500aeffff7458ffffff5800daffffdd00b2ffff6700e2ffff4054ffffff5c00deffffd9007effff9916ffffff0e50ffffff6000e2ffffd5004affffcb49ffffd8004bffffff6400e6ffffd10016fffff981ffffa40047ffffff6800eaffffcd0000e1ffffdeffff700042ffffff6c00eeffffc90000adffffffffff3d003effffff7000f2ffffc5000079fffffffffe0c0039ffffff7500f6ffffc1000044ffffffffd5000035ffffff7900faffffbd000011ffffffffa1000031ffffff7d00feffffb9000000dcffffff6d00002cffffff8102ffffffb5000000a7ffffff39000028ffffff8506ffffffb100000073fffffc0a000023ffffff890affffffae0000003fffffd20000001fffffff8e" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 77 + } + }, + { + "encoding": 78, + "x": 2, + "y": 0, + "width": 14, + "height": 28, + "dx": 18, + "glyphBitmap": { + "width": 14, + "height": 28, + "pixelArray": "fcfcfc8900000000001cfcfcfce9ffffffec08000000001cffffffecffffffff5b000000001cffffffecffffffffc3000000001cffffffecffffffffff2d0000001cffffffecffffffffff940000001cffffffecfffffffffff20c00001cffffffecffffffffffff6500001cffffffecffffffffffffce01001cffffffecffffffffffffff35001cffffffecffffffffffffff9e001cffffffecfffffffff9fffff6111cffffffecffffffffa5ffffff6e1cffffffecffffffff40feffffd61dffffffecffffffff20b6ffffff5bffffffecffffffff204fffffffc3ffffffecffffffff2004e4ffffffffffffecffffffff200081ffffffffffffecffffffff20001dfdffffffffffecffffffff200000b2ffffffffffecffffffff2000004bffffffffffecffffffff20000003e1ffffffffecffffffff200000007dffffffffecffffffff200000001afcffffffecffffffff2000000000aeffffffecffffffff200000000047ffffffecffffffff200000000002deffffecffffffff20000000000078ffffec" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 78 + } + }, + { + "encoding": 79, + "x": 1, + "y": 0, + "width": 16, + "height": 28, + "dx": 19, + "glyphBitmap": { + "width": 16, + "height": 28, + "pixelArray": "0000000251a6d4f5fae9c07c1b000000000017bcfffffffffffffffff55f00000006ccffffffffffffffffffffff53000066ffffffffcc5e4a84fbffffffe10500d5fffffff00f0000007affffffff521cffffffffac0000000025ffffffff9a44ffffffff8d0000000006ffffffffc860ffffffff850000000000fdffffffe76effffffff840000000000fcfffffff670ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff86dffffffff840000000000fcfffffff55dffffffff850000000000fdffffffe440ffffffff8c0000000007ffffffffc812feffffffae0000000028ffffffff9b00cafffffff2110000007cffffffff52005effffffffcd574381fbffffffdf040004c8ffffffffffffffffffffff5000000016bbfffffffffffffffff55d0000000000024ca7d7f8fdecc2861f000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 79 + } + }, + { + "encoding": 80, + "x": 2, + "y": 0, + "width": 15, + "height": 28, + "dx": 17, + "glyphBitmap": { + "width": 15, + "height": 28, + "pixelArray": "fcfcfcfcfcfcfcfcf1cc861e000000fffffffffffffffffffffff3520000fffffffffffffffffffffffff93300ffffffffe64445589bffffffffba00ffffffffdc000000008efffffffe16ffffffffdc0000000035ffffffff50ffffffffdc000000001affffffff71ffffffffdc0000000013ffffffff81ffffffffdc0000000019ffffffff7effffffffdc0000000038ffffffff62ffffffffdc0000000079ffffffff37ffffffffdc00011563f3ffffffe402fffffffffffcfeffffffffffff6300ffffffffffffffffffffffff960100fffffffffffffffffffebf4a000000ffffffffe6444443310d0000000000ffffffffdc00000000000000000000ffffffffdc00000000000000000000ffffffffdc00000000000000000000ffffffffdc00000000000000000000ffffffffdc00000000000000000000ffffffffdc00000000000000000000ffffffffdc00000000000000000000ffffffffdc00000000000000000000ffffffffdc00000000000000000000ffffffffdc00000000000000000000ffffffffdc00000000000000000000ffffffffdc00000000000000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 80 + } + }, + { + "encoding": 81, + "x": 1, + "y": -6, + "width": 16, + "height": 34, + "dx": 19, + "glyphBitmap": { + "width": 16, + "height": 34, + "pixelArray": "0000000251a6d4f5fae9c07c1b000000000017bcfffffffffffffffff55f00000006ccffffffffffffffffffffff52000066ffffffffcc5e4a84fbffffffe00500d5fffffff00f0000007affffffff511cffffffffac0000000025ffffffff9844ffffffff8d0000000006ffffffffc760ffffffff850000000000fdffffffe66effffffff840000000000fcfffffff570ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff870ffffffff840000000000fcfffffff86dffffffff840000000000fcfffffff65dffffffff850000000000fdffffffe740ffffffff8c0000000007ffffffffce12feffffffae0000000028ffffffff9f00cafffffff2110000007cffffffff59005effffffffcd574381fbffffffe9080004c8ffffffffffffffffffffff5a00000016bbfffffffffffffffffd710000000000024ca7d7f8ffffffff91000000000000000000000007d2fffffe64000000000000000000000026f0ffffff76000000000000000000000048fbffffab00000000000000000000000053faff660000000000000000000000000037e22200000000000000000000000000000a0000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 81 + } + }, + { + "encoding": 82, + "x": 2, + "y": 0, + "width": 16, + "height": 28, + "dx": 18, + "glyphBitmap": { + "width": 16, + "height": 28, + "pixelArray": "fcfcfcfcfcfcfaedd3a95f0700000000ffffffffffffffffffffffe649000000fffffffffffffffffffffffffc3b0000ffffffffe6444763bcffffffffd90200ffffffffdc00000001aaffffffff3a00ffffffffdc0000000040ffffffff6b00ffffffffdc000000000fffffffff9000ffffffffdc0000000001ffffffff9a00ffffffffdc000000000affffffff9200ffffffffdc0000000032ffffffff6f00ffffffffdc0000000092ffffffff4300ffffffffdc0004288bfffffffff10900fffffffffffcffffffffffffff780000ffffffffffffffffffffffff8f020000ffffffffffffffffffffff8900000000ffffffffe64444e9ffffffb900000000ffffffffdc0000a9fffffff708000000ffffffffdc000069ffffffff43000000ffffffffdc000029ffffffff88000000ffffffffdc000001e9ffffffcd000000ffffffffdc000000a9fffffffe140000ffffffffdc00000069ffffffff570000ffffffffdc00000029ffffffff9c0000ffffffffdc00000001e9ffffffe10100ffffffffdc00000000a9ffffffff2600ffffffffdc0000000069ffffffff6b00ffffffffdc0000000029ffffffffb000ffffffffdc0000000001e8fffffff105" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 82 + } + }, + { + "encoding": 83, + "x": 1, + "y": 0, + "width": 15, + "height": 28, + "dx": 16, + "glyphBitmap": { + "width": 15, + "height": 28, + "pixelArray": "000000258dd0f4fae0ae4b01000000000070f9ffffffffffffffac060000005bffffffffffffffffffff8a000008ebffffffdb624caffffffffb1b0051ffffffff2e000004d8ffffff730085ffffffec0000000084ffffffb200a1fffffff30200000056ffffffdc009effffffff310000003fffddaa710080ffffffffbd0400000a11000000004effffffffffa003000000000000000cf0ffffffffffac07000000000000006effffffffffffbd0d00000000000001abffffffffffffcb150000000000000abaffffffffffffd61700000000000007aaffffffffffffcd0b0000000000000395ffffffffffff9d00000000000000017effffffffffff42000000000000000072ffffffffffba00000000000000000086ffffffffff15042f68a17900000006dbffffffff47a1ffffffaa0000000078ffffffff6487ffffffd20000000046ffffffff695afffffffc1400000041ffffffff4b14fcffffff8400000080fffffffc1700a7fffffffe894373f5ffffffae00001eecfffffffffffffffffff12000000033dfffffffffffffffe43900000000000c6bbee9fef3ca7810000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 83 + } + }, + { + "encoding": 84, + "x": 0, + "y": 0, + "width": 14, + "height": 28, + "dx": 14, + "glyphBitmap": { + "width": 14, + "height": 28, + "pixelArray": "ddfcfcfcfcfcfcfcfcfcfcfcfccde0ffffffffffffffffffffffffd0e0ffffffffffffffffffffffffd03c4444448effffffff9d444444380000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff78000000000000000064ffffffff7800000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 84 + } + }, + { + "encoding": 85, + "x": 1, + "y": 0, + "width": 16, + "height": 28, + "dx": 19, + "glyphBitmap": { + "width": 16, + "height": 28, + "pixelArray": "38fcfcfcfc820000000000e9fcfcfccd38ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd038ffffffff840000000000ecffffffd037ffffffff840000000000ecffffffcf31ffffffff850000000000eeffffffc823ffffffff8b0000000000f3ffffffba0affffffff9e0000000007ffffffffa000ddffffffc90000000031ffffffff74009afffffffd2800000088ffffffff30003dffffffffe1604387feffffffd2010000a8ffffffffffffffffffffff400000000cb2fffffffffffffffff66200000000000146a7d8f7feeeca881d000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 85 + } + }, + { + "encoding": 86, + "x": 0, + "y": 0, + "width": 17, + "height": 28, + "dx": 17, + "glyphBitmap": { + "width": 17, + "height": 28, + "pixelArray": "28fcfcfcfc2a00000000002dfcfcfcfc3b03f5ffffff58000000000059fffffffe0c00c5ffffff86000000000084ffffffd8000094ffffffb30000000000afffffffa6000062ffffffe10000000000dbffffff74000031ffffffff1000000009feffffff42000006faffffff3d00000031ffffffff11000000cdffffff6b0000005cffffffde000000009cffffff9900000088ffffffac000000006affffffc7000000b3ffffff7a0000000039fffffff3020000deffffff49000000000bfdffffff22000bffffffff170000000000d5ffffff500034ffffffe5000000000000a4ffffff7e0060ffffffb300000000000072ffffffac008bffffff8100000000000041ffffffda00b6ffffff4f00000000000010fffffffe0be1ffffff1d00000000000000ddffffff43ffffffeb0100000000000000acffffff9bffffffb900000000000000007affffffeeffffff88000000000000000049ffffffffffffff56000000000000000017ffffffffffffff24000000000000000000e5fffffffffff102000000000000000000b4ffffffffffc00000000000000000000082ffffffffff8e0000000000000000000051ffffffffff5c000000000000000000001fffffffffff2a0000000000000000000001edfffffff6030000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 86 + } + }, + { + "encoding": 87, + "x": 1, + "y": 0, + "width": 22, + "height": 28, + "dx": 24, + "glyphBitmap": { + "width": 22, + "height": 28, + "pixelArray": "d8fcfcfc3b00000000d9fcfc8e0000000076fcfcfc89b9ffffff5900000008fdffffb90000000096ffffff6896ffffff780000002cffffffe200000000b5ffffff4573ffffff9700000055ffffffff0c000000d4ffffff2250ffffffb60000007dffffffff34000001f3fffffb042dffffffd4000000a5ffffffff5d000011ffffffdc000bfffffff3010000cdffffffff86000030ffffffb90000e7ffffff120002f5ffffffffaf00004fffffff960000c4ffffff31001dffffffffffd800006dffffff730000a1ffffff4f0046fffffafffffc06008cffffff5000007effffff6e006effffc0f6ffff2a00abffffff2d00005bffffff8d0096ffff95cdffff5300caffffff0b000038ffffffac00beffff6ba3ffff7c00e8ffffe700000015ffffffca00e6ffff4179ffffa508ffffffc400000001f2ffffe90fffffff174fffffce26ffffffa100000000cfffffff40ffffee0125fffff646ffffff7e00000000acffffff86ffffc40004f8ffff82ffffff5b0000000089ffffffccffff9a0000d1ffffcaffffff380000000066ffffffffffff700000a7fffffeffffff150000000043ffffffffffff4700007dfffffffffff2010000000020ffffffffffff1d000053ffffffffffcf000000000003fafffffffff301000029ffffffffffac000000000000daffffffffc900000005fbffffffff89000000000000b7ffffffffa000000000d5ffffffff6600000000000094ffffffff7600000000abffffffff4300000000000071ffffffff4c0000000081ffffffff200000000000004effffffff220000000057fffffffa030000000000002afffffff703000000002dffffffda00000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 87 + } + }, + { + "encoding": 88, + "x": 0, + "y": 0, + "width": 17, + "height": 28, + "dx": 16, + "glyphBitmap": { + "width": 17, + "height": 28, + "pixelArray": "52fcfcfcfc3c0000000000acfcfcfc940006ebffffff9f000000000cf7ffffff3a00008cfffffff50e00000057ffffffdd01000029ffffffff65000000acffffff8100000000c4ffffffc800000bf6ffffff250000000060ffffffff2b0056ffffffc800000000000bf2ffffff8e00aaffffff6b00000000000098ffffffeb10f5fffffb1400000000000034ffffffffa7ffffffb20000000000000001d0ffffffffffffff5500000000000000006cfffffffffffff109000000000000000011f8ffffffffff9c00000000000000000000a4ffffffffff3f0000000000000000000066ffffffffe10200000000000000000000b6ffffffffbb0000000000000000000018fdfffffffffd1e00000000000000000072ffffffffffff82000000000000000000d0ffffffffffffe605000000000000002efffffffcffffffff51000000000000008bffffff9bd9ffffffb800000000000004e7ffffff3f72fffffffe21000000000047ffffffe20212f8ffffff860000000000a5ffffff890000a1ffffffe8050000000df6ffffff2e000039ffffffff5400000060ffffffd300000001d1ffffffbb000000beffffff780000000069ffffffff24001fffffffff1f000000000ef4ffffff89007affffffc200000000000099ffffffea07" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 88 + } + }, + { + "encoding": 89, + "x": 0, + "y": 0, + "width": 16, + "height": 28, + "dx": 16, + "glyphBitmap": { + "width": 16, + "height": 28, + "pixelArray": "87fcfcfcf2080000000000d0fcfcfca63bffffffff46000000001bffffffff5a03e9ffffff900000000061fffffffb10009cffffffdb00000000a8ffffffbc00004cffffffff25000003edffffff6d000009f5ffffff6f000035ffffffff1e000000adffffffba00007cffffffce000000005efffffff90c00c3ffffff7f0000000013fcffffff4e0ffcffffff300000000000bfffffff9951ffffffe001000000000070ffffffe398ffffff9100000000000021fffffffff4ffffff4200000000000000d1ffffffffffffef050000000000000081ffffffffffffa3000000000000000032ffffffffffff54000000000000000001e2fffffffff90d00000000000000000093ffffffffb6000000000000000000004cffffffff700000000000000000000040ffffffff640000000000000000000040ffffffff640000000000000000000040ffffffff640000000000000000000040ffffffff640000000000000000000040ffffffff640000000000000000000040ffffffff640000000000000000000040ffffffff640000000000000000000040ffffffff640000000000000000000040ffffffff640000000000000000000040ffffffff640000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 89 + } + }, + { + "encoding": 90, + "x": 1, + "y": 0, + "width": 13, + "height": 28, + "dx": 14, + "glyphBitmap": { + "width": 13, + "height": 28, + "pixelArray": "7bfcfcfcfcfcfcfcfcfcfcfc3c7cffffffffffffffffffffff3c7cffffffffffffffffffffff2a21444444444444e8ffffffda0100000000000029ffffffff85000000000000007cffffffff3000000000000000cfffffffdb0100000000000023ffffffff860000000000000076ffffffff3100000000000000caffffffdc010000000000001fffffffff870000000000000071ffffffff3200000000000000c5ffffffde010000000000001bffffffff89000000000000006cffffffff3400000000000000c0ffffffdf0100000000000017fdffffff8a0000000000000067ffffffff3500000000000000bbffffffdf0100000000000013fcffffff8b0000000000000062ffffffff3600000000000000b5ffffffe00100000000000010faffffff8c000000000000005dffffffff3700000000000000b0fffffff13d3c3c3c3c3c3c0fd8ffffffffffffffffffffff40d8ffffffffffffffffffffff40d8ffffffffffffffffffffff40" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 90 + } + }, + { + "encoding": 91, + "x": 1, + "y": -6, + "width": 9, + "height": 34, + "dx": 11, + "glyphBitmap": { + "width": 9, + "height": 34, + "pixelArray": "19fcfcfcfcfcfcfcd519ffffffffffffffd819ffffffe61414141119ffffffe30000000019ffffffe30000000019ffffffe30000000019ffffffe30000000019ffffffe3000000001affffffe3000000001affffffe3000000001affffffe2000000001affffffe2000000001affffffe2000000001affffffe2000000001affffffe2000000001affffffe2000000001affffffe2000000001bffffffe2000000001bffffffe1000000001bffffffe1000000001bffffffe1000000001bffffffe1000000001bffffffe1000000001bffffffe1000000001bffffffe1000000001cffffffe0000000001cffffffe0000000001cffffffe0000000001cffffffe0000000001cffffffe0000000001cffffffe0000000001cffffffe21010100e1cffffffffffffffd41cffffffffffffffd4" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 91 + } + }, + { + "encoding": 92, + "x": 1, + "y": 0, + "width": 11, + "height": 28, + "dx": 13, + "glyphBitmap": { + "width": 11, + "height": 28, + "pixelArray": "b0fcfc71000000000000006effffb70000000000000029fffff60700000000000001e3ffff41000000000000009effff860000000000000059ffffcb0000000000000015fffffe1300000000000000ceffff560000000000000089ffff9b0000000000000043ffffe00100000000000008f7ffff2500000000000000b9ffff6a0000000000000073ffffb0000000000000002efffff10400000000000001e8ffff3a00000000000000a3ffff7f000000000000005effffc4000000000000001afffffc0f00000000000000d3ffff4f000000000000008effff940000000000000049ffffd9000000000000000bf9ffff1e00000000000000beffff630000000000000079ffffa90000000000000033ffffec0200000000000002ecffff3300000000000000a9ffff780000000000000063ffffbd" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 92 + } + }, + { + "encoding": 93, + "x": 0, + "y": -6, + "width": 9, + "height": 34, + "dx": 11, + "glyphBitmap": { + "width": 9, + "height": 34, + "pixelArray": "47fcfcfcfcfcfcfcaa48ffffffffffffffac0614141466ffffffac0000000058ffffffac0000000058ffffffac0000000058ffffffac0000000058ffffffac0000000058ffffffac0000000058ffffffac0000000058ffffffac0000000057ffffffac0000000057ffffffac0000000057ffffffac0000000057ffffffac0000000057ffffffac0000000057ffffffac0000000057ffffffac0000000057ffffffac0000000056ffffffac0000000056ffffffac0000000056ffffffac0000000056ffffffac0000000056ffffffac0000000056ffffffac0000000056ffffffac0000000055ffffffac0000000055ffffffac0000000055ffffffac0000000055ffffffac0000000055ffffffac0000000055ffffffac0510101060ffffffac48ffffffffffffffac48ffffffffffffffac" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 93 + } + }, + { + "encoding": 94, + "x": 1, + "y": 16, + "width": 14, + "height": 12, + "dx": 15, + "glyphBitmap": { + "width": 14, + "height": 12, + "pixelArray": "0000000088fcfcfcdd020000000000000006eaffffffff470000000000000055ffffffffffae00000000000000bbfffffefffffc19000000000022ffffff92ffffff7a000000000086ffffff21c8ffffdf0200000005e7ffffcb0073ffffff4700000051ffffff77001fffffffad000000b6ffffff230000c9fffffb19001ffeffffce00000074ffffff7a0082ffffff7a00000020ffffffdf026b8484841e000000007384848418" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 94 + } + }, + { + "encoding": 95, + "x": 0, + "y": -5, + "width": 12, + "height": 4, + "dx": 12, + "glyphBitmap": { + "width": 12, + "height": 4, + "pixelArray": "404040404040404040404031ffffffffffffffffffffffc4ffffffffffffffffffffffc4ffffffffffffffffffffffc4" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 95 + } + }, + { + "encoding": 96, + "x": 1, + "y": 20, + "width": 8, + "height": 8, + "dx": 10, + "glyphBitmap": { + "width": 8, + "height": 8, + "pixelArray": "1bf2fcfcfc5e00000080ffffffa60000000be5ffffec030000005dffffff3500000002caffff7c000000003affffc40000000000a8fffc0f0000000002040401" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 96 + } + }, + { + "encoding": 97, + "x": 1, + "y": 0, + "width": 13, + "height": 20, + "dx": 15, + "glyphBitmap": { + "width": 13, + "height": 20, + "pixelArray": "0000014daee1f9f3cb770900000005abffffffffffffffd11100007cffffffffffffffffff950008eeffffffae4cb9fffffff5093cfffffffd100031ffffffff3968ffffffe8000011ffffffff564fa8a8a89100000cffffffff5c000000000000003cffffffff5c000000000761ccffffffffff5c0000004de0ffffffffffffff5c000498ffffffee5affffffff5c008effffffe3240cffffffff5c2affffffff3a000cffffffff5c78ffffffc800000cffffffff5ca5ffffffa000000cffffffff5cb1ffffffc4000024ffffffff5e92ffffffff7556dfffffffff683bfffffffffffff6daffffff7a00a0ffffffffff6ea3ffffff8d00047be1fcd1660174ffffffa9" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 97 + } + }, + { + "encoding": 98, + "x": 1, + "y": 0, + "width": 14, + "height": 28, + "dx": 16, + "glyphBitmap": { + "width": 14, + "height": 28, + "pixelArray": "3cfcfcfcfc4700000000000000003cffffffff4800000000000000003cffffffff4800000000000000003cffffffff4800000000000000003cffffffff4800000000000000003cffffffff4800000000000000003cffffffff4800000000000000003cffffffff4800000000000000003cffffffff482ea9ecf4b52800003cffffffffa5faffffffffed1e003cffffffffffffffffffffff99003cffffffffeb7256e3fffffff0043cffffffff4f000067ffffffff2d3cffffffff48000035ffffffff4e3cffffffff48000029ffffffff5b3cffffffff48000028ffffffff5c3cffffffff48000028ffffffff5c3cffffffff48000028ffffffff5c3cffffffff48000028ffffffff5c3cffffffff48000028ffffffff5c3cffffffff48000028ffffffff5c3cffffffff4800002affffffff583cffffffff48000036ffffffff443cffffffff48000061ffffffff223cffffffffbf5c4bdaffffffe3013cffffffffffffffffffffff88003cffffffffd5ffffffffffdd13003cffffffff4951c2f8eea61d0000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 98 + } + }, + { + "encoding": 99, + "x": 1, + "y": 0, + "width": 13, + "height": 20, + "dx": 14, + "glyphBitmap": { + "width": 13, + "height": 20, + "pixelArray": "0000076dc3edfbebc26e0700000011cbffffffffffffffcd0e00009dffffffffffffffffff8a0016fbffffffaa4bb0ffffffeb0359ffffffff0f001dffffffff2182ffffffec000001f9ffffff3c9bffffffe1000000f4ffffff40a0ffffffe00000008a90909024a0ffffffe00000000000000000a0ffffffe00000000000000000a0ffffffe00000000000000000a0ffffffe00000000000000000a0ffffffe0000000d2dcdcdc379bffffffe1000000f4ffffff4083ffffffeb000001f8ffffff3b59ffffffff0f0019ffffffff1e16fbffffffa543a9ffffffe502009fffffffffffffffffff7f000013d0ffffffffffffffc2090000000871c6f1feedc168040000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 99 + } + }, + { + "encoding": 100, + "x": 1, + "y": 0, + "width": 13, + "height": 28, + "dx": 16, + "glyphBitmap": { + "width": 13, + "height": 28, + "pixelArray": "00000000000000009efcfcfce10000000000000000a0ffffffe40000000000000000a0ffffffe40000000000000000a0ffffffe40000000000000000a0ffffffe40000000000000000a0ffffffe40000000000000000a0ffffffe40000000000000000a0ffffffe4000035b6f1efae2ea0ffffffe40030f5fffffffffadeffffffe400bfffffffffffffffffffffe41bffffffffcd4f77eaffffffe459ffffffff330000a0ffffffe47dfffffffb040000a0ffffffe492fffffff1000000a0ffffffe498fffffff0000000a0ffffffe498fffffff0000000a0ffffffe498fffffff0000000a0ffffffe498fffffff0000000a0ffffffe498fffffff0000000a0ffffffe498fffffff0000000a0ffffffe495fffffff2000000a0ffffffe485fffffffc020000a0ffffffe469ffffffff2d0000a0ffffffe434ffffffffc54767dfffffffe402dbffffffffffffffffffffe4004cfcffffffffffe9ffffffe4000040bef5f6bb3fa0ffffffe4" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 100 + } + }, + { + "encoding": 101, + "x": 1, + "y": 0, + "width": 13, + "height": 20, + "dx": 15, + "glyphBitmap": { + "width": 13, + "height": 20, + "pixelArray": "00000567bfebfaebbe67030000000ec5ffffffffffffffb305000096ffffffffffffffffff720013f9ffffffa94bb0ffffffdd0156ffffffff0e0014ffffffff2281ffffffe7000000ebffffff469affffffda000000e5ffffff5ca0ffffffde242424e8ffffff64a0ffffffffffffffffffffff64a0ffffffffffffffffffffff64a0ffffffd90404040404040402a0ffffffd80000000000000000a0ffffffd800000008080808039affffffd8000000e4ffffff6082ffffffe0000000eaffffff5759fffffffb0d0012ffffffff3617fcffffffa243aafffffff006009fffffffffffffffffff83000013cfffffffffffffffbc08000000076fc4effeeec063030000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 101 + } + }, + { + "encoding": 102, + "x": 0, + "y": 0, + "width": 10, + "height": 27, + "dx": 10, + "glyphBitmap": { + "width": 10, + "height": 27, + "pixelArray": "0000000154c1eefaedb00000006bffffffffffd4000002e8ffffffffffd400002cffffffffc54e5300004cffffffff440000000056ffffffff290000000058ffffffff28000067fcfefffffffffdfcd168ffffffffffffffffd468ffffffffffffffffd41c4485ffffffff624439000058ffffffff280000000058ffffffff280000000058ffffffff280000000058ffffffff280000000058ffffffff280000000058ffffffff280000000058ffffffff280000000058ffffffff280000000058ffffffff280000000058ffffffff280000000058ffffffff280000000058ffffffff280000000058ffffffff280000000058ffffffff280000000058ffffffff280000000058ffffffff280000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 102 + } + }, + { + "encoding": 103, + "x": 0, + "y": -6, + "width": 16, + "height": 27, + "dx": 15, + "glyphBitmap": { + "width": 16, + "height": 27, + "pixelArray": "00000000000000000000000000023500000000025cbcecfade971b001ac2f60f000006b1ffffffffffffe33be1ffff67000080fffffffffffffffffeffffcd520009f2ffffff8d4aa5ffffffd03c01000045ffffffdd01000afbffffc60000000070ffffffb7000000e0fffffd0b0000008affffffa4000000ccffffff2f0000008effffffa1000000cbffffff3d0000007effffffaa000000d8ffffff3400000057ffffffcc000003f5ffffff160000001bfdffffff4c0468ffffffdb000000000091ffffffffffffffffff7a000000000007c4ffffffffffffffcd0a00000000003df4fff7fffffff6980f000000000022f2ffd906294131090000000000000085ffffdd3c0a000000000000000000009affffffffffecd1b6925206000000003bfbffffffffffffffffffdc2d0000000034e8ffffffffffffffffffdb05000006a6ffff954e667ea6f0ffffff4300008effffee0c0000000034ffffff6d0011fcffffcc00000000001effffff6d0042ffffffff9d5c474361c6ffffff490028ffffffffffffffffffffffffeb08000090fffffffffffffffffffffa4e000000003f9bd2effefffff0d19126000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 103 + } + }, + { + "encoding": 104, + "x": 1, + "y": 0, + "width": 14, + "height": 28, + "dx": 16, + "glyphBitmap": { + "width": 14, + "height": 28, + "pixelArray": "30fcfcfcfc4b000000000000000030ffffffff4c000000000000000030ffffffff4c000000000000000030ffffffff4c000000000000000030ffffffff4c000000000000000030ffffffff4c000000000000000030ffffffff4c000000000000000030ffffffff4c000000000000000030ffffffff4c0561c0f2ef98080030ffffffff71ccffffffffff890030ffffffffffffffffffffffee0230fffffffffd924ecbffffffff1d30ffffffff6c000063ffffffff2830ffffffff4c000055ffffffff2830ffffffff4c000054ffffffff2830ffffffff4c000054ffffffff2830ffffffff4c000054ffffffff2830ffffffff4c000054ffffffff2830ffffffff4c000054ffffffff2830ffffffff4c000054ffffffff2830ffffffff4c000054ffffffff2830ffffffff4c000054ffffffff2830ffffffff4c000054ffffffff2830ffffffff4c000054ffffffff2830ffffffff4c000054ffffffff2830ffffffff4c000054ffffffff2830ffffffff4c000054ffffffff2830ffffffff4c000054ffffffff28" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 104 + } + }, + { + "encoding": 105, + "x": 1, + "y": 0, + "width": 6, + "height": 27, + "dx": 8, + "glyphBitmap": { + "width": 6, + "height": 27, + "pixelArray": "20fcfcfcfc6320ffffffff6420ffffffff6420ffffffff6401040404040200000000000000000000000020fcfcfcfc5f20ffffffff6020ffffffff6020ffffffff6020ffffffff6020ffffffff6020ffffffff6020ffffffff6020ffffffff6020ffffffff6020ffffffff6020ffffffff6020ffffffff6020ffffffff6020ffffffff6020ffffffff6020ffffffff6020ffffffff6020ffffffff6020ffffffff60" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 105 + } + }, + { + "encoding": 106, + "x": -1, + "y": -5, + "width": 8, + "height": 32, + "dx": 8, + "glyphBitmap": { + "width": 8, + "height": 32, + "pixelArray": "000000d5fcfcfcb2000000d8ffffffb4000000d8ffffffb4000000d8ffffffb4000000040404040300000000000000000000000000000000000000d1fcfcfcaa000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d4ffffffac000000d5ffffffac000003efffffffa52946a0ffffffff7e78fffffffffffe2a78ffffffffff84005ee7fef5c4570100" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 106 + } + }, + { + "encoding": 107, + "x": 1, + "y": 0, + "width": 15, + "height": 28, + "dx": 16, + "glyphBitmap": { + "width": 15, + "height": 28, + "pixelArray": "3cfcfcfcfc3f0000000000000000003cffffffff400000000000000000003cffffffff400000000000000000003cffffffff400000000000000000003cffffffff400000000000000000003cffffffff400000000000000000003cffffffff400000000000000000003cffffffff400000000000000000003cffffffff4000000047fcfcfcfc9d3cffffffff40000007dafffffff2193cffffffff40000078ffffffff75003cffffffff40001cf5ffffffda06003cffffffff4000a9ffffffff4b00003cffffffff4042ffffffffb60000003cffffffff45d5fffffffa270000003cffffffffb2ffffffff8b000000003cffffffffffffffffff6b000000003cffffffffffffffffffcc000000003cffffffffffaaffffffff2f0000003cffffffffcd05d8ffffff900000003cffffffff4b007fffffffed0700003cffffffff400027ffffffff5500003cffffffff400000ceffffffb700003cffffffff40000075fffffffe1d003cffffffff4000001effffffff7c003cffffffff40000000c3ffffffdd023cffffffff400000006affffffff403cffffffff4000000015fcffffffa3" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 107 + } + }, + { + "encoding": 108, + "x": 2, + "y": 0, + "width": 5, + "height": 28, + "dx": 8, + "glyphBitmap": { + "width": 5, + "height": 28, + "pixelArray": "f9fcfcfc86fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88fcffffff88" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 108 + } + }, + { + "encoding": 109, + "x": 1, + "y": 0, + "width": 22, + "height": 20, + "dx": 24, + "glyphBitmap": { + "width": 22, + "height": 20, + "pixelArray": "47fcfcfcfc04289cdff9d45800002499def9d554000048ffffffff68f8ffffffffff425af8ffffffffff470048ffffffffffffffffffffffe2ffffffffffffffbf0048fffffffff27e4ec6fffffffff17d4ec8fffffff80248ffffffff2900004dffffffff2b000051ffffffff0f48ffffffff04000039ffffffff0c00003dffffffff1048ffffffff04000038ffffffff0c00003cffffffff1048ffffffff04000038ffffffff0c00003cffffffff1048ffffffff04000038ffffffff0c00003cffffffff1048ffffffff04000038ffffffff0c00003cffffffff1048ffffffff04000038ffffffff0c00003cffffffff1048ffffffff04000038ffffffff0c00003cffffffff1048ffffffff04000038ffffffff0c00003cffffffff1048ffffffff04000038ffffffff0c00003cffffffff1048ffffffff04000038ffffffff0c00003cffffffff1048ffffffff04000038ffffffff0c00003cffffffff1048ffffffff04000038ffffffff0c00003cffffffff1048ffffffff04000038ffffffff0c00003cffffffff1048ffffffff04000038ffffffff0c00003cffffffff1048ffffffff04000038ffffffff0c00003cffffffff10" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 109 + } + }, + { + "encoding": 110, + "x": 1, + "y": 0, + "width": 14, + "height": 20, + "dx": 16, + "glyphBitmap": { + "width": 14, + "height": 20, + "pixelArray": "47fcfcfcfc3c0a6fc8f5ea83020048ffffffff76ddffffffffff630048ffffffffffffffffffffffbe0048fffffffff88554e3fffffff50048ffffffff5400008fffffffff0448ffffffff3c000081ffffffff0448ffffffff3c000080ffffffff0448ffffffff3c000080ffffffff0448ffffffff3c000080ffffffff0448ffffffff3c000080ffffffff0448ffffffff3c000080ffffffff0448ffffffff3c000080ffffffff0448ffffffff3c000080ffffffff0448ffffffff3c000080ffffffff0448ffffffff3c000080ffffffff0448ffffffff3c000080ffffffff0448ffffffff3c000080ffffffff0448ffffffff3c000080ffffffff0448ffffffff3c000080ffffffff0448ffffffff3c000080ffffffff04" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 110 + } + }, + { + "encoding": 111, + "x": 1, + "y": 0, + "width": 13, + "height": 20, + "dx": 15, + "glyphBitmap": { + "width": 13, + "height": 20, + "pixelArray": "00000464beebfae9b95c020000000ec4ffffffffffffffb80900009cffffffffffffffffff8e001afdffffffa64cb1fffffffa1262fffffffc0d0013ffffffff588affffffde000000eaffffff809effffffd5000000e1ffffff96a0ffffffd4000000e0ffffff98a0ffffffd4000000e0ffffff98a0ffffffd4000000e0ffffff98a0ffffffd4000000e0ffffff98a0ffffffd4000000e0ffffff98a0ffffffd4000000e0ffffff989fffffffd4000000e1ffffff968bffffffdb000000e9ffffff8264fffffff90a0013ffffffff5a1cfeffffffa344a5fffffffb1400a2ffffffffffffffffff94000012cbffffffffffffffc10c000000066bc3effeecbf63030000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 111 + } + }, + { + "encoding": 112, + "x": 1, + "y": -6, + "width": 14, + "height": 26, + "dx": 16, + "glyphBitmap": { + "width": 14, + "height": 26, + "pixelArray": "47fcfcfcfc3c3db2eef2b023000048ffffffffb6ffffffffffe8170048ffffffffffffffffffffff8d0048ffffffffe86e5ae9ffffffe60148ffffffff44000073ffffffff2148ffffffff3c00003fffffffff4248ffffffff3c000031ffffffff4f48ffffffff3c000030ffffffff5048ffffffff3c000030ffffffff5048ffffffff3c000030ffffffff5048ffffffff3c000030ffffffff5048ffffffff3c000030ffffffff5048ffffffff3c000030ffffffff5048ffffffff3c000033ffffffff4c48ffffffff3c000042ffffffff3848ffffffff3c00006fffffffff1648ffffffffb9594ee2ffffffd70048ffffffffffffffffffffff7c0048ffffffffb9ffffffffffd60e0048ffffffff3c45bff8eba118000048ffffffff3c000000000000000048ffffffff3c000000000000000048ffffffff3c000000000000000048ffffffff3c000000000000000048ffffffff3c000000000000000048ffffffff3c0000000000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 112 + } + }, + { + "encoding": 113, + "x": 1, + "y": -6, + "width": 13, + "height": 26, + "dx": 16, + "glyphBitmap": { + "width": 13, + "height": 26, + "pixelArray": "00002eb5f1f1b74092fcfcfced002ff5ffffffffffe7fffffff000bdfffffffffffffffffffff01effffffffce5074e7fffffff05bffffffff33000094fffffff07efffffffb04000094fffffff08ffffffff100000094fffffff094fffffff000000094fffffff094fffffff000000094fffffff094fffffff000000094fffffff094fffffff000000094fffffff094fffffff000000094fffffff094fffffff000000094fffffff091fffffff200000094fffffff081fffffffc02000094fffffff066ffffffff30000094fffffff031ffffffffca4967dcfffffff001d9fffffffffffffffffffff0004cfcfffffffff9d5fffffff0000040bdf4f5b33094fffffff0000000000000000094fffffff0000000000000000094fffffff0000000000000000094fffffff0000000000000000094fffffff0000000000000000094fffffff0000000000000000094fffffff0" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 113 + } + }, + { + "encoding": 114, + "x": 1, + "y": 0, + "width": 10, + "height": 20, + "dx": 11, + "glyphBitmap": { + "width": 10, + "height": 20, + "pixelArray": "38fcfcfcfc4b0374daf838ffffffff4d9dfffffc38ffffffffb6fffffffc38fffffffffffffffffc38ffffffffffbc310a4938ffffffffd10a00000038ffffffff550000000038ffffffff4c0000000038ffffffff4c0000000038ffffffff4c0000000038ffffffff4c0000000038ffffffff4c0000000038ffffffff4c0000000038ffffffff4c0000000038ffffffff4c0000000038ffffffff4c0000000038ffffffff4c0000000038ffffffff4c0000000038ffffffff4c0000000038ffffffff4c00000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 114 + } + }, + { + "encoding": 115, + "x": 0, + "y": 0, + "width": 13, + "height": 20, + "dx": 13, + "glyphBitmap": { + "width": 13, + "height": 20, + "pixelArray": "0000002da2e2fae7a82e00000000005efcfffffffffffb5300000028f9fffffffffffffff41f000091ffffffd35480feffff940000c6ffffff4b000090ffffe60100cfffffff73000026ffb64901009efffffff738000021000000003efffffffff34200000000000000a3fffffffff95200000000000009c3fffffffffd630000000000000bb2ffffffffff680000000000000394fffffffffd400000000000000176ffffffffd7020000024117000080ffffffff351381e0ff6d000002d7ffffff5a1cffffffd9060000c1ffffff5400bcffffffba497cffffffff220036fcffffffffffffffffb500000063fdffffffffffffd4180000000030a3e4fef2c56d080000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 115 + } + }, + { + "encoding": 116, + "x": 0, + "y": 0, + "width": 11, + "height": 26, + "dx": 11, + "glyphBitmap": { + "width": 11, + "height": 26, + "pixelArray": "00003e7c7c7c7c04000000000080ffffffff08000000000080ffffffff08000000000080ffffffff08000000000080ffffffff08000000000080ffffffff0800000063fcfefffffffffdfce90064ffffffffffffffffec0064ffffffffffffffffec001b44a2ffffffff4a443f00000080ffffffff08000000000080ffffffff08000000000080ffffffff08000000000080ffffffff08000000000080ffffffff08000000000080ffffffff08000000000080ffffffff08000000000080ffffffff08000000000080ffffffff08000000000080ffffffff0800000000007fffffffff0900000000006effffffff1d00000000004affffffffae454a0c00000af1ffffffffffff2000000073ffffffffffff200000000062ccf7fcf1dd1b" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 116 + } + }, + { + "encoding": 117, + "x": 1, + "y": 0, + "width": 13, + "height": 20, + "dx": 16, + "glyphBitmap": { + "width": 13, + "height": 20, + "pixelArray": "67fcfcfcfc180000aefcfcfccd68ffffffff180000b0ffffffd068ffffffff180000b0ffffffd068ffffffff180000b0ffffffd068ffffffff180000b0ffffffd068ffffffff180000b0ffffffd068ffffffff180000b0ffffffd068ffffffff180000b0ffffffd068ffffffff180000b0ffffffd068ffffffff180000b0ffffffd068ffffffff180000b0ffffffd068ffffffff180000b0ffffffd068ffffffff180000b0ffffffd068ffffffff180000b0ffffffd068ffffffff180000b0ffffffd068ffffffff260000b1ffffffd05bffffffff9f4699fdffffffd025ffffffffffffffffffffffd001cbffffffffffb3c3ffffffd00021bffaecb24a01b0ffffffd0" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 117 + } + }, + { + "encoding": 118, + "x": 0, + "y": 0, + "width": 13, + "height": 20, + "dx": 13, + "glyphBitmap": { + "width": 13, + "height": 20, + "pixelArray": "7cfcfcfce100000077fcfcfcd64efffffffe0800009affffffaa1effffffff270000bbffffff7b01efffffff480000dcffffff4b00bfffffff690003faffffff1c008fffffff8b001effffffed010060ffffffac003fffffffbe000030ffffffcd0060ffffff8e000007fbffffee0081ffffff5f000000d1ffffff10a2ffffff30000000a1ffffff31c3fffffb0700000072ffffff52e4ffffd10000000042ffffff7bfeffffa20000000013ffffffbaffffff730000000000e3fffff6ffffff440000000000b3ffffffffffff15000000000083ffffffffffe500000000000054ffffffffffb600000000000024ffffffffff8700000000000002f3ffffffff58000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 118 + } + }, + { + "encoding": 119, + "x": 0, + "y": 0, + "width": 19, + "height": 20, + "dx": 20, + "glyphBitmap": { + "width": 19, + "height": 20, + "pixelArray": "1afcfcfc9a000000d9fcfc95000000d7fcfcb201f5ffffbc000008fdffffbc000003faffff8e00d0ffffdc00002cffffffe1000020ffffff6800aafffffa030054ffffffff090043ffffff410085ffffff1d007cffffffff2d0066ffffff1b0060ffffff3d00a4ffffffff520089fffff301003affffff5e00cdffffffff7800acffffcd000015ffffff7e02f5fff6ffff9e00cfffffa7000001efffff9e1dffffb1faffc401f2ffff80000000caffffbf45ffff7fd4ffe914ffffff59000000a4ffffdf6dffff52a9ffff46ffffff330000007ffffffc99ffff257effff8effffff0d0000005affffffdefff60353ffffd7ffffe60000000034ffffffffffcb0028ffffffffffbf000000000fffffffffff9f0004f9ffffffff980000000000e9ffffffff720000d2ffffffff720000000000c4ffffffff450000a7ffffffff4b00000000009effffffff1800007cffffffff24000000000079ffffffeb01000051fffffffa04000000000053ffffffbe00000026ffffffd7000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 119 + } + }, + { + "encoding": 120, + "x": 0, + "y": 0, + "width": 14, + "height": 20, + "dx": 14, + "glyphBitmap": { + "width": 14, + "height": 20, + "pixelArray": "60fcfcfcf211000002dffcfcf20f09ecffffff75000043ffffff9c000085ffffffe10400a4ffffff3300001bfbffffff540ff6ffffca00000000a6ffffffc364ffffff610000000037ffffffffe2ffffef0a0000000000c8ffffffffffff8f00000000000059ffffffffffff2700000000000005e5ffffffffbd0000000000000000aeffffffff540000000000000011f8ffffffff61000000000000006bffffffffffd001000000000000ceffffffffffff3f000000000031ffffffffffffffae000000000094ffffff97fffffffd2000000009efffffe007e5ffffff8c0000005affffff850079fffffff00c0000bdffffff2a0012f6ffffff6a0022ffffffcd00000097ffffffd80283ffffff7200000027ffffffff48" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 120 + } + }, + { + "encoding": 121, + "x": 0, + "y": -5, + "width": 14, + "height": 25, + "dx": 14, + "glyphBitmap": { + "width": 14, + "height": 25, + "pixelArray": "abfcfcfcb400000005f8fcfcfc5b70ffffffe500000029ffffffff2432ffffffff14000052ffffffec0103f1ffffff4200007affffffb40000b4ffffff700000a3ffffff7c000075ffffff9e0000ccffffff44000036ffffffcd0001f4fffffe0f000004f3fffff8041dffffffd400000000b7ffffff2a46ffffff9c0000000078ffffff586effffff640000000038ffffff8797ffffff2d0000000005f4ffffb5bffffff3030000000000b9ffffe3e8ffffbd0000000000007affffffffffff850000000000003cffffffffffff4d00000000000007f8ffffffffff1600000000000000c1ffffffffdd000000000000000083ffffffffa5000000000000000046ffffffff6d000000000000000012ffffffff3500000000000000000bfffffff80600000000000c4765b6ffffffb50000000000002cffffffffffff410000000000002cfffffffffd72000000000000002cfff1cf902c00000000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 121 + } + }, + { + "encoding": 122, + "x": 1, + "y": 0, + "width": 11, + "height": 20, + "dx": 12, + "glyphBitmap": { + "width": 11, + "height": 20, + "pixelArray": "67fcfcfcfcfcfcfcfcfc5768ffffffffffffffffff5868ffffffffffffffffff4e1c44444444acfffffff10a0000000003e3ffffff9700000000004bffffffff340000000000b1ffffffd101000000001bfcffffff6e00000000007cfffffff8120000000002e0ffffffa7000000000047ffffffff440000000000acffffffdf020000000017fbffffff7e000000000077fffffffe1e0000000002dcffffffb8000000000042ffffffff550000000000a8fffffff8433c3c3c3c12e8ffffffffffffffffff4ce8ffffffffffffffffff4ce8ffffffffffffffffff4c" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 122 + } + }, + { + "encoding": 123, + "x": 1, + "y": -7, + "width": 10, + "height": 35, + "dx": 11, + "glyphBitmap": { + "width": 10, + "height": 35, + "pixelArray": "0000000570c6f2fcfc4b000000a2ffffffffff4c000027ffffffffffff4c00005fffffffffaf4c1500007bffffffff130000000088fffffff000000000008cffffffe900000000008cffffffe800000000008cffffffe800000000008cffffffe800000000008cffffffe800000000008dffffffe8000000000092ffffffe100000000009fffffffc60000000000c3ffffffa1000000246cfeffffff5d00000090ffffffffbf0500000090ffffffdc200000000090ffffffffe4130000000434f5ffffff760000000000b6ffffffad00000000009affffffd4000000000090ffffffe500000000008dffffffe800000000008cffffffe800000000008cffffffe800000000008cffffffe800000000008cffffffe800000000008affffffec000000000082fffffffd07000000006dffffffff740901000040ffffffffffff4c000004d5ffffffffff4c00000022b9fdffffff4c00000000000e35404013" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 123 + } + }, + { + "encoding": 124, + "x": 2, + "y": -6, + "width": 5, + "height": 34, + "dx": 8, + "glyphBitmap": { + "width": 5, + "height": 34, + "pixelArray": "c6fcfcfc23c9ffffff23c9ffffff23c9ffffff23caffffff23caffffff23caffffff23caffffff23cbffffff23cbffffff22cbffffff22cbffffff22ccffffff22ccffffff22ccffffff22ccffffff22ccffffff22cdffffff22cdffffff21cdffffff21cdffffff21ceffffff21ceffffff21ceffffff21ceffffff21cfffffff21cfffffff20cfffffff20cfffffff20d0ffffff20d0ffffff20d0ffffff20d0ffffff20d0ffffff20" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 124 + } + }, + { + "encoding": 125, + "x": 1, + "y": -7, + "width": 10, + "height": 35, + "dx": 12, + "glyphBitmap": { + "width": 10, + "height": 35, + "pixelArray": "92fcfbe9b2470000000094ffffffffff5800000094ffffffffffda0000002858dbffffffff14000000005effffffff32000000003dffffffff400000000036ffffffff430000000035ffffffff440000000034ffffffff440000000034ffffffff440000000034ffffffff440000000034ffffffff44000000002effffffff470000000013ffffffff540000000000edffffff770000000000a9ffffffe2511200000024eaffffffff480000000050f7ffffff4800000044fdffffffff48000000c2ffffffc81802000003f8ffffff6b0000000020ffffffff4e0000000031ffffffff460000000034ffffffff440000000034ffffffff440000000034ffffffff440000000034ffffffff440000000035ffffffff440000000038ffffffff42000000004fffffffff3900000115b3ffffffff22000094fffffffffff103000094ffffffffff8e00000094fffffff3910600000025403f2d050000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 125 + } + }, + { + "encoding": 126, + "x": 1, + "y": 11, + "width": 14, + "height": 7, + "dx": 15, + "glyphBitmap": { + "width": 14, + "height": 7, + "pixelArray": "0000001632040000000000000000000a95fbffeb7a0c00000274160011c8ffffffffffea7c4abaffc80999ffffffffffffffffffffffed1e1debc3311a78edffffffffef3500002e060000000e79dbfbad2300000000000000000000000100000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 126 + } + }, + { + "encoding": 127, + "x": 1, + "y": 0, + "width": 9, + "height": 23, + "dx": 12, + "glyphBitmap": { + "width": 9, + "height": 23, + "pixelArray": "a0b0b0b0b0b0b0b098e88b707070707092dce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce83000000000003cdce8471c1c1c1c1c52dce8ffffffffffffffdc" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 24, + "encoding": 127 + } + } + ] }, { - "components": [], - "connectionLines": [], - "localVariables": [], - "name": "numeric_keypad", - "left": 0, - "top": 0, - "width": 800, - "height": 480 - } - ], - "styles": [], - "fonts": [ - { - "name": "medium", + "name": "Oswald_38", "renderingEngine": "freetype", "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12 + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38 }, "bpp": 8, - "height": 22, - "ascent": 18, - "descent": 4, + "height": 71, + "ascent": 57, + "descent": 14, "glyphs": [ { "encoding": 32, @@ -97,591 +12134,591 @@ "y": 0, "width": 0, "height": 0, - "dx": 4, + "dx": 13, "glyphBitmap": { "width": 0, "height": 0, "pixelArray": "" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 32 } }, { "encoding": 33, - "x": 0, + "x": 2, "y": 0, - "width": 4, - "height": 14, - "dx": 4, + "width": 8, + "height": 43, + "dx": 12, "glyphBitmap": { - "width": 4, - "height": 14, - "pixelArray": "28fcfc1718ffff0508fff20000f8df0000e7cd0000d7ba0000c7a80000b6950000a682000095700000855d0000020200239c9c0538ffff08" + "width": 8, + "height": 43, + "pixelArray": "73fcfcfcfcfcfcb064ffffffffffff9f53ffffffffffff8c42ffffffffffff7931ffffffffffff6520ffffffffffff520fffffffffffff3f02fdffffffffff2c00edffffffffff1800dcffffffffff0600cbfffffffff20000baffffffffdf0000a9ffffffffcb000098ffffffffb8000087ffffffffa5000076ffffffff91000065ffffffff7e000054ffffffff6b000043ffffffff58000032ffffffff44000021ffffffff31000010ffffffff1e000002feffffff0b000000eefffff701000000ddffffe400000000cdffffd100000000bcffffbd00000000abffffaa000000009affff970000000089ffff840000000078ffff700000000067ffff5d0000000056ffff4a00000000020404010000000000000000000000000000000000008afcfcfcfcfcfc778cffffffffffff788cffffffffffff788cffffffffffff788cffffffffffff788cffffffffffff788cffffffffffff78" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 33 } }, { "encoding": 34, - "x": 1, - "y": 8, - "width": 5, - "height": 6, - "dx": 6, + "x": 3, + "y": 28, + "width": 16, + "height": 15, + "dx": 20, "glyphBitmap": { - "width": 5, - "height": 6, - "pixelArray": "f5f122fccbf8ca20ffa1f89e20ff75f87220ff48f84620ff1b0401010401" + "width": 16, + "height": 15, + "pixelArray": "c9fcfcfcfcfc660000edfcfcfcfcfc47ccffffffffff370000f0ffffffffff17ccfffffffffd0a0000f0ffffffffe400ccffffffffd5000000f0ffffffffb200ccffffffffa4000000f0ffffffff8100ccffffffff72000000f0ffffffff4f00ccffffffff41000000f0ffffffff1d00ccffffffff11000000f0ffffffec0100ccffffffdf00000000f0ffffffba0000ccffffffae00000000f0ffffff880000ccffffff7d00000000f0ffffff560000ccffffff4c00000000f0ffffff250000ccffffff1a00000000f0fffff2020000ccffffe90100000000f0ffffc100000004040404000000000004040403000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 34 } }, { "encoding": 35, - "x": 0, + "x": 1, "y": 0, - "width": 9, - "height": 14, - "dx": 9, + "width": 25, + "height": 43, + "dx": 27, "glyphBitmap": { - "width": 9, - "height": 14, - "pixelArray": "00006cfc7d1efcc80000008fff5c41ffa8000000b1ff3964ff85000000d3ff1687ff620056fcfffffdfffffe0b3ab5ffe7a4f4ffa8060042ffa401f3f4010039beffd49ffff39c055fffffffffffffff0502a9ff435bff8f040100c7ff2078ff6d000000e7fc0498ff4e000008ffe000b8ff2f000025ffc000d8ff100000" + "width": 25, + "height": 43, + "pixelArray": "00000000000000cefcfcfcfcfc230000007cfcfcfcfcfc6a0000000000000001f2fffffffffd050000009fffffffffff4a0000000000000013ffffffffffe000000000c0ffffffffff280000000000000034ffffffffffbf00000000e2ffffffffff080000000000000055ffffffffff9d00000006feffffffffe5000000000000000076ffffffffff7c00000025ffffffffffc4000000000000000096ffffffffff5a00000046ffffffffffa20000000000000000b7ffffffffff3900000068ffffffffff810000000000000000d8ffffffffff1700000089ffffffffff5f0000000000000002f8fffffffff501000000abffffffffff3e000000000000001affffffffffd400000000ccffffffffff1c000000000000003bffffffffffb300000000eefffffffff902000000000000005cffffffffff9100000010ffffffffffd900000000ebfcfcfcfefffffffffffefcfcfcfdfffffffffffffcfc1a00f2ffffffffffffffffffffffffffffffffffffffffffff1700f5ffffffffffffffffffffffffffffffffffffffffffff1400f8ffffffffffffffffffffffffffffffffffffffffffff1100fbffffffffffffffffffffffffffffffffffffffffffff0e001414145affffffffffab14141416f8fffffffff515141401000000006cffffffffff800000001affffffffffd100000000000000008dffffffffff5b0000003dffffffffffad0000000000000000afffffffffff3700000060ffffffffff8a0000000000000000d0ffffffffff1300000083ffffffffff660000000002fcfcfcfffffffffffffcfcfcfcfffffffffffffefcfcfc0606ffffffffffffffffffffffffffffffffffffffffffffff0309ffffffffffffffffffffffffffffffffffffffffffffff010cfffffffffffffffffffffffffffffffffffffffffffffd000ffffffffffffffffffffffffffffffffffffffffffffffa00021414afffffffffff5314141469ffffffffff9a1414141400000000c8ffffffffff240000007cffffffffff710000000000000000e9fffffffffd060000009dffffffffff4f000000000000000bffffffffffe000000000bfffffffffff2e000000000000002bffffffffffbe00000000e0ffffffffff0d000000000000004cffffffffff9c00000005fdffffffffec00000000000000006dffffffffff7b00000022ffffffffffca00000000000000008effffffffff5900000044ffffffffffa90000000000000000afffffffffff3700000065ffffffffff880000000000000000d0ffffffffff1500000086ffffffffff670000000000000001f1fffffffff401000000a7ffffffffff450000000000000012ffffffffffd200000000c9ffffffffff240000000000000033ffffffffffb000000000eafffffffffe060000000000000054ffffffffff8e0000000cffffffffffe2000000000000000074ffffffffff6d0000002cffffffffffc100000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 35 } }, { "encoding": 36, - "x": 0, - "y": -2, - "width": 8, - "height": 18, - "dx": 8, + "x": 1, + "y": -5, + "width": 24, + "height": 53, + "dx": 26, "glyphBitmap": { - "width": 8, - "height": 18, - "pixelArray": "0000001844000000000000308e0000000030bcf7ffd443000febffcdc1fff21358fff40701d5ff6271fff505009acb5652ffff87000000000ce6ffff8c0200000039f4ffffa70500000034e9ffff9f0000000023ddffff490532470023f6ffa86fffd30000adffc83cfffd2100b0ffac03d1ffe2adfeff4c001cadf2ffe4630000000000b7010000000000005a000000" + "width": 24, + "height": 53, + "pixelArray": "000000000000000000000c7c7c14000000000000000000000000000000000000000018ffff28000000000000000000000000000000000000000018ffff28000000000000000000000000000000000000000018ffff280000000000000000000000000000000000103e6685ffffa57236030000000000000000000000003daffaffffffffffffffffe370040000000000000000099affffffffffffffffffffffffffc41300000000000007bdffffffffffffffffffffffffffffffc807000000000088ffffffffffffffffffffffffffffffffff7d000000002afcfffffffffffffffffffffffffffffffffff20d0000008ffffffffffffffff6aa8693deffffffffffffff6c000000e5ffffffffffffe42400000008b1ffffffffffffc5000015ffffffffffffff5e000000000016f7fffffffffffc0c003bffffffffffffff15000000000000b0ffffffffffff36004affffffffffffff0400000000000075ffffffffffff5f0047ffffffffffffff170000000000004fffffffffffff7d0032ffffffffffffff4c00000000000037fffff2c08d5a1c0012ffffffffffffffb0000000000000155a2702000000000000dbffffffffffffff5d0000000000000000000000000000008bfffffffffffffffa44000000000000000000000000000024fcfffffffffffffff64b00000000000000000000000000008cfffffffffffffffffd680000000000000000000000000009cfffffffffffffffffff8a020000000000000000000000001ee3ffffffffffffffffffab0900000000000000000000000025e3ffffffffffffffffffc7150000000000000000000000001cd1ffffffffffffffffffdd230000000000000000000000000ebaffffffffffffffffffe629000000000000000000000000059cffffffffffffffffffe521000000000000000000000000017affffffffffffffffffd70d000000000000000000000000005af9ffffffffffffffffa1000000000000000000000000000040f0ffffffffffffffff4c000000000000000000000000000033efffffffffffffffd90200000000000000000000000000003ffbffffffffffffff4b00000000000002262500000000000078ffffffffffffffab000122568abef1ff8300000000000006e1ffffffffffffed0157ffffffffffff9b0000000000000082ffffffffffffff1944ffffffffffffba000000000000004dffffffffffffff3a1fffffffffffffec0100000000000032ffffffffffffff4a02f5ffffffffffff3400000000000035ffffffffffffff4500c7ffffffffffff9b00000000000062ffffffffffffff27007afffffffffffffd3f0000000002c3fffffffffffff9040028fffffffffffffff470180228a6ffffffffffffffb2000000b4ffffffffffffffffffffffffffffffffffffff520000002dfeffffffffffffffffffffffffffffffffffc2010000000077fffffffffffffffffffffffffffffffff1270000000000018bffffffffffffffffffffffffffffec3b000000000000000052e0ffffffffffffffffffffffbc1d00000000000000000000054b98c5eefdffffffe8a23e000000000000000000000000000000000030ffff22020000000000000000000000000000000000000030ffff04000000000000000000000000000000000000000030ffff04000000000000000000000000000000000000000030ffff04000000000000000000000000000000000000000018808002000000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 36 } }, { "encoding": 37, - "x": 0, + "x": 2, "y": 0, - "width": 16, - "height": 14, - "dx": 16, + "width": 48, + "height": 43, + "dx": 51, "glyphBitmap": { - "width": 16, - "height": 14, - "pixelArray": "0043d0f9e381020000c8d6000000000009eeffb3ebff540014fe9200000000003bffc4006cff990059ff4b000000000052ffb10056ffaf00a0f90b000000000052ffb10056ffae01e6bd00000000000039ffc90072ff962eff7500000000000007eaffaeecff4e75ff2e0a6897893700003fd3ffec8201bce601b5fffffffe410000000200000bf9a016ffeb197cffa00000000000004aff5838ffc60043ffc100000000000091fe133bffc50041ffc3000000000000d8ca0026ffdb0155ffaf00000000001fff830002e0ffb2e1ff69000000000065ff3c000036c7faeb9205" + "width": 48, + "height": 43, + "pixelArray": "000000001269afd7f4fbf2d2ab610f000000000000000000000009f4fcfcfcfc190000000000000000000000000000000000026ff7fffffffffffffffffff1640100000000000000000048ffffffffd10000000000000000000000000000000000019bffffffffffffffffffffffffff8b00000000000000000090ffffffff88000000000000000000000000000000000052ffffffffffffffffffffffffffffff440000000000000000d8ffffffff400000000000000000000000000000000002d1ffffffffffffffffffffffffffffffc60000000000000021fffffffff3060000000000000000000000000000000032ffffffffffffb537183ec5ffffffffffff2300000000000068ffffffffb0000000000000000000000000000000000076ffffffffffe0050000000ef1ffffffffff6a000000000000b0ffffffff680000000000000000000000000000000000a8ffffffffff960000000000b0ffffffffff97000000000006f3ffffffff210000000000000000000000000000000000c5ffffffffff7100000000008bffffffffffb4000000000040ffffffffd8000000000000000000000000000000000000deffffffffff6100000000007bffffffffffcc000000000089ffffffff90000000000000000000000000000000000000e7ffffffffff5d000000000075ffffffffffd30000000000d1ffffffff47000000000000000000000000000000000000e8ffffffffff5c000000000074ffffffffffd4000000001afffffffff709000000000000000000000000000000000000e8ffffffffff5c000000000074ffffffffffd40000000061ffffffffb700000000000000000000000000000000000000e6ffffffffff5e000000000076ffffffffffd200000000a9ffffffff6f00000000000000000000000000000000000000dbffffffffff6500000000007fffffffffffc900000004eeffffffff2700000000000000000000000000000000000000beffffffffff7a000000000095ffffffffffad00000039ffffffffdf01000000000000000000000000000000000000009fffffffffffab0000000000c4ffffffffff9000000081ffffffff97000000000000000000000000000000000000000065fffffffffff21100000021fdffffffffff59000000caffffffff4f00000000000000000000000000000000000000001fffffffffffffbe341141d4fffffffffffe15000015fefffffffa0d000000000000000000000000000000000000000000b4ffffffffffffffffffffffffffffffab0000005affffffffbe0000000000044a9ecaeefaf7dfb9802600000000000034fdfffffffffffffffffffffffffffc2d000000a2ffffffff760000000038d9ffffffffffffffffffffa011000000000073ffffffffffffffffffffffffff6c00000002e9ffffffff2e00000048fbffffffffffffffffffffffffd611000000000052edffffffffffffffffffea4e0000000032ffffffffe60100000fecffffffffffffffffffffffffffff9f0000000000000b60afd9fafff8d6ac5b0a00000000007affffffff9e0000007afffffffffffffffffffffffffffffffd25000000000000000000000200000000000000000000c2ffffffff56000000daffffffffffe3531b298cffffffffffff7d00000000000000000000000000000000000000000ffcfffffffd1200001fffffffffffff3d00000000a8ffffffffffc3000000000000000000000000000000000000000053ffffffffc600000050ffffffffffee010000000059ffffffffffef00000000000000000000000000000000000000009bffffffff7d0000006dffffffffffc9000000000034ffffffffffff0e00000000000000000000000000000000000001e3ffffffff3500000086ffffffffffb9000000000025ffffffffffff250000000000000000000000000000000000002bffffffffeb020000008fffffffffffb5000000000021ffffffffffff2b00000000000000000000000000000000000073ffffffffa50000000090ffffffffffb4000000000020ffffffffffff2c000000000000000000000000000000000000bbffffffff5d0000000090ffffffffffb4000000000020ffffffffffff2c00000000000000000000000000000000000bf9ffffffff17000000008effffffffffb6000000000022ffffffffffff2a00000000000000000000000000000000004bffffffffcd000000000083ffffffffffbd000000000028ffffffffffff21000000000000000000000000000000000094ffffffff85000000000066ffffffffffd100000000003cffffffffffff070000000000000000000000000000000000dcffffffff3c000000000047fffffffffff90a0000000068ffffffffffe8000000000000000000000000000000000024fffffffff004000000000011fdffffffffff5a00000001c0ffffffffffb100000000000000000000000000000000006cffffffffac00000000000000c7ffffffffffec5314259bffffffffffff6a0000000000000000000000000000000000b4ffffffff64000000000000005cfffffffffffffffffffffffffffffff2120000000000000000000000000000000008f5ffffffff1d0000000000000004d6ffffffffffffffffffffffffffff80000000000000000000000000000000000044ffffffffd40000000000000000002ceeffffffffffffffffffffffffbe0600000000000000000000000000000000008cffffffff8c0000000000000000000021c4fffffffffffffffffffe8807000000000000000000000000000000000000d4ffffffff440000000000000000000000013b97c7eefdf9dfb87a1d0000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 37 } }, { "encoding": 38, - "x": 0, - "y": 0, - "width": 10, - "height": 14, - "dx": 10, + "x": 2, + "y": -1, + "width": 27, + "height": 45, + "dx": 31, "glyphBitmap": { - "width": 10, - "height": 14, - "pixelArray": "000063dcf7bf380000000039fff6b5ffef0c0000008fff8c00caff4800000094ff8701e3ff3600000054ffbe36ffd90200000005dcfcc2fd40000000000064ffff6400000000000ad2fffe31009ab817008affcaffc604f4fe0902eeff28b7ff8bffca0021fff40129fcffff670016fffb0c02c3ffff480300bcffc8cbfff1ffff30001baff7f0a8177ef630" + "width": 27, + "height": 45, + "pixelArray": "00000000000000001547707a6e481600000000000000000000000000000000000031affcfffffffffffdba4000000000000000000000000000000173fbffffffffffffffffffffa00900000000000000000000000078ffffffffffffffffffffffffffbb040000000000000000000031fdffffffffffffffffffffffffffff8100000000000000000000c0ffffffffffffd99ac3fffffffffffff713000000000000000024ffffffffffffba06000058ffffffffffff6c00000000000000006fffffffffffff3400000000d1ffffffffffa0000000000000000099ffffffffffef0200000000a4ffffffffffc40000000000000000b6ffffffffffd40000000000afffffffffffc80000000000000000b9ffffffffffd70000000000d0ffffffffffb300000000000000009ffffffffffff4020000000cfcffffffffff88000000000000000076ffffffffffff2100000045ffffffffffff52000000000000000036ffffffffffff5700000098fffffffffff40c000000000000000002e3ffffffffff9d000009efffffffffff910000000000000000000085ffffffffffe7020061fffffffffff719000000000000000000001cf9ffffffffff3903daffffffffff7b00000000000000000000000095ffffffffff915affffffffffc60400000000000000000000000019f6ffffffffe8e4ffffffffed20000000000000000000000000000088fffffffffffffffffffc4400000000000000000000000000000011efffffffffffffffff6200000000000000000000000000000000007dffffffffffffff78000000000000000000000000000000000015d5ffffffffffff9100000000000000000000000000000000000bc9ffffffffffffffa9000000000000457c7c7c7c7c3f00000001a3ffffffffffffffffff3f0000000000a0ffffffffff7b0000005dffffffffffffffffffffd10400000000bdffffffffff6a000015ecffffffffffffffffffffff6900000000deffffffffff47000094fffffffffffe9cffffffffffed12000004fcffffffffff240017f9ffffffffffab05d9ffffffffff9300002cfffffffffff8050073ffffffffffff34004ffffffffffffd2d005effffffffffb90000c8ffffffffffd3000001beffffffffffbe019effffffffff71000bfbffffffffff890000002ffdffffffffff57e8ffffffffff290031ffffffffffff580000000099fffffffffff6ffffffffffc600004effffffffffff310000000016f1ffffffffffffffffffff5800005bffffffffffff1f000000000074ffffffffffffffffffe505000054ffffffffffff28000000000006dbffffffffffffffff6d00000033ffffffffffff5200000000000050fffffffffffffff70d0000000bfdffffffffff9e0000000000049fffffffffffffffffc41f000000b8fffffffffffb3d00000022b7fffffffffffffffffffff9b0520054fffffffffffffba893c1fbffffffffffffffffffffffffffa00001bfffffffffffffffffffffffffffffffd8faffffffffffffa0000020e8ffffffffffffffffffffffffffd4164bf8ffffffffffa000000027d2ffffffffffffffffffffffa80e00003eeaffffffffa0000000000778e0fffffffffffffbb64300000000001ab4ffffffa000000000000003305d7a7d6a451000000000000000000024627d4b" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 38 } }, { "encoding": 39, - "x": 1, - "y": 8, - "width": 3, - "height": 6, - "dx": 5, + "x": 3, + "y": 28, + "width": 7, + "height": 15, + "dx": 17, "glyphBitmap": { - "width": 3, - "height": 6, - "pixelArray": "d9fc0ddce300dcbb00dc9200dc6900040200" + "width": 7, + "height": 15, + "pixelArray": "6bfcfcfcfcfca36cffffffffff796cffffffffff4c6cffffffffff1f6cfffffffff1016cffffffffc4006cffffffff97006cffffffff6a006cffffffff3d006cffffffff11006cffffffe300006cffffffb500006cffffff8800006cffffff5b000002040404020000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 39 } }, { "encoding": 40, - "x": 1, - "y": -3, - "width": 4, - "height": 17, - "dx": 5, + "x": 3, + "y": -11, + "width": 13, + "height": 55, + "dx": 17, "glyphBitmap": { - "width": 4, - "height": 17, - "pixelArray": "001badd402cdffb342ffe00588ff9700afff7700c6ff6300d6ff5900dbff5500dcff5400dcff5400d6ff5800c7ff6100b0ff75008aff980042ffdf0502cfffb0001db1d7" + "width": 13, + "height": 55, + "pixelArray": "000000000000000001205375180000000000000261d5ffffff3000000000001dbeffffffffff30000000001fe3ffffffffffff3000000002c6ffffffffffffff3000000061fffffffffffffbb21d000003defffffffffff6390000000045ffffffffffff7900000000009bfffffffffff50f0000000003e9ffffffffffa6000000000033ffffffffffff6300000000006effffffffffff2f00000000009dffffffffffff0a0000000000c1ffffffffffe8000000000000e4ffffffffffcb000000000003fdffffffffffb2000000000016ffffffffffff9f000000000027ffffffffffff8f000000000038ffffffffffff83000000000046ffffffffffff7a000000000051ffffffffffff7300000000005bffffffffffff6d000000000061ffffffffffff67000000000065ffffffffffff64000000000069ffffffffffff6200000000006affffffffffff6100000000006cffffffffffff6000000000006cffffffffffff6000000000006bffffffffffff6000000000006affffffffffff61000000000068ffffffffffff62000000000064ffffffffffff64000000000060ffffffffffff68000000000058ffffffffffff6e00000000004effffffffffff75000000000042ffffffffffff7e000000000032ffffffffffff88000000000021ffffffffffff9500000000000effffffffffffa6000000000001f6ffffffffffbb000000000000d6ffffffffffd6000000000000b1fffffffffff50100000000008affffffffffff19000000000056ffffffffffff46000000000017ffffffffffff80000000000000c7ffffffffffcd00000000000076ffffffffffff3300000000001dfdffffffffffb8020000000000acffffffffffff9c1e0100000024f9ffffffffffffff300000000079ffffffffffffff30000000000190ffffffffffff3000000000000052e9ffffffff30000000000000000c69b4e6ff3000000000000000000000000803" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 40 } }, { "encoding": 41, - "x": 0, - "y": -3, - "width": 5, - "height": 17, - "dx": 5, + "x": 1, + "y": -11, + "width": 13, + "height": 55, + "dx": 15, "glyphBitmap": { - "width": 5, - "height": 17, - "pixelArray": "71d552000050f8fe3900007affa7000030ffed01000dffff170001fbff2d0000f0ff3a0000edff410000ecff440000edff420000f0ff3a0001faff2e000cffff170032ffee01007cffa7004ff8fe390073d9540000" + "width": 13, + "height": 55, + "pixelArray": "27734d1a00000000000000000050ffffffc9510100000000000050ffffffffffac12000000000050ffffffffffffd4110000000050ffffffffffffffa9000000002fb8feffffffffffff4200000000004ffeffffffffffbe00000000000096ffffffffffff2500000000001dfdffffffffff7b000000000000c7ffffffffffcc00000000000088ffffffffffff16000000000054ffffffffffff50000000000027ffffffffffff7d000000000005feffffffffffa0000000000000e8ffffffffffc4000000000000d3ffffffffffdd000000000000c1fffffffffff3000000000000b1ffffffffffff050000000000a4ffffffffffff1600000000009cffffffffffff25000000000095ffffffffffff3000000000008fffffffffffff3b00000000008affffffffffff40000000000086ffffffffffff45000000000083ffffffffffff49000000000082ffffffffffff4a000000000081ffffffffffff4b000000000081ffffffffffff4c000000000081ffffffffffff4a000000000082ffffffffffff49000000000084ffffffffffff48000000000088ffffffffffff4300000000008dffffffffffff3e000000000094ffffffffffff3700000000009cffffffffffff2b0000000000a5ffffffffffff200000000000b0ffffffffffff0e0000000000bdfffffffffffb010000000000cdffffffffffe9000000000000e1ffffffffffd2000000000001f9ffffffffffb2000000000018ffffffffffff8f000000000042ffffffffffff68000000000074ffffffffffff340000000000afffffffffffef040000000005efffffffffffa3000000000054ffffffffffff51000000000ad9ffffffffffec0700000127bcffffffffffff8600000050ffffffffffffffe90f00000050ffffffffffffff580000000050fffffffffffe73000000000050ffffffffde3e00000000000050ffe0ad5c060000000000000005070000000000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 41 } }, { "encoding": 42, - "x": 0, - "y": 8, - "width": 7, - "height": 6, - "dx": 7, + "x": 2, + "y": 24, + "width": 19, + "height": 19, + "dx": 22, "glyphBitmap": { - "width": 7, - "height": 6, - "pixelArray": "000018fc890000018e2bfc78723d19e6fdfefafe780004a1fff62600002cf88ff698000036c40f878402" + "width": 19, + "height": 19, + "pixelArray": "0000000000000cfcfcfcfcfc4200000000000000000000000000f3ffffffff2a00000000000000000000000000d9ffffffff1000000000000000031400000000bffffffff7010000000710000048f27b0b0000a6ffffffdd0000025be0800000a8ffffe767058cffffffc40044ceffffe00211f8ffffffffd9b4ffffffccb9ffffffffff4368ffffffffffffffffffffffffffffffffffa42890ecfffffffffffffffffffffffffffcb04a00000754b6fdffffffffffffffffd77518000000000000001eeafffffffffffe4a0100000000000000000078ffffffffffffffaa01000000000000000034fbffffffceffffffff64000000000000000cdafffffff618d9fffffff6290000000000009bffffffff8e005fffffffffd1080000000052fffffffff91a0005dfffffffff930000000023b3ffffff9600000067ffffffd4420000000000004cddfb1f00000007e4ef6d040000000000000000084b00000000003f150000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 42 } }, { "encoding": 43, - "x": 0, - "y": 3, - "width": 7, - "height": 8, - "dx": 7, + "x": 1, + "y": 10, + "width": 21, + "height": 23, + "dx": 23, "glyphBitmap": { - "width": 7, - "height": 8, - "pixelArray": "000028fc7b0000000028ff7c0000589cacffcd9c9590fffffffffff403042cff7f0404000028ff7c0000000028ff7c000000000104020000" + "width": 21, + "height": 23, + "pixelArray": "0000000000000020fcfcfcfcf500000000000000000000000000000020fffffffff800000000000000000000000000000020fffffffff800000000000000000000000000000020fffffffff800000000000000000000000000000020fffffffff800000000000000000000000000000020fffffffff800000000000000000000000000000020fffffffff80000000000000000080c0c0c0c0c0c2bfffffffff90c0c0c0c0c0c0c09a0ffffffffffffffffffffffffffffffffffffffb0a0ffffffffffffffffffffffffffffffffffffffb0a0ffffffffffffffffffffffffffffffffffffffb0a0ffffffffffffffffffffffffffffffffffffffb0a0ffffffffffffffffffffffffffffffffffffffb00304040404040424fffffffff904040404040404030000000000000020fffffffff800000000000000000000000000000020fffffffff800000000000000000000000000000020fffffffff800000000000000000000000000000020fffffffff800000000000000000000000000000020fffffffff800000000000000000000000000000020fffffffff800000000000000000000000000000020fffffffff800000000000000000000000000000020fffffffff80000000000000000000000000000000104040404040000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 43 } }, { "encoding": 44, - "x": 0, - "y": -3, - "width": 3, - "height": 6, - "dx": 4, + "x": 2, + "y": -8, + "width": 8, + "height": 15, + "dx": 11, "glyphBitmap": { - "width": 3, - "height": 6, - "pixelArray": "0c242354fff454fff4003ae016e16e022c00" + "width": 8, + "height": 15, + "pixelArray": "e5fcfcfcfcfcfc38e8ffffffffffff38e8ffffffffffff38e8ffffffffffff38e8ffffffffffff38e8ffffffffffff38e8ffffffffffff3800000021ffffff2b00000051ffffff0c000002c1ffffcd00000b9cffffff6d0048e0ffffffd008004cffffffd31d00000bf9e178090000000023020000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 44 } }, { "encoding": 45, - "x": 0, - "y": 4, - "width": 6, - "height": 3, - "dx": 6, + "x": 2, + "y": 13, + "width": 14, + "height": 7, + "dx": 19, "glyphBitmap": { - "width": 6, - "height": 3, - "pixelArray": "089c9c9c9c0a0cffffffff10010404040401" + "width": 14, + "height": 7, + "pixelArray": "010c0c0c0c0c0c0c0c0c0c0c0c0a08ffffffffffffffffffffffffc408ffffffffffffffffffffffffc408ffffffffffffffffffffffffc408ffffffffffffffffffffffffc408ffffffffffffffffffffffffc40104040404040404040404040404" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 45 } }, { "encoding": 46, - "x": 0, + "x": 2, "y": 0, - "width": 4, - "height": 3, - "dx": 4, + "width": 8, + "height": 7, + "dx": 11, "glyphBitmap": { - "width": 4, - "height": 3, - "pixelArray": "0824240238ffff0838ffff08" + "width": 8, + "height": 7, + "pixelArray": "8efcfcfcfcfcfc7790ffffffffffff7890ffffffffffff7890ffffffffffff7890ffffffffffff7890ffffffffffff7890ffffffffffff78" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 46 } }, { "encoding": 47, - "x": 0, + "x": 1, "y": 0, - "width": 7, - "height": 14, - "dx": 7, + "width": 19, + "height": 43, + "dx": 21, "glyphBitmap": { - "width": 7, - "height": 14, - "pixelArray": "00000000a1f20800000002eab60000000032ff6e0000000079ff2700000000c0df010000000dfb98000000004fff500000000096fb0e00000000ddc10000000024ff7a000000006cff3200000000b3ea0200000006f4a30000000041ff5c00000000" + "width": 19, + "height": 43, + "pixelArray": "0000000000000000000000001cfcfcfcfcea0300000000000000000000000064ffffffffa800000000000000000000000000acffffffff6000000000000000000000000005f1ffffffff190000000000000000000000003dffffffffcf0000000000000000000000000085ffffffff8700000000000000000000000000ceffffffff3f00000000000000000000000018fffffffff2050000000000000000000000005effffffffae00000000000000000000000000a6ffffffff6600000000000000000000000003edffffffff1e00000000000000000000000037ffffffffd5000000000000000000000000007fffffffff8d00000000000000000000000000c8ffffffff4500000000000000000000000013fefffffff50800000000000000000000000058ffffffffb400000000000000000000000000a1ffffffff6c00000000000000000000000002e8ffffffff2300000000000000000000000031ffffffffdb0000000000000000000000000079ffffffff9300000000000000000000000000c2ffffffff4b0000000000000000000000000ffcfffffff80b00000000000000000000000052ffffffffba000000000000000000000000009bffffffff7200000000000000000000000001e3ffffffff290000000000000000000000002bffffffffe10100000000000000000000000074ffffffff9900000000000000000000000000bcffffffff500000000000000000000000000cf9fffffffb0e0000000000000000000000004dffffffffc00000000000000000000000000095ffffffff7700000000000000000000000001deffffffff2f00000000000000000000000025ffffffffe7010000000000000000000000006effffffff9f00000000000000000000000000b6ffffffff5600000000000000000000000009f6fffffffd1200000000000000000000000047ffffffffc6000000000000000000000000008fffffffff7d00000000000000000000000000d7ffffffff3500000000000000000000000020ffffffffeb0200000000000000000000000068ffffffffa400000000000000000000000000b0ffffffff5c00000000000000000000000006f3ffffffff16000000000000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 47 } }, { "encoding": 48, - "x": 0, - "y": 0, - "width": 8, - "height": 14, - "dx": 9, + "x": 2, + "y": -1, + "width": 23, + "height": 45, + "dx": 27, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "00098de6f9d25900009bffebb2feff480bfaff5200a6ffb734ffff27007cffe33cffff240078ffec3cffff240078ffec3cffff240078ffec3cffff240078ffec3cffff240078ffec3cffff240078ffec35ffff29007dffe40efbff5700abffb80099ffebaffeff4a00098ee9fdd55c00" + "width": 23, + "height": 45, + "pixelArray": "00000000000000032f56727a73572f030000000000000000000000001d92ecffffffffffffffed941e00000000000000000066f6fffffffffffffffffffffff769000000000000007cffffffffffffffffffffffffffffff8000000000004cffffffffffffffffffffffffffffffffff5100000005ddffffffffffffffffffffffffffffffffffe107000065fffffffffffffffbaf88a6f6ffffffffffffff6e0000c3fffffffffffff3380000002bf2ffffffffffffce0013fdffffffffffff7f000000000075ffffffffffffff1d4affffffffffffff2a000000000018ffffffffffffff596cfffffffffffff702000000000000e9ffffffffffff7b8dffffffffffffdd00000000000000ceffffffffffff9d9cffffffffffffd300000000000000c0ffffffffffffaba0ffffffffffffd000000000000000bdffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb0a0ffffffffffffd000000000000000bcffffffffffffb09cffffffffffffd300000000000000bfffffffffffffac8fffffffffffffe100000000000000ceffffffffffff9f6cfffffffffffff905000000000001ebffffffffffff7c48ffffffffffffff34000000000021ffffffffffffff5911fbffffffffffff9000000000007dffffffffffffff1d00bbfffffffffffff93f00000033f3ffffffffffffcb000059fffffffffffffffdab80a5faffffffffffffff69000002cfffffffffffffffffffffffffffffffffffdb050000003afcffffffffffffffffffffffffffffffff47000000000063feffffffffffffffffffffffffffff710000000000000050eefffffffffffffffffffffff35c0000000000000000001484e4ffffffffffffffe88b18000000000000000000000000022451757e7654270300000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 48 } }, { "encoding": 49, - "x": 1, + "x": 4, "y": 0, - "width": 6, - "height": 14, - "dx": 9, + "width": 15, + "height": 43, + "dx": 27, "glyphBitmap": { - "width": 6, - "height": 14, - "pixelArray": "00056bf6fc0c4cdcffffff0c88fde1ffff0c210f50ffff0c000050ffff0c000050ffff0c000050ffff0c000050ffff0c000050ffff0c000050ffff0c000050ffff0c000050ffff0c000050ffff0c000050ffff0c" + "width": 15, + "height": 43, + "pixelArray": "000000000000000046f6fcfcfcfcd50000000000000172fcffffffffffd8000000000039c7ffffffffffffffd800000146b5ffffffffffffffffffd81573d6ffffffffffffffffffffffd86cffffffffffffffffffffffffffd86cffffffffffffffffffffffffffd86cffffffffffffffffffffffffffd86cfffffffffecaceffffffffffffd86cffd99552120084ffffffffffffd8211e000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd80000000000000084ffffffffffffd8" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 49 } }, { "encoding": 50, - "x": 0, + "x": 2, "y": 0, - "width": 8, - "height": 14, - "dx": 9, + "width": 23, + "height": 44, + "dx": 27, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "000685e1fadb74020089fff6b1f9ff6d02f0ff700087ffce1cffff390064fff317a0a01e008bffe9000000000ceaffaa000000008cffff380000002bfbff9d00000001c0ffe7100000005affff540000000fe7ffb0010000008ffff21b00000023fcffd99c9c9c603cffffffffffff9c" + "width": 23, + "height": 44, + "pixelArray": "00000000000000001f4a6c7977633c120000000000000000000000000c78d9fffffffffffffffebb5a0200000000000000003fe4ffffffffffffffffffffffffc22400000000000048faffffffffffffffffffffffffffffeb2a000000001bf0ffffffffffffffffffffffffffffffffd9070000009dffffffffffffffffffffffffffffffffffff7700001cfaffffffffffffffd08e95dfffffffffffffffea04007cffffffffffffff8301000006acffffffffffffff4200c6ffffffffffffcd020000000014f8ffffffffffff8402f9ffffffffffff6a000000000000b8ffffffffffffa91bffffffffffffff2d00000000000090ffffffffffffca39ffffffffffffff0a0000000000007fffffffffffffd64bfffffffffffff70000000000000086ffffffffffffd350fffffffffffff100000000000000a1ffffffffffffbe50fffffffffffff000000000000000d2ffffffffffffa10f3030303030302d00000000000028ffffffffffffff71000000000000000000000000000096ffffffffffffff29000000000000000000000000001df9ffffffffffffd10000000000000000000000000000a1ffffffffffffff620000000000000000000000000040ffffffffffffffdd050000000000000000000000000bdcffffffffffffff540000000000000000000000000090ffffffffffffffba0100000000000000000000000039fefffffffffffff42200000000000000000000000006d4ffffffffffffff6c000000000000000000000000007dffffffffffffffbe0200000000000000000000000028f9fffffffffffff52100000000000000000000000002c3ffffffffffffff6d0000000000000000000000000067ffffffffffffffc4020000000000000000000000001af1fffffffffffff72600000000000000000000000000adffffffffffffff750000000000000000000000000051ffffffffffffffca040000000000000000000000000fe6fffffffffffffa2c0000000000000000000000000097ffffffffffffff7e000000000000000000000000003dffffffffffffffd10600000000000000000000000007d7fffffffffffffc330000000000000000000000000081ffffffffffffff86000000000000000000000000002bfaffffffffffffd70800000000000000000000000002c6fffffffffffffe390000000000000000000000000067fffffffffffffffffcfcfcfcfcfcfcfcfcfcfcfcba0098ffffffffffffffffffffffffffffffffffffffffbc0098ffffffffffffffffffffffffffffffffffffffffbc0098ffffffffffffffffffffffffffffffffffffffffbc0098ffffffffffffffffffffffffffffffffffffffffbc0098ffffffffffffffffffffffffffffffffffffffffbc00" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 50 } }, { "encoding": 51, - "x": 0, - "y": 0, - "width": 8, - "height": 14, - "dx": 9, + "x": 2, + "y": -1, + "width": 23, + "height": 45, + "dx": 27, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "001098e9f8d15b0000b8ffe4b5feff4f25ffff3a00a7ffb84cffff11007dffdc25747406008affc8000000001cd8ff750000006bffff940300000046c6ffea2a0000000001baffa41d5c5c050080ffd84affff170080ffd821ffff6106c0ffaa00c2fffffbffff4b0017a4eefdd76300" + "width": 23, + "height": 45, + "pixelArray": "000000000000000a335b757a7050290300000000000000000000000040a8f7ffffffffffffffe79024000000000000000012a3fffffffffffffffffffffffff87e04000000000017d7ffffffffffffffffffffffffffffffad0400000002c1ffffffffffffffffffffffffffffffffff8500000061fffffffffffffffffffffffffffffffffffffb2c0001dfffffffffffffffe59b88aaf6ffffffffffffff9f0039ffffffffffffffba0c0000001eddfffffffffffff20980ffffffffffffff23000000000054ffffffffffffff3ba7ffffffffffffce00000000000008fcffffffffffff62cbffffffffffffa000000000000000d8ffffffffffff83d9ffffffffffff8b00000000000000c3ffffffffffff8edcffffffffffff8100000000000000bfffffffffffff88bedcdcdcdcdcdc6e00000000000000d3ffffffffffff6d000000000000000000000000000005f5ffffffffffff42000000000000000000000000000044fffffffffffff5080000000000000000000000000007c7ffffffffffff970000000000000000000000021b58d1fffffffffffff41f00000000000000000000d5fffffffffffffffffffd540000000000000000000000d8fffffffffffffffff152000000000000000000000000d8fffffffffffffc8a1600000000000000000000000000d8ffffffffffffffe35a00000000000000000000000000d8ffffffffffffffffff90010000000000000000000000d8ffffffffffffffffffff7400000000000000000000000408297af3fffffffffffffa23000000000000000000000000000037f9ffffffffffff9200000000000000000000000000000093ffffffffffffeb03000000000000000000000000000036ffffffffffffff2c000000000000000000000000000005f7ffffffffffff5d000000000000000000000000000000d8ffffffffffff775a6868686868683400000000000000c3ffffffffffff8bdcffffffffffff8100000000000000beffffffffffff8edaffffffffffff8700000000000000c2ffffffffffff87d0ffffffffffff9700000000000000cdffffffffffff70b3ffffffffffffb900000000000000e7ffffffffffff5191ffffffffffffe601000000000013ffffffffffffff2f62ffffffffffffff3400000000005fffffffffffffec0318ffffffffffffffc80e00000021e2ffffffffffffa70000c0ffffffffffffffe99a80a3f4ffffffffffffff47000040ffffffffffffffffffffffffffffffffffffca01000000affffffffffffffffffffffffffffffffffe3c0000000012d4ffffffffffffffffffffffffffffff7200000000000012b4fffffffffffffffffffffffff6630000000000000000014ab3fbffffffffffffffed921d0000000000000000000000000c355f787e74562f0300000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 51 } }, { "encoding": 52, - "x": 0, + "x": 1, "y": 0, - "width": 9, - "height": 14, - "dx": 9, + "width": 25, + "height": 43, + "dx": 27, "glyphBitmap": { - "width": 9, - "height": 14, - "pixelArray": "0000001dfafcdd00000000007fffffe00000000003e3ffffe0000000004bffc7ffe000000000b0ff75ffe00000001afcc858ffe00000007bff7558ffe0000002e0ff2258ffe0000045ffcf0058ffe0000064fffffcfefffffc4b63fcfcfcfefffffc4b0000000058ffe000000000000058ffe000000000000058ffe00000" + "width": 25, + "height": 43, + "pixelArray": "00000000000000000000006dfcfcfcfcfcfcfcfc6b000000000000000000000000000002dbffffffffffffffff6c00000000000000000000000000004affffffffffffffffff6c0000000000000000000000000000b8ffffffffffffffffff6c0000000000000000000000000028ffffffffffffffffffff6c0000000000000000000000000094ffffffffffffffffffff6c0000000000000000000000000ff4ffffffffffffffffffff6c00000000000000000000000070ffffffffffffffffffffff6c000000000000000000000003ddffffffffe1ffffffffffff6c00000000000000000000004cfffffffff990ffffffffffff6c0000000000000000000000baffffffffaf80ffffffffffff6c000000000000000000002affffffffff5580ffffffffffff6c0000000000000000000096fffffffff30980ffffffffffff6c00000000000000000010f5ffffffffa20080ffffffffffff6c00000000000000000072ffffffffff480080ffffffffffff6c000000000000000003deffffffffeb050080ffffffffffff6c00000000000000004effffffffff95000080ffffffffffff6c0000000000000000bcffffffffff3b000080ffffffffffff6c000000000000002bffffffffffe102000080ffffffffffff6c0000000000000098ffffffffff8800000080ffffffffffff6c00000000000011f6ffffffffff2e00000080ffffffffffff6c00000000000074ffffffffffd50100000080ffffffffffff6c000000000003e0ffffffffff7b0000000080ffffffffffff6c000000000050ffffffffffff220000000080ffffffffffff6c0000000000beffffffffffc8000000000080ffffffffffff6c0000000016ffffffffffff6e000000000080ffffffffffff6c000000001cfffffffffffffefcfcfcfcfcfefffffffffffffefcfcfcdd1cffffffffffffffffffffffffffffffffffffffffffffffe01cffffffffffffffffffffffffffffffffffffffffffffffe01cffffffffffffffffffffffffffffffffffffffffffffffe01cffffffffffffffffffffffffffffffffffffffffffffffe01cffffffffffffffffffffffffffffffffffffffffffffffe00104040404040404040404040482ffffffffffff6f040404040000000000000000000000000080ffffffffffff6c000000000000000000000000000000000080ffffffffffff6c000000000000000000000000000000000080ffffffffffff6c000000000000000000000000000000000080ffffffffffff6c000000000000000000000000000000000080ffffffffffff6c000000000000000000000000000000000080ffffffffffff6c000000000000000000000000000000000080ffffffffffff6c000000000000000000000000000000000080ffffffffffff6c000000000000000000000000000000000080ffffffffffff6c000000000000000000000000000000000080ffffffffffff6c00000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 52 } }, { "encoding": 53, - "x": 0, - "y": 0, - "width": 8, - "height": 14, - "dx": 9, + "x": 2, + "y": -1, + "width": 23, + "height": 44, + "dx": 27, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "00dbfcfcfcfcfc6300e2ffb2a4a4a44100e6ff200000000000e9ff170000000000edff0e0000000000f0ffabf3ea890300f4ffebb0fbff6900d0d836008fffc2000000000064ffe400000000005effe926fcfc270064ffd80dfeff4f008affa800b5ffe7a8f8ff440018aef0fdd96100" + "width": 23, + "height": 44, + "pixelArray": "0075fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc0800007affffffffffffffffffffffffffffffffffffff0800007effffffffffffffffffffffffffffffffffffff08000081ffffffffffffffffffffffffffffffffffffff08000085ffffffffffffffffffffffffffffffffffffff08000089ffffffffffffffffffffffffffffffffffffff0800008dffffffffffffffffffffffffffffffffffffff08000090ffffffffffcf0404040404040404040404040401000094ffffffffffc30000000000000000000000000000000098ffffffffffb8000000000000000000000000000000009bffffffffffad000000000000000000000000000000009fffffffffffa100000000000000000000000000000000a3ffffffffff9600000000000000000000000000000000a6ffffffffff8b00000000000000000000000000000000aaffffffffff8000000000060801000000000000000000aeffffffffff74055fb4e5fffff5cb8c2a000000000000b1ffffffffff98d5fffffffffffffffffe940700000000b5ffffffffffffffffffffffffffffffffffb704000000b9ffffffffffffffffffffffffffffffffffff7f000000bcfffffffffffffffffffffffffffffffffffff8170000c0ffffffffffffffb33308258bffffffffffffff790000c4ffffffffffffb0020000000080ffffffffffffdb0000c8fffffffffff91f000000000011faffffffffffff2000b5e4e4e4e4e49a00000000000000caffffffffffff54000000000000000000000000000000a0ffffffffffff7400000000000000000000000000000086ffffffffffff8e00000000000000000000000000000077ffffffffffffa600000000000000000000000000000070ffffffffffffae0000000000000000000000000000006dffffffffffffae0000000000000000000000000000006effffffffffffa915303030303030260000000000000070ffffffffffff9a6dffffffffffffcb0000000000000075ffffffffffff8c63ffffffffffffd20000000000000080ffffffffffff754bffffffffffffe3000000000000008fffffffffffff5333fffffffffffffd08000000000000aeffffffffffff230fffffffffffffff3c000000000002e8ffffffffffe60100d3ffffffffffff91000000000040ffffffffffffa300007efffffffffffffc450000001bd3ffffffffffff49000017f9ffffffffffffffc191a6f4ffffffffffffd00200000090ffffffffffffffffffffffffffffffffff3e000000000cd0ffffffffffffffffffffffffffffff7c00000000000015befffffffffffffffffffffffff16300000000000000000259c6feffffffffffffffed931c000000000000000000000000123f63777e76552b0500000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 53 } }, { "encoding": 54, - "x": 0, - "y": 0, - "width": 9, - "height": 14, - "dx": 9, + "x": 2, + "y": -1, + "width": 24, + "height": 45, + "dx": 27, "glyphBitmap": { - "width": 9, - "height": 14, - "pixelArray": "000276dff9dd820400006afff9aff4ff7c0000d8ff7b007affd5000fffff4c0031887f0022ffff3d000000000024ffff5f899244000024fffffcffffff5a0024ffff9310afffcd0024ffff3c005dfffc0323ffff3c0052ffff0913ffff420057fff60100dbff740086ffc1000068fff5a9f7ff5400000173e1fddd690000" + "width": 24, + "height": 45, + "pixelArray": "0000000000000000103d677878653f1500000000000000000000000000004bbdfefffffffffffffec1600200000000000000000014abffffffffffffffffffffffffc8250000000000000013d7ffffffffffffffffffffffffffffe523000000000000afffffffffffffffffffffffffffffffffd104000000004bffffffffffffffffffffffffffffffffffff6a00000000cbffffffffffffffd99090cbffffffffffffffd40000002cffffffffffffffa70500000177ffffffffffffff2a000076fffffffffffff00e0000000002e1ffffffffffff630000b8ffffffffffffa6000000000000a0ffffffffffff8b0001ecffffffffffff6c0000000000007bffffffffffffac0011ffffffffffffff4700000000000068ffffffffffffb9002bffffffffffffff2d0000000000001f5050505050503b003bffffffffffffff1e0000000000000000000000000000004affffffffffffff140000000000000000000000000000004fffffffffffffff1100000000000000000000000000000050ffffffffffffff1000000000000000000000000000000050ffffffffffffff1000000001090600000000000000000050ffffffffffffff100a6dbeefffffe7b66409000000000050ffffffffffffff34d8ffffffffffffffffe8420000000050ffffffffffffffe7fffffffffffffffffffffd5200000050fffffffffffffffffffffffffffffffffffffff123000050ffffffffffffffffffffffffffffffffffffffffa0000050ffffffffffffffffd44d0e135be7fffffffffffffa190050ffffffffffffffce0b0000000036ffffffffffffff600050ffffffffffffff2d000000000000c8ffffffffffffa10050ffffffffffffff1000000000000082ffffffffffffcf0050ffffffffffffff1000000000000062ffffffffffffeb0050ffffffffffffff1000000000000051ffffffffffffff0750ffffffffffffff1000000000000048ffffffffffffff104fffffffffffffff1000000000000046ffffffffffffff1247ffffffffffffff1000000000000047ffffffffffffff0b33ffffffffffffff140000000000004efffffffffffff5011bffffffffffffff2400000000000060ffffffffffffda0002f5ffffffffffff4300000000000080ffffffffffffbe0000c2ffffffffffff7c000000000000baffffffffffff8e000078ffffffffffffda050000000018faffffffffffff4d000025ffffffffffffff8c02000005b4ffffffffffffee0a000000bcffffffffffffffcf898edaffffffffffffff8d0000000038fefffffffffffffffffffffffffffffffff92100000000008affffffffffffffffffffffffffffffff8100000000000006baffffffffffffffffffffffffffffb304000000000000000895feffffffffffffffffffffff97060000000000000000000039b5fcfffffffffffffab33d0000000000000000000000000000113f697c7c67430e0000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 54 } }, { "encoding": 55, - "x": 0, + "x": 2, "y": 0, - "width": 7, - "height": 14, - "dx": 9, + "width": 19, + "height": 43, + "dx": 27, "glyphBitmap": { - "width": 7, - "height": 14, - "pixelArray": "53fcfcfcfcfc9e36a4a4a4e8ff9100000000e1ff5c00000019ffff2600000050ffee0100000088ffb800000000bfff8200000004f4ff4b0000002fffff1500000066ffde000000009effa700000000d6ff7000000010ffff3a00000045fffb090000" + "width": 19, + "height": 43, + "pixelArray": "e5fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfca6e8ffffffffffffffffffffffffffffffffffa8e8ffffffffffffffffffffffffffffffffffa8e8ffffffffffffffffffffffffffffffffffa8e8ffffffffffffffffffffffffffffffffff871314141414141414141414b2ffffffffffff4f0000000000000000000000e1ffffffffffff18000000000000000000001affffffffffffe0000000000000000000000052ffffffffffffa900000000000000000000008affffffffffff720000000000000000000000c3ffffffffffff3a0000000000000000000005f7fffffffffffb090000000000000000000034ffffffffffffcb00000000000000000000006cffffffffffff940000000000000000000000a4ffffffffffff5c0000000000000000000000ddffffffffffff250000000000000000000016ffffffffffffed01000000000000000000004effffffffffffb6000000000000000000000086ffffffffffff7e0000000000000000000000bfffffffffffff470000000000000000000004f4ffffffffffff11000000000000000000002fffffffffffffd8000000000000000000000068ffffffffffffa10000000000000000000000a0ffffffffffff690000000000000000000000d9ffffffffffff320000000000000000000013fffffffffffff605000000000000000000004affffffffffffc3000000000000000000000082ffffffffffff8b0000000000000000000000baffffffffffff540000000000000000000002f1ffffffffffff1c000000000000000000002bffffffffffffe5000000000000000000000064ffffffffffffae00000000000000000000009cffffffffffff760000000000000000000000d5ffffffffffff3f0000000000000000000010fffffffffffffd0b0000000000000000000045ffffffffffffd000000000000000000000007effffffffffff980000000000000000000000b6ffffffffffff610000000000000000000002eeffffffffffff290000000000000000000027fffffffffffff0020000000000000000000060ffffffffffffba000000000000000000000098ffffffffffff830000000000000000000000d0ffffffffffff4c0000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 55 } }, { "encoding": 56, - "x": 0, - "y": 0, - "width": 8, - "height": 14, - "dx": 9, + "x": 2, + "y": -1, + "width": 23, + "height": 45, + "dx": 27, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "000c95e9f8cb4400009effe9befff92206f6ff4b01d1ff771cffff2300a7ff980cfeff3300b6ff8600b9ff8b1af1ff390020f1ffffff92000088ffe7b9ffe81f1afdff3600b5ff974cfffb03007dffcf4dfff801007affd128ffff2600a8ffab01c2ffdcaeffff480016a4effcd45d00" + "width": 23, + "height": 45, + "pixelArray": "0000000000000008315b757a6e481c000000000000000000000000002897f1ffffffffffffffcc670500000000000000000171f8ffffffffffffffffffffffcf26000000000000008cffffffffffffffffffffffffffffea24000000000053ffffffffffffffffffffffffffffffffcc0200000007defffffffffffffbb29cdcffffffffffffff5b0000005cfffffffffffff232000005aaffffffffffffd3000000adffffffffffff7a0000000013f6ffffffffffff220001f2ffffffffffff200000000000b0ffffffffffff660016ffffffffffffed0100000000007effffffffffff890036ffffffffffffcc0000000000005dffffffffffffaa0045ffffffffffffc200000000000053ffffffffffffb80045ffffffffffffc700000000000058ffffffffffffb90032ffffffffffffd600000000000066ffffffffffffa70014fffffffffffff101000000000085ffffffffffff8a0000e2ffffffffffff1d0000000000abffffffffffff5900009affffffffffff650000000005ebfffffffffffd1600003bffffffffffffd50700000061ffffffffffffb700000001beffffffffffffaf200655f2ffffffffffff3e0000000028f5ffffffffffffffffffffffffffffff9f00000000000052fcffffffffffffffffffffffffffc80a0000000000000054feffffffffffffffffffffffc50e0000000000000020c8fffffffffffffffffffffffff76701000000000027e8ffffffffffffffffffffffffffffff83000000000cdbffffffffffffffffffffffffffffffffff5a00000086fffffffffffffe821f0a42d0ffffffffffffef10000cf4ffffffffffff750000000012e5ffffffffffff7a0058ffffffffffffe60500000000006fffffffffffffd50097ffffffffffff970000000000001dffffffffffffff15c3ffffffffffff6400000000000001ebffffffffffff45ddffffffffffff4600000000000000ceffffffffffff60eaffffffffffff3500000000000000bdffffffffffff6ee8ffffffffffff3200000000000000baffffffffffff6cddffffffffffff3800000000000000bfffffffffffff62bfffffffffffff4b00000000000000cfffffffffffff459fffffffffffff7000000000000002f2ffffffffffff266effffffffffffac0000000000002efffffffffffff20624fffffffffffff919000000000090ffffffffffffae0000d3ffffffffffffc31200000055fcffffffffffff5f00005bffffffffffffffeea692c5ffffffffffffffe206000003c3ffffffffffffffffffffffffffffffffff530000000019deffffffffffffffffffffffffffffff8500000000000018bdfffffffffffffffffffffffff86d01000000000000000151b8fcffffffffffffffe8911f0000000000000000000000000f3862787e734f260300000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 56 } }, { "encoding": 57, - "x": 0, - "y": 0, - "width": 8, - "height": 14, - "dx": 9, + "x": 2, + "y": -1, + "width": 23, + "height": 45, + "dx": 27, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "00058ae5f8ca4400008fffeab9fffb2e0af6ff5200b8ff9d34ffff200084ffd246ffff19007cffe33effff24007cffe413fdff720fbdffe4009cfffffffeffe40005699f818effe400000000007effe11aa0a014008fffcd10feff4c04caff9900b6fffbe8fffc310014a1ecfcd45000" + "width": 23, + "height": 45, + "pixelArray": "00000000000000032e5b737b6f521f00000000000000000000000000158ae7ffffffffffffffd169050000000000000000004fedffffffffffffffffffffffd127000000000000005dfeffffffffffffffffffffffffffee2d000000000032faffffffffffffffffffffffffffffffe10e00000001c7ffffffffffffffffffffffffffffffffff8d0000003dfffffffffffffff8ab89b8fffffffffffffff5120000aafffffffffffff42e00000050feffffffffffff78000af7ffffffffffff7700000000009fffffffffffffd00041ffffffffffffff2000000000003fffffffffffffff1472ffffffffffffe60000000000000afdffffffffffff458fffffffffffffc600000000000000e6ffffffffffff64abffffffffffffb200000000000000d5ffffffffffff82c0ffffffffffffab00000000000000d1ffffffffffff95c7ffffffffffffa800000000000000d0ffffffffffff9bc5ffffffffffffa900000000000000d0ffffffffffff9cb6ffffffffffffb000000000000000d0ffffffffffff9ca4ffffffffffffc100000000000000d0ffffffffffff9c86ffffffffffffe400000000000000d0ffffffffffff9c55ffffffffffffff1d000000000002ddffffffffffff9c13fdffffffffffff90000000000079ffffffffffffff9c00c0ffffffffffffff831d022997ffffffffffffffff9c0053ffffffffffffffffffffffffffffffffffffffff9c0001bfffffffffffffffffffffffffffffffffffffff9c000020e8fffffffffffffffffffffef2ffffffffffff9c00000022c1fffffffffffffffffa5ed0ffffffffffff9c000000000250abdffffffeda972800d0ffffffffffff9c000000000000000008120700000000d0ffffffffffff9c000000000000000000000000000000d0ffffffffffff9c000000000000000000000000000000d1ffffffffffff9b000000000000000000000000000000d6ffffffffffff96000000000000000000000000000000dcffffffffffff87193838383838382600000000000000efffffffffffff776effffffffffffb20000000000000affffffffffffff5e61ffffffffffffc500000000000027ffffffffffffff3941ffffffffffffeb0100000000005dfffffffffffffa0b1affffffffffffff2d0000000000b0ffffffffffffc00001e1ffffffffffffb80800000055ffffffffffffff7400008dffffffffffffffe19680b1fffffffffffffffa18000029fcffffffffffffffffffffffffffffffffff940000000090ffffffffffffffffffffffffffffffffe9100000000009bdfffffffffffffffffffffffffffff73e0000000000000ba2ffffffffffffffffffffffffda3800000000000000000040acf8ffffffffffffffe07a0a0000000000000000000000000c385e797e734f240100000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 57 } }, { "encoding": 58, - "x": 1, - "y": 0, - "width": 3, - "height": 9, - "dx": 4, + "x": 3, + "y": 3, + "width": 8, + "height": 25, + "dx": 12, "glyphBitmap": { - "width": 3, - "height": 9, - "pixelArray": "959c2cf4ff48040402000000000000000000959c2cf4ff48040402" + "width": 8, + "height": 25, + "pixelArray": "bafcfcfcfcfcfc3fbcffffffffffff40bcffffffffffff40bcffffffffffff40bcffffffffffff40bcffffffffffff40bcffffffffffff400304040404040401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bafcfcfcfcfcfc3fbcffffffffffff40bcffffffffffff40bcffffffffffff40bcffffffffffff40bcffffffffffff40bcffffffffffff400304040404040401" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 58 } }, { "encoding": 59, - "x": 1, - "y": -2, - "width": 3, - "height": 12, - "dx": 4, + "x": 3, + "y": -4, + "width": 8, + "height": 35, + "dx": 13, "glyphBitmap": { - "width": 3, - "height": 12, - "pixelArray": "f5fc47f8ff482b2c0d00000000000000000023240cf8ff54f8ff5407db42a9cc08150200" + "width": 8, + "height": 35, + "pixelArray": "c9fcfcfcfcfcfc38ccffffffffffff38ccffffffffffff38ccffffffffffff38ccffffffffffff38ccffffffffffff38ccffffffffffff3804040404040404010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1fcfcfcfcfcfc5bc4ffffffffffff5cc4ffffffffffff5cc4ffffffffffff5cc4ffffffffffff5cc4ffffffffffff5cc4ffffffffffff5b0404040affffff5000000037ffffff32000002b1fffff306175bc2ffffff9b0043ffffffffe71b0006f2ffffc9280000005e673101000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 59 } }, { "encoding": 60, - "x": 0, - "y": 0, - "width": 6, - "height": 11, - "dx": 7, + "x": 1, + "y": 3, + "width": 17, + "height": 29, + "dx": 20, "glyphBitmap": { - "width": 6, - "height": 11, - "pixelArray": "000000000005000000016689000016b2ff94004be9ffc8235ffffd8205007cff940100004ffaffa810000030d4ffe03700000990ff94000000004579000000000001" + "width": 17, + "height": 29, + "pixelArray": "0000000000000000000000000000000d2800000000000000000000000000003add640000000000000000000000000584fdff64000000000000000000000028ccffffff64000000000000000000016bf6ffffffff64000000000000000019b7ffffffffffff640000000000000052ecffffffffffffff6400000000000e9fffffffffffffffffd224000000003ddfffffffffffffffff8f080000000687feffffffffffffffe746000000002aceffffffffffffffffb0140000000040f7fffffffffffffff56501000000000064ffffffffffffffcc260000000000000064fffffffffffe8606000000000000000064ffffffffff4c0000000000000000000064ffffffffffde3900000000000000000064fffffffffffffc7d030000000000000063ffffffffffffffffc31f0000000000000687fefffffffffffffff058000000000000003cdfffffffffffffffffa10d0000000000000e9dffffffffffffffffdd370000000000000051ebfffffffffffffffc7c0300000000000018b4ffffffffffffffff60000000000000000166f5ffffffffffff6400000000000000000024c7ffffffffff6400000000000000000000047dfcffffff6400000000000000000000000035d8ffff64000000000000000000000000000a93ff64000000000000000000000000000000474c" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 60 } }, { "encoding": 61, - "x": 0, - "y": 4, - "width": 7, - "height": 6, - "dx": 7, + "x": 3, + "y": 13, + "width": 17, + "height": 16, + "dx": 23, "glyphBitmap": { - "width": 7, - "height": 6, - "pixelArray": "039c9c9c9c9c3104ffffffffff5001040404040402039c9c9c9c9c3104ffffffffff5001040404040402" + "width": 17, + "height": 16, + "pixelArray": "e9fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcaaecffffffffffffffffffffffffffffffacecffffffffffffffffffffffffffffffacecffffffffffffffffffffffffffffffacecffffffffffffffffffffffffffffffac131414141414141414141414141414140e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c09ecffffffffffffffffffffffffffffffacecffffffffffffffffffffffffffffffacecffffffffffffffffffffffffffffffacecffffffffffffffffffffffffffffffacecffffffffffffffffffffffffffffffac0404040404040404040404040404040403" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 61 } }, { "encoding": 62, - "x": 0, - "y": 0, - "width": 7, - "height": 11, - "dx": 7, + "x": 2, + "y": 3, + "width": 17, + "height": 29, + "dx": 20, "glyphBitmap": { - "width": 7, - "height": 11, - "pixelArray": "020300000000000cc421000000000cfff25f010000016bf7ffab130000002ad0ffe6050000001cedff08000047e8ffd104038dfffe8907000cffe13f0000000ca20f0000000001000000000000" + "width": 17, + "height": 29, + "pixelArray": "053000000000000000000000000000000008fa77030000000000000000000000000008ffffc32100000000000000000000000008fffffff361010000000000000000000008ffffffffffae1500000000000000000008ffffffffffffe84b000000000000000008ffffffffffffffff970b0000000000000298ffffffffffffffffdb37000000000000004febfffffffffffffffc810500000000000018b7ffffffffffffffffca27000000000000016df8fffffffffffffff66a010000000000002bd1ffffffffffffffffa200000000000000078cffffffffffffffd000000000000000000043e4ffffffffffd00000000000000000000012d6ffffffffd00000000000000000000fa5ffffffffffd000000000000000003ce0ffffffffffffd00000000000000482fdffffffffffffffcf000000000023c7ffffffffffffffffcc29000000015ef3fffffffffffffffc820500000010a8ffffffffffffffffdb38000000003de1ffffffffffffffff960b0000000007fdffffffffffffffe74900000000000008ffffffffffffffab140000000000000008fffffffffff15c01000000000000000008ffffffffbe1e0000000000000000000008fffff87102000000000000000000000008ffcf2b000000000000000000000000000885060000000000000000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 62 } }, { "encoding": 63, - "x": 0, + "x": 2, "y": 0, - "width": 8, - "height": 14, - "dx": 8, + "width": 22, + "height": 44, + "dx": 26, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "002db9f2f4c23f0009e7ffd3c5fff92836fffe0e01c9ff872afff70700a7ffa60533060001d6ff8b000000003fffff3b0000000dd8ffad00000006b6ffd51000000079ffd8190000000084ff94000000000047884f0000000000162419000000000098ffb0000000000098ffb0000000" + "width": 22, + "height": 44, + "pixelArray": "000000000000032750717a755c350c00000000000000000000001985e3fffffffffffffff8ae4a01000000000000005bf0ffffffffffffffffffffffffb41c00000000006affffffffffffffffffffffffffffffe52500000030fcffffffffffffffffffffffffffffffffd7070000b5ffffffffffffffffffffffffffffffffffff810021fffffffffffffffeb6899ce8fffffffffffffff00861fffffffffffffa440000000baaffffffffffffff558cffffffffffff98000000000008deffffffffffff9394ffffffffffff540000000000007cffffffffffffbb96ffffffffffff470000000000004cffffffffffffda80ffffffffffff5500000000000044ffffffffffffe262ffffffffffff7d00000000000057ffffffffffffd935ffffffe0ac78320000000000007fffffffffffffb7067b471400000000000000000000b0ffffffffffff8e000000000000000000000000000bf4ffffffffffff570000000000000000000000000063fffffffffffff81000000000000000000000000005deffffffffffffa3000000000000000000000000006afffffffffffffd270000000000000000000000001ef1ffffffffffffa000000000000000000000000006c4ffffffffffffeb1500000000000000000000000093ffffffffffffff4c00000000000000000000000067ffffffffffffff8300000000000000000000000058fdffffffffffffb303000000000000000000000054fcffffffffffffc50b00000000000000000000005ffdffffffffffffc80e000000000000000000000035ffffffffffffffc40f00000000000000000000000044ffffffffffffb90b0000000000000000000000000044ffffffffffff44000000000000000000000000000044ffffffffffff44000000000000000000000000000044ffffffffffff44000000000000000000000000000044ffffffffffff44000000000000000000000000000044ffffffffffff440000000000000000000000000000040c0c0c0c0c0c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082fcfcfcfcfcfc9e000000000000000000000000000084ffffffffffffa0000000000000000000000000000084ffffffffffffa0000000000000000000000000000084ffffffffffffa0000000000000000000000000000084ffffffffffffa0000000000000000000000000000084ffffffffffffa0000000000000000000000000000084ffffffffffffa0000000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 63 } }, { "encoding": 64, - "x": 0, - "y": -3, - "width": 16, - "height": 17, - "dx": 16, + "x": 3, + "y": -8, + "width": 45, + "height": 51, + "dx": 50, "glyphBitmap": { - "width": 16, - "height": 17, - "pixelArray": "00000000003c9dd4f6f6d289150000000000000da0ffffd5abb1e6ffed3b0000000008c4ffc429000000036dfceb180000007fffb70600000000000076ff92000015f6f6180024b7f4a0fcaf05e3ec02006dff920015e6ffcfd5ff8b0096ff2300adff3f0093ffa90292ff650070ff3700daff0d07f2ff1e00b6ff3f006cff3401faea0035ffdd0000daff19008dff1a06ffdf004bffcd0005faf30102d6de0101faeb0038fff7337cffd9006cff790000deff1406e2fffff5f6fac3ffd50a00009dff640030bfd7576cf2f4a6160000003affe111000000000001010000000000009fffd43700000000010c000000000000069bffffdaaea4bce89a00000000000000003ba0d8fafce0ba6800000000" + "width": 45, + "height": 51, + "pixelArray": "0000000000000000000000000000000000063e719ec3d9eef9fbf2dfc49c6727010000000000000000000000000000000000000000000000000000095ab1f3ffffffffffffffffffffffffffffd87812000000000000000000000000000000000000000000000f7eedfffffffffffffffffffffffffffffffffffffff5810b0000000000000000000000000000000000000269eeffffffffffffffffffffffffffffffffffffffffffffffdc36000000000000000000000000000000001ec1fffffffffffffffffffffffffffffffffffffffffffffffffffff95600000000000000000000000000003deafffffffffffffffffec38755371f161b2c5076a8eefffffffffffffffd5300000000000000000000000050faffffffffffffffdf701700000000000000000000000653cdfffffffffffff8350000000000000000000045fafffffffffffff16f05000000000000000000000000000000015befffffffffffdf0d000000000000000021eeffffffffffffc51c0000000000000000000000000000000000000024e0ffffffffff920000000000000005cdffffffffffffa70500000000000000000000000000000000000000000025f1fffffffffc2400000000000076ffffffffffffa803000000000000000000000704000000000000000000000051ffffffffff9c00000000001df5ffffffffffcc08000000000000000558b0eafff8a81d07f1fcfcfcfc97000000aafffffffff30a0000000095fffffffffff8270000000000000040d9ffffffffffffe86effffffffff7400000029feffffffff5900000019f8ffffffffff7b0000000000000171fdffffffffffffffffffffffffffff4e00000000c0ffffffffaf00000081ffffffffffe50a00000000000080ffffffffffffffffffffffffffffffff29000000006bffffffffec010002e2ffffffffff7000000000000051fffffffffffffffffffffffffffffffffd07000000001fffffffffff1d003bfffffffffff30f000000000012e9ffffffffffffeb71220973ffffffffffdd000000000001edffffffff440083ffffffffff9e00000000000099ffffffffffffcb180000006bffffffffffb8000000000000c8ffffffff5800c9ffffffffff49000000000026fdffffffffffe0140000000090ffffffffff92000000000000b4ffffffff6a0bfdfffffffff90a000000000098ffffffffffff3e0000000000b4ffffffffff6d000000000000a6ffffffff7c38ffffffffffc3000000000009f2ffffffffffae000000000000d8ffffffffff470000000000009effffffff7c68ffffffffff8d000000000054ffffffffffff3a000000000004faffffffffff21000000000000a4ffffffff768fffffffffff610000000000a4ffffffffffe101000000000021fffffffffff903000000000000b3ffffffff67aaffffffffff3d0000000000e2ffffffffff9d00000000000045ffffffffffd600000000000000cbffffffff48c6ffffffffff220000000010ffffffffffff710000000000006affffffffffb100000000000001f4ffffffff25dcffffffffff0b0000000030ffffffffffff460000000000008effffffffff8b00000000000021fffffffff604eafffffffffd01000000004dffffffffffff2b000000000000b2ffffffffff6500000000000063ffffffffbf00f3fffffffff400000000005affffffffffff23000000000000d7ffffffffff40000000000000b2ffffffff7500f5fffffffff300000000005affffffffffff2e000000000005f9ffffffffff1a00000000001bfbfffffffd1a00effffffffff700000000004affffffffffff58000000000042fffffffffff501000000000090ffffffffb60000e7ffffffffff090000000026ffffffffffffa40000000001bdffffffffffd700000000002bfbffffffff400000d1ffffffffff210000000003eefffffffffffc3c00000790ffffffffffffc9000000000dd5ffffffffb5000000b5ffffffffff490000000000a4fffffffffffff8a690ddffffffffffffffcd00000018c4ffffffffef1c00000091ffffffffff79000000000038fffffffffffffffffffffffff4fffffffffc634a85eeffffffffff56000000005dffffffffffbd000000000000a3ffffffffffffffffffffb6a4ffffffffffffffffffffffffff78000000000026fffffffffffa1400000000000ccbfffffffffffffffff6242dfbfffffffffffffffffffff46200000000000001d9ffffffffff720000000000000eabfffffffffffff048000051f5ffffffffffffffffb925000000000000000087ffffffffffe50a000000000000003690c0cebc7e19000000001c8bd6faffeec389320000000000000000000021fdffffffffff820000000000000000000000000000000000000000000102000000000000000000000000000000abfffffffffffc390000000000000000000000000000000000000000000000000000000000000000000000000024f9ffffffffffe8260000000000000000000000000000000000000000000000000000000000000000000000000080ffffffffffffeb3b00000000000000000000000000000000000000000000000000000000000000000000000004c0fffffffffffffc850b000000000000000000000000000000000000000000000000000000000000000000000017dcffffffffffffffea7b1d000000000000000000000000000004345c00000000000000000000000000000000001ed9fffffffffffffffffecb8a5b331c0a020511253d638abdf4fff303000000000000000000000000000000000011baffffffffffffffffffffffffffffffffffffffffffffffffff2d0000000000000000000000000000000000000371f5ffffffffffffffffffffffffffffffffffffffffffffff6400000000000000000000000000000000000000001f9afbffffffffffffffffffffffffffffffffffffffffff9b000000000000000000000000000000000000000000001c78d5ffffffffffffffffffffffffffffffffffdfa550000000000000000000000000000000000000000000000000001e5f91badef1fffffffff3dfc59f794d1600000000000000000000000000000000000000000000000000000000000000000000060d0e07000000000000000000000000000000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 64 } }, @@ -689,341 +12726,341 @@ "encoding": 65, "x": 0, "y": 0, - "width": 9, - "height": 14, - "dx": 9, + "width": 27, + "height": 43, + "dx": 28, "glyphBitmap": { - "width": 9, - "height": 14, - "pixelArray": "000006f5fcd2000000000031fffffd0b0000000064ffffff3a0000000097ffeeff6d00000000caffa0ffa000000006f9ff4dffd300000031ffec0efffd0a000064ffc300e4ff39000097ff9900baff6c0000cafffffcffff9f0006f9ffb9a4c4ffd20031ffff1b003cfffc0964fff0010011ffff3897ffc5000000e6ff6b" + "width": 27, + "height": 43, + "pixelArray": "00000000000000000065fcfcfcfcfcfcfcf00200000000000000000000000000000000009affffffffffffffff280000000000000000000000000000000000ceffffffffffffffff5c0000000000000000000000000000000008faffffffffffffffff900000000000000000000000000000000035ffffffffffffffffffc40000000000000000000000000000000069fffffffffffffffffff5030000000000000000000000000000009dffffffffffffffffffff2b000000000000000000000000000000d1ffffffffffffffffffff5f00000000000000000000000000000afcffffffffffffffffffff93000000000000000000000000000039ffffffffffffffffffffffc600000000000000000000000000006dfffffffffff4fffffffffff70400000000000000000000000000a1ffffffffffadfdffffffffff2e00000000000000000000000000d5ffffffffff7adbffffffffff620000000000000000000000000cfeffffffffff51b1ffffffffff950000000000000000000000003dffffffffffff2787ffffffffffc900000000000000000000000071fffffffffffa045dfffffffffff8060000000000000000000000a5ffffffffffd40033ffffffffffff310000000000000000000000d8ffffffffffaa000bffffffffffff64000000000000000000000effffffffffff800000dfffffffffff980000000000000000000040ffffffffffff570000b5ffffffffffcc0000000000000000000074ffffffffffff2d00008cfffffffffffa07000000000000000000a8fffffffffffd07000062ffffffffffff33000000000000000000dcffffffffffda00000038ffffffffffff67000000000000000011ffffffffffffb00000000fffffffffffff9b000000000000000044ffffffffffff8600000000e4ffffffffffce000000000000000078ffffffffffff5d00000000bafffffffffffb0800000000000000acffffffffffff330000000090ffffffffffff3600000000000000e0ffffffffffff0b0000000066ffffffffffff6a00000000000015fffffffffffffffcfcfcfcfcfeffffffffffff9d00000000000048ffffffffffffffffffffffffffffffffffffffd10000000000007bfffffffffffffffffffffffffffffffffffffffc0a0000000000afffffffffffffffffffffffffffffffffffffffff390000000000e3ffffffffffffffffffffffffffffffffffffffff6c0000000018ffffffffffffff201414141414146dffffffffffffa0000000004bffffffffffffdf0000000000000035ffffffffffffd4000000007fffffffffffffb1000000000000000bfefffffffffffd0b000000b3ffffffffffff840000000000000000dcffffffffffff3b000001e7ffffffffffff560000000000000000afffffffffffff6f00001bffffffffffffff29000000000000000082ffffffffffffa300004ffffffffffffff804000000000000000055ffffffffffffd7000083ffffffffffffce00000000000000000029fffffffffffffe0d00b7ffffffffffffa000000000000000000004f8ffffffffffff3e01ebffffffffffff7300000000000000000000cfffffffffffff72" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 65 } }, { "encoding": 66, - "x": 1, + "x": 3, "y": 0, - "width": 8, - "height": 14, - "dx": 9, + "width": 25, + "height": 43, + "dx": 29, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "f5fcfcfae5a42100f8ffd5abe4ffe00af8ff88000dedff4df8ff880000c5ff6df8ff880000d8ff5bf8ff880352fff318f8ffffffffe93c00f8ffd5a9e5ffcf17f8ff88000ae2ff8ef8ff8800009fffcbf8ff88000099ffd2f8ff880003d5ffa9f8ffd29fd6fffe3ef8fffffff7c84b00" + "width": 25, + "height": 43, + "pixelArray": "c9fcfcfcfcfcfcfcfcfcfcf8ead0b486450500000000000000ccffffffffffffffffffffffffffffffffe272090000000000ccffffffffffffffffffffffffffffffffffffd92c00000000ccffffffffffffffffffffffffffffffffffffffec25000000ccffffffffffffffffffffffffffffffffffffffffc9020000ccffffffffffffff1c151e2e5096f1ffffffffffffff500000ccffffffffffffff08000000000016cfffffffffffffae0000ccffffffffffffff0800000000000024fdfffffffffff00100ccffffffffffffff0800000000000000c9ffffffffffff1900ccffffffffffffff0800000000000000a1ffffffffffff3a00ccffffffffffffff080000000000000089ffffffffffff4700ccffffffffffffff080000000000000087ffffffffffff4900ccffffffffffffff080000000000000098ffffffffffff3900ccffffffffffffff0800000000000000b6ffffffffffff1c00ccffffffffffffff0800000000000002edffffffffffe80100ccffffffffffffff080000000000004fffffffffffffa10000ccffffffffffffff0800000000001cddffffffffffff350000ccffffffffffffff140c0e1c3f87f1ffffffffffff96000000ccffffffffffffffffffffffffffffffffffffffa105000000ccfffffffffffffffffffffffffffffffffbb74a0000000000ccffffffffffffffffffffffffffffffffcf791e0000000000ccfffffffffffffffffffffffffffffffffffffb8c09000000ccffffffffffffffffffffffffffffffffffffffffc4100000ccffffffffffffff0c040613387fe7ffffffffffffffb40100ccffffffffffffff08000000000012bcffffffffffffff4a00ccffffffffffffff0800000000000012f1ffffffffffffbb00ccffffffffffffff08000000000000008cfffffffffffffc0eccffffffffffffff080000000000000042ffffffffffffff46ccffffffffffffff080000000000000014ffffffffffffff68ccffffffffffffff080000000000000001f9ffffffffffff84ccffffffffffffff080000000000000000efffffffffffff8eccffffffffffffff080000000000000000f3ffffffffffff8accffffffffffffff080000000000000009ffffffffffffff78ccffffffffffffff08000000000000002cffffffffffffff54ccffffffffffffff08000000000000006affffffffffffff30ccffffffffffffff0800000000000002d1ffffffffffffec03ccffffffffffffff0800000000000286ffffffffffffff9d00ccffffffffffffff140c0d133065c9fffffffffffffffe2e00ccffffffffffffffffffffffffffffffffffffffffff970000ccffffffffffffffffffffffffffffffffffffffffcb0a0000ccffffffffffffffffffffffffffffffffffffffba11000000ccffffffffffffffffffffffffffffffffffe2650200000000ccfffffffffffffffffffffffff7deb78d4204000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 66 } }, { "encoding": 67, - "x": 0, - "y": 0, - "width": 9, - "height": 14, - "dx": 9, + "x": 2, + "y": -1, + "width": 25, + "height": 45, + "dx": 29, "glyphBitmap": { - "width": 9, - "height": 14, - "pixelArray": "00047ad8f8edb225000084fffaaedaffe00703eeff860016ffff4820ffff5d0000fbff6b2fffff580000f8ff7030ffff58000010100730ffff58000000000030ffff58000000000030ffff5800003334172fffff580000f8ff7021ffff5e0001fcff6903efff89001bffff430083fffaabd5ffdb0400037bdffcf2b52500" + "width": 25, + "height": 45, + "pixelArray": "0000000000000000083053717a7666441c000000000000000000000000000146b2f7ffffffffffffffffdb801300000000000000000023bdfffffffffffffffffffffffffff05b0000000000000030edffffffffffffffffffffffffffffffff7100000000000fdefffffffffffffffffffffffffffffffffffe3d000000009affffffffffffffffffffffffffffffffffffffc80100001bfcffffffffffffffeea6888bbcffffffffffffffff45000073ffffffffffffffc812000000004bfeffffffffffffa10000c0fffffffffffffd23000000000000a3ffffffffffffe20007faffffffffffffc30000000000000068ffffffffffffff0c2effffffffffffff940000000000000052ffffffffffffff294dffffffffffffff790000000000000040ffffffffffffff4460ffffffffffffff6f000000000000003affffffffffffff4e72ffffffffffffff6d0000000000000038ffffffffffffff507affffffffffffff6c0000000000000038ffffffffffffff507cffffffffffffff6c0000000000000038ffffffffffffff507cffffffffffffff6c0000000000000024a4a4a4a4a4a4a4347cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c000000000000000d38383838383838127cffffffffffffff6c0000000000000038ffffffffffffff507cffffffffffffff6c0000000000000038ffffffffffffff507bffffffffffffff6c0000000000000038ffffffffffffff5073ffffffffffffff6d0000000000000039ffffffffffffff4f62ffffffffffffff72000000000000003affffffffffffff4a4effffffffffffff82000000000000003fffffffffffffff3730ffffffffffffffa0000000000000004fffffffffffffff2208fbffffffffffffd30000000000000072fffffffffffffa0500bfffffffffffffff2a000000000000c5ffffffffffffcb000071ffffffffffffffca140000000168ffffffffffffff80000016f9fffffffffffffff2a4808dcbffffffffffffffff2c0000008cffffffffffffffffffffffffffffffffffffffb90000000009d3fffffffffffffffffffffffffffffffffff428000000000025e6fffffffffffffffffffffffffffffffe56000000000000001bb2ffffffffffffffffffffffffffe54c0000000000000000000040b0f7ffffffffffffffffd5720900000000000000000000000000093155747e7a66431b0000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 67 } }, { "encoding": 68, - "x": 1, + "x": 3, "y": 0, - "width": 8, - "height": 14, - "dx": 9, + "width": 24, + "height": 43, + "dx": 29, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "f5fcfcfae4a72300f8ffd5a9e8ffe60df8ff880025ffff63f8ff880001f8ff8cf8ff880000f5ff98f8ff880000f4ff98f8ff880000f4ff98f8ff880000f4ff98f8ff880000f4ff98f8ff880000f5ff98f8ff880001fcff88f8ff88002cffff5bf8ffd2a2e6ffe009f8ffffffe9ac2100" + "width": 24, + "height": 43, + "pixelArray": "c9fcfcfcfcfcfcfcfcfcfbf4e5cbad7e4104000000000000ccffffffffffffffffffffffffffffffffe77a0900000000ccffffffffffffffffffffffffffffffffffffdb2c000000ccffffffffffffffffffffffffffffffffffffffee290000ccffffffffffffffffffffffffffffffffffffffffd20500ccffffffffffffff1c141724489fffffffffffffffff6900ccffffffffffffff0800000000005bffffffffffffffd501ccffffffffffffff08000000000000baffffffffffffff25ccffffffffffffff0800000000000074ffffffffffffff5eccffffffffffffff080000000000004cffffffffffffff80ccffffffffffffff0800000000000037ffffffffffffff9cccffffffffffffff080000000000002dffffffffffffffb8ccffffffffffffff080000000000002affffffffffffffc2ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000028ffffffffffffffc8ccffffffffffffff0800000000000029ffffffffffffffc4ccffffffffffffff080000000000002cffffffffffffffbeccffffffffffffff0800000000000033ffffffffffffffa7ccffffffffffffff0800000000000043ffffffffffffff8bccffffffffffffff080000000000005affffffffffffff70ccffffffffffffff0800000000000080ffffffffffffff42ccffffffffffffff08000000000002d4fffffffffffff90cccffffffffffffff0800000000006fffffffffffffffac00ccffffffffffffff140c102252aaffffffffffffffff3b00ccffffffffffffffffffffffffffffffffffffffffa80000ccffffffffffffffffffffffffffffffffffffffda120000ccffffffffffffffffffffffffffffffffffffc818000000ccffffffffffffffffffffffffffffffffe36d0400000000ccfffffffffffffffffffff9edd0b2814204000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 68 } }, { "encoding": 69, - "x": 1, + "x": 3, "y": 0, - "width": 6, - "height": 14, - "dx": 7, + "width": 19, + "height": 43, + "dx": 23, "glyphBitmap": { - "width": 6, - "height": 14, - "pixelArray": "f5fcfcfcfcc9f8ffd5a4a483f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8fffffcfc1cf8ffd5a4a412f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ffd29c9c82f8ffffffffd4" + "width": 19, + "height": 43, + "pixelArray": "c9fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc2cccffffffffffffffffffffffffffffffffff2cccffffffffffffffffffffffffffffffffff2cccffffffffffffffffffffffffffffffffff2cccffffffffffffffffffffffffffffffffff2cccffffffffffffff1c14141414141414141404ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccfffffffffffffffdfcfcfcfcfcfcfc0c0000ccffffffffffffffffffffffffffffff0c0000ccffffffffffffffffffffffffffffff0c0000ccffffffffffffffffffffffffffffff0c0000ccffffffffffffffffffffffffffffff0c0000ccffffffffffffff1c14141414141414010000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff140c0c0c0c0c0c0c0c0c04ccffffffffffffffffffffffffffffffffff4cccffffffffffffffffffffffffffffffffff4cccffffffffffffffffffffffffffffffffff4cccffffffffffffffffffffffffffffffffff4cccffffffffffffffffffffffffffffffffff4c" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 69 } }, { "encoding": 70, - "x": 1, + "x": 3, "y": 0, - "width": 6, - "height": 14, - "dx": 7, + "width": 18, + "height": 43, + "dx": 22, "glyphBitmap": { - "width": 6, - "height": 14, - "pixelArray": "f5fcfcfcfcaef8ffd5a4a471f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8fffffcfc0cf8ffd5a4a408f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000" + "width": 18, + "height": 43, + "pixelArray": "c9fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcd1ccffffffffffffffffffffffffffffffffd4ccffffffffffffffffffffffffffffffffd4ccffffffffffffffffffffffffffffffffd4ccffffffffffffffffffffffffffffffffd4ccffffffffffffff1c141414141414141411ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccfffffffffffffffdfcfcfcfcfcfcd90000ccffffffffffffffffffffffffffffdc0000ccffffffffffffffffffffffffffffdc0000ccffffffffffffffffffffffffffffdc0000ccffffffffffffffffffffffffffffdc0000ccffffffffffffff1c141414141414120000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000ccffffffffffffff08000000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 70 } }, { "encoding": 71, - "x": 0, - "y": 0, - "width": 9, - "height": 14, - "dx": 9, + "x": 2, + "y": -1, + "width": 25, + "height": 45, + "dx": 30, "glyphBitmap": { - "width": 9, - "height": 14, - "pixelArray": "000377d8f9eeb32c00007ffffab1d6ffeb0f02ecff87000cf9ff5e1dffff5c0000e0ff852dffff58000094ac5f30ffff58000000000030ffff58000000000030ffff5820fcfcfc9a30ffff5815a4dfff9c2dffff580000a5ff9c19ffff610000afff9c01e6ff900005e2ff9c0080fffcafcbf6ff9c000582e4fdd049ff9c" + "width": 25, + "height": 45, + "pixelArray": "00000000000000000a365c717b7767431f010000000000000000000000000151b7f8ffffffffffffffffe3932700000000000000000020c4fffffffffffffffffffffffffffd8a0500000000000028eaffffffffffffffffffffffffffffffffb304000000000cdcffffffffffffffffffffffffffffffffffff830000000084fffffffffffffffffffffffffffffffffffffffa1d00000df4fffffffffffffff8b18a90bffeffffffffffffff8b000064ffffffffffffffcd1b0000000035ebffffffffffffda0000b6ffffffffffffff2c0000000000006dffffffffffffff2402f2ffffffffffffcb000000000000001fffffffffffffff5221ffffffffffffff9a0000000000000001f6ffffffffffff723dffffffffffffff810000000000000000e2ffffffffffff9055ffffffffffffff730000000000000000dbffffffffffff9b6bffffffffffffff6e0000000000000000d9ffffffffffffa077ffffffffffffff6c0000000000000000d8ffffffffffffa07cffffffffffffff6c0000000000000000333c3c3c3c3c3c267cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c000000000000000000000000000000007cffffffffffffff6c00000000cdfcfcfcfcfcfcfcfcfcfcd97cffffffffffffff6c00000000d0ffffffffffffffffffffdc7cffffffffffffff6c00000000d0ffffffffffffffffffffdc7cffffffffffffff6c00000000d0ffffffffffffffffffffdc7cffffffffffffff6c00000000d0ffffffffffffffffffffdc7cffffffffffffff6c00000000111414143dffffffffffffdc7cffffffffffffff6c00000000000000002cffffffffffffdc7cffffffffffffff6c00000000000000002cffffffffffffdc77ffffffffffffff6c00000000000000002dffffffffffffdc6dffffffffffffff6e000000000000000031ffffffffffffdc54ffffffffffffff79000000000000000040ffffffffffffdc3affffffffffffff8c000000000000000056ffffffffffffdc1cffffffffffffffb0000000000000000083ffffffffffffdc01e5ffffffffffffe90300000000000000ccffffffffffffdc00a7ffffffffffffff4700000000000039ffffffffffffffdc0062ffffffffffffffe1270000000026e4ffffffffffffffdc000cf2fffffffffffffffbb38685b4faffffffffffffffffdc00008afffffffffffffffffffffffffffffffff1ffffffffdc000010e5ffffffffffffffffffffffffffffc3a9ffffffffdc00000036f3fffffffffffffffffffffffff93088ffffffffdc0000000031dcfffffffffffffffffffffb550067ffffffffdc00000000000870d6ffffffffffffffc434000045ffffffffdc00000000000000001f506d7e7a5e2400000000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 71 } }, { "encoding": 72, - "x": 1, + "x": 3, "y": 0, - "width": 8, - "height": 14, - "dx": 10, + "width": 25, + "height": 43, + "dx": 31, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "f1fc8e0000a2fcd9f4ff900000a4ffdcf4ff900000a4ffdcf4ff900000a4ffdcf4ff900000a4ffdcf4ff900000a4ffdcf4fffffcfcffffdcf4ffd8a4a4dfffdcf4ff900000a4ffdcf4ff900000a4ffdcf4ff900000a4ffdcf4ff900000a4ffdcf4ff900000a4ffdcf4ff900000a4ffdc" + "width": 25, + "height": 43, + "pixelArray": "b6fcfcfcfcfcfcfc1c000000000000002cfcfcfcfcfcfcfca2b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8fffffffffffffffdfcfcfcfcfcfcfcfdffffffffffffffa4b8ffffffffffffffffffffffffffffffffffffffffffffffa4b8ffffffffffffffffffffffffffffffffffffffffffffffa4b8ffffffffffffffffffffffffffffffffffffffffffffffa4b8ffffffffffffffffffffffffffffffffffffffffffffffa4b8ffffffffffffff2e141414141414143dffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4b8ffffffffffffff1c000000000000002cffffffffffffffa4" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 72 } }, { "encoding": 73, - "x": 1, + "x": 3, "y": 0, - "width": 3, - "height": 14, - "dx": 5, + "width": 9, + "height": 43, + "dx": 15, "glyphBitmap": { - "width": 3, - "height": 14, - "pixelArray": "e1fc92e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94e4ff94" + "width": 9, + "height": 43, + "pixelArray": "8efcfcfcfcfcfcfc2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff2890ffffffffffffff28" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 73 } }, { "encoding": 74, "x": 0, - "y": 0, - "width": 5, - "height": 14, - "dx": 6, + "y": -1, + "width": 15, + "height": 44, + "dx": 17, "glyphBitmap": { - "width": 5, - "height": 14, - "pixelArray": "0000fcfc7e0000ffff7f0000ffff7f0000ffff7e0000ffff7e0000ffff7e0000ffff7d0000ffff7d0000ffff7c0000ffff7c0002ffff7b002fffff6ca9f4ffff30d8fde37000" + "width": 15, + "height": 44, + "pixelArray": "000000000000c5fcfcfcfcfcfcfc08000000000000c8ffffffffffffff07000000000000c8ffffffffffffff07000000000000c8ffffffffffffff07000000000000c8ffffffffffffff07000000000000c8ffffffffffffff06000000000000c8ffffffffffffff06000000000000c8ffffffffffffff06000000000000c8ffffffffffffff06000000000000c8ffffffffffffff05000000000000c8ffffffffffffff05000000000000c8ffffffffffffff05000000000000c8ffffffffffffff05000000000000c8ffffffffffffff04000000000000c8ffffffffffffff04000000000000c8ffffffffffffff04000000000000c8ffffffffffffff04000000000000c8ffffffffffffff03000000000000c8ffffffffffffff03000000000000c8ffffffffffffff03000000000000c8ffffffffffffff03000000000000c8ffffffffffffff02000000000000c8ffffffffffffff02000000000000c8ffffffffffffff02000000000000c8ffffffffffffff02000000000000c8ffffffffffffff01000000000000c8ffffffffffffff01000000000000c8ffffffffffffff01000000000000c8ffffffffffffff01000000000000c8ffffffffffffff00000000000000c8ffffffffffffff00000000000000c8ffffffffffffff00000000000000c8ffffffffffffff00000000000000ccfffffffffffffa00000000000000e0ffffffffffffed0000000000000dfcffffffffffffd30000000000005cffffffffffffffb7000000000141e7ffffffffffffff87004996aedfffffffffffffffffff3c0084ffffffffffffffffffffffc9010084fffffffffffffffffffffe3e000084fffffffffffffffffffb6000000084fffffffffffffffaae2e00000000428080807e7558370b000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 74 } }, { "encoding": 75, - "x": 1, + "x": 3, "y": 0, - "width": 8, - "height": 14, - "dx": 9, + "width": 25, + "height": 43, + "dx": 28, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "f5fc86000bebfc6df8ff88006afff410f8ff8802dbff9800f8ff884fffff2d00f8ff88c1ffc00000f8ffbcffff540000f8ffffffff1e0000f8ffefefff750000f8ff9198ffd60100f8ff883bffff3600f8ff8801ddff9600f8ff880081ffef08f8ff880025ffff57f8ff880000c7ffb8" + "width": 25, + "height": 43, + "pixelArray": "c9fcfcfcfcfcfcfc0800000000000000befcfcfcfcfcfcb400ccffffffffffffff0800000000000034ffffffffffffff4b00ccffffffffffffff08000000000000a6ffffffffffffdc0200ccffffffffffffff0800000000001efcffffffffffff710000ccffffffffffffff0800000000008cfffffffffffff5100000ccffffffffffffff08000000000ef1ffffffffffff98000000ccffffffffffffff080000000072ffffffffffffff2d000000ccffffffffffffff0800000004e1ffffffffffffbf00000000ccffffffffffffff0800000058ffffffffffffff5200000000ccffffffffffffff08000001cbffffffffffffe20400000000ccffffffffffffff0800003effffffffffffff790000000000ccffffffffffffff080000b1fffffffffffff8150000000000ccffffffffffffff080026feffffffffffffa0000000000000ccffffffffffffff080096ffffffffffffff33000000000000ccffffffffffffff0813f6ffffffffffffc700000000000000ccffffffffffffff087cffffffffffffff5a00000000000000ccffffffffffffff10e8ffffffffffffe80600000000000000ccffffffffffffff6affffffffffffff810000000000000000ccffffffffffffffdbfffffffffffffb1a0000000000000000ccffffffffffffffffffffffffffffcf000000000000000000ccffffffffffffffffffffffffffffff230000000000000000ccffffffffffffffffffffffffffffff830000000000000000ccffffffffffffffffffffffffffffffe30300000000000000ccffffffffffffffff71ffffffffffffff4700000000000000ccffffffffffffffaf01d5ffffffffffffaa00000000000000ccffffffffffffff280077fffffffffffffa14000000000000ccffffffffffffff08001bfeffffffffffff6e000000000000ccffffffffffffff080000baffffffffffffd1010000000000ccffffffffffffff0800005cffffffffffffff330000000000ccffffffffffffff0800000bf3ffffffffffff950000000000ccffffffffffffff080000009fffffffffffffef0900000000ccffffffffffffff0800000041ffffffffffffff5a00000000ccffffffffffffff0800000002e1ffffffffffffbc00000000ccffffffffffffff080000000084ffffffffffffff20000000ccffffffffffffff080000000027ffffffffffffff80000000ccffffffffffffff080000000000c8ffffffffffffe1030000ccffffffffffffff08000000000069ffffffffffffff450000ccffffffffffffff08000000000012faffffffffffffa70000ccffffffffffffff08000000000000adfffffffffffff81200ccffffffffffffff080000000000004fffffffffffffff6c00ccffffffffffffff0800000000000006ebffffffffffffce00ccffffffffffffff080000000000000092ffffffffffffff31ccffffffffffffff080000000000000034ffffffffffffff93" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 75 } }, { "encoding": 76, - "x": 1, + "x": 3, "y": 0, - "width": 6, - "height": 14, - "dx": 7, + "width": 19, + "height": 43, + "dx": 22, "glyphBitmap": { - "width": 6, - "height": 14, - "pixelArray": "f5fc86000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ff88000000f8ffdfb8b899f8ffffffffd4" + "width": 19, + "height": 43, + "pixelArray": "c9fcfcfcfcfcfcfc0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff0800000000000000000000ccffffffffffffff140c0c0c0c0c0c0c0c0c04ccffffffffffffffffffffffffffffffffff4cccffffffffffffffffffffffffffffffffff4cccffffffffffffffffffffffffffffffffff4cccffffffffffffffffffffffffffffffffff4cccffffffffffffffffffffffffffffffffff4c" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 76 } }, { "encoding": 77, - "x": 1, + "x": 3, "y": 0, - "width": 10, - "height": 14, - "dx": 12, + "width": 31, + "height": 43, + "dx": 36, "glyphBitmap": { - "width": 10, - "height": 14, - "pixelArray": "c4fce200000042fcfc5dcbffff1a000078ffff62cfffff4d0000adffff66d4ffff810000e2ffff6bd8fff4b50018fff6ff6fdcffbfe9014dffc0ff73e0ff85ff1d82ff88ff77e5ff4cff51b7e46bff7ce9ff14ff86edaf66ff80edfe00dcdaff7a61ff84f2fa00a7ffff455dff89f6f60072ffff1158ff8dfaf2003dffdb0054ff91feee000bfda6004fff96" + "width": 31, + "height": 43, + "pixelArray": "2efcfcfcfcfcfcfcf0030000000000000000000000a5fcfcfcfcfcfcfc4d0033ffffffffffffffff2a0000000000000000000000ddffffffffffffff520037ffffffffffffffff5e0000000000000000000014ffffffffffffffff56003bffffffffffffffff930000000000000000000049ffffffffffffffff5b003fffffffffffffffffc7000000000000000000007fffffffffffffffff5f0044fffffffffffffffff705000000000000000000b5ffffffffffffffff630048ffffffffffffffffff30000000000000000001ebffffffffffffffff67004cffffffffffffffffff64000000000000000021ffffffffffffffffff6c0050ffffffffffffffffff99000000000000000057ffffffffffffffffff700054ffffffffffffffffffcd00000000000000008dffffffffffffffffff740058fffffffffffffffffffb0800000000000000c3ffffffffffffffffff79005dffffffffffffffffffff3600000000000004f6ffffffffffffffffff7d0061ffffffffffffffffffff6b0000000000002fffffffffffffffffffff810065fffffffffff8ffffffff9f00000000000065fffffffffbffffffffff850069ffffffffffc3ffffffffd40000000000009bffffffffcaffffffffff8a006dffffffffff91f8fffffffd0c0000000000d2ffffffff8fffffffffff8e0072ffffffffff87c7ffffffff3d000000000cfdfffffff95dffffffffff920076ffffffffff8391ffffffff71000000003effffffffc853ffffffffff96007affffffffff7f5bffffffffa60000000074ffffffff924fffffffffff9b007effffffffff7b24ffffffffda00000000aaffffffff5c4affffffffff9f0082ffffffffff7701eeffffffff10000000e0ffffffff2646ffffffffffa30087ffffffffff7300b8ffffffff43000017ffffffffef0241ffffffffffa8008bffffffffff6f0082ffffffff7700004cffffffffbb003dffffffffffac008fffffffffff6b004bffffffffac000082ffffffff850038ffffffffffb00093ffffffffff670016ffffffffe00000b8ffffffff4f0034ffffffffffb40097ffffffffff630000dfffffffff1501eeffffffff19002fffffffffffb9009bffffffffff5f0000a8ffffffff4924ffffffffe300002bffffffffffbd00a0ffffffffff5a000072ffffffff7e5affffffffae000026ffffffffffc100a4ffffffffff5600003cffffffffb290ffffffff78000022ffffffffffc600a8ffffffffff5200000afcffffffe7c7ffffffff4200001dffffffffffca00acffffffffff4e000000cffffffffffcfffffffe0f000019ffffffffffce00b0ffffffffff4a00000099ffffffffffffffffd600000014ffffffffffd200b5ffffffffff4600000063ffffffffffffffffa100000010ffffffffffd700b9ffffffffff420000002cffffffffffffffff6b0000000bffffffffffdb00bdffffffffff3e00000003f4ffffffffffffff3500000007ffffffffffdf00c1ffffffffff3a00000000c0fffffffffffff90700000002ffffffffffe400c5ffffffffff36000000008affffffffffffc90000000000feffffffffe800caffffffffff320000000053ffffffffffff940000000000f9ffffffffec00ceffffffffff2e000000001dffffffffffff5e0000000000f5fffffffff000d2ffffffffff2a0000000001e7ffffffffff280000000000f0fffffffff500d6ffffffffff260000000000b0fffffffff1020000000000ecfffffffff900daffffffffff2200000000007affffffffbc000000000000e7fffffffffd00deffffffffff1e000000000044ffffffff87000000000000e3ffffffffff02" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 77 } }, { "encoding": 78, - "x": 1, + "x": 3, "y": 0, - "width": 8, - "height": 14, - "dx": 9, + "width": 23, + "height": 43, + "dx": 29, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "f5ea090000ddfc34f8ff620000e0ff34f8ffcf0100e0ff34f8ffff3b00e0ff34f8ffffa800e0ff34f8fffcfb1ae0ff34f8ffadff82e0ff34f8ff47fee9e7ff34f8ff28b3ffffff34f8ff284affffff34f8ff2803dfffff34f8ff280078ffff34f8ff280016faff34f8ff280000a5ff34" + "width": 23, + "height": 43, + "pixelArray": "c9fcfcfcfccb01000000000000000000e5fcfcfcfcfc8eccffffffffff3b000000000000000000e8ffffffffff90ccffffffffffa9000000000000000000e8ffffffffff90ccfffffffffffc1c0000000000000000e8ffffffffff90ccffffffffffff840000000000000000e8ffffffffff90ccffffffffffffeb0800000000000000e8ffffffffff90ccffffffffffffff6000000000000000e8ffffffffff90ccffffffffffffffce01000000000000e8ffffffffff90ccffffffffffffffff3c000000000000e8ffffffffff90ccffffffffffffffffaa000000000000e8ffffffffff90ccfffffffffffffffffc1d0000000000e8ffffffffff90ccffffffffffffffffff860000000000e8ffffffffff90ccffffffffffffffffffec0900000000e8ffffffffff90ccffffffffffffffffffff6200000000e8ffffffffff90ccffffffffffffffffffffd001000000e8ffffffffff90ccffffffffffffffffffffff3e000000e8ffffffffff90ccffffffffffffffffffffffac000000e8ffffffffff90ccfffffffffff6fffffffffffd1e0000e8ffffffffff90ccffffffffffd4c7ffffffffff870000e8ffffffffff90ccffffffffffd45cffffffffffed0900e8ffffffffff90ccffffffffffd408ebffffffffff6300e8ffffffffff90ccffffffffffd40087ffffffffffd101e8ffffffffff90ccffffffffffd4001ffeffffffffff3fe8ffffffffff90ccffffffffffd40000b2ffffffffffade8ffffffffff90ccffffffffffd4000047fffffffffffdf8ffffffffff90ccffffffffffd4000002dbffffffffffffffffffffff90ccffffffffffd400000072ffffffffffffffffffffff90ccffffffffffd400000011f6ffffffffffffffffffff90ccffffffffffd4000000009cffffffffffffffffffff90ccffffffffffd40000000032ffffffffffffffffffff90ccffffffffffd40000000000c7ffffffffffffffffff90ccffffffffffd400000000005cffffffffffffffffff90ccffffffffffd4000000000007ebffffffffffffffff90ccffffffffffd400000000000087ffffffffffffffff90ccffffffffffd40000000000001ffdffffffffffffff90ccffffffffffd400000000000000b1ffffffffffffff90ccffffffffffd40000000000000046ffffffffffffff90ccffffffffffd40000000000000002dbffffffffffff90ccffffffffffd4000000000000000071ffffffffffff90ccffffffffffd4000000000000000011f6ffffffffff90ccffffffffffd40000000000000000009cffffffffff90ccffffffffffd400000000000000000031ffffffffff90ccffffffffffd400000000000000000000c6ffffffff90" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 78 } }, { "encoding": 79, - "x": 0, - "y": 0, - "width": 9, - "height": 14, - "dx": 10, + "x": 2, + "y": -1, + "width": 26, + "height": 45, + "dx": 30, "glyphBitmap": { - "width": 9, - "height": 14, - "pixelArray": "000479d7f9eeb52e000084fffbb1d5fff01803f0ff87000bf2ff7921ffff5f0000d3ffab2fffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbb1fffff5e0000d3ffaa02ecff850009f2ff790082fff9a9cefff01800047adafcf2be3100" + "width": 26, + "height": 45, + "pixelArray": "00000000000000000831546f79776b4b270200000000000000000000000000014fb5f7ffffffffffffffffea982c0000000000000000000024c6fffffffffffffffffffffffffffe970a0000000000000032edffffffffffffffffffffffffffffffffc40d000000000015e7ffffffffffffffffffffffffffffffffffffac01000000009effffffffffffffffffffffffffffffffffffffff4e0000001ffcfffffffffffffff3af898fbdfdffffffffffffffcb01000085ffffffffffffffcb150000000034edffffffffffffff330000d3ffffffffffffff2600000000000064ffffffffffffff7b000ffeffffffffffffca000000000000000efaffffffffffffc20032ffffffffffffff970000000000000000d3ffffffffffffed004effffffffffffff7f0000000000000000bcffffffffffffff0c6affffffffffffff770000000000000000b3ffffffffffffff2a77ffffffffffffff740000000000000000b0ffffffffffffff397cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407bffffffffffffff740000000000000000b0ffffffffffffff3f75ffffffffffffff740000000000000000b0ffffffffffffff3964ffffffffffffff760000000000000000b3ffffffffffffff2746ffffffffffffff800000000000000000bcffffffffffffff0c28ffffffffffffff9a0000000000000000d7ffffffffffffef0006f5ffffffffffffce0000000000000010fdffffffffffffc40000b5ffffffffffffff2a00000000000069ffffffffffffff8800006effffffffffffffcb190000000039eeffffffffffffff37000013f5fffffffffffffff3a88288b9feffffffffffffffc9010000008dffffffffffffffffffffffffffffffffffffffff4b000000000ee0ffffffffffffffffffffffffffffffffffffa70000000000002deaffffffffffffffffffffffffffffffffbf0b0000000000000021c3fffffffffffffffffffffffffffd9108000000000000000000014db4f8ffffffffffffffffeb9d2c0000000000000000000000000000083557737d7d6d542a020000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 79 } }, { - "encoding": 80, - "x": 1, - "y": 0, - "width": 8, - "height": 14, - "dx": 9, + "encoding": 80, + "x": 3, + "y": 0, + "width": 24, + "height": 43, + "dx": 27, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "f5fcfcfcf3ba2c00f8ffd5a8ddffe80ef8ff880010f8ff59f8ff880000dcff7ef8ff880000e5ff7af8ff88024cffff48f8ffffffffffba02f8ffd5a496570400f8ff880000000000f8ff880000000000f8ff880000000000f8ff880000000000f8ff880000000000f8ff880000000000" + "width": 24, + "height": 43, + "pixelArray": "c9fcfcfcfcfcfcfcfcfcfcfcfcf4d7ae771c000000000000ccfffffffffffffffffffffffffffffffffeab1c00000000ccffffffffffffffffffffffffffffffffffffef3d000000ccfffffffffffffffffffffffffffffffffffffff1280000ccffffffffffffffffffffffffffffffffffffffffc60100ccffffffffffffff1c14151e3b71e3ffffffffffffff4900ccffffffffffffff08000000000015ddffffffffffffa700ccffffffffffffff0800000000000062ffffffffffffef05ccffffffffffffff0800000000000013ffffffffffffff30ccffffffffffffff0800000000000000f1ffffffffffff51ccffffffffffffff0800000000000000dfffffffffffff72ccffffffffffffff0800000000000000d9ffffffffffff82ccffffffffffffff0800000000000000d6ffffffffffff86ccffffffffffffff0800000000000000e1ffffffffffff7eccffffffffffffff0800000000000001f7ffffffffffff62ccffffffffffffff0800000000000026ffffffffffffff3dccffffffffffffff0800000000000074fffffffffffffe14ccffffffffffffff0800000000001de8ffffffffffffc500ccffffffffffffff140c0d1a3b81f0ffffffffffffff6700ccffffffffffffffffffffffffffffffffffffffffd90700ccfffffffffffffffffffffffffffffffffffffff6330000ccffffffffffffffffffffffffffffffffffffeb3d000000ccfffffffffffffffffffffffffffffffffc941200000000ccfffffffffffffffffffffffff3d0aa6414000000000000ccffffffffffffff0c040404020000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000ccffffffffffffff08000000000000000000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 80 } }, { "encoding": 81, - "x": 0, - "y": -3, - "width": 9, - "height": 17, - "dx": 10, + "x": 2, + "y": -9, + "width": 26, + "height": 53, + "dx": 30, "glyphBitmap": { - "width": 9, - "height": 17, - "pixelArray": "000479d7f9eeb52e000084fffbb1d5fff01703f0ff87000bf2ff7821ffff5f0000d3ffab2fffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbc30ffff5c0000d0ffbb1fffff5e0000d3ffaa02ecff850009f2ff780082fff9a9cefff11800047adafdfffa3a00000000000090ffaa08000000000004acf709000000000000034d00" + "width": 26, + "height": 53, + "pixelArray": "00000000000000000831546f79776b4b270200000000000000000000000000014fb5f7ffffffffffffffffea9a2e0000000000000000000024c6ffffffffffffffffffffffffffff990b0000000000000032edffffffffffffffffffffffffffffffffc70e000000000015e7ffffffffffffffffffffffffffffffffffffaf01000000009effffffffffffffffffffffffffffffffffffffff510000001ffcfffffffffffffff3af898fbdfdffffffffffffffcd01000085ffffffffffffffcb150000000034edffffffffffffff340000d3ffffffffffffff2600000000000064ffffffffffffff7c000ffeffffffffffffca000000000000000efaffffffffffffc20032ffffffffffffff970000000000000000d3ffffffffffffed004effffffffffffff7f0000000000000000bcffffffffffffff0c6affffffffffffff770000000000000000b3ffffffffffffff2a77ffffffffffffff740000000000000000b0ffffffffffffff397cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407cffffffffffffff740000000000000000b0ffffffffffffff407bffffffffffffff740000000000000000b0ffffffffffffff3f75ffffffffffffff740000000000000000b0ffffffffffffff3964ffffffffffffff760000000000000000b3ffffffffffffff2646ffffffffffffff800000000000000000bcffffffffffffff1128ffffffffffffff9a0000000000000000d7ffffffffffffeb0106f5ffffffffffffce0000000000000010fdffffffffffffbd0000b5ffffffffffffff2a00000000000069ffffffffffffff7a00006effffffffffffffcb190000000039eeffffffffffffff2b000013f5fffffffffffffff3a88288b9feffffffffffffffbf000000008dffffffffffffffffffffffffffffffffffffffff3f000000000ee0ffffffffffffffffffffffffffffffffffff910000000000002deaffffffffffffffffffffffffffffffffaa040000000000000021c3fffffffffffffffffffffffffff97802000000000000000000014db4f8ffffffffffffffffffff9d0000000000000000000000000000083557737d86fdffffffffff710000000000000000000000000000000000000084ffffffffffff7100000000000000000000000000000000000003b7ffffffffffff7d02000000000000000000000000000000000010d8ffffffffffff5900000000000000000000000000000000000022e5ffffffffff210000000000000000000000000000000000000028e5ffffffdb00000000000000000000000000000000000000000022d5ffff94000000000000000000000000000000000000000000000da8ff4e000000000000000000000000000000000000000000000000490e000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 81 } }, { "encoding": 82, - "x": 1, + "x": 3, "y": 0, - "width": 8, - "height": 14, - "dx": 9, + "width": 25, + "height": 43, + "dx": 29, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "f5fcfcf9e3a62700f8ffd5aae8ffeb15f8ff880016fbff69f8ff880000d6ff8cf8ff880001e5ff82f8ff880764ffff50f8ffffffffffb604f8ffd5c0fffa0a00f8ff8820ffff4500f8ff8800deff8d00f8ff88009cffd500f8ff88005affff1df8ff880019ffff64f8ff880000d6ffac" + "width": 25, + "height": 43, + "pixelArray": "c9fcfcfcfcfcfcfcfcfcfaf4e0c8ae82440600000000000000ccffffffffffffffffffffffffffffffffe67c110000000000ccffffffffffffffffffffffffffffffffffffe94800000000ccfffffffffffffffffffffffffffffffffffffffb4d000000ccfffffffffffffffffffffffffffffffffffffffff11a0000ccffffffffffffff1c1416254993f7ffffffffffffff980000ccffffffffffffff08000000000028ebfffffffffffff50900ccffffffffffffff0800000000000069ffffffffffffff4600ccffffffffffffff0800000000000010fdffffffffffff7300ccffffffffffffff0800000000000000d7ffffffffffff9800ccffffffffffffff0800000000000000bcffffffffffffa900ccffffffffffffff0800000000000000b2ffffffffffffaf00ccffffffffffffff0800000000000000bdffffffffffffa600ccffffffffffffff0800000000000000daffffffffffff9200ccffffffffffffff0800000000000017ffffffffffffff7200ccffffffffffffff0800000000000077ffffffffffffff4200ccffffffffffffff08000000000036f3fffffffffffff30800ccffffffffffffff0800021b489cfcffffffffffffffa00000ccfffffffffffffffdfdfffffffffffffffffffffff5240000ccfffffffffffffffffffffffffffffffffffffffd59000000ccffffffffffffffffffffffffffffffffffffea4f00000000ccffffffffffffffffffffffffffffffffffba120000000000ccffffffffffffffffffffffffffffffffffc7000000000000ccffffffffffffff1c14146ffffffffffffffd110000000000ccffffffffffffff08000023ffffffffffffff550000000000ccffffffffffffff08000001e2ffffffffffff9b0000000000ccffffffffffffff08000000a0ffffffffffffe20100000000ccffffffffffffff080000005effffffffffffff2900000000ccffffffffffffff080000001dffffffffffffff7000000000ccffffffffffffff0800000000dbffffffffffffb700000000ccffffffffffffff080000000099fffffffffffff608000000ccffffffffffffff080000000058ffffffffffffff45000000ccffffffffffffff080000000017ffffffffffffff8c000000ccffffffffffffff080000000000d4ffffffffffffd3000000ccffffffffffffff08000000000093ffffffffffffff1a0000ccffffffffffffff08000000000051ffffffffffffff600000ccffffffffffffff08000000000012feffffffffffffa70000ccffffffffffffff08000000000000ceffffffffffffec0300ccffffffffffffff080000000000008cffffffffffffff3500ccffffffffffffff080000000000004affffffffffffff7c00ccffffffffffffff080000000000000dfcffffffffffffc300ccffffffffffffff0800000000000000c7fffffffffffffc0fccffffffffffffff080000000000000085ffffffffffffff51" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 82 } }, { "encoding": 83, - "x": 0, - "y": 0, - "width": 8, - "height": 14, - "dx": 8, + "x": 2, + "y": -1, + "width": 23, + "height": 45, + "dx": 26, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "0016a1ebf7cc490001c8ffdab4fffa272fffff1e00aeff874affff200076d2722dffffb10500000002d0ffffb60c00000026e8ffffca1400000023dbffffc90600000016ccffff74022a520011e5ffd044fff5030089ffed15fdff430088ffd100a1ffefa8f5ff6700098be4fedc6d01" + "width": 23, + "height": 45, + "pixelArray": "000000000000000f3b61777a6a45190000000000000000000000000150b4fbffffffffffffffcc5e03000000000000000020bbffffffffffffffffffffffffcd240000000000002ae9ffffffffffffffffffffffffffffe71b000000000adbffffffffffffffffffffffffffffffffc2020000008affffffffffffffffffffffffffffffffffff5800000bf2ffffffffffffffd09087b6ffffffffffffffcb000059ffffffffffffff7f0100000049fbffffffffffff29008fffffffffffffd502000000000094ffffffffffff7300b9ffffffffffff8d00000000000037ffffffffffffa800cfffffffffffff7c00000000000004f8ffffffffffcf00d2ffffffffffff8f00000000000000d5fffffffffff100c2ffffffffffffc200000000000000bbfffff5c4915e01a8fffffffffffffe260000000000005c5d2a030000000078ffffffffffffffc6080000000000000000000000000033ffffffffffffffffab0300000000000000000000000001d4ffffffffffffffffa80700000000000000000000000050ffffffffffffffffffbf11000000000000000000000000a8ffffffffffffffffffd61f00000000000000000000000dd3ffffffffffffffffffe73300000000000000000000001adbfffffffffffffffffff44a000000000000000000000019cffffffffffffffffffffd6500000000000000000000000db6ffffffffffffffffffff7200000000000000000000000498ffffffffffffffffffff6900000000000000000000000176fffffffffffffffffffe4b00000000000000000000000057f9ffffffffffffffffec1b0000000000000000000000003df0ffffffffffffffffb2000000000000000000000000002fe9ffffffffffffffff44000000000000000000000000002deeffffffffffffffb500000000000000000000000000004bffffffffffffffff1a0000104479aed500000000000000b1ffffffffffffff5e90daffffffffff070000000000003cffffffffffffff8ccdffffffffffff2200000000000002f2ffffffffffffadafffffffffffff4c00000000000000c3ffffffffffffc185ffffffffffff8800000000000000b4ffffffffffffbe59ffffffffffffdd02000000000000cbffffffffffffa718fdffffffffffff5f000000000015fcffffffffffff7a00bffffffffffffff44000000005a8ffffffffffffff3e005effffffffffffffffb8838ed8ffffffffffffffdb010004d6ffffffffffffffffffffffffffffffffffff5e00000039fbffffffffffffffffffffffffffffffffb501000000005bfcffffffffffffffffffffffffffffce1000000000000044e4ffffffffffffffffffffffff9d0d00000000000000000b72d0fffffffffffffff9ab3e0000000000000000000000000018426b7b7c673d0f00000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 83 } }, @@ -1031,71 +13068,71 @@ "encoding": 84, "x": 0, "y": 0, - "width": 8, - "height": 14, - "dx": 7, + "width": 23, + "height": 43, + "dx": 22, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "edfcfcfcfcfcfc1c9aa4defff5a4a4120000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe00000000000a0ffe0000000" + "width": 23, + "height": 43, + "pixelArray": "c9fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc2cccffffffffffffffffffffffffffffffffffffffffff2cccffffffffffffffffffffffffffffffffffffffffff2cccffffffffffffffffffffffffffffffffffffffffff2cccffffffffffffffffffffffffffffffffffffffffff2cccffffffffffffffffffffffffffffffffffffffffff2c040404040404049affffffffffffff3c040404040404010000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff38000000000000000000000000000098ffffffffffffff3800000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 84 } }, { "encoding": 85, - "x": 0, - "y": 0, - "width": 9, - "height": 14, - "dx": 10, + "x": 2, + "y": -1, + "width": 25, + "height": 44, + "dx": 30, "glyphBitmap": { - "width": 9, - "height": 14, - "pixelArray": "14fcfc5b0000c5fca614ffff5c0000c8ffa814ffff5c0000c8ffa814ffff5c0000c8ffa814ffff5c0000c8ffa814ffff5c0000c8ffa814ffff5c0000c8ffa814ffff5c0000c8ffa814ffff5c0000c8ffa813ffff5c0000c9ffa606ffff630000cfff9600d6ff95000df5ff68006dfffeaed3ffed14000274dbfbf3bc3200" + "width": 25, + "height": 44, + "pixelArray": "20fcfcfcfcfcfcfc73000000000000000096fcfcfcfcfcfcf920ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc20ffffffffffffff74000000000000000098fffffffffffffc1dffffffffffffff7500000000000000009afffffffffffff914ffffffffffffff7900000000000000009dffffffffffffee05ffffffffffffff840000000000000000a6ffffffffffffde00f3ffffffffffff9c0000000000000000bcffffffffffffcd00d6ffffffffffffc30000000000000000e6ffffffffffffae00acfffffffffffff60a00000000000023ffffffffffffff84006dffffffffffffff6400000000000086ffffffffffffff460026fffffffffffffff1430000000055fafffffffffffff8090000cdffffffffffffffffbd8689c4ffffffffffffffffa800000056ffffffffffffffffffffffffffffffffffffffff3500000001b1ffffffffffffffffffffffffffffffffffff8f000000000015d7ffffffffffffffffffffffffffffffffc30900000000000013aafffffffffffffffffffffffffffd970a00000000000000000039abf6fffffffffffffffff0a02a00000000000000000000000000073152727d7c6f4e2c0400000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 85 } }, { "encoding": 86, - "x": 0, + "x": 1, "y": 0, - "width": 9, - "height": 14, - "dx": 9, + "width": 26, + "height": 43, + "dx": 27, "glyphBitmap": { - "width": 9, - "height": 14, - "pixelArray": "81fcb1000001eefc4e51ffe2000020ffff1c1effff13004dffe90101ecff42007affb60000b9ff7100a7ff82000086ffa100d4ff4f000053ffd007fcff1c000020fffa35ffe901000001edff8bffb600000000baffe5ff820000000087ffffff4f0000000054ffffff1c0000000021ffffe9010000000001eeffb6000000" + "width": 26, + "height": 43, + "pixelArray": "adfcfcfcfcfcfc3f00000000000000000002f1fcfcfcfcfcfc1e7cffffffffffff6f00000000000000000024ffffffffffffea0148ffffffffffff9f00000000000000000052ffffffffffffb60015ffffffffffffcf0000000000000000007fffffffffffff820000e1fffffffffffa060000000000000000adffffffffffff4e0000adffffffffffff300000000000000000daffffffffffff1a000079ffffffffffff60000000000000000bfeffffffffffe600000045ffffffffffff900000000000000035ffffffffffffb200000013ffffffffffffc00000000000000063ffffffffffff7d00000000defffffffffff00100000000000090ffffffffffff4900000000aaffffffffffff20000000000000beffffffffffff160000000076ffffffffffff51000000000001ecffffffffffe1000000000043ffffffffffff81000000000019ffffffffffffad000000000011ffffffffffffb1000000000046ffffffffffff79000000000000dbffffffffffe1000000000074ffffffffffff45000000000000a7ffffffffffff1200000000a1ffffffffffff1200000000000074ffffffffffff4100000000cfffffffffffdd0000000000000040ffffffffffff7200000004f9ffffffffffa8000000000000000effffffffffffa20000002affffffffffff740000000000000000d9ffffffffffd200000057ffffffffffff400000000000000000a5fffffffffffb08000085ffffffffffff0e000000000000000071ffffffffffff320000b2ffffffffffd80000000000000000003dffffffffffff620000e0ffffffffffa40000000000000000000cfeffffffffff93000fffffffffffff7000000000000000000000d6ffffffffffc3003bffffffffffff3c00000000000000000000a2fffffffffff20268fffffffffffd0b000000000000000000006effffffffffff2396ffffffffffd300000000000000000000003bffffffffffff53c3ffffffffff9f00000000000000000000000bfdffffffffff84f0ffffffffff6b000000000000000000000000d3ffffffffffd1ffffffffffff370000000000000000000000009ffffffffffffffffffffffffb090000000000000000000000006cffffffffffffffffffffffcf0000000000000000000000000038ffffffffffffffffffffff9b0000000000000000000000000009fcffffffffffffffffffff670000000000000000000000000000d0ffffffffffffffffffff3300000000000000000000000000009dfffffffffffffffffff906000000000000000000000000000069ffffffffffffffffffca00000000000000000000000000000035ffffffffffffffffff9600000000000000000000000000000007faffffffffffffffff6200000000000000000000000000000000ceffffffffffffffff2e000000000000000000000000000000009afffffffffffffff7040000000000000000000000000000000066ffffffffffffffc6000000000000000000000000000000000032ffffffffffffff92000000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 86 } }, { "encoding": 87, - "x": 0, + "x": 1, "y": 0, - "width": 12, - "height": 14, - "dx": 12, + "width": 36, + "height": 43, + "dx": 38, "glyphBitmap": { - "width": 12, - "height": 14, - "pixelArray": "5efcb90000cefb0b007bfc903bffdb0003f8ff33009cff6e17fffa0224ffff5d00bcff4a01f3ff1b4effff8800dcff2600cfff3b77fffcb202fafd0600abff5aa1fac2dd1bffde000087ff7acbd394fe45ffba000063ff9bf4a869ff8cff9600003fffd8ff7e3fffd7ff7200001bffffff5314ffffff4e000002f6ffff2900eaffff2a000000d3fffa0500bffffe08000000afffd4000095ffe2000000008bffa900006affbe0000" + "width": 36, + "height": 43, + "pixelArray": "32fcfcfcfcfcfc5f00000000000000abfcfcfcfcbb0000000000000034fcfcfcfcfcfc3e0fffffffffffff8000000000000000d7ffffffffe80000000000000055ffffffffffff1a00eaffffffffffa000000000000006fcffffffffff1300000000000075fffffffffff40100c5ffffffffffc10000000000002bffffffffffff3e00000000000095ffffffffffd00000a1ffffffffffe100000000000056ffffffffffff69000000000000b6ffffffffffac00007cfffffffffffd05000000000080ffffffffffff94000000000000d6ffffffffff87000058ffffffffffff220000000000aaffffffffffffc0000000000001f6ffffffffff63000033ffffffffffff420000000000d4ffffffffffffeb000000000017ffffffffffff3e00000fffffffffffff620000000005faffffffffffffff160000000037ffffffffffff1a000000eaffffffffff830000000028ffffffffffffffff410000000057fffffffffff401000000c5ffffffffffa30000000053ffffffffffffffff6c0000000078ffffffffffd000000000a1ffffffffffc4000000007dffffffffffffffff970000000098ffffffffffac000000007cffffffffffe400000000a7ffffffffffffffffc200000000b8ffffffffff870000000058fffffffffffe07000000d1ffffffffffffffffed01000000d9ffffffffff630000000033ffffffffffff25000004f8fffffffff4ffffffff19000002f8ffffffffff3e000000000fffffffffffff45000025ffffffffebbcffffffff44000019ffffffffffff1a0000000000eaffffffffff65000050ffffffffc090ffffffff6f00003afffffffffff4010000000000c5ffffffffff8600007affffffff9565ffffffff9a00005affffffffffd0000000000000a1ffffffffffa60000a4ffffffff6a3affffffffc500007affffffffffac0000000000007cffffffffffc70000ceffffffff3f0ffffffffff001009bffffffffff8700000000000058ffffffffffe70003f7ffffffff1400e3ffffffff1b00bbffffffffff6300000000000033ffffffffffff0922ffffffffe80000b7ffffffff4600dcffffffffff3e0000000000000fffffffffffff284dffffffffbd00008cffffffff7203faffffffffff1a00000000000000eaffffffffff4877ffffffff92000060ffffffff9d1cfffffffffff40100000000000000c5ffffffffff68a1ffffffff67000035ffffffffc83dffffffffffd00000000000000000a1ffffffffff89cbffffffff3c00000bfffffffff25effffffffffac00000000000000007cffffffffffabf4ffffffff11000000deffffffff9bffffffffff87000000000000000058ffffffffffe8ffffffffe500000000b2ffffffffe5ffffffffff63000000000000000033ffffffffffffffffffffba0000000087ffffffffffffffffffff3e00000000000000000fffffffffffffffffffff8f000000005bffffffffffffffffffff1a000000000000000000eaffffffffffffffffff640000000030fffffffffffffffffff401000000000000000000c5ffffffffffffffffff380000000008fdffffffffffffffffd000000000000000000000a1ffffffffffffffffff0e0000000000d9ffffffffffffffffac000000000000000000007cffffffffffffffffe2000000000000aeffffffffffffffff870000000000000000000058ffffffffffffffffb700000000000082ffffffffffffffff630000000000000000000033ffffffffffffffff8c00000000000057ffffffffffffffff3e000000000000000000000fffffffffffffffff610000000000002bffffffffffffffff1a0000000000000000000000eaffffffffffffff3500000000000006fbfffffffffffff4010000000000000000000000c5ffffffffffffff0c00000000000000d4ffffffffffffd0000000000000000000000000a1ffffffffffffdf0000000000000000a9ffffffffffffac0000000000000000000000007cffffffffffffb400000000000000007dffffffffffff8700000000000000000000000058ffffffffffff89000000000000000052ffffffffffff6300000000000000000000000033ffffffffffff5e000000000000000026ffffffffffff3e000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 87 } }, @@ -1103,17 +13140,17 @@ "encoding": 88, "x": 0, "y": 0, - "width": 9, - "height": 14, - "dx": 8, + "width": 26, + "height": 43, + "dx": 26, "glyphBitmap": { - "width": 9, - "height": 14, - "pixelArray": "8bfcc9000040fce70627ffff35009bff900000bdff9f07efff30000054fff761ffcf00000005e7fff4ff6e0000000083fffffa14000000002bffffad000000000067ffffa80000000000c7fffffa1700000027fff3e1ff7900000086ff9f78ffdf030003e4ff4316f9ff4a0045ffe40300a4ffb300a5ff8a00003afffe1f" + "width": 26, + "height": 43, + "pixelArray": "0ff2fcfcfcfcfcfc4b000000000000000000b7fcfcfcfcfcfb21009cffffffffffffb5000000000000000018fdffffffffffbe000032fffffffffffffe22000000000000006effffffffffff5c000000c9ffffffffffff8900000000000000c9fffffffffff10a0000005fffffffffffffeb08000000000025ffffffffffff990000000009edffffffffffff5c00000000007fffffffffffff3700000000008cffffffffffffc60000000001d9ffffffffffd501000000000024ffffffffffffff3100000034ffffffffffff7300000000000000b8ffffffffffff9a0000008ffffffffffffb17000000000000004ffffffffffffff5100003e7ffffffffffaf000000000000000004e2ffffffffffff6e0045ffffffffffff4d0000000000000000007cffffffffffffd8019fffffffffffe70400000000000000000018fbffffffffffff4bf2ffffffffff890000000000000000000000a8ffffffffffffe8ffffffffffff2800000000000000000000003fffffffffffffffffffffffffc600000000000000000000000001d5ffffffffffffffffffffff64000000000000000000000000006bfffffffffffffffffffff50e000000000000000000000000000ef4ffffffffffffffffffa000000000000000000000000000000098ffffffffffffffffff3e0000000000000000000000000000002fffffffffffffffffdb0100000000000000000000000000000004f1ffffffffffffff7a000000000000000000000000000000004cffffffffffffffff2400000000000000000000000000000000adffffffffffffffff6000000000000000000000000000000015fbffffffffffffffffcb00000000000000000000000000000070ffffffffffffffffffff360000000000000000000000000001d1ffffffffffffffffffffa10000000000000000000000000032fffffffffffffffffffffff81400000000000000000000000093ffffffffffffffffffffffff77000000000000000000000007edfffffffffff6ffffffffffffe0030000000000000000000055ffffffffffff63f7ffffffffffff4d00000000000000000000b7ffffffffffed079cffffffffffffb80000000000000000001bfdffffffffff950031ffffffffffffff25000000000000000079ffffffffffff360000c5ffffffffffff8d0000000000000001daffffffffffd80100005affffffffffffef0a0000000000003bffffffffffff7a00000006e8ffffffffffff630000000000009cfffffffffffe1e0000000083ffffffffffffce01000000000bf3ffffffffffbd00000000001cfcffffffffffff39000000005fffffffffffff5f000000000000acffffffffffffa400000000c0fffffffffff50c00000000000040fffffffffffff916000022ffffffffffffa20000000000000001d4ffffffffffff7a000082ffffffffffff44000000000000000069ffffffffffffe20402e1ffffffffffe30300000000000000000df2ffffffffffff5044ffffffffffff870000000000000000000092ffffffffffffbb" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 88 } }, @@ -1121,233 +13158,233 @@ "encoding": 89, "x": 0, "y": 0, - "width": 9, - "height": 14, - "dx": 8, + "width": 26, + "height": 43, + "dx": 26, "glyphBitmap": { - "width": 9, - "height": 14, - "pixelArray": "adfca4000050fcf0085effef05009bffaa0011fbff4101e5ff580000b8ff8f30fff90e000065ffde7bffb400000016fdffe4ff6200000000c0fffffd14000000006dffffbe00000000001dffff71000000000008ffff5c000000000008ffff5c000000000008ffff5c000000000008ffff5c000000000008ffff5c000000" + "width": 26, + "height": 43, + "pixelArray": "5afcfcfcfcfcfceb05000000000000000007f0fcfcfcfcfcfc3a0ffaffffffffffff40000000000000000045ffffffffffffe60200b4ffffffffffff8f000000000000000090ffffffffffff95000060ffffffffffffde0100000000000001dcffffffffffff41000012fbffffffffffff2c00000000000027ffffffffffffeb04000000b9ffffffffffff7b00000000000072ffffffffffff9a0000000065ffffffffffffca000000000000bdffffffffffff470000000015fdffffffffffff1a000000000ffbffffffffffef060000000000bdffffffffffff670000000054ffffffffffffa000000000000069ffffffffffffb500000000a0ffffffffffff4d00000000000018fefffffffffff80c000002e9fffffffffff30800000000000000c2ffffffffffff53000036ffffffffffffa600000000000000006effffffffffffa1000082ffffffffffff5300000000000000001cffffffffffffed0400cdfffffffffff50a000000000000000000c6ffffffffffff3e1affffffffffffac0000000000000000000072ffffffffffff8d64ffffffffffff590000000000000000000020ffffffffffffdcaffffffffffff80e0000000000000000000000cbfffffffffffffbffffffffffb200000000000000000000000077ffffffffffffffffffffffff5e00000000000000000000000024fffffffffffffffffffffffb1100000000000000000000000000cfffffffffffffffffffffb800000000000000000000000000007bffffffffffffffffffff64000000000000000000000000000028fffffffffffffffffffd15000000000000000000000000000000d4ffffffffffffffffbe0000000000000000000000000000000080ffffffffffffffff6a000000000000000000000000000000002cfffffffffffffffe190000000000000000000000000000000001dbffffffffffffc7000000000000000000000000000000000000c4ffffffffffffb0000000000000000000000000000000000000c4ffffffffffffb0000000000000000000000000000000000000c4ffffffffffffb0000000000000000000000000000000000000c4ffffffffffffb0000000000000000000000000000000000000c4ffffffffffffb0000000000000000000000000000000000000c4ffffffffffffb0000000000000000000000000000000000000c4ffffffffffffb0000000000000000000000000000000000000c4ffffffffffffb0000000000000000000000000000000000000c4ffffffffffffb0000000000000000000000000000000000000c4ffffffffffffb0000000000000000000000000000000000000c4ffffffffffffb0000000000000000000000000000000000000c4ffffffffffffb0000000000000000000000000000000000000c4ffffffffffffb0000000000000000000000000000000000000c4ffffffffffffb0000000000000000000000000000000000000c4ffffffffffffb0000000000000000000000000000000000000c4ffffffffffffb0000000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 89 } }, { "encoding": 90, - "x": 0, + "x": 1, "y": 0, - "width": 7, - "height": 14, - "dx": 7, + "width": 21, + "height": 43, + "dx": 23, "glyphBitmap": { - "width": 7, - "height": 14, - "pixelArray": "38fcfcfcfcfccd24a4a4a4efffb200000011faff5c00000061fff70e000000b7ffad00000013fbff5600000063fff40b000000baffa700000015fcff5000000066fff108000000bcffa100000016fdff4a0000005effffa29c9c8268ffffffffffd4" + "width": 21, + "height": 43, + "pixelArray": "008efcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc3f0090ffffffffffffffffffffffffffffffffffff400090ffffffffffffffffffffffffffffffffffff400090ffffffffffffffffffffffffffffffffffff3a0090ffffffffffffffffffffffffffffffffffed06000c14141414141414141416e9ffffffffffff990000000000000000000000003effffffffffffff4000000000000000000000000096ffffffffffffe503000000000000000000000004ebffffffffffff8e00000000000000000000000046ffffffffffffff350000000000000000000000009effffffffffffdc01000000000000000000000007f0ffffffffffff830000000000000000000000004effffffffffffff2a000000000000000000000000a6ffffffffffffd10000000000000000000000000bf5ffffffffffff7800000000000000000000000056ffffffffffffff20000000000000000000000000aeffffffffffffc60000000000000000000000000ef8ffffffffffff6d0000000000000000000000005dfffffffffffffd17000000000000000000000000b5ffffffffffffbb00000000000000000000000013fbffffffffffff6200000000000000000000000065fffffffffffff910000000000000000000000000bdffffffffffffb000000000000000000000000019feffffffffffff570000000000000000000000006dfffffffffffff40a000000000000000000000000c5ffffffffffffa50000000000000000000000001fffffffffffffff4c00000000000000000000000075ffffffffffffee06000000000000000000000000cdffffffffffff9a00000000000000000000000026ffffffffffffff410000000000000000000000007dffffffffffffe503000000000000000000000001d6ffffffffffff8e0000000000000000000000002dffffffffffffff3500000000000000000000000085ffffffffffffdc01000000000000000000000001ddffffffffffff8300000000000000000000000035ffffffffffffff2a0000000000000000000000008dffffffffffffd100000000000000000000000002e4ffffffffffff810c0c0c0c0c0c0c0c0c0c0c0422ffffffffffffffffffffffffffffffffffffff4424ffffffffffffffffffffffffffffffffffffff4424ffffffffffffffffffffffffffffffffffffff4424ffffffffffffffffffffffffffffffffffffff4424ffffffffffffffffffffffffffffffffffffff44" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 90 } }, { "encoding": 91, - "x": 0, - "y": -3, - "width": 6, - "height": 17, - "dx": 6, + "x": 3, + "y": -9, + "width": 13, + "height": 52, + "dx": 18, "glyphBitmap": { - "width": 6, - "height": 17, - "pixelArray": "05fcfcfcfc1405ffffa7a40d05ffff08000005ffff08000006ffff08000006ffff08000006ffff08000006ffff08000007ffff08000007ffff08000007ffff08000007ffff08000008ffff08000008ffff08000008ffff08000008ffffa3a00a08ffffffff10" + "width": 13, + "height": 52, + "pixelArray": "f1fcfcfcfcfcfcfcfcfcfcfccdf5ffffffffffffffffffffffd0f5ffffffffffffffffffffffd0f5ffffffffff7a040404040404f5ffffffffff77000000000000f5ffffffffff77000000000000f5ffffffffff77000000000000f5ffffffffff77000000000000f5ffffffffff77000000000000f5ffffffffff77000000000000f5ffffffffff77000000000000f5ffffffffff77000000000000f5ffffffffff77000000000000f6ffffffffff77000000000000f6ffffffffff77000000000000f6ffffffffff76000000000000f6ffffffffff76000000000000f6ffffffffff76000000000000f6ffffffffff76000000000000f6ffffffffff76000000000000f6ffffffffff76000000000000f6ffffffffff76000000000000f6ffffffffff76000000000000f6ffffffffff76000000000000f6ffffffffff76000000000000f6ffffffffff76000000000000f7ffffffffff76000000000000f7ffffffffff75000000000000f7ffffffffff75000000000000f7ffffffffff75000000000000f7ffffffffff75000000000000f7ffffffffff75000000000000f7ffffffffff75000000000000f7ffffffffff75000000000000f7ffffffffff75000000000000f7ffffffffff75000000000000f7ffffffffff75000000000000f7ffffffffff75000000000000f7ffffffffff74000000000000f8ffffffffff74000000000000f8ffffffffff74000000000000f8ffffffffff74000000000000f8ffffffffff74000000000000f8ffffffffff74000000000000f8ffffffffff74000000000000f8ffffffffff74000000000000f8ffffffffff74000000000000f8ffffffffff74000000000000f8ffffffffff74000000000000f8ffffffffffffffffffffffc8f8ffffffffffffffffffffffc8f8ffffffffffffffffffffffc8" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 91 } }, { "encoding": 92, - "x": 0, + "x": 1, "y": 0, - "width": 7, - "height": 14, - "dx": 7, + "width": 19, + "height": 43, + "dx": 21, "glyphBitmap": { - "width": 7, - "height": 14, - "pixelArray": "40fc5a0000000007f5a20000000000b4e802000000006dff310000000026ff780000000001dec0000000000097fb0d0000000050ff4f000000000efb960000000000c1de01000000007aff250000000033ff6d0000000002eab40000000000a4f508" + "width": 19, + "height": 43, + "pixelArray": "06f0fcfcfcfb1600000000000000000000000000b1ffffffff5b0000000000000000000000000069ffffffffa30000000000000000000000000021ffffffffea0200000000000000000000000000d8ffffffff340000000000000000000000000090ffffffff7c0000000000000000000000000047ffffffffc50000000000000000000000000009f7fffffffd1100000000000000000000000000b6ffffffff55000000000000000000000000006effffffff9d0000000000000000000000000026ffffffffe50100000000000000000000000001ddffffffff2e0000000000000000000000000095ffffffff76000000000000000000000000004cffffffffbf000000000000000000000000000cf9fffffffb0d00000000000000000000000000bcffffffff4f0000000000000000000000000073ffffffff98000000000000000000000000002bffffffffe00100000000000000000000000001e2ffffffff28000000000000000000000000009affffffff700000000000000000000000000052ffffffffb9000000000000000000000000000ffbfffffff80a00000000000000000000000000c1ffffffff490000000000000000000000000078ffffffff920000000000000000000000000030ffffffffda0000000000000000000000000001e7ffffffff23000000000000000000000000009fffffffff6b0000000000000000000000000057ffffffffb30000000000000000000000000012fdfffffff50700000000000000000000000000c6ffffffff44000000000000000000000000007effffffff8c0000000000000000000000000035ffffffffd40000000000000000000000000002ebffffffff1d00000000000000000000000000a4ffffffff65000000000000000000000000005cffffffffad0000000000000000000000000016fffffffff10500000000000000000000000000cbffffffff3e0000000000000000000000000083ffffffff86000000000000000000000000003affffffffce0000000000000000000000000004efffffffff1800000000000000000000000000aaffffffff5f0000000000000000000000000061ffffffffa7000000000000000000000000001affffffffed03" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 92 } }, { "encoding": 93, - "x": 0, - "y": -3, - "width": 5, - "height": 17, - "dx": 5, + "x": 1, + "y": -9, + "width": 13, + "height": 52, + "dx": 17, "glyphBitmap": { - "width": 5, - "height": 17, - "pixelArray": "9efcfcfc7767a4dbff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff78000098ff7864a0d9ff78a0ffffff78" + "width": 13, + "height": 52, + "pixelArray": "d1fcfcfcfcfcfcfcfcfcfcfce9d4ffffffffffffffffffffffecd4ffffffffffffffffffffffec04040404040486ffffffffffec00000000000084ffffffffffec00000000000084ffffffffffec00000000000084ffffffffffec00000000000084ffffffffffec00000000000084ffffffffffec00000000000084ffffffffffec00000000000084ffffffffffec00000000000084ffffffffffec00000000000084ffffffffffec00000000000084ffffffffffec00000000000084ffffffffffec00000000000083ffffffffffec00000000000083ffffffffffec00000000000083ffffffffffec00000000000083ffffffffffec00000000000083ffffffffffec00000000000083ffffffffffec00000000000083ffffffffffec00000000000083ffffffffffec00000000000083ffffffffffec00000000000083ffffffffffec00000000000083ffffffffffec00000000000083ffffffffffec00000000000082ffffffffffec00000000000082ffffffffffec00000000000082ffffffffffec00000000000082ffffffffffec00000000000082ffffffffffec00000000000082ffffffffffec00000000000082ffffffffffec00000000000082ffffffffffec00000000000082ffffffffffec00000000000082ffffffffffec00000000000082ffffffffffec00000000000081ffffffffffec00000000000081ffffffffffec00000000000081ffffffffffec00000000000081ffffffffffec00000000000081ffffffffffec00000000000081ffffffffffec00000000000081ffffffffffec00000000000081ffffffffffec00000000000081ffffffffffec00000000000081ffffffffffec00000000000081ffffffffffecd4ffffffffffffffffffffffecd4ffffffffffffffffffffffecd4ffffffffffffffffffffffec" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 93 } }, { "encoding": 94, - "x": 0, - "y": 8, - "width": 8, - "height": 6, - "dx": 8, + "x": 1, + "y": 25, + "width": 22, + "height": 18, + "dx": 25, "glyphBitmap": { - "width": 8, - "height": 6, - "pixelArray": "00004dfcfc3200000000bbffffa000000029ffb9d2f916000095ff5d76ff7d000ff4f50c1dfee7062c846100006e8421" + "width": 22, + "height": 18, + "pixelArray": "0000000000000023fbfcfcfcfcfcbe00000000000000000000000000008cffffffffffffff2d0000000000000000000000000aeeffffffffffffff9800000000000000000000000062fffffffffffffffff5100000000000000000000001cdffffffffffffffffff6f0000000000000000000038ffffffffffffffffffffda02000000000000000000a3ffffffffffa6ffffffffff47000000000000000016f9ffffffffc828ffffffffffb3000000000000000079ffffffffff6e00cdfffffffffe2200000000000003e1fffffffffd180072ffffffffff8b0000000000004fffffffffffb900001afeffffffffee0a0000000000b9ffffffffff5f000000bcffffffffff630000000026fffffffffff70e00000061ffffffffffcf010000008fffffffffffaa000000000ff8ffffffffff3a00000bf0ffffffffff500000000000abffffffffffa6000065ffffffffffef07000000000050fffffffffffb1901d0ffffffffff9b00000000000007efffffffffff7e118484848484842d000000000000005b84848484846c" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 94 } }, { "encoding": 95, "x": 0, - "y": -3, - "width": 7, - "height": 2, - "dx": 6, + "y": -8, + "width": 19, + "height": 6, + "dx": 19, "glyphBitmap": { - "width": 7, - "height": 2, - "pixelArray": "a0a0a0a0a0a00affffffffffff10" + "width": 19, + "height": 6, + "pixelArray": "1010101010101010101010101010101010100fffffffffffffffffffffffffffffffffffffe4ffffffffffffffffffffffffffffffffffffe4ffffffffffffffffffffffffffffffffffffe4ffffffffffffffffffffffffffffffffffffe4ffffffffffffffffffffffffffffffffffffe4" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 95 } }, { "encoding": 96, - "x": 0, - "y": 10, - "width": 5, - "height": 4, - "dx": 5, + "x": 2, + "y": 31, + "width": 12, + "height": 12, + "dx": 16, "glyphBitmap": { - "width": 5, - "height": 4, - "pixelArray": "04c8fc6100002af8b700000073fb120000010401" + "width": 12, + "height": 12, + "pixelArray": "18effcfcfcfcfcfc270000000078ffffffffffff700000000007dcffffffffffb900000000004ffffffffffff80a0000000001baffffffffff4a00000000002afcffffffff9300000000000090ffffffffdb00000000000011ecffffffff2400000000000067ffffffff6d00000000000003d0ffffffb6000000000000003efffffff609000000000000000404040401" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 96 } }, { "encoding": 97, - "x": 0, + "x": 2, "y": 0, - "width": 8, - "height": 10, - "dx": 8, + "width": 21, + "height": 31, + "dx": 24, "glyphBitmap": { - "width": 8, - "height": 10, - "pixelArray": "0024aff1f1a7100001cfffc9e5ff8d0021ffff1770ffd300145c5c0370ffe000000040bfffffe000007cffd287ffe00022fffd1e64ffe0004fffef026bffe1002affffb7e4ffeb00007df3db51fffe05" + "width": 21, + "height": 31, + "pixelArray": "0000000000196aafd4f2faf2d1a6520700000000000000000c8bf9ffffffffffffffffffdb3c00000000000015d1fffffffffffffffffffffffffb4a0000000001b5ffffffffffffffffffffffffffffed1100000053ffffffffffffffffffffffffffffffff87000000bfffffffffffff9925249affffffffffffe1010011ffffffffffffdb03000005eeffffffffffff290047ffffffffffff9800000000bfffffffffffff4e0071ffffffffffff7f00000000a3ffffffffffff6b0086ffffffffffff70000000009dffffffffffff74002c50505050505020000000009cffffffffffff7400000000000000000000000004aeffffffffffff74000000000000000000002184e5ffffffffffffff74000000000000000143b5feffffffffffffffffff740000000000002fc4ffffffffffffffffffffffff74000000000889fdfffffffffff2daffffffffffff7400000019cdffffffffffffbb1a9cffffffffffff74000010d7ffffffffffff8903009cffffffffffff7400009fffffffffffff8e0000009cffffffffffff740024feffffffffffd2040000009cffffffffffff740079ffffffffffff5b000000009cffffffffffff7400b1ffffffffffff17000000009cffffffffffff7400d9ffffffffffff04000000009cffffffffffff7400e9ffffffffffff21000000009cffffffffffff7500e2ffffffffffff6a00000024e7ffffffffffff7a00baffffffffffffed4a135aeaffffffffffffff84006dfffffffffffffffffffffff6ffffffffffff96000fe9ffffffffffffffffffff7affffffffffffa9000054ffffffffffffffffffb506fbffffffffffbc00000066faffffffffffffc40e00d1ffffffffffd5000000002b9edffdf1c366050000a1fffffffffff401" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 97 } }, { "encoding": 98, - "x": 0, + "x": 2, "y": 0, - "width": 8, - "height": 14, - "dx": 8, + "width": 22, + "height": 43, + "dx": 25, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "18fcfc3c0000000018ffff3c0000000018ffff3c0000000018ffff3c0000000018ffff88d4f0700018ffffdbc4fffd1a18ffff3d09fbff5618ffff3c00edff6418ffff3c00ecff6418ffff3c00ecff6418ffff3c00edff6318ffff3c07fbff5018ffffcfbbfffa1518ffff95e0f16800" + "width": 22, + "height": 43, + "pixelArray": "28fcfcfcfcfcfcfc180000000000000000000000000028ffffffffffffff180000000000000000000000000028ffffffffffffff180000000000000000000000000028ffffffffffffff180000000000000000000000000028ffffffffffffff180000000000000000000000000028ffffffffffffff180000000000000000000000000028ffffffffffffff180000000000000000000000000028ffffffffffffff180000000000000000000000000028ffffffffffffff180000000000000000000000000028ffffffffffffff180000000000000000000000000028ffffffffffffff180000000000000000000000000028ffffffffffffff180000000000000000000000000028ffffffffffffff18000c6fbceef8d68f1b0000000028ffffffffffffff1851ecfffffffffffff04100000028ffffffffffffff9bfffffffffffffffffff527000028ffffffffffffffffffffffffffffffffffffaf000028ffffffffffffffffffffffffffffffffffffff220028fffffffffffffff7812a228bffffffffffffff700028ffffffffffffff3800000001c2ffffffffffffb10028ffffffffffffff18000000006effffffffffffe00028ffffffffffffff180000000045fffffffffffffb0228ffffffffffffff180000000035ffffffffffffff0a28ffffffffffffff180000000031ffffffffffffff1028ffffffffffffff180000000030ffffffffffffff1028ffffffffffffff180000000030ffffffffffffff1028ffffffffffffff180000000030ffffffffffffff1028ffffffffffffff180000000030ffffffffffffff1028ffffffffffffff180000000030ffffffffffffff1028ffffffffffffff180000000030ffffffffffffff1028ffffffffffffff180000000030ffffffffffffff1028ffffffffffffff180000000030ffffffffffffff1028ffffffffffffff180000000030ffffffffffffff1028ffffffffffffff180000000032ffffffffffffff0e28ffffffffffffff180000000037fffffffffffffe0428ffffffffffffff180000000047ffffffffffffe90028ffffffffffffff18000000006dffffffffffffcc0028ffffffffffffff1800000000b5ffffffffffff9b0028ffffffffffffffc46321156effffffffffffff540028fffffffffffffffffffffffffffffffffffff2090028ffffffffffffffffffffffffffffffffffff8c000028ffffffffffffffe6ffffffffffffffffffdb10000028ffffffffffffff2798ffffffffffffffdd2000000028ffffffffffffff18002c95d6fbf4c1760d00000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 98 } }, { "encoding": 99, - "x": 0, + "x": 2, "y": 0, - "width": 7, - "height": 10, - "dx": 7, + "width": 20, + "height": 31, + "dx": 23, "glyphBitmap": { - "width": 7, - "height": 10, - "pixelArray": "0030c3f6eda41003e0ffc8e3ff8c2fffff1964ffcb4affff0944c4a34cffff080000004cffff080000004affff0954f4cb30ffff1865ffc904e2ffc8e2ff890034c8faf0a30e" + "width": 20, + "height": 31, + "pixelArray": "00000000013992c1e8f9f9e7c4944403000000000000002ecbffffffffffffffffffffce3600000000003ef5fffffffffffffffffffffffff84200000011e8ffffffffffffffffffffffffffffe20a00007fffffffffffffffffffffffffffffffff710004edffffffffffff9324228dffffffffffffc5003affffffffffffdb01000001d8fffffffffffd0679ffffffffffffa600000000a1ffffffffffff249bffffffffffff860000000083ffffffffffff3eb9ffffffffffff77000000007dffffffffffff44c9ffffffffffff74000000007cffffffffffff44ccffffffffffff74000000005cbcbcbcbcbcbc32ccffffffffffff74000000000000000000000000ccffffffffffff74000000000000000000000000ccffffffffffff74000000000000000000000000ccffffffffffff74000000000000000000000000ccffffffffffff74000000000000000000000000ccffffffffffff74000000000000000000000000ccffffffffffff74000000001c3838383838380fccffffffffffff74000000007cffffffffffff44c8ffffffffffff74000000007cffffffffffff44b9ffffffffffff77000000007cffffffffffff449bffffffffffff830000000081ffffffffffff3d79ffffffffffffa1000000009dffffffffffff2039ffffffffffffda01000001d3fffffffffff90304edffffffffffff901d1a82ffffffffffffb8000080ffffffffffffffffffffffffffffffff60000012e9ffffffffffffffffffffffffffffd30400000040f6fffffffffffffffffffffffff02f000000000030ceffffffffffffffffffffc02800000000000000013d96c4ecfcfbe9c4913d0100000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 99 } }, { "encoding": 100, - "x": 0, + "x": 2, "y": 0, - "width": 8, - "height": 14, - "dx": 8, + "width": 21, + "height": 43, + "dx": 25, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "000000002cfcfc28000000002cffff28000000002cffff28000000002cffff28004ce3e99affff2804e9ffd2ceffff282fffff272cffff2846ffff112cffff2848ffff102cffff2848ffff102cffff2847ffff112cffff2834ffff222cffff2806f4ffccc5ffff28005be6ed9cffff28" + "width": 21, + "height": 43, + "pixelArray": "00000000000000000000000000edfcfcfcfcfcfc4f00000000000000000000000000f0ffffffffffff5000000000000000000000000000f0ffffffffffff5000000000000000000000000000f0ffffffffffff5000000000000000000000000000f0ffffffffffff5000000000000000000000000000f0ffffffffffff5000000000000000000000000000f0ffffffffffff5000000000000000000000000000f0ffffffffffff5000000000000000000000000000f0ffffffffffff5000000000000000000000000000f0ffffffffffff5000000000000000000000000000f0ffffffffffff5000000000000000000000000000f0ffffffffffff50000000014daee4f9e8b3530300f0ffffffffffff50000003a4ffffffffffffffc724f0ffffffffffff50000095ffffffffffffffffffeefaffffffffffff500038ffffffffffffffffffffffffffffffffffff5000a6ffffffffffffffffffffffffffffffffffff5009f4ffffffffffffce371d5dd8ffffffffffffff5044fffffffffffffe2200000009f4ffffffffffff5075ffffffffffffcd0000000000f0ffffffffffff5095ffffffffffff9e0000000000f0ffffffffffff50abffffffffffff8a0000000000f0ffffffffffff50bcffffffffffff880000000000f0ffffffffffff50c0ffffffffffff880000000000f0ffffffffffff50c0ffffffffffff880000000000f0ffffffffffff50c0ffffffffffff880000000000f0ffffffffffff50c0ffffffffffff880000000000f0ffffffffffff50c0ffffffffffff880000000000f0ffffffffffff50c0ffffffffffff880000000000f0ffffffffffff50c0ffffffffffff880000000000f0ffffffffffff50c0ffffffffffff880000000000f0ffffffffffff50c0ffffffffffff880000000000f0ffffffffffff50bfffffffffffff890000000000f0ffffffffffff50b7ffffffffffff8e0000000000f0ffffffffffff50a1ffffffffffff9d0000000000f0ffffffffffff5088ffffffffffffc00000000000f0ffffffffffff505dfffffffffffffd2100000000f0ffffffffffff5024ffffffffffffffcb37134397feffffffffffff5001d3ffffffffffffffffffffffffffffffffffff500068ffffffffffffffffffffffffffffffffffff500005c9fffffffffffffffffffbfdffffffffffff50000012bdffffffffffffffde3ef0ffffffffffff500000000352b2e5fdf1c0680b00f0ffffffffffff50" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 100 } }, { "encoding": 101, - "x": 0, + "x": 2, "y": 0, - "width": 7, - "height": 10, - "dx": 8, + "width": 20, + "height": 31, + "dx": 24, "glyphBitmap": { - "width": 7, - "height": 10, - "pixelArray": "002dc1f6ee9f0b03ddffc3deff832effff0f58ffcb4affff9ebcffe14cffffffffffe44cffff080404044affff042b887930ffff1460ffd504e3ffcde6ff8d0035c7f9efa00d" + "width": 20, + "height": 31, + "pixelArray": "0000000000318cbee6f8f8e8c4913f010000000000000024c0ffffffffffffffffffffbe1d000000000033efffffffffffffffffffffffffe41d0000000ce0ffffffffffffffffffffffffffffbb01000075ffffffffffffffffffffffffffffffff3c0002e7ffffffffffff8e222389ffffffffffffa20034ffffffffffffd301000001c8fffffffffff00375ffffffffffff9b000000008affffffffffff2898ffffffffffff780000000067ffffffffffff4bb7ffffffffffff680000000061ffffffffffff60c8ffffffffffff640000000060ffffffffffff75ccffffffffffff640000000060ffffffffffff7dccfffffffffffffefcfcfcfcfeffffffffffff80ccffffffffffffffffffffffffffffffffffff80ccffffffffffffffffffffffffffffffffffff80ccffffffffffffffffffffffffffffffffffff80ccffffffffffff67040404040404040404040402ccffffffffffff64000000000000000000000000ccffffffffffff64000000000000000000000000ccffffffffffff64000000000000000000000000c8ffffffffffff640000000041acacacacacac54b8ffffffffffff660000000060ffffffffffff7b9affffffffffff710000000065ffffffffffff7277ffffffffffff8c0000000086ffffffffffff5237ffffffffffffd102000000c5ffffffffffff2b03ecffffffffffff8b1b1a80ffffffffffffdf01007effffffffffffffffffffffffffffffff7f000010e7ffffffffffffffffffffffffffffe20b0000003df4fffffffffffffffffffffffff23700000000002cc8ffffffffffffffffffffc02800000000000000013691c0e8fbfceac5923b0100000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 101 } }, @@ -1355,251 +13392,251 @@ "encoding": 102, "x": 0, "y": 0, - "width": 6, - "height": 14, - "dx": 5, + "width": 16, + "height": 42, + "dx": 16, "glyphBitmap": { - "width": 6, - "height": 14, - "pixelArray": "000caef5f00f006dfffcb30d0098ffbe000000a0ffb00000aefffffffc1071deffe4a40b00a0ffb0000000a0ffb0000000a0ffb0000000a0ffb0000000a0ffb0000000a0ffb0000000a0ffb0000000a0ffb00000" + "width": 16, + "height": 42, + "pixelArray": "00000000000000000000020a07000000000000000000003ea1daf9fffff2da95000000000008acffffffffffffffffc800000000008effffffffffffffffffc80000000014faffffffffffffffffffc8000000005affffffffffffffffffffc8000000008ffffffffffffffc5d0d142700000000a9ffffffffffffb20000000000000000b6ffffffffffff830000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c000000000cfcfcfcfffffffffffffffefcfcfcc50cffffffffffffffffffffffffffffc80cffffffffffffffffffffffffffffc80cffffffffffffffffffffffffffffc80cffffffffffffffffffffffffffffc801141414c2ffffffffffff871414141000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c0000000000000000bcffffffffffff7c00000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 102 } }, { "encoding": 103, - "x": 0, - "y": -3, - "width": 9, - "height": 14, - "dx": 8, + "x": 1, + "y": -9, + "width": 25, + "height": 41, + "dx": 25, "glyphBitmap": { - "width": 9, - "height": 14, - "pixelArray": "000000000000000f00002abbf6e56486d40101d9ffc2e1ffdb680428fff70457ffa7000042ffe60044ffcf00002ffff40454ffc2000003d3ffbaddff7d0000007df2f8f39d0800002cfe9b1b03000000002cfafffffdda73010002a8e99eb9f2ff430066ff84000068ff6f0096ffeeada6e7ff440020b0ecfffdda7c0100" + "width": 25, + "height": 41, + "pixelArray": "000000000000000000000000000000000000000000286200000000000000002686bde7f9f5d8a74e020000000687fcf50e000000000011a4ffffffffffffffffffc2170012c5ffffff67000000001dddffffffffffffffffffffffd119d0ffffffffcc00000002caffffffffffffffffffffffffffeeffffffffffee1a00005affffffffffffffffffffffffffffffffffffbf5506000000d0fffffffffffc6f202382ffffffffffffb03000000000001dffffffffffff9300000000b6ffffffffff510000000000005effffffffffff500000000077ffffffffffa800000000000080ffffffffffff30000000005affffffffffea0100000000009fffffffffffff150000000040ffffffffffff170000000000b0ffffffffffff0b0000000038ffffffffffff330000000000b2ffffffffffff090000000037ffffffffffff420000000000a9ffffffffffff0e000000003effffffffffff3e00000000008effffffffffff1e0000000058ffffffffffff2900000000006affffffffffff440000000076ffffffffffff0a00000000002fffffffffffff9100000000b1ffffffffffdc00000000000001d4fffffffffffa60090e6fffffffffffff91000000000000004cffffffffffffffffffffffffffffffff33000000000000000092ffffffffffffffffffffffffffffa900000000000000000002a4ffffffffffffffffffffffffd3100000000000000000003aedffffffffffffffffffffffad150000000000000000003bf3ffffff97bdebfffffad4993a010000000000000000001deeffffffc00000000a1004000000000000000000000000008dffffffff9b00000000000000000000000000000000000000c5ffffffffffbc7b583b210800000000000000000000000000c5ffffffffffffffffffffffeed4b4813f020000000000000075ffffffffffffffffffffffffffffffffdd5300000000000006b0ffffffffffffffffffffffffffffffffff850000000000000155e3ffffffffffffffffffffffffffffffff4400000000000695ffffffffaebed5ecffffffffffffffffffbb000000000bc0ffffffff8700000000051d4fa2fffffffffffd08000001aaffffffffec0a0000000000000000a2ffffffffff2b000040ffffffffffae0000000000000000006bffffffffff3600009dffffffffffcb0100000000000000009effffffffff260000cbffffffffffffbd613622141321499bfffffffffff9040000c8ffffffffffffffffffffffffffffffffffffffffb500000087ffffffffffffffffffffffffffffffffffffffff4400000011dbffffffffffffffffffffffffffffffffffff8e0000000000169dfaffffffffffffffffffffffffffffeb700100000000000000115b9ac5e1f3fdfffffff9e2c898580a000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 103 } }, { "encoding": 104, - "x": 0, + "x": 2, "y": 0, - "width": 8, - "height": 14, - "dx": 8, + "width": 21, + "height": 43, + "dx": 25, "glyphBitmap": { - "width": 8, - "height": 14, - "pixelArray": "10fcfc3f0000000010ffff400000000010ffff400000000010ffff400000000010ffff6fb8f6b30310ffffe9beffff3b10ffff4309ffff4c10ffff4004ffff4c10ffff4004ffff4c10ffff4004ffff4c10ffff4004ffff4c10ffff4004ffff4c10ffff4004ffff4c10ffff4004ffff4c" + "width": 21, + "height": 43, + "pixelArray": "18fcfcfcfcfcfcfc2000000000000000000000000018ffffffffffffff2000000000000000000000000018ffffffffffffff2000000000000000000000000018ffffffffffffff2000000000000000000000000018ffffffffffffff2000000000000000000000000018ffffffffffffff2000000000000000000000000018ffffffffffffff2000000000000000000000000018ffffffffffffff2000000000000000000000000018ffffffffffffff2000000000000000000000000018ffffffffffffff2000000000000000000000000018ffffffffffffff2000000000000000000000000018ffffffffffffff2000000000000000000000000018ffffffffffffff2000000b66ade1f9eaad2c000018ffffffffffffff200476effffffffffffff7390018ffffffffffffff42caffffffffffffffffffd80418fffffffffffffff6ffffffffffffffffffffff4818ffffffffffffffffffffffffffffffffffffff8c18ffffffffffffffffcc4d1a52f7ffffffffffffb118ffffffffffffff9305000000a8ffffffffffffbe18ffffffffffffff20000000007fffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc018ffffffffffffff200000000078ffffffffffffc0" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 104 } }, { "encoding": 105, - "x": 0, + "x": 3, "y": 0, - "width": 4, - "height": 14, - "dx": 4, - "glyphBitmap": { - "width": 4, - "height": 14, - "pixelArray": "08fcfc4b06a4a431000000000000000008fcfc4708ffff4808ffff4808ffff4808ffff4808ffff4808ffff4808ffff4808ffff4808ffff48" + "width": 8, + "height": 41, + "dx": 13, + "glyphBitmap": { + "width": 8, + "height": 41, + "pixelArray": "fcfcfcfcfcfcfc47ffffffffffffff48ffffffffffffff48ffffffffffffff48ffffffffffffff48ffffffffffffff480404040404040402000000000000000000000000000000000000000000000000fcfcfcfcfcfcfc3fffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40ffffffffffffff40" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 105 } }, { "encoding": 106, "x": -1, - "y": -3, - "width": 5, - "height": 17, - "dx": 4, + "y": -8, + "width": 12, + "height": 50, + "dx": 13, "glyphBitmap": { - "width": 5, - "height": 17, - "pixelArray": "0000e1fc73000093a44b000000000000000000000000ddfc6f0000e0ff700000e0ff700000e0ff700000e0ff700000e0ff700000e0ff700000e0ff700000e0ff700000e0ff700004eeff6d31d9ffff3734f7ec7d01" + "width": 12, + "height": 50, + "pixelArray": "0000000086fcfcfcfcfcfcc10000000088ffffffffffffc40000000088ffffffffffffc40000000088ffffffffffffc40000000088ffffffffffffc40000000088ffffffffffffc4000000000304040404040404000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007efcfcfcfcfcfcb60000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000080ffffffffffffb80000000081ffffffffffffb80000000092ffffffffffffb500000003d7ffffffffffffa025162b9fffffffffffffff75c4ffffffffffffffffffff26c4ffffffffffffffffffb100c4ffffffffffffffffe91e00c4ffffffffffffffce28000079caebfdfbdeaf5804000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 106 } }, { "encoding": 107, - "x": 0, + "x": 2, "y": 0, - "width": 9, - "height": 14, - "dx": 8, + "width": 24, + "height": 43, + "dx": 26, "glyphBitmap": { - "width": 9, - "height": 14, - "pixelArray": "18fcfc38000000000018ffff38000000000018ffff38000000000018ffff38000000000018ffff38009ffcd90818ffff383fffff4c0018ffff3ed6ffb3000018ffffb0fff822000018ffffffffef09000018ffffb3e3ff5d000018ffff3c89ffc3000018ffff382effff2a0018ffff3800d2ff8f0018ffff380076ffee08" + "width": 24, + "height": 43, + "pixelArray": "28fcfcfcfcfcfcfc0c00000000000000000000000000000028ffffffffffffff0c00000000000000000000000000000028ffffffffffffff0c00000000000000000000000000000028ffffffffffffff0c00000000000000000000000000000028ffffffffffffff0c00000000000000000000000000000028ffffffffffffff0c00000000000000000000000000000028ffffffffffffff0c00000000000000000000000000000028ffffffffffffff0c00000000000000000000000000000028ffffffffffffff0c00000000000000000000000000000028ffffffffffffff0c00000000000000000000000000000028ffffffffffffff0c00000000000000000000000000000028ffffffffffffff0c00000000000000000000000000000028ffffffffffffff0c00000000000097fcfcfcfcfcfcfc4128ffffffffffffff0c000000000035feffffffffffffab0028ffffffffffffff0c0000000003ccfffffffffffff61e0028ffffffffffffff0c0000000069ffffffffffffff7b000028ffffffffffffff0c00000015efffffffffffffdd08000028ffffffffffffff0c0000009effffffffffffff4c00000028ffffffffffffff0c00003bffffffffffffffb40000000028ffffffffffffff0c0004d1fffffffffffff9240000000028ffffffffffffff0c006fffffffffffffff85000000000028ffffffffffffff0c19f2ffffffffffffe30b000000000028ffffffffffffff0ca5ffffffffffffff5600000000000028ffffffffffffff4cffffffffffffffbe0100000000000028ffffffffffffffdeffffffffffffff320000000000000028ffffffffffffffffffffffffffffff5a0000000000000028ffffffffffffffffffffffffffffffc10000000000000028ffffffffffffffffffffffffffffffff2a00000000000028ffffffffffffffffec8bffffffffffff9000000000000028ffffffffffffffff5119fdffffffffffef09000000000028ffffffffffffff9c0000b8ffffffffffff5e000000000028ffffffffffffff1400005bffffffffffffc5000000000028ffffffffffffff0c00000bf4ffffffffffff2d0000000028ffffffffffffff0c000000a1ffffffffffff940000000028ffffffffffffff0c00000044fffffffffffff10b00000028ffffffffffffff0c00000003e5ffffffffffff6200000028ffffffffffffff0c000000008affffffffffffc900000028ffffffffffffff0c000000002dffffffffffffff31000028ffffffffffffff0c0000000000d0ffffffffffff98000028ffffffffffffff0c000000000073fffffffffffff30d0028ffffffffffffff0c000000000019fdffffffffffff660028ffffffffffffff0c000000000000b9ffffffffffffcd0028ffffffffffffff0c0000000000005bffffffffffffff34" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 107 } }, { "encoding": 108, - "x": 1, + "x": 3, "y": 0, - "width": 3, - "height": 14, - "dx": 4, + "width": 8, + "height": 43, + "dx": 13, "glyphBitmap": { - "width": 3, - "height": 14, - "pixelArray": "f5fc5bf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5cf8ff5c" + "width": 8, + "height": 43, + "pixelArray": "c1fcfcfcfcfcfc7bc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7cc4ffffffffffff7c" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 108 } }, { "encoding": 109, - "x": 0, + "x": 2, "y": 0, - "width": 12, - "height": 10, - "dx": 12, + "width": 34, + "height": 31, + "dx": 38, "glyphBitmap": { - "width": 12, - "height": 10, - "pixelArray": "1cfcfc67d3f69039c7f7a6031cffffe9bbffffe9b4ffff3c1cffff2303fcff4600deff5b1cffff1800f8ff3c00d8ff5c1cffff1800f8ff3c00d8ff5c1cffff1800f8ff3c00d8ff5c1cffff1800f8ff3c00d8ff5c1cffff1800f8ff3c00d8ff5c1cffff1800f8ff3c00d8ff5c1cffff1800f8ff3c00d8ff5c" + "width": 34, + "height": 31, + "pixelArray": "3cfcfcfcfcfcfca60000065aa8dbf7f3c76502000000000966abe2f8edb5440000003cffffffffffffa80050e5ffffffffffffffab02000163e7ffffffffffffff7f00003cffffffffffffab94ffffffffffffffffffff68079dffffffffffffffffffff4c003cfffffffffffffcffffffffffffffffffffffe3b1ffffffffffffffffffffffcb003cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c3cffffffffffffffffa23d1956f1fffffffffffffff78a331b6cfdffffffffffff493cffffffffffffee44000000008bffffffffffffde2c00000000b3ffffffffffff653cffffffffffffa8000000000057ffffffffffff8f00000000007fffffffffffff6c3cffffffffffffa800000000004dffffffffffff90000000000075ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c3cffffffffffffa800000000004cffffffffffff90000000000074ffffffffffff6c" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 109 } }, { "encoding": 110, - "x": 0, + "x": 2, "y": 0, - "width": 8, - "height": 10, - "dx": 8, + "width": 21, + "height": 31, + "dx": 25, "glyphBitmap": { - "width": 8, - "height": 10, - "pixelArray": "1cfcfc6fb7f6a1011cffffe3c4ffff221cffff3a21ffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff381cffff38" + "width": 21, + "height": 31, + "pixelArray": "3cfcfcfcfcfcfcfc0400001878b9eaf9e0961800003cffffffffffffff041096faffffffffffffdf18003cffffffffffffff4ce8ffffffffffffffffff9e003cfffffffffffffffffffffffffffffffffffff9103cffffffffffffffffffffffffffffffffffffff4d3cffffffffffffffffb03b1c7dffffffffffffff723cffffffffffffff6601000001eaffffffffffff833cffffffffffffff0400000000c3ffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff843cffffffffffffff0400000000bcffffffffffff84" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 110 } }, { "encoding": 111, - "x": 0, + "x": 2, "y": 0, - "width": 7, - "height": 10, - "dx": 8, + "width": 20, + "height": 31, + "dx": 24, "glyphBitmap": { - "width": 7, - "height": 10, - "pixelArray": "002cbff6ed9d0d04dfffc8e3ff9633ffff135dffe74bffff014dffff4cffff004cffff4cffff004cffff4bffff004dffff34ffff0f5dffe804e3ffc1deff9b0032c1f9efa110" + "width": 20, + "height": 31, + "pixelArray": "00000000002f8abee5f8f8e5bd8a2f00000000000000001db7ffffffffffffffffffffb81d000000000031eeffffffffffffffffffffffffef330000000ee3ffffffffffffffffffffffffffffe610000083ffffffffffffffffffffffffffffffff8a0007f2ffffffffffff94252699fffffffffffff70b48ffffffffffffd702000001d0ffffffffffff5284ffffffffffff93000000008affffffffffff8fa7ffffffffffff6f000000006bffffffffffffb2c3ffffffffffff63000000005fffffffffffffcecbffffffffffff60000000005dffffffffffffd7ccffffffffffff60000000005cffffffffffffd8ccffffffffffff60000000005cffffffffffffd8ccffffffffffff60000000005cffffffffffffd8ccffffffffffff60000000005cffffffffffffd8ccffffffffffff60000000005cffffffffffffd8ccffffffffffff60000000005cffffffffffffd8ccffffffffffff60000000005cffffffffffffd8ccffffffffffff60000000005cffffffffffffd8ccffffffffffff60000000005cffffffffffffd8cbffffffffffff60000000005dffffffffffffd7c3ffffffffffff62000000005fffffffffffffcfa8ffffffffffff6b000000006affffffffffffb386ffffffffffff8b000000008affffffffffff904bffffffffffffcf01000001ceffffffffffff5508f4ffffffffffff921e1c88fffffffffffff80d0089ffffffffffffffffffffffffffffffff90000010e7ffffffffffffffffffffffffffffea1300000038f2fffffffffffffffffffffffff23a000000000022beffffffffffffffffffffbf220000000000000001348fc1e9fcfbe8c18e340100000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 111 } }, { "encoding": 112, - "x": 0, - "y": -3, - "width": 8, - "height": 13, - "dx": 8, + "x": 2, + "y": -10, + "width": 21, + "height": 41, + "dx": 25, "glyphBitmap": { - "width": 8, - "height": 13, - "pixelArray": "1cfcfc8dd8ef6d001cffffdac7fffc171cffff390bfdff4f1cffff3800f1ff601cffff3800f0ff601cffff3800f0ff601cffff3800f1ff5f1cffff3808fdff4c1cffffcdbefff9121cffff91e0ef65001cffff38000000001cffff38000000001cffff3800000000" + "width": 21, + "height": 41, + "pixelArray": "3cfcfcfcfcfcfcfc0400197fc4f1f8d187150000003cffffffffffffff087af9ffffffffffffe93400003cffffffffffffffc0ffffffffffffffffffee1b003cffffffffffffffffffffffffffffffffffff9b003cfffffffffffffffffffffffffffffffffffffa133cfffffffffffffff47a26269dffffffffffffff5c3cffffffffffffff2700000003d4ffffffffffff9d3cffffffffffffff040000000081ffffffffffffcc3cffffffffffffff040000000054ffffffffffffe93cffffffffffffff040000000041fffffffffffff63cffffffffffffff04000000003dfffffffffffffc3cffffffffffffff04000000003cfffffffffffffc3cffffffffffffff04000000003cfffffffffffffc3cffffffffffffff04000000003cfffffffffffffc3cffffffffffffff04000000003cfffffffffffffc3cffffffffffffff04000000003cfffffffffffffc3cffffffffffffff04000000003cfffffffffffffc3cffffffffffffff04000000003cfffffffffffffc3cffffffffffffff04000000003cfffffffffffffc3cffffffffffffff04000000003cfffffffffffffc3cffffffffffffff04000000003efffffffffffffa3cffffffffffffff040000000044ffffffffffffed3cffffffffffffff040000000058ffffffffffffd53cffffffffffffff040000000081ffffffffffffb83cffffffffffffff0400000001cbffffffffffff873cffffffffffffffbd5f1e1883ffffffffffffff403cffffffffffffffffffffffffffffffffffffe5033cffffffffffffffffffffffffffffffffffff78003cffffffffffffffc1ffffffffffffffffffcf08003cffffffffffffff097ffcffffffffffffd31700003cffffffffffffff04002290d5fcf2bc6e090000003cffffffffffffff040000000000000000000000003cffffffffffffff040000000000000000000000003cffffffffffffff040000000000000000000000003cffffffffffffff040000000000000000000000003cffffffffffffff040000000000000000000000003cffffffffffffff040000000000000000000000003cffffffffffffff040000000000000000000000003cffffffffffffff040000000000000000000000003cffffffffffffff040000000000000000000000003cffffffffffffff04000000000000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 112 } }, { "encoding": 113, - "x": 0, - "y": -3, - "width": 8, - "height": 13, - "dx": 8, + "x": 2, + "y": -10, + "width": 21, + "height": 41, + "dx": 25, "glyphBitmap": { - "width": 8, - "height": 13, - "pixelArray": "0048e1e995fcfc3004e8ffd3cdffff3030ffff2724ffff3043ffff1124ffff3044ffff1024ffff3044ffff1024ffff3043ffff1124ffff3030ffff2224ffff3005f1ffccc4ffff300059e6ed97ffff300000000024ffff300000000024ffff300000000024ffff30" + "width": 21, + "height": 41, + "pixelArray": "0000000045aae1faebbc680c00d9fcfcfcfcfcfc630000059affffffffffffffe34ddcffffffffffff64000094fffffffffffffffffffffcffffffffffff640031feffffffffffffffffffffffffffffffffff6400a8ffffffffffffffffffffffffffffffffffff6409f6ffffffffffffd03a1b58d3ffffffffffffff643ffffffffffffffe2400000007e5ffffffffffff6473ffffffffffffce0000000000dcffffffffffff6492ffffffffffff9e0000000000dcffffffffffff64a8ffffffffffff8a0000000000dcffffffffffff64b2ffffffffffff880000000000dcffffffffffff64b8ffffffffffff880000000000dcffffffffffff64b8ffffffffffff880000000000dcffffffffffff64b8ffffffffffff880000000000dcffffffffffff64b8ffffffffffff880000000000dcffffffffffff64b8ffffffffffff880000000000dcffffffffffff64b8ffffffffffff880000000000dcffffffffffff64b8ffffffffffff880000000000dcffffffffffff64b8ffffffffffff880000000000dcffffffffffff64b8ffffffffffff880000000000dcffffffffffff64b7ffffffffffff890000000000dcffffffffffff64afffffffffffff8f0000000000dcffffffffffff6499ffffffffffffa00000000000dcffffffffffff6481ffffffffffffc50000000000dcffffffffffff6457fffffffffffffe2600000000dcffffffffffff641effffffffffffffcf3b124193faffffffffffff6401cdffffffffffffffffffffffffffffffffffff640063ffffffffffffffffffffffffffffffffffff640004c6ffffffffffffffffffe9efffffffffffff64000011bbffffffffffffffc51fdcffffffffffff640000000351b1e5fdefb9560300dcffffffffffff6400000000000000000000000000dcffffffffffff6400000000000000000000000000dcffffffffffff6400000000000000000000000000dcffffffffffff6400000000000000000000000000dcffffffffffff6400000000000000000000000000dcffffffffffff6400000000000000000000000000dcffffffffffff6400000000000000000000000000dcffffffffffff6400000000000000000000000000dcffffffffffff6400000000000000000000000000dcffffffffffff6400000000000000000000000000dcffffffffffff64" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 113 } }, { "encoding": 114, - "x": 0, + "x": 2, "y": 0, - "width": 6, - "height": 11, - "dx": 6, + "width": 16, + "height": 31, + "dx": 18, "glyphBitmap": { - "width": 6, - "height": 11, - "pixelArray": "00000000000214fcfc6bcea614fffffbb87914ffff77000014ffff40000014ffff40000014ffff40000014ffff40000014ffff40000014ffff40000014ffff400000" + "width": 16, + "height": 31, + "pixelArray": "20fcfcfcfcfcfcfc2000001489dbfaa620ffffffffffffff200038eaffffffa820ffffffffffffff2028f1ffffffffa820ffffffffffffff29d3ffffffffffa820ffffffffffffffa3ffffffffffffa820ffffffffffffffffffffffffffffa820ffffffffffffffffffffffffffffa820ffffffffffffffffffc251130c435f20ffffffffffffffff9c03000000000020ffffffffffffffbc0400000000000020ffffffffffffff2d0000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff200000000000000020ffffffffffffff2000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 114 } }, { "encoding": 115, - "x": 0, + "x": 1, "y": 0, - "width": 7, - "height": 10, - "dx": 7, + "width": 19, + "height": 31, + "dx": 21, "glyphBitmap": { - "width": 7, - "height": 10, - "pixelArray": "0054d4f7bb240021fdfbb4fccd015fffc6008ed71531ffff730a01000093ffff8b0200000283ffff9200000c0863ffff3167f56300c7ff5b31fef4abfcfd20005bd7fbd15700" + "width": 19, + "height": 31, + "pixelArray": "00000000002d89c6ecfaeec68422000000000000000012a1fffffffffffffffffa8103000000000019daffffffffffffffffffffffa80200000003c0ffffffffffffffffffffffffff7500000055fffffffffffffffffffffffffffff91d0000baffffffffffff80212daaffffffffff910002f2ffffffffffa400000002beffffffffe80316ffffffffffff6c0000000038ffffffffff3317ffffffffffffb60000000001d8ffffd36d0e02f4ffffffffffff630000000085a03901000000b1fffffffffffffd590000000000000000000046fffffffffffffffe7000000000000000000000b2ffffffffffffffff8b02000000000000000015ddffffffffffffffffa506000000000000000027ecffffffffffffffffbc0e000000000000000029e2ffffffffffffffffd018000000000000000018c8ffffffffffffffffd815000000000000000008a5ffffffffffffffffc6060000000000000000017cffffffffffffffff8b0000000000000000000056f9fffffffffffffb20000000000000000000004cfaffffffffffff81000003429cb100000000006dffffffffffffbb338fe6fffffc1c0000000002daffffffffffdab6ffffffffff860000000000a6ffffffffffdb61fffffffffff32400000005e3ffffffffffbb0df2ffffffffffe658162dadffffffffffff860079fffffffffffffffffffffffffffffffe240008cbffffffffffffffffffffffffffff910000001ddeffffffffffffffffffffffffb7060000000014a5fffffffffffffffffff17704000000000000002d87c7ecfef8dab1661200000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 115 } }, @@ -1607,35 +13644,35 @@ "encoding": 116, "x": 0, "y": 0, - "width": 6, - "height": 13, - "dx": 6, + "width": 17, + "height": 40, + "dx": 18, "glyphBitmap": { - "width": 6, - "height": 13, - "pixelArray": "00b6fc9e000000b8ffa0000000b8ffa00000aefffffffc1c71e7ffdea41200b8ffa0000000b8ffa0000000b8ffa0000000b8ffa0000000b8ffa0000000b4ffad00000088ffffdb320017c6fcf533" + "width": 17, + "height": 40, + "pixelArray": "00000000f9fcfcfcfcfcfc47000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000004fcfcfcfffffffffffffffefcfcfced0004fffffffffffffffffffffffffffff00004fffffffffffffffffffffffffffff00004fffffffffffffffffffffffffffff00004fffffffffffffffffffffffffffff00001141414fdffffffffffff57141414130000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000fcffffffffffff48000000000000000000faffffffffffff4d000000000000000000ecffffffffffff7f000000000000000000d4ffffffffffffec510a02110900000000acffffffffffffffffffffff400000000066ffffffffffffffffffffff40000000000ef3ffffffffffffffffffff40000000000076ffffffffffffffffffff4000000000000284ffffffffffffffffff4000000000000000399dd0f6fef6e3d0b529" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 116 } }, { "encoding": 117, - "x": 0, + "x": 2, "y": 0, - "width": 8, - "height": 10, - "dx": 8, + "width": 21, + "height": 31, + "dx": 25, "glyphBitmap": { - "width": 8, - "height": 10, - "pixelArray": "2cfcfc2434fcfc1c2cffff2434ffff1c2cffff2434ffff1c2cffff2434ffff1c2cffff2434ffff1c2cffff2434ffff1c2cffff2434ffff1c2cffff2a37ffff1c19ffffd0e7ffff1c009ffac067ffff1c" + "width": 21, + "height": 31, + "pixelArray": "6ffcfcfcfcfcfcc5000000000cfcfcfcfcfcfcfc2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffc8000000000cffffffffffffff2c70ffffffffffffcd000000000cffffffffffffff2c6ffffffffffffff30300000026ffffffffffffff2c60ffffffffffffff85172685f3ffffffffffffff2c3bffffffffffffffffffffffffffffffffffffff2c07f2ffffffffffffffffffffffffffffffffffff2c008ffffffffffffffffffff166ffffffffffffff2c0011d9fffffffffffffea5190cffffffffffffff2c00001492e0fdf0c0832000000cffffffffffffff2c" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 117 } }, @@ -1643,35 +13680,35 @@ "encoding": 118, "x": 0, "y": 0, - "width": 7, - "height": 10, - "dx": 7, + "width": 21, + "height": 31, + "dx": 21, "glyphBitmap": { - "width": 7, - "height": 10, - "pixelArray": "aefc8b00a3fc9280ffaf00c7ff634effd200e8ff331dfff40cfffb0701ecff43ffd10000bbff88ffa0000089ffccff6f000058fffeff3e000027ffffff0e000002f3ffdc0000" + "width": 21, + "height": 31, + "pixelArray": "3cfcfcfcfcfcfcd2000000000044fcfcfcfcfcfcad0dfffffffffffff6010000000067ffffffffffff7f00daffffffffffff190000000089ffffffffffff4e00a8ffffffffffff3b00000000abffffffffffff1d0077ffffffffffff5e00000000cdffffffffffed010046ffffffffffff8000000000efffffffffffbc000015ffffffffffffa200000011ffffffffffff8b000000e3ffffffffffc500000033ffffffffffff5a000000b1ffffffffffe700000055ffffffffffff2900000080ffffffffffff0a000077fffffffffff5030000004effffffffffff2c000099ffffffffffc7000000001dffffffffffff4e0000bbffffffffff960000000001ebffffffffff700000ddffffffffff650000000000baffffffffff920004fcffffffffff34000000000089ffffffffffb50021fffffffffffc08000000000057ffffffffffd70042ffffffffffd200000000000026fffffffffff80264ffffffffffa100000000000002f3ffffffffff1c86ffffffffff7000000000000000c3ffffffffff3ea8ffffffffff400000000000000091ffffffffff60caffffffffff100000000000000060ffffffffff83ecffffffffde00000000000000002effffffffffb4ffffffffffad000000000000000005f8fffffffff3ffffffffff7c000000000000000000ccffffffffffffffffffff4b0000000000000000009affffffffffffffffffff1a00000000000000000069ffffffffffffffffffe90100000000000000000037ffffffffffffffffffb8000000000000000000000afdffffffffffffffff870000000000000000000000d4ffffffffffffffff560000000000000000000000a3ffffffffffffffff25000000000000000000000071fffffffffffffff3020000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 118 } }, { "encoding": 119, - "x": 0, + "x": 1, "y": 0, - "width": 10, - "height": 10, - "dx": 10, + "width": 30, + "height": 31, + "dx": 32, "glyphBitmap": { - "width": 10, - "height": 10, - "pixelArray": "7ffc6700d6f9063afc965bff8907fcff295eff7134ffab2cffff5082ff490effcc55fffe76a6ff2100e7ed7ef1cd9dcbf80300c0ffb7c3a0c4f0d2000099fff79474f5ffaa000072ffff6547ffff8300004bffff361bffff5b000024fffe0a01efff3400" + "width": 30, + "height": 31, + "pixelArray": "9bfcfcfcfcfc5b0000000000ddfcfcfcfc910000000000a0fcfcfcfcfc1877ffffffffff7d000000000cffffffffffb90000000000c6fffffffff00150ffffffffff9f0000000033ffffffffffe00000000000eaffffffffc80029ffffffffffc0000000005dfffffffffffe090000000fffffffffffa00006fcffffffffe20000000086ffffffffffff2d00000032ffffffffff780000dbfffffffffe06000000afffffffffffff5400000056ffffffffff4f0000b4ffffffffff24000000d9ffffffffffff7b00000079ffffffffff2700008dffffffffff46000006fcffffffffffffa10000009dfffffffffb05000066ffffffffff6700002bffffffffffffffc8000000c1ffffffffd70000003fffffffffff89000055ffffffffffffffef010000e5ffffffffaf00000018ffffffffffaa00007effffffffffffffff15000bffffffffff8700000001f1ffffffffcb0000a7ffffffffffffffff3c002dffffffffff5e00000000caffffffffed0000d1ffffffc9ffffffff630051ffffffffff3600000000a3ffffffffff0f03f8ffffff85e9ffffff890075ffffffffff0f000000007cffffffffff3023ffffffff56bcffffffb00099ffffffffe6000000000055ffffffffff514dffffffff278fffffffd700bdffffffffbe00000000002effffffffff7376fffffff50362fffffffa04e1ffffffff96000000000009feffffffff949fffffffc80035ffffffff2bfeffffffff6e000000000000e0ffffffffb5c9ffffff99000afeffffff74ffffffffff45000000000000b9ffffffffd7f2ffffff6a0000dbffffffbeffffffffff1d00000000000092fffffffffeffffffff3b0000aefffffffbfffffffff4020000000000006bffffffffffffffffff0d000081ffffffffffffffffcd0000000000000044ffffffffffffffffdd00000054ffffffffffffffffa5000000000000001dffffffffffffffffad00000027ffffffffffffffff7d0000000000000002f5ffffffffffffff7e00000003f7ffffffffffffff550000000000000000cfffffffffffffff4f00000000cdffffffffffffff2c0000000000000000a8ffffffffffffff2000000000a0fffffffffffffd08000000000000000081fffffffffffff0010000000073ffffffffffffdc0000000000000000005affffffffffffc2000000000046ffffffffffffb400000000000000000033ffffffffffff93000000000019ffffffffffff8c0000000000000000000dffffffffffff64000000000001ebffffffffff640000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 119 } }, @@ -1679,148 +13716,213 @@ "encoding": 120, "x": 0, "y": 0, - "width": 7, - "height": 10, - "dx": 7, + "width": 22, + "height": 31, + "dx": 22, "glyphBitmap": { - "width": 7, - "height": 10, - "pixelArray": "92fcb10064fc9926feff26c8ff2f00b1ffbdffc200003fffffff55000001d8ffe405000015f9ffe808000073ffffff620001d9ff98ffd4013fffc210f3ff48a5ff63008effbb" + "width": 22, + "height": 31, + "pixelArray": "26fbfcfcfcfcfce80800000000003ffcfcfcfcfcf10f00b5ffffffffffff610000000000a0ffffffffff99000044ffffffffffffd0010000000cf4ffffffffff2e000001d2ffffffffffff3f00000060ffffffffffc20000000062ffffffffffffae000000c0ffffffffff570000000008e9fffffffffffd210022ffffffffffe70600000000007fffffffffffff8d0081ffffffffff8000000000000016f8fffffffffff00ee0fffffffffb1a000000000000009dffffffffffffabffffffffffaa00000000000000002dffffffffffffffffffffffff3f000000000000000000bbffffffffffffffffffffd3010000000000000000004affffffffffffffffffff680000000000000000000002d8fffffffffffffffff10c000000000000000000000068ffffffffffffffff910000000000000000000000000af9ffffffffffffff270000000000000000000000003cffffffffffffffca00000000000000000000000000a4fffffffffffffff918000000000000000000000014f9ffffffffffffffff85000000000000000000000074ffffffffffffffffffee0c00000000000000000002dbffffffffffffffffffff6f00000000000000000044ffffffffffffffffffffffe0040000000000000000acfffffffffffbffffffffffff59000000000000001afcfffffffffa6cffffffffffffce010000000000007cffffffffffae04dfffffffffffff43000000000003e2ffffffffff4e006dffffffffffffb800000000004cffffffffffe905000bedffffffffffff2e00000000b4ffffffffff8d00000082ffffffffffffa20000001ffeffffffffff2d00000016f7fffffffffffb1d000084ffffffffffcc000000000097ffffffffffff8c0005e8ffffffffff6c000000000024fefffffffffff20f54fffffffffffa13000000000000abffffffffffff76" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 120 } }, { "encoding": 121, "x": 0, - "y": -3, - "width": 7, - "height": 13, - "dx": 7, + "y": -8, + "width": 22, + "height": 39, + "dx": 22, "glyphBitmap": { - "width": 7, - "height": 13, - "pixelArray": "c3fc750067fcd289ffa50090ff9e4bffd300b8ff6610fefb07e0ff2f00ceff3afff504008fff8fffc0000051ffe4ff89000014ffffff51000000d5ffff1a00000098ffe30000000075ffab00000bb6f0ff52000010fdd574010000" + "width": 22, + "height": 39, + "pixelArray": "87fcfcfcfcfcfc8100000000000083fcfcfcfcfcfc864affffffffffffb2000000000000aeffffffffffff4e0efdffffffffffe2000000000000d8ffffffffffff1600cbffffffffffff120000000006fcffffffffffdb00008bffffffffffff41000000002bffffffffffffa100004bffffffffffff710000000055ffffffffffff6800000efcffffffffffa0000000007effffffffffff2e000000c9ffffffffffd000000000a8fffffffffff20300000088fffffffffffa06000000d1ffffffffffbb0000000047ffffffffffff2f000003f8ffffffffff81000000000cfbffffffffff5f000024ffffffffffff470000000000c4ffffffffff8e00004effffffffffff10000000000083ffffffffffbe000078ffffffffffd400000000000042ffffffffffee0100a1ffffffffff9b00000000000009f9ffffffffff1d00cbffffffffff6100000000000000bfffffffffff4d01f4ffffffffff27000000000000007effffffffff7d1effffffffffed01000000000000003dffffffffffac47ffffffffffb4000000000000000006f6ffffffffdc71ffffffffff7a000000000000000000baffffffffffa8ffffffffff4100000000000000000079fffffffffff5fffffffffc0c00000000000000000038ffffffffffffffffffffce0000000000000000000005f4ffffffffffffffffff940000000000000000000000baffffffffffffffffff5a00000000000000000000007bffffffffffffffffff2100000000000000000000003cffffffffffffffffe701000000000000000000000007f6ffffffffffffffad00000000000000000000000000bcffffffffffffff74000000000000000000000000007cffffffffffffff3a0000000000000000000000000044fffffffffffff9080000000000000000000000000010ffffffffffffc7000000000000000000000000000000f7ffffffffff8d000000000000000000000000000024ffffffffffff5200000000000000000002151f3c6ad8fffffffffff60f00000000000000000014ffffffffffffffffffff9b0000000000000000000014ffffffffffffffffffeb170000000000000000000014ffffffffffffffffee38000000000000000000000014fffffffffffffdad2100000000000000000000000014fffcead2a66d1a000000000000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 121 } }, { "encoding": 122, - "x": 0, + "x": 1, "y": 0, - "width": 6, - "height": 10, - "dx": 6, + "width": 18, + "height": 31, + "dx": 20, "glyphBitmap": { - "width": 6, - "height": 10, - "pixelArray": "2cfcfcfcfcd51da4a4e3ffbe000009eeff5b00005effee080000c6ff9000002effff2b000095ffc400000cf2ff5e00005dffffa69c7f70ffffffffd0" + "width": 18, + "height": 31, + "pixelArray": "006ffcfcfcfcfcfcfcfcfcfcfcfcfcfcfc380070ffffffffffffffffffffffffffffff380070ffffffffffffffffffffffffffffff380070ffffffffffffffffffffffffffffff380070fffffffffffffffffffffffffffff40e000914141414141414a5ffffffffffff9a0000000000000000000ef4ffffffffffff340000000000000000006bffffffffffffcd00000000000000000001d4ffffffffffff660000000000000000003dfffffffffffff30d000000000000000000a6ffffffffffff9800000000000000000016faffffffffffff3200000000000000000078ffffffffffffcb00000000000000000003dfffffffffffff640000000000000000004afffffffffffff20c000000000000000000b3ffffffffffff960000000000000000001ffeffffffffffff3000000000000000000085ffffffffffffc900000000000000000006e9ffffffffffff6200000000000000000057fffffffffffff10b000000000000000000c0ffffffffffff940000000000000000002affffffffffffff2e00000000000000000092ffffffffffffc70000000000000000000bf1ffffffffffff6000000000000000000064fffffffffffff00a000000000000000001cdffffffffffff9a0c0c0c0c0c0c0c0c022cffffffffffffffffffffffffffffffff243cffffffffffffffffffffffffffffffff243cffffffffffffffffffffffffffffffff243cffffffffffffffffffffffffffffffff243cffffffffffffffffffffffffffffffff24" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 122 } }, { "encoding": 123, - "x": 0, - "y": -3, - "width": 6, - "height": 17, - "dx": 6, + "x": 2, + "y": -11, + "width": 15, + "height": 55, + "dx": 18, "glyphBitmap": { - "width": 6, - "height": 17, - "pixelArray": "00007de8fc4b0017ffffcc310035ffff1f000038ffff14000038ffff1400003affff1400004afffa05002ad4ffa8000044fffc5200000270ffe10000003effff0b000039ffff14000038ffff14000038ffff14000032ffff21000013feffca30000076ebff4c" + "width": 15, + "height": 55, + "pixelArray": "00000000000000012d5c767c7c7c420000000000077ee4ffffffffffff880000000004bdffffffffffffffff880000000071ffffffffffffffffff8800000000dbffffffffffffffffff880000001affffffffffffffffc29c5000000042ffffffffffffff600000000000005dfffffffffffff3030000000000006effffffffffffce0000000000000074ffffffffffffbc0000000000000077ffffffffffffb60000000000000078ffffffffffffb40000000000000078ffffffffffffb40000000000000078ffffffffffffb40000000000000078ffffffffffffb40000000000000078ffffffffffffb40000000000000078ffffffffffffb40000000000000079ffffffffffffb4000000000000007affffffffffffb4000000000000007effffffffffffaf0000000000000086ffffffffffffa00000000000000095ffffffffffff8c00000000000000b2ffffffffffff6600000000000004e8ffffffffffff2d000000000b249effffffffffffdd0100000000b4ffffffffffffffff5a0000000000b4ffffffffffffff81000000000000b4fffffffffff65c00000000000000b4ffffffffffffff8c010000000000b4ffffffffffffffff640000000000051c97ffffffffffffe30200000000000003e5ffffffffffff3400000000000000b0ffffffffffff6a0000000000000093ffffffffffff900000000000000085ffffffffffffa3000000000000007dffffffffffffb1000000000000007affffffffffffb40000000000000079ffffffffffffb40000000000000078ffffffffffffb40000000000000078ffffffffffffb40000000000000078ffffffffffffb40000000000000078ffffffffffffb40000000000000078ffffffffffffb40000000000000078ffffffffffffb50000000000000077ffffffffffffb80000000000000073ffffffffffffc0000000000000006affffffffffffda0000000000000056fffffffffffffe1300000000000036ffffffffffffffb92e08010000000bfcffffffffffffffffff8800000000bbffffffffffffffffff88000000003afdffffffffffffffff88000000000063faffffffffffffff88000000000000207ec5f3ffffffff88000000000000000000000b10101009" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 123 } }, { "encoding": 124, - "x": 1, - "y": -3, - "width": 3, - "height": 17, - "dx": 4, + "x": 3, + "y": -8, + "width": 7, + "height": 51, + "dx": 13, "glyphBitmap": { - "width": 3, - "height": 17, - "pixelArray": "dafc28ddff28ddff28ddff28deff28deff28deff28deff28dfff28dfff28dfff28dfff28e0ff28e0ff28e0ff28e0ff28e0ff28" + "width": 7, + "height": 51, + "pixelArray": "6bfcfcfcfcfcd96dffffffffffdb6dffffffffffdb6effffffffffdb6effffffffffdb6effffffffffdb6fffffffffffdb6fffffffffffda6fffffffffffda70ffffffffffda70ffffffffffda70ffffffffffda71ffffffffffda71ffffffffffd971ffffffffffd972ffffffffffd972ffffffffffd972ffffffffffd972ffffffffffd973ffffffffffd973ffffffffffd873ffffffffffd874ffffffffffd874ffffffffffd874ffffffffffd875ffffffffffd875ffffffffffd775ffffffffffd776ffffffffffd776ffffffffffd776ffffffffffd777ffffffffffd777ffffffffffd677ffffffffffd677ffffffffffd678ffffffffffd678ffffffffffd678ffffffffffd679ffffffffffd679ffffffffffd579ffffffffffd57affffffffffd57affffffffffd57affffffffffd57bffffffffffd57bffffffffffd47bffffffffffd47cffffffffffd47cffffffffffd47cffffffffffd47cffffffffffd4" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 124 } }, { "encoding": 125, - "x": 0, - "y": -3, - "width": 6, - "height": 17, - "dx": 6, + "x": 2, + "y": -11, + "width": 15, + "height": 55, + "dx": 19, "glyphBitmap": { - "width": 6, - "height": 17, - "pixelArray": "43fce98400002cc9ffff1e000018ffff3e00000dffff4400000cffff4400000cffff44000002f6ff50000000a3ffd72f00004dfaff4c0000dcff76020006ffff4600000cffff4400000cffff4400000dffff4400001affff3b002bc7ffff1a0044ffed7d0000" + "width": 15, + "height": 55, + "pixelArray": "5a7c7c7c7256200000000000000000b8ffffffffffffd464010000000000b8ffffffffffffffff900000000000b8ffffffffffffffffff4100000000b8ffffffffffffffffffa9000000006c9fd2ffffffffffffffe60000000000000190ffffffffffffff0e00000000000025ffffffffffffff2a00000000000003fbffffffffffff3a00000000000000ecffffffffffff4200000000000000e6ffffffffffff4600000000000000e5ffffffffffff4800000000000000e4ffffffffffff4800000000000000e4ffffffffffff4800000000000000e4ffffffffffff4800000000000000e4ffffffffffff4800000000000000e4ffffffffffff4800000000000000e4ffffffffffff4800000000000000e4ffffffffffff4900000000000000e0ffffffffffff4c00000000000000d1ffffffffffff5200000000000000bcffffffffffff630000000000000096ffffffffffff81000000000000005effffffffffffb90000000000000015faffffffffffff791c0800000000008affffffffffffffff84000000000006a8ffffffffffffff840000000000000181fdffffffffff84000000000009b2ffffffffffffff84000000000093ffffffffffffffff840000000019fcffffffffffff7113030000000065ffffffffffffb6000000000000009bffffffffffff7f00000000000000c0ffffffffffff6100000000000000d4ffffffffffff5100000000000000e1ffffffffffff4b00000000000000e4ffffffffffff4900000000000000e4ffffffffffff4800000000000000e4ffffffffffff4800000000000000e4ffffffffffff4800000000000000e4ffffffffffff4800000000000000e4ffffffffffff4800000000000000e4ffffffffffff4800000000000000e5ffffffffffff4800000000000000e8ffffffffffff4500000000000000f0ffffffffffff400000000000000affffffffffffff3600000000000040ffffffffffffff23000000020b3ed5fffffffffffffd06000000b8ffffffffffffffffffd400000000b8ffffffffffffffffff8a00000000b8ffffffffffffffffee1900000000b8ffffffffffffffed3f0000000000b8ffffffffecb86d120000000000000c1010100800000000000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 125 } }, { "encoding": 126, - "x": 0, - "y": 5, - "width": 8, - "height": 4, - "dx": 8, + "x": 1, + "y": 17, + "width": 23, + "height": 10, + "dx": 25, "glyphBitmap": { - "width": 8, - "height": 4, - "pixelArray": "00218c630700220026efffffe4b4fd2e067a1753cbf57a010000000000010000" + "width": 23, + "height": 10, + "pixelArray": "0000000000000108010000000000000000000000000000000000001286e8ffdf952a00000000000000001d00000000000048e8ffffffffffffb237000000000587f83e000000006cfeffffffffffffffffffbb551641cefffff02d000078ffffffffffffffffffffffffffffffffffffffd30102c4fffffffffffffffffffffffffffffffffffffb4a000019e5fffd962a1052b8fffffffffffffffffffc530000000038e441000000000033adfeffffffffffe9420000000000000a0000000000000000278fd8ffe28811000000000000000000000000000000000000000100000000000000" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 126 } }, { "encoding": 127, - "x": 0, + "x": 1, "y": 0, - "width": 6, - "height": 12, - "dx": 6, + "width": 15, + "height": 36, + "dx": 19, "glyphBitmap": { - "width": 6, - "height": 12, - "pixelArray": "25545454540770553c3c9b14702000007c14702000007c14702000007c14702000007c14702000007c14702000007c14702000007c14702000007c14702000007c14709b8c8cc514" + "width": 15, + "height": 36, + "pixelArray": "0d343434343434343434343434342c3cffffffffffffffffffffffffffd83cffca90909090909090909090f8d83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cff8400000000000000000000ecd83cffe1c0c0c0c0c0c0c0c0c0c0fbd83cffffffffffffffffffffffffffd8" }, "source": { - "filePath": "Oswald-Medium.ttf", - "size": 12, + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 38, "encoding": 127 } } + ] + }, + { + "name": "icons", + "renderingEngine": "freetype", + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 14 + }, + "bpp": 8, + "height": 24, + "ascent": 24, + "descent": 0, + "glyphs": [ + { + "encoding": 32, + "x": 0, + "y": 0, + "width": 33, + "height": 24, + "dx": 33, + "glyphBitmap": { + "width": 33, + "height": 24, + "pixelArray": "0000000000000000004fe7fffffffffffffffffffffffffffffffffffffedd6400000000000000000052f9fffffffffffffffffffffffffffffffffffffffffffe660000000000000050f9ffffffffffffffffffffffffffffffffffffffffffffffdb0000000000004ff8fffffe996d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6da8fffffd00000000004df7ffffff8401000000000000000000000000000000000067ffffff000000004cf7ffffff860100000000000000000000000000000000000067ffffff0000004bf7ffffff87000000000000100f00000000001609000000000067ffffff000049f6ffffff8a01000000000049f4f25500000183fbe3210000000067ffffff0048f5ffffff8b01000000000000a8fffff9560187feffff700000000067ffffff31f5ffffff8d020000000000000063fefffff9adfefffff7320000000067ffffffb0ffffff8f020000000000000000017efffffffffffff84e000000000067ffffffebffffa502000000000000000000000080fffffffff85000000000000067ffffffecffffa302000000000000000000000080fffffffff85000000000000067ffffffafffffff8f020000000000000000017efffffffffffff84e000000000067ffffff2ff5ffffff8d020000000000000060fefffff9adfefffff72f0000000067ffffff0048f5ffffff8b01000000000000a9fffff9560187feffff710000000067ffffff000049f6ffffff8a0100000000004af3f25500000183fae2230000000067ffffff0000004bf7ffffff870000000000000e0d00000000001407000000000067ffffff000000004cf7ffffff860100000000000000000000000000000000000067ffffff00000000004df7ffffff8401000000000000000000000000000000000067ffffff0000000000004ff8fffffe996d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6da8fffffd0000000000000050f9ffffffffffffffffffffffffffffffffffffffffffffffda000000000000000052f9fffffffffffffffffffffffffffffffffffffffffffe630000000000000000004fe5fffffffffffffffffffffffffffffffffffffee26900" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 14 + } + }, + { + "encoding": 33, + "x": 0, + "y": 0, + "width": 34, + "height": 24, + "dx": 34, + "glyphBitmap": { + "width": 34, + "height": 24, + "pixelArray": "0000000000000000000000000000000000000000000000000000000000004ee3e247000000000000000000000000000000000000000000000000000000000055fbffffe00000000000000000000000000000000000000000000000000000000055fbffffffe400000000000000000000000000000000000000000000000000000055fbfffffffb4f000000000000000000000000000000000000000000000000000055fbfffffffb55000000000000000000000000000000000000000000000000000055fbfffffffb55000000000000000000000000000000000000000000000000000055fbfffffffb55000000000000000000000000000000000000000000000000000055fbfffffffb55000000000000000000000000000000000000000000000000000055fbfffffffb55000000000000000000000000000000000000000000000000000055fbfffffffb5500000000000048e3e24e0000000000000000000000000000000055fbfffffffb5500000000000000e2fffffb55000000000000000000000000000055fbfffffffb550000000000000000e5fffffffb5500000000000000000000000055fbfffffffb550000000000000000004ffbfffffffb550000000000000000000055fbfffffffb55000000000000000000000055fbfffffffb55000000000000000055fbfffffffb550000000000000000000000000055fbfffffffb5500000000000055fbfffffffb5500000000000000000000000000000055fbfffffffb550000000055fbfffffffb55000000000000000000000000000000000055fbfffffffb55000055fbfffffffb550000000000000000000000000000000000000055fbfffffffb5555fbfffffffb5500000000000000000000000000000000000000000055fbfffffffbfbfffffffb55000000000000000000000000000000000000000000000055fbfffffffffffffb550000000000000000000000000000000000000000000000000055fbfffffffffb5500000000000000000000000000000000000000000000000000000055fbfffffb5500000000000000000000000000000000000000000000000000000000004ee0df4e0000000000000000000000000000000000000000" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 14 + } + }, + { + "encoding": 34, + "x": 0, + "y": 0, + "width": 24, + "height": 24, + "dx": 24, + "glyphBitmap": { + "width": 24, + "height": 24, + "pixelArray": "69f0bd170000000000000000000000000000000017bef068eeffffd117000000000000000000000000000018d2ffffeebfffffffd11700000000000000000000000017d2ffffffbf17d1ffffffd2160000000000000000000017d2ffffffd2170017d1ffffffd117000000000000000017d2ffffffd21800000017d2ffffffd11600000000000017d2ffffffd217000000000016d1ffffffd2170000000017d2ffffffd2170000000000000017d1ffffffd117000018d2ffffffd21700000000000000000016d2ffffffd11717d2ffffffd217000000000000000000000017d1ffffffd2d2ffffffd2170000000000000000000000000017d1ffffffffffffd21800000000000000000000000000000017d2ffffffffd2170000000000000000000000000000000017d2ffffffffd21700000000000000000000000000000018d2ffffffffffffd1170000000000000000000000000017d2ffffffd2d2ffffffd117000000000000000000000017d2ffffffd21717d1ffffffd21600000000000000000017d2ffffffd218000017d1ffffffd1170000000000000017d2ffffffd2170000000017d2ffffffd116000000000017d2ffffffd21700000000000016d1ffffffd21700000018d2ffffffd217000000000000000017d1ffffffd1170017d2ffffffd2170000000000000000000016d2ffffffd117bdffffffd21700000000000000000000000017d1ffffffbcf0ffffd218000000000000000000000000000017d1fffff06aedbb170000000000000000000000000000000017bbec69" + }, + "source": { + "filePath": "fonts\\Oswald-Medium.ttf", + "size": 14 + } + } ], - "alwaysBuild": false + "alwaysBuild": true } ], "bitmaps": [], diff --git a/Src/firmware.cpp b/Src/firmware.cpp new file mode 100644 index 0000000..a6ea66e --- /dev/null +++ b/Src/firmware.cpp @@ -0,0 +1,189 @@ +#include +#include +#include + +#ifdef EEZ_PLATFORM_STM32 + +#include "main.h" +#include "tim.h" +#include "usbd_cdc_if.h" +#include "usart.h" + +#endif + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include "date_time.h" +#include "firmware.h" +#include "tasks.h" +#include "gui/hooks.h" +#include "flow/hooks.h" + +TouchScreenCalibrationParams g_touchScreenCalibrationParams; + +void LCD_init(); + +using namespace eez; + +#if defined(__EMSCRIPTEN__) +EM_PORT_API(void) init() { +#else +extern "C" void init() { +#endif + LCD_init(); + + eez::initAssetsMemory(); + eez::gui::loadMainAssets(eez::gui::assets, sizeof(eez::gui::assets)); + eez::initOtherMemory(); + eez::initAllocHeap(eez::ALLOC_BUFFER, eez::ALLOC_BUFFER_SIZE); + + eez::initHighPriorityMessageQueue(); + eez::startHighPriorityThread(); + + eez::initLowPriorityMessageQueue(); + eez::startLowPriorityThread(); + + flow::initHooks(); + + //gui::display::g_calcFpsEnabled = true; + //gui::display::g_drawFpsGraphEnabled = true; + +#if defined(__EMSCRIPTEN__) + gui::display::init(); +#endif + + gui::display::turnOn(); + gui::initHooks(); + gui::startThread(); + + DebugTrace("Firmware init. is done.\n"); +} + +#if defined(__EMSCRIPTEN__) +EM_PORT_API(void) startFlow() { + eez::flow::start(eez::gui::g_mainAssets); +} + +// clang-format off +void mountFileSystem() { + EM_ASM( + FS.mkdir("/eez-flow-template-stm32f469i-disco"); + FS.mount(IDBFS, {}, "/eez-flow-template-stm32f469i-disco"); + + //Module.print("start file sync.."); + + //flag to check when data are synchronized + Module.syncdone = 0; + + FS.syncfs(true, function(err) { + assert(!err); + //Module.print("end file sync.."); + Module.syncdone = 1; + }); + , 0); +} +// clang-format on + +static int g_started = false; +extern void eez_system_tick(); + +EM_PORT_API(bool) mainLoop() { + if (!g_started) { + mountFileSystem(); + g_started = true; + } else { + if (emscripten_run_script_int("Module.syncdone") == 1) { + eez_system_tick(); + + if (eez::flow::isFlowStopped()) { + return false; + } + + // clang-format off + EM_ASM( + if (Module.syncdone) { + //Module.print("Start File sync.."); + Module.syncdone = 0; + + FS.syncfs(false, function(err) { + assert(!err); + //Module.print("End File sync.."); + Module.syncdone = 1; + }); + } + , 0); + // clang-format on + } + } + + return true; +} +#endif + +extern "C" void tick() { + osDelay(1); +} + +void serialWrite(const char *msg, int msgLen) { + if (msgLen == -1) { + msgLen = strlen(msg); + } + +#ifdef EEZ_PLATFORM_STM32 + CDC_Transmit_FS((uint8_t *)msg, (uint16_t)msgLen); +#endif + +#ifdef EEZ_PLATFORM_SIMULATOR + printf("%.*s", msgLen, msg); +#endif +} + +#if defined(EEZ_PLATFORM_SIMULATOR) && !defined(__EMSCRIPTEN__) +void consoleInputTask(void *); +EEZ_THREAD_DECLARE(consoleInput, Normal, 1024); + +int main() { + init(); + + EEZ_THREAD_CREATE(consoleInput, consoleInputTask); + + while (!eez::g_shutdown) { + tick(); + } +} + +void consoleInputTask(void *) { + using namespace eez; + //sendMessageToLowPriorityThread(SERIAL_LINE_STATE_CHANGED, 1); + + while (1) { + int ch = getchar(); + if (ch == EOF) { + break; + } + //Serial.put(ch); + } +} +#endif // EEZ_PLATFORM_SIMULATOR + +namespace eez { + +bool g_shutdown; + +void shutdown() { + g_shutdown = true; +} + +} // namespace eez diff --git a/Src/firmware.h b/Src/firmware.h new file mode 100644 index 0000000..d94f5d8 --- /dev/null +++ b/Src/firmware.h @@ -0,0 +1,25 @@ +#pragma once + +#include +#include + +struct TouchScreenCalibrationParams { + int16_t isValid; + int16_t touchScreenCalTlx; + int16_t touchScreenCalTly; + int16_t touchScreenCalBrx; + int16_t touchScreenCalBry; + int16_t touchScreenCalTrx; + int16_t touchScreenCalTry; +}; + +extern TouchScreenCalibrationParams g_touchScreenCalibrationParams; + +// Initialize firmware. Called from the freertos.c only once after HW is initialized. +extern "C" void init(); + +// Called from freertos.c continuously after init() has been called. +extern "C" void tick(); + +void updateBrightness(); +void serialWrite(const char *msg, int msgLen = -1); diff --git a/Src/flow/hooks.cpp b/Src/flow/hooks.cpp new file mode 100644 index 0000000..0b2c275 --- /dev/null +++ b/Src/flow/hooks.cpp @@ -0,0 +1,32 @@ +#include + +#include +#include + +#include "../gui/app_context.h" +#include "../gui/keypad.h" + +namespace eez { +namespace flow { + +void showKeyboard(Value label, Value initialText, Value minChars, Value maxChars, bool isPassword, void(*onOk)(char *), void(*onCancel)()) { + eez::gui::startTextKeyboard(label.getString(), initialText.getString(), minChars.toInt32(), maxChars.toInt32(), isPassword, onOk, onCancel, nullptr); +} + +void showKeypad(Value label, Value initialValue, Value min, Value max, Unit unit, void(*onOk)(float), void(*onCancel)()) { + NumericKeypadOptions options; + options.pageId = PAGE_ID_NUMERIC_KEYPAD; + options.min = min.toFloat(); + options.max = max.toFloat(); + options.editValueUnit = unit; + + eez::gui::startNumericKeypad(&g_deviceAppContext, label.getString(), initialValue, options, onOk, nullptr, onCancel); +} + +void initHooks() { + showKeyboardHook = showKeyboard; + showKeypadHook = showKeypad; +} + +} // namespace flow +} // namespace eez diff --git a/Src/flow/hooks.h b/Src/flow/hooks.h new file mode 100644 index 0000000..8ff619c --- /dev/null +++ b/Src/flow/hooks.h @@ -0,0 +1,9 @@ +#pragma once + +namespace eez { +namespace flow { + +void initHooks(); + +} // namespace flow +} // namespace eez diff --git a/Src/fonts/Oswald-Medium.ttf b/Src/fonts/Oswald-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8210fc3617fcdf29ad9dba20891558be6e0ca333 GIT binary patch literal 75668 zcmc$H2VfLM`}fT3-rnU>E|<&QrC#oGDWpSsNJx$(5FoS=TBr$41nE5@AS&`&uwlc7 ziVCQRB8Uirh@jZe7sZAksOW3KULe`~elvTQ0>Sc@|Ci0)ZJC{&dFGj?KXZf&&Q=o+321688%y&Ae#Z zwSkS@alV+4fSWFAm@^aCLvdb$Z^K2GEShAVwr2++sp|=OW5VQ#4HE)R&P^rc_aNNQ zpNtFk>rF8@=k+B_o;G)3uZJI6f%D0DeETIc#y5OWx#0|<%!&7pnbxpyrZm-f524C3 zly^>Vm^QI%{fSR;zLpSu-pm{E~T>wrL*a5BGEZ?K8_dA1vp;F zGEhbqPiVFCH}Ks^Mv%EguI$-&Fo_z!X!a$f(?zo&2URd0xZ$ zXY{-~Z0f|>(@Ds*hS^g|xOkF3$jdRJ0P?&xM#5rqMU6Cm31QK1^W*U0_Pr#X6!YT$ zzy7>u(Z{piCVcM4e!%;w_l^HXTfAGnJ6r4V{vzJY_ z+#~NF+&j1IzjyBa$@>$q3ZIy{#QXc-t))#5|1yN}o^QRN!M@LTaP*q@u=lyY`)*#| zd%E3ILEb05j}Xve|8?=6A4Ewp0^TF-%JUk;-E*&YbngA#+lcZlFycqv@vY|_J#+pw zZxiZi=FtA%{ds@$e%(>+-p@L^+R-(wB>(jO!tZNy)%#s*S?zl3Im#SF&p1rZfvES# zwx#~)SQ|C|snx+pul=9*gSO|ql=n65%DHdxe$lq%A02zY7jxiye;F^1(36&Pe{1k9 zu8I2}`b)R}KA%#yzu$W1{YXIfBh-45U-j~%&sygb&fdii3edJCtv zb^EmToR5Eh*3SRzzV}`4Ebk2%jaR)#|2E7DtI?1qeTlL>O*Qm250|UP_ZT-Lbg8#6t|E|8wHGS=`^~ita|Nr-Y zx37P-KmS`zrlVFsGWh*}BNcd0b@V=QjoY*2|E50fy?_RB!4_QL#<^7e0>yAy=w|21 z6>W983qSjx-1)m2@_+I!|FhcsY@Ma8NB$D$eKT?sNx())A~r^nu}P#8HkqVg(~(qc z3dzK#Ct27GBnMjn$-`zO1=s>f5w;-G64hzh z^v32SeXzMmHMV%tADf#D#Fjv6uqBc~*pf&swq!B{TM8_(BhZ$S*wV;yay8m~4Y?le zyboIld4N2EH*UZdOE!|n@s=&v63NqKJL=hsjgl9!naDnDl)Qw^MD}B&Mp>}G=aRiOPaU_kz zaTJZhv75R{AWfu+_{^huB$(#Ye3D8FXaNbKMYIT?{b)a;(EhYPanS*E0IcT&=|Ezl zHM9oDgXka}*V0-d)4_BwiK9d45F8JsLvcKcjzUYu&@uQNOUL59^|T)EZJ-S}9!JOF z_+ol7-hMT`8lI3DPqOZ|FB9 zhJH)Gg(u)NJxv_+JNg~b(eLT^#7TdoKavFc6a9$<(4XngB$@t3e?vRZ&@+J2S$Y;w zYNAazZl=vRR;h|(FZGgC#zlh=rZ5Hbi4q;tVHWxSy7&(;t^_vyzw*aD5?tEgf0FnV z9tUxx!>58>58MdA%nZaaY=Z6nf`L`>m|=;S5y|3CO3Qutb4Uis#@x=u%+ANWF2tcFA|JK@z_Of^{2M_pIKARq+dodLw2fco6pC*}I4;7w zgIjin=iBb^TKTHs^|jw6K&tKTE7;+eMm0OUb%BeVzWR3px<)Vp{#}o;XuBIQGJNNM zoc?yS2V&fU&|3~OK6d_{Khx14@0lMmtv%ODwzf-almC6ZP5yRtROjEh#=T$KpBY~v zzGIW`Tl?Z(zqWs764v&#<=8^3zGEA)w_GJ8LL5hm&nOZNj->s?`o8&>Lmb6r6nN2Z;6Y791?SPz0C1a7a2YGOiyd4g65PZME|LfCQ2?&d z58Pq^xI_)OLoK+%5O9N0-~wYo{To2_F9x+=1uDN9)ctl)^=ClMp9d8`0P1~+Q*F@f z+)% zuEbmJz!NK3F6+Zau}SPkwg%-|x3zc%8(YUV`nDU{jlTP9*=F3?%(n3j^?Im>y~j>S zL@Jj?N#n>GsYzziC^<&Xlndojd9XZAo+~%XSITSTbu#?y%SW-;)5hS~Q3`o016Z^Zs6_Q$YqLR+7}z8U+I*q_GE+rJI_GuXFde--79;$5%{ z!l~YjHl3yEkSO347p)$H^9iV%%YK2V;XBmu9cuUvHGGE}zC#Uq)bKl={0@CTgZ`eu zlfMF9-=WWE(1WL8kJyTR8}?_gZ^tg9U%#VYXT%*2dxrZ>ii5uYQy?}^W&=;0u=v!k~A+Ks1+y(cji zU!X62po{f`ePtx9SjTYu3HFoNf5Ej-wE7TQ{S`|6gj#i zy^L=1ZUk;VjQQ{=@R^EF9lhSWo38eLO7HMqN7n$e?(;qcd2l;s$!_o0^e9GHrcZlS zoc&5)#hf_`jG%Nc<^{v`(>VGPGUImd_jCs^jz6;>SC0Z`7|xF2{`aVFzxQQ4y_de> zy-S=uhO?J(_89um3;cldf(#!o;GBT-08alo)vptDe-s&g0ow1U_Pfaopz`}b;r(>{ z7-;xO@-ry6O3k3xHXog?0X41%6<#GM@H)DcZll}j4!RdK7!(-&3n8DQoe`iXVPv|G zh0Voxqc~pXyF$Q)uJaw=EWYo+=e^=+o$vZad~X)V+r;Ni-}SxXn|nRp@LeI`MO2!F zGYVN9pNz|@6s_Q&gOo;G=^>8cE5wz>{F6-+pKrIh5+II^;<|P`TU;3|u6)2h$q{)S zKEnX{B)~phNWhxxTM5YbB7MPehr*gToK8hKi8O+nAYur|TviFk?2N+kLQyZ5S}5%$ zzanbpu|s{qwcExHC5YIeOc6U&2s(p5VM+SqBVJ6F-hc+8BSe>@yA!W*Xy4KiGKoPN zLfDX|4}giW(;nii<`40|=@S>sC3}eTtZaC;`6I+*JW$!h^i0!^Ij6#RL< z#}KY%5EdhP$ax@YT-rtohp2St7lboHMU7eNAxz5L27MINx z@5+p4@uv8&cx!xAydyp>zE^yG{KUkAXJr8=Cs|8#@a}!|d$1V(?)~gN@L}bgcN6(W zc@y6Kg@ZYa4u`|z80x5ZOmQr8{NS`WBb+f#r+9Z!2k$oH-H|Qto`82_jJzkkd%Z7s zH+e7f)_DhbbJfl2BkJwyJaw)*N1d(CRA;Con@=>q*nDL(u&X(xnVtOC$xlzdee$W3 z_ny4%T_)p80(9h{9`UO!KpF_MU=eCB&t7(7!Z{O*8 zU)qxra9#&G-KwJoK`RS^?Io0OsosJaWhGpCk06nlSzK0+g=`*2oI-PT3yGQQuA0o8 zCT1*`oI8^)9q6vbkfXbiQc?!o?T%=@3RtDuOVxczKg`hqEwc4s&{;9x+fdsvWGtyC z4d@e>wf_NG`xbHssM~{(1=c~*en`mLk3zoTvi1{X6X@KNkh!-)>fQ#4`x&y6JV$ns z=UE_`O(u|uKnsGmwNv1M8nNOxLH(5#6FejPA5?CU+h%8`{m|aoy3g#l05KiIN zlO2eC98adRILM#zxH64g#zM$AaD%JJ?bJfU8DkPNumGlmJp3$6A}`P)7RJI^C^NH8 zEQJM;MNH3(%mmHhI_MAALvy%++z1=sDsn5i4Rx+2cawX_UF1hPjm{yn=nOg&F_VpS zF6bVo{|pc$Y=UkGr~^iEt0DsjI;G{9UFJlW*;UD$Y687Oova&j=Fv*|b(9|qv{|Su z6y?)Aon%TW^cdJCDhQfeqoa}(ELF-NfwErKD>@XE%t~mQMREmFRJ&~mwbwsOO>~+3 z+gXFUjE1N`@OCVg`?CF@U%VY|k5dN{#A{~2v>@6+ebk&Ixvf4W$W`*AWJ&uo61 z?`RC_1I3gMiu&TnqUz1*1BZJ$1xk#B1Tl;jt20nV392y4j8a`qfS&1erixG#3&vk% zv?qyQ;Wr@zj5z->f5AFWtSrlMa-1VJCORrI!fvyMTg>7w%p7WtNTWFgZfbEC;Hx0V zk|T*-@7Cw&-ICklmgt5@qc*B{_ZiC;Mc%|Vb^pA4L;0uWBiOv?8`%2l&#E`{Wz7eh zidgCHgL~=ss)_G=5AJT>%SxN~qMwwMdHYC@>XS$=o#F|NpiFYel0@Yk3domNZ#JUe z@kGMVj8Slj=*ALRX0;fr@CtA@2qFYiv@*JSbKqYn86irV{z6Hu&QO$ewZ2_9_57D> zRfeIU69uIyyp7BIi!EFzQ(60*AX9id04eeXlY1iPbE4RNB zxMq#MdfAPmbF%yN&5Duan#zHbN_KV`HGkEBhd&B?2yN4m8t?D=OO(qoe?lR1=7S3E zs@@z9FeHT-m=vrqoh<1_l7IkGtLJm7B8bW|tqo*G%(Gz1F~Ek>X~9&{Ny-5J5c#u5 zJn13Sz#lLuBk|%tDPC9SNhvHyOARyYKpiS83i=oJ@6tInKP^8l)|?WS5@?h|b)kY@ zm_pNBkPLM3N!@5}zS9;?tf!87;ogxOGNVP=4Sh=I(!7TcTzQeHe@fB|_uu_S_L%+!M%}yV z)_<+C*QDCQVhR(B!^&9U#iG9o?y}GED7afuB&tACdGsW z>KIc3Eis8XPIW=q`1SXGx#jW|+rGYc{kXE-@x2BwU-;;?;~H*wWZ{z99xn8!JKDz3 zwq#PNwatcR`H4A43mM$kETM50uwM$!JFKMut*jGN3?4zwr_4I^Jukb|019Ss=Vd!| z7*1XH$h7$A@K7Vf04ga)Q+RZIdQ`i1s|$A9GKy-4%)WT#g6jUWufJ&S;30*Xw%uh7 z>+kt`+f~b-`s&{G6UxxmkWFvb%Z5*!q03^0H|fTIROe&fE3N*e{LB^M+Y z*rgn)z^=FJlWE_F)_m?c67^Qpk?yDNUO!jbIR5?NkItpCdUoDpbw|eY*j-BU=z6KA zd3X1WAPE%g7(^S=M;;^wv&-r-(_!kzH2x); zs=iCt)BZbXA9dRfmD~1e)KhcXu%V$;Z;)YQZ+LUUL;Yhds_kyuX@8cQLO;tPTdOpUxnTpr?xm*=w1q2IFfy&4}M zgF@4(6}N$_{wFwLZheGHWn*BVwW?p?BHq;-g3c#?{Kl1_3XbIMp8*-|P2YJ@P2&^| z-5KTmQrZDp6a+ck;fV%H`;nV5zckRvniwiu(qt#gGv|WMg;~wvvJ=OdGAF)PGy6y# z^YM}Q-hIFM1?rRotd1^mi3JX`&Q1*oqFa(bMi;wKe0p3ypoLM@VLyXZk?Jt zqs>pE&F`VjdgAoN0v#lPrTm<>>xte95V_3YvjsV3x>Nm`cn7?%E2=s?WGs5Y`#u_w z+=G53kQ`5E48DX~xJFMUPW}9oLIShYfzbua9FFje$0UZODwedIJX$J)#_1Ka)rE=5 z{PYYYjk>I(>8$|+qq59BdflOZ(Rsp#*>4|->YAOd(-|c7QTqMMtkJX}t6@mzag$^) z@g7yPx2)`S@=(>1g@d~54S~Am-#-&=tOcyMqK$dvA6q+9Nv1x5EQ9D3S<%;{v7jyW zXdsL-vNVz?ilLSm44^a^jKKlm(?U$i(#p$|`2!MVlmFz2I!^>8X(>sGaj`-sH5)PY zFl+LRrZmA*T~-Ip0Y3!BB3AB;+|Qda8c<$(wI|(l~MI+(Y(Xju&SxSs0a4)hqYPYZTb{rD>NtC@df*BW1_J_!a)3?(I!dx$jDW5NJX2^hq}HH~03}HYE+-fAqauQg z&}p)0RsaWOCd+d{5Glwm1-0jriK2H~TxOS4N(=HG3?vl_T;uvt$<%Iic)G-8#n}RN zR2Sy#no?Y2{wbJ!uQIc1URA@5!&0q9WAC>2_{S5ADn|@SrM8%ES))t3mJJ@B?HuTl z?o^xAMF|;9u3Y)-g6WUlKN%#Hk;&e#rB{^ep=;-mr5HG@k@fK+(zd z(9kJ7{UgyYpX9(LK!)D=Ge$ZE_?Pfm2lI~`%rWOiP@zL zFwnW<_0~{(JcI;uZmE>xv{+q2l!%2;QIKGU%)p}4O5%d3F3{%4ifhPSJ>sSb6>$+I z4R=hScNx@gx(=zSjGfz`PRtzl=qqWp4c)W43`ot7wlthk)uV;uu6TjMz8c#R&}o**wtmx-F2@L?i#Q5V|4E$5<5g!zs978_EMd6lqzH9&KaZr z-t>8VcE8GW8m4}m-m`D^@AOw1HGRqHL!X~|^T)Q^c^lLAkM0#BYnUo7xO0#Cq$ zX&fe4E1pO?S(fTKR_Gwc^R6kiAV%mKl*Peq@B{^+nNR+clE4!ycxOghyc09V9$sKA z032-1)MqE!aJ!xESqKr_85t79E zfdUDe29tVpVA23ThEQQ%!fhBdM5^ZB%_C{BDw2g@)9{X_H_A7o?jSOHD~L9zo2HUS zD>z~DSlnU|it2QJ;nW08%oD}$%2PYKS?95ch6Kq$5U6-MtYp@6G1g_4lJkXF61te0 zK6R|PnOdYJG+h1q?6HfD*K+9uDM=L8vqfyJe1K1YEx_kaY23YQ4xnsp^Sx}GI+fnK zh;ICiKBk^gkE=&D{8_*p>^FHZUiSB4#Ag@w1?=+XrR;L)w&$N$SMJ)y>xHa@wjA-b z1=>xgv;s85Od%KDrcPlK7Qrd)rcSD;gMSlv+<>Wfm%`!cA|6jSr_~Y`s#7>rIl#C& zHJJ~XrXBG&fcFb|NPx^GyCUtNS3Zz|Ok?y)rQ}Qsx@`})>yq-4TJ#z#bpdw2^qo1i zfU#jn**2I|Z+P^fx86QcJZt_SYF1Cv4OFUJc-w=62aFt6m64V^G|pv3$cIVL05Owk zL8+XRZ7;}?6uZrC;|!5ANLhi!lDM)9?27bUQguj0Q1XB)deI(3)bVP*HQ?rEI_90b zDcLkHOOeus&VQs~Ltr$Q1_`Kdk=v z^d!B7R@0j2_ILV?-e%}oN#6@yc5v44SW!Cdn_0X0(G|5LtD7_G9Z{09^rNLyc0IJ9$E6>uZ$6`LP_HR{4&Y|+CBbQeab)lT zrFxP%{S;h<^MMgK4yw>$HgnDbDa9xm&1Op|giM+v1ptj)l1rkGd^|%9Mc_m+9jKnF zP(P_;J=un{W-gS|%hjbEUnFi9mQ(N^BPg|-ExGBotDC$^W6Id|3)I&WVqV$yHB$K~X#hX@ z9sDGpboCT~Q0gQGn*%rh$dlSA6qt2rq>y1L>713E7!wh0!30DoqFzW(J{bY6iv=6b zO@=TEw30#l!4XPz-5`l`E>JXe-PDTcnDVI)Ub1-eq)hc_aMVPDA*m?A7AW-|cL5@{E|m*7?oST?9th)u3wxsSP4r`uPVuGF28xP$)1*2p4n;j z%F(Nr5AA{x5h%D25DPIVbr^BKab1>$R?9_Uly9TfY6>k^YF*aFY@51}=Bo$k z^-AMAYQj6sN8j?*ort;vNGDGs`g~5^oS0||5<>L2w#*eIp(gWM7qboORWwU|OKE&d zb-dHe9i;*X{w0S12QtaEf>dqI;9`4uG`{ut_R+6oV22_xAzA8VMF&3HqHl8a&>NUf z$4UExl6rkGmqc3R@j8!4p{B75!)K2ZY^2MfY>z~))fhjDfi}B-F1Xw_$s{^HgQm*JA zOTZ~|-nfASY1>kmkZWkB`nLLn(%4+hw*J0?ecKF2FoiFOP+SCc(Ch*o>G-JSDhfs; zRAW42@g8Md28NCg4WH8|yqXQ>(l6|UI1VC#7B2nT^KAKfP*+0WjJRqz8bRGdZkgsj zOb2oA44roC)Gj{Ul)H$&C3@nG0SfR3WC^&5&Ov(d%hW*1Fc^2kg!_oPIPKG$7o*mm z)TzEm$Eg2QPn4j4o!O!0sHRJ#pi7$T(U?};*NOJ>TG41Ws8w2rOF)y>IlQdAO5pdI zVH~#?0q#wruYh}?0YY0#(?F2WI8ELUB0*v1FoD??S2T55+<_GTi=t`%cfZoCm`}q` zKlwwL(s*``eEsh$ksHsh@U`tD)E_|H9;X5IwN&4x=X~DydY%KqYj#uf;zRVd zGyBy^N@LRy>CxX;NFO#Oa$W-3DaT^om|?|B_9V2K52zaS#z!t4v6e7kH6#=rNTt(< z)y}X;3JofW>kzQUFfK-OMS_)i$;a6e#5=3o}LRpb;*qRkP3XT z;mqq=)to#lRSb113`Hj}|*1CXo^a1?eyPB(ojyR12sQ3h5)@FtKK&;V!@klr2YzoZ)VN8Me=j-8nZ z7|g)jvY?I_K38E8=7g`^tg=~6AyArPXbkVSFjBZMe2rlNHOUj9+{9gi1qn*D|S3ddb)|J11^Zj!>Q1d_KjI(dcnILPm zXCLQng?(B27wQiroSuVS{{cM@P{McHqs1oh&g*x+5X8@OxAX#FBL6FP&y&9Z|(UxjjF$QEAM4xvc5Ar1x zQJ1wB-L8&dN7Nkp#(w$aTeqJ1`Yo;QdFm229(C&pRP;osUfj3h7rwX^fLH7DtuWpl zX-G=}?pxurumwZW7pq&!vCgCP8zh;iOY}{Pe`|t>_m^z;F4*i@oSOO~1pxgxk%9I_ zo!dTE1N;`;y-w$t}R^Yt$S@M7>5QQ>+M)dVJ>XOBJdGT-13DLev>7UYkyhq?M z)MsEGV2m$rN`=z~pMKk!1?>dBRnq7)G`8v9d!&D|N1E&Cezhy=A?gA4fp-<;mRwDh z^DB*6 zgtB+47ojEw8{RkYi9H1zOeY^zZ{|S(K^6!FM1rZ5FlgQ_r`#F_nKc+i;s|h+N%a7& zP`B(bL8Gy?!rf{Wo^l@7;M9rW&XKg|oSQv;pgK>x zXwCHOlptmNz&^|S7!{{($EN2uHJ@C0|J<&FW&p<10b@?9OeBFkslnJ}hiNn<7z{iN zG>f~n+g<_mIixuVV>M;gXGqoH%xWb)Buehj)@u8MLJ{2Q?K-Ct@H`E23^rNDP=*7} z97+jbhVY!w1am@=5xH$90XSH#xg-VqtJ!9cPX=3Yne*)qu7tu=&Eirliouo^S5#88 zZpL)=3mP$Pd09h&JILXgu`Rx`XAZq1)l(ctX-0Eo;ww{zLA-r!8l{D`vl_D1#UpON zvCJd7i^Y34sSMjJ|VJ#=PSH^wgm!k_~sXE4XM*6=M?68-Jg{c z@hlz~@MEGQY-UqXpg}<@U!2gzlK=&7{1RFdFh|jJCYWWRgDdonS2k~cW!IzX*|fak zl#GJHPE_}V<;1&m*t^G{dai!rh^oP})q%4H^y|NL=Jp+8?hQkq#{e(5pV5yO5un#X zf{yj$MVl);Ug=!C5OSX%FEIZ)#EbI_wZ{wJ{gxTk4lhE2IXI#s?bcvNhyyZF5DgM| zQDF8#!9n%$96H=CZRh$&o>=M$Y;HDd6%VrOlIgUoCUyR-AWIrWL8ld*~ z4DR;w8^`JJv1^v~9Le0juc#T%=@G|+GC_}$$r{Z^lSmX<%@UVYl){e^^Avffm9*gD?hI z^!ykx^&moBQZIV-si$9_a#KybnogBqTS7!(It_S+y)kP<|KW3+-ah^z9q{4t(j^bg zz3ZvOl&(%!$bjm~tnDviPH<&toKl6j(0Y$C82l8J3DQ^f=1zhz_ypIG3b=5v9d+lSOYlZz+pWUd8%w$0@S$bP zg4~`d)kXFC!r<&q4?iruf1s@Qg!-cRz(X{ktYqYYCLXCSkqq@t>5%+7Vi}?lTRPNJ zTbRSBTnwgIk;Zf+30jIyE-#?6htFLd(_AP%roe|#g0D?T5002nc<8#9Wp|Dl;22p}9ii~1!M!LPMFk?%4E-pjWz-HsD?GHJF4$bT zkrgGm!&afM^-S&5vno{%iRe^2bO4n~2JGw>*DyM7z~t%yU7U|B)ayL`%FB0c+1}Gu z*Cn~!y(+>Iquvuc(G<_5i9tI#ccdjT+v^AHecggFb534G1CRkr$ z0cJ-^S@NxuQbu`3mu26!W#$NopaU0NXq-&Xr1tCXO07tX z4N|{!WfoL}6eW+`@cHi<;_C3ByXC1crhtjG&%WYnWx{m?XrykP0w( z6Yxuj)6qQW0{6hQcmzqy^*WCkH2K_ERxV4TJ#%R!qD3NfBftLo%tP|pvk)1)C)8)@ zTJg?Ma;e9tLr=MU%`w{r%#LpH^x*xHWa5p0XGNCHGG}-k`6JMBxPOM9Q<8`E*nnM_ zCZdg^46j1s3=YW(p&@}rP;~HD5pT=em^o4#-SI1Elvn?mjPtQyLj{QK;e z^^4>?&sJUc0LBQ>z|x1xV(0|WzBL;UrM@BJbFYoHqs7isfU0RC)B;Iwo(>hc6U>Ak z(^&Pxe~y5;ys4VLN7ba}uB_)WwFE;!F2l#IemPEz{`v7LsPZxz(JJ>s?9|oCTZxm5 z^aSZ8_;}*N0a6Z6?jW(j^8>@6P>xI$1~@Z(!-?1%VuA$4gB!EonH78c=dM_NiGN6^Qsdv5ohUAuP2r&$y!(3TYAKd>BmnO^dFVA=|C(@hab1H{l|OKyANswT$*%wX<0 zv4Vx@bY>l&YCN_tma9nT7K&(7h`a1uf*zn`8$m;r{E_7RHU?!a=zK22z4NVA5 z;8yD}^97_(P!?;81nQ1YHd8e&)uIourNv3Z}8G;(@78FZ=|&&Pc@;MM@R1wj)1P=kOe1`QW7S%_aI!xcW+dBQE1-dkic z-b1bg`{gl!r6YKrSEv_F{y025ZK)`I84v(0U}hCl9uXE3C<;J9E!=0r!D zO&v>b7PI0L;5h$>(n~+;Qc{#xlx@nsqhZF)H<(jA<2|#+(}=Au_Cq3<-pYn_YkrBo zKap|~uJ6*hHCbc&{{8{x@eBZQqx=N$Zi+_DO~5Y_5&&k#$`LE%fu@5mFgV{;0X<~!7@Xa%5MDd~?R%=#v$;dQ$ z?Y4_Y>C~^nSYh`j7+&BO!Q3Vo<3v*H39wmZa36_B9q>6}!&DZagz^A_ zOmR%`NV~<1>77Uuh0QD}xxfM6E=`7Xl7w#%OuHU2EQ(d}MZD8{Z`tWSY#UgTUc}^C z_dO;{&)szGrl{>nlhgC)ga=aci(?O1)~)F`ZX%=I(mf3;SKq&C!}{y{Z3oIG=MTFj zp=i*U{M#NvUy{7vvAMb?_keL126VDZh zg=T$$Lg-(MhIzq4BK+=;E8%)Mf?dKv4Yep&y@CZv>`)?fJO~P+C-?~$H^bouFR&_f zYt5`~(evif$fuvqDNN2>5K40!77k>0K1)Zb>z-{M(lrMj|97!oI~ni&R;rWNg52My z%~oR|WfU|7=oanqop9O0H%Bep<|#0W43;5=!X(Z6$N_QQEltDZMDV;@{3(y!R~KA^ z97V}sE^2d}KzGps-dPb<2oHsy>_g756=ZXvfa^$!6GwB&wM!Ljd0$>1w)zt3sivz7 z@@clT!sM@w$>Pa!-O6q81CDw!%c*=~u`(rl&@HxQytr)b!`xisW6d2Q1} z(nyG0s3!;HeHH3C-(D(M>iPCkB;vH%OTXN9YSNO|7fk9CZ7o|$nZzkQh27-R@`N{_k@nB*+@%q7>I0*A2Bt0AxX}GxQH|?28XqcUo z3j}rN!;zlEl7&SzgeK2gRud8&6Z3Ku4ZG!X1g@Nldvl}u;=wKhdQP4%$y1wtk&I{K zubWFD8lWvO@UcB;%LQz#0=xdi##%{-s0Z0-M9L1@E=9h1f74rsw7TomX>6%-3$jj! zY|X;F_4hLtya@r@h)_frnlE}sr)v$hk7~KEgEWYcdw($*Qb<78B6FtM;ZzV68lS1~ z6cHH_t)()KN);Y}&uuv(mK6esoWqv(oiVaFBf=z0Mw27afq#=xl1&jA#Up3*P0UCP z4P<=>4eHARLvf-`)7zr+3dfA@b-Hp;PnTWUr`TOR2UVW#HF`{8UbIdBl5C4CEh|=k zd0?HzvhD%(m*TS0NSkI$U8!!Nmm$7YB3YVf&t*5wfh%mFL3{``8#5orHs;T0YL`~B zAE~-U|1$lJuXZyWuv;QvH+CyhcLYu6IO0IO_MhyjHo zwS7te%&-`aBJN8^q@GR0l5ya1a}ZZHMa(zS0~DTdBMWHaC`1{4E};GZsOmHykf>1u z5;bZ-dg)JK%kiAZ{2LNRXr9;*v-e zq^yu2BVrlDX*jqR@PhK#Tm zlAXAubXsw7-RvIoIo>idOnscr)Fq;3J=c!-1mwhuD~ejiBPM1CS|SJ`wd7bDF!4{- zHw=;OJU;NuZ9MOh*9!*hEs%0`7lF4<@xX6`tP4mHly=vQgzzWo%q5F_y2=KQKRLnnN^?E~104({z2JT%wixa3T^0E3 zR|+@8*{yDvtD#Rp=jKv{%Nn+D;X++dWMWbEq|(t>_IA-v6-#=2bW(T_);~K~<&)FsGmfwbpOW5$O~FRGdAbIQBnySp2M`H10<#GY6C;4lBNl=x z0;$m$Y~(Pu5i|$xkPRDNAv}u+4hR-Q^XcbPsTf6jr z>0omS+t-wT|I)QQCy9}Hp!Ge3Z3FANoNH_Hc_z87N$_wiG=XEd5L>KK$Z_u2)P!gf z3H!W5hYm>vQbp6Qvy1tscxRpWd#Oyh8*)!MIqV7PmXYp`G>0mPIT!4K=l-@x_K4+f zEAnfuu8!_%GGjY+;k;*gUg?FO6?PdQhabD!zV||pX_GZ1Bsix_Y9|=u%R|aJ;pQgM zEGVLIZP{UshVB6+PBV@22vZ6ch46WygCNw4mxB_5Pm#Hz&@;p0T;r2+W2`-I+ZMk+ zFebIgRnT3Qa=RU_9U-x?eS1x2^4kyH@ofByfl(=46Y@$%9IGC>reDngwlBSRY^k-I zxkp-bZcx*yEjJcB^75T|+1dS)F3(K+{3 zZAtCzj{_ej>Si+TW9K}>{nzr@xt?IA-!?U0dR8}+8r5I;4)i9yyk97rm38n6rI9|= zq_KxwqUZzk@Eimf3;|;x79rVQKav;%VQnX0yuv7~Hb59nnN`bJDfy4_aQv!c9PabZDjc6y(T zKCqyq+0&vzgUm=%OF$kD{4)to#31vmR2||ue2Ky^ITf^+q}maCzb8XZQa7nz?6|zB z=<*%#vks!R=av-}E!&}1-t@ymv-9$1Km7eoH}j+1IS>7Cz^%*`_y>iZ=fdlGmckBYLT*t1IvLM?TK>8ooEDJ$);ipc<+!20i|EbSU&8H_; zbYbAu^kX95bZy)VS~J=Vj(UPyaDKu{^hn+ii~yiBM)-QClmmfA0CM&2v_iBa8`D z&LfSGXF^{L##$9dy~Nk55cvywdjL;k(A%XE>MeBIQ%|Y2>aBF@lTUi+(RuV^_0^M~ zs;{*ia=tN~zAqI^n}B;gwD|;u7aB7gi+cnsqXGyuyj%}hNBAAa7Yu55qt3(EQSpZ+ z!fFTG5__U~13QV3^N<5-8tx*tQA%bPNnc_X|9L*>V)~Voymv32lgT*mr^@rnYRJ9m z$RDgALp*~@sR0sVU;snZtU=FswifpWLTe%hy=-U`TibR5<>%Y1`4#yU<=s7HMOdUD zD?bnFvsGBS1|q!jd^(?O0k=v~&kT zf(Fv?XO|WgE`3%lzxLF<)3dXu-+SuX>%P>EzRXCOGO$PgfnU+8?OO-b?EK}f!7&pa zKK9+xW#1ipc>H)Ac?ph;gIDc&clMljcCV_fy?)O-b7sHu!m7bi)WG@ygPIn}kvHBm zZeg-&MJ_03-;}s?pVQC%zJ#`V6z*~th%d#~MPJf=zIrt-0)LiCcS?AlRoJ-T&jfP0KYg4iAHJ^ibGPUu&#$I3EBC%N%2ZJZF=JM*Pqz@#vAIdPmLe{ z)OhL6H|U7hUVD7g>l^0ooIQIde-8qE*r!;_NrI)Y*i#4^r%(pp1w_68s)sX)yQgRk zm-UgXD>Mg_+-g38CmbCxBG6p;aJXEOBZQH~Y_dA-op*L0KD=ueo%Y_2_wdhQaX*_P zh3m6m4Ij5vONG^(%TC;r2(3qx2v8Ur5)|it=&neLm1N+yODiHFapnSLG>-#Mopp!v z)LDx^bry-hZhxw1h@zKV*86FqG0)}<&dzgW+KjK=djIYB8ua!+cVN2w6P>`O+({3b z1|)Sab653|Xt$wN5jl_Uefaj6!j!_85_6@Zu3XQ@iITh72q{UQ32L}+YeJj6*(`!| zM(!+!?8MM5J<%z8f&W_iEV{s;4nmlP6_$}+(1)hrsOy$Xc{+y?a_DE~S?Vmow zi6kX)u~Ct>aI+~SC_s;t+Z39@J-d9JiX3Y=d~vym^~@7f3S=@C;ppvBZ54Xz>D!M^ zomSqnx@Ygo8M(P1Z@lxq^`nZr551R-*!gUE)zkNlntJ!lF}DxsHLl^#%@02~{&rL3 zRSO<_0Wg~*f5HrZJRi6LZB8SN{82FtMe{Kdz{H0hh*lbSVFV&ef zPdLK)vC->SZ#nc7-Sfm9`{b9|x?3K)I%d+Jw-g zn$A;)P)BJ_r$v)*m8AYl?^X?$hv-}hv1!pEhS!!DCk*U0AqBOOt!y$Ist*T_C3@mp zbK)@==d2yzON@tplZRC|ELaHj?NAxs(asVTa}mdj+T* z+|Yz^%a3MWqm_}!5O+Ev5+f6lkOOlyY`D}HOWoqEV|>96Ei8yz(C7!z$<`pr=d-iw z_13h64eQr$Shs1DRBDYY=#oeylDg!_S!26)%TT|_=+-rM=g!Tvc=K~FY*b&`xL0f2 zRPgW{TX=Y&UKTvuTmUy0eCpzhMeN>97dCykXAf=k(A>{X&^$GMp6YHnU}83z z^m_QvBTfFrn?m&=df2v+wW3%;gLyCvauN{$YZf3k(>zxmE^*aR`q!OJd)VUb%~zph8tB#k8OIfY2TO28BygGToM?8wyzd*72bAo zgC`i`uY@G+@?fO;!TQ71E3DOz1+;Ya=pIO(JPH^n`If_~AbLHm2{Z(tL*O6L9;`Xd z%j&sA@F#`qJaIumoZ|$g1R;IK>AE28dyD&7nd_;AqaV)8fZYn%Ih!U^aOc?bh+~R3D1^Kz9 znG3Q?qg<{~XQ%kt3l~oBTc-=XYi6T1->+0xNYCpcfLu;e=*h#16s8~~=5T`;R%}5o zImR4hiCa^7t~qF`nSs=UfChtsazO}-$3eI@hdHtO5JFqwPYaO{=ma+hRU+5w}6 zRfTj5&Z}|nMmw<@CAaD_!`jefI**)XNfrgt6xL;blF;oeX>(dy`!e(C!9Of>De753 zZf3MyJ+xgtktnkeddQ7!%g`I!l`*5tVsZ(+y|oP6PH%5lra#JDhPAn$Z&&7dUIy_< zPXfLP%1q3uFoK+EZWiOP$83|3pMscmDBs+W?T?^GFk(%Bfr&sn#L|Gb2@4rAT49S6 z#868$gp-fQ%1U(i;bsRrh$O)!SPADFy1aRY`q}+hmOJyp>k!i_jBMa)+$F|?3`L${a#CV~ z+Z7&$Cqi9ja{y1t6OQQf^HwFEDQtDm8$G&%>{We4=Yib@jUO-R?_-BM%3$p|sDF}8 zmG1+1eB=0$LBs2r0@+~WWwxQSpYi;&hzXi{!6wQ*CsKkt>B+F=6a z;p;pZA4@?eg_oq|BNOn^be2NlIXAy=3-x>8_x6_-oOv11*jJ?Rc@{MaJF=mD5 zjcaR}`SiCxETfI<9x<-1_4vnCt4ABNHDb(sW&C4?_K5r=ZGO^?;$0=}+k-)vhj|r) zd1ZiUG#wHbm+>Vy5^)*J=#2zbY*~H?d3)9XYl186yu3Xt4;c)_!aHXA;JhVM#>~AI zS$ml;9X)dLhjr}v88=-$>uevT@xyPw!J1freG=X=73&dwD%P%=xD`QL!Vk_DUyS33 z;d5pB*OozBYV`^e8QOg1hVx5^2n|9Mq&o;dpcViPg+0-N^>%mww2sFF0B@4HG{Ai` zJdRxiv#2{J)RC7R574`F;&0F9C_RL_uri|Yvo;M?H^yYX7zml-X<8u(Yx93C|1R%_P#8f*5wFMG1)7w{Z6>lo9zm&r3#8n@z<(#kK(Npf z^k>5uIHi65cYB2%i|t^E#(+TRvRWKJ&oD}9EssYg{qY0bo06(MV3>^JfA$2-?0ofZ zSrnE~J%&LG2Y|O&lKh9~w2YhCVY>(k9zL{oP`_$!CQM81loUBCYE*Cp;>e*F@CBS& z7KViQm6xnQ*FQh$NU^%KurTq-S8(7a0c*Hb!7_*l2-Q+bw1q;X!mw&xVNMqq*VKi% zJ!ocZ_ue^~v+v9vbxDs~^=Vi$ME#oX+&p4=c-)mkAAX`!(b)clx*1@AR56$=F<~(Y zp*kA$_{NEMgl0U%4oS$C&h1v#XJnt|snaIi6cXaRs9Qn5*K`jq9D3!@e57UH)px+q zVLRR#Sm7D;!kWCnxhd8l8cwGLm~9#9sfls6;HbQuPI(oZcQ0tTXo28qLm;ytcSp!9 zvXEJNYS(!#hY#PM6u8{$JbV}V9-_>Ay6g|j2z>9w@x7%MAHHjK2waZmxXkYZ-`nD{ z_XWr+H{(4?bl$go=JDl+T4o;R%%xx~eYJLA-Rkp7@cww;K$$W{wBst?j+Q#Kc6j&U zes3k8%cI`0UfvR3qHRkMm+SqPv`x7m+IS(E>WRq7W-<~N_(Ba>G61d&34vo&#-zy* z#16Snz6G>=+zv)29}DDjg*z{N1i7_j>;1ZC%=Tn=T8d&#LqLj%P7%?@dR{%E(YA-dz^x93Km#ldFjm0gfyX5?Uu_l^ zGniGd<2!$!TF72f%l65IKmV-m*|bTW`18+Pjv4|RVPD+@&{;D{B@;Z+E(hc&6SyTw zMM3}sDQ6r6DXgI;mHDGxeaONiYg^?hE$&tbT5WDbAdA8iYz*j>1pk)VXpV=hMa3#d z%nDHpQS6eCvNU@b416M>K_pf{#+tIz=HX%NllaGO>#kmdu6%B{tE3>J-@w|dckRik zOT_PRoGIaf?9JDS$o7S*(nGx_`skz|c+9&#IN;6Lk0$-VBi}dPA^YP~Q+s~?yl{wkn}~cSvZ8s2xX1Qa zBko&sK1Ia+S%2QAFXDb$YsCGGY3=epwTOEIX@0eXkoy+c3HVYDUkrwiH zS2Qj;+^&|xn%IMPC8^2J(}$Qn2`Nj>+#F}T0H`vD>**5)Z)Wutt~NV zYxw!V4&5}U6dK+J>aWFgXIBV8LgiAD6<6X0XMa)r>R{%eB74cH`MsJ zwX{YI8;8we2=IXht)50v56>wS@1p*CkSi;HCg6REgE5?s+)%z!mZntXHh^bR0HIV-fsdM8)vh5l`>S5O?roCT=!~=SEljoCDSh>}2W$S1=Nrf_RF3Yeq0@lTadJ z^IY6LE27@t>rzydQ`p5|OYhE8OUlN3rcF>)8ZmQb+x+0H%2KCD5Ej`bBdPt0fBfT$ zGdJ@rVIR&&1sXjd?+AL}vr&PI_~`+Md6|zM>=*RFCmBMr@Y4g}9_(rwJy;>=L2EsJ zdLZi2=)rtW4_a$!r3YF)+MJpx=2UAvZRb>(qRpuWF{fH<^3SQopdVP{4D)3+|Me%> z|4}Yzn1Qp?1IMeIy6{*Dqz`C2lc~JtK(wy zqmex7J?*PSqbsLd=nAh#gXJ3nmaX;pVX4(K3iVt{Z}XmLSI-H5Ji1cgBcpd^X3?O&oiYaX z%PFdRGkZwkoTbruuF1DIyuI&Kd0s=B zWqIVVkyq~gFkwQx#Tt;{Tr%gXd$f5g)`0Wj*iGgHDmdH z=~=5-gpT5u4v91q?TI9%p5j2N*F|8lURDnGqi`+54lU$5y|4C4Yd@`C~k++lDcPuB>eKrb!(8hDzdtDbFOb}yk6aLRcrdHmevhj^?i`;5t^O( z|F!qt@l{l5-1s>&bMH;>JrHhk({s~qdLaoZBtR$$EukhP0YXV2gpR^m5ew?N=qf6@ zuDaMRSP=^%i-^c7B6ck6Dk{3ls;iJp-tTi}?j)fo`}w@T_pcv%GiPSbJm)#>Ip=xK zQ~G8Jxvn8scgc18_9IU0PsUH_ zbXF2{wjYj8XAx@=yt76d5Sf$qUHx!$+91vX>>8bYoak&n6obz8ol%3x*B@w5mpf5G zf&x0&_br~^WUi*?XXtsY_FVG~sL>L(L(r1`as@2``wZTn->huISkn9l`c{y#6poDn zgBUPb__Oq1%R_|$yP&(>>Mr?Cl$XH9A_g|?M^GZ#i~I`ib4w9p*MsjsEm8qR+so|G z=u+Ri>R%xzm`rqZ^9O-u;WkL4fFFp_E$DjhYVs#2XxD>%uLDk+3r^qb8XVTqyPE9L zMV=KR&$z*PP`6H0;VINj^J6v8FX6d%S-L4D98JmiUzkxsH$1ivBH2%#ovdtAefTML zXm5p-u|b_+tUYud=sMrQXwl~~Z8fPLuxFRXyAcgu!S+ajs0XRTYx6x&&$ABo(AK;^ zAZ97m)qrEv^^)GzWEYP%`@?j~VL;Jx7;E81LGKq~?+yR51V_U`E);FK2$EOoD}3$3 zpPsYT{5@8wmn+uAO3@Mew{Rv$c@SYt|CVXNVU&BY+y9^V17Xu$-?;`S8=J>^v7R+vShZ zp26(er@h@Q&~bD587HMyjpc?FCsq~VI9hWxL4xZbI(%1{GPOUO@NY$j5f}XQ{9lm( z*$YJk!xGj%lvK1h?8qSO#R}vvoMO^}l;l}E&EcnB@yi?h?jMGYyMBS%z9%TJwtS5| zy9ZtrHCLJKn-@C(iNo${m0S;7<{|8wG7o<+6kezq+5eK+Dgs;LjEu}8g-xQUU%%Pg z7-tmnSRwGnTitImHvTz#TuSg;Z>g*H1ZGy`$(NF65_n)xwsmYs8PnkC zDSv4<#;rJ`)OmksykMSE-8Gu(T7zhhTdS`@hr}AxFS*m#APtVbKRqedpnf>6{i%SX ztwER28q^QPSc7ypH(_ie&ZrdHkB{_>6sprSf^)z5DbTC#x?&v;W|8D9rVJ8mMhh=C zuS6uWc-k>QM;e;S=0-yb=T#y6{(`x~=!6nhfIs{Jxj3&#|M-A-I3)Dreh60*hb;qa zop78PrNEk)yh%W&+pmHk&6vBOa9mQ5tawMJR;FD0^78ELrF*WDhpJce1ob_B$veuy zxXeZ4CiEW6uNj}3==V0 zM;zRejnF-}kR?qrLrg%)y$QK3?$DVaZ8FzkiW{BpD3d(Aa88FH5Rqjml-c4g&A*7; zjb%|oA}!|9;e`b`*%|3c3AX6S@*(AZzUBx^M1ZD)mXjS5jQzB*$8>ppmHXB6Lg}a_ z3Q^IbgM-N1y6&V2XMPE0dG6l5>Y9{vZ%a^eS#pp?_6&}f9^3iE(^IdD8hYcDiEGDY z1ge=nA;q~V+;``WrYnYxlHQqg=uq#byt+#ML~2Rl(4mDTscLO}R$)x&!MFDF?RyW` zju=s!GIrIb>3>%Ouy=q0hrkqnR4bEENypmld_=J8q zT%Tha93kflq82ouPy?ck>v1jxf3MZBQcG zz$nvb1FcN04GxJmFiJJrzzy)>r&W}zh;s7;{CMcgeq!no<$frhPZiJIFu5AFa@m)n zT;$j3n~R5sp9guVr2*}+h(FAZV-JIGLI1_KSl4_R{C$GefYE~qltfHDO~^~yobU*S z-0+v7DJqdWANaQ`O1HM`X7<`OhDJta{wp^NWlUP>##b#4z@G zna5D>0TVLj;qo()0Od;40>nUZ=NzZGjX2!wwtoOn^$H5)r2 z&$?LX7Y$e#Ou?yLgy07ehP2?aGnwWR^63?;CF|E~P5qy@QF@>%^F=Sp@ z*b&}frf*lWj~P)JXeMhkSdeLg6Nvfywl34?5^##ofuo%d30jpvP-YB-V!+V!b!vsa zjt*mhzD^Cw$<=A=3PD?k8|Apx49s)s6`i)`3)(ut>F-$1e)99U{r!o!$gtw8c{VoFY`eBghI91B2)S@zY=!4cL|RwynLF=1@#p!dS= zghbX6VL<^DW)ULmcpeYClfamSybv;%4a7v(!m+?VEKbLL$^D`1qiipj8I%*^NH@<~ zcay~uk~VVjn1WfsZaLm~p%p1Tl z{i5X`^n4+nFVJKn@7&rPE#s+q^z(t2K02l2HK;W{9a3L6H z;nIhl4DZ!($riZivayH=UjrAkU0*aKY)DEcXgRfvXkYNSQj*}aHuN13_~>x@ z@#*^od4dI>wc!cE=RC4LozK$xX_~-C=hyo2Vcx{|X>IcjVMF|yfsGh5h$W%n!hWCU z+aS(+&&Ttjjj=!0a9JpD(f7ywxb$JHO4~JD9w1!w-Ld4<$BYI;8#AhCm;ODrYs}D| zf4kN$h14ztM8w#UX9%e1~-C@I&#c$Yqx?7eff{WkcI6MfGj4@R0^t7r8*Zjcv=Ju~1)f=4m- zzy==^-`h^U&M@}=!0zsQ9&l(6thLVbV({_4Pt?Eit&n$mv6wRGjbbSvv#xT;H#E&D z-Fm_n5Ce-ed7$%8tIP4Hy6b>tmGbDBtn2Rqc#NTU5F`2Tpi^e%F_!kiqm)w;f(C$N zhfgjO6;h64TwFo!;2fEzxmk~$2p3lrMrG79>h3q%+m%y%BZ3bpY7eq-Hp1j7J?(-6 z@e;wovc~EFig`&o9O2t5P|l(_VW)Py*16=+<0enu`Q?}DO@L8lYJiVmibDcibZgxP z;=6$dhxY+kO(7(gW~poSht&&|60`jHMD^751veJlU~1qoldEecsmCEhUj=?>Bj4D#ifmXe|&>&9PYnUWkfEI+oy9l&Idh~%pD={pm= zFKbQ>k3ozn(cWuKE2SRuH7tb3XeaPiEyQV)5R;MTk)R66jJz^rfVdH!;YdaXcZ|@U zQaD1PLY{VkjKh!-TCRFV+P*;JXTS$=8!!kkDe)kx=)n8~5ji_M*g75h%BNIrWMAT7&heXeO7YU zyvVGZ$InS$HY+GHRme^M1dwDX(=0*GWKwy{X zK=_1v>k@7{r54Qj>}lnDzDZp{Ka7*NluzM(;WuL(z|c1E;Ghr(`0g~m+x*+#$tcc+c?M&Dh%U(rZz27`TtE{IRD?#=^LrWW# zmBeC99@4AkYcHNA$XS@0S%FgigU4Fbf=_;4XY!zEkXl4Y_+mugH3KJ4R-&o2B6tZ7 zKqM$(VkMmjI)sH3;X}n!oV4~o)O^U|_$~s8PUhhND!($q~+5vn=BHfxo1Fb%hded-imn zRoiC7$shK_${+6A*ZaujV_%P(&`~En2eh!S!hRTh3-NQyagG9hj#TBeU5CNXX?Zlc zh_FR;<-uN8*m$CTIDS%S3`CJvHh8)=LvamfU>K(&rZ=tE!X+|}Ww9(xgoxDTIyH(7 zCB=(?IFg7)!vqNW@G$uYPu8`XEekR#RqG;b#4HpMw)X{h;e&$ZKvA^}BU&{eYj)p@hGcLRMW? z2{%OOT-f_s5R}}4h>#F!z-WDd*BZ!jjS!EVWoJ$d`j@<#Q6-wPf(wzfZb=r_C6FO2Y^Q$}myL(vXGu5P|wlfR?R zmts&pi2icvTWIb+&(XKI)QH!Jz3H3ixhc90sIc|ro3yqZFb=$+djV^D(D93l=?Eif zo7WW-(=qnkkdD~Dg!c8Bw*#I#B`E77rq9EfXUFxyXKrhlQ|LWh zP9ApE^BYHuyy3aa)Lq}(gAadkIQ5dH*RAXIecx1dV2}K6@96Z7XE$zoadEoowqA>R zqx!0a_F5Qg<|4!<@L~=czJWbl@pQN~Jqd&4NhMAFLEOVnw zZs*Me!I_t5_y8%nXS7#zyw$^BR8A6=3yc$#N25Qk3Mv6%pcQbF-f=@N!!n!(ka>;6sXK=d+Vh~duv=(L)W6M-7$ZDLi-OP4?(Dc9LeFbxts)j z(1o2(t?x3)rWx)s0mQdM*bo~m`;5>gM4rgb#TBgp$E7ev{Q6Uw|LmE#x_IeE3I*U3 z6%yg&?na^VdVfNY!DTag73rWIQClot7L%#hU7yoRfqrfmAm;R4+Bh6w15Y|`9vWTa zc993$g0tvaf_hy3Oh1d>L9zh;fGdwCKSKT2sZT56sJ|yg=Aiw5nAnui5k0HNSr14v z1vnNiY{P`(+J$Flpcn)oj{xB*j(+HL9=>Sw|78BL4_pwZ@ev5D`na$9G#`bSp{=H^ zzh0$2jju3wg`CU026LC>TVkAvxOg6DV~PduniEiD7A6HmVznb*%m@U(9O4-XzXb6V z$&u!RHe|47(76*S1;F&p#ve)12g~&d>Jh0=P0yq`kUsUwZS#zAVqWu!noQ%P^MQ`a zp(sVBF)!lDQY`2gcJZ;GV}hb%E+Q7R5=fz-ADMNP2nC(expAH=6!gPaR&aib+kP_? zbe_7ELP4V+#X5j~)MB?{vT5r$@%owvZeKK|Kx1GC zYtlwR95Iy|0fPS@%=#VCyXl(uz-lSum~CG>QW}!$iDAaxw$G849|{$;FWkZeu$T{2_`b z`2Oq*t@>fO=}^B=cl-V9r#>gw$c~<`GKMQOjItPuYooQ@nn%7<{dY*Kul)!#htO0S|^&y5Rer)>4$>OcSe##`U5X+8c% z=+B=NW%{h>3{M_eoqgrC?))Fzyy3D%OOJaMjXmrEgV;YsENLJkVzs z9p~2{Jp|8F>(B7LhgEer;%xq?cp=87^~@(OTI!+Gz#jw+H0Y#318I&IpiD2aKDR)b z77BJ)h2a?G+{n=)*eAvZXpK0ub&U*!jxK^c%&xwQ$nuA^0Lvq#XM0Zd+#)MIJ)-{= zl(QJ+gt2&7kYjgThiRj47+oP}kTHyf`D?0MSyP)xG9dJ;^^pL_dGdCJ@P}W z**kb>O2N3+OW)^iNu#cLakD%DJM!Clm(9KD&h|wW#Y4PMi`6KzN7M~vUSwS6K%DtP zplIVV;xZ@oqCsMYeCpSCx7zE2=KZTO9nG74=8%$i#@K@rjRgJHWb;CoO6TQC@_{(WJ&I6so{8s*-#zV&1r0<^^)cf+F4DC$bGW6s1H zi@N!-=&~qiC!9~f>c{+oNHa4KVZIaK*I16`KJvnsx^3!q9Ln<#UGc#B`HEG!NW0Ia^5`g#o|T}$p-?|iiMa)G?^#_i8!FaVuhrse$ehkGQs2F;B3FSd&%-wGORtF*uAXcseAOj z%T&|fPEYOq0%)NB!Tu`#z$1`$Du^cq=pfPM7_B(}V>7hU$X%be%UxeUTwn~;GNb*? zu)P;i!J@EhB#m9^^VMyC|0f^npE9Yeaxzbq-U~hSf|S<#R`$sJNPp=oR}5OvE7M_7 z_t>&%eHo*Iw8~;n1k46(#sr-Lc)G6VaX<6eZxB~`&FNXhy_@bOsHD64w3+0WzN|rO z&u9qssin*)z}2E6ZK;PddU(MCA0L5~WEp*KPHI$NU@=G=NZShuo+pOZXp zP~#d6EcK!Lm1}|5*?U1cnHT&KO1YT5V9tQOpj2Au+6(5wo_6LxIWF8XiJvLbd6~SlsLGF_J zQA*3>8?M^jo|@XeTQ1-5P}k&1k~}ObCo(A{!rMI{!CqaQ#yub5=0C3WPfV)GNpGlK z?!0bP-R*lf^uBQQ{@ZXahj#8eX*vK|N(jqlw`!6uD>j-kGoyN>iQ3NwPgGznG$4X* z?D_KPUSl9J0<{wE77~qYf}e(yDZR)CB$vi+Xm(h3vY)$uO04cdQW74D zpt1`Ol4)p5NCJrr3~D#|M18R>$m|(io}E=;^)d&?w5@%(#lB1Zh}(AATOMA!=8;yr zz4ehpx*wwA3Dq`oOw{X}URjxZdhD%#zw+f?8)83J{O!t@Zy8g2%f8EdpSXPgt>e&E zpxH_&#-y8OKLwLEoIcW-6GYuuq#zt5H%rh$hG7*s%yLJN0QXS$&=BlO{SoN^%Na#g zrVSnf;Rc0})1{p3*d$tqAn=fOJ7bT`1tm9Fd~WI%he;(V%4AJ<&tB=#x1w> zTr2%6@3VVOfpAK9_cn`lM2|&{^_-}rBw{<&n-5^`m&R6?`P#5D0Sid>A|oWZOcVD8 zyJi#3a|vQhVXUf0bUM#V(T(SMu7`T1Shw-9-f2E*i01{7KYV^7a5U+%lT;AueZJ>|)g)DKo-isVuyyXno8!ydmOM85 z3f?wnLZdq6kF7894?mDvFMEF7M0;#V>d+6ORQ3&cUvqkvR zscb_Zg~2uv{4I8U=p}jw12{4}6v|ML;F8rLEv8ss!o$Op!V_Z(qX&Co0woh(t6|fO zE&}Hr8Y1HTK(fi#Pb(>`99>x)m6$dpz&$iHdDxJ0xT#yU;E&^?xiq1%W9sAYORrVe zjj8O}X9|oRk(N3lG0aoy{ao3WGO>BYytUzBTUS5w5b%QECiKF3;5>-e9T=@@Ag^ol zUnm9jDBE7@iKhM@qQ0V(;ahi@#LX}BK#y{mQZfnBcJlCJqfx1etc5$EI*=^y3QFp- zA2Qk?`LzUd4dQyw$t>j85YvTwgo90p^7n)Mns{D|kHR4z3Mhp+AOe z*GAciaZFk^9P2$(zC*o!gV*)_OUw| zehEAgbV_QFYIJ@Z|Ur9;JQX$nLNeNn^X8jMsfeldmQF0O!vVZ-Pum z^A)YH2*M^r_=^^dtrkKjb-*{o-2To-V4u&w?jW*(w(blrh5S-*21oi~a1{;pTsJy` zOXF!`?a{q=VrPtLDcpAw4HCXPg+xiRAT~LU=k9y)jxS1v+tPw8vo>Bnt*f-)UynZ5 zcujp$bYV%XEu|njY)9~GuPkbbEGSHCE8Si_b8~Im^SiUBca5l=TQtn<;h&t}QvTN` z(1qH#mb=B+w3S)iAOgTd#C8%+pCPe#$#LA7yLPxkou%=<3qR*$-v3;E7D3a7OD`i} z+Wy``8Y7q|@CBmj)@~);8vY#08K~(a=92sX%De#Yi=dr4amJTt^S&4<_#YFDhvn?! z3E%#pzIPx8CVa#Ar@gQC-YP|iO)_WEeLu+8w?NnAEg|iE^`O7xhf1dl{o}R<*pB|Wa0R3`_ zbUFHElWO6=^saRE^<^l-Q^*1aNE-&V_<45mASKk`h_!5n6;~$-A;=QU2)OEUm zn6jV?q+zD@ZyU-PbiOAB)CJD>h+dvnzj}?#P~~@el4u-hab5uvXPtT(@WqAuk)jN6 zsM05{G7O11b)YNc-+(hj?Hup>qtd>25$9VA?F~F5)Ezk6B>FW1an(RrL69lR$^Q_0 z57N6JE%qMb-O6wWlqEQAWvOS@h@5awi>LbQukGapja*hw24+_-Sf}ndX7-OvFG*8s zd%r@wibYb`nQ4=k)+Q3`g0*p~x=HyI`xnwhazkP zAdO(V-TmD$YGVg*l;TCY{ zaflwBO{bu=6ViBc8(Hj=5mpfg9dK=f$&08Q_uR9->d(IZPflMLQrNL-YC+A~EtA5} zSSS5yb#?yK6^ja^KI!3(k9vNRJwH+pU$vrlJKq*OeD=Nbx%-0qTeA2UYJ{Wp{sroP z=ifVfc(B?e`aA#)GE&)wKA$f7d?D7+VPgD(|E85w@ZZ{`{ayZhV73eL-x{MRPYLc# z=3!s((7V-FcmcvqhRa{lQiw5w4Y@oHIQSFqjYx9m;k_w;JzzBXY?;R4V zvEF&3hd=Qc56!QSjpL#GZMSQ;@dwq}<-Tu@Uws3A{qt^GT^)a1{m(so)Y3(@Qt#LD2Y**1c|hv;HB(;xGv*%FE|V9^hf)kI z0ng&K#cp%}ukDTFC+`UF@BpmhULI%j+6FcTF7l5&tY;{IGT_<4E`?HLS?XOG6>oy)_EE|t#a;eR_H zIXu#=qR-{^0dEikFPtL{GqFjKl_Z`gFhad_z*m^&o zbNPBW_@gkVgmFxQEaiK9{$Xi{I_LG<-~EYKsV9b&+$S~hduDYkp4WRf|93f;cRM-u zJTFLUnXw-kN6CO_OQ~;U6}n*j-QbaBTqWr1fzAFQ6@reLR^O zXdcg7|w;WRC5l*!VR=aw^h8 zJ#3lj4eD2$H)H(@SHDzB^QR}}PtA$(_Dvez{)buWo_hll>K9Fwd13AiTNFcq_e&PiMjX>1c?y=fubUXA*MgVNA{Kf?>Q3N~pwPQ|P}Kya4zC)0mSdPd`aZ7<8HTq2S-~6AL?rUHmTC z#L3v-t}XL`TuVl9RGeODvF{>bc3|MByLV6~fi!83D-uzSFw{3vrr{H;HEA*99sal zP>9)GTL2e>s;Q+Qd<*G9m=a>*<%5A%l~>_4@rcP0jQL zGp+AgOhw8);4`hPRTHZWLw(#yx?qx~YxdK`)4EOa^pHg8Td*!5aPB5)JTgL1W^xy9 zu6!#7XKO4Agl>n`3oBAQf*S-NAe0{hxWYl7R$H7P(%=-^c#tZDt0C4^o@bG}r%hb} zhXlO}4?D!ef>+$o{#X<5{R*p24F6b-kgQ{`p8w(<692aff2>5K zu?Hg>J&cVgD)o47J(A^^Diqy7f6vKE`SJVlHi!Ge8nkEy&qG$O{)(cX= zTY}+%EbJ(PhyCo+&wQO}5;928f1z_^=>k<7snP#XJY+D7#@N!-k8}wDQ3LSwFu6JF zg{H4OKspeeAWkW9lJ*qoC;g%(K|@K@6@&S5)1?jnk(7|OHFU~DXtfmY36}R*; zW!rJJnIyzimbZGlT#0sdW3cbC0B*k^4iiHQjDweM0RcGFN4$aPNDc>Y+@XHJJ^#Fs zd#e9ZZ|CnRsl8*R$IrZ{0xE0tG)cPp1WV} z-7ZZTP!AtA@kvYxAyW~uHY$!-S1dL4nnoj)Efl)oZfFozpoZd&rj+f&d}wnb5DOg; zqZt#s?j7}CdiB43>x2J>JfgUZ`v3P4)yXG_Jq2R5kY6>(5Xe?j)@(0vmgb4pNnz<_ z;wgk|+Cdu173YM?L?Tk;&Ltu?CL$#=B_uf5&jPQ2}^+3Bw^{miGx+r0&rLZ z!r_iwLfDNdUbc~o5O!mI1BKmCw_Ac^7xuB^6n2C4eT;}3@?+fHb*!bw+u(8P2jYB- zhj1^cm11qE->LuA;%o@qX+H@$8}z~>!9_r8PFr$Nt$`IF-^vsW7D`2$Lz-dq@r81b zFtaRZ=n!9@*q9+nLzAGm80i}s@8?DVru1l_nj37K1 z^2Ob|U)=Nj^U@=$<1!1QL;Iay-*Jc7@BjUs1LXVKwZR8{T8D9wr2EGFTG;N#0c}Bj z4BPz<)PJp;JM`+;^6U6!*hy9yc{c0zmITLBhx5LGlVIezSI+}GY|p_e6ep)@#By?~QpE!K;2!Q@{uPHbM9^32IK>QPw_eR>i4a_oZTq!nSne5)@0CA z_$ZY7r2U{=zZ1if_Or6e)dL3r1K(j}s&f3reP`*F=Iq1n9p5dJ?7lZh-(A#q%X}jx z``*3cyT!^9zTUhYbQLj`NvAuIjCOInG8t76_DVq%t`JKSP-CPd0?q2NSe)fLk*&%w zTMFasHJBUPGRLiM7(PURm-|$divYwRNhe3D--MGGYJd$sij=G2&d5 z)Uj}QLL(nrfBdEMi~w>08Avg3AfyO_Y0~}Cm09aK0tU=i$^eg>AF@C37{PqJPv(E; z!|_!@SuFPb9CoIS=u266W)!ASOeS(+fDIi0_CvxFAyno0y#gwsi@bn?_L1{N`-HL? zS_?t7U2?bJs0WQCm>GDqL(oxbreR`3DH;lysHKRe%XNBoG*+mW7Y@fly`WD^5)MKK z4d(%4;sFg8Js>UNWK?U#-W*qIKzsH#ti-k}rSf?5YQPL7EoQ<^!mf_gCIkX#UBVR2 z>q0^ZS-kZ&AtVO0N%VlUG}l_0wLxp3AJ7FNIZr8Vn%l`udqSRk%t%n1Jzj};1XYE zJ8Q?UYbfZ0fI3|IK29J34)n5-BP;7hn&1%PmOt_S{Wpv(aI5J4Sf&)etZZ2_^;df z_(%CMHTh9>$9C01WnRhOmp)Lcz+#2MnIjsIkJl$CXVpP|l79-LV2im{=xIw1_4ES| zaP!~z`+wbh)BO+JxS8;l88kJNKk*QxC2EStG(%H;9WCrqy_&mEUH4vzkEl5?Vl z`X>e?dU_~+CO=eD_74{ESGh?U9YV62p_x(PmQ+f@6LSe zdUwueq$p@P`bNXiS6_Z}?i>GjIV`TEIAvODK~Z#2aCC8g>a^TZ<<^(am%$p`pFy&V z9Q)pEd*dH_0b)3TCxmQm-Ya?5zqBaB0ya){q!{o_ zzh%S6voOR9KTuzxYJ*OdN{aMfd?R6Jo>7(xi4U25Fp0P=$kj}cM-hq8mM2ps&i1`! z1hWnZ^aGs;%nFxWafSVlKcoJQH-ETxt-O<8-SZkxxKcXUn}42Y^OP-j7v~KBcxxv$bI!;8C0}_IAR#9G5fN*eG zj?9eo#Q2Etpa5_39_0o-$QoYbOGX(&cMs9$L0nwAdqQBDQ_RyKEhA+}P#ba{2gxNQ z#)^<#!jZxV(st~`KWIE&Mf#EIM}zevU%@|@ek8X+KQf549jC9m`;zgb@JLFMvu2*7 zBzfH>cdxtMr6gHbMM{!r6Zm52`?nHjxdeJyvCQpBt2Zq%!h)3vOO9Bssmk08S zDZ}xVY>uKhW}!Y(nv^Hqz{k!^Xz@@VysLo^+Yqv3_JV~OwM(b&y}HuNKX1&8w7T5O z)^*j|0+eX}#@v)4@|jx>&EV_h8Go#+^6{DVNA>5|&pfJ5sh^kVU7p)oI%#M~!8X`sdq0%odOx7C4Z9rhGKil5UF8(O_4hOjxPnb3 z<)J`V7;j-R3vLxMe4;1_NpI#;Fk~Wflj<^WI`Yy}uP?f;ZkQUX_}fY|?8R1p`My6( zw{Ru1tZ+#C`koap9O3uA{eq+Ow(ghJ_jB^fqk@B@N^>1s*FN<}fyd~+FXRKTGxB4( zz$4z@B4T^PFfNZGDM3M*lqsPSN-qBc$z>^={gbgzo+HW>Otx9aZ5a-$TTaWk%JG&& zKDwlM$=oriJl^Z+>nGow?soi*g1q_b7R;@-+uai~t1D-YdB7)SMh*WWfASc0lACYU z#FxVJ>Q>Z5`SHKp`eb=>Ve-zW0(W`Y@|!Q+wWRm+_6L^K*~2ZM9m~}}S`1>ks~95=!b4$gCgxd(s!_3!wRs*>Vsv83*n|0_MD zUZXbgZE~Ha(=Wp&>^0>l`4)T|1dn4LPe%p^`FU7m%pYu&aqtRRa! z@W&H{Izi_GZ61?AqI%L-r9-IDU>Z{5AnM5xQ;K~ZiC%GK3&!L(jglNmZlOtKv(>d8 zZ@8Bhn-)~VPaWLWd6W!4y`^aCqhWx^qEpT4| zNjZKX6dW-s&V49dmVW69TjXThtc;uU(k|_`rM9%B+*EwlLwhS8$_tB&9dVbGEG{Z) zTw1k4ZKc~wOBNLsP3x*!L4Dkf4V4%AFA#Ngr@BIy3m*HR!~lmepstpz;Apw~w(DQc z`Gu!#eR=DR`*Y5y|M;^M_55zQq3wPDh278heug@Yz<4@nnu77n3HL3 zbmt?aYy5iemYUUt{7(-*49(^3zwn3DGwR1GZAR(5$SnP2nyr8DrhT7BOeH?{=fR7l zYkDumC|@A8n(;mKS7EDVXt!TJhX5Bq6o^^rg<8lE_?`U)1sr-D@6b$^N#p6-&x;teAb z&HG{sqGOU9W)R{`6Y(6#OGixS%ZAOY@L@JRH!q^c`oISCwY7y@! zlBQ@wZ`rmXEb^5PRTPuCq>2biE zUo{gta_{vdVC-1YF8?xj;DiAu;{LG83Ic~D!H(P{0tkCmz);r3x*6hk^cGGeLSh0E z!AQV1mQ&GUkv9P!++c3eW)cDUo>srwut5p1mNr~H`Jo@w6FF&FRdIpx9rD{fDe~K| zm8O@?7+#qe>G*Y@>0V24R8e}$h}UQ=058)E=&wxd+uzf6>|VpXC0Vkf*JP-bodpV;5FGn@dC1yHk=A*c&Jb3jGGI6 zSeArud?a~16@V|e$??vJlVtU)llWgc!@cD9 z_m_@pZ7PU?zfHH{!>13rLGQoc6Hh-H8LoL_x(D+np5_b99*&K#pM}*baPlw4iE6sW zY!z#m*#E`_@;Ev_fKQR++tnG8*L@F5-fH7kwO-{v@ZmE5LG@MlsJ`4Tz8A7AeT@-o zU^LDjwBrGP-l{%k91J+6H|4+SCjwJ@)2VC>QN|XJ+#WRBxA-UK39%vmz5dHBo%;3i zzKY%!-y7U$xpl+X(f;8(w_Uv-q86;LqR-!#yv7Xrhb`PmVNC(Af+*%k{N7=+r88_D z>O4mNft6aGV|B{2Y_4=Y+az6wUmY7Ek7d*4H7tie%Ic)I*fRbUn;!DP^dO6u_p=tckVPmju`GEU3y`NWZ|M}udzv-k`;F2&tU-PeYbmw;-%(y8nZRTHC4RE~<<&^`!2I)h#&SGVA_%|$C{*`S&eb>nw*gf)k zwiR_*CO^k!D_(3QzY%*N8>^E$*pvAFTC~kVvoBkU-!%MMlw@{=Xm@J+vwo&2eLJWx zL_bhp=s(HPcU1I+qwiCs-%%=9n9&c^7XyCsa<&llX%>A!{h|M;FO)*I9DTV^v^%x^ zSwDE98!P$({Xl);`bnm~m*Bo&Ev|?0+b91rpdY9&2L6(mL*9yK)E5JP=nMH3j7?mr z-c(Zoc?+)1C}R%F#ayECeD+m5n+=@iqps*%YTvW3roXUe(`{^?g84^t;H+z%n3I?n z7rbJ=iaA5q_t7789f>iC@k0G}u~(YwV!qK_r#^PgdCWU8_Xl1lvLMS_m`AhOI`eKe z)$}uH3g!{!%_Zjl;MpwPV_px;WAvFeW_(;@27MlazBjx29(^+feN=(I@xt{Ny}i7R zb`$N?_o~rOT0J9N^)%W^Zx{6GCvqrzM>-9<^$X_oPFBT#>|4ce#@JB$PRUC#AKqbG z*&BUt;dh$y(KFD8aO6#6_xF8DbcFKrkiHwFw^&KcALf4 zEBWYa&{8RiT`EQOy(wMAyv(1oP{bx#ugqlbN9Q!V_|bPK;f0duH^w@(3CdgtS}kZl^*zBfIaw3YZBr@o+{9+VA<=sC z5u^|FoiP{S>cDR%YcVI`x&`!|=*NSY=iAvL=~|5AIVd0VQTdg5%2ljX{up$Eeonk| zuxMpDX#TgjCwlQFu0+Ez&!rxGx0FSg@H)2UtYkb&|1L11wNot{JXwSOvhN9sU7c5Afg2D5cr@h`F*6v zVU7DEu61btA6Pin18S)7u=Y@oeXb25H8sOR56XTJoWC!B4N!wu|T7O_wG z=h9BOL*6JKQ|!t#Wux+-vQIg#{9?*C%`iP`E-`nRk6Y$juCttS+u-)7+b`|`?j`P1 z+#mJ0*<-(Fgy#m&eV(V_?dCqOH@v>~4)8AbZt}j-`xze(pGu!?KA-zm`p)&e&-bA3 zX+OK)6u&F{p7A^C@8)m!ulMf=umTt z4%-rTB79u<;fRumIT1HU?2UAb%#D0B^5~EWLvF@@FAUutr9?GF-4}Iy*u%q)SocOx ziC!1&j6M`IBW6X+_L$FXqivtZve@$2C9&7V?v4FAEl!lZADeF>hu-|CkYJb$e$Nq->GyADjB{e8DKGm7JH}z=h7pXs| zxur#;NPGU}BPHoPtoa=J#%5moG%{iL$NzTa}HP<7z zFt;^#MefGj+jAezeIfUa+|TmH@{6c>yuXe#I`xT0W7 z!Gi_Q791-0u;4_&kA>#Ku)^5FjKcE5afO!^#S~>1jVx*?T2QpE=!T+gMLUc36&)@5 zr08UkTI^RGQ|u_NES^$4zj#gYb;WlTJBP;%&mKNx9VtB&&c|b&sCeN!>W_3i>oiKzN-3A zjkTtv=H8m^HK#^hG3wz_FN``h+CF;L=((diM&CU8(CDM1KOEyX=EgC%jrp)Pq_(W~ zy4oXStz(BwZC$xlt0GUcu*&MAAR)=Zr?^^2+BH6%6^Hf(9M zH{R0tdE?L1+@?iLn>OvnY5S*rKRtPR*Yq{h-<>gXM#GE+GuF+xVaB!@J7?^hacstk z8K-A@&5W9vF|&N;q?vPPu9~@N=GK{y&fGKe$jt9%dCZER)ii6A8e-g`Sqd!;II{3X71|>S+^OCH+ZHo3UuC!cEhp${SRY~i)L^Kpv8B zQCXfWL;gljd$9~9QcrvH8fA>0_F>tkKUQ=uS>4q>Z+^Emu_ejs$jHn{&CIgSS#6!t z*45G3VI9%hym;C8WhZVyI z%||80dr4t>`m&a;_9flR(v|^-&aQds<44va@J=UN!d9~`)((T-`Iv-O9A39T z%xq;2mVs%Mfv~BWEDQH@kk1Nb{Wj$8z;_+E!*+x=HM+ot;S!fnRd4dcUo#CQZaZNBXUg@e_ICOn)(~Kwxjk|U`6U*Bvl3Q{jvN8qoC@$2RY1BLXELMMXf_7uk7eUfkqOX{ zuSX+JLiCj>h%wRtU88BxtC@kF!YnqMHL+$cvA?h@5MBCtwuPNwSFsz|wOGynhP7B` zo3LhI&i)8%2NS!V-O4tym)UV{W_Pje>?igk`uxlyBI#>>9QJ&A$)>Y7x438#-<&I;IPq zLIi3BhRxTEqIs-lYY~BY9eak|1B-x5*#`Cpc9MO^p5+#3QMn_GpC|WXy-bCoh7WX$ zAV$Vkbui#hmtN7J?Bfo}k;@3i#`g(o?-^_31H}RYK zAECegC%y%d;%~z#-R=AizLmYpK4l-U57|fT6ZRhanBU3o;&=0H{2qQU{|mp5|CQg* zAK(x2zwzzt4*n2-m_NcF<&SYE-@$kC$N3ZdN&Xan8gY_#@n`vN{v3avzrbJQd-zLy zFMpZugU;oC{t7?9U*!k+Yy1#@ogaqJ&Nuj*{0M)GALVcJWBeWdE`N`|&p+TF@{jm& z{xScAf671O|Ky+ZfAKH)m;40(ihs?&;V1dG{5$?{{ymN}PVxWnANf!GXZ~OQ3;&g$ z=4W^h@8v4*!yzS(2XQc^;M~j%^B_0LUGk7TB`-Ju@sWHb=)*|?QlJzBH(4Q4s1yc& zgAr1sG(;LIMM=XXs}wE8NH!@}ij(4{1Syg2WRFWp>?!s%+sB?@PqM$W%di8!nmxq! zvlrNl>^Uh}N|EeRD!UF8<2H6X`!oBulrCkkzp|Sl0egULX1B0Ev0YN8| zmGUghJK8fcMr7#MO6^+i(63qgwZJlBadS&oXNRR(yP8ML>1tciW^NW2%ZSc-ogHlp zEzR21v!bQFt7ZA(xr^FXdA9VYJt|r|yPI3EJL>jmF_PxWmS%u9w`!M4l+)a8snQF? z=8+0ES7`;diHk>-@wG>rk+f9lXtZfpbCm|MO7_*Z?kW z){ym@H{iyzrvF>d`Tc37W=?aLG9Q1;qq^G{wYHht#lGLdM@ZsdyN@@g%|d^{rD}M*VWe6v8cJDwY|k$+uX9eyUn~vT)b)r=36x2 z#$2nl&LVM9YEgA%5&oFRY2SBf-;W#ciC4#f8}m5r`wp#jJDQhtF6-{kGR`X7A@g6^adB?owuH}mtf#dM*9C&B0*Kp|4aHti)EOnpW2} z;^HyQ7`Ps5jHH;nnHAakHAlbZ>Q`;@XIA9v_XYZOgnlj8uNB&LWTt-Ah(qQ`jW}eE z)ZvfR;DbFB`M{IvS1rFIL(A{T(DFMnT=_M892puujtmVSM}~%vBSXW-k)h$^$k6a{ zWN5_7kx`|WGg7-|>g8wZUXX@o=>g8wZUXXbfL955KXmJPVkA?uiA>X>BZ zxi`;kZ_mjqa1^+M4PDWOPv*Fb9-)-@Dl5a`F2>D(CmIG>8CuC%dd;)+nrG=X&eCg| zm7&!vORo_WmZS;o0(f>thCm@RBg2v9O66o4DTk5jf17PQ%P~^9MoOy^;N|2S&k9_r zT%)vHt#Pw6DvfupvNE#`xS0mDOaoe`0nK4Ra~K#qTu?F`2A&QBp2NV?VL)~mkkJX$ z9l$-yfShGO&N3ip8Euhel#ykWk!6&jcQ3&+%E&Ux$TrHzHp<90%E&g#$TrI8ZFv=(}$|x|(C@{(>Fv=*< z2uXI10WGf|nyW1IsyK7YR%V8)tjr8oS(zEG`ebIf>XWGx zuI!vv7qm>Hto}OmV^^RNyzCL$G|w*A2v~NxKF2Eb`zk$Ol^~3nRT+Y?;VK9lu7W(_ zD#%l2Ri+?}xC*$LRoMa#t^#gmRgNG(xQh15tjg8jYjYd-I=tL+^Hf3I%qz9aRBh>5 zDK73)Tie^Z+LpC1b6@F7nH#l?tHnjM0tl2w-azNGm8#`ko#JtBrbF-k+{~;ThkM(y zZfujf+ggddIUE{|##K~#WVyDs;3}$st7rmTMHAqf?K!s-Qn#+v?Jd}>(&jdML>2MR z9D0DhXS3Ik3Gbtyc@3gMG%4E{Q*S5zAoKNoCvm^C?_2HO$?Q&R)7(@iw_97S&OH;H zO8hjZQZ>CH+7=zTsln=;FrgvZS=Jb7b>>qlzp>Hk^sH)bb;7emG*VV)1|>2m$DRod z*16VAo0_do1WIVa6NEO5c6v}Mmr}V+kxg)t6X|3rjg2-Zo6ykK*qG{+>{h^0;+lbi zsbWHd(_|}mnr-Eg(b0`g1jTa7b{p`qw(c;^DYw#_ot|7ujz+S=y2-i;;C5t~;x^Sa zG);(Xu5WCxHR4^_#0I>GB<%H~Qk{z3X{kur386zpQ+cY>gj-v=&FW;f@@D6TIVjAj zB&Ryfb}L~dRkb*I)tshEfrLeS$Wm-O+?2Q`Yt<%OGc}s1Ba5VVa9Sf#nyWac9A|5; z)IN5z?=YFFoV>X*)#+{rJge2|UNM@Q00~=pqtk=#>T&0RyHux#-TI8e=Fp!O6y)@* zXtHi|^R0#!S>6Mn>a#pm^?W-vKM1$qhTa zyed$9xzi)1(a9>DQe62CclzUjKTaNkMv&tsH0*$_1KJ?2d=uIg#kwa)+whqy9jU#i zPoy~Uwh`5+2J+QSXutj@+X2%n8>(L6WF^o$-2HJNhbPYnQ(lyw=!%Wu@ z`wk0TL+v}<=o)6<;ZE0ZyVEV@BFm0I+2Qym5@pkM2+F4GP?SyAD3ndtVJMrfR+LTG zXp~LY7?e#{8_K3@tle5H#!s9bRrYSOR-i$fr~{gDb;c$~r#j>9&bSn397bLO23a-6 zhHL2An)7YeO_LkWeuy4UbtW3^$wQn8$xa@eA(}5~V08z-O14{b1U4yl=9IPZjalL< zkCH6p2|-ROOKkZ&l6f$&vZD^bz?G{B1E@J4C&u=)(Bf2Q+Iilh=Ub2?9gW9A;;d=b zYMNuH^r%gns%_PnISq4A2Pel|PUAc{2&H7$Q8vaN{uf!C=BkvoO=&i(wRjU?W%j?e zrfD#o3K5E`6sxm|=22N)!{d@wwnjcK#mf1Syexwa>Mgn_W1T28iK%oQ>1l*uaQk*9A zsfoVDcg@HWC!pgmh+m{Fy0IT3de1@iv7!u9yj~w0thSt4;<3{WGsJ2gX+yiEU=XA_ zvqklRnWVQ4o79kIEe4q;y!3|vHlX?9a5oCCFwm-6Y+8$J6wRi$DsW15=IA9>xSF+z z)&$hT)$+M^n>CH9KN9q*xG`-6xf{^DXuqzfEL=F znJJsl<%9gj7RxJqD5%DxEj!jv0%ecO~c65a4g1b1T`}TmaB@tKXR)7 zx4}ZKLvyv*mLC~CpyQ$&bxej+m0e9&LbZ&h_9aAgY>kSQqGG|?jM)iWQ^fyCbJ{UM z$}aGH1n2+{3UsC-Pr2Qhj!Ol#O%+PR5Fn7>NX@M74b< z7f))C5Kl%?p5b^kn(|O$4CSFjE#;xaSjtm?#5l@BiSd+&5)&v7CF&?o5fb&3hY}Mh z4<#m19!gB6JS9j>p*)nBN_i;JKzS(9NO=m8m_~UhF`e>IVg}`*#7w)>VKnnBx^d>> z@obUGL#j!P8a&R&O|#vZW#pbiHzIe7NKx)qk)o_^c4xMcbuQhAtn);Qvd$MN%Gz#s z<``KQ(2dBtP^2j9B9Wr3i|r{+w>GC7J7E=(?^ICUG0(6A^;n4c4UN0tzlOC~K_x4l zvTcbovxMEXg~}ymCh@ o-&oh+EZf+y!z@=~Na7A#3%bQ70{@=jeOEe_>vx!N7{b{90dgBLp#T5? literal 0 HcmV?d00001 diff --git a/Src/gui/action.cpp b/Src/gui/action.cpp new file mode 100644 index 0000000..63f0ec5 --- /dev/null +++ b/Src/gui/action.cpp @@ -0,0 +1,30 @@ +#include + +#include +#include + +#include "../firmware.h" +#include "app_context.h" +#include "keypad.h" + +namespace eez { +namespace gui { + +void action_show_toast_message1() { + g_deviceAppContext.infoMessage("This is info message\nWith line 2!"); +} + +void action_show_toast_message2() { + g_deviceAppContext.errorMessage("This is error message\nWith line 2 ...\nand line 3!", true); +} + +void doAction() { + g_deviceAppContext.infoMessage("It should be fixed now!"); +} + +void action_show_toast_message3() { + g_deviceAppContext.errorMessageWithAction("Some error occured!\nYou should fix it.", doAction, "Fix"); +} + +} // namespace gui +} // namespace eez diff --git a/Src/gui/app_context.cpp b/Src/gui/app_context.cpp new file mode 100644 index 0000000..083ad28 --- /dev/null +++ b/Src/gui/app_context.cpp @@ -0,0 +1,56 @@ +#include + +#include +#include + +#include "app_context.h" +#include "document.h" +#include "keypad.h" + +namespace eez { +namespace gui { + +DeviceAppContext g_deviceAppContext; + +void DeviceAppContext::stateManagment() { + AppContext::stateManagment(); + + // if none page is active then show touch screen calibration page or banner + if (getActivePageId() == PAGE_ID_NONE) { + if (!isTouchCalibrated()) { + enterTouchCalibration(&g_deviceAppContext); + } else { + showPage(getMainPageId()); + } + } + + // play power up tune when banner page shows up + static bool g_powerUpPlayed; + if (!g_powerUpPlayed && getActivePageId() == PAGE_ID_MAIN) { + sound::playPowerUp(sound::PLAY_POWER_UP_CONDITION_NONE); + g_powerUpPlayed = true; + } +} + +int DeviceAppContext::getMainPageId() { + return PAGE_ID_MAIN; +} + +void DeviceAppContext::pageRenderCustom(int i, WidgetCursor &widgetCursor) { + if (getActivePageId() == PAGE_ID_TOUCH_CALIBRATION_YES_NO) { + auto touchEvent = touch::getLastEvent(); + if (touchEvent.type == EVENT_TYPE_TOUCH_DOWN || touchEvent.type == EVENT_TYPE_TOUCH_MOVE) { + int x = MIN(MAX(touchEvent.x, 1), display::getDisplayWidth() - 2); + int y = MIN(MAX(touchEvent.y, 1), display::getDisplayHeight() - 2); + display::setColor(255, 255, 255); + display::fillRect(x - 1, y - 1, x + 1, y + 1); + } + } +} + +bool DeviceAppContext::isAutoRepeatAction(int action) { + return action == ACTION_ID_KEYPAD_BACK; +} + +} // namespace gui +} // namespace eez diff --git a/Src/gui/app_context.h b/Src/gui/app_context.h new file mode 100644 index 0000000..7e9c7ac --- /dev/null +++ b/Src/gui/app_context.h @@ -0,0 +1,23 @@ +#pragma once + +#include + +using namespace eez::gui; + +namespace eez { +namespace gui { + +class DeviceAppContext : public AppContext { +public: + void stateManagment() override; + void pageRenderCustom(int i, WidgetCursor &widgetCursor) override; + bool isAutoRepeatAction(int action) override; + +protected: + int getMainPageId() override; +}; + +extern DeviceAppContext g_deviceAppContext; + +} // namespace gui +} // namespace eez \ No newline at end of file diff --git a/Src/gui/data.cpp b/Src/gui/data.cpp new file mode 100644 index 0000000..eb80895 --- /dev/null +++ b/Src/gui/data.cpp @@ -0,0 +1,45 @@ +#include +#include +#include + +#include +#include + +#include "../date_time.h" +#include "../firmware.h" + +namespace eez { +namespace gui { + +const EnumItem *g_enumDefinitions[] = { nullptr }; + +void data_date_year(DataOperationEnum operation, const WidgetCursor &widgetCursor, Value &value) { + value = date_time::g_dateTime.year + 2000; +} + +void data_date_month(DataOperationEnum operation, const WidgetCursor &widgetCursor, Value &value) { + value = date_time::g_dateTime.month; +} + +void data_date_day(DataOperationEnum operation, const WidgetCursor &widgetCursor, Value &value) { + value = date_time::g_dateTime.day; +} + +void data_time_hour(DataOperationEnum operation, const WidgetCursor &widgetCursor, Value &value) { + value = date_time::g_dateTime.hour; +} + +void data_time_minute(DataOperationEnum operation, const WidgetCursor &widgetCursor, Value &value) { + value = date_time::g_dateTime.minute; +} + +void data_time_second(DataOperationEnum operation, const WidgetCursor &widgetCursor, Value &value) { + value = date_time::g_dateTime.second; +} + +void data_time_sub_second(DataOperationEnum operation, const WidgetCursor &widgetCursor, Value &value) { + value = date_time::g_dateTime.subSecond; +} + +} // namespace gui +} // namespace eez diff --git a/Src/gui/document.cpp b/Src/gui/document.cpp index 4d7d273..b5bb2ac 100644 --- a/Src/gui/document.cpp +++ b/Src/gui/document.cpp @@ -3,6 +3,8 @@ namespace eez { namespace gui { +#if defined(EEZ_PLATFORM_STM32) + DataOperationsFunction g_dataOperationsFunctions[] = { data_none, data_alert_message, @@ -44,251 +46,5791 @@ ActionExecFunc g_actionExecFunctions[] = { }; // ASSETS DEFINITION -const uint8_t assets[9804] = { - 0x7E, 0x65, 0x65, 0x7A, 0x03, 0x00, 0x01, 0x00, 0x10, 0x4B, 0x00, 0x00, 0xF6, 0x0B, 0x44, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x58, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xA4, 0x00, 0x01, 0x00, 0x2E, 0xB0, 0x00, 0x01, 0x00, 0x17, - 0xC0, 0x0C, 0x00, 0x50, 0x20, 0x03, 0xE0, 0x01, 0xD8, 0x48, 0x00, 0xF2, 0x62, 0x01, 0x00, 0x00, - 0x30, 0x01, 0x00, 0x00, 0x5C, 0x01, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0xAC, 0x01, 0x00, 0x00, - 0xD0, 0x01, 0x00, 0x00, 0xF4, 0x01, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x3C, 0x02, 0x00, 0x00, - 0x60, 0x02, 0x00, 0x00, 0x84, 0x02, 0x00, 0x00, 0xA8, 0x02, 0x00, 0x00, 0xCC, 0x02, 0x00, 0x00, - 0xF0, 0x02, 0x00, 0x00, 0x14, 0x03, 0x00, 0x00, 0x38, 0x03, 0x00, 0x00, 0x5C, 0x03, 0x00, 0x00, - 0x80, 0x03, 0x00, 0x00, 0xA4, 0x03, 0x00, 0x00, 0xC8, 0x03, 0x00, 0x00, 0xEC, 0x03, 0x00, 0x00, - 0x10, 0x04, 0x00, 0x00, 0x34, 0x04, 0x00, 0x00, 0x50, 0x04, 0x00, 0x00, 0x6C, 0x04, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x88, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x8C, 0x04, 0xBC, 0x00, - 0x50, 0x98, 0x04, 0x00, 0x00, 0x09, 0x10, 0x00, 0x16, 0x49, 0x94, 0x00, 0x1B, 0x01, 0xA0, 0x00, - 0x2A, 0x0F, 0x00, 0x1C, 0x00, 0x5F, 0xA8, 0x04, 0x00, 0x00, 0x08, 0x2C, 0x00, 0x00, 0x3D, 0xE0, - 0x01, 0x10, 0x2C, 0x00, 0x1F, 0xAC, 0x2C, 0x00, 0x14, 0x00, 0x38, 0x01, 0x1F, 0xB0, 0x2C, 0x00, - 0x04, 0x00, 0x84, 0x00, 0x1F, 0x01, 0x48, 0x01, 0x00, 0x04, 0x2C, 0x00, 0x70, 0x12, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x02, 0x2A, 0x00, 0x21, 0x00, 0x20, 0x12, 0x00, 0x15, 0x05, 0x24, 0x00, 0x2F, - 0x02, 0xFF, 0x24, 0x00, 0x11, 0x40, 0x14, 0x14, 0x14, 0x14, 0x24, 0x00, 0x7F, 0x0E, 0x00, 0x04, - 0x00, 0x04, 0x00, 0x0E, 0x24, 0x00, 0x0A, 0x71, 0x08, 0x00, 0x07, 0x00, 0x09, 0x00, 0x07, 0x24, - 0x00, 0x73, 0x02, 0x02, 0x02, 0x02, 0x0A, 0x00, 0x08, 0x01, 0x00, 0x60, 0x02, 0xFF, 0x08, 0x10, - 0x08, 0x10, 0x24, 0x00, 0x7F, 0x18, 0x00, 0x16, 0x00, 0x16, 0x00, 0x18, 0x48, 0x00, 0x02, 0x4F, - 0x0C, 0x0C, 0x0C, 0x0C, 0x24, 0x00, 0x31, 0x7F, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x10, 0x24, - 0x00, 0x10, 0x00, 0x48, 0x00, 0x1F, 0x17, 0x48, 0x00, 0x10, 0x0F, 0x24, 0x00, 0x0D, 0x1F, 0x02, - 0x68, 0x01, 0x0C, 0x1E, 0x0A, 0x68, 0x01, 0x0F, 0x44, 0x01, 0x20, 0x01, 0x83, 0x01, 0x65, 0x00, - 0x12, 0x00, 0x21, 0x00, 0x22, 0x48, 0x00, 0x10, 0x01, 0x01, 0x00, 0x0F, 0xD4, 0x01, 0x1C, 0x04, - 0x24, 0x00, 0x7F, 0x21, 0x00, 0x23, 0x00, 0x23, 0x00, 0x21, 0x24, 0x00, 0x00, 0x15, 0x03, 0x24, - 0x00, 0x3F, 0x0F, 0x00, 0x04, 0x48, 0x00, 0x12, 0x3F, 0x21, 0x00, 0x24, 0x48, 0x00, 0x06, 0x0F, - 0xD8, 0x00, 0x0E, 0x01, 0x01, 0x00, 0x11, 0x14, 0x66, 0x00, 0x33, 0x00, 0x00, 0x27, 0xE4, 0x02, - 0x13, 0xBC, 0xF4, 0x02, 0x10, 0xC0, 0xF4, 0x00, 0x12, 0x04, 0x1C, 0x00, 0x13, 0x7F, 0x1C, 0x00, - 0xEA, 0xE0, 0x04, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xE4, 0x04, 0x00, 0x00, 0x23, 0x00, 0x1C, - 0x00, 0x22, 0x64, 0x06, 0x1C, 0x00, 0x62, 0x68, 0x06, 0x00, 0x00, 0xE8, 0x07, 0x5C, 0x00, 0xF2, - 0xFF, 0xFF, 0xFF, 0x4E, 0xE3, 0x07, 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0xF4, 0x07, 0x00, 0x00, - 0x1C, 0x08, 0x00, 0x00, 0x44, 0x08, 0x00, 0x00, 0x6C, 0x08, 0x00, 0x00, 0x94, 0x08, 0x00, 0x00, - 0xB8, 0x08, 0x00, 0x00, 0xDC, 0x08, 0x00, 0x00, 0xFC, 0x08, 0x00, 0x00, 0x20, 0x09, 0x00, 0x00, - 0x44, 0x09, 0x00, 0x00, 0x50, 0x09, 0x00, 0x00, 0xE8, 0x0A, 0x00, 0x00, 0x80, 0x0C, 0x00, 0x00, - 0x18, 0x0E, 0x00, 0x00, 0xB0, 0x0F, 0x00, 0x00, 0x48, 0x11, 0x00, 0x00, 0xE0, 0x12, 0x00, 0x00, - 0x78, 0x14, 0x00, 0x00, 0x10, 0x16, 0x00, 0x00, 0x1C, 0x16, 0x00, 0x00, 0x24, 0x16, 0x00, 0x00, - 0x64, 0x16, 0x00, 0x00, 0x8C, 0x16, 0x00, 0x00, 0x14, 0x17, 0x00, 0x00, 0xAC, 0x17, 0x00, 0x00, - 0x94, 0x18, 0x00, 0x00, 0x28, 0x19, 0x00, 0x00, 0x44, 0x19, 0x00, 0x00, 0x90, 0x19, 0x00, 0x00, - 0xF0, 0x19, 0x00, 0x00, 0x24, 0x1A, 0x00, 0x00, 0x64, 0x1A, 0x00, 0x00, 0x80, 0x1A, 0x00, 0x00, - 0x9C, 0x1A, 0x00, 0x00, 0xB0, 0x1A, 0x00, 0x00, 0x1C, 0x1B, 0x00, 0x00, 0x94, 0x1B, 0x00, 0x00, - 0xF0, 0x1B, 0x00, 0x00, 0x68, 0x1C, 0x00, 0x00, 0xE0, 0x1C, 0x00, 0x00, 0x68, 0x1D, 0x00, 0x00, - 0xE0, 0x1D, 0x00, 0x00, 0x68, 0x1E, 0x00, 0x00, 0xD4, 0x1E, 0x00, 0x00, 0x4C, 0x1F, 0x00, 0x00, - 0xC4, 0x1F, 0x00, 0x00, 0xE8, 0x1F, 0x00, 0x00, 0x14, 0x20, 0x00, 0x00, 0x60, 0x20, 0x00, 0x00, - 0x94, 0x20, 0x00, 0x00, 0xEC, 0x20, 0x00, 0x00, 0x64, 0x21, 0x00, 0x00, 0x7C, 0x22, 0x00, 0x00, - 0x04, 0x23, 0x00, 0x00, 0x7C, 0x23, 0x00, 0x00, 0x04, 0x24, 0x00, 0x00, 0x7C, 0x24, 0x00, 0x00, - 0xD8, 0x24, 0x00, 0x00, 0x34, 0x25, 0x00, 0x00, 0xBC, 0x25, 0x00, 0x00, 0x34, 0x26, 0x00, 0x00, - 0x68, 0x26, 0x00, 0x00, 0xB8, 0x26, 0x00, 0x00, 0x30, 0x27, 0x00, 0x00, 0x8C, 0x27, 0x00, 0x00, - 0x20, 0x28, 0x00, 0x00, 0x98, 0x28, 0x00, 0x00, 0x20, 0x29, 0x00, 0x00, 0x98, 0x29, 0x00, 0x00, - 0x3C, 0x2A, 0x00, 0x00, 0xB4, 0x2A, 0x00, 0x00, 0x2C, 0x2B, 0x00, 0x00, 0xA4, 0x2B, 0x00, 0x00, - 0x2C, 0x2C, 0x00, 0x00, 0xB4, 0x2C, 0x00, 0x00, 0x64, 0x2D, 0x00, 0x00, 0xEC, 0x2D, 0x00, 0x00, - 0x74, 0x2E, 0x00, 0x00, 0xE0, 0x2E, 0x00, 0x00, 0x50, 0x2F, 0x00, 0x00, 0xBC, 0x2F, 0x00, 0x00, - 0x1C, 0x30, 0x00, 0x00, 0x54, 0x30, 0x00, 0x00, 0x6C, 0x30, 0x00, 0x00, 0x88, 0x30, 0x00, 0x00, - 0xE0, 0x30, 0x00, 0x00, 0x58, 0x31, 0x00, 0x00, 0xA8, 0x31, 0x00, 0x00, 0x20, 0x32, 0x00, 0x00, - 0x70, 0x32, 0x00, 0x00, 0xCC, 0x32, 0x00, 0x00, 0x54, 0x33, 0x00, 0x00, 0xCC, 0x33, 0x00, 0x00, - 0x0C, 0x34, 0x00, 0x00, 0x6C, 0x34, 0x00, 0x00, 0xF4, 0x34, 0x00, 0x00, 0x28, 0x35, 0x00, 0x00, - 0xA8, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x50, 0x36, 0x00, 0x00, 0xC0, 0x36, 0x00, 0x00, - 0x30, 0x37, 0x00, 0x00, 0x7C, 0x37, 0x00, 0x00, 0xCC, 0x37, 0x00, 0x00, 0x24, 0x38, 0x00, 0x00, - 0x7C, 0x38, 0x00, 0x00, 0xCC, 0x38, 0x00, 0x00, 0x38, 0x39, 0x00, 0x00, 0x88, 0x39, 0x00, 0x00, - 0xEC, 0x39, 0x00, 0x00, 0x30, 0x3A, 0x00, 0x00, 0xA0, 0x3A, 0x00, 0x00, 0xDC, 0x3A, 0x00, 0x00, - 0x4C, 0x3B, 0x00, 0x00, 0x74, 0x3B, 0x00, 0x00, 0xC4, 0x3B, 0x00, 0x00, 0xD0, 0x3B, 0x00, 0x00, - 0xD8, 0x3B, 0x00, 0x00, 0xE0, 0x3B, 0x00, 0x00, 0xE8, 0x3B, 0x00, 0x00, 0xF0, 0x3B, 0x00, 0x00, - 0xF8, 0x3B, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x00, 0x10, 0x3C, 0x00, 0x00, - 0x18, 0x3C, 0x00, 0x00, 0x20, 0x3C, 0x00, 0x00, 0x28, 0x3C, 0x00, 0x00, 0xFC, 0x40, 0x00, 0x00, - 0x04, 0x41, 0x00, 0x00, 0x0C, 0x41, 0x00, 0x00, 0x14, 0x41, 0x00, 0x00, 0x1C, 0x41, 0x00, 0x00, - 0x24, 0x41, 0x00, 0x00, 0x2C, 0x41, 0x00, 0x00, 0x34, 0x41, 0x00, 0x00, 0x3C, 0x41, 0x00, 0x00, - 0x44, 0x41, 0x00, 0x00, 0x4C, 0x41, 0x00, 0x00, 0x54, 0x41, 0x00, 0x00, 0x5C, 0x41, 0x00, 0x00, - 0x64, 0x41, 0x00, 0x00, 0x6C, 0x41, 0x00, 0x00, 0x74, 0x41, 0x00, 0x00, 0x7C, 0x41, 0x00, 0x00, - 0x84, 0x41, 0x00, 0x00, 0x8C, 0x41, 0x00, 0x00, 0x94, 0x41, 0x00, 0x00, 0x9C, 0x41, 0x00, 0x00, - 0xA4, 0x41, 0x00, 0x00, 0xAC, 0x41, 0x00, 0x00, 0xB4, 0x41, 0x00, 0x00, 0xBC, 0x41, 0x00, 0x00, - 0xC4, 0x41, 0x00, 0x00, 0xCC, 0x41, 0x00, 0x00, 0xD4, 0x41, 0x00, 0x00, 0xDC, 0x41, 0x00, 0x00, - 0xE4, 0x41, 0x00, 0x00, 0xEC, 0x41, 0x00, 0x00, 0xF4, 0x41, 0x00, 0x00, 0xFC, 0x41, 0x00, 0x00, - 0x04, 0x42, 0x00, 0x00, 0x0C, 0x42, 0x00, 0x00, 0x14, 0x42, 0x00, 0x00, 0x1C, 0x42, 0x00, 0x00, - 0x24, 0x42, 0x00, 0x00, 0x2C, 0x42, 0x00, 0x00, 0x34, 0x42, 0x00, 0x00, 0x3C, 0x42, 0x00, 0x00, - 0x44, 0x42, 0x00, 0x00, 0x4C, 0x42, 0x00, 0x00, 0x54, 0x42, 0x00, 0x00, 0x5C, 0x42, 0x00, 0x00, - 0x64, 0x42, 0x00, 0x00, 0x6C, 0x42, 0x00, 0x00, 0x74, 0x42, 0x00, 0x00, 0x7C, 0x42, 0x00, 0x00, - 0x84, 0x42, 0x00, 0x00, 0x8C, 0x42, 0x00, 0x00, 0x94, 0x42, 0x00, 0x00, 0x9C, 0x42, 0x00, 0x00, - 0xA4, 0x42, 0x00, 0x00, 0xAC, 0x42, 0x00, 0x00, 0xB4, 0x42, 0x00, 0x00, 0xBC, 0x42, 0x00, 0x00, - 0xC4, 0x42, 0x00, 0x00, 0xCC, 0x42, 0x00, 0x00, 0xD4, 0x42, 0x00, 0x00, 0xDC, 0x42, 0x00, 0x00, - 0xE4, 0x42, 0x00, 0x00, 0xEC, 0x42, 0x00, 0x00, 0xF4, 0x42, 0x00, 0x00, 0xFC, 0x42, 0x00, 0x00, - 0x04, 0x43, 0x00, 0x00, 0x0C, 0x43, 0x00, 0x00, 0x14, 0x43, 0x00, 0x00, 0x1C, 0x43, 0x00, 0x00, - 0x24, 0x43, 0x00, 0x00, 0x2C, 0x43, 0x00, 0x00, 0x34, 0x43, 0x00, 0x00, 0x3C, 0x43, 0x00, 0x00, - 0x44, 0x43, 0x00, 0x00, 0x4C, 0x43, 0x00, 0x00, 0x54, 0x43, 0x00, 0x00, 0x5C, 0x43, 0x00, 0x00, - 0x64, 0x43, 0x00, 0x00, 0x6C, 0x43, 0x00, 0x00, 0x74, 0x43, 0x00, 0x00, 0x7C, 0x43, 0x00, 0x00, - 0x84, 0x43, 0x00, 0x00, 0x8C, 0x43, 0x00, 0x00, 0x94, 0x43, 0x00, 0x00, 0x9C, 0x43, 0x7C, 0x03, - 0x22, 0xA4, 0x43, 0x7C, 0x03, 0x2E, 0xE4, 0x43, 0x8C, 0x06, 0x00, 0x18, 0x00, 0x17, 0xE8, 0x18, - 0x00, 0x00, 0x0C, 0x05, 0x1F, 0xEC, 0x28, 0x00, 0x00, 0x00, 0xAB, 0x03, 0x2A, 0x14, 0x44, 0xF8, - 0x06, 0x2E, 0x30, 0x44, 0x28, 0x00, 0x00, 0x18, 0x00, 0x3F, 0x3C, 0x44, 0x00, 0x01, 0x00, 0x1E, - 0x33, 0x06, 0x00, 0xFF, 0x6A, 0x04, 0x6F, 0xDA, 0x00, 0x20, 0x03, 0x2C, 0x00, 0x38, 0x07, 0x01, - 0x15, 0x04, 0x24, 0x00, 0x02, 0x88, 0x07, 0x1B, 0x10, 0x78, 0x00, 0x20, 0x48, 0x44, 0xDE, 0x04, - 0x04, 0x24, 0x00, 0x5D, 0x52, 0x00, 0xE0, 0x01, 0x28, 0x48, 0x00, 0x40, 0x06, 0x00, 0xFE, 0xFF, - 0xF6, 0x00, 0x9F, 0x5A, 0x00, 0xB0, 0x00, 0x8C, 0x00, 0x28, 0x00, 0x13, 0x8C, 0x00, 0x02, 0x20, - 0xFD, 0xFF, 0xA2, 0x05, 0x1F, 0xFA, 0x24, 0x00, 0x08, 0x17, 0x20, 0xCC, 0x07, 0x01, 0x1D, 0x06, - 0x09, 0x05, 0x01, 0x00, 0x01, 0x00, 0x22, 0x06, 0x06, 0x7E, 0x06, 0x01, 0x11, 0x00, 0x45, 0x06, - 0x06, 0x06, 0x0A, 0x01, 0x00, 0x03, 0x12, 0x00, 0x63, 0x0A, 0x10, 0x10, 0x10, 0x10, 0x17, 0x01, - 0x00, 0x01, 0x13, 0x00, 0x83, 0x0A, 0x10, 0x17, 0x1B, 0x1E, 0x21, 0x21, 0x28, 0x01, 0x00, 0x02, - 0x13, 0x00, 0x1C, 0x1B, 0x9E, 0x00, 0x4B, 0x0A, 0x10, 0x1B, 0x28, 0x70, 0x00, 0x00, 0x13, 0x00, - 0x1C, 0x39, 0x27, 0x00, 0x4B, 0x17, 0x21, 0x36, 0x4E, 0x14, 0x00, 0x5A, 0x10, 0x1B, 0x2C, 0x44, - 0x5F, 0x3B, 0x00, 0x6C, 0x06, 0x10, 0x1E, 0x32, 0x4E, 0x70, 0x4F, 0x00, 0x4C, 0x21, 0x39, 0x58, - 0x7A, 0x76, 0x00, 0x4C, 0x21, 0x3D, 0x5F, 0x84, 0x63, 0x00, 0x4D, 0x28, 0x40, 0x5F, 0x8B, 0x14, - 0x00, 0x2F, 0x44, 0x66, 0x14, 0x00, 0x15, 0x1F, 0x8E, 0x14, 0x00, 0x4A, 0x04, 0x98, 0x01, 0x1F, - 0x06, 0x01, 0x00, 0x00, 0x1F, 0x0A, 0x01, 0x00, 0x00, 0x1F, 0x17, 0x01, 0x00, 0x00, 0x1F, 0x28, - 0x01, 0x00, 0x00, 0x1F, 0x00, 0x01, 0x00, 0xFF, 0x2D, 0x0A, 0x98, 0x01, 0x01, 0x2D, 0x03, 0x06, - 0x80, 0x04, 0x05, 0x01, 0x00, 0x00, 0x1B, 0x00, 0x02, 0x14, 0x00, 0x04, 0x8C, 0x01, 0x00, 0x30, - 0x03, 0x13, 0x0A, 0x16, 0x00, 0x04, 0x8C, 0x01, 0x9C, 0x21, 0x21, 0x1E, 0x1B, 0x17, 0x10, 0x0A, - 0x06, 0x03, 0x65, 0x00, 0x1F, 0x1B, 0x15, 0x00, 0x00, 0x10, 0x28, 0x15, 0x00, 0x0B, 0x14, 0x00, - 0x10, 0x39, 0x15, 0x00, 0x0B, 0x29, 0x00, 0x4C, 0x4E, 0x36, 0x21, 0x17, 0x29, 0x00, 0x5B, 0x5F, - 0x44, 0x2C, 0x1B, 0x10, 0x14, 0x00, 0x5B, 0x70, 0x4E, 0x32, 0x1E, 0x10, 0x66, 0x00, 0x4C, 0x7A, - 0x58, 0x39, 0x21, 0x51, 0x00, 0x4C, 0x84, 0x5F, 0x3D, 0x21, 0x7A, 0x00, 0x4C, 0x8B, 0x5F, 0x40, - 0x28, 0x65, 0x00, 0x3F, 0x8B, 0x66, 0x44, 0x14, 0x00, 0x12, 0x1F, 0x8E, 0x14, 0x00, 0x43, 0x05, - 0x98, 0x01, 0x0E, 0x9C, 0x03, 0x0F, 0x14, 0x00, 0xFF, 0x6B, 0x0D, 0x60, 0x06, 0x0E, 0x04, 0x02, - 0x0F, 0x14, 0x00, 0xFF, 0x63, 0x0F, 0x30, 0x03, 0x5F, 0x0F, 0x58, 0x07, 0x13, 0x0E, 0x94, 0x07, - 0x01, 0xBC, 0x07, 0x1F, 0xF8, 0xE4, 0x07, 0x00, 0x2E, 0xC5, 0xFB, 0x0C, 0x08, 0x81, 0x8E, 0xB0, - 0xC8, 0xDD, 0xEA, 0xF4, 0xF4, 0xFB, 0x01, 0x00, 0x03, 0x34, 0x08, 0x81, 0x7A, 0x99, 0xAD, 0xBE, - 0xCC, 0xD2, 0xD6, 0xDD, 0x01, 0x00, 0x03, 0x5C, 0x08, 0x72, 0x66, 0x7A, 0x8E, 0x9F, 0xAA, 0xB0, - 0xB4, 0x01, 0x00, 0x03, 0x84, 0x08, 0xD3, 0x4E, 0x5F, 0x70, 0x7A, 0x84, 0x88, 0x8B, 0x8B, 0x8B, - 0x8E, 0x8E, 0x8E, 0x8E, 0xAC, 0x08, 0x72, 0x36, 0x44, 0x4E, 0x58, 0x5F, 0x5F, 0x66, 0x01, 0x00, - 0x03, 0xD4, 0x08, 0x72, 0x21, 0x2C, 0x32, 0x39, 0x3D, 0x40, 0x44, 0x01, 0x00, 0x0F, 0xFC, 0x08, - 0x03, 0x0C, 0x24, 0x09, 0x2D, 0x1B, 0x1B, 0x4C, 0x09, 0x3C, 0x0D, 0x0D, 0x0D, 0x74, 0x09, 0x00, - 0x17, 0x00, 0x0E, 0x30, 0x03, 0x0F, 0x30, 0x07, 0xAB, 0x1F, 0xFB, 0x01, 0x00, 0x00, 0x1F, 0xDD, - 0x01, 0x00, 0x00, 0x1F, 0xB4, 0x01, 0x00, 0x00, 0x1F, 0x8E, 0x01, 0x00, 0x00, 0x1F, 0x66, 0x01, - 0x00, 0x00, 0x1F, 0x44, 0x01, 0x00, 0x00, 0x0F, 0xFC, 0x08, 0x01, 0x1F, 0x1B, 0x01, 0x00, 0x00, - 0x1F, 0x0D, 0x01, 0x00, 0x00, 0x0F, 0x60, 0x09, 0x01, 0x0F, 0xC8, 0x04, 0x66, 0x0F, 0x58, 0x07, - 0x15, 0x0F, 0x94, 0x07, 0x00, 0x1E, 0xF8, 0xBC, 0x07, 0x23, 0xFB, 0xC5, 0xE4, 0x07, 0x02, 0x8A, - 0x01, 0x73, 0xF4, 0xF4, 0xEA, 0xDD, 0xC8, 0xB0, 0x8E, 0x0C, 0x08, 0x02, 0x8A, 0x01, 0x73, 0xD6, - 0xD2, 0xCC, 0xBE, 0xAD, 0x99, 0x7A, 0x34, 0x08, 0x03, 0x8B, 0x01, 0x63, 0xB0, 0xAA, 0x9F, 0x8E, - 0x7A, 0x66, 0x5C, 0x08, 0x00, 0x88, 0x01, 0x93, 0x8B, 0x8B, 0x8B, 0x88, 0x84, 0x7A, 0x70, 0x5F, - 0x4E, 0x84, 0x08, 0x03, 0x8B, 0x01, 0x63, 0x5F, 0x5F, 0x58, 0x4E, 0x44, 0x36, 0xAC, 0x08, 0x03, - 0x8B, 0x01, 0x63, 0x40, 0x3D, 0x39, 0x32, 0x2C, 0x21, 0xD4, 0x08, 0x0F, 0xFC, 0x08, 0x01, 0x1F, - 0x1B, 0x24, 0x09, 0x00, 0x2E, 0x0D, 0x0D, 0x4C, 0x09, 0x03, 0x0D, 0x00, 0x09, 0x74, 0x09, 0x04, - 0xCC, 0x0C, 0x13, 0x60, 0x18, 0x16, 0x01, 0x6C, 0x0D, 0x22, 0x04, 0x0E, 0x33, 0x09, 0xF0, 0x2C, +const uint8_t assets[68251] = { + 0x7E, 0x65, 0x65, 0x7A, 0x03, 0x00, 0x01, 0x00, 0x28, 0xB2, 0x02, 0x00, 0xF5, 0x0C, 0x44, 0x00, + 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x6C, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x01, 0x00, 0x01, 0x00, 0x3D, 0x28, 0x01, 0x00, 0x01, + 0x00, 0x17, 0x38, 0x14, 0x00, 0xF0, 0x02, 0x20, 0x03, 0xE0, 0x01, 0x50, 0x01, 0x00, 0x00, 0x7C, + 0x01, 0x00, 0x00, 0xA8, 0x01, 0x00, 0x00, 0xD4, 0x1C, 0x00, 0xF0, 0xC0, 0x02, 0x00, 0x00, 0x2C, + 0x02, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0x84, 0x02, 0x00, 0x00, 0xB0, 0x02, 0x00, 0x00, 0xDC, + 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x24, 0x03, 0x00, 0x00, 0x48, 0x03, 0x00, 0x00, 0x6C, + 0x03, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0xB4, 0x03, 0x00, 0x00, 0xD8, 0x03, 0x00, 0x00, 0xFC, + 0x03, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x44, 0x04, 0x00, 0x00, 0x68, 0x04, 0x00, 0x00, 0x8C, + 0x04, 0x00, 0x00, 0xB0, 0x04, 0x00, 0x00, 0xD4, 0x04, 0x00, 0x00, 0xF8, 0x04, 0x00, 0x00, 0x1C, + 0x05, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x64, 0x05, 0x00, 0x00, 0x88, 0x05, 0x00, 0x00, 0xAC, + 0x05, 0x00, 0x00, 0xD0, 0x05, 0x00, 0x00, 0xF4, 0x05, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x3C, + 0x06, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x84, 0x06, 0x00, 0x00, 0xA8, 0x06, 0x00, 0x00, 0xCC, + 0x06, 0x00, 0x00, 0xF0, 0x06, 0x00, 0x00, 0x14, 0x07, 0x00, 0x00, 0x38, 0x07, 0x00, 0x00, 0x5C, + 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0xA4, 0x07, 0x00, 0x00, 0xC8, 0x07, 0x00, 0x00, 0xEC, + 0x07, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x34, 0x08, 0x00, 0x00, 0x58, 0x08, 0x00, 0x00, 0x7C, + 0x08, 0x00, 0x00, 0x98, 0x08, 0x00, 0x00, 0xB4, 0x08, 0x00, 0x00, 0xD0, 0x08, 0x00, 0x00, 0xEC, + 0x08, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00, 0x24, 0x09, 0x00, 0x00, 0xD3, 0x00, 0xA2, 0x40, 0x09, + 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x44, 0x09, 0x34, 0x01, 0xB5, 0x60, 0x09, 0x00, 0x00, 0x8D, + 0x00, 0x00, 0x00, 0xB0, 0xA1, 0x02, 0x0C, 0x01, 0x2A, 0x01, 0x00, 0x18, 0x01, 0x17, 0x0F, 0x10, + 0x00, 0x00, 0x58, 0x01, 0x5F, 0x84, 0x09, 0x00, 0x00, 0x08, 0x2C, 0x00, 0x10, 0x00, 0x1C, 0x00, + 0x1F, 0xA0, 0x2C, 0x00, 0x14, 0x5F, 0x03, 0x00, 0x00, 0x00, 0xA4, 0x2C, 0x00, 0x04, 0x48, 0xE0, + 0x01, 0x10, 0x01, 0x10, 0x00, 0x00, 0x38, 0x00, 0x5F, 0xB0, 0x09, 0x00, 0x00, 0x18, 0x2C, 0x00, + 0x10, 0x00, 0xD6, 0x00, 0x1F, 0xEC, 0x2C, 0x00, 0x04, 0x39, 0x58, 0x02, 0x10, 0x84, 0x00, 0x5F, + 0x0E, 0x00, 0x00, 0x00, 0xF4, 0x2C, 0x00, 0x04, 0x5B, 0x1E, 0x00, 0x14, 0x00, 0x01, 0xB0, 0x00, + 0x5F, 0x2C, 0x0A, 0x00, 0x00, 0x04, 0xDC, 0x00, 0x04, 0x08, 0x10, 0x00, 0x00, 0x24, 0x00, 0x2F, + 0x38, 0x0A, 0x08, 0x01, 0x13, 0x01, 0xC8, 0x02, 0x07, 0x2C, 0x00, 0x11, 0x12, 0xC4, 0x00, 0x00, + 0xC6, 0x00, 0x31, 0x20, 0x00, 0x20, 0x12, 0x00, 0x16, 0x05, 0x84, 0x00, 0x1F, 0xFF, 0x24, 0x00, + 0x11, 0x40, 0x14, 0x14, 0x14, 0x14, 0x24, 0x00, 0x7F, 0x0E, 0x00, 0x04, 0x00, 0x04, 0x00, 0x0E, + 0x24, 0x00, 0x0A, 0x71, 0x08, 0x00, 0x07, 0x00, 0x09, 0x00, 0x07, 0x24, 0x00, 0x73, 0x02, 0x02, + 0x02, 0x02, 0x0A, 0x00, 0x08, 0x01, 0x00, 0x60, 0x03, 0xFF, 0x08, 0x10, 0x08, 0x10, 0x24, 0x00, + 0x7F, 0x18, 0x00, 0x16, 0x00, 0x16, 0x00, 0x18, 0x48, 0x00, 0x02, 0x4F, 0x0C, 0x0C, 0x0C, 0x0C, + 0x24, 0x00, 0x31, 0x7F, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x10, 0x24, 0x00, 0x10, 0x00, 0x48, + 0x00, 0x1F, 0x17, 0x48, 0x00, 0x10, 0x0F, 0x24, 0x00, 0x0D, 0x1F, 0x02, 0x68, 0x01, 0x0C, 0x1E, + 0x0A, 0x68, 0x01, 0x0F, 0x44, 0x01, 0x20, 0x01, 0x83, 0x01, 0x65, 0x00, 0x12, 0x00, 0x21, 0x00, + 0x22, 0x48, 0x00, 0x10, 0x01, 0x01, 0x00, 0x0F, 0xD4, 0x01, 0x1C, 0x04, 0x24, 0x00, 0x1F, 0x23, + 0x24, 0x00, 0x10, 0x1F, 0x24, 0x24, 0x00, 0x10, 0x1F, 0x25, 0x64, 0x02, 0x2A, 0x15, 0x04, 0x24, + 0x00, 0x0F, 0xFC, 0x00, 0x0A, 0x03, 0x24, 0x00, 0x31, 0x0C, 0x00, 0x0B, 0x04, 0x00, 0x04, 0x24, + 0x00, 0x1F, 0x0D, 0x24, 0x00, 0x00, 0x7F, 0x21, 0x00, 0x26, 0x00, 0x26, 0x00, 0x21, 0x6C, 0x00, + 0x00, 0x15, 0x05, 0x24, 0x00, 0x3F, 0x0F, 0x00, 0x04, 0xB4, 0x00, 0x0E, 0x11, 0x21, 0x46, 0x00, + 0x1F, 0x27, 0x48, 0x00, 0x01, 0x0F, 0xD8, 0x00, 0x10, 0x19, 0x06, 0xB4, 0x00, 0x08, 0xD8, 0x00, + 0x0E, 0xB4, 0x00, 0x0F, 0xFC, 0x00, 0x09, 0x13, 0x02, 0x24, 0x00, 0x95, 0x10, 0x00, 0x1D, 0x00, + 0x1B, 0x00, 0x1E, 0x00, 0x1B, 0x24, 0x00, 0x15, 0x1F, 0x24, 0x00, 0x22, 0x07, 0xFF, 0x29, 0x04, + 0x0F, 0x44, 0x01, 0x00, 0x0F, 0x6C, 0x00, 0x22, 0x0E, 0xB4, 0x00, 0x0E, 0x24, 0x00, 0x0F, 0xFC, + 0x00, 0x09, 0x1F, 0x07, 0x24, 0x00, 0x1A, 0x1F, 0x28, 0x40, 0x02, 0x10, 0x1F, 0x29, 0x24, 0x00, + 0x10, 0x1F, 0x2A, 0x88, 0x02, 0x1C, 0x00, 0xD8, 0x00, 0x33, 0x2B, 0x00, 0x04, 0x01, 0x00, 0x17, + 0x06, 0x24, 0x00, 0x1F, 0x2C, 0xAC, 0x02, 0x0C, 0x1F, 0x10, 0xD8, 0x00, 0x0D, 0x1F, 0x06, 0x68, + 0x01, 0x0B, 0x04, 0x6C, 0x00, 0x11, 0x14, 0x42, 0x00, 0x33, 0x00, 0x00, 0x27, 0xD8, 0x05, 0x13, + 0x6C, 0xBC, 0x05, 0x22, 0x70, 0x0A, 0x48, 0x06, 0x00, 0x1C, 0x00, 0x13, 0x22, 0x1C, 0x00, 0x22, + 0x90, 0x0A, 0x38, 0x06, 0x62, 0x94, 0x0A, 0x00, 0x00, 0x12, 0x04, 0x1C, 0x00, 0x14, 0x7F, 0x28, + 0x07, 0x40, 0x0A, 0x00, 0x00, 0x60, 0x04, 0x07, 0x12, 0x0A, 0xAC, 0x07, 0x08, 0x1C, 0x00, 0x22, + 0x24, 0x0C, 0x1C, 0x00, 0x6A, 0x28, 0x0C, 0x00, 0x00, 0x23, 0x00, 0x1C, 0x00, 0x22, 0xA8, 0x0D, + 0x1C, 0x00, 0x6A, 0xAC, 0x0D, 0x00, 0x00, 0x39, 0x0E, 0x1C, 0x00, 0x22, 0x2C, 0x0F, 0x1C, 0x00, + 0x6A, 0x30, 0x0F, 0x00, 0x00, 0x19, 0x06, 0x1C, 0x00, 0x22, 0xB0, 0x10, 0x1C, 0x00, 0x62, 0xB4, + 0x10, 0x00, 0x00, 0x34, 0x12, 0xCC, 0x00, 0xF0, 0x52, 0xE3, 0x07, 0x9C, 0x30, 0x84, 0x16, 0x42, + 0xE9, 0xFF, 0xFF, 0xE0, 0x07, 0x9E, 0xBF, 0x01, 0xEF, 0x59, 0xCE, 0x18, 0xC6, 0x10, 0x84, 0x00, + 0x00, 0x40, 0x12, 0x00, 0x00, 0x68, 0x12, 0x00, 0x00, 0x90, 0x12, 0x00, 0x00, 0xB8, 0x12, 0x00, + 0x00, 0xE0, 0x12, 0x00, 0x00, 0x08, 0x13, 0x00, 0x00, 0x30, 0x13, 0x00, 0x00, 0x58, 0x13, 0x00, + 0x00, 0x80, 0x13, 0x00, 0x00, 0xA8, 0x13, 0x00, 0x00, 0xCC, 0x13, 0x00, 0x00, 0xEC, 0x13, 0x00, + 0x00, 0x0C, 0x14, 0x00, 0x00, 0x2C, 0x14, 0x00, 0x00, 0x50, 0x14, 0x00, 0x00, 0x74, 0x14, 0x00, + 0x00, 0x98, 0x14, 0x00, 0x00, 0xBC, 0x14, 0x00, 0x00, 0xDC, 0x2D, 0x01, 0xF0, 0xFF, 0x8A, 0x15, + 0x00, 0x00, 0x24, 0x15, 0x00, 0x00, 0x44, 0x15, 0x00, 0x00, 0x68, 0x15, 0x00, 0x00, 0x8C, 0x15, + 0x00, 0x00, 0xB0, 0x15, 0x00, 0x00, 0xD4, 0x15, 0x00, 0x00, 0xF8, 0x15, 0x00, 0x00, 0x1C, 0x16, + 0x00, 0x00, 0x40, 0x16, 0x00, 0x00, 0x64, 0x16, 0x00, 0x00, 0x88, 0x16, 0x00, 0x00, 0xAC, 0x16, + 0x00, 0x00, 0xD0, 0x16, 0x00, 0x00, 0xF4, 0x16, 0x00, 0x00, 0x18, 0x17, 0x00, 0x00, 0x3C, 0x17, + 0x00, 0x00, 0x5C, 0x17, 0x00, 0x00, 0x88, 0x17, 0x00, 0x00, 0xAC, 0x17, 0x00, 0x00, 0xD0, 0x17, + 0x00, 0x00, 0xF4, 0x17, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x3C, 0x18, 0x00, 0x00, 0x60, 0x18, + 0x00, 0x00, 0x84, 0x18, 0x00, 0x00, 0xA8, 0x18, 0x00, 0x00, 0xCC, 0x18, 0x00, 0x00, 0xF0, 0x18, + 0x00, 0x00, 0x1C, 0x19, 0x00, 0x00, 0x40, 0x19, 0x00, 0x00, 0x60, 0x19, 0x00, 0x00, 0x84, 0x19, + 0x00, 0x00, 0xA4, 0x19, 0x00, 0x00, 0xC4, 0x19, 0x00, 0x00, 0xE4, 0x19, 0x00, 0x00, 0x08, 0x1A, + 0x00, 0x00, 0x2C, 0x1A, 0x00, 0x00, 0x50, 0x1A, 0x00, 0x00, 0x74, 0x1A, 0x00, 0x00, 0x9C, 0x1A, + 0x00, 0x00, 0xC0, 0x1A, 0x00, 0x00, 0xE8, 0x1A, 0x00, 0x00, 0x0C, 0x1B, 0x00, 0x00, 0x34, 0x1B, + 0x00, 0x00, 0x58, 0x1B, 0x00, 0x00, 0x7C, 0x1B, 0x00, 0x00, 0xA0, 0x1B, 0x00, 0x00, 0xC4, 0x1B, + 0x00, 0x00, 0xD0, 0x1B, 0x00, 0x00, 0x68, 0x1D, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x98, 0x20, + 0x00, 0x00, 0x30, 0x22, 0x00, 0x00, 0xC8, 0x23, 0x00, 0x00, 0x60, 0x25, 0x00, 0x00, 0xF8, 0x26, + 0x00, 0x00, 0x90, 0x28, 0x00, 0x00, 0x9C, 0x28, 0x00, 0x00, 0xBC, 0x2B, 0x00, 0x00, 0xF4, 0x2E, + 0x00, 0x00, 0x3C, 0x31, 0x00, 0x00, 0x48, 0x31, 0x00, 0x00, 0x50, 0x31, 0x00, 0x00, 0x90, 0x31, + 0x00, 0x00, 0xB8, 0x31, 0x00, 0x00, 0x40, 0x32, 0x00, 0x00, 0xD8, 0x32, 0x00, 0x00, 0xC0, 0x33, + 0x00, 0x00, 0x54, 0x34, 0x00, 0x00, 0x70, 0x34, 0x00, 0x00, 0xBC, 0x34, 0x00, 0x00, 0x1C, 0x35, + 0x00, 0x00, 0x50, 0x35, 0x00, 0x00, 0x90, 0x35, 0x00, 0x00, 0xAC, 0x35, 0x00, 0x00, 0xC8, 0x35, + 0x00, 0x00, 0xDC, 0x35, 0x00, 0x00, 0x48, 0x36, 0x00, 0x00, 0xC0, 0x36, 0x00, 0x00, 0x1C, 0x37, + 0x00, 0x00, 0x94, 0x37, 0x00, 0x00, 0x0C, 0x38, 0x00, 0x00, 0x94, 0x38, 0x00, 0x00, 0x0C, 0x39, + 0x00, 0x00, 0x94, 0x39, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x78, 0x3A, 0x00, 0x00, 0xF0, 0x3A, + 0x00, 0x00, 0x14, 0x3B, 0x00, 0x00, 0x40, 0x3B, 0x00, 0x00, 0x8C, 0x3B, 0x00, 0x00, 0xC0, 0x3B, + 0x00, 0x00, 0x18, 0x3C, 0x00, 0x00, 0x90, 0x3C, 0x00, 0x00, 0xA8, 0x3D, 0x00, 0x00, 0x30, 0x3E, + 0x00, 0x00, 0xA8, 0x3E, 0x00, 0x00, 0x30, 0x3F, 0x00, 0x00, 0xA8, 0x3F, 0x00, 0x00, 0x04, 0x40, + 0x00, 0x00, 0x60, 0x40, 0x00, 0x00, 0xE8, 0x08, 0x00, 0xF0, 0xFF, 0xBF, 0x41, 0x00, 0x00, 0x94, + 0x41, 0x00, 0x00, 0xE4, 0x41, 0x00, 0x00, 0x5C, 0x42, 0x00, 0x00, 0xB8, 0x42, 0x00, 0x00, 0x4C, + 0x43, 0x00, 0x00, 0xC4, 0x43, 0x00, 0x00, 0x4C, 0x44, 0x00, 0x00, 0xC4, 0x44, 0x00, 0x00, 0x68, + 0x45, 0x00, 0x00, 0xE0, 0x45, 0x00, 0x00, 0x58, 0x46, 0x00, 0x00, 0xD0, 0x46, 0x00, 0x00, 0x58, + 0x47, 0x00, 0x00, 0xE0, 0x47, 0x00, 0x00, 0x90, 0x48, 0x00, 0x00, 0x18, 0x49, 0x00, 0x00, 0xA0, + 0x49, 0x00, 0x00, 0x0C, 0x4A, 0x00, 0x00, 0x7C, 0x4A, 0x00, 0x00, 0xE8, 0x4A, 0x00, 0x00, 0x48, + 0x4B, 0x00, 0x00, 0x80, 0x4B, 0x00, 0x00, 0x98, 0x4B, 0x00, 0x00, 0xB4, 0x4B, 0x00, 0x00, 0x0C, + 0x4C, 0x00, 0x00, 0x84, 0x4C, 0x00, 0x00, 0xD4, 0x4C, 0x00, 0x00, 0x4C, 0x4D, 0x00, 0x00, 0x9C, + 0x4D, 0x00, 0x00, 0xF8, 0x4D, 0x00, 0x00, 0x80, 0x4E, 0x00, 0x00, 0xF8, 0x4E, 0x00, 0x00, 0x38, + 0x4F, 0x00, 0x00, 0x98, 0x4F, 0x00, 0x00, 0x20, 0x50, 0x00, 0x00, 0x54, 0x50, 0x00, 0x00, 0xD4, + 0x50, 0x00, 0x00, 0x2C, 0x51, 0x00, 0x00, 0x7C, 0x51, 0x00, 0x00, 0xEC, 0x51, 0x00, 0x00, 0x5C, + 0x52, 0x00, 0x00, 0xA8, 0x52, 0x00, 0x00, 0xF8, 0x52, 0x00, 0x00, 0x50, 0x53, 0x00, 0x00, 0xA8, + 0x53, 0x00, 0x00, 0xF8, 0x53, 0x00, 0x00, 0x64, 0x54, 0x00, 0x00, 0xB4, 0x54, 0x00, 0x00, 0x18, + 0x55, 0x00, 0x00, 0x5C, 0x55, 0x00, 0x00, 0xCC, 0x55, 0x00, 0x00, 0x08, 0x56, 0x00, 0x00, 0x78, + 0x56, 0x00, 0x00, 0xA0, 0x56, 0x00, 0x00, 0xF0, 0x56, 0x00, 0x00, 0xFC, 0x56, 0x00, 0x00, 0x04, + 0x57, 0x00, 0x00, 0xB4, 0x57, 0x00, 0x00, 0x20, 0x58, 0x00, 0x00, 0xCC, 0x59, 0x00, 0x00, 0xD4, + 0x5B, 0x00, 0x00, 0x24, 0x5F, 0x00, 0x00, 0x08, 0x61, 0x00, 0x00, 0x44, 0x61, 0x00, 0x00, 0x64, + 0x62, 0x00, 0x00, 0x84, 0x63, 0x00, 0x00, 0x1C, 0x64, 0x00, 0x00, 0xF8, 0x64, 0x00, 0x00, 0x34, + 0x65, 0x00, 0x00, 0x6C, 0x65, 0x00, 0x00, 0x90, 0x65, 0x00, 0x00, 0xCC, 0x66, 0x00, 0x00, 0x78, + 0x68, 0x00, 0x00, 0x98, 0x69, 0x00, 0x00, 0x44, 0x6B, 0x00, 0x00, 0xF0, 0x6C, 0x00, 0x00, 0xB8, + 0x6E, 0x00, 0x00, 0x64, 0x70, 0x00, 0x00, 0x10, 0x72, 0x00, 0x00, 0x68, 0x73, 0x00, 0x00, 0x14, + 0x75, 0x00, 0x00, 0xC0, 0x76, 0x00, 0x00, 0x20, 0x77, 0x00, 0x00, 0x9C, 0x77, 0x00, 0x00, 0x64, + 0x78, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x00, 0xCC, 0x79, 0x00, 0x00, 0x5C, 0x7B, 0x00, 0x00, 0x24, + 0x7F, 0x00, 0x00, 0x08, 0x81, 0x00, 0x00, 0xD0, 0x82, 0x00, 0x00, 0x98, 0x84, 0x00, 0x00, 0x44, + 0x86, 0x00, 0x00, 0x9C, 0x87, 0x00, 0x00, 0xD8, 0x88, 0x00, 0x00, 0xA0, 0x8A, 0x00, 0x00, 0x68, + 0x8C, 0x00, 0x00, 0xFC, 0x8C, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x00, 0xC8, 0x8F, 0x00, 0x00, 0x20, + 0x91, 0x00, 0x00, 0x58, 0x93, 0x00, 0x00, 0xE8, 0x94, 0x00, 0x00, 0xB0, 0x96, 0x00, 0x00, 0x5C, + 0x98, 0x00, 0x00, 0x84, 0x9A, 0x00, 0x00, 0x4C, 0x9C, 0x00, 0x00, 0xF8, 0x9D, 0x00, 0x00, 0x88, + 0x9F, 0x00, 0x00, 0x50, 0xA1, 0x00, 0x00, 0x34, 0xA3, 0x00, 0x00, 0xA4, 0xA5, 0x00, 0x00, 0x88, + 0xA7, 0x00, 0x00, 0x50, 0xA9, 0x00, 0x00, 0xC4, 0xAA, 0x15, 0x04, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x13, 0x00, 0x00, 0x3C, 0xAD, 0x00, 0x00, 0x78, 0xAE, 0x00, 0x00, 0x28, 0xAF, 0x00, 0x00, + 0x60, 0xAF, 0x00, 0x00, 0xA8, 0xAF, 0x00, 0x00, 0xB4, 0xB0, 0x00, 0x00, 0x44, 0xB2, 0x00, 0x00, + 0x50, 0xB3, 0x00, 0x00, 0xC4, 0xB4, 0x00, 0x00, 0xD0, 0xB5, 0x00, 0x00, 0xE8, 0xB6, 0x00, 0x00, + 0xA0, 0xB8, 0x00, 0x00, 0x30, 0xBA, 0x00, 0x00, 0xDC, 0xBA, 0x00, 0x00, 0xE4, 0xBB, 0x00, 0x00, + 0x90, 0xBD, 0x00, 0x00, 0x24, 0xBE, 0x00, 0x00, 0xE4, 0xBF, 0x00, 0x00, 0x04, 0xC1, 0x00, 0x00, + 0x10, 0xC2, 0x00, 0x00, 0x84, 0xC3, 0x00, 0x00, 0xE0, 0xC4, 0x00, 0x00, 0xB0, 0xC5, 0x00, 0x00, + 0xBC, 0xC6, 0x00, 0x00, 0xE4, 0xC7, 0x00, 0x00, 0xF0, 0xC8, 0x00, 0x00, 0xFC, 0xC9, 0x00, 0x00, + 0x80, 0xCB, 0x00, 0x00, 0xA0, 0xCC, 0x00, 0x00, 0x08, 0xCE, 0x00, 0x00, 0xEC, 0xCE, 0x00, 0x00, + 0x54, 0xD0, 0x00, 0x00, 0x08, 0xD1, 0x00, 0x00, 0x70, 0xD2, 0x00, 0x00, 0xDC, 0xD2, 0x00, 0x00, + 0xB4, 0xD3, 0x00, 0x00, 0xC0, 0xD3, 0x00, 0x00, 0xC8, 0xD3, 0x00, 0x00, 0xD0, 0xD3, 0x00, 0x00, + 0xD8, 0xD3, 0x00, 0x00, 0xE0, 0xD3, 0x00, 0x00, 0xE8, 0xD3, 0x00, 0x00, 0xF0, 0xD3, 0x00, 0x00, + 0xF8, 0xD3, 0x00, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x08, 0xD4, 0x00, 0x00, 0x10, 0xD4, 0x00, 0x00, + 0x18, 0xD4, 0x00, 0x00, 0xEC, 0xD8, 0x00, 0x00, 0xF4, 0xD8, 0x00, 0x00, 0xFC, 0xD8, 0x00, 0x00, + 0x04, 0xD9, 0x00, 0x00, 0x0C, 0xD9, 0x00, 0x00, 0x14, 0xD9, 0x00, 0x00, 0x1C, 0xD9, 0x00, 0x00, + 0x24, 0xD9, 0x00, 0x00, 0x2C, 0xD9, 0x00, 0x00, 0x34, 0xD9, 0x00, 0x00, 0x3C, 0xD9, 0x00, 0x00, + 0x44, 0xD9, 0x00, 0x00, 0x4C, 0xD9, 0x00, 0x00, 0x54, 0xD9, 0x00, 0x00, 0x5C, 0xD9, 0x00, 0x00, + 0x64, 0xD9, 0x00, 0x00, 0x6C, 0xD9, 0x00, 0x00, 0x74, 0xD9, 0x00, 0x00, 0x7C, 0xD9, 0x00, 0x00, + 0x84, 0xD9, 0x00, 0x00, 0x8C, 0xD9, 0x00, 0x00, 0x94, 0xD9, 0x00, 0x00, 0x9C, 0xD9, 0x00, 0x00, + 0xA4, 0xD9, 0x00, 0x00, 0xAC, 0xD9, 0x00, 0x00, 0xB4, 0xD9, 0x00, 0x00, 0xBC, 0xD9, 0x00, 0x00, + 0xC4, 0xD9, 0x00, 0x00, 0xCC, 0xD9, 0x00, 0x00, 0xD4, 0xD9, 0x00, 0x00, 0xDC, 0xD9, 0x00, 0x00, + 0xE4, 0xD9, 0x00, 0x00, 0xEC, 0xD9, 0x00, 0x00, 0xF4, 0xD9, 0x00, 0x00, 0xFC, 0xD9, 0x00, 0x00, + 0x04, 0xDA, 0x00, 0x00, 0x0C, 0xDA, 0x00, 0x00, 0x14, 0xDA, 0x00, 0x00, 0x1C, 0xDA, 0x00, 0x00, + 0x24, 0xDA, 0x00, 0x00, 0x2C, 0xDA, 0x00, 0x00, 0x34, 0xDA, 0x00, 0x00, 0x3C, 0xDA, 0x00, 0x00, + 0x44, 0xDA, 0x00, 0x00, 0x4C, 0xDA, 0x00, 0x00, 0x54, 0xDA, 0x00, 0x00, 0x5C, 0xDA, 0x00, 0x00, + 0x64, 0xDA, 0x00, 0x00, 0x6C, 0xDA, 0x00, 0x00, 0x74, 0xDA, 0x00, 0x00, 0x7C, 0xDA, 0x00, 0x00, + 0x84, 0xDA, 0x00, 0x00, 0x8C, 0xDA, 0x00, 0x00, 0x94, 0xDA, 0x00, 0x00, 0x9C, 0xDA, 0x00, 0x00, + 0xA4, 0xDA, 0x00, 0x00, 0xAC, 0xDA, 0x00, 0x00, 0xB4, 0xDA, 0x00, 0x00, 0xBC, 0xDA, 0x00, 0x00, + 0xC4, 0xDA, 0x00, 0x00, 0xCC, 0xDA, 0x00, 0x00, 0xD4, 0xDA, 0x00, 0x00, 0xDC, 0xDA, 0x00, 0x00, + 0xE4, 0xDA, 0x00, 0x00, 0xEC, 0xDA, 0x00, 0x00, 0xF4, 0xDA, 0x00, 0x00, 0xFC, 0xDA, 0x00, 0x00, + 0x04, 0xDB, 0x00, 0x00, 0x0C, 0xDB, 0x00, 0x00, 0x14, 0xDB, 0x00, 0x00, 0x1C, 0xDB, 0x00, 0x00, + 0x24, 0xDB, 0x00, 0x00, 0x2C, 0xDB, 0x00, 0x00, 0x34, 0xDB, 0x00, 0x00, 0x3C, 0xDB, 0x00, 0x00, + 0x44, 0xDB, 0x00, 0x00, 0x4C, 0xDB, 0x00, 0x00, 0x54, 0xDB, 0x00, 0x00, 0x5C, 0xDB, 0x00, 0x00, + 0x64, 0xDB, 0x00, 0x00, 0x6C, 0xDB, 0x00, 0x00, 0x74, 0xDB, 0x00, 0x00, 0x7C, 0xDB, 0x00, 0x00, + 0x84, 0xDB, 0x00, 0x00, 0x8C, 0xDB, 0x00, 0x00, 0x98, 0xDB, 0x00, 0x00, 0xA0, 0xDB, 0x00, 0x00, + 0x00, 0xDD, 0x00, 0x00, 0xF8, 0xDD, 0x00, 0x00, 0x34, 0xE2, 0x00, 0x00, 0x34, 0xE7, 0x00, 0x00, + 0x4C, 0xEF, 0x00, 0x00, 0x14, 0xF4, 0x00, 0x00, 0x88, 0xF4, 0x00, 0x00, 0x5C, 0xF7, 0x00, 0x00, + 0x30, 0xFA, 0x00, 0x00, 0xA4, 0xFB, 0x00, 0x00, 0x90, 0xFD, 0x00, 0x00, 0x10, 0xFE, 0x00, 0x00, + 0x7C, 0xFE, 0x00, 0x00, 0xBC, 0xFE, 0x00, 0x00, 0xF8, 0x01, 0x01, 0x00, 0x0C, 0x06, 0x01, 0x00, + 0x9C, 0x08, 0x01, 0x00, 0x98, 0x0C, 0x01, 0x00, 0xAC, 0x10, 0x01, 0x00, 0xE8, 0x14, 0x01, 0x00, + 0xE4, 0x18, 0x01, 0x00, 0x24, 0x1D, 0x01, 0x00, 0x60, 0x20, 0x01, 0x00, 0x74, 0x24, 0x01, 0x00, + 0x88, 0x28, 0x01, 0x00, 0x58, 0x29, 0x01, 0x00, 0x78, 0x2A, 0x01, 0x00, 0x70, 0x2C, 0x01, 0x00, + 0x88, 0x2D, 0x01, 0x00, 0x80, 0x2F, 0x01, 0x00, 0x50, 0x33, 0x01, 0x00, 0x50, 0x3C, 0x01, 0x00, + 0xE4, 0x40, 0x01, 0x00, 0x20, 0x45, 0x01, 0x00, 0x90, 0x49, 0x01, 0x00, 0xA0, 0x4D, 0x01, 0x00, + 0xDC, 0x50, 0x01, 0x00, 0xEC, 0x53, 0x01, 0x00, 0x5C, 0x58, 0x01, 0x00, 0x98, 0x5C, 0x01, 0x00, + 0x24, 0x5E, 0x01, 0x00, 0xC0, 0x60, 0x01, 0x00, 0xFC, 0x64, 0x01, 0x00, 0x38, 0x68, 0x01, 0x00, + 0x78, 0x6D, 0x01, 0x00, 0x60, 0x71, 0x01, 0x00, 0xFC, 0x75, 0x01, 0x00, 0x0C, 0x7A, 0x01, 0x00, + 0x78, 0x7F, 0x01, 0x00, 0xB4, 0x83, 0x01, 0x00, 0xC8, 0x87, 0x01, 0x00, 0xB0, 0x8B, 0x01, 0x00, + 0x04, 0x90, 0x01, 0x00, 0x6C, 0x94, 0x01, 0x00, 0x80, 0x9A, 0x01, 0x00, 0xE8, 0x9E, 0x01, 0x00, + 0x50, 0xA3, 0x01, 0x00, 0xE0, 0xA6, 0x01, 0x00, 0x8C, 0xA9, 0x01, 0x00, 0xC8, 0xAC, 0x01, 0x00, + 0x74, 0xAF, 0x01, 0x00, 0x08, 0xB1, 0x01, 0x00, 0x84, 0xB1, 0x01, 0x00, 0x1C, 0xB2, 0x01, 0x00, + 0xB0, 0xB4, 0x01, 0x00, 0x6C, 0xB8, 0x01, 0x00, 0xE0, 0xBA, 0x01, 0x00, 0x70, 0xBE, 0x01, 0x00, + 0xE4, 0xC0, 0x01, 0x00, 0x8C, 0xC3, 0x01, 0x00, 0x98, 0xC7, 0x01, 0x00, 0x28, 0xCB, 0x01, 0x00, + 0x78, 0xCC, 0x01, 0x00, 0xD8, 0xCE, 0x01, 0x00, 0xE8, 0xD2, 0x01, 0x00, 0x48, 0xD4, 0x01, 0x00, + 0x70, 0xD8, 0x01, 0x00, 0x04, 0xDB, 0x01, 0x00, 0x78, 0xDD, 0x01, 0x00, 0xE0, 0xE0, 0x01, 0x00, + 0x48, 0xE4, 0x01, 0x00, 0x40, 0xE6, 0x01, 0x00, 0x98, 0xE8, 0x01, 0x00, 0x48, 0xEB, 0x01, 0x00, + 0xDC, 0xED, 0x01, 0x00, 0x70, 0xF0, 0x01, 0x00, 0x1C, 0xF4, 0x01, 0x00, 0xD0, 0xF6, 0x01, 0x00, + 0x34, 0xFA, 0x01, 0x00, 0x6C, 0xFC, 0x01, 0x00, 0xB0, 0xFF, 0x01, 0x00, 0x20, 0x01, 0x02, 0x00, + 0x64, 0x04, 0x02, 0x00, 0x54, 0x05, 0x02, 0x00, 0x78, 0x07, 0x02, 0x00, 0x84, 0x07, 0x02, 0x00, + 0x8C, 0x07, 0x02, 0x00, 0xE0, 0x07, 0x02, 0x00, 0x28, 0x08, 0x02, 0x00, 0x14, 0x09, 0x02, 0x00, + 0x24, 0x0A, 0x02, 0x00, 0xE4, 0x0B, 0x02, 0x00, 0xD0, 0x0C, 0x02, 0x00, 0xF8, 0x0C, 0x02, 0x00, + 0x8C, 0x0D, 0x02, 0x00, 0x38, 0x0E, 0x02, 0x00, 0x94, 0x0E, 0x02, 0x00, 0x0C, 0x0F, 0x02, 0x00, + 0x38, 0x0F, 0x02, 0x00, 0x5C, 0x0F, 0x02, 0x00, 0x70, 0x0F, 0x02, 0x00, 0x24, 0x10, 0x02, 0x00, + 0x00, 0x11, 0x02, 0x00, 0x90, 0x11, 0x02, 0x00, 0x6C, 0x12, 0x02, 0x00, 0x58, 0x13, 0x02, 0x00, + 0x44, 0x14, 0x02, 0x00, 0x20, 0x15, 0x02, 0x00, 0xFC, 0x15, 0x02, 0x00, 0xC4, 0x16, 0x02, 0x00, + 0xB0, 0x17, 0x02, 0x00, 0x8C, 0x18, 0x02, 0x00, 0xC4, 0x18, 0x02, 0x00, 0x0C, 0x19, 0x02, 0x00, + 0x84, 0x19, 0x02, 0x00, 0xCC, 0x19, 0x02, 0x00, 0x44, 0x1A, 0x02, 0x00, 0x0C, 0x1B, 0x02, 0x00, + 0xF8, 0x1C, 0x02, 0x00, 0xF8, 0x1D, 0x02, 0x00, 0xE4, 0x1E, 0x02, 0x00, 0xC0, 0x1F, 0x02, 0x00, + 0xAC, 0x20, 0x02, 0x00, 0x60, 0x21, 0x02, 0x00, 0x14, 0x22, 0x02, 0x00, 0x00, 0x23, 0x02, 0x00, + 0xEC, 0x23, 0x02, 0x00, 0x54, 0x24, 0x02, 0x00, 0xE4, 0x24, 0x02, 0x00, 0xD0, 0x25, 0x02, 0x00, + 0x84, 0x26, 0x02, 0x00, 0x98, 0x27, 0x02, 0x00, 0x74, 0x28, 0x02, 0x00, 0x60, 0x29, 0x02, 0x00, + 0x4C, 0x2A, 0x02, 0x00, 0x68, 0x2B, 0x02, 0x00, 0x54, 0x2C, 0x02, 0x00, 0x40, 0x2D, 0x02, 0x00, + 0x1C, 0x2E, 0x02, 0x00, 0x08, 0x2F, 0x02, 0x00, 0xF4, 0x2F, 0x02, 0x00, 0x40, 0x31, 0x02, 0x00, + 0x2C, 0x32, 0x02, 0x00, 0x18, 0x33, 0x02, 0x00, 0xE0, 0x33, 0x02, 0x00, 0x8C, 0x34, 0x02, 0x00, + 0x40, 0x35, 0x02, 0x00, 0xEC, 0x35, 0x02, 0x00, 0x58, 0x36, 0x02, 0x00, 0x7C, 0x36, 0x02, 0x00, + 0xA4, 0x36, 0x02, 0x00, 0x38, 0x37, 0x02, 0x00, 0x00, 0x38, 0x02, 0x00, 0x88, 0x38, 0x02, 0x00, + 0x50, 0x39, 0x02, 0x00, 0xD8, 0x39, 0x02, 0x00, 0x78, 0x3A, 0x02, 0x00, 0x64, 0x3B, 0x02, 0x00, + 0x2C, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x14, 0x3D, 0x02, 0x00, 0xF0, 0x3D, 0x02, 0x00, + 0x44, 0x3E, 0x02, 0x00, 0x2C, 0x3F, 0x02, 0x00, 0xC0, 0x3F, 0x02, 0x00, 0x48, 0x40, 0x02, 0x00, + 0x04, 0x41, 0x02, 0x00, 0xC0, 0x41, 0x02, 0x00, 0x34, 0x42, 0x02, 0x00, 0xBC, 0x42, 0x02, 0x00, + 0x54, 0x43, 0x02, 0x00, 0xE8, 0x43, 0x02, 0x00, 0x7C, 0x44, 0x02, 0x00, 0x48, 0x45, 0x02, 0x00, + 0xDC, 0x45, 0x02, 0x00, 0x98, 0x46, 0x02, 0x00, 0x20, 0x47, 0x02, 0x00, 0xCC, 0x47, 0x02, 0x00, + 0x30, 0x48, 0x02, 0x00, 0xDC, 0x48, 0x02, 0x00, 0x1C, 0x49, 0x02, 0x00, 0xA4, 0x49, 0x02, 0x10, + 0x09, 0x31, 0xAC, 0x49, 0x02, 0xDC, 0x0D, 0x39, 0xEC, 0x49, 0x02, 0xDC, 0x0F, 0x31, 0xE4, 0xA3, + 0x02, 0x08, 0x00, 0x23, 0x14, 0x4A, 0x26, 0x0A, 0x12, 0x4A, 0x28, 0x00, 0x3D, 0x28, 0x4A, 0x02, + 0x48, 0x12, 0x00, 0x14, 0x11, 0x2A, 0x50, 0x4A, 0x40, 0x00, 0x1F, 0x6C, 0x28, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x39, 0x78, 0x4A, 0x02, 0xC8, 0x10, 0x1F, 0x84, 0x28, 0x00, 0x00, 0x00, 0x9C, 0x0A, + 0x17, 0xC0, 0x18, 0x00, 0x10, 0x72, 0x05, 0x00, 0x1E, 0x4B, 0x28, 0x00, 0x66, 0x6F, 0x00, 0x00, + 0x00, 0xC8, 0x4C, 0x18, 0x00, 0x10, 0x15, 0x50, 0x00, 0x29, 0x4E, 0x02, 0x98, 0x00, 0xB0, 0xE8, + 0xA3, 0x02, 0x00, 0x0B, 0x00, 0x00, 0x00, 0xD8, 0x4E, 0x02, 0xD3, 0x0A, 0x41, 0x00, 0x04, 0x4F, + 0x02, 0xEA, 0x0A, 0x2A, 0x1C, 0x4F, 0xF0, 0x11, 0x2E, 0xF0, 0xA3, 0x60, 0x00, 0x00, 0xF0, 0x00, + 0x17, 0x30, 0x28, 0x00, 0x00, 0x40, 0x00, 0x31, 0xF4, 0xA3, 0x02, 0xD0, 0x10, 0x22, 0x58, 0x4F, + 0x08, 0x00, 0x31, 0x68, 0x4F, 0x02, 0xC8, 0x00, 0x13, 0x78, 0x10, 0x00, 0x31, 0xB4, 0x4F, 0x02, + 0x00, 0x0B, 0x31, 0xFC, 0xA3, 0x02, 0x88, 0x0B, 0x22, 0xC4, 0x4F, 0x48, 0x01, 0x48, 0x0C, 0x50, + 0x02, 0x00, 0xE8, 0x10, 0x5B, 0x54, 0x00, 0x49, 0x00, 0x01, 0x44, 0x01, 0x26, 0x00, 0x00, 0xF8, + 0x10, 0x9B, 0x1C, 0x01, 0xB1, 0x00, 0x40, 0x00, 0x40, 0x00, 0x10, 0x50, 0x12, 0x04, 0x20, 0x00, + 0x13, 0x7A, 0x20, 0x00, 0x1F, 0x11, 0x20, 0x00, 0x04, 0x13, 0xD7, 0x20, 0x00, 0x1B, 0x12, 0x20, + 0x00, 0x31, 0x06, 0x00, 0xFF, 0xBA, 0x0B, 0xBF, 0xB0, 0x00, 0x2C, 0x00, 0xC4, 0x01, 0x48, 0x00, + 0x13, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFD, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x90, 0x00, + 0x32, 0x01, 0xB4, 0x00, 0x50, 0x00, 0x14, 0x22, 0x00, 0xCF, 0x15, 0x00, 0x0A, 0x00, 0xFD, 0xFF, + 0x00, 0x00, 0xFE, 0xFF, 0xE3, 0x01, 0x24, 0x00, 0x07, 0x13, 0x04, 0x6C, 0x00, 0x04, 0xE8, 0x11, + 0x1B, 0x16, 0x0C, 0x02, 0x20, 0x18, 0x50, 0x8C, 0x01, 0x04, 0x24, 0x00, 0x7B, 0xBA, 0x00, 0x20, + 0x03, 0x28, 0x00, 0x01, 0x46, 0x00, 0x11, 0x06, 0x8C, 0x00, 0x9F, 0x01, 0x00, 0xFA, 0x00, 0x18, + 0x01, 0x8C, 0x00, 0x28, 0x68, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x8C, 0x00, 0x4F, 0x02, 0x00, + 0x9A, 0x01, 0x24, 0x00, 0x07, 0x17, 0x05, 0x8C, 0x00, 0x5F, 0xD2, 0x00, 0x10, 0x01, 0x19, 0x68, + 0x00, 0x02, 0x9F, 0x07, 0x00, 0xD2, 0x00, 0x03, 0x00, 0x41, 0x00, 0x41, 0x68, 0x00, 0x08, 0x4F, + 0x07, 0x00, 0x15, 0x01, 0x24, 0x00, 0x09, 0x11, 0xFC, 0x24, 0x00, 0x1F, 0x58, 0x24, 0x00, 0x0A, + 0x13, 0xFB, 0x6C, 0x00, 0x1F, 0x46, 0x24, 0x00, 0x08, 0x13, 0xFA, 0x6C, 0x00, 0x0F, 0x24, 0x00, + 0x09, 0x13, 0xF9, 0x6C, 0x00, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xF8, 0x6C, 0x00, 0x1F, 0x89, 0x24, + 0x00, 0x08, 0x13, 0xF7, 0x6C, 0x00, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xF6, 0x6C, 0x00, 0x0F, 0x24, + 0x00, 0x09, 0x13, 0xF5, 0x6C, 0x00, 0x3F, 0xCC, 0x00, 0x84, 0x24, 0x00, 0x04, 0x33, 0x0A, 0x00, + 0xF4, 0x48, 0x00, 0x1F, 0xCC, 0x48, 0x00, 0x02, 0x80, 0xF3, 0xFF, 0x1A, 0x00, 0x06, 0x00, 0xF2, + 0xFF, 0xCA, 0x02, 0x13, 0x9B, 0x44, 0x01, 0x1F, 0x1B, 0x6C, 0x00, 0x02, 0x20, 0xF1, 0xFF, 0x42, + 0x04, 0x3F, 0x9B, 0x01, 0x46, 0x24, 0x00, 0x08, 0x20, 0xF0, 0xFF, 0xD6, 0x14, 0x11, 0x9B, 0xB4, + 0x00, 0x3F, 0x84, 0x00, 0x1B, 0x18, 0x02, 0x0C, 0x5B, 0xE0, 0x01, 0x28, 0x00, 0x1C, 0x20, 0x00, + 0x15, 0x01, 0x08, 0x00, 0x7B, 0x2A, 0x00, 0xDF, 0x01, 0xE6, 0x00, 0x01, 0xA8, 0x04, 0x28, 0x24, + 0x50, 0x20, 0x04, 0x00, 0x4C, 0x00, 0x02, 0x50, 0x00, 0x5F, 0x78, 0x00, 0x30, 0x00, 0x20, 0x70, + 0x00, 0x00, 0x11, 0x07, 0x68, 0x02, 0xB3, 0x00, 0x00, 0x5E, 0x00, 0x43, 0x00, 0x90, 0x01, 0x23, + 0x00, 0x21, 0x7A, 0x0F, 0x3B, 0x64, 0x50, 0x02, 0x68, 0x02, 0x3F, 0xFE, 0xFF, 0x78, 0x48, 0x00, + 0x0A, 0x13, 0xFC, 0x48, 0x00, 0x55, 0x66, 0x00, 0x90, 0x01, 0x20, 0x48, 0x00, 0x3B, 0x78, 0x50, + 0x02, 0x68, 0x02, 0x3F, 0xFD, 0xFF, 0xF0, 0x48, 0x00, 0x0A, 0x13, 0xFA, 0x48, 0x00, 0x19, 0x86, + 0x48, 0x00, 0x3B, 0x8C, 0x50, 0x02, 0x68, 0x02, 0x4F, 0xFC, 0xFF, 0x68, 0x01, 0x48, 0x00, 0x09, + 0x13, 0xF8, 0x48, 0x00, 0x19, 0xA6, 0x48, 0x00, 0x3B, 0xA0, 0x50, 0x02, 0x68, 0x02, 0x3F, 0xFB, + 0xFF, 0xE0, 0x48, 0x00, 0x0A, 0x13, 0xF6, 0x48, 0x00, 0x19, 0xC6, 0x48, 0x00, 0x2F, 0xB4, 0x50, + 0xA0, 0x17, 0x01, 0x73, 0x30, 0x00, 0x78, 0x00, 0x04, 0x00, 0x22, 0x24, 0x00, 0x2E, 0xC8, 0x50, + 0xC4, 0x05, 0x15, 0x0F, 0x84, 0x16, 0x1D, 0xF8, 0xC4, 0x16, 0x0C, 0x74, 0x05, 0x93, 0x3A, 0x00, + 0xF8, 0x00, 0xB4, 0x01, 0x14, 0x00, 0x23, 0x38, 0x17, 0x31, 0xDC, 0x50, 0x02, 0x30, 0x00, 0x11, + 0x0A, 0xD8, 0x02, 0x9F, 0xFA, 0xFF, 0xFE, 0x01, 0xE6, 0x00, 0x5A, 0x00, 0x2A, 0xEC, 0x04, 0x02, + 0x17, 0x08, 0x0E, 0x00, 0x54, 0x08, 0x00, 0x14, 0x00, 0x24, 0x48, 0x07, 0x29, 0x50, 0x02, 0x98, + 0x05, 0x1B, 0x0B, 0x20, 0x00, 0x1B, 0xF0, 0x20, 0x00, 0x1B, 0x16, 0x20, 0x00, 0x15, 0xFC, 0x84, + 0x00, 0x02, 0x5C, 0x02, 0x4F, 0x28, 0x00, 0x2A, 0x00, 0x94, 0x05, 0x07, 0x11, 0xFE, 0x38, 0x02, + 0x4F, 0x36, 0x01, 0x2A, 0x00, 0xB8, 0x05, 0x0B, 0x4F, 0xFD, 0xFF, 0x43, 0x02, 0x24, 0x00, 0x09, + 0x11, 0xFC, 0xF0, 0x01, 0x7F, 0x9D, 0x02, 0x9B, 0x01, 0x7A, 0x00, 0x3D, 0x24, 0x00, 0x02, 0x13, + 0x19, 0xE8, 0x02, 0x11, 0x08, 0x54, 0x11, 0x0A, 0xF0, 0x17, 0x95, 0xFE, 0xFF, 0xFD, 0xFF, 0xFC, + 0xFF, 0x25, 0x00, 0x26, 0x84, 0x02, 0xBF, 0x00, 0x00, 0x87, 0x00, 0xC4, 0x00, 0x67, 0x00, 0x58, + 0x00, 0x27, 0xF4, 0x01, 0x00, 0x13, 0x19, 0x84, 0x02, 0x5B, 0xF2, 0x00, 0x00, 0x00, 0x82, 0x4C, + 0x00, 0x51, 0xF9, 0xFF, 0xF8, 0xFF, 0xF7, 0x4C, 0x00, 0x13, 0x01, 0x84, 0x04, 0x7F, 0x00, 0x00, + 0x74, 0x01, 0xC4, 0x00, 0x66, 0x4C, 0x00, 0x06, 0x11, 0xF5, 0x24, 0x00, 0x2E, 0xD9, 0x01, 0x98, + 0x00, 0x51, 0xF4, 0xFF, 0xF3, 0xFF, 0xF2, 0x4C, 0x00, 0x13, 0x02, 0x40, 0x04, 0x00, 0x04, 0x19, + 0x3E, 0xC4, 0x00, 0x5C, 0x4C, 0x00, 0x07, 0x40, 0x04, 0xBF, 0xFF, 0xFF, 0xAD, 0x02, 0x05, 0x00, + 0x6C, 0x00, 0x73, 0x00, 0x28, 0x24, 0x00, 0x02, 0x11, 0xEF, 0x74, 0x01, 0x31, 0xAD, 0x02, 0x7C, + 0x24, 0x00, 0x0F, 0x88, 0x04, 0x03, 0x11, 0xEE, 0x74, 0x01, 0x7F, 0xAD, 0x02, 0xF2, 0x00, 0x6C, + 0x00, 0xE9, 0x24, 0x00, 0x02, 0x17, 0x20, 0x8C, 0x02, 0x2B, 0x14, 0x14, 0x72, 0x01, 0x10, 0x03, + 0x01, 0x00, 0x22, 0x06, 0x06, 0xAA, 0x17, 0x01, 0x11, 0x00, 0x45, 0x06, 0x06, 0x06, 0x0A, 0x01, + 0x00, 0x03, 0x12, 0x00, 0x63, 0x0A, 0x10, 0x10, 0x10, 0x10, 0x17, 0x01, 0x00, 0x01, 0x13, 0x00, + 0x83, 0x0A, 0x10, 0x17, 0x1B, 0x1E, 0x21, 0x21, 0x28, 0x01, 0x00, 0x02, 0x13, 0x00, 0x0C, 0x7E, + 0x00, 0x00, 0x13, 0x00, 0x0B, 0xDA, 0x00, 0x10, 0x03, 0x13, 0x00, 0x1C, 0x39, 0x27, 0x00, 0x4B, + 0x17, 0x21, 0x36, 0x4E, 0x14, 0x00, 0x5A, 0x10, 0x1B, 0x2C, 0x44, 0x5F, 0x3B, 0x00, 0x6C, 0x06, + 0x10, 0x1E, 0x32, 0x4E, 0x70, 0x4F, 0x00, 0x4C, 0x21, 0x39, 0x58, 0x7A, 0x76, 0x00, 0x4C, 0x21, + 0x3D, 0x5F, 0x84, 0x63, 0x00, 0x4D, 0x28, 0x40, 0x5F, 0x8B, 0x14, 0x00, 0x2F, 0x44, 0x66, 0x14, + 0x00, 0x15, 0x1F, 0x8E, 0x14, 0x00, 0x4A, 0x04, 0x98, 0x01, 0x1F, 0x06, 0x01, 0x00, 0x00, 0x1F, + 0x0A, 0x01, 0x00, 0x00, 0x1F, 0x17, 0x01, 0x00, 0x00, 0x1F, 0x28, 0x01, 0x00, 0x00, 0x1F, 0x00, + 0x01, 0x00, 0xFF, 0x2D, 0x0A, 0x98, 0x01, 0x01, 0x2D, 0x03, 0x06, 0x70, 0x08, 0x05, 0x01, 0x00, + 0x00, 0x1B, 0x00, 0x02, 0x14, 0x00, 0x04, 0x8C, 0x01, 0x00, 0x30, 0x03, 0x13, 0x0A, 0x16, 0x00, + 0x04, 0x8C, 0x01, 0x9C, 0x21, 0x21, 0x1E, 0x1B, 0x17, 0x10, 0x0A, 0x06, 0x03, 0x65, 0x00, 0x1F, + 0x1B, 0x15, 0x00, 0x00, 0x10, 0x28, 0x15, 0x00, 0x0B, 0x14, 0x00, 0x10, 0x39, 0x15, 0x00, 0x0B, + 0x29, 0x00, 0x4C, 0x4E, 0x36, 0x21, 0x17, 0x29, 0x00, 0x5B, 0x5F, 0x44, 0x2C, 0x1B, 0x10, 0x14, + 0x00, 0x5B, 0x70, 0x4E, 0x32, 0x1E, 0x10, 0x66, 0x00, 0x4C, 0x7A, 0x58, 0x39, 0x21, 0x51, 0x00, + 0x4C, 0x84, 0x5F, 0x3D, 0x21, 0x7A, 0x00, 0x4C, 0x8B, 0x5F, 0x40, 0x28, 0x65, 0x00, 0x3F, 0x8B, + 0x66, 0x44, 0x14, 0x00, 0x12, 0x1F, 0x8E, 0x14, 0x00, 0x43, 0x05, 0x98, 0x01, 0x0E, 0x9C, 0x03, + 0x0F, 0x14, 0x00, 0xFF, 0x6B, 0x0D, 0x60, 0x06, 0x0E, 0x04, 0x02, 0x0F, 0x14, 0x00, 0xFF, 0x63, + 0x0F, 0x30, 0x03, 0x5F, 0x0F, 0x58, 0x07, 0x13, 0x0E, 0x94, 0x07, 0x01, 0xBC, 0x07, 0x1F, 0xF8, + 0xE4, 0x07, 0x00, 0x2E, 0xC5, 0xFB, 0x0C, 0x08, 0x81, 0x8E, 0xB0, 0xC8, 0xDD, 0xEA, 0xF4, 0xF4, + 0xFB, 0x01, 0x00, 0x03, 0x34, 0x08, 0x81, 0x7A, 0x99, 0xAD, 0xBE, 0xCC, 0xD2, 0xD6, 0xDD, 0x01, + 0x00, 0x03, 0x5C, 0x08, 0x72, 0x66, 0x7A, 0x8E, 0x9F, 0xAA, 0xB0, 0xB4, 0x01, 0x00, 0x03, 0x84, + 0x08, 0xD3, 0x4E, 0x5F, 0x70, 0x7A, 0x84, 0x88, 0x8B, 0x8B, 0x8B, 0x8E, 0x8E, 0x8E, 0x8E, 0xAC, + 0x08, 0x72, 0x36, 0x44, 0x4E, 0x58, 0x5F, 0x5F, 0x66, 0x01, 0x00, 0x03, 0xD4, 0x08, 0x72, 0x21, + 0x2C, 0x32, 0x39, 0x3D, 0x40, 0x44, 0x01, 0x00, 0x0F, 0xFC, 0x08, 0x03, 0x0C, 0x24, 0x09, 0x2D, + 0x1B, 0x1B, 0x4C, 0x09, 0x3C, 0x0D, 0x0D, 0x0D, 0x74, 0x09, 0x00, 0x17, 0x00, 0x0E, 0x30, 0x03, + 0x0F, 0x30, 0x07, 0xAB, 0x1F, 0xFB, 0x01, 0x00, 0x00, 0x1F, 0xDD, 0x01, 0x00, 0x00, 0x1F, 0xB4, + 0x01, 0x00, 0x00, 0x1F, 0x8E, 0x01, 0x00, 0x00, 0x1F, 0x66, 0x01, 0x00, 0x00, 0x1F, 0x44, 0x01, + 0x00, 0x00, 0x0F, 0xFC, 0x08, 0x01, 0x1F, 0x1B, 0x01, 0x00, 0x00, 0x1F, 0x0D, 0x01, 0x00, 0x00, + 0x0F, 0x60, 0x09, 0x01, 0x0F, 0xC8, 0x04, 0x66, 0x0F, 0x58, 0x07, 0x15, 0x0F, 0x94, 0x07, 0x00, + 0x1E, 0xF8, 0xBC, 0x07, 0x23, 0xFB, 0xC5, 0xE4, 0x07, 0x02, 0x8A, 0x01, 0x73, 0xF4, 0xF4, 0xEA, + 0xDD, 0xC8, 0xB0, 0x8E, 0x0C, 0x08, 0x02, 0x8A, 0x01, 0x73, 0xD6, 0xD2, 0xCC, 0xBE, 0xAD, 0x99, + 0x7A, 0x34, 0x08, 0x03, 0x8B, 0x01, 0x63, 0xB0, 0xAA, 0x9F, 0x8E, 0x7A, 0x66, 0x5C, 0x08, 0x00, + 0x88, 0x01, 0x93, 0x8B, 0x8B, 0x8B, 0x88, 0x84, 0x7A, 0x70, 0x5F, 0x4E, 0x84, 0x08, 0x03, 0x8B, + 0x01, 0x63, 0x5F, 0x5F, 0x58, 0x4E, 0x44, 0x36, 0xAC, 0x08, 0x03, 0x8B, 0x01, 0x63, 0x40, 0x3D, + 0x39, 0x32, 0x2C, 0x21, 0xD4, 0x08, 0x0F, 0xFC, 0x08, 0x01, 0x1F, 0x1B, 0x24, 0x09, 0x00, 0x2E, + 0x0D, 0x0D, 0x4C, 0x09, 0x03, 0x0D, 0x00, 0x09, 0x74, 0x09, 0x17, 0x20, 0xE4, 0x13, 0x3A, 0x21, + 0x21, 0x18, 0xA0, 0x01, 0x3D, 0x4F, 0xE7, 0xFF, 0x01, 0x00, 0x35, 0xFE, 0xDD, 0x64, 0x20, 0x00, + 0x3F, 0x52, 0xF9, 0xFF, 0x01, 0x00, 0x01, 0x23, 0xFE, 0x66, 0x20, 0x00, 0x1F, 0x50, 0x20, 0x00, + 0x03, 0x33, 0xFF, 0xFF, 0xDB, 0x60, 0x00, 0x6C, 0xF8, 0xFF, 0xFF, 0xFE, 0x99, 0x6D, 0x01, 0x00, + 0x41, 0xA8, 0xFF, 0xFF, 0xFD, 0x20, 0x00, 0x6E, 0x4D, 0xF7, 0xFF, 0xFF, 0xFF, 0x84, 0x0E, 0x29, + 0x22, 0x67, 0xFF, 0xD1, 0x0E, 0x10, 0x4C, 0x20, 0x00, 0x3F, 0x86, 0x01, 0x00, 0x21, 0x00, 0x05, + 0x10, 0x4B, 0x20, 0x00, 0x12, 0x87, 0x13, 0x00, 0x12, 0x10, 0x5E, 0x10, 0x27, 0x16, 0x09, 0x21, + 0x00, 0x62, 0x49, 0xF6, 0xFF, 0xFF, 0xFF, 0x8A, 0x40, 0x00, 0xB5, 0x49, 0xF4, 0xF2, 0x55, 0x00, + 0x00, 0x01, 0x83, 0xFB, 0xE3, 0x21, 0x21, 0x00, 0x63, 0x48, 0xF5, 0xFF, 0xFF, 0xFF, 0x8B, 0x60, + 0x00, 0xB4, 0xA8, 0xFF, 0xFF, 0xF9, 0x56, 0x01, 0x87, 0xFE, 0xFF, 0xFF, 0x70, 0x21, 0x00, 0x10, + 0x31, 0x20, 0x00, 0x14, 0x8D, 0xC9, 0x10, 0xB4, 0x63, 0xFE, 0xFF, 0xFF, 0xF9, 0xAD, 0xFE, 0xFF, + 0xFF, 0xF7, 0x32, 0x21, 0x00, 0x55, 0xB0, 0xFF, 0xFF, 0xFF, 0x8F, 0xE9, 0x10, 0x22, 0x01, 0x7E, + 0xFE, 0x00, 0x25, 0xF8, 0x4E, 0x84, 0x00, 0x48, 0xEB, 0xFF, 0xFF, 0xA5, 0x09, 0x11, 0x11, 0x80, + 0x20, 0x00, 0x16, 0x50, 0xC6, 0x00, 0x4F, 0xEC, 0xFF, 0xFF, 0xA3, 0x21, 0x00, 0x0A, 0x1F, 0xAF, + 0x63, 0x00, 0x0D, 0x19, 0x2F, 0xA5, 0x00, 0x15, 0x60, 0xA5, 0x00, 0x1F, 0x2F, 0xE7, 0x00, 0x03, + 0x15, 0xA9, 0xE7, 0x00, 0x1F, 0x71, 0x29, 0x01, 0x03, 0x22, 0x4A, 0xF3, 0x29, 0x01, 0x3F, 0xFA, + 0xE2, 0x23, 0x6B, 0x01, 0x04, 0x12, 0x0E, 0x9A, 0x05, 0x2F, 0x14, 0x07, 0xAD, 0x01, 0x1A, 0x0F, + 0xEF, 0x01, 0x0B, 0x0F, 0x31, 0x02, 0x13, 0x0F, 0x73, 0x02, 0x08, 0x1F, 0xDA, 0xB5, 0x02, 0x0D, + 0x16, 0x63, 0xF7, 0x02, 0x1F, 0xE5, 0x1F, 0x00, 0x00, 0x6F, 0xE2, 0x69, 0x00, 0x22, 0x22, 0x18, + 0xB2, 0x05, 0x10, 0x4F, 0x4E, 0xE3, 0xE2, 0x47, 0x21, 0x00, 0x0A, 0x5F, 0x55, 0xFB, 0xFF, 0xFF, + 0xE0, 0x21, 0x00, 0x0D, 0x2F, 0xFF, 0xE4, 0x21, 0x00, 0x0D, 0x2F, 0xFB, 0x4F, 0x21, 0x00, 0x0D, + 0x1F, 0x55, 0x21, 0x00, 0x98, 0x4F, 0x48, 0xE3, 0xE2, 0x4E, 0x42, 0x00, 0x0B, 0x1E, 0xE2, 0x4E, + 0x00, 0x0B, 0x63, 0x00, 0x1D, 0xE5, 0x71, 0x00, 0x0C, 0x84, 0x00, 0x1C, 0x4F, 0x94, 0x00, 0x0E, + 0xA5, 0x00, 0x0B, 0x33, 0x00, 0x0E, 0xC6, 0x00, 0x0B, 0x77, 0x00, 0x0E, 0xE7, 0x00, 0x0B, 0xBB, + 0x00, 0x0E, 0x08, 0x01, 0x0B, 0xFF, 0x00, 0x0F, 0x29, 0x01, 0x07, 0x03, 0x1A, 0x00, 0x0F, 0x4A, + 0x01, 0x09, 0x02, 0x1C, 0x00, 0x0F, 0x6B, 0x01, 0x0A, 0x01, 0x23, 0x00, 0x0F, 0x8C, 0x01, 0x0B, + 0x2F, 0x55, 0xFB, 0x21, 0x00, 0x0C, 0x02, 0x23, 0x00, 0x2F, 0xFB, 0x55, 0xFA, 0x02, 0x0B, 0x3F, + 0xE0, 0xDF, 0x4E, 0x18, 0x00, 0x01, 0x22, 0x18, 0x18, 0x38, 0x03, 0x4C, 0x69, 0xF0, 0xBD, 0x17, + 0x1C, 0x00, 0x8B, 0x17, 0xBE, 0xF0, 0x68, 0xEE, 0xFF, 0xFF, 0xD1, 0x19, 0x00, 0x7C, 0x18, 0xD2, + 0xFF, 0xFF, 0xEE, 0xBF, 0xFF, 0x19, 0x00, 0xDB, 0x17, 0xD2, 0xFF, 0xFF, 0xFF, 0xBF, 0x17, 0xD1, + 0xFF, 0xFF, 0xFF, 0xD2, 0x16, 0x17, 0x00, 0x59, 0xD2, 0x17, 0x00, 0x17, 0xD1, 0x32, 0x00, 0x02, + 0x17, 0x00, 0x14, 0x18, 0x0A, 0x00, 0x2A, 0xD1, 0x16, 0x2E, 0x00, 0x01, 0x0F, 0x06, 0x15, 0xD1, + 0x0C, 0x00, 0x08, 0x17, 0x00, 0x16, 0x00, 0x4B, 0x00, 0x19, 0x18, 0x17, 0x00, 0x31, 0x00, 0x00, + 0x16, 0x4B, 0x00, 0x2B, 0x17, 0x17, 0x17, 0x00, 0x03, 0x32, 0x00, 0x1D, 0xD2, 0x17, 0x00, 0x03, + 0x19, 0x00, 0x04, 0x8A, 0x00, 0x0D, 0xCE, 0x00, 0x0C, 0x2E, 0x00, 0x0F, 0x18, 0x00, 0x07, 0x01, + 0x8A, 0x00, 0x0D, 0x13, 0x01, 0x02, 0x2E, 0x00, 0x2C, 0xD2, 0xD2, 0x19, 0x00, 0x03, 0xA1, 0x00, + 0x0C, 0x2C, 0x01, 0x05, 0x14, 0x01, 0x0A, 0x2C, 0x01, 0x07, 0x14, 0x01, 0x08, 0x2C, 0x01, 0x09, + 0x14, 0x01, 0x06, 0x2C, 0x01, 0x0B, 0x14, 0x01, 0x04, 0x4B, 0x00, 0x0D, 0x14, 0x01, 0x03, 0x2C, + 0x01, 0x1D, 0xBD, 0xCE, 0x00, 0x01, 0x32, 0x00, 0x2E, 0xBC, 0xF0, 0x14, 0x01, 0x00, 0x19, 0x00, + 0x4E, 0xF0, 0x6A, 0xED, 0xBB, 0x14, 0x01, 0x34, 0xBB, 0xEC, 0x69, 0xAC, 0x08, 0x26, 0x60, 0x00, + 0xCC, 0x2E, 0x31, 0x04, 0x04, 0x0E, 0x08, 0x00, 0xF0, 0x2D, 0x28, 0xFC, 0xFC, 0x17, 0x18, 0xFF, + 0xFF, 0x05, 0x08, 0xFF, 0xF2, 0x00, 0x00, 0xF8, 0xDF, 0x00, 0x00, 0xE7, 0xCD, 0x00, 0x00, 0xD7, + 0xBA, 0x00, 0x00, 0xC7, 0xA8, 0x00, 0x00, 0xB6, 0x95, 0x00, 0x00, 0xA6, 0x82, 0x00, 0x00, 0x95, + 0x70, 0x00, 0x00, 0x85, 0x5D, 0x00, 0x00, 0x02, 0x02, 0x00, 0x23, 0x9C, 0x9C, 0x05, 0x38, 0xFF, + 0xFF, 0x08, 0x06, 0x05, 0x06, 0x01, 0xC8, 0x15, 0xF3, 0x14, 0xF5, 0xF1, 0x22, 0xFC, 0xCB, 0xF8, + 0xCA, 0x20, 0xFF, 0xA1, 0xF8, 0x9E, 0x20, 0xFF, 0x75, 0xF8, 0x72, 0x20, 0xFF, 0x48, 0xF8, 0x46, + 0x20, 0xFF, 0x1B, 0x04, 0x01, 0x01, 0x04, 0x01, 0x00, 0x00, 0x09, 0x09, 0x0E, 0x72, 0x00, 0xF3, + 0x38, 0x6C, 0xFC, 0x7D, 0x1E, 0xFC, 0xC8, 0x00, 0x00, 0x00, 0x8F, 0xFF, 0x5C, 0x41, 0xFF, 0xA8, + 0x00, 0x00, 0x00, 0xB1, 0xFF, 0x39, 0x64, 0xFF, 0x85, 0x00, 0x00, 0x00, 0xD3, 0xFF, 0x16, 0x87, + 0xFF, 0x62, 0x00, 0x56, 0xFC, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0x0B, 0x3A, 0xB5, 0xFF, 0xE7, + 0xA4, 0xF4, 0xFF, 0xA8, 0x06, 0x00, 0x42, 0xFF, 0xA4, 0x01, 0xF3, 0xF4, 0x01, 0x00, 0x39, 0xBE, + 0xFF, 0xD4, 0x9F, 0xFF, 0xF3, 0x9C, 0x05, 0x5F, 0x58, 0x06, 0xF1, 0x1C, 0x05, 0x02, 0xA9, 0xFF, + 0x43, 0x5B, 0xFF, 0x8F, 0x04, 0x01, 0x00, 0xC7, 0xFF, 0x20, 0x78, 0xFF, 0x6D, 0x00, 0x00, 0x00, + 0xE7, 0xFC, 0x04, 0x98, 0xFF, 0x4E, 0x00, 0x00, 0x08, 0xFF, 0xE0, 0x00, 0xB8, 0xFF, 0x2F, 0x00, + 0x00, 0x25, 0xFF, 0xC0, 0x00, 0xD8, 0xFF, 0x5F, 0x1E, 0x53, 0x08, 0x08, 0x12, 0x00, 0xFE, 0x10, + 0x02, 0x12, 0x44, 0x08, 0x00, 0x11, 0x30, 0x2E, 0x0E, 0xF3, 0x11, 0x30, 0xBC, 0xF7, 0xFF, 0xD4, + 0x43, 0x00, 0x0F, 0xEB, 0xFF, 0xCD, 0xC1, 0xFF, 0xF2, 0x13, 0x58, 0xFF, 0xF4, 0x07, 0x01, 0xD5, + 0xFF, 0x62, 0x71, 0xFF, 0xF5, 0x05, 0x00, 0x9A, 0xCB, 0x56, 0x52, 0x9E, 0x07, 0x50, 0x0C, 0xE6, + 0xFF, 0xFF, 0x8C, 0x0D, 0x08, 0x50, 0x39, 0xF4, 0xFF, 0xFF, 0xA7, 0x8A, 0x19, 0x50, 0x34, 0xE9, + 0xFF, 0xFF, 0x9F, 0x1B, 0x00, 0xF2, 0x1C, 0x23, 0xDD, 0xFF, 0xFF, 0x49, 0x05, 0x32, 0x47, 0x00, + 0x23, 0xF6, 0xFF, 0xA8, 0x6F, 0xFF, 0xD3, 0x00, 0x00, 0xAD, 0xFF, 0xC8, 0x3C, 0xFF, 0xFD, 0x21, + 0x00, 0xB0, 0xFF, 0xAC, 0x03, 0xD1, 0xFF, 0xE2, 0xAD, 0xFE, 0xFF, 0x4C, 0x00, 0x1C, 0xAD, 0xF2, + 0xFF, 0xE4, 0x2C, 0x07, 0x13, 0xB7, 0xAB, 0x07, 0x10, 0x5A, 0x5F, 0x09, 0x13, 0x10, 0x20, 0x01, + 0xA1, 0x43, 0xD0, 0xF9, 0xE3, 0x81, 0x02, 0x00, 0x00, 0xC8, 0xD6, 0x0F, 0x00, 0xB1, 0x09, 0xEE, + 0xFF, 0xB3, 0xEB, 0xFF, 0x54, 0x00, 0x14, 0xFE, 0x92, 0x10, 0x00, 0xB2, 0x3B, 0xFF, 0xC4, 0x00, + 0x6C, 0xFF, 0x99, 0x00, 0x59, 0xFF, 0x4B, 0x8E, 0x07, 0xA7, 0xFF, 0xB1, 0x00, 0x56, 0xFF, 0xAF, + 0x00, 0xA0, 0xF9, 0x0B, 0x10, 0x00, 0x42, 0xAE, 0x01, 0xE6, 0xBD, 0x4F, 0x00, 0xA2, 0x39, 0xFF, + 0xC9, 0x00, 0x72, 0xFF, 0x96, 0x2E, 0xFF, 0x75, 0x10, 0x00, 0xF0, 0x0C, 0x07, 0xEA, 0xFF, 0xAE, + 0xEC, 0xFF, 0x4E, 0x75, 0xFF, 0x2E, 0x0A, 0x68, 0x97, 0x89, 0x37, 0x00, 0x00, 0x3F, 0xD3, 0xFF, + 0xEC, 0x82, 0x01, 0xBC, 0xE6, 0x01, 0xB5, 0xA6, 0x07, 0x12, 0x41, 0x0F, 0x1A, 0xA2, 0x0B, 0xF9, + 0xA0, 0x16, 0xFF, 0xEB, 0x19, 0x7C, 0xFF, 0xA0, 0x36, 0x00, 0xA2, 0x4A, 0xFF, 0x58, 0x38, 0xFF, + 0xC6, 0x00, 0x43, 0xFF, 0xC1, 0x10, 0x00, 0xA2, 0x91, 0xFE, 0x13, 0x3B, 0xFF, 0xC5, 0x00, 0x41, + 0xFF, 0xC3, 0x10, 0x00, 0xA1, 0xD8, 0xCA, 0x00, 0x26, 0xFF, 0xDB, 0x01, 0x55, 0xFF, 0xAF, 0x0F, + 0x00, 0xB1, 0x1F, 0xFF, 0x83, 0x00, 0x02, 0xE0, 0xFF, 0xB2, 0xE1, 0xFF, 0x69, 0x10, 0x00, 0xD4, + 0x65, 0xFF, 0x3C, 0x00, 0x00, 0x36, 0xC7, 0xFA, 0xEB, 0x92, 0x05, 0x0A, 0x0A, 0x08, 0x02, 0x52, + 0x63, 0xDC, 0xF7, 0xBF, 0x38, 0xA3, 0x00, 0x51, 0xF6, 0xB5, 0xFF, 0xEF, 0x0C, 0x12, 0x02, 0x40, + 0x8C, 0x00, 0xCA, 0xFF, 0xDB, 0x33, 0x70, 0x94, 0xFF, 0x87, 0x01, 0xE3, 0xFF, 0x36, 0x3D, 0x20, + 0x50, 0xFF, 0xBE, 0x36, 0xFF, 0xD9, 0x72, 0x01, 0x61, 0x05, 0xDC, 0xFC, 0xC2, 0xFD, 0x40, 0x3C, + 0x00, 0x32, 0x64, 0xFF, 0xFF, 0x46, 0x0B, 0xF2, 0x38, 0x0A, 0xD2, 0xFF, 0xFE, 0x31, 0x00, 0x9A, + 0xB8, 0x17, 0x00, 0x8A, 0xFF, 0xCA, 0xFF, 0xC6, 0x04, 0xF4, 0xFE, 0x09, 0x02, 0xEE, 0xFF, 0x28, + 0xB7, 0xFF, 0x8B, 0xFF, 0xCA, 0x00, 0x21, 0xFF, 0xF4, 0x01, 0x29, 0xFC, 0xFF, 0xFF, 0x67, 0x00, + 0x16, 0xFF, 0xFB, 0x0C, 0x02, 0xC3, 0xFF, 0xFF, 0x48, 0x03, 0x00, 0xBC, 0xFF, 0xC8, 0xCB, 0xFF, + 0xF1, 0xFF, 0xFF, 0x30, 0x00, 0x1B, 0xAF, 0xF7, 0xF0, 0xA8, 0x17, 0x7E, 0xF6, 0x30, 0x05, 0x03, + 0xC4, 0x02, 0xF1, 0x01, 0xD9, 0xFC, 0x0D, 0xDC, 0xE3, 0x00, 0xDC, 0xBB, 0x00, 0xDC, 0x92, 0x00, + 0xDC, 0x69, 0x00, 0x04, 0x75, 0x00, 0x31, 0x04, 0x11, 0x01, 0x1C, 0x09, 0xF1, 0x13, 0x1B, 0xAD, + 0xD4, 0x02, 0xCD, 0xFF, 0xB3, 0x42, 0xFF, 0xE0, 0x05, 0x88, 0xFF, 0x97, 0x00, 0xAF, 0xFF, 0x77, + 0x00, 0xC6, 0xFF, 0x63, 0x00, 0xD6, 0xFF, 0x59, 0x00, 0xDB, 0xFF, 0x55, 0x00, 0xDC, 0xFF, 0x54, + 0x04, 0x00, 0xF0, 0x11, 0xD6, 0xFF, 0x58, 0x00, 0xC7, 0xFF, 0x61, 0x00, 0xB0, 0xFF, 0x75, 0x00, + 0x8A, 0xFF, 0x98, 0x00, 0x42, 0xFF, 0xDF, 0x05, 0x02, 0xCF, 0xFF, 0xB0, 0x00, 0x1D, 0xB1, 0xD7, + 0x05, 0x05, 0x11, 0x00, 0x4C, 0x00, 0x20, 0x71, 0xD5, 0xD1, 0x28, 0xF0, 0x18, 0xF8, 0xFE, 0x39, + 0x00, 0x00, 0x7A, 0xFF, 0xA7, 0x00, 0x00, 0x30, 0xFF, 0xED, 0x01, 0x00, 0x0D, 0xFF, 0xFF, 0x17, + 0x00, 0x01, 0xFB, 0xFF, 0x2D, 0x00, 0x00, 0xF0, 0xFF, 0x3A, 0x00, 0x00, 0xED, 0xFF, 0x41, 0x00, + 0x00, 0xEC, 0xFF, 0x44, 0x0A, 0x00, 0x12, 0x42, 0x14, 0x00, 0x60, 0x01, 0xFA, 0xFF, 0x2E, 0x00, + 0x0C, 0x28, 0x00, 0xA0, 0x32, 0xFF, 0xEE, 0x01, 0x00, 0x7C, 0xFF, 0xA7, 0x00, 0x4F, 0x46, 0x00, + 0x32, 0x73, 0xD9, 0x54, 0xDC, 0x01, 0x23, 0x07, 0x06, 0x5C, 0x1B, 0xF0, 0x17, 0x18, 0xFC, 0x89, + 0x00, 0x00, 0x01, 0x8E, 0x2B, 0xFC, 0x78, 0x72, 0x3D, 0x19, 0xE6, 0xFD, 0xFE, 0xFA, 0xFE, 0x78, + 0x00, 0x04, 0xA1, 0xFF, 0xF6, 0x26, 0x00, 0x00, 0x2C, 0xF8, 0x8F, 0xF6, 0x98, 0x00, 0x00, 0x36, + 0xC4, 0x0F, 0x87, 0xE8, 0x34, 0x53, 0x07, 0x07, 0x08, 0x00, 0x03, 0x02, 0x04, 0x11, 0x7B, 0x07, + 0x00, 0xC1, 0xFF, 0x7C, 0x00, 0x00, 0x58, 0x9C, 0xAC, 0xFF, 0xCD, 0x9C, 0x95, 0x90, 0x63, 0x03, + 0x83, 0xF4, 0x03, 0x04, 0x2C, 0xFF, 0x7F, 0x04, 0x04, 0x1C, 0x00, 0x05, 0x07, 0x00, 0x10, 0x01, + 0x21, 0x01, 0x31, 0x04, 0x03, 0x06, 0xD4, 0x00, 0xF1, 0x02, 0x0C, 0x24, 0x23, 0x54, 0xFF, 0xF4, + 0x54, 0xFF, 0xF4, 0x00, 0x3A, 0xE0, 0x16, 0xE1, 0x6E, 0x02, 0x2C, 0xA4, 0x16, 0x11, 0x03, 0x68, + 0x04, 0x70, 0x08, 0x9C, 0x9C, 0x9C, 0x9C, 0x0A, 0x0C, 0x4C, 0x00, 0x20, 0x10, 0x01, 0xBD, 0x2D, + 0x10, 0x01, 0x78, 0x04, 0x02, 0x76, 0x00, 0x40, 0x08, 0x24, 0x24, 0x02, 0x48, 0x04, 0x00, 0x04, + 0x00, 0x35, 0x07, 0x07, 0x0E, 0xB0, 0x04, 0x20, 0xA1, 0xF2, 0xCA, 0x00, 0x30, 0x02, 0xEA, 0xB6, + 0x0D, 0x00, 0x30, 0x32, 0xFF, 0x6E, 0x07, 0x00, 0x21, 0x79, 0xFF, 0xBA, 0x1A, 0x20, 0xC0, 0xDF, + 0x38, 0x03, 0x31, 0x0D, 0xFB, 0x98, 0x92, 0x08, 0x11, 0xFF, 0xCC, 0x0B, 0x21, 0x96, 0xFB, 0x3B, + 0x00, 0x11, 0xDD, 0xA0, 0x02, 0x21, 0x24, 0xFF, 0x80, 0x19, 0x21, 0x6C, 0xFF, 0x48, 0x0C, 0x20, + 0xB3, 0xEA, 0xC8, 0x01, 0x30, 0x06, 0xF4, 0xA3, 0x0D, 0x00, 0x32, 0x41, 0xFF, 0x5C, 0x60, 0x00, + 0x23, 0x09, 0x08, 0x6C, 0x00, 0xFF, 0x18, 0x09, 0x8D, 0xE6, 0xF9, 0xD2, 0x59, 0x00, 0x00, 0x9B, + 0xFF, 0xEB, 0xB2, 0xFE, 0xFF, 0x48, 0x0B, 0xFA, 0xFF, 0x52, 0x00, 0xA6, 0xFF, 0xB7, 0x34, 0xFF, + 0xFF, 0x27, 0x00, 0x7C, 0xFF, 0xE3, 0x3C, 0xFF, 0xFF, 0x24, 0x00, 0x78, 0xFF, 0xEC, 0x08, 0x00, + 0x15, 0xF2, 0x14, 0x35, 0xFF, 0xFF, 0x29, 0x00, 0x7D, 0xFF, 0xE4, 0x0E, 0xFB, 0xFF, 0x57, 0x00, + 0xAB, 0xFF, 0xB8, 0x00, 0x99, 0xFF, 0xEB, 0xAF, 0xFE, 0xFF, 0x4A, 0x00, 0x09, 0x8E, 0xE9, 0xFD, + 0xD5, 0x5C, 0x00, 0x09, 0x06, 0x0E, 0xF6, 0x03, 0xFF, 0x0A, 0x05, 0x6B, 0xF6, 0xFC, 0x0C, 0x4C, + 0xDC, 0xFF, 0xFF, 0xFF, 0x0C, 0x88, 0xFD, 0xE1, 0xFF, 0xFF, 0x0C, 0x21, 0x0F, 0x50, 0xFF, 0xFF, + 0x0C, 0x00, 0x00, 0x06, 0x00, 0x27, 0x05, 0xD4, 0x00, 0xF1, 0x18, 0x06, 0x85, 0xE1, 0xFA, 0xDB, + 0x74, 0x02, 0x00, 0x89, 0xFF, 0xF6, 0xB1, 0xF9, 0xFF, 0x6D, 0x02, 0xF0, 0xFF, 0x70, 0x00, 0x87, + 0xFF, 0xCE, 0x1C, 0xFF, 0xFF, 0x39, 0x00, 0x64, 0xFF, 0xF3, 0x17, 0xA0, 0xA0, 0x1E, 0x00, 0x8B, + 0xFF, 0xE9, 0xD0, 0x04, 0x20, 0xEA, 0xFF, 0x3E, 0x2A, 0x40, 0x00, 0x8C, 0xFF, 0xFF, 0x8D, 0x03, + 0x40, 0x2B, 0xFB, 0xFF, 0x9D, 0xDB, 0x01, 0x30, 0xC0, 0xFF, 0xE7, 0x2F, 0x05, 0x30, 0x5A, 0xFF, + 0xFF, 0x5B, 0x02, 0x51, 0x0F, 0xE7, 0xFF, 0xB0, 0x01, 0xA0, 0x03, 0x10, 0xF2, 0x49, 0x12, 0x92, + 0x23, 0xFC, 0xFF, 0xD9, 0x9C, 0x9C, 0x9C, 0x60, 0x3C, 0x83, 0x05, 0x15, 0x9C, 0x78, 0x00, 0xF1, + 0x18, 0x10, 0x98, 0xE9, 0xF8, 0xD1, 0x5B, 0x00, 0x00, 0xB8, 0xFF, 0xE4, 0xB5, 0xFE, 0xFF, 0x4F, + 0x25, 0xFF, 0xFF, 0x3A, 0x00, 0xA7, 0xFF, 0xB8, 0x4C, 0xFF, 0xFF, 0x11, 0x00, 0x7D, 0xFF, 0xDC, + 0x25, 0x74, 0x74, 0x06, 0x00, 0x8A, 0xFF, 0xC8, 0xF4, 0x23, 0x11, 0xD8, 0x92, 0x04, 0x40, 0x6B, + 0xFF, 0xFF, 0x94, 0x09, 0x02, 0x51, 0x46, 0xC6, 0xFF, 0xEA, 0x2A, 0x55, 0x02, 0xC0, 0xBA, 0xFF, + 0xA4, 0x1D, 0x5C, 0x5C, 0x05, 0x00, 0x80, 0xFF, 0xD8, 0x4A, 0xEB, 0x02, 0xF7, 0x0B, 0x80, 0xFF, + 0xD8, 0x21, 0xFF, 0xFF, 0x61, 0x06, 0xC0, 0xFF, 0xAA, 0x00, 0xC2, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0x4B, 0x00, 0x17, 0xA4, 0xEE, 0xFD, 0xD7, 0x63, 0x54, 0x06, 0x51, 0x00, 0x1D, 0xFA, 0xFC, 0xDD, + 0x09, 0x00, 0x13, 0x7F, 0x1C, 0x0C, 0x23, 0x03, 0xE3, 0x09, 0x00, 0x32, 0x4B, 0xFF, 0xC7, 0x09, + 0x00, 0x31, 0xB0, 0xFF, 0x75, 0x09, 0x00, 0x41, 0x1A, 0xFC, 0xC8, 0x58, 0x09, 0x00, 0x31, 0x7B, + 0xFF, 0x75, 0x09, 0x00, 0x41, 0x02, 0xE0, 0xFF, 0x22, 0x09, 0x00, 0x41, 0x45, 0xFF, 0xCF, 0x00, + 0x09, 0x00, 0xC2, 0x64, 0xFF, 0xFF, 0xFC, 0xFE, 0xFF, 0xFF, 0xFC, 0x4B, 0x63, 0xFC, 0xFC, 0x09, + 0x00, 0x00, 0x41, 0x00, 0x02, 0x36, 0x00, 0x0F, 0x09, 0x00, 0x00, 0x05, 0x00, 0x01, 0x20, 0xDB, + 0xFC, 0x01, 0x00, 0xC2, 0x63, 0x00, 0xE2, 0xFF, 0xB2, 0xA4, 0xA4, 0xA4, 0x41, 0x00, 0xE6, 0xFF, + 0x73, 0x07, 0x22, 0xE9, 0xFF, 0x90, 0x07, 0x22, 0xED, 0xFF, 0x29, 0x00, 0xF3, 0x08, 0xF0, 0xFF, + 0xAB, 0xF3, 0xEA, 0x89, 0x03, 0x00, 0xF4, 0xFF, 0xEB, 0xB0, 0xFB, 0xFF, 0x69, 0x00, 0xD0, 0xD8, + 0x36, 0x00, 0x8F, 0xFF, 0xC2, 0xDB, 0x04, 0x02, 0xBA, 0x0C, 0xF6, 0x13, 0x5E, 0xFF, 0xE9, 0x26, + 0xFC, 0xFC, 0x27, 0x00, 0x64, 0xFF, 0xD8, 0x0D, 0xFE, 0xFF, 0x4F, 0x00, 0x8A, 0xFF, 0xA8, 0x00, + 0xB5, 0xFF, 0xE7, 0xA8, 0xF8, 0xFF, 0x44, 0x00, 0x18, 0xAE, 0xF0, 0xFD, 0xD9, 0x61, 0x00, 0x01, + 0xE0, 0x02, 0x76, 0xDF, 0xF9, 0xDD, 0x82, 0x04, 0x00, 0x00, 0x6A, 0xFF, 0xF9, 0xAF, 0xF4, 0x9E, + 0x03, 0xF2, 0x07, 0xD8, 0xFF, 0x7B, 0x00, 0x7A, 0xFF, 0xD5, 0x00, 0x0F, 0xFF, 0xFF, 0x4C, 0x00, + 0x31, 0x88, 0x7F, 0x00, 0x22, 0xFF, 0xFF, 0x3D, 0x00, 0x1D, 0x03, 0x51, 0xFF, 0x5F, 0x89, 0x92, + 0x44, 0x09, 0x00, 0x50, 0xFC, 0xFF, 0xFF, 0xFF, 0x5A, 0x09, 0x00, 0x50, 0x93, 0x10, 0xAF, 0xFF, + 0xCD, 0x09, 0x00, 0x70, 0x3C, 0x00, 0x5D, 0xFF, 0xFC, 0x03, 0x23, 0x09, 0x00, 0xF0, 0x04, 0x52, + 0xFF, 0xFF, 0x09, 0x13, 0xFF, 0xFF, 0x42, 0x00, 0x57, 0xFF, 0xF6, 0x01, 0x00, 0xDB, 0xFF, 0x74, + 0x00, 0x86, 0xFF, 0x05, 0x50, 0x68, 0xFF, 0xF5, 0xA9, 0xF7, 0x16, 0x02, 0x51, 0x01, 0x73, 0xE1, + 0xFD, 0xDD, 0xE0, 0x05, 0x13, 0x09, 0xB8, 0x03, 0x11, 0x53, 0xFF, 0x00, 0x80, 0x9E, 0x36, 0xA4, + 0xA4, 0xA4, 0xE8, 0xFF, 0x91, 0x12, 0x00, 0x11, 0xE1, 0x6F, 0x03, 0x30, 0x19, 0xFF, 0xFF, 0x1F, + 0x1F, 0x10, 0x50, 0xB5, 0x04, 0x50, 0x00, 0x00, 0x88, 0xFF, 0xB8, 0x1B, 0x00, 0x30, 0xBF, 0xFF, + 0x82, 0x7F, 0x08, 0x11, 0xF4, 0xC8, 0x06, 0x30, 0x2F, 0xFF, 0xFF, 0xD1, 0x26, 0x30, 0x66, 0xFF, + 0xDE, 0x1B, 0x00, 0x10, 0x9E, 0x15, 0x05, 0x31, 0x00, 0x00, 0xD6, 0x29, 0x10, 0x10, 0x10, 0x45, + 0x02, 0x00, 0x9C, 0x01, 0x29, 0xFB, 0x09, 0x6C, 0x01, 0x60, 0x0C, 0x95, 0xE9, 0xF8, 0xCB, 0x44, + 0x2D, 0x00, 0xF0, 0x1D, 0xE9, 0xBE, 0xFF, 0xF9, 0x22, 0x06, 0xF6, 0xFF, 0x4B, 0x01, 0xD1, 0xFF, + 0x77, 0x1C, 0xFF, 0xFF, 0x23, 0x00, 0xA7, 0xFF, 0x98, 0x0C, 0xFE, 0xFF, 0x33, 0x00, 0xB6, 0xFF, + 0x86, 0x00, 0xB9, 0xFF, 0x8B, 0x1A, 0xF1, 0xFF, 0x39, 0x00, 0x20, 0xF1, 0xFF, 0xFF, 0xFF, 0x92, + 0x7F, 0x00, 0xF0, 0x0F, 0xE7, 0xB9, 0xFF, 0xE8, 0x1F, 0x1A, 0xFD, 0xFF, 0x36, 0x00, 0xB5, 0xFF, + 0x97, 0x4C, 0xFF, 0xFB, 0x03, 0x00, 0x7D, 0xFF, 0xCF, 0x4D, 0xFF, 0xF8, 0x01, 0x00, 0x7A, 0xFF, + 0xD1, 0x28, 0xAC, 0x00, 0xF6, 0x03, 0xA8, 0xFF, 0xAB, 0x01, 0xC2, 0xFF, 0xDC, 0xAE, 0xFF, 0xFF, + 0x48, 0x00, 0x16, 0xA4, 0xEF, 0xFC, 0xD4, 0x5D, 0x78, 0x00, 0x60, 0x05, 0x8A, 0xE5, 0xF8, 0xCA, + 0x44, 0x0C, 0x03, 0xF0, 0x0A, 0xEA, 0xB9, 0xFF, 0xFB, 0x2E, 0x0A, 0xF6, 0xFF, 0x52, 0x00, 0xB8, + 0xFF, 0x9D, 0x34, 0xFF, 0xFF, 0x20, 0x00, 0x84, 0xFF, 0xD2, 0x46, 0xFF, 0xFF, 0x19, 0x38, 0x04, + 0x10, 0x3E, 0x10, 0x04, 0xD0, 0x7C, 0xFF, 0xE4, 0x13, 0xFD, 0xFF, 0x72, 0x0F, 0xBD, 0xFF, 0xE4, + 0x00, 0x9C, 0x5F, 0x07, 0x83, 0xFF, 0xE4, 0x00, 0x05, 0x69, 0x9F, 0x81, 0x8E, 0xE4, 0x01, 0xF1, + 0x17, 0x7E, 0xFF, 0xE1, 0x1A, 0xA0, 0xA0, 0x14, 0x00, 0x8F, 0xFF, 0xCD, 0x10, 0xFE, 0xFF, 0x4C, + 0x04, 0xCA, 0xFF, 0x99, 0x00, 0xB6, 0xFF, 0xFB, 0xE8, 0xFF, 0xFC, 0x31, 0x00, 0x14, 0xA1, 0xEC, + 0xFC, 0xD4, 0x50, 0x00, 0x04, 0x03, 0x09, 0x30, 0x04, 0x95, 0x95, 0x9C, 0x2C, 0xF4, 0xFF, 0x48, + 0x04, 0x04, 0x02, 0x22, 0x05, 0x06, 0x12, 0x00, 0x40, 0x04, 0x03, 0x0C, 0x01, 0xD4, 0x08, 0x86, + 0xF5, 0xFC, 0x47, 0xF8, 0xFF, 0x48, 0x2B, 0x2C, 0xD9, 0x15, 0xF8, 0x06, 0x23, 0x24, 0x0C, 0xF8, + 0xFF, 0x54, 0xF8, 0xFF, 0x54, 0x07, 0xDB, 0x42, 0xA9, 0xCC, 0x08, 0x15, 0x02, 0x00, 0x07, 0x06, + 0x0B, 0x11, 0x24, 0xF0, 0x20, 0x00, 0x00, 0x01, 0x66, 0x89, 0x00, 0x00, 0x16, 0xB2, 0xFF, 0x94, + 0x00, 0x4B, 0xE9, 0xFF, 0xC8, 0x23, 0x5F, 0xFF, 0xFD, 0x82, 0x05, 0x00, 0x7C, 0xFF, 0x94, 0x01, + 0x00, 0x00, 0x4F, 0xFA, 0xFF, 0xA8, 0x10, 0x00, 0x00, 0x30, 0xD4, 0xFF, 0xE0, 0x37, 0x00, 0x00, + 0x09, 0x90, 0xFF, 0x94, 0x35, 0x00, 0x24, 0x45, 0x79, 0x99, 0x22, 0x00, 0x70, 0x06, 0x00, 0xE0, + 0x05, 0x10, 0x03, 0xE0, 0x05, 0x31, 0x9C, 0x31, 0x04, 0x0E, 0x04, 0x11, 0x50, 0xE2, 0x05, 0x2F, + 0x04, 0x02, 0x15, 0x00, 0x02, 0x00, 0x34, 0x00, 0x02, 0x80, 0x00, 0x12, 0x02, 0xFF, 0x05, 0x21, + 0x0C, 0xC4, 0x2E, 0x12, 0xC0, 0x0C, 0xFF, 0xF2, 0x5F, 0x01, 0x00, 0x00, 0x01, 0x6B, 0xF7, 0xFF, + 0xAB, 0xA6, 0x27, 0x41, 0x2A, 0xD0, 0xFF, 0xE6, 0xBA, 0x28, 0xF0, 0x06, 0xED, 0xFF, 0x08, 0x00, + 0x00, 0x47, 0xE8, 0xFF, 0xD1, 0x04, 0x03, 0x8D, 0xFF, 0xFE, 0x89, 0x07, 0x00, 0x0C, 0xFF, 0xE1, + 0x3F, 0x31, 0x00, 0x2A, 0xA2, 0x0F, 0x1E, 0x23, 0x14, 0x08, 0xA0, 0x01, 0xF1, 0x17, 0x2D, 0xB9, + 0xF2, 0xF4, 0xC2, 0x3F, 0x00, 0x09, 0xE7, 0xFF, 0xD3, 0xC5, 0xFF, 0xF9, 0x28, 0x36, 0xFF, 0xFE, + 0x0E, 0x01, 0xC9, 0xFF, 0x87, 0x2A, 0xFF, 0xF7, 0x07, 0x00, 0xA7, 0xFF, 0xA6, 0x05, 0x33, 0x06, + 0x00, 0x01, 0xD6, 0xFF, 0xE5, 0x17, 0x40, 0x3F, 0xFF, 0xFF, 0x3B, 0x4A, 0x06, 0x30, 0xD8, 0xFF, + 0xAD, 0x35, 0x05, 0x41, 0xB6, 0xFF, 0xD5, 0x10, 0x66, 0x06, 0x11, 0xD8, 0x31, 0x27, 0x12, 0x84, + 0xEF, 0x00, 0x32, 0x00, 0x47, 0x88, 0x29, 0x10, 0x22, 0x16, 0x24, 0x48, 0x27, 0x37, 0x98, 0xFF, + 0xB0, 0x08, 0x00, 0x22, 0x10, 0x10, 0xD4, 0x07, 0x01, 0x85, 0x00, 0x82, 0x3C, 0x9D, 0xD4, 0xF6, + 0xF6, 0xD2, 0x89, 0x15, 0x0E, 0x00, 0xB1, 0x0D, 0xA0, 0xFF, 0xFF, 0xD5, 0xAB, 0xB1, 0xE6, 0xFF, + 0xED, 0x3B, 0xA2, 0x00, 0x40, 0xC4, 0xFF, 0xC4, 0x29, 0x2E, 0x01, 0x41, 0x6D, 0xFC, 0xEB, 0x18, + 0xAA, 0x04, 0x13, 0xB7, 0x1A, 0x15, 0x10, 0x76, 0x98, 0x02, 0xF0, 0x7D, 0x15, 0xF6, 0xF6, 0x18, + 0x00, 0x24, 0xB7, 0xF4, 0xA0, 0xFC, 0xAF, 0x05, 0xE3, 0xEC, 0x02, 0x00, 0x6D, 0xFF, 0x92, 0x00, + 0x15, 0xE6, 0xFF, 0xCF, 0xD5, 0xFF, 0x8B, 0x00, 0x96, 0xFF, 0x23, 0x00, 0xAD, 0xFF, 0x3F, 0x00, + 0x93, 0xFF, 0xA9, 0x02, 0x92, 0xFF, 0x65, 0x00, 0x70, 0xFF, 0x37, 0x00, 0xDA, 0xFF, 0x0D, 0x07, + 0xF2, 0xFF, 0x1E, 0x00, 0xB6, 0xFF, 0x3F, 0x00, 0x6C, 0xFF, 0x34, 0x01, 0xFA, 0xEA, 0x00, 0x35, + 0xFF, 0xDD, 0x00, 0x00, 0xDA, 0xFF, 0x19, 0x00, 0x8D, 0xFF, 0x1A, 0x06, 0xFF, 0xDF, 0x00, 0x4B, + 0xFF, 0xCD, 0x00, 0x05, 0xFA, 0xF3, 0x01, 0x02, 0xD6, 0xDE, 0x01, 0x01, 0xFA, 0xEB, 0x00, 0x38, + 0xFF, 0xF7, 0x33, 0x7C, 0xFF, 0xD9, 0x00, 0x6C, 0xFF, 0x79, 0x00, 0x00, 0xDE, 0xFF, 0x14, 0x06, + 0xE2, 0xFF, 0xFF, 0xF5, 0xF6, 0xFA, 0xC3, 0xFF, 0xD5, 0x0A, 0x00, 0x00, 0x9D, 0xFF, 0x64, 0x00, + 0x30, 0xBF, 0xD7, 0x57, 0x6C, 0xF2, 0xF4, 0xA6, 0xBD, 0x0C, 0x32, 0x3A, 0xFF, 0xE1, 0x70, 0x29, + 0x04, 0x57, 0x22, 0x41, 0x9F, 0xFF, 0xD4, 0x37, 0x10, 0x00, 0x13, 0x0C, 0x65, 0x06, 0x94, 0x9B, + 0xFF, 0xFF, 0xDA, 0xAE, 0xA4, 0xBC, 0xE8, 0x9A, 0xFF, 0x00, 0xA8, 0x3B, 0xA0, 0xD8, 0xFA, 0xFC, + 0xE0, 0xBA, 0x68, 0x00, 0x00, 0xF0, 0x0B, 0x41, 0x06, 0xF5, 0xFC, 0xD2, 0x09, 0x00, 0x53, 0x31, + 0xFF, 0xFF, 0xFD, 0x0B, 0xBE, 0x09, 0x01, 0xD4, 0x03, 0x41, 0x00, 0x97, 0xFF, 0xEE, 0xB1, 0x0B, + 0x41, 0x00, 0xCA, 0xFF, 0xA0, 0x6B, 0x0A, 0x61, 0x06, 0xF9, 0xFF, 0x4D, 0xFF, 0xD3, 0x2C, 0x00, + 0x50, 0xEC, 0x0E, 0xFF, 0xFD, 0x0A, 0x2C, 0x00, 0x50, 0xC3, 0x00, 0xE4, 0xFF, 0x39, 0x2C, 0x00, + 0x50, 0x99, 0x00, 0xBA, 0xFF, 0x6C, 0x2C, 0x00, 0x00, 0xB8, 0x04, 0x10, 0x9F, 0x2C, 0x00, 0x50, + 0xB9, 0xA4, 0xC4, 0xFF, 0xD2, 0x58, 0x00, 0xF1, 0x09, 0x1B, 0x00, 0x3C, 0xFF, 0xFC, 0x09, 0x64, + 0xFF, 0xF0, 0x01, 0x00, 0x11, 0xFF, 0xFF, 0x38, 0x97, 0xFF, 0xC5, 0x00, 0x00, 0x00, 0xE6, 0xFF, + 0x6B, 0x30, 0x04, 0x01, 0xC0, 0x00, 0xF0, 0x09, 0xF5, 0xFC, 0xFC, 0xFA, 0xE5, 0xA4, 0x21, 0x00, + 0xF8, 0xFF, 0xD5, 0xAB, 0xE4, 0xFF, 0xE0, 0x0A, 0xF8, 0xFF, 0x88, 0x00, 0x0D, 0xED, 0xFF, 0x4D, + 0x08, 0x00, 0x41, 0x00, 0xC5, 0xFF, 0x6D, 0x08, 0x00, 0xC0, 0xD8, 0xFF, 0x5B, 0xF8, 0xFF, 0x88, + 0x03, 0x52, 0xFF, 0xF3, 0x18, 0xF8, 0xB7, 0x02, 0x20, 0xE9, 0x3C, 0x30, 0x00, 0x50, 0xA9, 0xE5, + 0xFF, 0xCF, 0x17, 0x20, 0x00, 0x41, 0x0A, 0xE2, 0xFF, 0x8E, 0x28, 0x00, 0x31, 0x9F, 0xFF, 0xCB, + 0x08, 0x00, 0x30, 0x99, 0xFF, 0xD2, 0x08, 0x00, 0xC0, 0x03, 0xD5, 0xFF, 0xA9, 0xF8, 0xFF, 0xD2, + 0x9F, 0xD6, 0xFF, 0xFE, 0x3E, 0x38, 0x00, 0x36, 0xF7, 0xC8, 0x4B, 0x00, 0x01, 0x70, 0x04, 0x7A, + 0xD8, 0xF8, 0xED, 0xB2, 0x25, 0x50, 0x02, 0xF0, 0x04, 0xFA, 0xAE, 0xDA, 0xFF, 0xE0, 0x07, 0x03, + 0xEE, 0xFF, 0x86, 0x00, 0x16, 0xFF, 0xFF, 0x48, 0x20, 0xFF, 0xFF, 0x5D, 0x23, 0x26, 0xB1, 0x6B, + 0x2F, 0xFF, 0xFF, 0x58, 0x00, 0x00, 0xF8, 0xFF, 0x70, 0x30, 0x09, 0x00, 0x32, 0x10, 0x10, 0x07, + 0x09, 0x00, 0x00, 0x96, 0x0C, 0x0A, 0x09, 0x00, 0x35, 0x33, 0x34, 0x17, 0x2D, 0x00, 0xFA, 0x15, + 0x21, 0xFF, 0xFF, 0x5E, 0x00, 0x01, 0xFC, 0xFF, 0x69, 0x03, 0xEF, 0xFF, 0x89, 0x00, 0x1B, 0xFF, + 0xFF, 0x43, 0x00, 0x83, 0xFF, 0xFA, 0xAB, 0xD5, 0xFF, 0xDB, 0x04, 0x00, 0x03, 0x7B, 0xDF, 0xFC, + 0xF2, 0xB5, 0x25, 0x00, 0x00, 0x01, 0x31, 0xE4, 0xA7, 0x23, 0xD0, 0x00, 0x40, 0xE8, 0xFF, 0xE6, + 0x0D, 0xB8, 0x00, 0x40, 0x25, 0xFF, 0xFF, 0x63, 0x08, 0x00, 0x41, 0x01, 0xF8, 0xFF, 0x8C, 0xD0, + 0x00, 0x31, 0xF5, 0xFF, 0x98, 0x08, 0x00, 0x1F, 0xF4, 0x08, 0x00, 0x0C, 0x03, 0x28, 0x00, 0x40, + 0x01, 0xFC, 0xFF, 0x88, 0x08, 0x00, 0x20, 0x2C, 0xFF, 0x38, 0x01, 0x60, 0xD2, 0xA2, 0xE6, 0xFF, + 0xE0, 0x09, 0x00, 0x01, 0x65, 0xE9, 0xAC, 0x21, 0x00, 0x07, 0x06, 0x78, 0x00, 0x91, 0xFC, 0xFC, + 0xC9, 0xF8, 0xFF, 0xD5, 0xA4, 0xA4, 0x83, 0x3C, 0x00, 0x1F, 0x00, 0x06, 0x00, 0x01, 0x41, 0xFF, + 0xFC, 0xFC, 0x1C, 0x24, 0x00, 0x1F, 0x12, 0x24, 0x00, 0x07, 0x41, 0xD2, 0x9C, 0x9C, 0x82, 0x96, + 0x01, 0x19, 0xD4, 0x5C, 0x00, 0x11, 0xAE, 0x38, 0x00, 0x1F, 0x71, 0x5C, 0x00, 0x0A, 0x11, 0x0C, + 0x24, 0x00, 0x1E, 0x08, 0x24, 0x00, 0x0E, 0x06, 0x00, 0x05, 0xB8, 0x01, 0x70, 0x03, 0x77, 0xD8, + 0xF9, 0xEE, 0xB3, 0x2C, 0xA8, 0x03, 0xF0, 0x02, 0xFA, 0xB1, 0xD6, 0xFF, 0xEB, 0x0F, 0x02, 0xEC, + 0xFF, 0x87, 0x00, 0x0C, 0xF9, 0xFF, 0x5E, 0x1D, 0xFF, 0xD6, 0x06, 0x41, 0xE0, 0xFF, 0x85, 0x2D, + 0x8B, 0x01, 0x3F, 0x94, 0xAC, 0x5F, 0xAF, 0x01, 0x03, 0x50, 0x20, 0xFC, 0xFC, 0xFC, 0x9A, 0x09, + 0x00, 0x52, 0x15, 0xA4, 0xDF, 0xFF, 0x9C, 0x2D, 0x00, 0xF3, 0x1B, 0xA5, 0xFF, 0x9C, 0x19, 0xFF, + 0xFF, 0x61, 0x00, 0x00, 0xAF, 0xFF, 0x9C, 0x01, 0xE6, 0xFF, 0x90, 0x00, 0x05, 0xE2, 0xFF, 0x9C, + 0x00, 0x80, 0xFF, 0xFC, 0xAF, 0xCB, 0xF6, 0xFF, 0x9C, 0x00, 0x05, 0x82, 0xE4, 0xFD, 0xD0, 0x49, + 0xFF, 0x9C, 0x00, 0x00, 0x0A, 0xB8, 0x01, 0xFF, 0x01, 0xF1, 0xFC, 0x8E, 0x00, 0x00, 0xA2, 0xFC, + 0xD9, 0xF4, 0xFF, 0x90, 0x00, 0x00, 0xA4, 0xFF, 0xDC, 0x08, 0x00, 0x0F, 0x40, 0xFF, 0xFC, 0xFC, + 0xFF, 0x08, 0x00, 0x4E, 0xD8, 0xA4, 0xA4, 0xDF, 0x30, 0x00, 0x0F, 0x08, 0x00, 0x0D, 0x22, 0x05, + 0x03, 0x78, 0x00, 0x6F, 0xE1, 0xFC, 0x92, 0xE4, 0xFF, 0x94, 0x03, 0x00, 0x11, 0x44, 0x00, 0x00, + 0x06, 0x05, 0xEC, 0x03, 0x30, 0xFC, 0xFC, 0x7E, 0x45, 0x26, 0x15, 0x7F, 0x05, 0x00, 0x1A, 0x7E, + 0x05, 0x00, 0x15, 0x7D, 0x05, 0x00, 0x12, 0x7C, 0x05, 0x00, 0x40, 0x02, 0xFF, 0xFF, 0x7B, 0xFE, + 0x07, 0xA9, 0x6C, 0xA9, 0xF4, 0xFF, 0xFF, 0x30, 0xD8, 0xFD, 0xE3, 0x70, 0xB4, 0x02, 0x51, 0x86, + 0x00, 0x0B, 0xEB, 0xFC, 0x9C, 0x03, 0xB0, 0x6A, 0xFF, 0xF4, 0x10, 0xF8, 0xFF, 0x88, 0x02, 0xDB, + 0xFF, 0x98, 0xAA, 0x01, 0x40, 0x4F, 0xFF, 0xFF, 0x2D, 0x08, 0x00, 0x30, 0xC1, 0xFF, 0xC0, 0xBA, + 0x01, 0x11, 0xBC, 0xA8, 0x0A, 0x01, 0x1E, 0x02, 0x10, 0x1E, 0x08, 0x00, 0x20, 0xEF, 0xEF, 0x5E, + 0x0A, 0x70, 0xF8, 0xFF, 0x91, 0x98, 0xFF, 0xD6, 0x01, 0x28, 0x00, 0x40, 0x3B, 0xFF, 0xFF, 0x36, + 0x08, 0x00, 0x41, 0x01, 0xDD, 0xFF, 0x96, 0xEA, 0x01, 0x43, 0x81, 0xFF, 0xEF, 0x08, 0x04, 0x03, + 0x11, 0x57, 0xFA, 0x01, 0x36, 0xC7, 0xFF, 0xB8, 0x58, 0x02, 0x1E, 0x86, 0x28, 0x02, 0x0F, 0x06, + 0x00, 0x22, 0x42, 0xDF, 0xB8, 0xB8, 0x99, 0xB4, 0x02, 0x22, 0x0C, 0x0A, 0x5C, 0x00, 0xF0, 0x09, + 0xC4, 0xFC, 0xE2, 0x00, 0x00, 0x00, 0x42, 0xFC, 0xFC, 0x5D, 0xCB, 0xFF, 0xFF, 0x1A, 0x00, 0x00, + 0x78, 0xFF, 0xFF, 0x62, 0xCF, 0xFF, 0xFF, 0x4D, 0x2D, 0x10, 0x61, 0xFF, 0x66, 0xD4, 0xFF, 0xFF, + 0x81, 0xAA, 0x15, 0xF5, 0x56, 0x6B, 0xD8, 0xFF, 0xF4, 0xB5, 0x00, 0x18, 0xFF, 0xF6, 0xFF, 0x6F, + 0xDC, 0xFF, 0xBF, 0xE9, 0x01, 0x4D, 0xFF, 0xC0, 0xFF, 0x73, 0xE0, 0xFF, 0x85, 0xFF, 0x1D, 0x82, + 0xFF, 0x88, 0xFF, 0x77, 0xE5, 0xFF, 0x4C, 0xFF, 0x51, 0xB7, 0xE4, 0x6B, 0xFF, 0x7C, 0xE9, 0xFF, + 0x14, 0xFF, 0x86, 0xED, 0xAF, 0x66, 0xFF, 0x80, 0xED, 0xFE, 0x00, 0xDC, 0xDA, 0xFF, 0x7A, 0x61, + 0xFF, 0x84, 0xF2, 0xFA, 0x00, 0xA7, 0xFF, 0xFF, 0x45, 0x5D, 0xFF, 0x89, 0xF6, 0xF6, 0x00, 0x72, + 0xFF, 0xFF, 0x11, 0x58, 0xFF, 0x8D, 0xFA, 0xF2, 0x00, 0x3D, 0xFF, 0xDB, 0x00, 0x54, 0xFF, 0x91, + 0xFE, 0xEE, 0x00, 0x0B, 0xFD, 0xA6, 0x00, 0x4F, 0xFF, 0x96, 0x68, 0x01, 0xA0, 0xEA, 0x09, 0x00, + 0x00, 0xDD, 0xFC, 0x34, 0xF8, 0xFF, 0x62, 0xD8, 0x02, 0x52, 0x34, 0xF8, 0xFF, 0xCF, 0x01, 0x08, + 0x00, 0x23, 0xFF, 0x3B, 0x08, 0x00, 0x12, 0xA8, 0x08, 0x00, 0x31, 0xFC, 0xFB, 0x1A, 0x08, 0x00, + 0x31, 0xAD, 0xFF, 0x82, 0x08, 0x00, 0x40, 0x47, 0xFE, 0xE9, 0xE7, 0x08, 0x00, 0x41, 0x28, 0xB3, + 0xFF, 0xFF, 0x08, 0x00, 0x13, 0x4A, 0x08, 0x00, 0x22, 0x03, 0xDF, 0x08, 0x00, 0x23, 0x00, 0x78, + 0x08, 0x00, 0x22, 0x16, 0xFA, 0x08, 0x00, 0x55, 0x00, 0xA5, 0xFF, 0x34, 0x0A, 0x1C, 0x05, 0x60, + 0x79, 0xD7, 0xF9, 0xEE, 0xB5, 0x2E, 0x1C, 0x05, 0xF0, 0x04, 0xFB, 0xB1, 0xD5, 0xFF, 0xF0, 0x18, + 0x03, 0xF0, 0xFF, 0x87, 0x00, 0x0B, 0xF2, 0xFF, 0x79, 0x21, 0xFF, 0xFF, 0x5F, 0x10, 0x12, 0x21, + 0xAB, 0x2F, 0x6D, 0x03, 0x4F, 0xD0, 0xFF, 0xBC, 0x30, 0x09, 0x00, 0x18, 0x20, 0xBB, 0x1F, 0x1C, + 0x05, 0xFA, 0x0F, 0x00, 0xD3, 0xFF, 0xAA, 0x02, 0xEC, 0xFF, 0x85, 0x00, 0x09, 0xF2, 0xFF, 0x79, + 0x00, 0x82, 0xFF, 0xF9, 0xA9, 0xCE, 0xFF, 0xF0, 0x18, 0x00, 0x04, 0x7A, 0xDA, 0xFC, 0xF2, 0xBE, + 0x31, 0x1C, 0x05, 0x40, 0xFC, 0xF3, 0xBA, 0x2C, 0x1C, 0x05, 0x50, 0xA8, 0xDD, 0xFF, 0xE8, 0x0E, + 0xBE, 0x01, 0x41, 0x10, 0xF8, 0xFF, 0x59, 0xC6, 0x01, 0x31, 0xDC, 0xFF, 0x7E, 0x08, 0x00, 0x30, + 0xE5, 0xFF, 0x7A, 0x80, 0x02, 0x41, 0x4C, 0xFF, 0xFF, 0x48, 0xD2, 0x01, 0x30, 0xFF, 0xBA, 0x02, + 0x56, 0x04, 0x33, 0x96, 0x57, 0x04, 0xEE, 0x01, 0x1F, 0x00, 0x08, 0x00, 0x16, 0x23, 0x0A, 0x09, + 0x34, 0x08, 0x0C, 0x00, 0x01, 0x14, 0x17, 0x00, 0x01, 0x1F, 0x78, 0x00, 0x01, 0x3D, 0x13, 0x78, + 0x00, 0x01, 0x11, 0xF1, 0x00, 0x01, 0x42, 0xFD, 0xFF, 0xFA, 0x3A, 0x82, 0x01, 0x32, 0x90, 0xFF, + 0xAA, 0x32, 0x10, 0x43, 0x04, 0xAC, 0xF7, 0x09, 0xF9, 0x04, 0x2A, 0x4D, 0x00, 0x1C, 0x01, 0x40, + 0xF9, 0xE3, 0xA6, 0x27, 0x1C, 0x01, 0x50, 0xAA, 0xE8, 0xFF, 0xEB, 0x15, 0xC4, 0x00, 0x41, 0x16, + 0xFB, 0xFF, 0x69, 0xCC, 0x00, 0x12, 0xD6, 0x38, 0x06, 0xC2, 0x01, 0xE5, 0xFF, 0x82, 0xF8, 0xFF, + 0x88, 0x07, 0x64, 0xFF, 0xFF, 0x50, 0x1C, 0x01, 0x90, 0xB6, 0x04, 0xF8, 0xFF, 0xD5, 0xC0, 0xFF, + 0xFA, 0x0A, 0xF4, 0x00, 0x41, 0x20, 0xFF, 0xFF, 0x45, 0xFC, 0x00, 0x31, 0xDE, 0xFF, 0x8D, 0x08, + 0x00, 0x31, 0x9C, 0xFF, 0xD5, 0x08, 0x00, 0x40, 0x5A, 0xFF, 0xFF, 0x1D, 0x08, 0x00, 0x43, 0x19, + 0xFF, 0xFF, 0x64, 0x50, 0x00, 0x15, 0xAC, 0xC8, 0x09, 0xF0, 0x01, 0x16, 0xA1, 0xEB, 0xF7, 0xCC, + 0x49, 0x00, 0x01, 0xC8, 0xFF, 0xDA, 0xB4, 0xFF, 0xFA, 0x27, 0x2F, 0xDA, 0x03, 0x40, 0xAE, 0xFF, + 0x87, 0x4A, 0x68, 0x0B, 0x70, 0x76, 0xD2, 0x72, 0x2D, 0xFF, 0xFF, 0xB1, 0x22, 0x0A, 0x50, 0x02, + 0xD0, 0xFF, 0xFF, 0xB6, 0x92, 0x08, 0x50, 0x26, 0xE8, 0xFF, 0xFF, 0xCA, 0x24, 0x1F, 0x50, 0x23, + 0xDB, 0xFF, 0xFF, 0xC9, 0x5A, 0x09, 0xF3, 0x1F, 0x16, 0xCC, 0xFF, 0xFF, 0x74, 0x02, 0x2A, 0x52, + 0x00, 0x11, 0xE5, 0xFF, 0xD0, 0x44, 0xFF, 0xF5, 0x03, 0x00, 0x89, 0xFF, 0xED, 0x15, 0xFD, 0xFF, + 0x43, 0x00, 0x88, 0xFF, 0xD1, 0x00, 0xA1, 0xFF, 0xEF, 0xA8, 0xF5, 0xFF, 0x67, 0x00, 0x09, 0x8B, + 0xE4, 0xFE, 0xDC, 0x6D, 0x01, 0x07, 0x78, 0x00, 0x11, 0xED, 0xC4, 0x0C, 0xD3, 0xFC, 0x1C, 0x9A, + 0xA4, 0xDE, 0xFF, 0xF5, 0xA4, 0xA4, 0x12, 0x00, 0x00, 0xA0, 0xEE, 0x0D, 0x0F, 0x08, 0x00, 0x43, + 0x04, 0x0C, 0x03, 0xA1, 0x14, 0xFC, 0xFC, 0x5B, 0x00, 0x00, 0xC5, 0xFC, 0xA6, 0x14, 0xC4, 0x01, + 0x3F, 0xC8, 0xFF, 0xA8, 0x09, 0x00, 0x2C, 0x11, 0x13, 0x09, 0x00, 0xF7, 0x17, 0xC9, 0xFF, 0xA6, + 0x06, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0xCF, 0xFF, 0x96, 0x00, 0xD6, 0xFF, 0x95, 0x00, 0x0D, 0xF5, + 0xFF, 0x68, 0x00, 0x6D, 0xFF, 0xFE, 0xAE, 0xD3, 0xFF, 0xED, 0x14, 0x00, 0x02, 0x74, 0xDB, 0xFB, + 0xF3, 0xBC, 0x32, 0xF8, 0x06, 0xF0, 0x1B, 0x81, 0xFC, 0xB1, 0x00, 0x00, 0x01, 0xEE, 0xFC, 0x4E, + 0x51, 0xFF, 0xE2, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0x1C, 0x1E, 0xFF, 0xFF, 0x13, 0x00, 0x4D, 0xFF, + 0xE9, 0x01, 0x01, 0xEC, 0xFF, 0x42, 0x00, 0x7A, 0xFF, 0xB6, 0x00, 0x00, 0xB9, 0xFF, 0x71, 0x00, + 0xA7, 0xC0, 0x0D, 0xF0, 0x01, 0x86, 0xFF, 0xA1, 0x00, 0xD4, 0xFF, 0x4F, 0x00, 0x00, 0x53, 0xFF, + 0xD0, 0x07, 0xFC, 0xFF, 0x1C, 0x32, 0x00, 0x40, 0xFA, 0x35, 0xFF, 0xE9, 0xCC, 0x0B, 0x41, 0xED, + 0xFF, 0x8B, 0xFF, 0xBE, 0x11, 0x31, 0xBA, 0xFF, 0xE5, 0xEC, 0x0D, 0x51, 0x00, 0x87, 0xFF, 0xFF, + 0xFF, 0x4C, 0x0B, 0x30, 0x54, 0xFF, 0xFF, 0x2C, 0x00, 0x41, 0x00, 0x00, 0x21, 0xFF, 0x2C, 0x00, + 0x00, 0x72, 0x00, 0x02, 0x2C, 0x00, 0x32, 0x00, 0x0C, 0x0C, 0x88, 0x00, 0xF0, 0x0E, 0x5E, 0xFC, + 0xB9, 0x00, 0x00, 0xCE, 0xFB, 0x0B, 0x00, 0x7B, 0xFC, 0x90, 0x3B, 0xFF, 0xDB, 0x00, 0x03, 0xF8, + 0xFF, 0x33, 0x00, 0x9C, 0xFF, 0x6E, 0x17, 0xFF, 0xFA, 0x02, 0x24, 0x39, 0x09, 0xF0, 0x15, 0xBC, + 0xFF, 0x4A, 0x01, 0xF3, 0xFF, 0x1B, 0x4E, 0xFF, 0xFF, 0x88, 0x00, 0xDC, 0xFF, 0x26, 0x00, 0xCF, + 0xFF, 0x3B, 0x77, 0xFF, 0xFC, 0xB2, 0x02, 0xFA, 0xFD, 0x06, 0x00, 0xAB, 0xFF, 0x5A, 0xA1, 0xFA, + 0xC2, 0xDD, 0x1B, 0x4F, 0x0E, 0xF0, 0x07, 0x87, 0xFF, 0x7A, 0xCB, 0xD3, 0x94, 0xFE, 0x45, 0xFF, + 0xBA, 0x00, 0x00, 0x63, 0xFF, 0x9B, 0xF4, 0xA8, 0x69, 0xFF, 0x8C, 0xFF, 0x96, 0xFD, 0x0B, 0x90, + 0xD8, 0xFF, 0x7E, 0x3F, 0xFF, 0xD7, 0xFF, 0x72, 0x00, 0x3D, 0x09, 0x50, 0xFF, 0x53, 0x14, 0xFF, + 0xFF, 0x35, 0x16, 0x20, 0x02, 0xF6, 0xC2, 0x11, 0x41, 0xEA, 0xFF, 0xFF, 0x2A, 0x91, 0x16, 0x60, + 0xFA, 0x05, 0x00, 0xBF, 0xFF, 0xFE, 0x24, 0x03, 0x60, 0xAF, 0xFF, 0xD4, 0x00, 0x00, 0x95, 0x16, + 0x01, 0x50, 0x00, 0x00, 0x8B, 0xFF, 0xA9, 0x6D, 0x0F, 0x10, 0xBE, 0x70, 0x47, 0x02, 0xB0, 0x00, + 0x10, 0x8B, 0x15, 0x3B, 0xA0, 0x40, 0xFC, 0xE7, 0x06, 0x27, 0xFF, 0xFF, 0x35, 0x00, 0x9B, 0x4E, + 0x07, 0x70, 0xBD, 0xFF, 0x9F, 0x07, 0xEF, 0xFF, 0x30, 0xEF, 0x00, 0x40, 0xF7, 0x61, 0xFF, 0xCF, + 0x70, 0x0D, 0x32, 0xE7, 0xFF, 0xF4, 0xCB, 0x12, 0x41, 0x83, 0xFF, 0xFF, 0xFA, 0xD1, 0x21, 0x21, + 0x2B, 0xFF, 0x7D, 0x0C, 0x01, 0xA5, 0x1D, 0x11, 0xA8, 0x09, 0x00, 0x40, 0xC7, 0xFF, 0xFF, 0xFA, + 0x2F, 0x10, 0x40, 0x27, 0xFF, 0xF3, 0xE1, 0xA9, 0x0B, 0xF0, 0x0F, 0x00, 0x86, 0xFF, 0x9F, 0x78, + 0xFF, 0xDF, 0x03, 0x00, 0x03, 0xE4, 0xFF, 0x43, 0x16, 0xF9, 0xFF, 0x4A, 0x00, 0x45, 0xFF, 0xE4, + 0x03, 0x00, 0xA4, 0xFF, 0xB3, 0x00, 0xA5, 0xFF, 0x8A, 0xA9, 0x0B, 0x26, 0xFE, 0x1F, 0x88, 0x00, + 0xF0, 0x09, 0xAD, 0xFC, 0xA4, 0x00, 0x00, 0x50, 0xFC, 0xF0, 0x08, 0x5E, 0xFF, 0xEF, 0x05, 0x00, + 0x9B, 0xFF, 0xAA, 0x00, 0x11, 0xFB, 0xFF, 0x41, 0x01, 0xE5, 0x7D, 0x08, 0x70, 0xB8, 0xFF, 0x8F, + 0x30, 0xFF, 0xF9, 0x0E, 0x90, 0x15, 0x40, 0xDE, 0x7B, 0xFF, 0xB4, 0x23, 0x03, 0x51, 0xFD, 0xFF, + 0xE4, 0xFF, 0x62, 0x55, 0x13, 0x31, 0xFF, 0xFF, 0xFD, 0x91, 0x00, 0x42, 0x6D, 0xFF, 0xFF, 0xBE, + 0x53, 0x11, 0x03, 0xC2, 0x1E, 0x21, 0x00, 0x08, 0x4A, 0x02, 0x0F, 0x09, 0x00, 0x14, 0x04, 0xC4, + 0x13, 0x11, 0x38, 0x47, 0x03, 0xD1, 0xCD, 0x24, 0xA4, 0xA4, 0xA4, 0xEF, 0xFF, 0xB2, 0x00, 0x00, + 0x00, 0x11, 0xFA, 0x22, 0x00, 0x30, 0x61, 0xFF, 0xF7, 0x21, 0x00, 0x11, 0xB7, 0xF6, 0x00, 0x40, + 0x13, 0xFB, 0xFF, 0x56, 0x0A, 0x16, 0x31, 0xFF, 0xF4, 0x0B, 0x28, 0x02, 0x00, 0xF7, 0x0F, 0x21, + 0x15, 0xFC, 0xD2, 0x13, 0x30, 0x66, 0xFF, 0xF1, 0x75, 0x01, 0x32, 0xBC, 0xFF, 0xA1, 0xA7, 0x00, + 0x11, 0x4A, 0x13, 0x11, 0x61, 0xFF, 0xA2, 0x9C, 0x9C, 0x82, 0x68, 0x63, 0x04, 0x10, 0xD4, 0x60, + 0x14, 0x02, 0x48, 0x05, 0x10, 0x05, 0x6B, 0x00, 0x90, 0x14, 0x05, 0xFF, 0xFF, 0xA7, 0xA4, 0x0D, + 0x05, 0xFF, 0x32, 0x0E, 0x02, 0x06, 0x00, 0x1F, 0x06, 0x06, 0x00, 0x04, 0x1F, 0x07, 0x06, 0x00, + 0x04, 0x1F, 0x08, 0x06, 0x00, 0x01, 0x41, 0xA3, 0xA0, 0x0A, 0x08, 0xBA, 0x14, 0x06, 0xDC, 0x00, + 0x31, 0x40, 0xFC, 0x5A, 0xEB, 0x00, 0x21, 0xF5, 0xA2, 0x0F, 0x00, 0x32, 0xB4, 0xE8, 0x02, 0x39, + 0x01, 0x00, 0x54, 0x06, 0x21, 0x00, 0x26, 0xCB, 0x32, 0x41, 0x00, 0x01, 0xDE, 0xC0, 0x1D, 0x00, + 0x21, 0x97, 0xFB, 0x8E, 0x0F, 0x12, 0x50, 0xF9, 0x02, 0x31, 0x0E, 0xFB, 0x96, 0x16, 0x00, 0x21, + 0xC1, 0xDE, 0xF6, 0x02, 0x20, 0x7A, 0xFF, 0xA3, 0x0B, 0x22, 0x00, 0x33, 0x05, 0x0D, 0x31, 0x02, + 0xEA, 0xB4, 0x1D, 0x00, 0x20, 0xA4, 0xF5, 0xC2, 0x00, 0x03, 0x2C, 0x16, 0x80, 0x9E, 0xFC, 0xFC, + 0xFC, 0x77, 0x67, 0xA4, 0xDB, 0x56, 0x00, 0x1F, 0x98, 0x05, 0x00, 0x2B, 0x81, 0x64, 0xA0, 0xD9, + 0xFF, 0x78, 0xA0, 0xFF, 0xFF, 0xA1, 0x00, 0x24, 0x08, 0x08, 0x2C, 0x16, 0x31, 0x4D, 0xFC, 0xFC, + 0x28, 0x15, 0x21, 0xBB, 0xFF, 0x83, 0x0D, 0x60, 0x29, 0xFF, 0xB9, 0xD2, 0xF9, 0x16, 0xEA, 0x02, + 0xF1, 0x09, 0x5D, 0x76, 0xFF, 0x7D, 0x00, 0x0F, 0xF4, 0xF5, 0x0C, 0x1D, 0xFE, 0xE7, 0x06, 0x2C, + 0x84, 0x61, 0x00, 0x00, 0x6E, 0x84, 0x21, 0x06, 0x07, 0x02, 0x98, 0x00, 0x11, 0xA0, 0x01, 0x00, + 0x33, 0x0A, 0xFF, 0xFF, 0x1C, 0x01, 0x31, 0x05, 0x05, 0x04, 0x44, 0x38, 0xF0, 0x00, 0x04, 0xC8, + 0xFC, 0x61, 0x00, 0x00, 0x2A, 0xF8, 0xB7, 0x00, 0x00, 0x00, 0x73, 0xFB, 0x12, 0x26, 0x16, 0x42, + 0x01, 0x08, 0x08, 0x0A, 0xD4, 0x05, 0xE0, 0x24, 0xAF, 0xF1, 0xF1, 0xA7, 0x10, 0x00, 0x01, 0xCF, + 0xFF, 0xC9, 0xE5, 0xFF, 0x8D, 0xFE, 0x03, 0xA1, 0x17, 0x70, 0xFF, 0xD3, 0x00, 0x14, 0x5C, 0x5C, + 0x03, 0x70, 0x0E, 0x05, 0x21, 0x40, 0xBF, 0xB6, 0x13, 0xF4, 0x18, 0x7C, 0xFF, 0xD2, 0x87, 0xFF, + 0xE0, 0x00, 0x22, 0xFF, 0xFD, 0x1E, 0x64, 0xFF, 0xE0, 0x00, 0x4F, 0xFF, 0xEF, 0x02, 0x6B, 0xFF, + 0xE1, 0x00, 0x2A, 0xFF, 0xFF, 0xB7, 0xE4, 0xFF, 0xEB, 0x00, 0x00, 0x7D, 0xF3, 0xDB, 0x51, 0xFF, + 0xFE, 0x05, 0x2C, 0x06, 0x41, 0x18, 0xFC, 0xFC, 0x3C, 0x08, 0x00, 0x2F, 0xFF, 0xFF, 0x08, 0x00, + 0x05, 0x40, 0x88, 0xD4, 0xF0, 0x70, 0x08, 0x00, 0xD1, 0xDB, 0xC4, 0xFF, 0xFD, 0x1A, 0x18, 0xFF, + 0xFF, 0x3D, 0x09, 0xFB, 0xFF, 0x56, 0x20, 0x00, 0x31, 0xED, 0xFF, 0x64, 0x08, 0x00, 0x1B, 0xEC, + 0x08, 0x00, 0x30, 0xED, 0xFF, 0x63, 0x08, 0x00, 0xF3, 0x07, 0x07, 0xFB, 0xFF, 0x50, 0x18, 0xFF, + 0xFF, 0xCF, 0xBB, 0xFF, 0xFA, 0x15, 0x18, 0xFF, 0xFF, 0x95, 0xE0, 0xF1, 0x68, 0x00, 0x07, 0x07, + 0xD0, 0x00, 0xF1, 0x0D, 0x30, 0xC3, 0xF6, 0xED, 0xA4, 0x10, 0x03, 0xE0, 0xFF, 0xC8, 0xE3, 0xFF, + 0x8C, 0x2F, 0xFF, 0xFF, 0x19, 0x64, 0xFF, 0xCB, 0x4A, 0xFF, 0xFF, 0x09, 0x44, 0xC4, 0xA3, 0x4C, + 0x40, 0x02, 0x13, 0x00, 0x07, 0x00, 0x00, 0x15, 0x00, 0xF7, 0x09, 0x54, 0xF4, 0xCB, 0x30, 0xFF, + 0xFF, 0x18, 0x65, 0xFF, 0xC9, 0x04, 0xE2, 0xFF, 0xC8, 0xE2, 0xFF, 0x89, 0x00, 0x34, 0xC8, 0xFA, + 0xF0, 0xA3, 0x0E, 0xBC, 0x10, 0x00, 0xC8, 0x43, 0x21, 0xFC, 0xFC, 0xC0, 0x27, 0x3E, 0x2C, 0xFF, + 0xFF, 0x08, 0x00, 0xF0, 0x04, 0x4C, 0xE3, 0xE9, 0x9A, 0xFF, 0xFF, 0x28, 0x04, 0xE9, 0xFF, 0xD2, + 0xCE, 0xFF, 0xFF, 0x28, 0x2F, 0xFF, 0xFF, 0x27, 0x18, 0x00, 0x40, 0x46, 0xFF, 0xFF, 0x11, 0x08, + 0x00, 0x48, 0x48, 0xFF, 0xFF, 0x10, 0x08, 0x00, 0x13, 0x47, 0x18, 0x00, 0x40, 0x34, 0xFF, 0xFF, + 0x22, 0x08, 0x00, 0x50, 0x06, 0xF4, 0xFF, 0xCC, 0xC5, 0x48, 0x00, 0x84, 0x5B, 0xE6, 0xED, 0x9C, + 0xFF, 0xFF, 0x28, 0x08, 0xC8, 0x00, 0xF1, 0x03, 0x2D, 0xC1, 0xF6, 0xEE, 0x9F, 0x0B, 0x03, 0xDD, + 0xFF, 0xC3, 0xDE, 0xFF, 0x83, 0x2E, 0xFF, 0xFF, 0x0F, 0x58, 0xC8, 0x00, 0x51, 0x9E, 0xBC, 0xFF, + 0xE1, 0x4C, 0xE1, 0x01, 0x10, 0xE4, 0xC8, 0x00, 0xF4, 0x14, 0x04, 0x04, 0x04, 0x4A, 0xFF, 0xFF, + 0x04, 0x2B, 0x88, 0x79, 0x30, 0xFF, 0xFF, 0x14, 0x60, 0xFF, 0xD5, 0x04, 0xE3, 0xFF, 0xCD, 0xE6, + 0xFF, 0x8D, 0x00, 0x35, 0xC7, 0xF9, 0xEF, 0xA0, 0x0D, 0x00, 0x00, 0x05, 0x06, 0x9C, 0x13, 0xC1, + 0xAE, 0xF5, 0xF0, 0x0F, 0x00, 0x6D, 0xFF, 0xFC, 0xB3, 0x0D, 0x00, 0x98, 0x4F, 0x04, 0x10, 0xA0, + 0x2D, 0x11, 0xC2, 0xAE, 0xFF, 0xFF, 0xFF, 0xFC, 0x10, 0x71, 0xDE, 0xFF, 0xE4, 0xA4, 0x0B, 0x12, + 0x00, 0x0F, 0x06, 0x00, 0x17, 0x00, 0xE0, 0x04, 0x19, 0xFD, 0xEB, 0x34, 0xF0, 0x07, 0x2A, 0xBB, + 0xF6, 0xE5, 0x64, 0x86, 0xD4, 0x01, 0x01, 0xD9, 0xFF, 0xC2, 0xE1, 0xFF, 0xDB, 0x68, 0x04, 0x28, + 0xFF, 0xF7, 0x04, 0x57, 0x44, 0x04, 0x50, 0x42, 0xFF, 0xE6, 0x00, 0x44, 0x71, 0x05, 0x50, 0x2F, + 0xFF, 0xF4, 0x04, 0x54, 0x58, 0x15, 0x50, 0x03, 0xD3, 0xFF, 0xBA, 0xDD, 0x79, 0x0C, 0xD1, 0x00, + 0x7D, 0xF2, 0xF8, 0xF3, 0x9D, 0x08, 0x00, 0x00, 0x2C, 0xFE, 0x9B, 0x1B, 0x83, 0x12, 0xF0, 0x06, + 0x2C, 0xFA, 0xFF, 0xFF, 0xFD, 0xDA, 0x73, 0x01, 0x00, 0x02, 0xA8, 0xE9, 0x9E, 0xB9, 0xF2, 0xFF, + 0x43, 0x00, 0x66, 0xFF, 0x84, 0xE7, 0x14, 0xF7, 0x04, 0x6F, 0x00, 0x96, 0xFF, 0xEE, 0xAD, 0xA6, + 0xE7, 0xFF, 0x44, 0x00, 0x20, 0xB0, 0xEC, 0xFF, 0xFD, 0xDA, 0x7C, 0x01, 0x68, 0x12, 0x52, 0x10, + 0xFC, 0xFC, 0x3F, 0x00, 0x9F, 0x14, 0x1F, 0x40, 0x08, 0x00, 0x04, 0x70, 0x6F, 0xB8, 0xF6, 0xB3, + 0x03, 0x10, 0xFF, 0xA0, 0x14, 0xA0, 0xFF, 0x3B, 0x10, 0xFF, 0xFF, 0x43, 0x09, 0xFF, 0xFF, 0x4C, + 0x20, 0x00, 0x1F, 0x04, 0x08, 0x00, 0x20, 0x04, 0xA8, 0x1D, 0x85, 0x08, 0xFC, 0xFC, 0x4B, 0x06, + 0xA4, 0xA4, 0x31, 0xF8, 0x12, 0x7F, 0xFC, 0xFC, 0x47, 0x08, 0xFF, 0xFF, 0x48, 0x04, 0x00, 0x0D, + 0x33, 0x04, 0x05, 0x11, 0xE4, 0x23, 0x97, 0xE1, 0xFC, 0x73, 0x00, 0x00, 0x93, 0xA4, 0x4B, 0x00, + 0x01, 0x00, 0x30, 0xDD, 0xFC, 0x6F, 0xFA, 0x0B, 0x1F, 0x70, 0x05, 0x00, 0x16, 0xF6, 0x00, 0x04, + 0xEE, 0xFF, 0x6D, 0x31, 0xD9, 0xFF, 0xFF, 0x37, 0x34, 0xF7, 0xEC, 0x7D, 0x01, 0x00, 0x80, 0x06, + 0x53, 0x18, 0xFC, 0xFC, 0x38, 0x00, 0x75, 0x03, 0x0F, 0x09, 0x00, 0x0A, 0x40, 0x9F, 0xFC, 0xD9, + 0x08, 0x09, 0x00, 0x10, 0x3F, 0xA2, 0x16, 0x71, 0x18, 0xFF, 0xFF, 0x3E, 0xD6, 0xFF, 0xB3, 0x1B, + 0x00, 0x41, 0xB0, 0xFF, 0xF8, 0x22, 0x09, 0x00, 0x41, 0xFF, 0xFF, 0xEF, 0x09, 0x09, 0x00, 0x42, + 0xB3, 0xE3, 0xFF, 0x5D, 0xCE, 0x03, 0x32, 0x89, 0xFF, 0xC3, 0x3F, 0x00, 0x10, 0x2E, 0xA0, 0x07, + 0x01, 0x48, 0x00, 0x32, 0xD2, 0xFF, 0x8F, 0x09, 0x00, 0x40, 0x76, 0xFF, 0xEE, 0x08, 0x90, 0x1A, + 0x04, 0xB8, 0x0A, 0x4F, 0x5B, 0xF8, 0xFF, 0x5C, 0x03, 0x00, 0x11, 0x00, 0x74, 0x08, 0x02, 0x08, + 0x03, 0xF0, 0x09, 0x1C, 0xFC, 0xFC, 0x67, 0xD3, 0xF6, 0x90, 0x39, 0xC7, 0xF7, 0xA6, 0x03, 0x1C, + 0xFF, 0xFF, 0xE9, 0xBB, 0xFF, 0xFF, 0xE9, 0xB4, 0xFF, 0xFF, 0x3C, 0x54, 0x16, 0xFF, 0x05, 0x03, + 0xFC, 0xFF, 0x46, 0x00, 0xDE, 0xFF, 0x5B, 0x1C, 0xFF, 0xFF, 0x18, 0x00, 0xF8, 0xFF, 0x3C, 0x00, + 0xD8, 0xFF, 0x5C, 0x0C, 0x00, 0x35, 0x25, 0x08, 0x08, 0x80, 0x00, 0xFF, 0x07, 0x6F, 0xB7, 0xF6, + 0xA1, 0x01, 0x1C, 0xFF, 0xFF, 0xE3, 0xC4, 0xFF, 0xFF, 0x22, 0x1C, 0xFF, 0xFF, 0x3A, 0x21, 0xFF, + 0xFF, 0x38, 0x1C, 0x04, 0x00, 0x24, 0x05, 0xE0, 0x03, 0x80, 0x2C, 0xBF, 0xF6, 0xED, 0x9D, 0x0D, + 0x04, 0xDF, 0xA8, 0x04, 0xF5, 0x05, 0x96, 0x33, 0xFF, 0xFF, 0x13, 0x5D, 0xFF, 0xE7, 0x4B, 0xFF, + 0xFF, 0x01, 0x4D, 0xFF, 0xFF, 0x4C, 0xFF, 0xFF, 0x00, 0x4C, 0x07, 0x00, 0xF0, 0x0D, 0x4B, 0xFF, + 0xFF, 0x00, 0x4D, 0xFF, 0xFF, 0x34, 0xFF, 0xFF, 0x0F, 0x5D, 0xFF, 0xE8, 0x04, 0xE3, 0xFF, 0xC1, + 0xDE, 0xFF, 0x9B, 0x00, 0x32, 0xC1, 0xF9, 0xEF, 0xA1, 0x10, 0xFC, 0x02, 0x32, 0x0D, 0x00, 0xFD, + 0xA8, 0x00, 0xD0, 0x8D, 0xD8, 0xEF, 0x6D, 0x00, 0x1C, 0xFF, 0xFF, 0xDA, 0xC7, 0xFF, 0xFC, 0x17, + 0x58, 0x1A, 0x40, 0x0B, 0xFD, 0xFF, 0x4F, 0x74, 0x00, 0x41, 0x00, 0xF1, 0xFF, 0x60, 0x08, 0x00, + 0x1B, 0xF0, 0x08, 0x00, 0x31, 0xF1, 0xFF, 0x5F, 0x94, 0x00, 0xF3, 0x05, 0xFD, 0xFF, 0x4C, 0x1C, + 0xFF, 0xFF, 0xCD, 0xBE, 0xFF, 0xF9, 0x12, 0x1C, 0xFF, 0xFF, 0x91, 0xE0, 0xEF, 0x65, 0x00, 0x1C, + 0x19, 0x02, 0x0C, 0x08, 0x00, 0x04, 0x70, 0x00, 0xF0, 0x0D, 0x00, 0x48, 0xE1, 0xE9, 0x95, 0xFC, + 0xFC, 0x30, 0x04, 0xE8, 0xFF, 0xD3, 0xCD, 0xFF, 0xFF, 0x30, 0x30, 0xFF, 0xFF, 0x27, 0x24, 0xFF, + 0xFF, 0x30, 0x43, 0xFF, 0xFF, 0x11, 0x08, 0x00, 0x48, 0x44, 0xFF, 0xFF, 0x10, 0x08, 0x00, 0x04, + 0x18, 0x00, 0x40, 0x30, 0xFF, 0xFF, 0x22, 0x08, 0x00, 0x50, 0x05, 0xF1, 0xFF, 0xCC, 0xC4, 0xF2, + 0x1D, 0x40, 0x59, 0xE6, 0xED, 0x97, 0x08, 0x00, 0x02, 0x07, 0x19, 0x0D, 0x08, 0x00, 0x18, 0x06, + 0x1C, 0x17, 0x60, 0x02, 0x14, 0xFC, 0xFC, 0x6B, 0xCE, 0x8F, 0x0B, 0xA1, 0xFB, 0xB8, 0x79, 0x14, + 0xFF, 0xFF, 0x77, 0x00, 0x00, 0x14, 0xDC, 0x03, 0x0F, 0x06, 0x00, 0x11, 0x16, 0x00, 0x24, 0x06, + 0xF1, 0x16, 0x54, 0xD4, 0xF7, 0xBB, 0x24, 0x00, 0x21, 0xFD, 0xFB, 0xB4, 0xFC, 0xCD, 0x01, 0x5F, + 0xFF, 0xC6, 0x00, 0x8E, 0xD7, 0x15, 0x31, 0xFF, 0xFF, 0x73, 0x0A, 0x01, 0x00, 0x00, 0x93, 0xFF, + 0xFF, 0x8B, 0x02, 0x00, 0x00, 0x02, 0x83, 0x9A, 0x18, 0xF1, 0x0B, 0x0C, 0x08, 0x63, 0xFF, 0xFF, + 0x31, 0x67, 0xF5, 0x63, 0x00, 0xC7, 0xFF, 0x5B, 0x31, 0xFE, 0xF4, 0xAB, 0xFC, 0xFD, 0x20, 0x00, + 0x5B, 0xD7, 0xFB, 0xD1, 0x57, 0x4C, 0x1D, 0x03, 0xD6, 0x17, 0x40, 0xB6, 0xFC, 0x9E, 0x00, 0xCB, + 0x09, 0x14, 0xA0, 0x06, 0x00, 0x01, 0x56, 0x05, 0x78, 0x1C, 0x71, 0xE7, 0xFF, 0xDE, 0xA4, 0x12, + 0x18, 0x00, 0x0F, 0x06, 0x00, 0x00, 0x11, 0xB4, 0x76, 0x09, 0xD4, 0x88, 0xFF, 0xFF, 0xDB, 0x32, + 0x00, 0x17, 0xC6, 0xFC, 0xF5, 0x33, 0x00, 0x00, 0x7C, 0x02, 0xFF, 0x00, 0x2C, 0xFC, 0xFC, 0x24, + 0x34, 0xFC, 0xFC, 0x1C, 0x2C, 0xFF, 0xFF, 0x24, 0x34, 0xFF, 0xFF, 0x08, 0x00, 0x19, 0xA0, 0x2A, + 0x37, 0xFF, 0xFF, 0x1C, 0x19, 0xFF, 0xFF, 0xD0, 0xE7, 0xD6, 0x0B, 0x74, 0x9F, 0xFA, 0xC0, 0x67, + 0xFF, 0xFF, 0x1C, 0x00, 0x01, 0xF0, 0x13, 0xAE, 0xFC, 0x8B, 0x00, 0xA3, 0xFC, 0x92, 0x80, 0xFF, + 0xAF, 0x00, 0xC7, 0xFF, 0x63, 0x4E, 0xFF, 0xD2, 0x00, 0xE8, 0xFF, 0x33, 0x1D, 0xFF, 0xF4, 0x0C, + 0xFF, 0xFB, 0x07, 0x01, 0xEC, 0xFF, 0x43, 0xFF, 0xD1, 0x7A, 0x08, 0x10, 0x88, 0x9F, 0x00, 0x50, + 0x89, 0xFF, 0xCC, 0xFF, 0x6F, 0x55, 0x1B, 0x30, 0xFE, 0xFF, 0x3E, 0xFF, 0x0A, 0x10, 0xFF, 0x2E, + 0x1B, 0x43, 0x02, 0xF3, 0xFF, 0xDC, 0x7C, 0x2B, 0x01, 0x50, 0x00, 0xF0, 0x2C, 0x7F, 0xFC, 0x67, + 0x00, 0xD6, 0xF9, 0x06, 0x3A, 0xFC, 0x96, 0x5B, 0xFF, 0x89, 0x07, 0xFC, 0xFF, 0x29, 0x5E, 0xFF, + 0x71, 0x34, 0xFF, 0xAB, 0x2C, 0xFF, 0xFF, 0x50, 0x82, 0xFF, 0x49, 0x0E, 0xFF, 0xCC, 0x55, 0xFF, + 0xFE, 0x76, 0xA6, 0xFF, 0x21, 0x00, 0xE7, 0xED, 0x7E, 0xF1, 0xCD, 0x9D, 0xCB, 0xF8, 0x03, 0x00, + 0xC0, 0xFF, 0xB7, 0xC3, 0xA0, 0xC4, 0xF0, 0xD2, 0xB0, 0x15, 0x40, 0xF7, 0x94, 0x74, 0xF5, 0xF1, + 0x1C, 0x80, 0x72, 0xFF, 0xFF, 0x65, 0x47, 0xFF, 0xFF, 0x83, 0x20, 0x1C, 0x50, 0xFF, 0x36, 0x1B, + 0xFF, 0xFF, 0x1B, 0x48, 0x75, 0xFF, 0xFE, 0x0A, 0x01, 0xEF, 0xFF, 0x34, 0xBC, 0x01, 0xF1, 0x05, + 0x92, 0xFC, 0xB1, 0x00, 0x64, 0xFC, 0x99, 0x26, 0xFE, 0xFF, 0x26, 0xC8, 0xFF, 0x2F, 0x00, 0xB1, + 0xFF, 0xBD, 0xFF, 0xC2, 0x36, 0x18, 0x10, 0xFF, 0xC1, 0x29, 0xF0, 0x19, 0xD8, 0xFF, 0xE4, 0x05, + 0x00, 0x00, 0x15, 0xF9, 0xFF, 0xE8, 0x08, 0x00, 0x00, 0x73, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x01, + 0xD9, 0xFF, 0x98, 0xFF, 0xD4, 0x01, 0x3F, 0xFF, 0xC2, 0x10, 0xF3, 0xFF, 0x48, 0xA5, 0xFF, 0x63, + 0x00, 0x8E, 0xFF, 0xBB, 0x0C, 0x02, 0x02, 0xC8, 0x02, 0xF0, 0x18, 0xC3, 0xFC, 0x75, 0x00, 0x67, + 0xFC, 0xD2, 0x89, 0xFF, 0xA5, 0x00, 0x90, 0xFF, 0x9E, 0x4B, 0xFF, 0xD3, 0x00, 0xB8, 0xFF, 0x66, + 0x10, 0xFE, 0xFB, 0x07, 0xE0, 0xFF, 0x2F, 0x00, 0xCE, 0xFF, 0x3A, 0xFF, 0xF5, 0x04, 0x00, 0x8F, + 0xFF, 0x8F, 0xD3, 0x12, 0x51, 0x51, 0xFF, 0xE4, 0xFF, 0x89, 0x4E, 0x02, 0x61, 0xFF, 0x51, 0x00, + 0x00, 0x00, 0xD5, 0x2C, 0x12, 0x40, 0x00, 0x98, 0xFF, 0xE3, 0x98, 0x00, 0xF1, 0x01, 0x75, 0xFF, + 0xAB, 0x00, 0x00, 0x0B, 0xB6, 0xF0, 0xFF, 0x52, 0x00, 0x00, 0x10, 0xFD, 0xD5, 0x74, 0xEC, 0x40, + 0x15, 0x06, 0xC8, 0x01, 0x91, 0xFC, 0xFC, 0xD5, 0x1D, 0xA4, 0xA4, 0xE3, 0xFF, 0xBE, 0x3E, 0x22, + 0x10, 0x5B, 0x38, 0x0B, 0x00, 0x1A, 0x05, 0x10, 0xC6, 0x94, 0x0C, 0x40, 0x2E, 0xFF, 0xFF, 0x2B, + 0xDC, 0x09, 0x50, 0xC4, 0x00, 0x00, 0x0C, 0xF2, 0x24, 0x10, 0x70, 0x5D, 0xFF, 0xFF, 0xA6, 0x9C, + 0x7F, 0x70, 0x6E, 0x05, 0x14, 0xD0, 0x50, 0x0B, 0xF4, 0x08, 0x00, 0x00, 0x7D, 0xE8, 0xFC, 0x4B, + 0x00, 0x17, 0xFF, 0xFF, 0xCC, 0x31, 0x00, 0x35, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x38, 0xFF, 0xFF, + 0x14, 0x06, 0x00, 0x11, 0x3A, 0x06, 0x00, 0x10, 0x4A, 0x1B, 0x0D, 0x20, 0x2A, 0xD4, 0xB5, 0x0C, + 0xF0, 0x02, 0x44, 0xFF, 0xFC, 0x52, 0x00, 0x00, 0x02, 0x70, 0xFF, 0xE1, 0x00, 0x00, 0x00, 0x3E, + 0xFF, 0xFF, 0x0B, 0xD4, 0x21, 0x2A, 0xFF, 0x14, 0x36, 0x00, 0xF0, 0x02, 0x32, 0xFF, 0xFF, 0x21, + 0x00, 0x00, 0x13, 0xFE, 0xFF, 0xCA, 0x30, 0x00, 0x00, 0x76, 0xEB, 0xFF, 0x4C, 0xAC, 0x05, 0x02, + 0x5C, 0x21, 0x53, 0xDA, 0xFC, 0x28, 0xDD, 0xFF, 0x03, 0x00, 0x17, 0xDE, 0x03, 0x00, 0x17, 0xDF, + 0x03, 0x00, 0x1A, 0xE0, 0x03, 0x00, 0x05, 0xFC, 0x0B, 0x81, 0x43, 0xFC, 0xE9, 0x84, 0x00, 0x00, + 0x2C, 0xC9, 0xF9, 0x13, 0x00, 0x47, 0x06, 0x10, 0x00, 0x4A, 0x21, 0x10, 0x44, 0x53, 0x1A, 0x06, + 0x06, 0x00, 0x21, 0x02, 0xF6, 0x54, 0x0C, 0x80, 0xA3, 0xFF, 0xD7, 0x2F, 0x00, 0x00, 0x4D, 0xFA, + 0x7C, 0x00, 0x40, 0xDC, 0xFF, 0x76, 0x02, 0x0F, 0x0C, 0x1A, 0x46, 0x2A, 0x00, 0x02, 0x3C, 0x00, + 0x10, 0x1A, 0xF9, 0x12, 0x20, 0x2B, 0xC7, 0x75, 0x01, 0x42, 0x44, 0xFF, 0xED, 0x7D, 0x8C, 0x04, + 0x12, 0x04, 0x36, 0x4E, 0xF4, 0x08, 0x21, 0x8C, 0x63, 0x07, 0x00, 0x22, 0x00, 0x26, 0xEF, 0xFF, + 0xFF, 0xE4, 0xB4, 0xFD, 0x2E, 0x06, 0x7A, 0x17, 0x53, 0xCB, 0xF5, 0x7A, 0x01, 0x14, 0x1B, 0x22, + 0x06, 0x06, 0x1F, 0x19, 0xFF, 0x02, 0x25, 0x54, 0x54, 0x54, 0x54, 0x07, 0x70, 0x55, 0x3C, 0x3C, + 0x9B, 0x14, 0x70, 0x20, 0x00, 0x00, 0x7C, 0x06, 0x00, 0x1F, 0x58, 0x9B, 0x8C, 0x8C, 0xC5, 0x14, + 0xB4, 0x25, 0x04, 0x38, 0x3D, 0x31, 0x08, 0x06, 0x1C, 0x70, 0x00, 0x10, 0x67, 0xEC, 0x01, 0x20, + 0x07, 0x58, 0xA3, 0x21, 0xF0, 0x09, 0x00, 0x47, 0xFF, 0xFF, 0xFF, 0xE1, 0x00, 0x36, 0xFF, 0xFF, + 0xFF, 0xCE, 0x00, 0x26, 0xFF, 0xFF, 0xFF, 0xBB, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xA9, 0x0A, 0x0D, + 0x00, 0xEE, 0x0E, 0x11, 0xF3, 0xEC, 0x02, 0x11, 0xE3, 0x7C, 0x2D, 0x11, 0xD2, 0x78, 0x18, 0x20, + 0xC1, 0xFF, 0x54, 0x0D, 0x40, 0xB0, 0xFF, 0xFF, 0x37, 0x62, 0x09, 0x00, 0x89, 0x0C, 0x40, 0x8F, + 0xFF, 0xFF, 0x12, 0x94, 0x1C, 0x20, 0xFD, 0x02, 0xCD, 0x0C, 0x20, 0xEC, 0x00, 0x1D, 0x02, 0x11, + 0xD9, 0xC4, 0x0A, 0x11, 0xC6, 0x79, 0x24, 0x10, 0xB3, 0x99, 0x1B, 0x01, 0x90, 0x0D, 0x31, 0x1A, + 0xFF, 0x8E, 0x00, 0x22, 0x0B, 0xFB, 0x37, 0x71, 0x77, 0xFC, 0xFC, 0xFC, 0xE1, 0x00, 0x78, 0x7D, + 0x2B, 0x08, 0x06, 0x00, 0x51, 0x0C, 0x0A, 0x0A, 0x02, 0x12, 0x1E, 0x16, 0xF0, 0x07, 0xFC, 0xCE, + 0x00, 0x7B, 0xFC, 0xFC, 0xFC, 0x57, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x7C, 0xFF, 0xFF, 0xFF, 0x28, + 0xFF, 0xFF, 0xFF, 0x72, 0x0A, 0x00, 0x30, 0xF6, 0x03, 0xFF, 0x6C, 0x1E, 0x60, 0x7C, 0xFF, 0xFF, + 0xC8, 0x00, 0xFF, 0x72, 0x10, 0x60, 0x7C, 0xFF, 0xFF, 0x98, 0x00, 0xFF, 0xF1, 0x02, 0x81, 0x7C, + 0xFF, 0xFF, 0x68, 0x00, 0xFF, 0xFF, 0xB3, 0x0A, 0x00, 0x30, 0x38, 0x00, 0xFF, 0x9F, 0x09, 0x51, + 0x7C, 0xFF, 0xFE, 0x0B, 0x00, 0xF5, 0x15, 0x20, 0x7C, 0xFF, 0x2E, 0x4A, 0x00, 0x53, 0x22, 0x10, + 0x02, 0x90, 0x00, 0x44, 0x11, 0x0F, 0x1C, 0x01, 0x90, 0x00, 0x40, 0xE9, 0xFC, 0xFC, 0xC4, 0x32, + 0x04, 0x20, 0xFC, 0xFC, 0xAC, 0x2D, 0x50, 0x0F, 0xFF, 0xFF, 0xFF, 0xA5, 0x05, 0x02, 0x01, 0x58, + 0x04, 0x00, 0xA2, 0x17, 0x00, 0x13, 0x01, 0x20, 0xC5, 0xFF, 0x51, 0x0C, 0x00, 0x71, 0x03, 0x01, + 0x97, 0x17, 0x62, 0xE7, 0xFF, 0xFF, 0xC9, 0x00, 0x00, 0xD0, 0x03, 0x20, 0x3F, 0x00, 0xDF, 0x0C, + 0x01, 0x8B, 0x1E, 0x50, 0x94, 0xFF, 0xFF, 0xFF, 0x1D, 0xAC, 0x0F, 0x01, 0xA7, 0x26, 0x60, 0x00, + 0xB6, 0xFF, 0xFF, 0xF9, 0x03, 0x29, 0x07, 0x00, 0x5A, 0x11, 0x40, 0x00, 0x00, 0xD7, 0xFF, 0x28, + 0x01, 0x70, 0x6F, 0xFF, 0xFF, 0xFF, 0x41, 0x00, 0xB4, 0x7E, 0x17, 0x21, 0xFF, 0xFF, 0x37, 0x20, + 0x49, 0xFF, 0xFD, 0x9D, 0xBA, 0x05, 0x2D, 0x29, 0x9C, 0xBE, 0x0F, 0x00, 0x90, 0x9A, 0x33, 0x44, + 0x99, 0xFF, 0xFF, 0xFF, 0x71, 0x44, 0x36, 0x15, 0x30, 0xC4, 0x44, 0x29, 0x58, 0x10, 0x00, 0xBF, + 0x1E, 0x50, 0x1F, 0xFF, 0xFF, 0xFF, 0x93, 0x59, 0x00, 0x92, 0xA7, 0xFF, 0xFF, 0xFF, 0x07, 0x00, + 0x3B, 0xFF, 0xFF, 0xBE, 0x25, 0xB0, 0xC2, 0xFF, 0xFF, 0xE7, 0x00, 0x00, 0x56, 0xFF, 0xFF, 0xFF, + 0x57, 0x4D, 0x04, 0x06, 0x68, 0x00, 0x49, 0xFE, 0xFC, 0x91, 0xC8, 0x5A, 0x00, 0x29, 0x90, 0xCB, + 0x0F, 0x00, 0x30, 0x8E, 0x37, 0x7F, 0xA2, 0x2E, 0x90, 0x44, 0x44, 0xEC, 0xFF, 0xFF, 0xDA, 0x44, + 0x44, 0x26, 0x77, 0x21, 0x82, 0xFF, 0x44, 0x00, 0x04, 0xFC, 0xFF, 0xFF, 0xB1, 0xCF, 0x10, 0x00, + 0xAE, 0x1E, 0x32, 0x20, 0xFF, 0xFF, 0xB6, 0x1F, 0x83, 0xAA, 0xFF, 0xFF, 0xFE, 0x07, 0x00, 0x40, + 0xFF, 0x01, 0x10, 0x11, 0xC9, 0x4D, 0x2D, 0x30, 0x60, 0xFF, 0xFF, 0x70, 0x04, 0x62, 0x00, 0x00, + 0xE8, 0xFF, 0xFF, 0xC4, 0x48, 0x2F, 0x01, 0x38, 0x12, 0x41, 0xFF, 0xFF, 0xFF, 0xA4, 0x42, 0x02, + 0x00, 0x3D, 0x02, 0x01, 0xB6, 0x05, 0x11, 0x84, 0x4E, 0x10, 0x10, 0xF3, 0x87, 0x01, 0x21, 0x46, + 0xFF, 0xA9, 0x25, 0x42, 0xE0, 0xFF, 0xFF, 0xD3, 0x08, 0x26, 0x04, 0x77, 0x00, 0x12, 0xB4, 0x53, + 0x30, 0x35, 0x22, 0x01, 0xFD, 0x3E, 0x02, 0x29, 0x4A, 0x65, 0x4D, 0x02, 0x2A, 0x98, 0xD0, 0x0F, + 0x00, 0x24, 0xD4, 0x04, 0x0B, 0x00, 0x91, 0x04, 0x63, 0xBD, 0xEC, 0xFE, 0xFF, 0xF9, 0xBE, 0x56, + 0xE9, 0x01, 0x24, 0x15, 0xC7, 0xE6, 0x00, 0x10, 0x92, 0x76, 0x12, 0x07, 0x62, 0x01, 0x21, 0x5C, + 0x00, 0xA3, 0x01, 0xC0, 0xFF, 0xB5, 0x50, 0x58, 0xD9, 0xFF, 0xFF, 0xFF, 0xD7, 0x01, 0x00, 0xA6, + 0x25, 0x03, 0x11, 0x04, 0x75, 0x11, 0x52, 0xFF, 0xFF, 0x33, 0x00, 0xD6, 0xBC, 0x00, 0xD0, 0x00, + 0x00, 0xD4, 0xFF, 0xFF, 0xFF, 0x6B, 0x00, 0xED, 0xFF, 0xFF, 0xFF, 0xAC, 0x0F, 0x00, 0x11, 0xA6, + 0x2A, 0x20, 0x10, 0xE9, 0xBC, 0x02, 0x00, 0xE2, 0x02, 0x83, 0x8F, 0xFA, 0xCB, 0x97, 0x46, 0x00, + 0xC6, 0xFF, 0x10, 0x01, 0x24, 0x15, 0x07, 0x12, 0x02, 0x25, 0xFF, 0xFD, 0x43, 0x2E, 0x02, 0x0B, + 0x23, 0x45, 0xFB, 0x5B, 0x00, 0x00, 0x06, 0x30, 0x00, 0x01, 0x00, 0x13, 0x6E, 0x0F, 0x00, 0x22, + 0x0E, 0xD8, 0x10, 0x00, 0x13, 0x82, 0x9C, 0x02, 0x22, 0x1F, 0xDD, 0x10, 0x00, 0x13, 0x8F, 0x10, + 0x00, 0x13, 0x19, 0xE3, 0x2A, 0x13, 0x7D, 0x30, 0x00, 0x22, 0x10, 0xC3, 0x10, 0x00, 0x13, 0x46, + 0x10, 0x00, 0x21, 0x0A, 0xB3, 0x0F, 0x00, 0x14, 0xDF, 0x02, 0x04, 0x21, 0x05, 0xAC, 0x10, 0x00, + 0x14, 0x64, 0x6F, 0x00, 0x11, 0x07, 0x9E, 0x00, 0x60, 0xC0, 0x00, 0x0C, 0x41, 0x79, 0xB2, 0x97, + 0x0C, 0x91, 0x25, 0xFD, 0xFF, 0xFF, 0xFF, 0xF6, 0x02, 0xF1, 0xFF, 0x08, 0x16, 0x00, 0x47, 0x11, + 0x50, 0xFF, 0xFF, 0xFF, 0x16, 0xD7, 0x41, 0x30, 0x21, 0x00, 0x00, 0x78, 0x08, 0x30, 0xFF, 0xFF, + 0x1E, 0x44, 0x00, 0x01, 0xC0, 0x27, 0x10, 0x91, 0xCB, 0x00, 0x20, 0x08, 0x66, 0x15, 0x00, 0x50, + 0x39, 0x00, 0x00, 0x01, 0xCE, 0x0C, 0x06, 0x20, 0x00, 0x12, 0x3D, 0x00, 0x30, 0xEA, 0x67, 0x45, + 0xDA, 0x01, 0x22, 0xFF, 0x73, 0xDF, 0x02, 0x04, 0x0B, 0x30, 0x00, 0x60, 0x5A, 0x15, 0x87, 0x8C, + 0x32, 0x12, 0x25, 0xF1, 0x11, 0x76, 0xA1, 0xDB, 0xFB, 0xFF, 0xFF, 0xE1, 0x83, 0xF9, 0x47, 0x38, + 0x08, 0xFF, 0x65, 0x8C, 0x30, 0x13, 0x08, 0x1B, 0x1B, 0x0E, 0x0F, 0x00, 0x24, 0x20, 0x1E, 0xB4, + 0x03, 0x83, 0x17, 0x88, 0xD1, 0xF5, 0xF9, 0xDD, 0xA3, 0x35, 0x23, 0x00, 0x46, 0xF3, 0xFC, 0xFC, + 0x2E, 0x32, 0x00, 0x22, 0x2B, 0xE9, 0x71, 0x00, 0x12, 0xFC, 0xF7, 0x00, 0x47, 0x43, 0xFF, 0xFF, + 0xE9, 0x28, 0x43, 0x05, 0x01, 0x03, 0x32, 0xF9, 0x1C, 0x00, 0xE5, 0x08, 0x16, 0xA5, 0x3B, 0x00, + 0x10, 0x32, 0x0A, 0x32, 0x41, 0x63, 0x53, 0xCF, 0xFF, 0x88, 0x1A, 0x66, 0x00, 0x00, 0xCD, 0xFF, + 0xFF, 0x60, 0x1E, 0x00, 0x00, 0xED, 0x03, 0x52, 0x76, 0x00, 0x00, 0x34, 0xFF, 0xFB, 0x12, 0x47, + 0x14, 0xFE, 0xFF, 0xFF, 0x39, 0x40, 0x20, 0x97, 0xFF, 0xC0, 0x16, 0x00, 0x2C, 0x06, 0x01, 0xA3, + 0x10, 0x47, 0x57, 0xFF, 0xFF, 0xD6, 0xC7, 0x00, 0x00, 0x45, 0x01, 0x11, 0x36, 0x70, 0x41, 0x40, + 0xFF, 0xF5, 0x00, 0x00, 0xE6, 0x21, 0x17, 0x91, 0x1E, 0x00, 0x00, 0xC0, 0x32, 0x10, 0x34, 0xC6, + 0x1B, 0x70, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x01, 0xE1, 0xEC, 0x0C, 0x0A, 0x1E, 0x00, 0x15, 0x35, + 0x1E, 0x00, 0x57, 0x25, 0xFF, 0xFF, 0xFB, 0x0D, 0x1E, 0x00, 0x12, 0xAA, 0x8F, 0x01, 0x30, 0x00, + 0xF6, 0xFF, 0x93, 0x2B, 0x13, 0x6A, 0xAC, 0x01, 0x04, 0x3F, 0x01, 0x21, 0x91, 0xFF, 0x4C, 0x00, + 0x12, 0x0B, 0x0D, 0x34, 0x13, 0xAF, 0xD8, 0x00, 0x04, 0x1E, 0x00, 0x10, 0x69, 0x6C, 0x02, 0x00, + 0x09, 0x0F, 0x62, 0xFF, 0xFF, 0xB5, 0x00, 0x04, 0xF1, 0x49, 0x00, 0x05, 0x1E, 0x00, 0x81, 0x25, + 0xFF, 0xFF, 0xFF, 0xF1, 0x5E, 0x4F, 0xD7, 0xD1, 0x02, 0x41, 0x39, 0xFF, 0xFF, 0xF0, 0xC5, 0x21, + 0x32, 0x21, 0x3A, 0x33, 0xF1, 0x1F, 0x14, 0xB5, 0x4A, 0x01, 0x50, 0xF2, 0x11, 0x00, 0x7E, 0xFF, + 0xD3, 0x29, 0x30, 0x07, 0x84, 0xEB, 0x10, 0x00, 0x20, 0xC7, 0x42, 0xBB, 0x02, 0x13, 0xE0, 0x67, + 0x01, 0xA4, 0x53, 0x00, 0x00, 0xC3, 0xFF, 0xFF, 0x6A, 0x00, 0x02, 0xB9, 0xE3, 0x31, 0x00, 0x1F, + 0x04, 0x80, 0x12, 0x85, 0xD5, 0xFB, 0xFF, 0xE1, 0xA2, 0x2F, 0xA1, 0x27, 0x00, 0x56, 0x06, 0x15, + 0x51, 0x36, 0x02, 0x12, 0xE2, 0xEE, 0x20, 0x12, 0x01, 0xB4, 0x01, 0x20, 0x4D, 0xFF, 0x1B, 0x45, + 0x00, 0x3E, 0x01, 0x53, 0x87, 0x0E, 0x2A, 0xDB, 0xFF, 0x36, 0x0B, 0x04, 0xA2, 0x00, 0x41, 0x92, + 0xFF, 0xFF, 0x9B, 0xAF, 0x06, 0x20, 0xFA, 0x09, 0xEF, 0x08, 0x01, 0x9F, 0x01, 0x06, 0x1E, 0x00, + 0x72, 0xD6, 0xFF, 0xFF, 0x56, 0x00, 0x03, 0xFD, 0x90, 0x01, 0x12, 0x54, 0xD7, 0x23, 0x05, 0x1D, + 0x00, 0x50, 0x1C, 0xFF, 0xFF, 0xFE, 0x14, 0xCE, 0x07, 0x22, 0xFF, 0xD9, 0x67, 0x00, 0x27, 0xFF, + 0x9C, 0x1E, 0x00, 0x41, 0x60, 0xFF, 0xFF, 0xCD, 0xEC, 0x07, 0x22, 0xFF, 0xD8, 0x9E, 0x11, 0x09, + 0x1E, 0x00, 0x10, 0xA5, 0x4D, 0x16, 0x23, 0x00, 0x09, 0x61, 0x35, 0x10, 0x4E, 0xA3, 0x05, 0x07, + 0x11, 0x0C, 0x10, 0xE9, 0x63, 0x1F, 0x32, 0x00, 0x01, 0xF5, 0x32, 0x06, 0x16, 0x5D, 0xB0, 0x33, + 0x12, 0x00, 0xC2, 0x24, 0x10, 0xF7, 0x9E, 0x03, 0x00, 0xC9, 0x03, 0x12, 0x21, 0x62, 0x03, 0x07, + 0xD0, 0x04, 0x40, 0x74, 0xFF, 0xFF, 0xB9, 0x08, 0x00, 0x81, 0x8E, 0xFF, 0xFF, 0xFF, 0xBD, 0x47, + 0x69, 0xF7, 0x70, 0x05, 0x05, 0x01, 0x00, 0x54, 0xB9, 0xFF, 0xFF, 0x74, 0x00, 0xB6, 0x03, 0x01, + 0x01, 0x00, 0x17, 0xB7, 0x28, 0x03, 0x41, 0xF7, 0xFF, 0xFF, 0x2F, 0x0A, 0x00, 0x23, 0x6F, 0xFE, + 0x49, 0x01, 0x16, 0x21, 0x1E, 0x00, 0x16, 0x42, 0x05, 0x03, 0xC6, 0x3C, 0xAA, 0xE2, 0xFD, 0xF5, + 0xD0, 0x83, 0x11, 0x00, 0x00, 0x14, 0x11, 0x04, 0x07, 0x75, 0x45, 0xB3, 0xEA, 0xFA, 0xE2, 0xA5, + 0x37, 0x27, 0x03, 0x2A, 0x89, 0xFF, 0x8A, 0x04, 0x15, 0x5A, 0xA0, 0x01, 0x12, 0x5D, 0x21, 0x00, + 0x00, 0x92, 0x28, 0x20, 0xB2, 0x4C, 0x03, 0x05, 0x11, 0xDD, 0x23, 0x00, 0x94, 0x2A, 0xFF, 0xFF, + 0xFF, 0xF3, 0x0A, 0x00, 0x03, 0xE9, 0xB4, 0x17, 0x13, 0x50, 0x37, 0x04, 0x32, 0xD3, 0xFF, 0xFF, + 0xF2, 0x14, 0x21, 0x52, 0xFF, 0x12, 0x06, 0x21, 0x03, 0xF5, 0x25, 0x07, 0x02, 0xE9, 0x21, 0x50, + 0xFF, 0xE8, 0x01, 0x00, 0x2D, 0x75, 0x03, 0x01, 0x44, 0x00, 0x10, 0x04, 0x5B, 0x05, 0x32, 0x22, + 0x00, 0x7E, 0x8C, 0x08, 0x04, 0x55, 0x03, 0x63, 0x67, 0x05, 0xE1, 0xFF, 0xFF, 0xFA, 0xE1, 0x08, + 0x50, 0x26, 0xFD, 0xFF, 0xFF, 0xBA, 0xD5, 0x2D, 0x14, 0x7B, 0xAB, 0x00, 0x85, 0x9F, 0xFF, 0xFF, + 0xFD, 0xE6, 0xFF, 0xFF, 0xC0, 0x65, 0x08, 0x20, 0x20, 0xFA, 0xA7, 0x00, 0x16, 0xDD, 0x8C, 0x2F, + 0x01, 0xED, 0x05, 0x29, 0xE7, 0x23, 0x67, 0x01, 0xE1, 0xFF, 0xFF, 0xBC, 0x01, 0x00, 0x00, 0x05, + 0x70, 0x70, 0x70, 0x54, 0x00, 0x00, 0x3A, 0x24, 0x07, 0x00, 0xD6, 0x17, 0x10, 0x1E, 0x95, 0x1A, + 0x41, 0x00, 0x08, 0xDD, 0xFF, 0x42, 0x28, 0x21, 0xDB, 0x07, 0xB1, 0x05, 0x10, 0x98, 0xED, 0x16, + 0x31, 0xFF, 0xBC, 0x86, 0x60, 0x07, 0x11, 0x67, 0x06, 0x00, 0x00, 0xD5, 0x00, 0xD0, 0x4A, 0x10, + 0xEC, 0xFF, 0xFF, 0xF2, 0x18, 0x96, 0xFF, 0xFF, 0xFF, 0x37, 0x1C, 0x5D, 0x09, 0x11, 0x05, 0x28, + 0x00, 0x60, 0x9D, 0xDB, 0xFF, 0xFF, 0xEC, 0x03, 0x68, 0x09, 0x52, 0xC8, 0x00, 0x00, 0x05, 0xD9, + 0x35, 0x01, 0x11, 0x8D, 0x41, 0x01, 0x13, 0xAF, 0x2E, 0x02, 0x41, 0xFF, 0xFF, 0xFE, 0x24, 0x20, + 0x01, 0x14, 0xC0, 0x9E, 0x00, 0x00, 0x28, 0x18, 0x00, 0xE4, 0x08, 0x60, 0xF5, 0x0D, 0x00, 0x00, + 0x14, 0xD5, 0x11, 0x00, 0x40, 0xF3, 0x62, 0x0A, 0x01, 0x3D, 0x00, 0x33, 0xBA, 0x45, 0x69, 0x4A, + 0x03, 0x46, 0xFF, 0xD4, 0x00, 0x56, 0x26, 0x03, 0x12, 0xED, 0xDC, 0x16, 0x13, 0x84, 0x10, 0x00, + 0x41, 0xCF, 0x21, 0x2E, 0xE4, 0x11, 0x00, 0xF2, 0x02, 0x00, 0x3F, 0xAE, 0xE8, 0xFD, 0xED, 0xBA, + 0x68, 0x07, 0x00, 0x00, 0x16, 0x9F, 0xEF, 0xD3, 0x0B, 0x05, 0x54, 0x09, 0xB0, 0xC5, 0xFC, 0xFC, + 0xF4, 0x03, 0xC8, 0xFF, 0xFF, 0xCF, 0x00, 0xC8, 0xCD, 0x06, 0x10, 0xC8, 0xDE, 0x15, 0x10, 0xC8, + 0x1B, 0x04, 0x10, 0xC8, 0x88, 0x02, 0x80, 0xC8, 0xFF, 0xF4, 0x02, 0x00, 0xC8, 0xFF, 0xCA, 0x12, + 0x1A, 0x15, 0x9E, 0x75, 0x2B, 0x53, 0x0B, 0x08, 0x23, 0x02, 0xF9, 0x33, 0x01, 0x91, 0x3F, 0xAC, + 0xE6, 0x72, 0x00, 0x00, 0x02, 0x8F, 0xFF, 0x84, 0x02, 0x00, 0x6B, 0x03, 0xF1, 0x02, 0xFF, 0x74, + 0x00, 0x13, 0xF4, 0xFF, 0xFF, 0xFF, 0x9E, 0x22, 0x00, 0x6E, 0xFF, 0xFF, 0xFF, 0xC6, 0x01, 0xE8, + 0x03, 0x61, 0xFF, 0x59, 0x00, 0x00, 0x0E, 0xFC, 0x9A, 0x09, 0x01, 0x3C, 0x01, 0x11, 0xE5, 0xB8, + 0x17, 0x01, 0xF9, 0x01, 0x00, 0x74, 0x29, 0x01, 0x45, 0x2A, 0x53, 0x95, 0xFF, 0xFF, 0xFF, 0x99, + 0xB7, 0x08, 0x13, 0x8D, 0x49, 0x04, 0x12, 0x85, 0x5C, 0x18, 0x20, 0xFF, 0x80, 0xFC, 0x1E, 0x11, + 0xFF, 0xF8, 0x1F, 0x00, 0xE2, 0x18, 0x01, 0xA2, 0x2B, 0x13, 0xC8, 0x8C, 0x16, 0x08, 0x08, 0x00, + 0x00, 0xF1, 0x18, 0x13, 0xC6, 0x07, 0x02, 0x13, 0xC2, 0xAF, 0x05, 0x12, 0xB9, 0x55, 0x08, 0x01, + 0x6C, 0x05, 0x00, 0x2F, 0x55, 0x51, 0x9A, 0xFF, 0xFF, 0xFF, 0x97, 0x19, 0x19, 0x02, 0xE5, 0x05, + 0x00, 0xCE, 0x08, 0x00, 0xEF, 0x2E, 0x10, 0x48, 0x1F, 0x02, 0x01, 0x9F, 0x0A, 0x11, 0xFF, 0x3C, + 0x24, 0x00, 0x99, 0x09, 0x00, 0xBB, 0x05, 0x60, 0x00, 0x85, 0xFF, 0xFF, 0xFF, 0xA6, 0x65, 0x02, + 0x60, 0xFE, 0xFF, 0xFF, 0xFE, 0x5C, 0x03, 0xED, 0x24, 0x02, 0xF0, 0x00, 0x22, 0x0F, 0xCA, 0x08, + 0x00, 0x42, 0x00, 0x07, 0x82, 0xEE, 0x84, 0x03, 0x80, 0x00, 0x03, 0x29, 0x1C, 0x0A, 0x08, 0x23, + 0x01, 0x20, 0x01, 0x52, 0xEA, 0xCD, 0x7E, 0x0E, 0x00, 0xDC, 0x05, 0x22, 0xE0, 0x2F, 0x08, 0x00, + 0x73, 0xFF, 0xE6, 0x0F, 0x00, 0x00, 0x5B, 0xE7, 0xFC, 0x03, 0x10, 0x44, 0x82, 0x38, 0x20, 0x04, + 0x00, 0x51, 0x26, 0x01, 0x1C, 0x04, 0x23, 0x00, 0x95, 0x19, 0x00, 0x00, 0x4C, 0x07, 0x12, 0xBA, + 0xA4, 0x06, 0x23, 0xFF, 0xE3, 0x45, 0x03, 0x00, 0x2E, 0x62, 0x31, 0x17, 0xFF, 0xFF, 0xEA, 0x28, + 0x01, 0x38, 0x17, 0x10, 0x26, 0xEA, 0x5A, 0x03, 0x47, 0x09, 0x22, 0xFD, 0xFF, 0xAC, 0x16, 0x11, + 0xF9, 0x45, 0x0A, 0x33, 0x00, 0x00, 0xF7, 0xFD, 0x07, 0x00, 0x54, 0x03, 0x13, 0x47, 0x08, 0x00, + 0x12, 0x48, 0x0D, 0x06, 0x23, 0xFF, 0x46, 0x28, 0x00, 0x00, 0x71, 0x00, 0x21, 0xFC, 0xFF, 0xF3, + 0x0C, 0x22, 0x02, 0xFF, 0x4B, 0x06, 0x01, 0x58, 0x00, 0x20, 0x2A, 0x00, 0x5F, 0x24, 0x00, 0x88, + 0x28, 0x01, 0x7B, 0x02, 0x22, 0xFF, 0x06, 0xB4, 0x0E, 0x13, 0xE9, 0xB5, 0x04, 0x12, 0xC5, 0xEE, + 0x2B, 0x22, 0xFF, 0x95, 0xDB, 0x09, 0x22, 0xFF, 0x54, 0x27, 0x00, 0x40, 0xF6, 0x0C, 0x00, 0x1B, + 0x81, 0x01, 0x12, 0xA2, 0xE8, 0x00, 0x00, 0x84, 0x13, 0x13, 0xF4, 0xD2, 0x08, 0x31, 0xF4, 0xFF, + 0xC1, 0x92, 0x07, 0x13, 0x37, 0x81, 0x4F, 0x44, 0x0E, 0x0C, 0x0C, 0x01, 0xAC, 0x4F, 0x44, 0x67, + 0xFC, 0xFC, 0xD9, 0x7F, 0x03, 0x14, 0x50, 0xA4, 0x06, 0x40, 0x49, 0x16, 0x00, 0x37, 0x13, 0x02, + 0xF0, 0x00, 0x01, 0x53, 0x0A, 0x02, 0xE3, 0xF2, 0x79, 0x27, 0xFF, 0xFF, 0x91, 0x37, 0xC4, 0xFF, + 0x59, 0x8F, 0x06, 0x40, 0xE7, 0xFF, 0xFF, 0xE6, 0x8C, 0x03, 0x23, 0x30, 0xAC, 0x56, 0x35, 0x70, + 0xFF, 0xE0, 0x78, 0x00, 0x00, 0x18, 0x78, 0xDC, 0x03, 0x21, 0xC0, 0x47, 0xCB, 0x04, 0x10, 0x5C, + 0x16, 0x00, 0x11, 0xC9, 0x6D, 0x0D, 0x52, 0x1D, 0xF0, 0xFF, 0xEE, 0x98, 0x3D, 0x02, 0xF0, 0x06, + 0x02, 0xBC, 0xFF, 0xFF, 0x82, 0x1A, 0xF9, 0xFF, 0xFC, 0x39, 0x00, 0x00, 0x19, 0xD4, 0xFF, 0xF6, + 0x15, 0x00, 0x9B, 0xFF, 0xFA, 0x38, 0x19, 0xF7, 0x00, 0x05, 0x76, 0x88, 0x00, 0x00, 0x26, 0xBA, + 0x28, 0x00, 0x00, 0x0E, 0x0E, 0x0F, 0x00, 0x06, 0x8D, 0x0C, 0x16, 0xB2, 0x1A, 0x04, 0x13, 0x78, + 0x73, 0x0A, 0x0F, 0x0E, 0x00, 0x18, 0x32, 0x24, 0xFC, 0xFC, 0x5E, 0x0B, 0x00, 0x08, 0x00, 0x28, + 0x7E, 0x24, 0x50, 0x0B, 0x1A, 0x80, 0x0E, 0x00, 0x10, 0x0A, 0x66, 0x3C, 0x40, 0x9D, 0xFF, 0xFF, + 0xC9, 0x08, 0x00, 0x1E, 0x22, 0x70, 0x00, 0x0F, 0x0E, 0x00, 0x26, 0x14, 0x02, 0x26, 0x2F, 0x71, + 0x00, 0x00, 0x07, 0x05, 0x0A, 0x01, 0xFB, 0x50, 0x11, 0x30, 0xFC, 0xFC, 0xBA, 0x39, 0x08, 0x1A, + 0xBC, 0x05, 0x00, 0x10, 0xBB, 0x2B, 0x27, 0xF2, 0x03, 0xA8, 0x00, 0x01, 0xB7, 0xFF, 0x76, 0x14, + 0x9A, 0xFF, 0xF5, 0x1A, 0x54, 0xFF, 0xF7, 0x52, 0x00, 0x11, 0x87, 0x5E, 0x29, 0x21, 0x09, 0x05, + 0xE0, 0x30, 0x22, 0x09, 0x3C, 0x01, 0x00, 0x14, 0x31, 0xBF, 0x00, 0x1E, 0xD0, 0x09, 0x00, 0x14, + 0x01, 0x61, 0x5D, 0x01, 0x74, 0x00, 0x11, 0x05, 0xBF, 0x05, 0x00, 0xB3, 0x0D, 0x10, 0xE1, 0xAE, + 0x0D, 0x1B, 0xE4, 0x05, 0x00, 0x00, 0xE5, 0x28, 0x28, 0x0B, 0x1C, 0xE5, 0x09, 0x46, 0x65, 0xFC, + 0xFC, 0xBB, 0x1A, 0x09, 0x13, 0x79, 0x52, 0x20, 0x12, 0xEE, 0x06, 0x09, 0x20, 0x00, 0x00, 0xA1, + 0x0E, 0x13, 0xED, 0xD3, 0x00, 0x12, 0x7B, 0x35, 0x04, 0x03, 0x7D, 0x1C, 0x03, 0xCB, 0x0A, 0x21, + 0x0C, 0xFA, 0x6F, 0x10, 0x02, 0xB9, 0x2D, 0x05, 0x74, 0x3A, 0x12, 0x90, 0xAE, 0x02, 0x12, 0x00, + 0x0A, 0x11, 0x03, 0xBD, 0x3B, 0x43, 0x1B, 0xFF, 0xFF, 0xFC, 0x6D, 0x0A, 0x12, 0x5F, 0xD6, 0x02, + 0x03, 0xC3, 0x07, 0x16, 0x80, 0xB0, 0x07, 0x15, 0x3B, 0x9D, 0x07, 0x25, 0xF2, 0x05, 0x23, 0x06, + 0x16, 0xB1, 0x77, 0x07, 0x16, 0x6B, 0x64, 0x07, 0x12, 0x26, 0x0B, 0x00, 0x43, 0x44, 0xFF, 0xFF, + 0xE1, 0xD1, 0x00, 0x16, 0x89, 0x1D, 0x08, 0x11, 0xCE, 0x73, 0x0D, 0x01, 0x6F, 0x0C, 0x01, 0x5F, + 0x08, 0x03, 0xFE, 0x2D, 0x23, 0xFF, 0xCC, 0x20, 0x00, 0x15, 0x9E, 0x0C, 0x08, 0x20, 0x01, 0xE3, + 0xC7, 0x0E, 0x12, 0x00, 0x27, 0x31, 0x23, 0xFF, 0xF6, 0x77, 0x4D, 0x43, 0x6D, 0xFF, 0xFF, 0xB8, + 0x2B, 0x00, 0x11, 0xB2, 0x4E, 0x0B, 0x01, 0x0B, 0x00, 0x07, 0xAC, 0x0E, 0x82, 0x10, 0x73, 0xC2, + 0xED, 0xFA, 0xE8, 0xBA, 0x61, 0x30, 0x00, 0x23, 0x33, 0xE1, 0x8F, 0x01, 0x20, 0xCD, 0x1E, 0x2F, + 0x17, 0x15, 0xEB, 0x6B, 0x02, 0x57, 0xD4, 0x08, 0x00, 0x00, 0x96, 0x7B, 0x02, 0x30, 0x6E, 0x00, + 0x09, 0x1A, 0x04, 0x40, 0xEB, 0x41, 0x0A, 0x54, 0x41, 0x03, 0x11, 0xD7, 0x71, 0x04, 0x01, 0x2D, + 0x0E, 0x10, 0x9B, 0x09, 0x00, 0x33, 0x1D, 0x69, 0xFF, 0x9F, 0x0A, 0x01, 0x54, 0x03, 0x11, 0x43, + 0xFD, 0x3C, 0x11, 0x1F, 0x4E, 0x2D, 0x00, 0x20, 0x0D, 0x23, 0x84, 0xFF, 0xD4, 0x07, 0x10, 0x41, + 0x09, 0x00, 0x15, 0x60, 0x0F, 0x00, 0x1F, 0x40, 0x0F, 0x00, 0x88, 0x22, 0x81, 0xFF, 0x61, 0x09, + 0x02, 0xC3, 0x00, 0x33, 0x5D, 0x6A, 0xFF, 0x3B, 0x0A, 0x00, 0x5B, 0x0E, 0x21, 0xFF, 0x44, 0xFF, + 0x00, 0x00, 0xF7, 0x5E, 0x11, 0xA4, 0xFF, 0x00, 0x10, 0x08, 0xCA, 0x04, 0x52, 0xEF, 0x3D, 0x04, + 0x54, 0xFC, 0x55, 0x07, 0x17, 0x91, 0x3B, 0x01, 0x46, 0x6A, 0x00, 0x00, 0x15, 0x9F, 0x3F, 0x10, + 0xCE, 0x38, 0x04, 0x23, 0x2D, 0xDC, 0x0E, 0x00, 0x21, 0xC8, 0x1A, 0x87, 0x01, 0x80, 0x0D, 0x6F, + 0xC3, 0xF0, 0xFD, 0xEA, 0xBB, 0x60, 0x3B, 0x02, 0x36, 0x11, 0x0A, 0x1C, 0x6D, 0x0C, 0x40, 0x3D, + 0xF4, 0xFC, 0xFC, 0xDF, 0x05, 0x20, 0x02, 0x69, 0xEF, 0x22, 0x51, 0xBC, 0x00, 0x01, 0x4B, 0xCA, + 0x38, 0x00, 0x33, 0xBC, 0x16, 0xD4, 0x42, 0x00, 0x38, 0xBC, 0x24, 0xFF, 0x0A, 0x00, 0x10, 0xF2, + 0xB0, 0x05, 0x71, 0xBC, 0x22, 0xC7, 0x81, 0x3B, 0x05, 0xD8, 0x32, 0x00, 0x00, 0x01, 0x00, 0x0F, + 0x0A, 0x00, 0xBA, 0x07, 0xCC, 0x02, 0x82, 0x06, 0x65, 0xB6, 0xE6, 0xFA, 0xEF, 0xC8, 0x7F, 0x9B, + 0x38, 0x23, 0x19, 0xC9, 0x09, 0x01, 0x10, 0xEE, 0x72, 0x1A, 0x16, 0x04, 0x99, 0x10, 0x57, 0xF8, + 0x2C, 0x00, 0x00, 0x59, 0x91, 0x01, 0x12, 0xB4, 0x68, 0x08, 0x50, 0xFE, 0x66, 0x0C, 0x38, 0xE3, + 0xC1, 0x07, 0x33, 0x15, 0x0C, 0xFD, 0x91, 0x0F, 0x01, 0xF1, 0x1F, 0x10, 0x4B, 0xB1, 0x11, 0x10, + 0xFF, 0x1A, 0x41, 0x00, 0x58, 0x0A, 0x42, 0xFF, 0x6C, 0x4B, 0xFF, 0xFB, 0x06, 0x00, 0xF1, 0x0B, + 0x44, 0xFF, 0xFF, 0x76, 0x54, 0x4A, 0x07, 0x11, 0x2C, 0xDD, 0x01, 0x61, 0x3D, 0xB8, 0xB8, 0xB8, + 0xB8, 0x23, 0x70, 0x20, 0x03, 0x3A, 0x07, 0x02, 0xBA, 0x01, 0x10, 0xC1, 0xD0, 0x05, 0x05, 0x08, + 0x56, 0x36, 0x39, 0xFF, 0xFF, 0x99, 0x03, 0x21, 0x00, 0x02, 0x43, 0x0E, 0x14, 0x43, 0x0F, 0x00, + 0x14, 0x68, 0x4D, 0x0A, 0x01, 0x01, 0x00, 0x74, 0x16, 0xEF, 0xFF, 0xFF, 0xFF, 0xFA, 0x2B, 0x1D, + 0x00, 0x01, 0x16, 0x0F, 0x19, 0x84, 0xFE, 0x0F, 0x24, 0xDD, 0x09, 0xA0, 0x10, 0x01, 0x68, 0x3A, + 0x15, 0x47, 0xE9, 0x4A, 0x24, 0xFF, 0xFF, 0xDB, 0x21, 0x00, 0x9C, 0x08, 0x10, 0xF2, 0x7D, 0x0D, + 0x05, 0x92, 0x55, 0x13, 0xA6, 0x8B, 0x02, 0x05, 0xCE, 0x0B, 0x34, 0xFF, 0xFF, 0xC9, 0xF3, 0x05, + 0x10, 0x06, 0xBF, 0x08, 0x25, 0xFC, 0x30, 0xD1, 0x06, 0x02, 0x70, 0x0A, 0x04, 0xA4, 0x68, 0x00, + 0xF8, 0x03, 0x22, 0xF5, 0x48, 0xD1, 0x05, 0x38, 0x2F, 0x00, 0x7D, 0x91, 0x06, 0x3F, 0xC8, 0x00, + 0x80, 0x0F, 0x00, 0x0A, 0x07, 0xAC, 0x01, 0x82, 0x25, 0x8B, 0xCE, 0xF2, 0xFA, 0xE7, 0xBB, 0x69, + 0xBC, 0x00, 0x14, 0x6F, 0xDB, 0x3F, 0x10, 0xDD, 0xEF, 0x08, 0x16, 0x5B, 0x34, 0x00, 0x40, 0xEA, + 0x15, 0x00, 0x08, 0x86, 0x04, 0x51, 0xED, 0x6B, 0x4B, 0x92, 0xFF, 0x3C, 0x08, 0x01, 0xD8, 0x0D, + 0x22, 0x5A, 0x00, 0x7F, 0x18, 0x20, 0xEF, 0x05, 0x8B, 0x09, 0x23, 0xFF, 0x11, 0x7A, 0x0E, 0x20, + 0xFF, 0x28, 0x65, 0x13, 0x10, 0xF3, 0x52, 0x00, 0x11, 0x47, 0xC6, 0x10, 0x13, 0xA8, 0x7F, 0x08, + 0x01, 0x10, 0x12, 0x74, 0xFF, 0x48, 0x28, 0x3C, 0x3C, 0x3C, 0x37, 0x09, 0x2E, 0x29, 0xFF, 0x2D, + 0xF2, 0x0E, 0x13, 0xEC, 0xFE, 0x00, 0x31, 0x01, 0x17, 0x7A, 0xA7, 0x0C, 0x03, 0x1F, 0x05, 0x02, + 0x1A, 0x0D, 0x13, 0xC3, 0x00, 0x11, 0x11, 0x10, 0x40, 0x02, 0x37, 0x82, 0x08, 0x00, 0x0F, 0x00, + 0x39, 0xFF, 0xC3, 0x1C, 0x0F, 0x00, 0x23, 0xFF, 0xDB, 0x1D, 0x06, 0x31, 0x01, 0x05, 0x22, 0xEF, + 0x09, 0x16, 0x85, 0x57, 0x07, 0x00, 0xE2, 0x10, 0x16, 0xE4, 0xB7, 0x06, 0x14, 0x7B, 0x17, 0x05, + 0x24, 0x00, 0x00, 0x0B, 0x14, 0x83, 0xFF, 0x3E, 0x93, 0xE0, 0xE0, 0xE0, 0xCC, 0x00, 0xC4, 0x09, + 0x20, 0xFF, 0x4A, 0xA9, 0x01, 0x15, 0xF1, 0xC3, 0x00, 0x24, 0x43, 0x92, 0xF0, 0x00, 0x01, 0x40, + 0x0D, 0x24, 0x28, 0x70, 0xF2, 0x01, 0x00, 0x62, 0x04, 0x21, 0xF9, 0x08, 0xAB, 0x02, 0x52, 0xCD, + 0x25, 0x04, 0x4B, 0xF4, 0x1F, 0x04, 0x17, 0xD0, 0x7F, 0x01, 0x13, 0x55, 0x43, 0x00, 0x03, 0x8D, + 0x01, 0x00, 0xEF, 0x00, 0x23, 0x65, 0xF8, 0x0E, 0x00, 0x12, 0xC9, 0x18, 0x02, 0x80, 0x25, 0x8D, + 0xCF, 0xF5, 0xFD, 0xE9, 0xBA, 0x60, 0x0D, 0x06, 0x28, 0x11, 0x10, 0x60, 0x07, 0x11, 0x3F, 0x56, + 0x23, 0x15, 0x57, 0x10, 0x00, 0x00, 0x59, 0x01, 0x04, 0x73, 0x2C, 0x00, 0x3F, 0x11, 0x1A, 0xFA, + 0x10, 0x00, 0x29, 0x7A, 0xFF, 0x10, 0x00, 0x2A, 0x03, 0xE1, 0x10, 0x00, 0x57, 0x4C, 0xFF, 0xFF, + 0xF2, 0xFB, 0x10, 0x00, 0x56, 0xB5, 0xFF, 0xFF, 0xA4, 0xF8, 0x10, 0x00, 0x57, 0x20, 0xFE, 0xFF, + 0xFF, 0x4F, 0x10, 0x00, 0x56, 0x86, 0xFF, 0xFF, 0xF2, 0x08, 0x10, 0x00, 0x20, 0x06, 0xE9, 0x71, + 0x0C, 0x06, 0x10, 0x00, 0x11, 0x58, 0xDE, 0x25, 0x06, 0x10, 0x00, 0x10, 0xC1, 0x2F, 0x00, 0x06, + 0x10, 0x00, 0x12, 0x2A, 0xAD, 0x0B, 0x05, 0x10, 0x00, 0x12, 0x92, 0x0D, 0x26, 0x04, 0x10, 0x00, + 0x21, 0x0B, 0xF1, 0x2F, 0x00, 0x05, 0x10, 0x00, 0x13, 0x64, 0xDC, 0x0B, 0x04, 0x10, 0x00, 0x00, + 0x1B, 0x04, 0x17, 0x50, 0x10, 0x00, 0x00, 0x69, 0x05, 0x22, 0xFD, 0xFC, 0x6D, 0x15, 0x69, 0xFE, + 0xFC, 0xFC, 0x1C, 0xD4, 0xFF, 0x01, 0x00, 0x0F, 0x10, 0x00, 0x0E, 0x04, 0xE7, 0x08, 0x00, 0xF2, + 0x02, 0x35, 0x5B, 0x04, 0x04, 0x64, 0x01, 0x04, 0x60, 0x00, 0x0F, 0x10, 0x00, 0x3D, 0x05, 0x74, + 0x03, 0x26, 0xCB, 0xFC, 0x01, 0x00, 0x11, 0x57, 0x8D, 0x17, 0x05, 0x95, 0x00, 0x11, 0x58, 0xDF, + 0x08, 0x08, 0x0F, 0x00, 0x1A, 0xD9, 0x0F, 0x00, 0x00, 0xA0, 0x06, 0x34, 0x1F, 0x04, 0x04, 0x4C, + 0x33, 0x12, 0xDF, 0x7B, 0x23, 0x04, 0x6B, 0x00, 0x12, 0xE3, 0xEC, 0x0B, 0x04, 0x0F, 0x00, 0x47, + 0xE6, 0xFF, 0xFF, 0xFC, 0x3B, 0x02, 0x11, 0xE9, 0x47, 0x12, 0x05, 0x98, 0x00, 0xA3, 0xED, 0xFF, + 0xFF, 0xE8, 0x00, 0x03, 0x27, 0x3A, 0x21, 0x01, 0x92, 0x36, 0x40, 0xFF, 0xDE, 0x6E, 0xE8, 0xA0, + 0x0B, 0x10, 0x73, 0xE7, 0x06, 0x16, 0xF3, 0x77, 0x00, 0x22, 0x9B, 0x01, 0x8E, 0x0C, 0x04, 0x87, + 0x00, 0x10, 0x47, 0x1E, 0x56, 0x70, 0xFF, 0xFF, 0xEA, 0x49, 0x0A, 0x49, 0xF0, 0x2B, 0x10, 0x02, + 0xBC, 0x0C, 0x21, 0x57, 0x00, 0x9E, 0x17, 0x94, 0xFF, 0xF9, 0x08, 0x00, 0x80, 0x80, 0x80, 0x7F, + 0x03, 0x15, 0x05, 0x16, 0x30, 0x29, 0x47, 0x01, 0xC5, 0x05, 0x05, 0x0F, 0x00, 0x16, 0x14, 0x73, + 0x10, 0x01, 0x0B, 0x09, 0x01, 0x0F, 0x00, 0x50, 0x0A, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x10, + 0x13, 0x0F, 0x00, 0x11, 0x56, 0xD4, 0x07, 0x23, 0x1B, 0x00, 0x0D, 0x20, 0x11, 0x44, 0xE3, 0x05, + 0x13, 0x27, 0xC0, 0x12, 0x30, 0xFF, 0x2B, 0x3A, 0x06, 0x00, 0x13, 0x49, 0x0A, 0x08, 0x43, 0xF4, + 0x04, 0x0D, 0xFC, 0xD4, 0x0C, 0x12, 0x94, 0x40, 0x11, 0x10, 0xB1, 0x21, 0x02, 0x42, 0x7F, 0x43, + 0x7D, 0xFB, 0xBC, 0x0E, 0x25, 0x39, 0xFE, 0xC2, 0x00, 0x10, 0xCB, 0xE2, 0x00, 0x14, 0x67, 0x7F, + 0x0C, 0x22, 0xD0, 0x1D, 0x9D, 0x32, 0x8A, 0x9C, 0xD1, 0xF5, 0xFE, 0xEB, 0xBE, 0x6A, 0x06, 0x98, + 0x09, 0x82, 0x01, 0x55, 0xB2, 0xE4, 0xFA, 0xF2, 0xD0, 0x8F, 0xB8, 0x52, 0x23, 0x0C, 0xB4, 0x35, + 0x00, 0x34, 0xFB, 0x6C, 0x00, 0x65, 0x08, 0x02, 0x16, 0x01, 0x13, 0x4A, 0x4D, 0x06, 0x41, 0xB1, + 0x4D, 0x69, 0xEC, 0x3F, 0x15, 0x00, 0x13, 0x0A, 0x32, 0xFF, 0xDE, 0x06, 0x25, 0x0F, 0x30, 0xFF, + 0x22, 0x01, 0x5C, 0x43, 0x13, 0x94, 0x07, 0x03, 0x01, 0x2A, 0x1F, 0x02, 0x07, 0x47, 0x10, 0x0D, + 0x09, 0x00, 0x11, 0x65, 0x3B, 0x00, 0x11, 0x53, 0x5C, 0x33, 0x59, 0x0C, 0x0C, 0x0C, 0x05, 0x4B, + 0x40, 0x06, 0x21, 0x00, 0x53, 0xFE, 0x00, 0x05, 0x0F, 0x00, 0x12, 0x54, 0x0F, 0x00, 0x45, 0x10, + 0x37, 0x32, 0x09, 0x0F, 0x00, 0x10, 0x57, 0x03, 0x0C, 0x33, 0xFB, 0xA4, 0x16, 0x0F, 0x00, 0x12, + 0xF0, 0x95, 0x00, 0x48, 0xDE, 0x12, 0x00, 0x54, 0xF5, 0x02, 0x12, 0x9A, 0x0F, 0x00, 0x50, 0xF8, + 0x60, 0x0D, 0x34, 0xDE, 0x08, 0x00, 0x11, 0x0F, 0x0F, 0x00, 0x12, 0x72, 0x5A, 0x27, 0x44, 0xFF, + 0xFF, 0x4A, 0x54, 0x69, 0x00, 0x01, 0x9F, 0x00, 0x15, 0x75, 0x0F, 0x00, 0x11, 0x05, 0xAB, 0x16, + 0x05, 0x0F, 0x00, 0x01, 0x75, 0x0E, 0x25, 0x9A, 0x51, 0x0F, 0x00, 0x00, 0x43, 0x03, 0x24, 0x96, + 0x40, 0xB4, 0x00, 0x10, 0x01, 0x69, 0x01, 0x24, 0x80, 0x23, 0x1F, 0x06, 0x11, 0x0F, 0xA8, 0x16, + 0x23, 0x02, 0xEC, 0x81, 0x05, 0x12, 0x36, 0x7A, 0x17, 0x10, 0x9F, 0xAD, 0x0A, 0x12, 0x03, 0x12, + 0x2A, 0x41, 0xE3, 0x03, 0x00, 0x35, 0x2A, 0x11, 0x33, 0x45, 0x71, 0xF9, 0xBE, 0x09, 0x16, 0x95, + 0x0F, 0x11, 0x00, 0xC5, 0x05, 0x24, 0x07, 0xA7, 0x2B, 0x0E, 0x03, 0xA5, 0x0B, 0x70, 0x4D, 0xB4, + 0xE6, 0xFD, 0xF2, 0xC2, 0x7B, 0x9D, 0x0F, 0x22, 0x11, 0x0C, 0xAC, 0x01, 0x16, 0xAE, 0x56, 0x03, + 0x26, 0xD9, 0xB0, 0xF3, 0x00, 0x17, 0xDC, 0x0C, 0x00, 0x22, 0xD6, 0x2F, 0x10, 0x4A, 0x14, 0xCC, + 0xD6, 0x19, 0x43, 0x00, 0x00, 0x01, 0xE8, 0x01, 0x01, 0x02, 0xF0, 0x28, 0x04, 0x24, 0x39, 0x01, + 0x73, 0x01, 0x25, 0xFD, 0x0C, 0x07, 0x0C, 0x23, 0xFF, 0xD4, 0x7C, 0x01, 0x23, 0xBE, 0xFF, 0xEC, + 0x3F, 0x46, 0x00, 0x00, 0x03, 0xF2, 0xBA, 0x07, 0x13, 0x2A, 0x7F, 0x0F, 0x03, 0x62, 0x14, 0x23, + 0xFF, 0xFA, 0xF7, 0x0B, 0x00, 0xAB, 0x0B, 0x13, 0xCB, 0x3B, 0x00, 0x16, 0xCC, 0xFD, 0x12, 0x10, + 0x08, 0x7C, 0x02, 0x12, 0x62, 0x0C, 0x00, 0x17, 0x37, 0x03, 0x07, 0x00, 0x66, 0x12, 0x13, 0xF5, + 0xE7, 0x18, 0x26, 0xA3, 0xFF, 0xF1, 0x15, 0x00, 0x06, 0x04, 0x17, 0x8E, 0x28, 0x03, 0x12, 0x59, + 0x0C, 0x00, 0x26, 0x45, 0xFF, 0x47, 0x14, 0x00, 0xC3, 0x06, 0x26, 0xEF, 0x01, 0x57, 0x16, 0x03, + 0x85, 0x0D, 0x24, 0x01, 0xE7, 0xF3, 0x17, 0x03, 0xD5, 0x01, 0x00, 0x4D, 0x1E, 0x03, 0xB3, 0x13, + 0x13, 0xFF, 0x30, 0x07, 0x10, 0x88, 0xF6, 0x03, 0x16, 0x01, 0xE0, 0x00, 0x1C, 0xB2, 0x9C, 0x0C, + 0x82, 0x1D, 0x86, 0xCD, 0xF2, 0xFA, 0xE3, 0xB1, 0x53, 0x10, 0x00, 0x23, 0x51, 0xF2, 0x4F, 0x01, + 0x10, 0xB3, 0x62, 0x11, 0x16, 0x2B, 0x0D, 0x48, 0x13, 0x9B, 0x0D, 0x08, 0x30, 0xF7, 0x71, 0x4E, + 0x79, 0x44, 0x20, 0xFE, 0x28, 0x2D, 0x33, 0x01, 0xF1, 0x11, 0x21, 0x10, 0xF5, 0xD1, 0x11, 0x14, + 0x33, 0x26, 0x01, 0x11, 0xBE, 0x30, 0x12, 0x01, 0x9C, 0x19, 0x13, 0x17, 0x4C, 0x09, 0x43, 0xC4, + 0x00, 0x49, 0xFF, 0x3F, 0x14, 0x00, 0x56, 0x03, 0x12, 0xC2, 0xE4, 0x03, 0x21, 0x3F, 0x00, 0xA1, + 0x1B, 0x52, 0xFF, 0x9F, 0x00, 0x01, 0xEB, 0x34, 0x12, 0x10, 0x0C, 0x52, 0x07, 0x30, 0x67, 0x00, + 0x00, 0x07, 0x0C, 0x30, 0xEB, 0x33, 0x09, 0x29, 0x02, 0x65, 0xF1, 0x0F, 0x00, 0x00, 0x0E, 0xD6, + 0x87, 0x00, 0x01, 0x3C, 0x4B, 0x14, 0x22, 0x41, 0x0D, 0x02, 0xA3, 0x09, 0x24, 0x6A, 0xFC, 0x61, + 0x07, 0x14, 0x16, 0x50, 0x03, 0x03, 0x7F, 0x07, 0x40, 0x04, 0x00, 0x04, 0xE2, 0x2B, 0x16, 0x21, + 0x31, 0x0E, 0x42, 0x09, 0x13, 0x60, 0xB1, 0x08, 0x03, 0x50, 0x18, 0x11, 0xC5, 0x58, 0x09, 0x21, + 0xF8, 0x03, 0xAB, 0x39, 0x40, 0xFF, 0xFF, 0xF8, 0x05, 0x89, 0x02, 0x15, 0xCF, 0x94, 0x03, 0x24, + 0x29, 0xB3, 0x04, 0x0B, 0x01, 0xFE, 0x02, 0x24, 0x36, 0xAC, 0x79, 0x01, 0x01, 0x0F, 0x00, 0x24, + 0x31, 0x93, 0xFE, 0x01, 0x01, 0x1B, 0x14, 0x10, 0x18, 0x41, 0x19, 0x23, 0xF2, 0x04, 0xC9, 0x09, + 0x42, 0xF4, 0x02, 0x2D, 0xFF, 0xD2, 0x06, 0x21, 0x03, 0xCD, 0xFC, 0x0A, 0x10, 0x01, 0x42, 0x0C, + 0x52, 0xED, 0x66, 0x46, 0xA9, 0xFF, 0x68, 0x1B, 0x25, 0x3D, 0xFC, 0xA5, 0x00, 0x10, 0xC0, 0xB0, + 0x04, 0x23, 0x5A, 0xF6, 0x0E, 0x00, 0x12, 0xC4, 0x5E, 0x38, 0x9A, 0x21, 0x8B, 0xCE, 0xF5, 0xFD, + 0xE6, 0xB6, 0x5B, 0x04, 0xAC, 0x01, 0x82, 0x0C, 0x74, 0xBE, 0xEE, 0xF9, 0xE1, 0xAA, 0x4A, 0x10, + 0x00, 0x14, 0x25, 0xD1, 0x0C, 0x10, 0xA1, 0xD7, 0x04, 0x29, 0x10, 0xE2, 0xAC, 0x01, 0x11, 0x83, + 0x21, 0x05, 0x22, 0x4D, 0xB0, 0x39, 0x0B, 0x22, 0x05, 0xE9, 0x3F, 0x05, 0x10, 0x04, 0x23, 0x15, + 0x11, 0xA0, 0x74, 0x1C, 0x01, 0xC8, 0x0E, 0x10, 0x8D, 0xBA, 0x0B, 0x10, 0x02, 0x62, 0x13, 0x24, + 0xFF, 0x1A, 0x4F, 0x0B, 0x11, 0x22, 0xEE, 0x09, 0x11, 0x09, 0x7E, 0x3F, 0x00, 0x7F, 0x0D, 0x11, + 0x99, 0x89, 0x43, 0x03, 0x50, 0x17, 0x2A, 0xFF, 0x52, 0x0F, 0x00, 0x10, 0x54, 0xF4, 0x16, 0x25, + 0xFF, 0x0F, 0x0F, 0x00, 0x00, 0x6D, 0x19, 0x25, 0xFF, 0x2E, 0x0F, 0x00, 0x14, 0x42, 0xB1, 0x0E, + 0x11, 0x8C, 0x0F, 0x00, 0x20, 0x07, 0xEE, 0x1D, 0x01, 0x22, 0x6C, 0x44, 0xAA, 0x0D, 0x1A, 0x54, + 0xD8, 0x0A, 0x42, 0x54, 0x00, 0x07, 0xBF, 0x0A, 0x00, 0x12, 0xDF, 0x0F, 0x00, 0x93, 0x00, 0x05, + 0x71, 0xCF, 0xF9, 0xFE, 0xDB, 0x7D, 0x51, 0x0F, 0x00, 0x03, 0x5F, 0x18, 0x16, 0x4C, 0x0F, 0x00, + 0x03, 0x6B, 0x18, 0x03, 0xBB, 0x1C, 0x06, 0xDF, 0x09, 0x74, 0x4B, 0x0D, 0x20, 0x20, 0x20, 0x20, + 0x02, 0x1A, 0x0F, 0x33, 0x37, 0x65, 0xFF, 0x17, 0x1E, 0x11, 0x78, 0xEA, 0x00, 0x01, 0x42, 0x00, + 0x13, 0x2C, 0x6B, 0x14, 0x33, 0xE5, 0x01, 0x20, 0x6D, 0x1B, 0x10, 0x06, 0x57, 0x02, 0x11, 0x9E, + 0x3F, 0x1A, 0x53, 0xFF, 0xEB, 0x64, 0x45, 0xAB, 0x32, 0x1B, 0x16, 0x48, 0xA3, 0x00, 0x11, 0xA6, + 0x79, 0x40, 0x04, 0x5C, 0x06, 0x12, 0xBA, 0x14, 0x27, 0x80, 0x2A, 0x92, 0xD3, 0xF5, 0xFE, 0xE7, + 0xB7, 0x5B, 0x6F, 0x00, 0x53, 0x08, 0x05, 0x11, 0x02, 0x02, 0x74, 0x32, 0x10, 0x5F, 0x1D, 0x08, + 0x1B, 0x60, 0x05, 0x00, 0x03, 0xDC, 0x07, 0x0F, 0x01, 0x00, 0x09, 0x0E, 0x3C, 0x00, 0x06, 0x37, + 0x00, 0x52, 0x08, 0x05, 0x17, 0x02, 0xFD, 0x6C, 0x1F, 0x11, 0xFC, 0xC1, 0x0B, 0x1B, 0x5C, 0x05, + 0x00, 0x0E, 0x60, 0x00, 0x0F, 0x01, 0x00, 0x08, 0x50, 0xF9, 0xFC, 0xFC, 0xFC, 0x73, 0x8A, 0x02, + 0x1A, 0x74, 0x05, 0x00, 0xF0, 0x03, 0x70, 0x04, 0x04, 0xBB, 0xFF, 0x52, 0x06, 0x5F, 0xFC, 0xF5, + 0x12, 0xA4, 0xFF, 0xFC, 0x61, 0x00, 0x33, 0x6D, 0x88, 0x04, 0x58, 0x0D, 0x0A, 0x13, 0x01, 0x02, + 0x3F, 0x00, 0x05, 0x91, 0x63, 0x22, 0x5B, 0xC6, 0x08, 0x00, 0x23, 0x0D, 0xA2, 0x4B, 0x05, 0x22, + 0x35, 0xDC, 0x55, 0x05, 0x32, 0x02, 0x77, 0xFB, 0x5F, 0x05, 0x11, 0x1A, 0xA3, 0x1C, 0x41, 0xEB, + 0x4A, 0x00, 0x4C, 0xEE, 0x10, 0x22, 0xBE, 0x1A, 0xAD, 0x0F, 0x30, 0xFC, 0x7B, 0x03, 0x29, 0x36, + 0x31, 0xFF, 0xFF, 0xE1, 0xCB, 0x11, 0x00, 0xAF, 0x0D, 0x23, 0x11, 0x00, 0x0A, 0x00, 0x24, 0xEB, + 0x4A, 0x0A, 0x00, 0x30, 0xFF, 0xFF, 0x8C, 0xE1, 0x02, 0x21, 0x4A, 0xEA, 0xE4, 0x03, 0x00, 0x1E, + 0x10, 0x11, 0x18, 0x95, 0x1A, 0x10, 0xF0, 0x05, 0x02, 0x21, 0x02, 0x71, 0x16, 0x0B, 0x11, 0x8A, + 0xE6, 0x07, 0x15, 0xD8, 0xCD, 0x05, 0x26, 0x0B, 0x9A, 0xD7, 0x05, 0x35, 0x54, 0xEF, 0xD4, 0x49, + 0x40, 0x10, 0x95, 0xE0, 0x14, 0x11, 0x0B, 0x30, 0x13, 0x25, 0x05, 0x3C, 0x01, 0x00, 0x26, 0x0F, + 0x14, 0xE4, 0x01, 0x1F, 0x40, 0x0C, 0x00, 0x05, 0x05, 0x3C, 0x13, 0x07, 0x50, 0x0A, 0x1F, 0x00, + 0x48, 0x00, 0x2C, 0x22, 0x0D, 0x0B, 0x54, 0x01, 0x16, 0x0A, 0x75, 0x5F, 0x25, 0x24, 0xD2, 0x87, + 0x0E, 0x54, 0x24, 0xFF, 0xF7, 0x69, 0x01, 0x0B, 0x00, 0x45, 0xFF, 0xFF, 0xB0, 0x14, 0x0B, 0x00, + 0x21, 0xFF, 0xE5, 0x86, 0x12, 0x21, 0x04, 0x84, 0x20, 0x20, 0x11, 0x87, 0xFE, 0x12, 0x10, 0x42, + 0x7A, 0x15, 0x21, 0xFF, 0xCA, 0x31, 0x19, 0x21, 0x15, 0xB6, 0x8D, 0x18, 0x11, 0x56, 0x10, 0x0D, + 0x26, 0x72, 0xFA, 0x08, 0x0F, 0x24, 0x34, 0xE6, 0x0B, 0x00, 0x01, 0x3C, 0x00, 0x01, 0x0B, 0x00, + 0x24, 0x1D, 0xC4, 0x95, 0x1A, 0x21, 0x4E, 0xED, 0x37, 0x05, 0x31, 0x22, 0x00, 0x07, 0x1C, 0x44, + 0x50, 0xFE, 0x83, 0x05, 0x00, 0x0F, 0xDA, 0x06, 0x34, 0xFF, 0xE3, 0x3E, 0x79, 0x00, 0x23, 0xAB, + 0x11, 0x84, 0x00, 0x33, 0xF5, 0x62, 0x01, 0x8F, 0x00, 0x14, 0xCD, 0x72, 0x5E, 0x28, 0x23, 0x8A, + 0x0D, 0x52, 0x24, 0x10, 0x0E, 0xB8, 0x04, 0x81, 0x01, 0x48, 0xAA, 0xDE, 0xF9, 0xF5, 0xD5, 0x9C, + 0xA7, 0x1C, 0x25, 0x06, 0xA3, 0xA7, 0x04, 0x12, 0x05, 0x33, 0x1B, 0x03, 0x19, 0x01, 0x47, 0x94, + 0x00, 0x19, 0xFA, 0x0F, 0x04, 0x11, 0x2E, 0xB6, 0x08, 0x31, 0x8D, 0x14, 0x21, 0x30, 0x00, 0x32, + 0x8B, 0x7D, 0xFF, 0x0C, 0x1B, 0x01, 0xE6, 0x0C, 0x10, 0xBE, 0x94, 0x18, 0x13, 0xC7, 0x9B, 0x13, + 0x20, 0xFF, 0xDC, 0x90, 0x17, 0x22, 0xDE, 0x00, 0xA0, 0x1D, 0x81, 0xFF, 0xD9, 0x39, 0xE5, 0xB2, + 0x7E, 0x4B, 0x01, 0x84, 0x40, 0x34, 0xFF, 0xFF, 0xB8, 0xAB, 0x01, 0x26, 0x0A, 0xF5, 0x2C, 0x07, + 0x02, 0x34, 0x4F, 0x24, 0xFF, 0x32, 0x56, 0x05, 0x13, 0xE3, 0xD0, 0x17, 0x01, 0x1B, 0x00, 0x00, + 0x4E, 0x0E, 0x14, 0xFB, 0x81, 0x2B, 0x01, 0xC3, 0x0E, 0x13, 0x77, 0x0D, 0x00, 0x10, 0x4A, 0xCD, + 0x02, 0x13, 0xAD, 0x03, 0x03, 0x01, 0x27, 0x36, 0x13, 0xC2, 0x06, 0x28, 0x10, 0x22, 0xB9, 0x00, + 0x14, 0xC2, 0xE7, 0x2D, 0x00, 0x20, 0x0E, 0x37, 0xEB, 0x0A, 0x00, 0x0E, 0x00, 0x2F, 0xE0, 0x00, + 0x0E, 0x00, 0x03, 0x5F, 0x1B, 0x8C, 0x8C, 0x8C, 0x7B, 0xAB, 0x03, 0x12, 0x11, 0x57, 0xB7, 0x34, + 0x04, 0x0E, 0x00, 0x17, 0x58, 0xE1, 0x07, 0x0F, 0x0E, 0x00, 0x16, 0x59, 0x1F, 0x1D, 0x21, 0x01, + 0xFB, 0x55, 0x00, 0xCB, 0x06, 0x44, 0x89, 0xBA, 0xDE, 0xF3, 0xFB, 0xF3, 0xD4, 0xAB, 0x72, 0x1E, + 0x70, 0x00, 0x36, 0x0F, 0x81, 0xEA, 0x8B, 0x01, 0x29, 0xFE, 0xA4, 0x4C, 0x64, 0x2A, 0x55, 0xEB, + 0x6E, 0x0D, 0x16, 0xF5, 0xB2, 0x0E, 0x12, 0x03, 0xD0, 0x01, 0x80, 0xDF, 0x96, 0x66, 0x4C, 0x47, + 0x59, 0x7E, 0xB6, 0x17, 0x01, 0x24, 0xFE, 0x59, 0x6D, 0x0B, 0x11, 0x9C, 0xA0, 0x02, 0x14, 0x43, + 0x92, 0x01, 0x62, 0x19, 0x99, 0xFE, 0xFF, 0xFF, 0xF6, 0xFD, 0x1C, 0x20, 0x00, 0x71, 0x2A, 0x00, + 0x18, 0x7C, 0x72, 0x24, 0x51, 0x51, 0xFB, 0xFF, 0xFF, 0xCC, 0x6D, 0x01, 0x28, 0x2A, 0xFB, 0x0D, + 0x21, 0x03, 0x31, 0x69, 0x04, 0xF5, 0x05, 0x14, 0xBA, 0x3E, 0x09, 0xD2, 0x0E, 0x7C, 0xCB, 0xF7, + 0xD4, 0x3E, 0xB7, 0xFC, 0xFC, 0xBF, 0x00, 0x01, 0xC9, 0x68, 0x17, 0x00, 0x7E, 0x09, 0x10, 0xE2, + 0x5A, 0x03, 0x11, 0x2E, 0x52, 0x06, 0x21, 0xF8, 0xF9, 0xF3, 0x15, 0x52, 0x58, 0xFF, 0xFF, 0xFC, + 0x11, 0x89, 0x08, 0x00, 0x55, 0x00, 0x25, 0x25, 0xEE, 0xC9, 0x00, 0x21, 0x77, 0x00, 0xD5, 0x08, + 0x11, 0x47, 0x77, 0x15, 0x00, 0xFF, 0x27, 0x10, 0x02, 0xCC, 0x1A, 0x43, 0xF8, 0x8D, 0x4B, 0xB3, + 0x5C, 0x09, 0x10, 0xCE, 0x94, 0x15, 0x13, 0x45, 0x6F, 0x04, 0x00, 0x2D, 0x07, 0x22, 0xF7, 0x3C, + 0xE1, 0x08, 0x11, 0x2C, 0x42, 0x34, 0x42, 0xFF, 0x81, 0x00, 0x84, 0xD8, 0x08, 0x23, 0x01, 0xD7, + 0xED, 0x1A, 0x52, 0xC4, 0xFF, 0xFF, 0xFE, 0x09, 0x06, 0x09, 0x20, 0x8F, 0x00, 0x47, 0x00, 0x12, + 0x0C, 0xAF, 0x20, 0x22, 0xE8, 0x07, 0x6C, 0x23, 0x11, 0xE1, 0x0E, 0x47, 0x52, 0xFF, 0xFF, 0x8B, + 0x00, 0xDB, 0x19, 0x02, 0x13, 0x7D, 0x1E, 0x24, 0x14, 0x0E, 0x6E, 0x08, 0x40, 0xB2, 0xFF, 0xFF, + 0x7A, 0x96, 0x1E, 0x13, 0xB8, 0xFC, 0x09, 0x13, 0x5D, 0x83, 0x1D, 0x01, 0x6E, 0x0A, 0x52, 0xDC, + 0xFF, 0xFF, 0x59, 0x0B, 0xD7, 0x19, 0x23, 0x00, 0xCF, 0x0D, 0x16, 0x13, 0x55, 0xCA, 0x22, 0x10, + 0x12, 0x2D, 0x1A, 0x13, 0x17, 0x2A, 0x00, 0x21, 0xDF, 0xFF, 0x1B, 0x28, 0x23, 0x00, 0x79, 0xA7, + 0x0D, 0x10, 0x61, 0x09, 0x17, 0x13, 0x19, 0xB6, 0x0C, 0x13, 0xD5, 0xDD, 0x0B, 0x12, 0xAE, 0x82, + 0x0D, 0x20, 0x05, 0xD3, 0x5A, 0x09, 0x13, 0x13, 0xF0, 0x06, 0x12, 0xAF, 0x3A, 0x08, 0x10, 0x35, + 0x08, 0x0E, 0x11, 0x0D, 0xDF, 0x08, 0x52, 0xF5, 0x19, 0x00, 0x03, 0xFC, 0x9E, 0x00, 0x00, 0xB7, + 0x01, 0x31, 0xFF, 0xA0, 0x94, 0xBE, 0x08, 0x42, 0x17, 0x05, 0x6F, 0xFD, 0x6F, 0x0B, 0x11, 0xDF, + 0x21, 0x1E, 0x32, 0x00, 0x11, 0xE8, 0x57, 0x01, 0x00, 0x90, 0x11, 0x11, 0xEA, 0x4E, 0x0E, 0x13, + 0x02, 0x65, 0x00, 0x00, 0x12, 0x0B, 0x11, 0x3E, 0x35, 0x00, 0x23, 0xCA, 0x15, 0xF7, 0x21, 0x11, + 0x99, 0x02, 0x05, 0x14, 0x6B, 0xA5, 0x03, 0xD3, 0x2B, 0xA2, 0xD9, 0xD7, 0x8B, 0x10, 0x00, 0x24, + 0xA6, 0xEE, 0xFF, 0xE1, 0xA6, 0xB7, 0x0B, 0x53, 0x19, 0xFB, 0xFF, 0xFF, 0xF3, 0x7E, 0x41, 0x07, + 0x14, 0x7C, 0x06, 0x1B, 0x18, 0x3F, 0xFF, 0xA6, 0x01, 0x3F, 0x03, 0x04, 0x33, 0x21, 0xF7, 0xFF, + 0xD9, 0x4B, 0x0F, 0x1E, 0x00, 0x01, 0x01, 0x1F, 0x08, 0x26, 0xBB, 0x29, 0x11, 0x00, 0x27, 0x01, + 0x04, 0x1E, 0x00, 0x01, 0x0B, 0x23, 0xD8, 0xFE, 0xBE, 0x6E, 0x40, 0x18, 0x06, 0x03, 0x15, 0x31, + 0x5D, 0x97, 0xDC, 0x5E, 0x3C, 0x00, 0x1B, 0x6C, 0x30, 0x53, 0x19, 0x91, 0x5A, 0x00, 0x29, 0x2B, + 0xB6, 0x1D, 0x00, 0x1B, 0xC4, 0x79, 0x00, 0x33, 0x2B, 0x87, 0xCC, 0xF3, 0x04, 0x4E, 0xDD, 0xB2, + 0x7A, 0x36, 0x99, 0x00, 0x7A, 0x04, 0x21, 0x36, 0x3F, 0x3A, 0x26, 0x0C, 0x15, 0x00, 0x27, 0x11, + 0x11, 0x8E, 0x03, 0x20, 0x0E, 0xFB, 0x19, 0x04, 0x16, 0x38, 0x11, 0x00, 0x11, 0x3E, 0x4F, 0x00, + 0x02, 0x99, 0x4B, 0x06, 0xA1, 0x14, 0x26, 0xFF, 0x9B, 0x11, 0x00, 0x11, 0xA2, 0x11, 0x00, 0x16, + 0xCC, 0x11, 0x00, 0x02, 0x3D, 0x11, 0x15, 0xF9, 0x36, 0x77, 0x13, 0x0A, 0xA9, 0x20, 0x02, 0x98, + 0x20, 0x03, 0xC6, 0x0C, 0x00, 0x14, 0x00, 0x18, 0x60, 0x81, 0x22, 0x18, 0xC0, 0x9A, 0x21, 0x00, + 0x90, 0x18, 0x17, 0x6F, 0xD4, 0x0C, 0x01, 0x10, 0x0D, 0x53, 0x2B, 0xF4, 0xFF, 0xFF, 0xF3, 0x74, + 0x01, 0x60, 0x06, 0xF9, 0xFF, 0xFF, 0xFC, 0x06, 0x16, 0x00, 0x16, 0x26, 0x09, 0x05, 0x36, 0xD9, + 0x00, 0xA3, 0x50, 0x11, 0x10, 0x62, 0xE2, 0x06, 0x01, 0xEA, 0x0C, 0x34, 0x89, 0x00, 0x00, 0xC7, + 0x24, 0x36, 0x87, 0x00, 0x53, 0xEF, 0x0C, 0x00, 0x2C, 0x0C, 0x35, 0x5F, 0x00, 0x2A, 0x78, 0x20, + 0x01, 0x93, 0x20, 0x42, 0x36, 0x00, 0x07, 0xFC, 0x18, 0x3E, 0x00, 0xDD, 0x34, 0x02, 0xE7, 0x09, + 0x14, 0xDA, 0x8A, 0x38, 0x13, 0x5A, 0xCB, 0x1E, 0x23, 0xB1, 0xFF, 0x38, 0x1A, 0x01, 0x87, 0x0A, + 0x03, 0x58, 0x12, 0x14, 0xB2, 0x13, 0x0D, 0x04, 0x9E, 0x01, 0x00, 0xCB, 0x1D, 0x28, 0x01, 0xEF, + 0xB0, 0x01, 0x11, 0x15, 0xC4, 0x38, 0x00, 0xC4, 0x27, 0x33, 0x44, 0x44, 0x49, 0x3B, 0x0C, 0x01, + 0x1C, 0x0C, 0x13, 0x18, 0x73, 0x53, 0x00, 0xD9, 0x1E, 0x15, 0x85, 0x9D, 0x0D, 0x12, 0xB9, 0x12, + 0x20, 0x13, 0xB7, 0x87, 0x1D, 0x01, 0xDA, 0x1A, 0x55, 0xFF, 0xDB, 0x00, 0x01, 0xE9, 0x89, 0x22, + 0x01, 0x78, 0x06, 0x35, 0x0E, 0x1A, 0xFF, 0x98, 0x0E, 0x01, 0xAF, 0x01, 0x24, 0x3E, 0x4C, 0xED, + 0x10, 0x01, 0x82, 0x1A, 0x52, 0xFF, 0xFF, 0x6F, 0x12, 0x10, 0x90, 0x18, 0x03, 0xF4, 0x0E, 0x41, + 0xF3, 0xD9, 0xAF, 0x62, 0x20, 0x03, 0x07, 0x9C, 0x00, 0x2A, 0xE4, 0x3F, 0x10, 0x00, 0x32, 0xFF, + 0xF5, 0x26, 0x10, 0x00, 0x61, 0xE6, 0x45, 0x4C, 0x65, 0xB1, 0xFF, 0x12, 0x21, 0x01, 0x10, 0x00, + 0x23, 0xDC, 0x00, 0x57, 0x04, 0x26, 0xFD, 0x10, 0x10, 0x00, 0x21, 0x0D, 0xFE, 0xA6, 0x43, 0x05, + 0x10, 0x00, 0x21, 0x00, 0xE6, 0xD2, 0x0F, 0x06, 0x10, 0x00, 0x11, 0xE1, 0x5D, 0x26, 0x05, 0x10, + 0x00, 0x21, 0x01, 0xF3, 0x39, 0x04, 0x05, 0x10, 0x00, 0x12, 0x24, 0xA9, 0x19, 0x05, 0x10, 0x00, + 0x00, 0x62, 0x20, 0x21, 0xD1, 0x01, 0x10, 0x00, 0x40, 0xE5, 0x3C, 0x3E, 0x59, 0x2C, 0x0D, 0x29, + 0xFD, 0x45, 0xA0, 0x00, 0x29, 0xD9, 0x4A, 0xB0, 0x00, 0x3B, 0xEE, 0x88, 0x1B, 0xC0, 0x00, 0x22, + 0xF3, 0x47, 0x10, 0x00, 0x50, 0xDD, 0x04, 0x06, 0x20, 0x6F, 0x9F, 0x26, 0x17, 0xF5, 0x60, 0x00, + 0x01, 0x0E, 0x0F, 0x17, 0x92, 0x90, 0x00, 0x11, 0xD4, 0x49, 0x07, 0x06, 0xB0, 0x00, 0x01, 0x05, + 0x16, 0x16, 0x0C, 0x10, 0x00, 0x01, 0xC5, 0x0C, 0x1B, 0x24, 0x10, 0x00, 0x1B, 0x25, 0x30, 0x00, + 0x16, 0x0E, 0x10, 0x00, 0x11, 0xD2, 0xC5, 0x16, 0x05, 0x10, 0x00, 0x01, 0x17, 0x16, 0x13, 0xA2, + 0xD0, 0x00, 0x31, 0x3D, 0x4E, 0x8A, 0x24, 0x13, 0x19, 0x3C, 0xB0, 0x00, 0x2A, 0xFF, 0xA1, 0xC0, + 0x00, 0x26, 0x9B, 0x07, 0x10, 0x00, 0x31, 0xF6, 0xD2, 0x98, 0x03, 0x17, 0x16, 0x12, 0xE0, 0x15, + 0x92, 0x01, 0x4E, 0xA8, 0xD8, 0xF6, 0xFA, 0xE6, 0xBE, 0x78, 0x37, 0x0B, 0x24, 0x18, 0xC3, 0x2C, + 0x00, 0x10, 0xE7, 0xC9, 0x01, 0x26, 0x05, 0xC9, 0x49, 0x00, 0x23, 0xF2, 0x20, 0x9F, 0x18, 0x40, + 0xC9, 0x59, 0x48, 0x88, 0xA8, 0x01, 0x12, 0x9D, 0x50, 0x03, 0x23, 0xED, 0x10, 0x4F, 0x0F, 0x35, + 0xF6, 0x08, 0x17, 0x76, 0x18, 0x01, 0xD8, 0x27, 0x25, 0x34, 0x43, 0x04, 0x0B, 0x01, 0x9F, 0x02, + 0x11, 0x53, 0x3C, 0x09, 0x15, 0x81, 0x1F, 0x0D, 0x34, 0x62, 0x6A, 0xFF, 0x02, 0x03, 0x01, 0x6B, + 0x02, 0x2F, 0x64, 0x70, 0x10, 0x00, 0x06, 0x00, 0xBB, 0x5F, 0x26, 0x14, 0x08, 0x10, 0x00, 0x07, + 0x45, 0x04, 0x0F, 0x10, 0x00, 0x42, 0x6C, 0x22, 0x70, 0x70, 0x70, 0x70, 0x2C, 0x90, 0x00, 0x1B, + 0x6B, 0x10, 0x00, 0x01, 0x10, 0x52, 0x15, 0x83, 0xD0, 0x00, 0x11, 0x5D, 0xF0, 0x00, 0x15, 0x93, + 0x21, 0x13, 0x34, 0x4D, 0x17, 0xFF, 0x27, 0x04, 0x12, 0x6C, 0x24, 0x21, 0x00, 0x30, 0x01, 0x10, + 0xF3, 0x30, 0x01, 0x00, 0x74, 0x07, 0x22, 0xEA, 0x03, 0x27, 0x01, 0x43, 0xC9, 0x54, 0x44, 0x92, + 0xA4, 0x05, 0x26, 0x04, 0xC3, 0x70, 0x01, 0x10, 0xE9, 0xA7, 0x10, 0x24, 0x15, 0xC1, 0x0F, 0x00, + 0x12, 0xE8, 0x4F, 0x25, 0x90, 0x01, 0x52, 0xAE, 0xDC, 0xF9, 0xFE, 0xE9, 0xC3, 0x76, 0xB6, 0x27, + 0x28, 0x12, 0x0F, 0x90, 0x03, 0x6A, 0xFB, 0xEF, 0xD0, 0xA9, 0x62, 0x09, 0xBF, 0x02, 0x2A, 0xDE, + 0x40, 0x0E, 0x02, 0x22, 0xF8, 0x31, 0x8D, 0x03, 0x31, 0x44, 0x48, 0x63, 0x5F, 0x0B, 0x15, 0xBE, + 0x5C, 0x02, 0x02, 0x25, 0x1B, 0x15, 0x2A, 0x6B, 0x02, 0x01, 0x33, 0x0F, 0x15, 0x67, 0x0F, 0x00, + 0x01, 0xC1, 0x0E, 0x15, 0x88, 0x0F, 0x00, 0x01, 0xB2, 0x10, 0x1A, 0xA1, 0x08, 0x03, 0x15, 0xAB, + 0x0F, 0x00, 0x00, 0xA3, 0x22, 0x2F, 0xFF, 0xAC, 0x0F, 0x00, 0x6E, 0x1A, 0x45, 0x0F, 0x00, 0x01, + 0x02, 0x19, 0x15, 0xA8, 0x0F, 0x00, 0x00, 0x00, 0x2D, 0x25, 0xFF, 0x98, 0x0F, 0x00, 0x01, 0xB8, + 0x0E, 0x19, 0x7D, 0x9A, 0x04, 0x24, 0xFF, 0x57, 0x0F, 0x00, 0x10, 0x07, 0xC3, 0x0D, 0x22, 0xFD, + 0x17, 0x78, 0x03, 0x21, 0x40, 0x64, 0xF9, 0x2A, 0x19, 0xA3, 0x59, 0x01, 0x29, 0xEF, 0x21, 0x56, + 0x04, 0x15, 0x33, 0x77, 0x01, 0x51, 0xF4, 0xD5, 0xAE, 0x64, 0x09, 0xC0, 0x22, 0x09, 0x3C, 0x05, + 0x00, 0x01, 0x00, 0x17, 0x30, 0x32, 0x00, 0x0D, 0x0C, 0x00, 0x12, 0xE6, 0x38, 0x14, 0x16, 0x0D, + 0x0C, 0x04, 0x2F, 0x00, 0x00, 0x0C, 0x00, 0x45, 0x01, 0x6E, 0x22, 0x17, 0xD9, 0x2A, 0x02, 0x1E, + 0xDC, 0x0C, 0x00, 0x01, 0x90, 0x00, 0x3F, 0x3B, 0x00, 0x00, 0x90, 0x00, 0x51, 0x12, 0xE5, 0xB8, + 0x0E, 0x17, 0x10, 0x14, 0x01, 0x1F, 0x44, 0x0C, 0x00, 0x05, 0x2C, 0x0E, 0x0B, 0x58, 0x01, 0x17, + 0xF5, 0xEF, 0x02, 0x0B, 0x0B, 0x00, 0x02, 0x55, 0x01, 0x17, 0x42, 0x70, 0x00, 0x0F, 0x0B, 0x00, + 0x3E, 0x01, 0x4C, 0x01, 0x16, 0xBD, 0x3F, 0x01, 0x1C, 0xC0, 0x0B, 0x00, 0x01, 0x84, 0x00, 0x1E, + 0x33, 0x79, 0x00, 0x0F, 0x0B, 0x00, 0x60, 0x07, 0x08, 0x06, 0x92, 0x03, 0x54, 0xA8, 0xD7, 0xF6, + 0xFA, 0xE7, 0xC2, 0x7B, 0x85, 0x2C, 0x25, 0x12, 0xBC, 0xF7, 0x05, 0x00, 0x8D, 0x25, 0x26, 0x03, + 0xC5, 0x49, 0x01, 0x23, 0xFE, 0x3E, 0x81, 0x1C, 0x52, 0xCF, 0x5F, 0x4B, 0x86, 0xFA, 0x9A, 0x28, + 0x00, 0xB7, 0x04, 0x23, 0xF2, 0x12, 0xB2, 0x14, 0x44, 0xFF, 0x23, 0x10, 0xFE, 0xD6, 0x2E, 0x01, + 0x7B, 0x17, 0x11, 0x60, 0xD9, 0x13, 0x15, 0x8E, 0x10, 0x16, 0x25, 0x80, 0x54, 0x38, 0x05, 0x01, + 0x34, 0x26, 0x25, 0x91, 0x68, 0x58, 0x05, 0x01, 0x92, 0x10, 0x16, 0x94, 0x78, 0x05, 0x6F, 0x04, + 0x2C, 0x2C, 0x2C, 0x2C, 0x1A, 0xC8, 0x05, 0x25, 0x12, 0x21, 0x48, 0x02, 0x05, 0xC8, 0x05, 0x12, + 0x8C, 0xC2, 0x00, 0x1F, 0xB8, 0x10, 0x00, 0x15, 0x48, 0x03, 0x04, 0x04, 0xAA, 0x10, 0x00, 0x03, + 0xFD, 0x1C, 0x25, 0xB8, 0x6A, 0xC8, 0x06, 0x01, 0x3F, 0x1E, 0x35, 0xB8, 0x54, 0xFF, 0xC6, 0x0F, + 0x10, 0xB2, 0x10, 0x00, 0x22, 0x39, 0xFF, 0xB3, 0x13, 0x01, 0x65, 0x4C, 0x54, 0xFF, 0xFF, 0xB8, + 0x0A, 0xFB, 0x19, 0x10, 0x21, 0x08, 0xF6, 0xF5, 0x10, 0x00, 0xD6, 0x05, 0x33, 0xFB, 0x1C, 0x00, + 0xA9, 0x19, 0x12, 0xB8, 0x50, 0x01, 0x52, 0xD7, 0x5D, 0x42, 0x7A, 0xF6, 0x10, 0x00, 0x24, 0x04, + 0xCC, 0x6E, 0x01, 0x21, 0xFC, 0xE1, 0x64, 0x0D, 0x14, 0x1A, 0xC3, 0x20, 0x22, 0x6D, 0xA3, 0x74, + 0x0D, 0x80, 0x07, 0x60, 0xB9, 0xE8, 0xFD, 0xEF, 0xB7, 0x44, 0x95, 0x16, 0x23, 0xB8, 0x13, 0x98, + 0x09, 0x51, 0xF1, 0xFC, 0xFC, 0xFC, 0xE5, 0x77, 0x00, 0x10, 0xA6, 0x86, 0x02, 0x10, 0x34, 0xB8, + 0x16, 0x15, 0xE8, 0xB7, 0x00, 0x1F, 0xFF, 0x10, 0x00, 0x92, 0x01, 0x40, 0x03, 0x26, 0xFC, 0xFF, + 0x10, 0x00, 0x06, 0x01, 0x00, 0x0F, 0x10, 0x00, 0x02, 0x11, 0xEF, 0xD3, 0x03, 0x1E, 0xC0, 0xE0, + 0x00, 0x0F, 0x10, 0x00, 0xA0, 0x22, 0x09, 0x05, 0xC8, 0x01, 0x50, 0xD9, 0xFC, 0xFC, 0xFC, 0xED, + 0x47, 0x17, 0x1F, 0xF0, 0x05, 0x00, 0x6F, 0x25, 0x0B, 0x09, 0xD8, 0x0D, 0x00, 0x5C, 0x4C, 0x24, + 0xFC, 0xB9, 0x57, 0x1D, 0x1F, 0xBB, 0x09, 0x00, 0x19, 0x1F, 0xBA, 0x09, 0x00, 0x19, 0x1F, 0xB9, + 0x09, 0x00, 0x19, 0x1F, 0xB8, 0x09, 0x00, 0x14, 0x13, 0x24, 0x7C, 0x0C, 0x24, 0x00, 0x3B, 0x33, + 0x17, 0x01, 0xD6, 0x25, 0x41, 0x8B, 0x2C, 0x54, 0x92, 0xED, 0x0E, 0x13, 0x56, 0xB5, 0x1B, 0x22, + 0xE8, 0x08, 0x09, 0x00, 0x20, 0xF8, 0x4C, 0xD8, 0x10, 0x41, 0xF7, 0xD8, 0x9F, 0x29, 0x10, 0x21, + 0x05, 0xF8, 0x0C, 0x01, 0x79, 0x2A, 0x66, 0x1A, 0xF8, 0xFC, 0xFC, 0xFC, 0x90, 0x4B, 0x05, 0x12, + 0x82, 0xBB, 0x17, 0x05, 0x2F, 0x08, 0x12, 0xE9, 0x6C, 0x0D, 0x04, 0x6B, 0x05, 0x01, 0x5C, 0x08, + 0x16, 0x5F, 0x10, 0x00, 0x13, 0xC8, 0x67, 0x3E, 0x03, 0x10, 0x00, 0x01, 0x8A, 0x1C, 0x16, 0x92, + 0x9B, 0x05, 0x14, 0xA1, 0x09, 0x18, 0x02, 0x10, 0x00, 0x24, 0x16, 0xF9, 0xBA, 0x0D, 0x02, 0xBB, + 0x05, 0x01, 0x3A, 0x22, 0x15, 0x5E, 0x10, 0x00, 0x23, 0x04, 0xE4, 0x4E, 0x00, 0x03, 0x10, 0x00, + 0x16, 0x54, 0xF0, 0x0F, 0x01, 0x10, 0x00, 0x14, 0xC1, 0x4E, 0x00, 0x02, 0x10, 0x00, 0x01, 0x33, + 0x0C, 0x17, 0xCA, 0xB0, 0x06, 0x01, 0xF5, 0x00, 0x1A, 0x04, 0x10, 0x00, 0x26, 0xFF, 0x4B, 0x10, + 0x00, 0x10, 0xA4, 0x32, 0x00, 0x15, 0xAA, 0x10, 0x00, 0x20, 0xF6, 0x18, 0xF3, 0x04, 0x26, 0xF9, + 0x11, 0x90, 0x00, 0x01, 0x90, 0x19, 0x16, 0x68, 0x10, 0x00, 0x24, 0x06, 0xED, 0xEE, 0x04, 0x03, + 0x6B, 0x06, 0x01, 0x65, 0x09, 0x16, 0x26, 0x10, 0x00, 0x14, 0x3D, 0x25, 0x1B, 0x03, 0x10, 0x00, + 0x10, 0x02, 0xD6, 0x0D, 0x26, 0xE1, 0x02, 0x20, 0x01, 0x13, 0x87, 0x09, 0x1A, 0x04, 0x10, 0x00, + 0x17, 0x2B, 0xD8, 0x0C, 0x01, 0x70, 0x01, 0x00, 0xDC, 0x22, 0x26, 0xF4, 0x0C, 0x10, 0x00, 0x12, + 0x75, 0x61, 0x01, 0x05, 0x10, 0x00, 0x29, 0x1C, 0xFE, 0xDC, 0x0A, 0x03, 0x51, 0x0F, 0x18, 0x1F, + 0x84, 0x09, 0x1E, 0xD9, 0xC4, 0x08, 0x0F, 0x0C, 0x00, 0xFA, 0x0F, 0x84, 0x09, 0x19, 0x23, 0x17, + 0x14, 0x48, 0x08, 0x10, 0x9C, 0x5A, 0x01, 0x27, 0x77, 0x00, 0x99, 0x58, 0x12, 0x1E, 0xD9, 0x11, + 0x13, 0xAA, 0x71, 0x08, 0x01, 0x30, 0x00, 0x37, 0x22, 0x00, 0xA6, 0x6E, 0x00, 0x22, 0x45, 0xFF, + 0x1F, 0x02, 0x00, 0x57, 0x02, 0x04, 0x5B, 0x22, 0x22, 0x78, 0xFF, 0x30, 0x0D, 0x00, 0x96, 0x13, + 0x04, 0xA6, 0x33, 0x22, 0xAC, 0xFF, 0xC5, 0x1B, 0x26, 0xB2, 0xFF, 0xA8, 0x10, 0x22, 0xDF, 0xFF, + 0x32, 0x17, 0x02, 0xD0, 0x12, 0x24, 0xA4, 0x00, 0xC6, 0x21, 0x00, 0x81, 0x11, 0x02, 0x06, 0x39, + 0x15, 0xD6, 0xFA, 0x0B, 0x00, 0x99, 0x2B, 0x02, 0x58, 0x11, 0x26, 0xFE, 0x0B, 0xA7, 0x24, 0x10, + 0x3F, 0xF1, 0x2F, 0x22, 0xF6, 0xEC, 0x1C, 0x54, 0x12, 0xAD, 0x28, 0x2E, 0x10, 0x43, 0x0D, 0x30, + 0x52, 0xF1, 0xB8, 0xFF, 0xFF, 0x6C, 0x72, 0x10, 0x11, 0xAD, 0x89, 0x14, 0x51, 0xCA, 0xFF, 0xFF, + 0xED, 0x83, 0x8A, 0x1F, 0x00, 0xA5, 0x08, 0x11, 0x76, 0x25, 0x03, 0x81, 0xCE, 0xFF, 0xFF, 0xE9, + 0x4F, 0xFF, 0xFF, 0xD1, 0x11, 0x0D, 0x21, 0xDC, 0x61, 0xE1, 0x11, 0x40, 0xD2, 0xFF, 0xFF, 0xE5, + 0x27, 0x2C, 0x10, 0x08, 0xA9, 0x03, 0x21, 0xA8, 0x5D, 0x65, 0x21, 0x10, 0xD6, 0xD8, 0x14, 0x10, + 0xE7, 0x89, 0x1E, 0x51, 0xAE, 0xFF, 0xFF, 0x74, 0x58, 0x5F, 0x12, 0x10, 0xDA, 0x38, 0x30, 0x10, + 0xB2, 0x59, 0x1E, 0x51, 0xE2, 0xFF, 0xFF, 0x40, 0x54, 0x3C, 0x38, 0x10, 0xDE, 0x7E, 0x12, 0x40, + 0x7E, 0xFF, 0xFF, 0x99, 0x18, 0x09, 0x21, 0x0E, 0x50, 0xDD, 0x12, 0x40, 0xE2, 0xFF, 0xFF, 0xD5, + 0xAD, 0x0C, 0x20, 0xCB, 0x49, 0x40, 0x34, 0x11, 0x4B, 0x20, 0x16, 0x10, 0xE6, 0x74, 0x00, 0x50, + 0x16, 0xFF, 0xFF, 0xF9, 0x81, 0xF6, 0x00, 0x11, 0x47, 0x80, 0x03, 0x11, 0xEA, 0x66, 0x34, 0x40, + 0xE1, 0xFF, 0xFF, 0xDE, 0xE6, 0x21, 0x00, 0xE4, 0x0A, 0x31, 0x6C, 0x00, 0xEE, 0x5A, 0x3A, 0x22, + 0xAD, 0xFF, 0x66, 0x20, 0x11, 0x3E, 0x00, 0x22, 0x11, 0xF2, 0x4D, 0x04, 0x11, 0x79, 0x09, 0x01, + 0x11, 0x0C, 0x41, 0x22, 0x10, 0x75, 0xE2, 0x2F, 0x13, 0xC1, 0x3F, 0x0D, 0x12, 0xD5, 0x90, 0x04, + 0x10, 0x79, 0x71, 0x23, 0x13, 0xBD, 0xFC, 0x1F, 0x12, 0xA1, 0xDC, 0x15, 0x32, 0x7D, 0x00, 0xFE, + 0x79, 0x05, 0x00, 0x19, 0x06, 0x12, 0x6D, 0xF6, 0x28, 0x21, 0x81, 0x02, 0xEF, 0x35, 0x02, 0x80, + 0x31, 0x12, 0x39, 0xD6, 0x2F, 0x32, 0x85, 0x06, 0xFF, 0xF1, 0x2C, 0x70, 0x73, 0xFF, 0xFF, 0xFC, + 0x0A, 0x00, 0x00, 0x98, 0x21, 0x10, 0x89, 0x26, 0x30, 0x12, 0xAE, 0x00, 0x57, 0x11, 0xD2, 0xAE, + 0x5F, 0x55, 0xFF, 0xFF, 0x8E, 0x12, 0x0E, 0x90, 0x03, 0x14, 0x89, 0x8D, 0x42, 0x10, 0xFC, 0x3C, + 0x05, 0x24, 0xEC, 0x08, 0x2D, 0x0A, 0x00, 0xC4, 0x21, 0x29, 0xFF, 0x5B, 0x0E, 0x00, 0x19, 0xC3, + 0x0E, 0x00, 0x29, 0xFF, 0x2D, 0x0E, 0x00, 0x19, 0x94, 0x0E, 0x00, 0x28, 0xF2, 0x0C, 0x0E, 0x00, + 0x29, 0xFF, 0x65, 0x0E, 0x00, 0x28, 0xCE, 0x01, 0x0E, 0x00, 0x29, 0xFF, 0x35, 0x0E, 0x00, 0x16, + 0x9E, 0x0E, 0x00, 0x55, 0xF9, 0xFF, 0xFF, 0xF6, 0x11, 0x0E, 0x00, 0x00, 0xD1, 0x15, 0x15, 0x6E, + 0x0E, 0x00, 0x64, 0x40, 0xFE, 0xFF, 0xFF, 0xD6, 0x1D, 0x0E, 0x00, 0x10, 0x20, 0x88, 0x02, 0x15, + 0x5B, 0x0E, 0x00, 0x00, 0x19, 0x05, 0x15, 0xC3, 0x0E, 0x00, 0x01, 0xA8, 0x05, 0x05, 0x0E, 0x00, + 0x29, 0x00, 0x81, 0x0E, 0x00, 0x28, 0x1D, 0xFD, 0x0E, 0x00, 0x29, 0x00, 0xB2, 0x0E, 0x00, 0x19, + 0x4B, 0x0E, 0x00, 0x28, 0x03, 0xE1, 0x0E, 0x00, 0x29, 0x00, 0x7D, 0x0E, 0x00, 0x28, 0x1A, 0xFC, + 0x0E, 0x00, 0x29, 0x00, 0xAE, 0x0E, 0x00, 0x19, 0x47, 0x0E, 0x00, 0x28, 0x02, 0xDE, 0x0E, 0x00, + 0x00, 0x73, 0x03, 0x26, 0xEC, 0x13, 0x10, 0x0C, 0x92, 0x02, 0x51, 0xA6, 0xD4, 0xF5, 0xFA, 0xE9, + 0xC0, 0x7C, 0x10, 0x0C, 0x15, 0x17, 0x10, 0x0C, 0x10, 0xF5, 0x8F, 0x78, 0x27, 0x06, 0xCC, 0xFF, + 0x03, 0x13, 0x53, 0xEF, 0x11, 0x40, 0xCC, 0x5E, 0x4A, 0x84, 0xE9, 0x0A, 0x21, 0xE1, 0x05, 0xBB, + 0x17, 0x24, 0xF0, 0x0F, 0x66, 0x03, 0x34, 0x52, 0x1C, 0xFF, 0x10, 0x0C, 0x01, 0xEB, 0x12, 0x25, + 0x9A, 0x44, 0x56, 0x2A, 0x11, 0x06, 0xDA, 0x1B, 0x16, 0x60, 0x2B, 0x29, 0x00, 0x08, 0x01, 0x26, + 0xE7, 0x6E, 0x46, 0x21, 0x00, 0xD0, 0x00, 0x2A, 0xF6, 0x70, 0x10, 0x00, 0x1F, 0xF8, 0x10, 0x00, + 0x7D, 0x1A, 0x6D, 0x10, 0x00, 0x2A, 0xF5, 0x5D, 0xD0, 0x00, 0x33, 0xE4, 0x40, 0xFF, 0x45, 0x34, + 0x21, 0x00, 0x07, 0xF0, 0x00, 0x23, 0x12, 0xFE, 0x0D, 0x03, 0x02, 0x2C, 0x33, 0x32, 0x9B, 0x00, + 0xCA, 0xF9, 0x38, 0x02, 0xCF, 0x26, 0x22, 0xFF, 0x52, 0x1B, 0x25, 0x40, 0xCD, 0x57, 0x43, 0x81, + 0x50, 0x01, 0x48, 0xDF, 0x04, 0x00, 0x04, 0x6A, 0x3D, 0x00, 0x92, 0x28, 0x25, 0x16, 0xBB, 0x90, + 0x01, 0x02, 0xD0, 0x26, 0xA2, 0x02, 0x4C, 0xA7, 0xD7, 0xF8, 0xFD, 0xEC, 0xC2, 0x86, 0x1F, 0x9C, + 0x21, 0x08, 0xA8, 0x15, 0x5A, 0xFC, 0xF1, 0xCC, 0x86, 0x1E, 0x18, 0x12, 0x2A, 0xF3, 0x52, 0x18, + 0x12, 0x23, 0xF9, 0x33, 0x9C, 0x0E, 0x32, 0x45, 0x58, 0x9B, 0x8C, 0x09, 0x05, 0xA2, 0x05, 0x00, + 0x3C, 0x1B, 0x25, 0xFE, 0x16, 0x0F, 0x00, 0x01, 0xAD, 0x08, 0x15, 0x50, 0x0F, 0x00, 0x01, 0x35, + 0x16, 0x15, 0x71, 0x0F, 0x00, 0x01, 0x7E, 0x05, 0x15, 0x81, 0x0F, 0x00, 0x00, 0xCB, 0x19, 0x25, + 0xFF, 0x7E, 0x0F, 0x00, 0x10, 0x38, 0x0A, 0x00, 0x15, 0x62, 0x0F, 0x00, 0x01, 0x84, 0x04, 0x12, + 0x37, 0x0F, 0x00, 0x30, 0x01, 0x15, 0x63, 0xCC, 0x15, 0x22, 0xE4, 0x02, 0xF6, 0x0C, 0x03, 0x39, + 0x27, 0x19, 0x63, 0xA5, 0x00, 0x26, 0x96, 0x01, 0xB2, 0x08, 0x45, 0xFE, 0xBF, 0x4A, 0x00, 0x99, + 0x10, 0x3D, 0x43, 0x31, 0x0D, 0xC4, 0x06, 0x0F, 0x0F, 0x00, 0x95, 0x5F, 0x13, 0x10, 0x22, 0x01, + 0xFA, 0x74, 0x03, 0x1E, 0x1B, 0x52, 0x74, 0x03, 0x1C, 0xE0, 0x74, 0x03, 0x1B, 0x51, 0x74, 0x03, + 0x1B, 0x98, 0x74, 0x03, 0x1B, 0xC7, 0x74, 0x03, 0x1B, 0xE6, 0x74, 0x03, 0x1F, 0xF5, 0x74, 0x03, + 0x9C, 0x1B, 0xF6, 0x74, 0x03, 0x1B, 0xE7, 0x74, 0x03, 0x1B, 0xCE, 0x74, 0x03, 0x1B, 0x9F, 0x74, + 0x03, 0x1A, 0x59, 0x74, 0x03, 0x2A, 0xE9, 0x08, 0x74, 0x03, 0x19, 0x5A, 0x74, 0x03, 0x26, 0xFD, + 0x71, 0x74, 0x03, 0x06, 0x6E, 0x0B, 0x02, 0x01, 0x00, 0x58, 0x07, 0xD2, 0xFF, 0xFF, 0xFE, 0x17, + 0x1E, 0x2B, 0x26, 0xF0, 0x4B, 0x3C, 0x57, 0x48, 0xFB, 0xFF, 0xFF, 0xAB, 0x10, 0x00, 0x32, 0x00, + 0x53, 0xFA, 0x41, 0x26, 0x05, 0x01, 0x00, 0x4C, 0x37, 0xE2, 0x22, 0x00, 0x29, 0x87, 0x0A, 0x7C, + 0x19, 0x6B, 0xFA, 0xED, 0xD3, 0xA9, 0x5F, 0x07, 0x7C, 0x19, 0x2B, 0xE6, 0x49, 0xBC, 0x18, 0x24, + 0xFC, 0x3B, 0x23, 0x03, 0x21, 0x47, 0x63, 0x4D, 0x02, 0x25, 0xD9, 0x02, 0x7F, 0x02, 0x3A, 0x01, + 0xAA, 0xFF, 0x6C, 0x19, 0x01, 0x31, 0x01, 0x16, 0x6B, 0x10, 0x00, 0x01, 0x45, 0x29, 0x07, 0xE4, + 0x0C, 0x11, 0x01, 0xBB, 0x05, 0x06, 0x10, 0x00, 0x1B, 0x0A, 0xFC, 0x18, 0x11, 0x32, 0x23, 0x1A, + 0x06, 0x10, 0x00, 0x12, 0x92, 0xD9, 0x30, 0x02, 0x10, 0x00, 0x20, 0x04, 0x28, 0xEF, 0x41, 0x33, + 0xFF, 0xF1, 0x09, 0x24, 0x13, 0x03, 0xA1, 0x00, 0x1A, 0x78, 0xB0, 0x00, 0x29, 0x8F, 0x02, 0x10, + 0x00, 0x26, 0x89, 0x00, 0xE3, 0x03, 0x13, 0xE9, 0xF4, 0x0D, 0x04, 0x3F, 0x03, 0x23, 0xA9, 0xFF, + 0xFC, 0x3C, 0x03, 0x10, 0x00, 0x14, 0x69, 0x47, 0x31, 0x03, 0x10, 0x00, 0x01, 0x75, 0x1B, 0x16, + 0x88, 0x10, 0x00, 0x01, 0xEE, 0x1A, 0x17, 0xCD, 0x7F, 0x03, 0x22, 0xA9, 0xFF, 0x55, 0x35, 0x04, + 0x10, 0x00, 0x01, 0x41, 0x00, 0x16, 0x57, 0x10, 0x00, 0x01, 0x41, 0x00, 0x16, 0x9C, 0x10, 0x00, + 0x01, 0x41, 0x00, 0x26, 0xE1, 0x01, 0xE0, 0x00, 0x12, 0xA9, 0xB7, 0x0A, 0x05, 0x10, 0x00, 0x1B, + 0x69, 0x40, 0x01, 0x01, 0x41, 0x00, 0x17, 0xB0, 0x40, 0x01, 0x00, 0x78, 0x1E, 0x37, 0xF1, 0x05, + 0x10, 0x08, 0x31, 0x72, 0x8D, 0xD0, 0xF4, 0xFA, 0xE0, 0xAE, 0x4B, 0x3C, 0x0B, 0x14, 0x70, 0xB3, + 0x1D, 0x2A, 0xAC, 0x06, 0x08, 0x31, 0x22, 0x8A, 0x00, 0x08, 0x31, 0x30, 0xDB, 0x62, 0x4C, 0xF6, + 0x1E, 0x43, 0xFB, 0x1B, 0x00, 0x51, 0xCF, 0x26, 0x21, 0x04, 0xD8, 0x27, 0x41, 0x00, 0xEB, 0x1B, + 0x12, 0xEC, 0x3E, 0x60, 0x00, 0x40, 0x1C, 0x23, 0xA1, 0xFF, 0xE1, 0x1C, 0x11, 0x56, 0x7B, 0x00, + 0x23, 0x9E, 0xFF, 0x34, 0x3D, 0x52, 0x3F, 0xFF, 0xDD, 0xAA, 0x71, 0x97, 0x31, 0x65, 0xBD, 0x04, + 0x00, 0x00, 0x0A, 0x11, 0x27, 0x28, 0x24, 0xFF, 0xA0, 0xE3, 0x20, 0x12, 0x0C, 0xC6, 0x2B, 0x14, + 0xAC, 0xBA, 0x83, 0x12, 0x6E, 0x83, 0x00, 0x13, 0xBD, 0x24, 0x40, 0x22, 0x01, 0xAB, 0x10, 0x00, + 0x13, 0xCB, 0xF0, 0x1E, 0x13, 0x0A, 0x6B, 0x44, 0x13, 0xD6, 0xFB, 0x6B, 0x23, 0x07, 0xAA, 0x43, + 0x36, 0x03, 0xD4, 0x4A, 0x13, 0x03, 0x55, 0x2B, 0x2A, 0x9D, 0x00, 0xEA, 0x72, 0x14, 0x42, 0xD9, + 0x02, 0x38, 0x72, 0xFF, 0xFF, 0xE6, 0x22, 0x02, 0x10, 0x1B, 0x60, 0xFF, 0x15, 0x04, 0x2F, 0x68, + 0xA1, 0xA8, 0x20, 0x21, 0x06, 0xDB, 0xE2, 0x2B, 0x14, 0xA1, 0x42, 0x0C, 0x01, 0x18, 0x0C, 0x10, + 0x64, 0x1F, 0x0E, 0x15, 0xD2, 0xD8, 0x0B, 0x10, 0x69, 0x3D, 0x13, 0x24, 0xFC, 0x14, 0x52, 0x36, + 0x33, 0x4B, 0x14, 0xFC, 0x19, 0x04, 0x00, 0xEA, 0x00, 0x21, 0xFC, 0x17, 0x99, 0x0A, 0x52, 0xFE, + 0x89, 0x43, 0x73, 0xF5, 0x00, 0x04, 0x25, 0x1E, 0xEC, 0x59, 0x01, 0x10, 0xF1, 0xFA, 0x08, 0x23, + 0x33, 0xDF, 0x0E, 0x00, 0x12, 0xE4, 0xAF, 0x40, 0x80, 0x0C, 0x6B, 0xBE, 0xE9, 0xFE, 0xF3, 0xCA, + 0x78, 0x89, 0x0C, 0x33, 0x0E, 0x0E, 0x1C, 0xAA, 0x4E, 0x07, 0x01, 0x00, 0x28, 0xCD, 0xE0, 0xB3, + 0x02, 0x1A, 0xD0, 0x0E, 0x00, 0x41, 0x3C, 0x44, 0x44, 0x44, 0x6D, 0x22, 0x55, 0x9D, 0x44, 0x44, + 0x44, 0x38, 0xAC, 0x23, 0x01, 0x9E, 0x53, 0x0F, 0x0E, 0x00, 0xFF, 0x30, 0x04, 0xA0, 0x0A, 0x01, + 0xE8, 0x55, 0x14, 0x82, 0x6F, 0x47, 0x36, 0xFC, 0xCD, 0x38, 0x0C, 0x06, 0x01, 0x09, 0x2F, 0x0F, + 0x10, 0x00, 0xED, 0x1A, 0x37, 0x10, 0x00, 0x26, 0xCF, 0x31, 0x1C, 0x07, 0x00, 0x57, 0x24, 0x11, + 0xC8, 0x29, 0x2F, 0x02, 0x73, 0x7C, 0x00, 0x75, 0x31, 0x25, 0xBA, 0x0A, 0xB0, 0x16, 0x01, 0x2C, + 0x07, 0x20, 0xA0, 0x00, 0x90, 0x2B, 0x14, 0xC9, 0x56, 0x41, 0x21, 0xFF, 0x74, 0x92, 0x2A, 0x23, + 0xFD, 0x28, 0xB8, 0x2D, 0x22, 0xFF, 0x30, 0xC2, 0x11, 0x30, 0xE1, 0x60, 0x43, 0x72, 0x76, 0x20, + 0xFF, 0xD2, 0xD2, 0xA0, 0x07, 0x05, 0x03, 0x00, 0xAF, 0x0F, 0x24, 0x0C, 0xB2, 0x0E, 0x00, 0x12, + 0xF6, 0x74, 0x2E, 0xA7, 0x01, 0x46, 0xA7, 0xD8, 0xF7, 0xFE, 0xEE, 0xCA, 0x88, 0x1D, 0x2C, 0x22, + 0x10, 0x28, 0xC8, 0x01, 0x12, 0x2A, 0x0E, 0x54, 0x00, 0x0B, 0x00, 0x35, 0x3B, 0x03, 0xF5, 0x7A, + 0x21, 0x12, 0x59, 0xA0, 0x0E, 0x15, 0xC5, 0x5A, 0x17, 0x12, 0x84, 0x40, 0x43, 0x21, 0x94, 0xFF, + 0x96, 0x49, 0x03, 0x03, 0x24, 0x12, 0xA6, 0xA2, 0x21, 0x01, 0xB0, 0x24, 0x22, 0x00, 0xDB, 0x58, + 0x3F, 0x14, 0x31, 0x48, 0x10, 0x22, 0x09, 0xFE, 0x6B, 0x04, 0x23, 0x06, 0xFA, 0x65, 0x2F, 0x14, + 0x31, 0x41, 0x35, 0x00, 0x4C, 0x2B, 0x13, 0x6B, 0x88, 0x2B, 0x05, 0xA3, 0x27, 0x13, 0x99, 0xE0, + 0x00, 0x01, 0x35, 0x09, 0x13, 0x6A, 0xC4, 0x12, 0x13, 0xB3, 0x37, 0x40, 0x23, 0x00, 0x39, 0x56, + 0x05, 0x14, 0xDE, 0x14, 0x21, 0x21, 0x0B, 0xFD, 0xCB, 0x10, 0x14, 0x0B, 0x52, 0x2E, 0x02, 0xB1, + 0x24, 0x33, 0x50, 0x00, 0x34, 0xDE, 0x21, 0x03, 0x56, 0x2E, 0x11, 0x7E, 0x9D, 0x2F, 0x16, 0xB3, + 0xEF, 0x04, 0x35, 0xAC, 0x00, 0x8B, 0x3E, 0x18, 0x01, 0xB3, 0x04, 0x34, 0xDA, 0x00, 0xB6, 0x1A, + 0x22, 0x02, 0x48, 0x36, 0x34, 0xFE, 0x0B, 0xE1, 0xD6, 0x42, 0x21, 0x00, 0x00, 0x8C, 0x01, 0x00, + 0x59, 0x1E, 0x27, 0xEB, 0x01, 0xFE, 0x45, 0x14, 0x9B, 0x0F, 0x07, 0x04, 0x72, 0x35, 0x13, 0xEE, + 0xEF, 0x06, 0x02, 0x0B, 0x3F, 0x03, 0x7C, 0x01, 0x14, 0x56, 0x11, 0x00, 0x01, 0xBA, 0x1C, 0x09, + 0x00, 0x44, 0x02, 0x2E, 0x77, 0x16, 0xF1, 0x7C, 0x24, 0x13, 0xB4, 0xA3, 0x1A, 0x05, 0x01, 0x00, + 0x01, 0xD4, 0x14, 0x04, 0x03, 0x30, 0x05, 0xC4, 0x2C, 0x26, 0xFF, 0x5C, 0x11, 0x00, 0x13, 0x1F, + 0xA6, 0x11, 0x05, 0x01, 0x00, 0x10, 0x01, 0xFA, 0x13, 0x12, 0xF6, 0x4C, 0x06, 0x22, 0x18, 0x16, + 0xAC, 0x03, 0x10, 0xD8, 0xD8, 0x01, 0x03, 0xD5, 0x16, 0x01, 0x4D, 0x00, 0x10, 0x76, 0xEE, 0x0F, + 0x13, 0xB9, 0x52, 0x30, 0x23, 0x08, 0xFD, 0xC8, 0x00, 0x00, 0xB6, 0x30, 0x23, 0x68, 0x96, 0xE9, + 0x03, 0x00, 0x59, 0x10, 0x14, 0xE2, 0x16, 0x46, 0x23, 0x45, 0x73, 0x7A, 0x41, 0x22, 0x55, 0xFF, + 0xA9, 0x26, 0x01, 0x1A, 0x24, 0x23, 0x22, 0x50, 0xCF, 0x15, 0x22, 0x7D, 0xFF, 0xEF, 0x46, 0x00, + 0x0B, 0x22, 0x33, 0xFB, 0x04, 0x2D, 0x6B, 0x2B, 0x13, 0xA5, 0xEA, 0x33, 0x11, 0x11, 0x03, 0x07, + 0x22, 0x0B, 0xFF, 0x1B, 0x4A, 0x13, 0xCD, 0xA8, 0x19, 0x12, 0x30, 0x3E, 0x01, 0x11, 0xE7, 0x40, + 0x4A, 0x32, 0x02, 0xF5, 0xFF, 0x4E, 0x43, 0x12, 0x4F, 0x95, 0x26, 0x11, 0xC4, 0x2F, 0x07, 0x01, + 0x99, 0x31, 0x00, 0x70, 0x02, 0x12, 0x6D, 0x8A, 0x48, 0x11, 0xA1, 0xA3, 0x01, 0x40, 0x46, 0xFF, + 0xFF, 0xFA, 0x32, 0x24, 0x22, 0x00, 0x8C, 0x88, 0x0D, 0x11, 0x7E, 0x0F, 0x3D, 0x50, 0x6E, 0xFF, + 0xFF, 0xC0, 0xF6, 0x09, 0x01, 0x12, 0xAB, 0x8F, 0x10, 0x11, 0x5B, 0x6A, 0x0B, 0x50, 0x96, 0xFF, + 0xFF, 0x95, 0xCD, 0x1E, 0x0F, 0x00, 0x69, 0x0A, 0x12, 0x0B, 0xFD, 0x0C, 0x10, 0xAC, 0x82, 0x12, + 0x20, 0x6B, 0xA3, 0xA1, 0x30, 0x11, 0xE8, 0x58, 0x4B, 0x01, 0x59, 0x23, 0x10, 0xCA, 0xD0, 0x11, + 0x63, 0x41, 0x79, 0xFF, 0xFF, 0xA5, 0x08, 0x8E, 0x25, 0x50, 0x01, 0xF2, 0xFF, 0xFF, 0xE9, 0x81, + 0x09, 0x62, 0x17, 0x4F, 0xFF, 0xFF, 0xCE, 0x26, 0x83, 0x11, 0x02, 0x4C, 0x27, 0xA4, 0x40, 0xFF, + 0xFF, 0xEE, 0x01, 0x25, 0xFF, 0xFF, 0xF6, 0x46, 0x58, 0x48, 0x00, 0x10, 0x02, 0x10, 0x86, 0x38, + 0x00, 0x54, 0x04, 0xF8, 0xFF, 0xFF, 0x82, 0x2F, 0x11, 0x00, 0x42, 0x32, 0x11, 0xCC, 0x4C, 0x46, + 0x30, 0xD1, 0xFF, 0xFF, 0x83, 0x00, 0x15, 0x38, 0x98, 0x21, 0x01, 0x06, 0x34, 0x10, 0xA7, 0x1A, + 0x6A, 0x02, 0x02, 0x6B, 0x02, 0x57, 0x22, 0x01, 0x6D, 0x27, 0x01, 0x4E, 0x01, 0x35, 0xFF, 0xF2, + 0x01, 0x3D, 0x35, 0x01, 0x88, 0x02, 0x02, 0xBD, 0x30, 0x12, 0xCF, 0xD3, 0x07, 0x23, 0xFA, 0xFF, + 0x4E, 0x01, 0x25, 0x29, 0xFF, 0x63, 0x0C, 0x02, 0xDD, 0x24, 0x01, 0x33, 0x04, 0x36, 0x05, 0xFB, + 0xFF, 0x2D, 0x25, 0x12, 0xB7, 0x4F, 0x04, 0x03, 0x1C, 0x03, 0x02, 0x27, 0x31, 0x03, 0xC7, 0x4A, + 0x01, 0x12, 0x0B, 0x17, 0xAB, 0xFD, 0x3A, 0x01, 0x45, 0x0E, 0x01, 0xAA, 0x48, 0x16, 0x81, 0x96, + 0x10, 0x02, 0xA0, 0x08, 0x22, 0x22, 0x00, 0x04, 0x49, 0x36, 0xFF, 0xFA, 0x03, 0xFC, 0x32, 0x11, + 0xF7, 0x0C, 0x00, 0x14, 0x2D, 0x26, 0x7A, 0x13, 0x10, 0x54, 0x04, 0x33, 0x52, 0xFC, 0xFC, 0x9A, + 0x59, 0x94, 0x00, 0xAC, 0xFC, 0xFC, 0xFC, 0x94, 0x00, 0x06, 0xEB, 0x40, 0x33, 0x22, 0x0C, 0xF7, + 0x04, 0x68, 0x00, 0xBD, 0x01, 0x23, 0xF5, 0x0E, 0x53, 0x00, 0x14, 0xDD, 0xCA, 0x00, 0x13, 0x65, + 0x4B, 0x01, 0x23, 0x81, 0x00, 0x36, 0x44, 0x61, 0xC8, 0x00, 0x00, 0x0B, 0xF6, 0xFF, 0xA6, 0x4E, + 0x02, 0x62, 0x33, 0x42, 0xFF, 0x2B, 0x00, 0x56, 0x18, 0x00, 0x00, 0xFF, 0x03, 0x11, 0xF2, 0x1E, + 0x03, 0x25, 0xAA, 0xFF, 0xD1, 0x3F, 0x00, 0xE7, 0x16, 0x10, 0xEB, 0x77, 0x32, 0x13, 0xFB, 0xAC, + 0x3F, 0x00, 0x0A, 0x04, 0x25, 0xFF, 0xA7, 0xDE, 0x32, 0x16, 0x00, 0x94, 0x39, 0x05, 0x93, 0x77, + 0x13, 0x6C, 0x8A, 0x08, 0x15, 0x09, 0x47, 0x27, 0x02, 0xB3, 0x1E, 0x07, 0x21, 0x48, 0x02, 0xF1, + 0x35, 0x16, 0x3F, 0x11, 0x00, 0x23, 0x66, 0xFF, 0x2F, 0x17, 0x04, 0x11, 0x00, 0x26, 0xB6, 0xFF, + 0x8E, 0x26, 0x01, 0x7B, 0x03, 0x01, 0x4D, 0x12, 0x3A, 0xFD, 0x1E, 0x00, 0x66, 0x09, 0x25, 0xFF, + 0x82, 0x11, 0x00, 0x03, 0x88, 0x00, 0x23, 0xE6, 0x05, 0x10, 0x00, 0x14, 0x2E, 0x94, 0x0B, 0x03, + 0xAB, 0x33, 0x01, 0xA3, 0x04, 0x26, 0x9B, 0xD9, 0xA1, 0x2D, 0x10, 0x04, 0x2C, 0x03, 0x10, 0x3F, + 0x48, 0x00, 0x34, 0xFE, 0x21, 0x00, 0x4C, 0x12, 0x45, 0xE2, 0x02, 0x12, 0xF8, 0x9F, 0x05, 0x12, + 0xA5, 0xF6, 0x01, 0x00, 0x28, 0x03, 0x10, 0xE8, 0x57, 0x00, 0x22, 0x0D, 0xF6, 0xA4, 0x0A, 0x14, + 0x39, 0x18, 0x31, 0x22, 0x60, 0xFF, 0x91, 0x4D, 0x23, 0x01, 0xD1, 0xAE, 0x00, 0x14, 0xBE, 0xD7, + 0x07, 0x12, 0x69, 0x9B, 0x04, 0x15, 0x1F, 0x12, 0x3B, 0x21, 0x0E, 0xF4, 0x4D, 0x00, 0x00, 0xD8, + 0x04, 0x02, 0xA0, 0x6E, 0x10, 0x00, 0xDF, 0x31, 0x42, 0xEA, 0x07, 0x10, 0x10, 0xE4, 0x01, 0x62, + 0x87, 0xFC, 0xFC, 0xFC, 0xF2, 0x08, 0xCA, 0x00, 0x55, 0xFC, 0xFC, 0xFC, 0xA6, 0x3B, 0xB7, 0x4C, + 0x11, 0x1B, 0xAD, 0x0D, 0x01, 0x38, 0x48, 0x23, 0x90, 0x00, 0x0E, 0x2B, 0x44, 0xFB, 0x10, 0x00, + 0x9C, 0xBF, 0x7E, 0x12, 0xA8, 0x3D, 0x33, 0x22, 0x4C, 0xFF, 0xD8, 0x01, 0x22, 0x03, 0xED, 0xCA, + 0x14, 0x01, 0xD1, 0x40, 0x13, 0x6F, 0xDD, 0x10, 0x22, 0x1E, 0x00, 0x33, 0x15, 0x12, 0xBA, 0x1B, + 0x0E, 0x23, 0xCE, 0x00, 0xAC, 0x36, 0x43, 0xF9, 0x0C, 0x00, 0xC3, 0x2C, 0x36, 0x20, 0x00, 0x13, + 0x2E, 0x01, 0x35, 0x4E, 0x0F, 0xFC, 0x6E, 0x38, 0x00, 0xD6, 0x2D, 0x10, 0x99, 0x22, 0x05, 0x25, + 0xE0, 0x01, 0x83, 0x1E, 0x26, 0xE3, 0x98, 0x1C, 0x0E, 0x01, 0xB1, 0x27, 0x17, 0xF4, 0xFB, 0x0A, + 0x03, 0x7D, 0x4D, 0x14, 0xEF, 0x83, 0x01, 0x12, 0x81, 0x10, 0x00, 0x18, 0xA3, 0x3E, 0x4C, 0x08, + 0x52, 0x32, 0x11, 0x01, 0x49, 0x33, 0x16, 0xF9, 0xAD, 0x4B, 0x14, 0x93, 0xD1, 0x1A, 0x06, 0x59, + 0x3B, 0x03, 0xE6, 0x7E, 0x25, 0x00, 0x00, 0xD0, 0x0D, 0x1F, 0x64, 0x10, 0x00, 0x82, 0x35, 0x0E, + 0x0D, 0x1C, 0xE4, 0x43, 0x04, 0x57, 0x0B, 0x27, 0x3C, 0x7C, 0x43, 0x08, 0x09, 0x0D, 0x00, 0x22, + 0x2A, 0x21, 0x0B, 0x23, 0x00, 0x40, 0x0D, 0x13, 0xDA, 0x05, 0x07, 0x18, 0x29, 0x5D, 0x3D, 0x18, + 0x7C, 0xF5, 0x39, 0x00, 0x24, 0x05, 0x13, 0xDB, 0x26, 0x00, 0x27, 0x23, 0xFF, 0x5E, 0x2F, 0x14, + 0x76, 0x08, 0x0D, 0x04, 0x97, 0x1F, 0x27, 0xDC, 0x01, 0xC7, 0x06, 0x04, 0x56, 0x4B, 0x18, 0x71, + 0x83, 0x2F, 0x00, 0x7D, 0x08, 0x02, 0x35, 0x5F, 0x03, 0x5A, 0x02, 0x18, 0x89, 0xB7, 0x03, 0x16, + 0x34, 0x49, 0x44, 0x23, 0xFF, 0xDF, 0x26, 0x00, 0x24, 0x17, 0xFD, 0xF2, 0x26, 0x04, 0x57, 0x29, + 0x03, 0xA2, 0x37, 0x27, 0x00, 0xBB, 0x26, 0x00, 0x25, 0x13, 0xFC, 0x80, 0x09, 0x02, 0xC0, 0x08, + 0x26, 0xFF, 0x36, 0x0E, 0x3D, 0x04, 0x42, 0x02, 0x34, 0x00, 0x10, 0xFA, 0xC2, 0x10, 0x03, 0x45, + 0x47, 0x27, 0xFF, 0x37, 0xC4, 0x4D, 0x23, 0xF1, 0x3D, 0xDD, 0x31, 0x18, 0xD8, 0x7B, 0x09, 0x0F, + 0x0D, 0x00, 0x07, 0x22, 0x0B, 0x09, 0x68, 0x12, 0x13, 0x19, 0x70, 0x01, 0x23, 0xD5, 0x19, 0x1A, + 0x00, 0x10, 0xD8, 0x09, 0x00, 0x63, 0xE6, 0x14, 0x14, 0x14, 0x11, 0x19, 0x6E, 0x2A, 0x1F, 0x00, + 0x09, 0x00, 0x11, 0x1F, 0x1A, 0x09, 0x00, 0x02, 0x1F, 0xE2, 0x09, 0x00, 0x27, 0x18, 0x1B, 0x09, + 0x00, 0x1F, 0xE1, 0x09, 0x00, 0x27, 0x14, 0x1C, 0xCC, 0x30, 0x0F, 0x09, 0x00, 0x1E, 0x63, 0xE2, + 0x10, 0x10, 0x10, 0x0E, 0x1C, 0x17, 0x01, 0x15, 0xD4, 0x09, 0x00, 0x06, 0x70, 0x46, 0x46, 0xB0, + 0xFC, 0xFC, 0x71, 0x19, 0x0F, 0x04, 0x30, 0x4D, 0x16, 0x29, 0x73, 0x45, 0x00, 0x89, 0x45, 0x16, + 0x41, 0x9F, 0x45, 0x04, 0x7B, 0x02, 0x16, 0x59, 0x92, 0x39, 0x00, 0xCB, 0x45, 0x16, 0x13, 0xE1, + 0x45, 0x04, 0xA2, 0x09, 0x16, 0x89, 0x0C, 0x2D, 0x16, 0x43, 0x02, 0x02, 0x23, 0x08, 0xF7, 0x7E, + 0x06, 0x02, 0xC6, 0x2B, 0x16, 0x6A, 0x3B, 0x50, 0x16, 0xB0, 0xB9, 0x05, 0x26, 0xF1, 0x04, 0x57, + 0x3A, 0x25, 0x3A, 0x00, 0xC9, 0x39, 0x13, 0x7F, 0x0B, 0x00, 0x16, 0x5E, 0xE0, 0x2D, 0x16, 0x1A, + 0xBD, 0x46, 0x25, 0x00, 0xD3, 0x72, 0x0A, 0x00, 0xE1, 0x15, 0x16, 0x94, 0x39, 0x0A, 0x04, 0x18, + 0x1D, 0x23, 0x0B, 0xF9, 0xBF, 0x2C, 0x02, 0xAA, 0x05, 0x13, 0x63, 0x0B, 0x00, 0x11, 0x79, 0x4C, + 0x2C, 0x02, 0x31, 0x46, 0x33, 0xFF, 0xFF, 0xEC, 0x86, 0x06, 0x00, 0x6B, 0x3B, 0x16, 0x33, 0x86, + 0x52, 0x04, 0xBB, 0x0D, 0x80, 0x63, 0xFF, 0xFF, 0xBD, 0x0B, 0x09, 0x22, 0x00, 0x78, 0x02, 0x13, + 0x47, 0x78, 0x02, 0x25, 0xAA, 0x48, 0xE7, 0x10, 0x44, 0x14, 0x14, 0x14, 0x66, 0x42, 0x08, 0x1F, + 0x58, 0x09, 0x00, 0x2B, 0x1F, 0x57, 0x09, 0x00, 0x34, 0x1F, 0x56, 0x09, 0x00, 0x2B, 0x1F, 0x55, + 0x09, 0x00, 0x1E, 0x40, 0x05, 0x10, 0x10, 0x10, 0x1A, 0x07, 0x15, 0xAC, 0x17, 0x01, 0x05, 0x09, + 0x00, 0x46, 0x00, 0x00, 0x0F, 0x0E, 0xF4, 0x4A, 0x54, 0x88, 0xFC, 0xFC, 0xFC, 0xDD, 0xF5, 0x07, + 0x28, 0x06, 0xEA, 0xAE, 0x3D, 0x01, 0x19, 0x0B, 0x26, 0xFF, 0xAE, 0x69, 0x04, 0x00, 0x3E, 0x76, + 0x02, 0xD6, 0x41, 0x10, 0x22, 0xA4, 0x13, 0x04, 0xC3, 0x0C, 0x01, 0x5E, 0x11, 0x62, 0x21, 0xC8, + 0xFF, 0xFF, 0xDF, 0x02, 0x18, 0x66, 0x43, 0xFF, 0xCB, 0x00, 0x73, 0x48, 0x00, 0x11, 0x51, 0x69, + 0x32, 0x00, 0x0B, 0x05, 0x13, 0xAD, 0x52, 0x08, 0x11, 0x23, 0xAA, 0x4B, 0x52, 0xFB, 0x19, 0x00, + 0x1F, 0xFE, 0x05, 0x07, 0x11, 0x74, 0x48, 0x00, 0x13, 0x82, 0x4E, 0x00, 0x00, 0x1E, 0x0A, 0x61, + 0xDF, 0x02, 0x6B, 0x84, 0x84, 0x84, 0x26, 0x02, 0x90, 0x73, 0x84, 0x84, 0x84, 0x18, 0x0C, 0x0C, + 0x04, 0x00, 0xCC, 0x33, 0x16, 0x40, 0x01, 0x00, 0x17, 0x31, 0x84, 0x04, 0x1F, 0xC4, 0x0C, 0x00, + 0x05, 0x40, 0x0A, 0x08, 0x08, 0x01, 0x34, 0x09, 0x63, 0x1B, 0xF2, 0xFC, 0xFC, 0xFC, 0x5E, 0xBB, + 0x11, 0x00, 0xA3, 0x21, 0x23, 0x0B, 0xE5, 0x9D, 0x43, 0x13, 0x5D, 0x4A, 0x05, 0x22, 0x02, 0xCA, + 0xCE, 0x4D, 0x24, 0x00, 0x3A, 0xD7, 0x02, 0x13, 0xA8, 0xD4, 0x02, 0x74, 0x02, 0x04, 0x04, 0x01, + 0x0F, 0x0D, 0x14, 0xDC, 0x35, 0x70, 0x4D, 0xAE, 0xE1, 0xF9, 0xF3, 0xCB, 0x77, 0x58, 0x09, 0x13, + 0x05, 0xB5, 0x12, 0x33, 0xFF, 0xD1, 0x11, 0x2C, 0x06, 0x12, 0xFF, 0x4F, 0x44, 0x10, 0x08, 0x35, + 0x0D, 0x20, 0xAE, 0x4C, 0x8C, 0x0C, 0x32, 0xF5, 0x09, 0x3C, 0x8B, 0x2E, 0x01, 0xB0, 0x00, 0x22, + 0x39, 0x68, 0x99, 0x23, 0x01, 0xFD, 0x1C, 0x62, 0x56, 0x4F, 0xA8, 0xA8, 0xA8, 0x91, 0xC0, 0x51, + 0x28, 0xFF, 0x5C, 0x7D, 0x45, 0x01, 0x0D, 0x00, 0x35, 0x07, 0x61, 0xCC, 0x18, 0x0D, 0x25, 0x4D, + 0xE0, 0x06, 0x56, 0x10, 0x04, 0xFC, 0x07, 0x22, 0xEE, 0x5A, 0x0D, 0x00, 0x00, 0x12, 0x12, 0x22, + 0xE3, 0x24, 0x41, 0x00, 0x12, 0x2A, 0x77, 0x15, 0x02, 0x0D, 0x00, 0x12, 0x78, 0x4F, 0x0A, 0x02, + 0x5B, 0x00, 0x12, 0xA5, 0x2C, 0x0B, 0x02, 0x0D, 0x00, 0x12, 0xB1, 0x0A, 0x0C, 0x01, 0xB6, 0x22, + 0x11, 0x5E, 0x4B, 0x15, 0x21, 0x75, 0x56, 0xAA, 0x12, 0x23, 0x68, 0x3B, 0x58, 0x0F, 0x11, 0xDA, + 0x89, 0x01, 0x12, 0xA0, 0x93, 0x49, 0x11, 0xA3, 0x73, 0x0C, 0x70, 0x04, 0x7B, 0xE1, 0xFC, 0xD1, + 0x66, 0x01, 0xA9, 0x01, 0x14, 0xA9, 0xE8, 0x36, 0x10, 0x3C, 0x75, 0x03, 0x19, 0x47, 0x35, 0x46, + 0x1F, 0x48, 0x0E, 0x00, 0x4F, 0x63, 0x2E, 0xA9, 0xEC, 0xF4, 0xB5, 0x28, 0x0E, 0x00, 0x11, 0xA5, + 0x33, 0x0C, 0x47, 0xED, 0x1E, 0x00, 0x3C, 0xF5, 0x01, 0x12, 0x99, 0x0E, 0x00, 0x30, 0xEB, 0x72, + 0x56, 0xE8, 0x36, 0x21, 0xF0, 0x04, 0x0E, 0x00, 0x13, 0x4F, 0x35, 0x07, 0x14, 0x2D, 0x54, 0x00, + 0x01, 0x91, 0x09, 0x14, 0x4E, 0x0E, 0x00, 0x01, 0xF6, 0x07, 0x14, 0x5B, 0x0E, 0x00, 0x01, 0xC8, + 0x17, 0x1F, 0x5C, 0x0E, 0x00, 0x3B, 0x01, 0x9E, 0x01, 0x14, 0x58, 0x0E, 0x00, 0x01, 0xBE, 0x28, + 0x14, 0x44, 0x0E, 0x00, 0x02, 0x87, 0x3C, 0x01, 0x0E, 0x00, 0x30, 0xBF, 0x5C, 0x4B, 0x7F, 0x01, + 0x28, 0xE3, 0x01, 0xD2, 0x00, 0x12, 0x88, 0xD2, 0x00, 0x02, 0x4E, 0x43, 0x22, 0xDD, 0x13, 0x0E, + 0x00, 0x70, 0x49, 0x51, 0xC2, 0xF8, 0xEE, 0xA6, 0x1D, 0xF4, 0x08, 0x04, 0x9C, 0x02, 0x81, 0x07, + 0x6D, 0xC3, 0xED, 0xFB, 0xEB, 0xC2, 0x6E, 0x6A, 0x45, 0x04, 0xD8, 0x27, 0x23, 0xCD, 0x0E, 0xFD, + 0x2F, 0x03, 0xF3, 0x15, 0x10, 0x16, 0x47, 0x0D, 0x20, 0xAA, 0x4B, 0xEA, 0x07, 0x32, 0xEB, 0x03, + 0x59, 0xCE, 0x3C, 0x01, 0x94, 0x0E, 0x22, 0x21, 0x82, 0xEE, 0x15, 0x10, 0x01, 0x2F, 0x16, 0x23, + 0x3C, 0x9B, 0xF6, 0x06, 0x00, 0x5A, 0x0A, 0x23, 0x40, 0xA0, 0xCD, 0x06, 0x54, 0x8A, 0x90, 0x90, + 0x90, 0x24, 0x0D, 0x00, 0x05, 0x3A, 0x48, 0x0F, 0x0D, 0x00, 0x18, 0x59, 0xD2, 0xDC, 0xDC, 0xDC, + 0x37, 0x5B, 0x00, 0x21, 0x83, 0xFF, 0x81, 0x54, 0x10, 0x01, 0xF0, 0x0B, 0x13, 0x3B, 0x8F, 0x00, + 0x01, 0x41, 0x08, 0x11, 0x1E, 0xA9, 0x00, 0x20, 0xA5, 0x43, 0x0E, 0x17, 0x45, 0xE5, 0x02, 0x00, + 0x9F, 0xC3, 0x00, 0x44, 0x7F, 0x00, 0x00, 0x13, 0xEF, 0x0C, 0x10, 0xC2, 0x87, 0x03, 0x70, 0x08, + 0x71, 0xC6, 0xF1, 0xFE, 0xED, 0xC1, 0xB4, 0xB2, 0x13, 0x10, 0x00, 0x0A, 0x04, 0x01, 0x00, 0x00, + 0x70, 0x68, 0x18, 0xE1, 0x85, 0x00, 0x1F, 0xE4, 0x0D, 0x00, 0x3D, 0x62, 0x35, 0xB6, 0xF1, 0xEF, + 0xAE, 0x2E, 0x0D, 0x00, 0x11, 0x30, 0xF1, 0x0F, 0x21, 0xFA, 0xDE, 0x0D, 0x00, 0x16, 0xBF, 0xC0, + 0x01, 0x11, 0xE4, 0xE3, 0x09, 0x30, 0xCD, 0x4F, 0x77, 0x5D, 0x05, 0x22, 0xE4, 0x59, 0x35, 0x42, + 0x02, 0x41, 0x00, 0x00, 0x17, 0x0F, 0x23, 0xFB, 0x04, 0x0D, 0x00, 0x13, 0x92, 0x96, 0x47, 0x01, + 0x5B, 0x00, 0x00, 0xE7, 0x03, 0x1F, 0xF0, 0x0D, 0x00, 0x36, 0x00, 0x2F, 0x17, 0x14, 0xF2, 0x0D, + 0x00, 0x00, 0xD7, 0x17, 0x23, 0xFC, 0x02, 0x0D, 0x00, 0x13, 0x69, 0xEB, 0x20, 0x01, 0x0D, 0x00, + 0x01, 0x59, 0x0E, 0x41, 0xC5, 0x47, 0x67, 0xDF, 0x32, 0x1D, 0x17, 0xDB, 0xC3, 0x00, 0x22, 0x00, + 0x4C, 0x5B, 0x19, 0x12, 0xE9, 0xF7, 0x00, 0x61, 0x40, 0xBE, 0xF5, 0xF6, 0xBB, 0x3F, 0x34, 0x00, + 0x06, 0x1C, 0x05, 0x80, 0x05, 0x67, 0xBF, 0xEB, 0xFA, 0xEB, 0xBE, 0x67, 0x58, 0x05, 0x14, 0x0E, + 0xD9, 0x2B, 0x28, 0xB3, 0x05, 0xE5, 0x4D, 0x30, 0x72, 0x00, 0x13, 0x5F, 0x02, 0x11, 0xA9, 0x80, + 0x02, 0x32, 0xDD, 0x01, 0x56, 0xC2, 0x34, 0x01, 0x9D, 0x2B, 0x32, 0x22, 0x81, 0xFF, 0xBA, 0x10, + 0x00, 0x57, 0x0F, 0x23, 0x46, 0x9A, 0x7F, 0x0F, 0x00, 0x4F, 0x12, 0x10, 0x5C, 0x68, 0x00, 0x40, + 0xDE, 0x24, 0x24, 0x24, 0xA9, 0x0B, 0x27, 0x64, 0xA0, 0x1A, 0x03, 0x0E, 0x0D, 0x00, 0x14, 0xD9, + 0x51, 0x46, 0x13, 0xA0, 0x16, 0x57, 0x05, 0xAD, 0x01, 0x11, 0xD8, 0xF8, 0x5E, 0x43, 0x08, 0x08, + 0x03, 0x9A, 0x0D, 0x00, 0x00, 0x37, 0x21, 0x23, 0x60, 0x82, 0x9A, 0x02, 0x00, 0x9B, 0x01, 0x31, + 0x57, 0x59, 0xFF, 0xB6, 0x58, 0x01, 0x4D, 0x24, 0x20, 0x36, 0x17, 0xF1, 0x00, 0x20, 0xA2, 0x43, + 0x88, 0x0F, 0x27, 0xF0, 0x06, 0x80, 0x02, 0x53, 0x83, 0x00, 0x00, 0x13, 0xCF, 0x0C, 0x00, 0x10, + 0xBC, 0x2C, 0x0E, 0x90, 0x07, 0x6F, 0xC4, 0xEF, 0xFE, 0xEE, 0xC0, 0x63, 0x03, 0xD8, 0x61, 0x05, + 0x6B, 0x59, 0x73, 0x01, 0x54, 0xC1, 0xEE, 0xFA, 0xED, 0xB0, 0xE5, 0x37, 0x01, 0xEE, 0x09, 0x24, + 0x02, 0xE8, 0x0A, 0x00, 0x01, 0xD7, 0x4B, 0x33, 0xC5, 0x4E, 0x53, 0x5D, 0x0D, 0x14, 0x44, 0xEC, + 0x07, 0x25, 0xFF, 0x29, 0xC5, 0x3A, 0x10, 0x28, 0x8E, 0x52, 0x01, 0xAE, 0x1E, 0x44, 0xFD, 0xFC, + 0xD1, 0x68, 0x7D, 0x00, 0x16, 0xD4, 0x0A, 0x00, 0x31, 0x1C, 0x44, 0x85, 0xF6, 0x1E, 0x26, 0x44, + 0x39, 0x32, 0x00, 0x0F, 0x0A, 0x00, 0x85, 0x31, 0x0F, 0x10, 0x1B, 0xAC, 0x09, 0x0A, 0xCD, 0x38, + 0x01, 0xC2, 0x0C, 0xF2, 0x02, 0x02, 0x5C, 0xBC, 0xEC, 0xFA, 0xDE, 0x97, 0x1B, 0x00, 0x1A, 0xC2, + 0xF6, 0x0F, 0x00, 0x00, 0x06, 0xB1, 0xDF, 0x00, 0x31, 0xE3, 0x3B, 0xE1, 0x1B, 0x43, 0x14, 0x80, + 0xF0, 0x00, 0x50, 0xFE, 0xFF, 0xFF, 0xCD, 0x52, 0xFD, 0x71, 0x51, 0xFF, 0xFF, 0x8D, 0x4A, 0xA5, + 0x13, 0x19, 0x12, 0x01, 0xE4, 0x25, 0x30, 0xDD, 0x01, 0x00, 0x08, 0x2D, 0x14, 0xC6, 0x1E, 0x0F, + 0x00, 0x3F, 0x0B, 0x13, 0xE0, 0x9E, 0x79, 0x13, 0x8A, 0xBE, 0x25, 0x13, 0xCC, 0xE0, 0x37, 0x13, + 0x8E, 0xF2, 0x12, 0x13, 0xCB, 0xB9, 0x15, 0x13, 0x7E, 0x01, 0x1A, 0x13, 0xD8, 0x77, 0x0D, 0x12, + 0x57, 0x2B, 0x38, 0x01, 0x6B, 0x37, 0x00, 0x5E, 0x43, 0x10, 0x1B, 0x77, 0x0D, 0x35, 0x4C, 0x04, + 0x68, 0xA6, 0x8E, 0x06, 0x75, 0x4F, 0x02, 0xFA, 0x08, 0x14, 0x07, 0x70, 0x08, 0x23, 0xCD, 0x0A, + 0x4D, 0x4F, 0x01, 0x09, 0x29, 0x22, 0xF6, 0x98, 0x10, 0x0B, 0x84, 0x22, 0xF2, 0xFF, 0xD9, 0x06, + 0x29, 0x41, 0x31, 0x87, 0x11, 0x66, 0x85, 0xFF, 0xFF, 0xDD, 0x3C, 0x0A, 0x04, 0x01, 0x11, 0x9A, + 0x3C, 0x00, 0x51, 0xEC, 0xD1, 0xB6, 0x92, 0x52, 0x4C, 0x3E, 0x25, 0x3B, 0xFB, 0x60, 0x00, 0x11, + 0xDC, 0x48, 0x45, 0x25, 0x34, 0xE8, 0x11, 0x00, 0xE2, 0xDB, 0x05, 0x00, 0x00, 0x06, 0xA6, 0xFF, + 0xFF, 0x95, 0x4E, 0x66, 0x7E, 0xA6, 0xF0, 0xE0, 0x12, 0x54, 0x8E, 0xFF, 0xFF, 0xEE, 0x0C, 0x13, + 0x12, 0x44, 0x6D, 0x00, 0x11, 0xFC, 0xEA, 0x38, 0x11, 0x1E, 0x10, 0x00, 0x01, 0x91, 0x30, 0x61, + 0x9D, 0x5C, 0x47, 0x43, 0x61, 0xC6, 0x5E, 0x16, 0x27, 0x28, 0xFF, 0x01, 0x00, 0x22, 0xEB, 0x08, + 0xB2, 0x37, 0x03, 0x0F, 0x00, 0x11, 0xFA, 0xAE, 0x89, 0xB7, 0x3F, 0x9B, 0xD2, 0xEF, 0xFE, 0xFF, + 0xFF, 0xF0, 0xD1, 0x91, 0x26, 0xD4, 0x3E, 0x10, 0x30, 0xEC, 0x07, 0x18, 0x4B, 0xD5, 0x3D, 0x2F, + 0xFF, 0x4C, 0x0E, 0x00, 0x4F, 0x72, 0x05, 0x61, 0xC0, 0xF2, 0xEF, 0x98, 0x08, 0x0E, 0x00, 0x23, + 0x71, 0xCC, 0xBB, 0x1D, 0x08, 0xD1, 0x32, 0x21, 0xEE, 0x02, 0x0E, 0x00, 0x31, 0xFD, 0x92, 0x4E, + 0xEF, 0x06, 0x11, 0x1D, 0x0E, 0x00, 0x13, 0x6C, 0xFE, 0x2E, 0x14, 0x28, 0x54, 0x00, 0x19, 0x55, + 0x0E, 0x00, 0x1F, 0x54, 0x0E, 0x00, 0xA8, 0x45, 0x08, 0x06, 0x1B, 0x01, 0x31, 0x2D, 0x12, 0x63, + 0xC9, 0x43, 0x08, 0x06, 0x00, 0x1D, 0x01, 0x10, 0x43, 0x01, 0x2A, 0x00, 0x11, 0x5F, 0x1E, 0x00, + 0x1F, 0x60, 0x06, 0x00, 0x59, 0x00, 0x6C, 0x05, 0x23, 0x20, 0xFF, 0x80, 0x3F, 0x22, 0xD5, 0xFC, + 0xBF, 0x56, 0x12, 0xD8, 0x19, 0x51, 0x0D, 0x08, 0x00, 0x26, 0x04, 0x04, 0x1B, 0x56, 0x08, 0x01, + 0x00, 0x10, 0xD1, 0xD7, 0x0D, 0x03, 0x98, 0x17, 0x1F, 0xAC, 0x08, 0x00, 0x78, 0x12, 0xD5, 0x08, + 0x00, 0x10, 0x03, 0x3D, 0x3B, 0x31, 0xA5, 0x29, 0x46, 0x85, 0x06, 0x12, 0x7E, 0x5B, 0x2A, 0x33, + 0xFE, 0x2A, 0x78, 0xAB, 0x47, 0xA7, 0x5E, 0xE7, 0xFE, 0xF5, 0xC4, 0x57, 0x01, 0x00, 0x10, 0x0F, + 0x30, 0x0B, 0x29, 0x3F, 0x00, 0xCF, 0x0A, 0x1F, 0x40, 0x0F, 0x00, 0x59, 0x01, 0x29, 0x0F, 0x14, + 0x9D, 0x0F, 0x00, 0x10, 0x07, 0x68, 0x0A, 0x24, 0xF2, 0x19, 0x0F, 0x00, 0x12, 0x78, 0xBA, 0x46, + 0x03, 0x0F, 0x00, 0x10, 0x1C, 0x00, 0x05, 0x24, 0xDA, 0x06, 0x0F, 0x00, 0x13, 0xA9, 0xBA, 0x2D, + 0x02, 0x4B, 0x00, 0x14, 0x42, 0x20, 0x14, 0x01, 0x0F, 0x00, 0x10, 0x45, 0x0D, 0x01, 0x24, 0xFA, + 0x27, 0x0F, 0x00, 0x15, 0xB2, 0x02, 0x1C, 0x15, 0x3C, 0xA6, 0x03, 0x1A, 0x6B, 0x0F, 0x00, 0x16, + 0xCC, 0x0F, 0x00, 0x14, 0xAA, 0x78, 0x3D, 0x01, 0x0F, 0x00, 0x11, 0xCD, 0x4F, 0x54, 0x14, 0x90, + 0x0F, 0x00, 0x11, 0x4B, 0x8B, 0x5B, 0x25, 0xED, 0x07, 0xC3, 0x00, 0x13, 0x27, 0xE2, 0x16, 0x04, + 0xD2, 0x00, 0x12, 0xCE, 0xED, 0x05, 0x04, 0x0F, 0x00, 0x00, 0xAC, 0x2D, 0x25, 0xFE, 0x1D, 0x0F, + 0x00, 0x21, 0x1E, 0xFF, 0xB0, 0x49, 0x05, 0xFF, 0x00, 0x00, 0x63, 0x15, 0x25, 0xDD, 0x02, 0x0F, + 0x00, 0x02, 0x6C, 0x55, 0x05, 0x0F, 0x00, 0x10, 0x15, 0xEE, 0x07, 0x23, 0xA3, 0x08, 0x28, 0x31, + 0x00, 0x2A, 0x46, 0x10, 0x86, 0x12, 0x00, 0x1F, 0x88, 0x05, 0x00, 0x6F, 0x22, 0x18, 0x16, 0x60, + 0x09, 0x01, 0xBF, 0x01, 0xF3, 0x00, 0x04, 0x28, 0x9C, 0xDF, 0xF9, 0xD4, 0x58, 0x00, 0x00, 0x24, + 0x99, 0xDE, 0xF9, 0xD5, 0x54, 0xAE, 0x47, 0x12, 0x68, 0xDC, 0x17, 0x33, 0x42, 0x5A, 0xF8, 0x6F, + 0x19, 0x07, 0xC4, 0x47, 0x14, 0xFF, 0x28, 0x49, 0x12, 0xBF, 0x16, 0x00, 0x31, 0xF2, 0x7E, 0x4E, + 0x66, 0x38, 0x30, 0xF1, 0x7D, 0x4E, 0x88, 0x24, 0x33, 0xF8, 0x02, 0x48, 0x78, 0x08, 0x12, 0x4D, + 0x89, 0x18, 0x02, 0x8E, 0x1B, 0x11, 0x0F, 0x16, 0x00, 0x13, 0x04, 0x66, 0x17, 0x13, 0x0C, 0x5B, + 0x2F, 0x14, 0x10, 0x16, 0x00, 0x13, 0x38, 0x16, 0x00, 0x1F, 0x3C, 0x16, 0x00, 0xFF, 0x11, 0x27, + 0x10, 0x0E, 0xC0, 0x01, 0x82, 0x3C, 0x0A, 0x6F, 0xC8, 0xF5, 0xEA, 0x83, 0x02, 0x8C, 0x01, 0x23, + 0x76, 0xDD, 0x8D, 0x28, 0x08, 0xB0, 0x01, 0x12, 0xBE, 0x0E, 0x00, 0x30, 0xF8, 0x85, 0x54, 0xC0, + 0x0E, 0x33, 0xF5, 0x00, 0x48, 0xAE, 0x17, 0x11, 0x8F, 0x5E, 0x00, 0x12, 0x48, 0x99, 0x3D, 0x29, + 0x00, 0x81, 0x0E, 0x00, 0x1F, 0x80, 0x0E, 0x00, 0xA8, 0x06, 0x40, 0x0C, 0x80, 0x04, 0x64, 0xBE, + 0xEB, 0xFA, 0xE9, 0xB9, 0x5C, 0x83, 0x03, 0x14, 0x0E, 0x58, 0x09, 0x22, 0xB8, 0x09, 0x45, 0x1F, + 0x13, 0xFF, 0x36, 0x1E, 0x10, 0x1A, 0x92, 0x09, 0x20, 0xA6, 0x4C, 0x27, 0x0A, 0x20, 0xFA, 0x12, + 0xE3, 0x16, 0x22, 0xFC, 0x0D, 0x1D, 0x2A, 0x23, 0x58, 0x8A, 0x74, 0x1F, 0x00, 0xCB, 0x0B, 0x22, + 0x80, 0x9E, 0x72, 0x2E, 0x01, 0xD8, 0x3F, 0x23, 0x96, 0xA0, 0xBD, 0x1D, 0x00, 0x46, 0x11, 0x1F, + 0x98, 0x0D, 0x00, 0x2E, 0x13, 0x9F, 0x0D, 0x00, 0x01, 0x5B, 0x00, 0x13, 0x8B, 0x1A, 0x0A, 0x00, + 0x18, 0x0D, 0x10, 0x82, 0x51, 0x22, 0x22, 0xF9, 0x0A, 0x8F, 0x00, 0x11, 0x5A, 0x2B, 0x32, 0x41, + 0xA3, 0x44, 0xA5, 0xFF, 0xB8, 0x1B, 0x17, 0xA2, 0xF8, 0x47, 0x24, 0x00, 0x12, 0x9D, 0x0F, 0x10, + 0xC1, 0xBC, 0x09, 0x70, 0x06, 0x6B, 0xC3, 0xEF, 0xFE, 0xEC, 0xBF, 0x40, 0x0C, 0x55, 0x10, 0x0E, + 0x1A, 0x01, 0xFA, 0x2C, 0x02, 0x63, 0x3D, 0xB2, 0xEE, 0xF2, 0xB0, 0x23, 0xE4, 0x03, 0x02, 0x8A, + 0x30, 0x29, 0xE8, 0x17, 0x2C, 0x02, 0x12, 0x8D, 0x0E, 0x00, 0x30, 0xE8, 0x6E, 0x5A, 0x80, 0x00, + 0x33, 0xE6, 0x01, 0x48, 0x4E, 0x0C, 0x01, 0x64, 0x3D, 0x14, 0x21, 0x68, 0x01, 0x11, 0x3F, 0x1D, + 0x04, 0x04, 0x0E, 0x00, 0x01, 0x89, 0x12, 0x14, 0x4F, 0x0E, 0x00, 0x01, 0x60, 0x08, 0x1F, 0x50, + 0x0E, 0x00, 0x3B, 0x01, 0x1B, 0x4F, 0x14, 0x4C, 0x0E, 0x00, 0x01, 0x2F, 0x06, 0x14, 0x38, 0x0E, + 0x00, 0x01, 0x79, 0x67, 0x11, 0x16, 0x0E, 0x00, 0x41, 0xB9, 0x59, 0x4E, 0xE2, 0xE7, 0x5B, 0x08, + 0xD2, 0x00, 0x12, 0x7C, 0x0E, 0x00, 0x02, 0x86, 0x65, 0x22, 0xD6, 0x0E, 0x0E, 0x00, 0x94, 0x3C, + 0x45, 0xBF, 0xF8, 0xEB, 0xA1, 0x18, 0x00, 0x00, 0x46, 0x00, 0x02, 0x01, 0x00, 0x0F, 0x0E, 0x00, + 0x33, 0x22, 0x10, 0x0D, 0x74, 0x01, 0x90, 0x00, 0x00, 0x2E, 0xB5, 0xF1, 0xF1, 0xB7, 0x40, 0x92, + 0x24, 0x37, 0x11, 0x00, 0x28, 0x99, 0x01, 0xE1, 0x5F, 0x46, 0xFF, 0xF0, 0x00, 0xBD, 0xA0, 0x00, + 0x11, 0xF0, 0x57, 0x06, 0x31, 0xCE, 0x50, 0x74, 0x1A, 0x00, 0x13, 0x5B, 0xCC, 0x0F, 0x00, 0x79, + 0x1E, 0x23, 0xF0, 0x7E, 0xCC, 0x0F, 0x01, 0x0D, 0x00, 0x13, 0x8F, 0xCC, 0x0F, 0x01, 0x0D, 0x00, + 0x01, 0x05, 0x00, 0x0F, 0x0D, 0x00, 0x36, 0x13, 0x91, 0xCC, 0x0F, 0x01, 0x0D, 0x00, 0x13, 0x81, + 0xCC, 0x0F, 0x01, 0x0D, 0x00, 0x13, 0x66, 0xB0, 0x1A, 0x01, 0x0D, 0x00, 0x01, 0xE8, 0x01, 0x31, + 0xCA, 0x49, 0x67, 0x6D, 0x37, 0x27, 0x01, 0xD9, 0xC3, 0x00, 0x03, 0xCC, 0x0F, 0x22, 0xF9, 0xD5, + 0x56, 0x00, 0x64, 0x40, 0xBD, 0xF4, 0xF5, 0xB3, 0x30, 0x63, 0x00, 0x05, 0x49, 0x1F, 0x0F, 0x0D, + 0x00, 0x31, 0x36, 0x0B, 0x0A, 0x14, 0x58, 0x25, 0x51, 0x4B, 0x03, 0x74, 0xDA, 0xF8, 0x1C, 0x05, + 0x64, 0x4D, 0x9D, 0xFF, 0xFF, 0xFC, 0x38, 0xD6, 0x02, 0x02, 0x0A, 0x00, 0x16, 0xFF, 0x0A, 0x00, + 0x41, 0xBC, 0x31, 0x0A, 0x49, 0x0A, 0x00, 0x24, 0xD1, 0x0A, 0xDC, 0x2D, 0x15, 0x55, 0xE6, 0x2D, + 0x1F, 0x4C, 0x0A, 0x00, 0x69, 0x25, 0x0D, 0x0D, 0xB8, 0x9E, 0x73, 0x2D, 0xA2, 0xE2, 0xFA, 0xE7, + 0xA8, 0x2E, 0xDF, 0x7D, 0x01, 0xB8, 0x00, 0x10, 0xFB, 0xF5, 0x54, 0x14, 0x28, 0x6E, 0x29, 0x22, + 0xF4, 0x1F, 0x2E, 0x0E, 0x41, 0xD3, 0x54, 0x80, 0xFE, 0xF6, 0x03, 0x12, 0xC6, 0x45, 0x09, 0x10, + 0x90, 0xA9, 0x03, 0x22, 0x00, 0xCF, 0xFE, 0x21, 0x51, 0x26, 0xFF, 0xB6, 0x49, 0x01, 0x4A, 0x29, + 0x55, 0xF7, 0x38, 0x00, 0x00, 0x21, 0x23, 0x45, 0x26, 0xF3, 0x42, 0x71, 0x19, 0x33, 0xFF, 0xFF, + 0xF9, 0xF0, 0x4F, 0x11, 0x09, 0xC6, 0x41, 0x13, 0xFD, 0x33, 0x19, 0x35, 0x0B, 0xB2, 0xFF, 0x21, + 0x37, 0x32, 0x00, 0x00, 0x03, 0xC4, 0x6B, 0x03, 0xF8, 0x09, 0x11, 0x01, 0x95, 0x1C, 0x10, 0xD7, + 0x8F, 0x73, 0x23, 0x41, 0x17, 0x6A, 0x05, 0x40, 0x35, 0x13, 0x81, 0xE0, 0x94, 0x1E, 0x21, 0x02, + 0xD7, 0x9F, 0x04, 0x00, 0x2D, 0x11, 0x12, 0x06, 0x44, 0x5C, 0x11, 0x54, 0x53, 0x6B, 0x32, 0xBA, + 0x49, 0x7C, 0x14, 0x21, 0x15, 0x36, 0xAE, 0x51, 0x00, 0x80, 0x33, 0x13, 0x63, 0x1F, 0x47, 0x11, + 0xD4, 0x05, 0x46, 0xD3, 0x30, 0xA3, 0xE4, 0xFE, 0xF2, 0xC5, 0x6D, 0x08, 0x00, 0x00, 0x0B, 0x0B, + 0x1A, 0xA4, 0x00, 0x66, 0x3E, 0x7C, 0x7C, 0x7C, 0x7C, 0x04, 0x91, 0x9C, 0x1F, 0x08, 0x0B, 0x00, + 0x1C, 0x14, 0x63, 0xE8, 0x10, 0x34, 0xE9, 0x00, 0x64, 0x7A, 0x00, 0x18, 0xEC, 0x0B, 0x00, 0x21, + 0x1B, 0x44, 0x3F, 0x05, 0x3E, 0x4A, 0x44, 0x3F, 0x63, 0x00, 0x0F, 0x0B, 0x00, 0x4C, 0x14, 0x7F, + 0x1D, 0x52, 0x03, 0xB3, 0x2A, 0x25, 0x1D, 0x00, 0xE3, 0x41, 0x70, 0xAE, 0x45, 0x4A, 0x0C, 0x00, + 0x00, 0x0A, 0xBB, 0x45, 0x03, 0x57, 0x22, 0x16, 0x73, 0x0B, 0x00, 0x80, 0x00, 0x62, 0xCC, 0xF7, + 0xFC, 0xF1, 0xDD, 0x1B, 0x60, 0x04, 0x16, 0x14, 0xE0, 0x70, 0x12, 0x18, 0xDC, 0x55, 0x23, 0xCD, + 0x68, 0x56, 0x47, 0x00, 0x07, 0x13, 0x1F, 0xD0, 0x0D, 0x00, 0x9B, 0x12, 0x26, 0x60, 0x48, 0x11, + 0xD0, 0xFC, 0x04, 0x30, 0x9F, 0x46, 0x99, 0x1F, 0x02, 0x27, 0xD0, 0x25, 0xC3, 0x05, 0x22, 0xD0, + 0x01, 0xDF, 0x06, 0x21, 0xB3, 0xC3, 0x3C, 0x58, 0x71, 0x21, 0xBF, 0xFA, 0xEC, 0xB2, 0x4A, 0x01, + 0x41, 0x00, 0x04, 0x40, 0x03, 0x13, 0x7C, 0x98, 0x15, 0x00, 0x64, 0x71, 0x10, 0xD6, 0x8A, 0x23, + 0x22, 0xFE, 0x08, 0x0C, 0x11, 0x23, 0xAA, 0x1E, 0x17, 0x59, 0x00, 0xD6, 0x1E, 0x32, 0x7B, 0x01, + 0xEF, 0x21, 0x17, 0x11, 0xDC, 0x3A, 0x03, 0x11, 0xBF, 0xE9, 0x49, 0x01, 0x27, 0x24, 0x11, 0x1C, + 0x0E, 0x09, 0x11, 0x8B, 0xE4, 0x0B, 0x21, 0xED, 0x01, 0x02, 0x22, 0x32, 0xAC, 0x00, 0x3F, 0xF2, + 0x6C, 0x11, 0x30, 0x90, 0x2D, 0x12, 0x60, 0x63, 0x26, 0x51, 0x07, 0xFB, 0xFF, 0xFF, 0xEE, 0x2D, + 0x09, 0x13, 0x5F, 0x1B, 0x21, 0x23, 0x10, 0xA2, 0xD4, 0x1F, 0x00, 0x51, 0x22, 0x63, 0x31, 0xC3, + 0xFF, 0xFF, 0xFB, 0x07, 0xC9, 0x22, 0x21, 0x52, 0xE4, 0x71, 0x37, 0x02, 0xB2, 0x06, 0x22, 0x7B, + 0xFE, 0x66, 0x4C, 0x01, 0x79, 0x32, 0x24, 0xBA, 0xFF, 0xE7, 0x62, 0x45, 0xE3, 0xFF, 0xFF, 0xF6, + 0xC0, 0x58, 0x15, 0xB3, 0x36, 0x49, 0x03, 0x81, 0x54, 0x05, 0xA0, 0x27, 0x01, 0xD6, 0x58, 0x04, + 0x44, 0x21, 0x01, 0xC1, 0x50, 0x04, 0x08, 0x20, 0x24, 0x02, 0xF3, 0xB4, 0x5C, 0x22, 0x14, 0x13, + 0x0C, 0x01, 0x10, 0x1A, 0x59, 0x89, 0x02, 0xC7, 0x26, 0x00, 0xF1, 0x59, 0x40, 0xD7, 0xFC, 0xFC, + 0xB2, 0x00, 0x4D, 0x12, 0xBC, 0xC4, 0x26, 0x12, 0xBC, 0x19, 0x25, 0x10, 0x8E, 0x5A, 0x23, 0x12, + 0xDC, 0x39, 0x14, 0x12, 0xE1, 0x24, 0x1B, 0x31, 0x68, 0x00, 0xAA, 0xB8, 0x24, 0x12, 0x54, 0xA2, + 0x02, 0x11, 0x43, 0x6C, 0x67, 0x11, 0x85, 0xA3, 0x02, 0x12, 0x7C, 0xD4, 0x15, 0x11, 0x66, 0x71, + 0x5A, 0x11, 0x60, 0xEB, 0x12, 0x12, 0xA4, 0xDD, 0x31, 0x11, 0x89, 0x62, 0x25, 0x11, 0x3A, 0xE8, + 0x3B, 0x12, 0xCD, 0xFF, 0x2A, 0x11, 0xAC, 0xBF, 0x2E, 0x00, 0x2F, 0x26, 0x30, 0x7E, 0x02, 0xF5, + 0xDE, 0x00, 0x10, 0x9E, 0x9D, 0x04, 0x12, 0xA7, 0x1C, 0x4A, 0xA2, 0x9E, 0x1D, 0xFF, 0xFF, 0xB1, + 0xFA, 0xFF, 0xC4, 0x01, 0xF2, 0xA8, 0x40, 0xC3, 0xCA, 0xFF, 0xFF, 0xBF, 0x45, 0xFF, 0xFF, 0x7F, + 0xD4, 0xFF, 0xE9, 0x14, 0x6A, 0x27, 0xC2, 0xA4, 0xFF, 0xFF, 0xDF, 0x6D, 0xFF, 0xFF, 0x52, 0xA9, + 0xFF, 0xFF, 0x46, 0x0E, 0x07, 0x00, 0x35, 0x03, 0x92, 0xFC, 0x99, 0xFF, 0xFF, 0x25, 0x7E, 0xFF, + 0xFF, 0x8E, 0x47, 0x4D, 0x01, 0x9B, 0x4A, 0xB4, 0xDE, 0xFF, 0xF6, 0x03, 0x53, 0xFF, 0xFF, 0xD7, + 0xFF, 0xFF, 0xE6, 0xB3, 0x12, 0x00, 0x2A, 0x1C, 0x13, 0x28, 0x9F, 0x0C, 0x04, 0x1B, 0x30, 0x31, + 0xFF, 0x9F, 0x00, 0xC9, 0x5C, 0x24, 0xFF, 0x98, 0xEB, 0x5B, 0x01, 0x96, 0x39, 0x16, 0xD2, 0x9E, + 0x39, 0x22, 0xC4, 0xFF, 0x0B, 0x69, 0x16, 0xA7, 0x52, 0x3C, 0x13, 0x9E, 0xA8, 0x02, 0x16, 0x7C, + 0x8E, 0x28, 0x13, 0x79, 0xDC, 0x28, 0x00, 0xD1, 0x0C, 0x25, 0xFA, 0x04, 0x0A, 0x59, 0x11, 0xBE, + 0xD7, 0x80, 0x00, 0x78, 0x08, 0x00, 0x88, 0x2D, 0x02, 0x84, 0x01, 0x10, 0x60, 0xF8, 0x23, 0xB2, + 0x11, 0x00, 0x00, 0x02, 0xDF, 0xFC, 0xFC, 0xF2, 0x0F, 0x09, 0xEC, 0xC6, 0x55, 0x12, 0x43, 0x30, + 0x25, 0x12, 0x85, 0x68, 0x71, 0x12, 0xA4, 0xDD, 0x00, 0x10, 0x1B, 0xA2, 0x13, 0x33, 0x54, 0x0F, + 0xF6, 0xEC, 0x3C, 0x00, 0xF3, 0x60, 0x22, 0xC3, 0x64, 0x6F, 0x73, 0x03, 0x00, 0x59, 0x42, 0xE2, + 0xFF, 0xFF, 0xEF, 0xE3, 0x13, 0x12, 0xC8, 0x21, 0x02, 0x15, 0x8F, 0xAD, 0x1F, 0x03, 0xDD, 0x02, + 0x01, 0x2D, 0x17, 0x01, 0x29, 0x29, 0x14, 0xBD, 0x4F, 0x06, 0x18, 0xAE, 0x94, 0x23, 0x02, 0xAC, + 0x25, 0x01, 0x52, 0x00, 0x05, 0x40, 0x16, 0x25, 0xD0, 0x01, 0xDC, 0x1F, 0x06, 0xB7, 0x25, 0x04, + 0x05, 0x1D, 0x15, 0xAE, 0x75, 0x07, 0x00, 0x8B, 0x6C, 0x10, 0xFD, 0x81, 0x04, 0x20, 0x09, 0xEF, + 0x0D, 0xC3, 0x13, 0xE5, 0xEA, 0x21, 0x11, 0x5A, 0xD6, 0x22, 0x00, 0x12, 0x01, 0x31, 0xF0, 0x0C, + 0x00, 0xD0, 0x08, 0x41, 0x2A, 0x00, 0x12, 0xF6, 0xF4, 0x59, 0x13, 0x22, 0xC0, 0x30, 0x00, 0x3A, + 0x00, 0x33, 0xD8, 0x02, 0x83, 0x65, 0x01, 0x01, 0x6C, 0x0F, 0x41, 0x48, 0x0E, 0x0E, 0x19, 0x78, + 0x1D, 0x40, 0xAB, 0xFC, 0xFC, 0xFC, 0xA9, 0x11, 0x10, 0x05, 0x9F, 0x3E, 0x23, 0x5B, 0x70, 0xE9, + 0x02, 0x01, 0x2C, 0x23, 0x11, 0x24, 0x50, 0x24, 0x12, 0x14, 0x86, 0x59, 0x42, 0xEC, 0x01, 0x03, + 0xF1, 0x8B, 0x24, 0x12, 0x7A, 0xDB, 0x11, 0x12, 0xB4, 0x3B, 0x24, 0x12, 0xA3, 0x3B, 0x59, 0x12, + 0x75, 0x0E, 0x2C, 0x12, 0xCC, 0x42, 0x03, 0x11, 0x36, 0x79, 0x00, 0xF4, 0x00, 0x01, 0xF4, 0xFF, + 0xFF, 0xFE, 0x0F, 0x00, 0x00, 0x04, 0xF3, 0xFF, 0xFF, 0xF8, 0x04, 0x1D, 0xD2, 0x54, 0x00, 0xE1, + 0x27, 0x24, 0x2A, 0x46, 0xB1, 0x26, 0x00, 0x9E, 0x10, 0x24, 0x58, 0x6E, 0xE7, 0x23, 0x00, 0x90, + 0x07, 0x24, 0x87, 0x97, 0x6A, 0x5A, 0xA4, 0x05, 0xF4, 0xFF, 0xFF, 0xB5, 0xBF, 0xFF, 0xFF, 0xF3, + 0x03, 0xCF, 0x20, 0x25, 0xE3, 0xE8, 0x59, 0x01, 0x03, 0x34, 0x60, 0x18, 0x85, 0xD8, 0x72, 0x22, + 0xFF, 0x4D, 0x0E, 0x00, 0x12, 0x07, 0x2E, 0x0F, 0x17, 0x16, 0x4D, 0x63, 0x01, 0x71, 0x6B, 0x06, + 0xCF, 0x03, 0x05, 0x74, 0x71, 0x01, 0x10, 0x30, 0x14, 0x6D, 0x0E, 0x00, 0x18, 0x12, 0x7F, 0x23, + 0x01, 0x04, 0x2A, 0x12, 0xF8, 0x09, 0x54, 0x43, 0x0C, 0x47, 0x65, 0xB6, 0x36, 0x07, 0x04, 0xBC, + 0x63, 0x05, 0xB7, 0x21, 0x01, 0x0E, 0x00, 0x34, 0xFD, 0x72, 0x00, 0x0E, 0x00, 0x45, 0xF1, 0xCF, + 0x90, 0x2C, 0xA4, 0x11, 0x27, 0x0C, 0x0B, 0x24, 0x06, 0x02, 0x4D, 0x5F, 0x16, 0x68, 0x2B, 0x5F, + 0x06, 0x0B, 0x00, 0x20, 0x4E, 0x1C, 0xB0, 0x24, 0x00, 0x4D, 0x28, 0x24, 0xF1, 0x0A, 0x18, 0x96, + 0x01, 0xC3, 0x2A, 0x03, 0xCC, 0x39, 0x02, 0x3A, 0x24, 0x12, 0xB1, 0x9D, 0x4C, 0x00, 0xBF, 0x16, + 0x15, 0xFC, 0xB7, 0x73, 0x00, 0x19, 0x03, 0x11, 0xF8, 0x8C, 0x4B, 0x25, 0x02, 0xE0, 0x33, 0x5C, + 0x16, 0x47, 0x8D, 0x5D, 0x23, 0xAC, 0xFF, 0xBF, 0x1F, 0x34, 0x00, 0x17, 0xFB, 0x01, 0x2A, 0x01, + 0xA6, 0x63, 0x11, 0xFE, 0x87, 0x1F, 0x25, 0x02, 0xDC, 0xB4, 0x27, 0x16, 0x42, 0x69, 0x28, 0x00, + 0xF6, 0x26, 0x20, 0xF8, 0x43, 0x2E, 0x24, 0x16, 0x12, 0xA8, 0x16, 0x1F, 0x4C, 0x0B, 0x00, 0x03, + 0x22, 0x0B, 0x0A, 0x88, 0x6C, 0x00, 0xFC, 0x02, 0x32, 0x70, 0xC6, 0xF2, 0x50, 0x16, 0x23, 0xA2, + 0xFF, 0x5C, 0x09, 0x24, 0x27, 0xFF, 0x0A, 0x00, 0x01, 0xFC, 0x4A, 0x33, 0xAF, 0x4C, 0x15, 0xCA, + 0x62, 0x14, 0x13, 0xD6, 0x5B, 0x24, 0xF0, 0x00, 0xD2, 0x4E, 0x15, 0xE9, 0x0A, 0x00, 0x1F, 0xE8, + 0x0A, 0x00, 0x10, 0x15, 0x8D, 0x0A, 0x00, 0x15, 0x92, 0xD1, 0x2D, 0x23, 0x9F, 0xFF, 0x30, 0x18, + 0x23, 0x00, 0xC3, 0x11, 0x18, 0x33, 0x24, 0x6C, 0xFE, 0x6D, 0x52, 0x01, 0x13, 0x17, 0x23, 0xBF, + 0x05, 0x0A, 0x00, 0x34, 0xDC, 0x20, 0x00, 0x14, 0x00, 0x10, 0xE4, 0x8B, 0x00, 0x35, 0x04, 0x34, + 0xF5, 0x76, 0x35, 0x00, 0xEC, 0x01, 0x15, 0xAD, 0xC7, 0x17, 0x15, 0xD4, 0x03, 0x4F, 0x1B, 0xE5, + 0x78, 0x00, 0x0F, 0xAA, 0x00, 0x15, 0x14, 0x8A, 0x6F, 0x33, 0x01, 0x23, 0x2D, 0x24, 0xFD, 0x07, + 0x46, 0x5D, 0x20, 0xFF, 0x74, 0x36, 0x95, 0x15, 0x40, 0x22, 0x01, 0x24, 0x04, 0xD5, 0x0A, 0x00, + 0x45, 0x00, 0x22, 0xB9, 0xFD, 0x38, 0x17, 0x50, 0x0E, 0x35, 0x40, 0x40, 0x13, 0x34, 0x59, 0x20, + 0x22, 0x02, 0xD0, 0x0C, 0x50, 0xC6, 0xFC, 0xFC, 0xFC, 0x23, 0x67, 0x4D, 0x07, 0x05, 0x00, 0x1F, + 0xCA, 0x05, 0x00, 0x00, 0x14, 0xCB, 0x05, 0x00, 0x16, 0x22, 0x05, 0x00, 0x1F, 0xCC, 0x05, 0x00, + 0x05, 0x14, 0xCD, 0x05, 0x00, 0x16, 0x21, 0x05, 0x00, 0x1F, 0xCE, 0x05, 0x00, 0x00, 0x14, 0xCF, + 0x05, 0x00, 0x16, 0x20, 0x05, 0x00, 0x1F, 0xD0, 0x05, 0x00, 0x05, 0x33, 0x00, 0x00, 0x0C, 0x1C, + 0x02, 0x65, 0x92, 0xFC, 0xFB, 0xE9, 0xB2, 0x47, 0xCB, 0x2B, 0x25, 0xFF, 0x58, 0x0A, 0x00, 0x00, + 0x0C, 0x1C, 0x33, 0x28, 0x58, 0xDB, 0x6C, 0x04, 0x03, 0xE4, 0x5F, 0x01, 0x4F, 0x27, 0x15, 0x3D, + 0xEF, 0x14, 0x15, 0x36, 0xF5, 0x2B, 0x15, 0x35, 0xD8, 0x02, 0x1F, 0x34, 0x0A, 0x00, 0x14, 0x15, + 0x2E, 0xF8, 0x22, 0x16, 0x13, 0x8A, 0x05, 0x15, 0xED, 0x0E, 0x57, 0x00, 0x02, 0x15, 0x20, 0xE2, + 0x51, 0x3F, 0x03, 0x25, 0x24, 0xEA, 0x96, 0x20, 0x23, 0x50, 0xF7, 0x0A, 0x00, 0x24, 0x44, 0xFD, + 0x14, 0x00, 0x00, 0xE5, 0x6F, 0x20, 0xC8, 0x18, 0xB8, 0x57, 0x14, 0xF8, 0xF9, 0x14, 0x13, 0x20, + 0xB5, 0x71, 0x03, 0xAE, 0x05, 0x1F, 0x46, 0x96, 0x00, 0x19, 0x06, 0xC8, 0x00, 0x15, 0x38, 0xDE, + 0x34, 0x14, 0x4F, 0xDA, 0x76, 0x23, 0x15, 0xB3, 0xC3, 0x2C, 0x02, 0x22, 0x01, 0x24, 0xF1, 0x03, + 0x0A, 0x00, 0x13, 0x8E, 0x36, 0x01, 0x20, 0xF3, 0x91, 0x97, 0x04, 0x44, 0x25, 0x40, 0x3F, 0x2D, + 0x0C, 0x2A, 0x43, 0x0F, 0x0E, 0x07, 0x01, 0x42, 0x35, 0x26, 0x16, 0x32, 0xF5, 0x53, 0xE2, 0x0A, + 0x95, 0xFB, 0xFF, 0xEB, 0x7A, 0x0C, 0x00, 0x00, 0x02, 0x74, 0x16, 0x00, 0x11, 0xB6, 0x06, 0x87, + 0xEA, 0x7C, 0x4A, 0xBA, 0xFF, 0xC8, 0x09, 0x99, 0xD9, 0x09, 0x81, 0xED, 0x1E, 0x1D, 0xEB, 0xC3, + 0x31, 0x1A, 0x78, 0x36, 0x59, 0x50, 0xEF, 0x35, 0x00, 0x00, 0x2E, 0x60, 0x00, 0x6E, 0x0E, 0x79, + 0xDB, 0xFB, 0xAD, 0x23, 0x79, 0xBB, 0x31, 0x0C, 0x09, 0x17, 0x0A, 0x00, 0x22, 0xA0, 0xB0, 0x01, + 0x00, 0x30, 0x98, 0xE8, 0x8B, 0xFC, 0x4E, 0x42, 0x70, 0x92, 0xDC, 0xE8, 0x53, 0x29, 0x1F, 0x3C, + 0x09, 0x00, 0x91, 0x20, 0x47, 0x1C, 0x01, 0x00, 0x35, 0x52, 0xDC, 0xE8, 0xB5, 0x4C, 0x08, 0xC4, + 0x7C, 0x0F, 0x01, 0x00, 0x45, 0x3F, 0x23, 0x23, 0x23, 0x18, 0x00, 0x02, 0x05, 0xFB, 0xA8, 0x0E, + 0x3B, 0x00, 0x0F, 0x23, 0x00, 0xFF, 0xE0, 0x0F, 0x36, 0x00, 0x03, 0x08, 0x01, 0x00, 0x0F, 0x14, + 0x00, 0x01, 0x0F, 0x23, 0x00, 0x33, 0x0F, 0x8E, 0x00, 0x12, 0x06, 0xF9, 0x5D, 0x14, 0x04, 0xD2, + 0x00, 0x0E, 0x54, 0x5E, 0x0F, 0xBC, 0x02, 0xFF, 0xC5, 0x0F, 0x01, 0x00, 0xFF, 0xFF, 0xA1, 0x08, + 0xD8, 0x07, 0x04, 0x0D, 0x33, 0x31, 0x0C, 0x08, 0x2B, 0x13, 0x0D, 0x12, 0x73, 0x95, 0x0D, 0x13, + 0xB0, 0x94, 0x14, 0x13, 0x9F, 0x75, 0x67, 0x22, 0x8C, 0x42, 0x08, 0x00, 0x13, 0x79, 0x88, 0x0F, + 0x13, 0x65, 0xDA, 0x36, 0x23, 0x52, 0x0F, 0xA5, 0x0F, 0x12, 0x02, 0x3C, 0x15, 0x11, 0x2C, 0x4A, + 0x0A, 0x00, 0xA0, 0x10, 0x02, 0xC3, 0x66, 0x11, 0x06, 0x80, 0x24, 0x00, 0xC5, 0x17, 0x01, 0xE7, + 0x3E, 0x13, 0xDF, 0xF4, 0x3F, 0x13, 0xCB, 0xD2, 0x4C, 0x13, 0xB8, 0xA9, 0x4C, 0x13, 0xA5, 0x5C, + 0x32, 0x13, 0x91, 0xB3, 0x5D, 0x13, 0x7E, 0x59, 0x12, 0x13, 0x6B, 0x59, 0x37, 0x13, 0x58, 0xCD, + 0x33, 0x13, 0x44, 0x06, 0x34, 0x13, 0x31, 0x2E, 0x70, 0x52, 0x1E, 0x00, 0x00, 0x02, 0xFE, 0x1C, + 0x38, 0x00, 0x97, 0x3B, 0x22, 0xF7, 0x01, 0xED, 0x39, 0x13, 0xE4, 0x2C, 0x80, 0x13, 0xD1, 0x44, + 0x81, 0x13, 0xBD, 0x29, 0x37, 0x13, 0xAA, 0xC2, 0x0C, 0x13, 0x97, 0x30, 0x30, 0x13, 0x84, 0x72, + 0x0F, 0x04, 0xD9, 0xB2, 0x13, 0x5D, 0x9E, 0x26, 0x14, 0x4A, 0x0E, 0x2D, 0x0E, 0xBA, 0x05, 0x12, + 0x8A, 0x20, 0x01, 0x13, 0x77, 0xE8, 0x52, 0x1F, 0x78, 0x08, 0x00, 0x15, 0x40, 0x14, 0x10, 0x0F, + 0x03, 0x7A, 0x35, 0x11, 0xC9, 0x3F, 0x00, 0x14, 0x66, 0xB1, 0x96, 0x33, 0x47, 0xCC, 0xFF, 0x96, + 0x32, 0x02, 0x36, 0x40, 0x33, 0x17, 0xCC, 0xFF, 0x05, 0x7B, 0x12, 0xF0, 0x8D, 0x28, 0x23, 0xCC, + 0xFF, 0xDF, 0x1B, 0x12, 0xF0, 0xDA, 0x5C, 0x14, 0xCC, 0xA6, 0x4B, 0x12, 0xF0, 0x41, 0x53, 0x14, + 0xCC, 0x2C, 0x12, 0x12, 0xF0, 0xFD, 0x2B, 0x14, 0xCC, 0x89, 0x0F, 0x12, 0xF0, 0xC4, 0x15, 0x14, + 0xCC, 0xB0, 0x3B, 0x12, 0xF0, 0x5E, 0x5D, 0x12, 0xCC, 0x86, 0x01, 0x02, 0x10, 0x00, 0x12, 0xBA, + 0xA2, 0x10, 0x14, 0xAE, 0x10, 0x00, 0x12, 0x88, 0x10, 0x00, 0x14, 0x7D, 0x10, 0x00, 0x12, 0x56, + 0x10, 0x00, 0x14, 0x4C, 0x10, 0x00, 0x12, 0x25, 0x10, 0x00, 0x13, 0x1A, 0x10, 0x00, 0x21, 0xF2, + 0x02, 0x10, 0x00, 0x23, 0xE9, 0x01, 0x10, 0x00, 0x13, 0xC1, 0x0A, 0x07, 0x04, 0x13, 0x07, 0x01, + 0xA4, 0xB5, 0x28, 0x19, 0x2B, 0x46, 0x01, 0x11, 0xCE, 0xF6, 0x00, 0x13, 0x23, 0x19, 0x15, 0x24, + 0xFC, 0xFC, 0x90, 0x31, 0x21, 0x01, 0xF2, 0xF8, 0x00, 0x13, 0x05, 0xB2, 0x0E, 0x03, 0x83, 0x01, + 0x05, 0x8C, 0x4C, 0x14, 0xE0, 0x25, 0x34, 0x03, 0x66, 0x27, 0x05, 0x54, 0x13, 0x14, 0xBF, 0xAF, + 0x5D, 0x04, 0xC6, 0x16, 0x04, 0xCB, 0x2F, 0x00, 0x2F, 0x41, 0x27, 0x06, 0xFE, 0xA9, 0x14, 0x03, + 0x62, 0x02, 0x01, 0xFB, 0x2E, 0x1A, 0x25, 0xB4, 0x5F, 0x15, 0x96, 0xA0, 0x44, 0x02, 0xE6, 0x4C, + 0x01, 0x0E, 0x15, 0x05, 0x7C, 0x39, 0x24, 0xFF, 0x39, 0x55, 0x74, 0x04, 0x72, 0x3C, 0x02, 0xCF, + 0x23, 0x02, 0xB3, 0x3C, 0x00, 0x24, 0x3A, 0x02, 0x73, 0x15, 0x01, 0x34, 0x02, 0x01, 0x69, 0x11, + 0x24, 0xF5, 0x01, 0x98, 0x39, 0x26, 0xFF, 0x3E, 0x38, 0x32, 0x04, 0x39, 0x0F, 0x28, 0xCC, 0xFF, + 0xC8, 0x63, 0x02, 0x8B, 0x2E, 0x14, 0xB3, 0x58, 0x3E, 0x24, 0xFF, 0xF9, 0xD4, 0x24, 0x23, 0x5C, + 0xFF, 0x11, 0x03, 0x03, 0x18, 0x73, 0x01, 0x55, 0x32, 0x13, 0xEB, 0xDB, 0x7A, 0x01, 0x3C, 0x71, + 0x13, 0xFC, 0xAF, 0x18, 0x5F, 0xFC, 0xFC, 0x1A, 0x00, 0xF2, 0xD1, 0x08, 0x03, 0x3F, 0x17, 0x00, + 0xF5, 0x19, 0x00, 0x03, 0x3F, 0x14, 0x00, 0xF8, 0x19, 0x00, 0x03, 0x3F, 0x11, 0x00, 0xFB, 0x19, + 0x00, 0x03, 0x10, 0x0E, 0x93, 0xBD, 0x02, 0x76, 0x80, 0x52, 0xAB, 0x14, 0x14, 0x14, 0x16, 0xEA, + 0x00, 0x46, 0x15, 0x14, 0x14, 0x01, 0x85, 0x39, 0x15, 0x80, 0xEA, 0x00, 0x01, 0x7A, 0x03, 0x04, + 0x1C, 0x10, 0x02, 0x4F, 0x3B, 0x01, 0xBE, 0x0E, 0x03, 0x46, 0x10, 0x03, 0x7B, 0x3E, 0x02, 0x8F, + 0x35, 0x01, 0x18, 0x3A, 0x2A, 0xFF, 0x8A, 0x59, 0x39, 0x15, 0x13, 0x69, 0x16, 0x01, 0x19, 0x6C, + 0x14, 0x02, 0xD1, 0x54, 0x25, 0xFF, 0xFC, 0x0A, 0x00, 0x00, 0x03, 0x01, 0x2F, 0x06, 0x06, 0xCB, + 0x09, 0x04, 0x2F, 0x03, 0x09, 0x19, 0x00, 0x04, 0x2F, 0x01, 0x0C, 0x18, 0x00, 0x03, 0x3F, 0xFD, + 0x00, 0x0F, 0x19, 0x00, 0x03, 0x52, 0xFA, 0x00, 0x02, 0x14, 0x14, 0xAE, 0x00, 0x52, 0x53, 0x14, + 0x14, 0x14, 0x69, 0x93, 0x6F, 0x02, 0x4A, 0xDC, 0x04, 0xF9, 0x14, 0x14, 0x24, 0x43, 0x37, 0x27, + 0xFF, 0x71, 0xB8, 0x71, 0x54, 0xFF, 0xFF, 0xFD, 0x06, 0x00, 0x94, 0x2E, 0x17, 0x4F, 0x45, 0x13, + 0x03, 0xD1, 0x02, 0x24, 0xBF, 0xFF, 0x54, 0x6B, 0x14, 0x00, 0xA2, 0x51, 0x02, 0xC4, 0x97, 0x00, + 0x7D, 0x1F, 0x02, 0x4D, 0x16, 0x05, 0x96, 0x38, 0x01, 0x1E, 0x14, 0x35, 0x05, 0xFD, 0xFF, 0x39, + 0x11, 0x04, 0x32, 0x11, 0x23, 0xFF, 0x7B, 0xA4, 0x32, 0x05, 0x93, 0x52, 0x04, 0x7C, 0x67, 0x14, + 0x59, 0xCF, 0x5B, 0x2E, 0xFF, 0xA9, 0x75, 0x01, 0x01, 0x67, 0x05, 0x2A, 0xFF, 0x88, 0x75, 0x01, + 0x15, 0x15, 0x3F, 0x44, 0x14, 0x67, 0x98, 0x03, 0x01, 0xF4, 0x19, 0x33, 0xF4, 0x01, 0x00, 0x83, + 0x16, 0x28, 0xFF, 0x45, 0x1A, 0x14, 0x02, 0x43, 0x44, 0x15, 0xC9, 0x03, 0x01, 0x23, 0x00, 0x00, + 0x13, 0x1F, 0x02, 0x5D, 0x35, 0x11, 0xEA, 0xA6, 0x01, 0x28, 0x06, 0x00, 0x2A, 0x18, 0x23, 0x8E, + 0x00, 0x9F, 0x31, 0x29, 0xFF, 0xE2, 0xFE, 0x81, 0x25, 0xFF, 0x6D, 0x48, 0x14, 0x14, 0xC1, 0x19, + 0x00, 0x3B, 0x1A, 0x18, 0x35, 0xD8, 0x66, 0x3F, 0x0C, 0x7C, 0x7C, 0xE7, 0xBC, 0x02, 0x16, 0x18, + 0x18, 0x04, 0x0F, 0x18, 0x00, 0x27, 0x99, 0x10, 0x3E, 0x66, 0x85, 0xFF, 0xFF, 0xA5, 0x72, 0x36, + 0xA1, 0x27, 0x25, 0x3D, 0xAF, 0xBC, 0x68, 0x25, 0xE3, 0x70, 0x49, 0x10, 0x29, 0x09, 0x9A, 0x24, + 0x02, 0x13, 0xC4, 0x90, 0x36, 0x2B, 0x07, 0xBD, 0x3D, 0x02, 0x25, 0xC8, 0x07, 0xAC, 0x6F, 0x0A, + 0x56, 0x02, 0x01, 0x64, 0x05, 0x2D, 0x2A, 0xFC, 0x18, 0x00, 0x33, 0xF2, 0x0D, 0x00, 0x01, 0x23, + 0x00, 0x5C, 0x2B, 0x43, 0xAA, 0x86, 0x93, 0xDE, 0x0C, 0x00, 0x15, 0x6C, 0x72, 0x40, 0x20, 0xFF, + 0xE4, 0x6C, 0x01, 0x13, 0x08, 0x3F, 0x2C, 0x13, 0xC5, 0x5A, 0x62, 0x04, 0xD1, 0x54, 0x22, 0x00, + 0x16, 0xF6, 0x73, 0x23, 0xFC, 0x0C, 0x5C, 0x04, 0x02, 0xD7, 0x01, 0x03, 0xF3, 0x38, 0x01, 0x28, + 0x39, 0x13, 0x4A, 0x18, 0x00, 0x03, 0xCE, 0x00, 0x23, 0x75, 0xFF, 0xC4, 0x04, 0x01, 0x24, 0x15, + 0x05, 0x8B, 0x41, 0x24, 0x00, 0x4F, 0xAA, 0x00, 0x03, 0x48, 0x3B, 0x25, 0xFF, 0x4C, 0x35, 0x64, + 0x53, 0xF2, 0xC0, 0x8D, 0x5A, 0x1C, 0x04, 0x02, 0x03, 0xED, 0x01, 0x75, 0x00, 0x00, 0x15, 0x5A, + 0x27, 0x02, 0x00, 0x46, 0x42, 0x0A, 0x28, 0x74, 0x06, 0x13, 0x3D, 0x01, 0x53, 0x03, 0x1A, 0x44, + 0x18, 0x00, 0x14, 0x24, 0x08, 0x01, 0x2A, 0xF6, 0x4B, 0x19, 0x00, 0x15, 0x8C, 0x9E, 0x03, 0x19, + 0x68, 0x18, 0x00, 0x25, 0x09, 0xCF, 0x31, 0x01, 0x19, 0x8A, 0x05, 0x2A, 0x25, 0x1E, 0xE3, 0x19, + 0x00, 0x28, 0xAB, 0x09, 0x19, 0x00, 0x16, 0x25, 0x19, 0x00, 0x19, 0xC7, 0x6A, 0x66, 0x25, 0x1C, + 0xD1, 0x19, 0x00, 0x19, 0xDD, 0x8B, 0x10, 0x16, 0x0E, 0x04, 0x8C, 0x28, 0xE6, 0x29, 0x19, 0x00, + 0x16, 0x05, 0xA5, 0x23, 0x28, 0xE5, 0x21, 0x19, 0x00, 0x25, 0x01, 0x7A, 0x19, 0x00, 0x29, 0xD7, + 0x0D, 0xB0, 0x00, 0x27, 0x5A, 0xF9, 0x5B, 0x62, 0x08, 0xE1, 0x00, 0x3A, 0x40, 0xF0, 0xFF, 0x5D, + 0x01, 0x04, 0x01, 0x00, 0x14, 0x33, 0xAF, 0x64, 0x2A, 0xD9, 0x02, 0x19, 0x00, 0x29, 0x3F, 0xFB, + 0x60, 0x56, 0x57, 0x00, 0x02, 0x26, 0x25, 0x00, 0xF1, 0x53, 0x00, 0x18, 0x4B, 0x62, 0x01, 0x22, + 0x56, 0x8A, 0xBE, 0xF1, 0x1E, 0x5C, 0x03, 0xFD, 0x6E, 0x01, 0x3E, 0x1C, 0x29, 0x57, 0xFF, 0x32, + 0x66, 0x13, 0x82, 0x31, 0x00, 0x39, 0x19, 0x44, 0xFF, 0x43, 0x48, 0x13, 0x4D, 0x18, 0x00, 0x12, + 0x3A, 0x9D, 0x42, 0x03, 0x94, 0x65, 0x05, 0x4F, 0x3D, 0x22, 0xFF, 0x4A, 0xEF, 0x41, 0x05, 0xBE, + 0x3B, 0x13, 0x35, 0x18, 0x00, 0x39, 0x45, 0x00, 0xC7, 0x61, 0x00, 0x24, 0x62, 0xFF, 0x07, 0x1A, + 0x03, 0x18, 0x01, 0x11, 0xFD, 0xCB, 0x19, 0x22, 0x02, 0xC3, 0x0E, 0x00, 0x25, 0xF9, 0x04, 0xA5, + 0x2D, 0x51, 0xF4, 0x70, 0x18, 0x02, 0x28, 0xD1, 0x54, 0x03, 0xBE, 0x65, 0x1F, 0xB4, 0x88, 0x05, + 0x00, 0x00, 0x1A, 0x20, 0x2D, 0x2D, 0xFE, 0x17, 0x00, 0x25, 0xC2, 0x01, 0x65, 0x7B, 0x08, 0x17, + 0x00, 0x12, 0xF1, 0x7D, 0x1A, 0x2A, 0x01, 0x8B, 0x17, 0x00, 0x24, 0xEC, 0x3B, 0x48, 0x01, 0x18, + 0x52, 0x76, 0x48, 0x27, 0xBC, 0x1D, 0xDF, 0x01, 0x40, 0x4B, 0x98, 0xC5, 0xEE, 0x69, 0x05, 0x3D, + 0xE8, 0xA2, 0x3E, 0x24, 0x04, 0x00, 0x9B, 0x94, 0x0F, 0x6D, 0x68, 0x01, 0x15, 0x30, 0x4E, 0x03, + 0x0F, 0x18, 0x00, 0x2B, 0x36, 0x18, 0x80, 0x80, 0x5F, 0x00, 0x44, 0x33, 0x30, 0x2B, 0x02, 0x0C, + 0x00, 0xA9, 0x12, 0x69, 0xAF, 0xD7, 0xF4, 0xFB, 0xF2, 0xD2, 0xAB, 0x61, 0x8A, 0xE4, 0x10, 0xF4, + 0x0F, 0x07, 0x1D, 0x19, 0x47, 0x00, 0x26, 0x02, 0x6F, 0xFB, 0x77, 0x49, 0xF1, 0x64, 0x01, 0x00, + 0x10, 0x24, 0x1D, 0xD1, 0x2F, 0x00, 0x29, 0x01, 0x9B, 0x25, 0x01, 0x06, 0x4A, 0xC3, 0x19, 0x90, + 0x25, 0x06, 0x05, 0x30, 0x00, 0x1B, 0x52, 0x6D, 0x01, 0x19, 0x44, 0x18, 0x09, 0x1D, 0x40, 0x8E, + 0x00, 0x1B, 0xD1, 0x30, 0x00, 0x27, 0xC6, 0x00, 0xD2, 0x3F, 0x1C, 0xF3, 0x9E, 0xC8, 0x04, 0x69, + 0x02, 0x43, 0xB5, 0x37, 0x18, 0x3E, 0x5C, 0x33, 0x17, 0x23, 0xDB, 0x7D, 0x1D, 0xB0, 0x8F, 0x00, + 0x02, 0xD9, 0x09, 0x10, 0xE0, 0x3D, 0x0A, 0x37, 0x0E, 0xF1, 0xFF, 0x9A, 0x7D, 0x17, 0xB0, 0x36, + 0x22, 0x2B, 0x00, 0x00, 0x7E, 0x7B, 0x17, 0x96, 0x15, 0x05, 0x02, 0x59, 0x1A, 0x24, 0x06, 0xF3, + 0xA5, 0x80, 0x0A, 0x30, 0x00, 0x17, 0xC5, 0xDA, 0x07, 0x14, 0x8B, 0xF4, 0x7E, 0x04, 0x8F, 0x3F, + 0x1E, 0xD8, 0xC5, 0x01, 0x26, 0xDE, 0xFF, 0xD5, 0x1C, 0x17, 0x7B, 0x94, 0x69, 0x01, 0x2C, 0x0A, + 0x1E, 0x90, 0x30, 0x00, 0x17, 0xE7, 0x2D, 0x05, 0x02, 0x8D, 0x05, 0x16, 0xD3, 0xE0, 0x40, 0x1E, + 0x47, 0x30, 0x00, 0x17, 0xE8, 0x46, 0x46, 0x16, 0x74, 0x59, 0x0A, 0x01, 0x7A, 0x09, 0x2F, 0xF7, + 0x09, 0x30, 0x00, 0x16, 0x1B, 0x61, 0xB2, 0x8A, 0x08, 0x82, 0x7A, 0x05, 0x4E, 0x06, 0x16, 0x76, + 0xE8, 0x07, 0x01, 0xBA, 0x0D, 0x1F, 0x6F, 0x30, 0x00, 0x00, 0x02, 0xEF, 0x05, 0x16, 0x65, 0x46, + 0x22, 0x01, 0xC6, 0x44, 0x27, 0x04, 0xEE, 0x04, 0x1E, 0x09, 0x30, 0x00, 0x17, 0xBE, 0x56, 0x32, + 0x15, 0x95, 0x16, 0x0A, 0x27, 0x39, 0xFF, 0xDF, 0x3F, 0x09, 0x30, 0x00, 0x02, 0x12, 0x0C, 0x16, + 0xAB, 0x11, 0x1F, 0x01, 0x45, 0x01, 0x16, 0x81, 0xB9, 0x01, 0x0F, 0xF6, 0x6B, 0x01, 0x02, 0x99, + 0x50, 0x25, 0x21, 0xFD, 0x0B, 0x09, 0x18, 0xCA, 0x86, 0x09, 0x09, 0x30, 0x00, 0x03, 0xE8, 0x04, + 0x42, 0xBE, 0x34, 0x11, 0x41, 0x32, 0x6B, 0x50, 0xFE, 0x15, 0x00, 0x00, 0x15, 0x6B, 0x04, 0x3F, + 0xFA, 0x0D, 0x00, 0x01, 0x00, 0x01, 0x0C, 0x9F, 0x04, 0x14, 0xAB, 0x51, 0x7E, 0x12, 0xBE, 0xFB, + 0x0C, 0x93, 0x4A, 0x9E, 0xCA, 0xEE, 0xFA, 0xF7, 0xDF, 0xB9, 0x80, 0x13, 0x6B, 0x29, 0x34, 0xFD, + 0x2F, 0x00, 0x24, 0xFC, 0x2D, 0x10, 0x1C, 0x01, 0xC2, 0x45, 0x17, 0x38, 0xB2, 0x26, 0x12, 0xA0, + 0x26, 0x73, 0x19, 0x73, 0x30, 0x00, 0x13, 0x6C, 0x16, 0x85, 0x02, 0x2C, 0x0A, 0x19, 0x48, 0xA1, + 0x0B, 0x12, 0xD6, 0x31, 0x00, 0x25, 0x52, 0xED, 0x12, 0x00, 0x25, 0xEA, 0x4E, 0x44, 0x03, 0x6A, + 0xE6, 0x01, 0x00, 0x00, 0x0F, 0xEC, 0xAC, 0x00, 0x03, 0x07, 0x79, 0xB6, 0x0B, 0x60, 0xAF, 0xD9, + 0xFA, 0xFF, 0xF8, 0xD6, 0xAC, 0x5B, 0x0A, 0x3F, 0x1E, 0x16, 0x9E, 0x48, 0x1E, 0x06, 0x18, 0x0B, + 0x1F, 0x25, 0x95, 0x6D, 0x02, 0x14, 0xC2, 0x1D, 0x49, 0x12, 0xDA, 0x1B, 0x09, 0x4A, 0x53, 0x1B, + 0x29, 0x8C, 0x0C, 0x91, 0x0A, 0x76, 0x70, 0x00, 0xE2, 0x07, 0x25, 0xFD, 0x12, 0x6C, 0x01, 0x16, + 0x3D, 0x88, 0x03, 0x1F, 0xC3, 0x30, 0x00, 0x01, 0x14, 0x53, 0x27, 0x04, 0x12, 0x50, 0xFE, 0x32, + 0x16, 0x01, 0x57, 0x20, 0x1F, 0xEF, 0x30, 0x00, 0x01, 0x14, 0x9B, 0x7A, 0x00, 0x15, 0x6D, 0x80, + 0x02, 0x04, 0x23, 0x0E, 0x2E, 0xFF, 0x0E, 0x2F, 0x00, 0x24, 0x01, 0xE3, 0xD9, 0x1E, 0x02, 0xEF, + 0x0A, 0x02, 0x08, 0x4A, 0x02, 0x17, 0x0E, 0x2E, 0xFF, 0x25, 0x30, 0x00, 0x01, 0x9C, 0x0B, 0x25, + 0xEB, 0x02, 0x9B, 0x09, 0x16, 0xB5, 0xBF, 0x04, 0x02, 0x7E, 0x6F, 0x0B, 0x30, 0x00, 0x15, 0x73, + 0x54, 0x1F, 0x17, 0x90, 0x30, 0x04, 0x03, 0x34, 0x11, 0x1E, 0x2C, 0x30, 0x00, 0x15, 0xBB, 0x01, + 0x04, 0x0F, 0x30, 0x00, 0x12, 0x25, 0x0B, 0xF9, 0xA7, 0x09, 0x17, 0x8E, 0x80, 0x23, 0x2C, 0x22, + 0xFF, 0x4E, 0x4A, 0x26, 0x00, 0x00, 0x32, 0x1F, 0x17, 0xCD, 0xBD, 0x23, 0x25, 0xBD, 0x00, 0xC6, + 0x53, 0x0F, 0xF1, 0x04, 0x01, 0x16, 0x94, 0x4A, 0x20, 0x17, 0x66, 0xCF, 0x0D, 0x03, 0x55, 0x20, + 0x1D, 0x07, 0x30, 0x00, 0x16, 0xDC, 0x67, 0x2A, 0x02, 0x44, 0x0A, 0x25, 0xF9, 0x0A, 0xAF, 0x05, + 0x2D, 0xFF, 0xE8, 0x2F, 0x00, 0x01, 0x27, 0x24, 0x12, 0xF0, 0x00, 0x07, 0x25, 0x11, 0xFD, 0x7D, + 0x0F, 0x12, 0x01, 0xE1, 0x0F, 0x1D, 0xB1, 0x30, 0x00, 0x17, 0x6C, 0x25, 0x49, 0x03, 0x64, 0x08, + 0x43, 0xEC, 0x53, 0x14, 0x25, 0xB5, 0x06, 0x1F, 0x6A, 0x9F, 0x03, 0x03, 0x19, 0x64, 0x48, 0x0F, + 0x07, 0x61, 0x0B, 0x1C, 0x12, 0x2F, 0x00, 0x37, 0x08, 0xF5, 0xFF, 0x2C, 0x4C, 0x2A, 0x04, 0xD6, + 0x30, 0x00, 0x1D, 0x80, 0x5F, 0x00, 0x27, 0x44, 0xFF, 0x5A, 0x7C, 0x48, 0x00, 0x00, 0x2C, 0xEE, + 0x2F, 0x00, 0x1D, 0xBE, 0xCE, 0x06, 0x02, 0xC5, 0x0A, 0x16, 0x8C, 0x10, 0x00, 0x16, 0x21, 0xB9, + 0x3F, 0x2E, 0xFE, 0x88, 0x4D, 0x01, 0x2A, 0x00, 0xD4, 0x38, 0x7E, 0xC2, 0x00, 0x00, 0x01, 0x3B, + 0x97, 0xC7, 0xEE, 0xFD, 0xF9, 0xDF, 0xB8, 0x7A, 0xA5, 0x00, 0x57, 0x1F, 0x1B, 0x2D, 0x02, 0xFF, + 0x20, 0x00, 0x7E, 0x15, 0x47, 0x70, 0x7A, 0x6E, 0x48, 0x16, 0x4A, 0x00, 0x22, 0x31, 0xAF, 0x59, + 0x0B, 0x2B, 0xFD, 0xBA, 0x94, 0x07, 0x27, 0x01, 0x73, 0x45, 0x04, 0x19, 0xA0, 0x33, 0x06, 0x19, + 0x78, 0xFE, 0x00, 0x17, 0xBB, 0xA6, 0x08, 0x1A, 0x31, 0xC6, 0x04, 0x06, 0x0E, 0x11, 0x04, 0x9B, + 0x11, 0x33, 0xFF, 0xD9, 0x9A, 0xDC, 0x09, 0x29, 0xF7, 0x13, 0xEC, 0x01, 0x43, 0xFF, 0xFF, 0xBA, + 0x06, 0x25, 0x39, 0x02, 0xCE, 0x04, 0x05, 0xEA, 0x73, 0x04, 0x46, 0x0A, 0x25, 0xD1, 0xFF, 0xE7, + 0x4A, 0x04, 0xAC, 0x48, 0x46, 0xFF, 0xFF, 0xEF, 0x02, 0xBD, 0x49, 0x19, 0xC4, 0xAA, 0x49, 0x27, + 0xFF, 0xD4, 0xCF, 0x0E, 0x17, 0xC8, 0x90, 0x91, 0x03, 0xEE, 0x24, 0x04, 0xD1, 0x0E, 0x1A, 0xB3, + 0x43, 0x06, 0x10, 0xF4, 0x51, 0x00, 0x2A, 0x0C, 0xFC, 0xFB, 0x0E, 0x02, 0xE2, 0x06, 0x06, 0x9C, + 0x88, 0x07, 0x74, 0x7A, 0x01, 0x67, 0x1F, 0x02, 0x25, 0x81, 0x12, 0x98, 0x41, 0x00, 0x05, 0xB2, + 0x71, 0x24, 0x02, 0xE3, 0x67, 0x12, 0x2C, 0x09, 0xEF, 0x1F, 0x72, 0x12, 0x85, 0x51, 0x2D, 0x12, + 0x02, 0x62, 0x07, 0x27, 0xFF, 0xF7, 0xA0, 0x09, 0x12, 0x1C, 0x09, 0x0C, 0x22, 0x39, 0x03, 0x37, + 0x05, 0x18, 0x7B, 0x7A, 0x01, 0x02, 0x0B, 0x07, 0x12, 0x91, 0x64, 0x11, 0x19, 0xC6, 0x1F, 0x0A, + 0x11, 0x19, 0xD5, 0x66, 0x11, 0xE8, 0xFF, 0x5C, 0x1B, 0xED, 0x93, 0xD8, 0x06, 0x5C, 0x0E, 0x1B, + 0xFC, 0x57, 0x0D, 0x25, 0x00, 0x11, 0xF4, 0x70, 0x1D, 0x62, 0x1C, 0x02, 0x04, 0xA2, 0x7B, 0x1D, + 0x78, 0x1A, 0x00, 0x2F, 0x15, 0xD5, 0xF1, 0x72, 0x01, 0x01, 0x78, 0x04, 0x04, 0xCC, 0x6E, 0x03, + 0x51, 0x10, 0x10, 0x45, 0x0F, 0x2B, 0x10, 0x7C, 0xD6, 0x0B, 0x15, 0x01, 0xFC, 0x77, 0x26, 0xFF, + 0x3F, 0x69, 0x87, 0x01, 0xE0, 0x00, 0x16, 0x5D, 0x32, 0x02, 0x11, 0xD1, 0xD5, 0x00, 0x14, 0xBD, + 0xB7, 0x03, 0x18, 0x15, 0x9B, 0x06, 0x16, 0x69, 0x3A, 0x09, 0x14, 0x47, 0xDF, 0x1F, 0x12, 0xFE, + 0x6A, 0x0D, 0x31, 0xED, 0x12, 0x00, 0x7D, 0x98, 0x01, 0x66, 0x10, 0x12, 0x17, 0x42, 0x01, 0x13, + 0xAB, 0xCA, 0x91, 0x14, 0x93, 0x36, 0x10, 0x24, 0xF8, 0x05, 0x36, 0x07, 0x13, 0x34, 0xBA, 0x0E, + 0x44, 0xFD, 0x2D, 0x00, 0x5E, 0xDE, 0x05, 0x14, 0xC8, 0x57, 0x09, 0x03, 0x69, 0x98, 0x33, 0xBE, + 0x01, 0x9E, 0xD5, 0x09, 0x25, 0x0B, 0xFB, 0x29, 0x57, 0x12, 0x2F, 0xE1, 0x02, 0x12, 0x57, 0x30, + 0x09, 0x37, 0x29, 0x00, 0x31, 0x77, 0x85, 0x02, 0x92, 0x02, 0x14, 0xF6, 0xBF, 0x0A, 0x02, 0xF4, + 0x55, 0x02, 0x0C, 0x49, 0x29, 0x16, 0xF1, 0xED, 0x83, 0x03, 0x77, 0x56, 0x17, 0x1F, 0x6F, 0x09, + 0x01, 0x2B, 0x0E, 0x14, 0x05, 0x03, 0x11, 0x03, 0xC3, 0x14, 0x02, 0x99, 0x55, 0x04, 0xFB, 0x10, + 0x19, 0x33, 0x7B, 0x02, 0x13, 0x50, 0x1A, 0x00, 0x24, 0xF7, 0x0D, 0x26, 0x51, 0x04, 0x0D, 0x69, + 0x15, 0x04, 0x9F, 0x3D, 0x21, 0xC4, 0x1F, 0x20, 0xA0, 0x00, 0x01, 0x00, 0x10, 0xFB, 0x4F, 0x07, + 0x26, 0x22, 0xB7, 0x87, 0x00, 0x34, 0xF9, 0xB0, 0x52, 0x6D, 0x00, 0x4A, 0xFB, 0xA8, 0x93, 0xC1, + 0xD3, 0x13, 0x4B, 0xA0, 0x00, 0x01, 0xBF, 0x15, 0x05, 0x24, 0xD8, 0xFA, 0x1B, 0x00, 0x39, 0x00, + 0x20, 0xE8, 0x1A, 0x00, 0x45, 0xD4, 0x16, 0x4B, 0xF8, 0x9C, 0x03, 0x18, 0x27, 0xF6, 0x84, 0x65, + 0xA8, 0x0E, 0x00, 0x00, 0x3E, 0xEA, 0xB7, 0x03, 0x23, 0x07, 0x78, 0x51, 0x0D, 0x22, 0xFB, 0xB6, + 0x8E, 0x4E, 0x26, 0x1A, 0xB4, 0xD2, 0x03, 0x76, 0x03, 0x30, 0x5D, 0x7A, 0x7D, 0x6A, 0x45, 0xF5, + 0x84, 0x72, 0x24, 0x62, 0x7D, 0x4B, 0x00, 0x11, 0x07, 0x14, 0x17, 0x11, 0x6B, 0x0B, 0x16, 0x12, + 0xA3, 0x44, 0x14, 0x12, 0x79, 0x07, 0x00, 0x12, 0x4C, 0x07, 0x00, 0x11, 0x1F, 0x07, 0x00, 0x32, + 0xF1, 0x01, 0x6C, 0x04, 0x04, 0x12, 0x6C, 0xF4, 0x09, 0x12, 0x6C, 0x41, 0x02, 0x12, 0x6C, 0x4A, + 0x08, 0x12, 0x6C, 0xB8, 0x14, 0x12, 0x6C, 0x45, 0x49, 0x12, 0x6C, 0x9F, 0x07, 0x12, 0x6C, 0xE3, + 0x03, 0x12, 0x6C, 0x7D, 0x14, 0x15, 0x02, 0x2D, 0x3A, 0x58, 0x11, 0x0D, 0x37, 0x03, 0xF5, 0x0A, + 0x05, 0x33, 0x20, 0x53, 0x75, 0x8C, 0xC3, 0x35, 0x02, 0x61, 0xD5, 0x05, 0x4B, 0x35, 0x1D, 0xBE, + 0xFF, 0x12, 0x4B, 0x35, 0x1F, 0xE3, 0xFF, 0x0D, 0x00, 0x36, 0x02, 0xC6, 0xFF, 0x0D, 0x00, 0x13, + 0x61, 0xF1, 0x00, 0x52, 0xB2, 0x1D, 0x00, 0x00, 0x03, 0xBB, 0x02, 0x36, 0xF6, 0x39, 0x00, 0x48, + 0x04, 0x16, 0x79, 0x9B, 0x08, 0x21, 0xFF, 0xF5, 0xB7, 0x0D, 0x01, 0x56, 0x4D, 0x03, 0x6E, 0x7E, + 0x04, 0xF3, 0x01, 0x18, 0x63, 0x26, 0x58, 0x16, 0x2F, 0xC3, 0x72, 0x36, 0xFF, 0xFF, 0x0A, 0xAE, + 0x27, 0x04, 0x46, 0x07, 0x02, 0x01, 0x61, 0x02, 0x9C, 0x82, 0x25, 0x03, 0xFD, 0x30, 0x0F, 0x03, + 0x06, 0x6C, 0x04, 0xDE, 0x09, 0x18, 0x27, 0x8E, 0x29, 0x15, 0x38, 0xCD, 0x3F, 0x06, 0xC7, 0x63, + 0x17, 0x7A, 0x8E, 0x52, 0x03, 0xF0, 0x2B, 0x16, 0x5B, 0x8C, 0x02, 0x05, 0xDA, 0x00, 0x17, 0x67, + 0x4F, 0x0B, 0x03, 0x51, 0x07, 0x18, 0x69, 0x50, 0x04, 0x27, 0x6A, 0xFF, 0xEA, 0x0C, 0x03, 0x88, + 0x4F, 0x1E, 0x60, 0x0D, 0x00, 0x18, 0x6B, 0x0D, 0x00, 0x09, 0x34, 0x00, 0x18, 0x68, 0x4E, 0x00, + 0x18, 0x64, 0x68, 0x00, 0x27, 0x60, 0xFF, 0xF3, 0x2F, 0x18, 0x58, 0x96, 0x9B, 0x03, 0x7B, 0x03, + 0x16, 0x75, 0xA2, 0x27, 0x04, 0xC4, 0x27, 0x03, 0x38, 0x0E, 0x18, 0x88, 0x9D, 0x09, 0x02, 0x80, + 0x90, 0x27, 0x0E, 0xFF, 0x78, 0x01, 0x37, 0x01, 0xF6, 0xFF, 0xEE, 0x4F, 0x16, 0xD6, 0xE4, 0x64, + 0x02, 0x50, 0x28, 0x03, 0xC0, 0x17, 0x02, 0xA5, 0x26, 0x02, 0x8F, 0x93, 0x04, 0xB4, 0x40, 0x04, + 0xD9, 0x9B, 0x19, 0x17, 0x1B, 0x08, 0x02, 0x92, 0x08, 0x19, 0xCD, 0x4E, 0x06, 0x02, 0xCA, 0x49, + 0x03, 0x93, 0x62, 0x27, 0xB8, 0x02, 0x7E, 0x65, 0x31, 0xFF, 0x9C, 0x1E, 0x30, 0xEE, 0x17, 0xF9, + 0x49, 0x02, 0x28, 0x00, 0x79, 0x0D, 0x00, 0x27, 0x01, 0x90, 0x0D, 0x00, 0x48, 0x00, 0x00, 0x52, + 0xE9, 0x9C, 0x4D, 0x68, 0x0C, 0x69, 0xB4, 0xE6, 0xFF, 0x30, 0xBE, 0x08, 0x60, 0x03, 0x00, 0x0F, + 0x0D, 0x37, 0x01, 0xD4, 0x02, 0x34, 0x27, 0x73, 0x4D, 0xA9, 0x30, 0x02, 0x43, 0x04, 0x38, 0xC9, + 0x51, 0x01, 0x50, 0x04, 0x28, 0xAC, 0x12, 0x5D, 0x04, 0x28, 0xD4, 0x11, 0x6A, 0x04, 0x01, 0xD2, + 0x05, 0x38, 0x2F, 0xB8, 0xFE, 0x5D, 0x5A, 0x12, 0x4F, 0x0E, 0x00, 0x18, 0xBE, 0x26, 0x19, 0x28, + 0xFF, 0x25, 0xDA, 0x00, 0x18, 0x7B, 0x02, 0x01, 0x19, 0xCC, 0x90, 0x06, 0x17, 0x16, 0xF5, 0x15, + 0x28, 0xFF, 0x50, 0x97, 0x02, 0x02, 0x21, 0x0C, 0x28, 0x05, 0xFE, 0xF3, 0x07, 0x18, 0xE8, 0xE5, + 0x07, 0x27, 0xD3, 0xFF, 0xA1, 0x2A, 0x02, 0xFF, 0x02, 0x18, 0xF3, 0xA0, 0x01, 0x01, 0xA5, 0x82, + 0x04, 0x19, 0x08, 0x03, 0x69, 0x00, 0x18, 0x9C, 0x9E, 0x00, 0x18, 0x95, 0x41, 0x01, 0x14, 0x8F, + 0xBA, 0x66, 0x07, 0xD4, 0x01, 0x17, 0x40, 0x2A, 0x5B, 0x27, 0xFF, 0x45, 0x19, 0x0B, 0x28, 0xFF, + 0x49, 0x1B, 0x13, 0x18, 0x4A, 0x57, 0x50, 0x18, 0x4B, 0x0D, 0x00, 0x18, 0x4C, 0x0D, 0x00, 0x18, + 0x4A, 0x34, 0x00, 0x15, 0x49, 0x6A, 0x57, 0x05, 0xD3, 0x47, 0x03, 0x12, 0x01, 0x17, 0x43, 0x11, + 0x19, 0x26, 0xFF, 0x3E, 0x69, 0x0B, 0x04, 0x95, 0x4E, 0x18, 0x9C, 0x4F, 0x0C, 0x17, 0xA5, 0x61, + 0x31, 0x28, 0x00, 0xB0, 0xC9, 0x0C, 0x02, 0x3F, 0x07, 0x33, 0xFB, 0x01, 0x00, 0xE5, 0x1C, 0x05, + 0x27, 0x2A, 0x01, 0xA7, 0x37, 0x03, 0xAC, 0x0F, 0x02, 0xDC, 0x46, 0x04, 0x1D, 0x04, 0x18, 0x18, + 0x10, 0x04, 0x18, 0x42, 0x5A, 0x03, 0x18, 0x74, 0xCA, 0x13, 0x02, 0x4F, 0x09, 0x11, 0xEF, 0xA5, + 0x07, 0x27, 0x05, 0xEF, 0x4C, 0x51, 0x03, 0xC6, 0x01, 0x01, 0xDA, 0x52, 0x12, 0x0A, 0x78, 0x07, + 0x00, 0xD4, 0xF8, 0x23, 0x01, 0x27, 0x5F, 0x61, 0x17, 0x86, 0x49, 0x02, 0x27, 0xE9, 0x0F, 0x0D, + 0x00, 0x16, 0x58, 0x63, 0x02, 0x26, 0xFE, 0x73, 0x7D, 0x02, 0x24, 0xDE, 0x3E, 0x97, 0x02, 0x34, + 0xE0, 0xAD, 0x5C, 0x31, 0x0B, 0x19, 0x05, 0x0B, 0x0B, 0x46, 0x16, 0x13, 0x13, 0x02, 0x24, 0xC9, + 0x11, 0x0C, 0x22, 0x06, 0x1B, 0x42, 0x86, 0xE3, 0x0D, 0xEC, 0x0C, 0x27, 0xD9, 0xFF, 0x5A, 0x8B, + 0x24, 0x03, 0x14, 0x64, 0x19, 0x01, 0x17, 0x1E, 0x82, 0x07, 0x10, 0x00, 0x00, 0x48, 0xF2, 0x7B, + 0x0B, 0xC9, 0x2E, 0x71, 0xDD, 0x00, 0x00, 0x02, 0x5B, 0xE0, 0x80, 0x84, 0x0E, 0x41, 0xE7, 0x67, + 0x05, 0x8C, 0x7D, 0x02, 0x62, 0x44, 0xCE, 0xFF, 0xFF, 0xE0, 0x02, 0x93, 0x2E, 0x10, 0xD9, 0xBE, + 0x06, 0x12, 0xCC, 0x52, 0x0A, 0x3C, 0x43, 0x68, 0xFF, 0x01, 0x00, 0x3A, 0xA4, 0x28, 0x90, 0x58, + 0x0F, 0x85, 0xFC, 0xB0, 0x4A, 0x00, 0x00, 0x07, 0x54, 0xB6, 0x24, 0x0B, 0x14, 0xD7, 0x57, 0x06, + 0x22, 0x00, 0x1E, 0x71, 0x7F, 0x3D, 0xFE, 0x4A, 0x01, 0x65, 0x0B, 0x15, 0xAA, 0x13, 0x00, 0x23, + 0x34, 0xFB, 0x50, 0x7D, 0x05, 0xB9, 0x0C, 0x21, 0x0C, 0xDA, 0x2B, 0x6C, 0x00, 0xD4, 0x00, 0x27, + 0xF6, 0x29, 0xE6, 0x0E, 0x12, 0x8E, 0x38, 0x2C, 0x25, 0xD1, 0x08, 0x8A, 0x13, 0x55, 0xF9, 0x1A, + 0x00, 0x05, 0xDF, 0x38, 0x77, 0x23, 0x23, 0xB3, 0xDD, 0x12, 0x00, 0x07, 0x4A, 0x13, 0xD4, 0x34, + 0x01, 0x30, 0x4C, 0xDD, 0xFB, 0x2F, 0x08, 0x45, 0x07, 0xE4, 0xEF, 0x6D, 0x59, 0x0A, 0x12, 0x08, + 0xD2, 0x02, 0x15, 0x3F, 0x0F, 0x17, 0x5B, 0x17, 0x15, 0x17, 0x01, 0x0A, 0x51, 0x41, 0x2A, 0xF5, + 0x00, 0x01, 0x00, 0x01, 0x94, 0x0E, 0x1F, 0xF8, 0x15, 0x00, 0x5E, 0x21, 0x08, 0x0C, 0x01, 0x00, + 0x01, 0x88, 0x0F, 0x12, 0xF9, 0x0C, 0x00, 0x4E, 0x0C, 0x09, 0xA0, 0xFF, 0x01, 0x00, 0x1F, 0xB0, + 0x15, 0x00, 0x41, 0x12, 0x03, 0xC9, 0x25, 0x12, 0x24, 0xB7, 0x16, 0x02, 0x01, 0x00, 0x1F, 0x03, + 0x11, 0x01, 0x02, 0x0F, 0x15, 0x00, 0x87, 0x25, 0x01, 0x04, 0x9B, 0x1F, 0x01, 0xCB, 0x0B, 0x30, + 0x08, 0x0F, 0x02, 0x23, 0x00, 0x12, 0xE5, 0xD0, 0x20, 0x13, 0x38, 0xF6, 0x09, 0x0F, 0x08, 0x00, + 0x16, 0x03, 0x62, 0x07, 0x13, 0x2B, 0x47, 0x08, 0x00, 0x52, 0x2B, 0x11, 0xC1, 0x05, 0x07, 0x21, + 0x0B, 0x9C, 0x46, 0x08, 0x10, 0x48, 0x0E, 0x0A, 0x21, 0xD0, 0x08, 0xBD, 0x1C, 0x20, 0xD3, 0x1D, + 0xB3, 0x10, 0x21, 0xE1, 0x78, 0x68, 0x0E, 0x12, 0x23, 0x0D, 0x07, 0x54, 0x13, 0x0E, 0x07, 0x02, + 0x0D, 0x3A, 0x8D, 0x04, 0x01, 0x00, 0x28, 0x0A, 0x08, 0x77, 0x01, 0x1F, 0xC4, 0x0E, 0x00, 0x25, + 0x07, 0x88, 0x85, 0x01, 0x91, 0x27, 0x31, 0x0B, 0x08, 0x07, 0x75, 0x00, 0x13, 0x8E, 0xBC, 0x21, + 0x03, 0x60, 0x07, 0x1F, 0x78, 0x08, 0x00, 0x15, 0x29, 0x15, 0x13, 0xC4, 0x20, 0x05, 0x67, 0x6B, + 0x29, 0xFC, 0xEA, 0x2A, 0x1C, 0x19, 0x64, 0x31, 0x94, 0x06, 0xF3, 0x07, 0x18, 0x60, 0x12, 0x00, + 0x26, 0x05, 0xF1, 0x54, 0x08, 0x03, 0x13, 0x00, 0x16, 0x3D, 0x1A, 0x5A, 0x09, 0x42, 0x0E, 0x19, + 0x87, 0x13, 0x00, 0x1B, 0xCE, 0xC3, 0x58, 0x03, 0xD6, 0x05, 0x28, 0xF2, 0x05, 0x13, 0x00, 0x18, + 0x5E, 0xC6, 0x50, 0x07, 0xAA, 0x94, 0x09, 0x1C, 0x65, 0x24, 0x03, 0xED, 0xA3, 0x57, 0x18, 0x00, + 0x08, 0x80, 0x29, 0xFF, 0xD5, 0x38, 0x00, 0x19, 0x7F, 0xB7, 0x94, 0x06, 0xE5, 0x33, 0x18, 0x45, + 0x12, 0x00, 0x10, 0x13, 0xC5, 0x07, 0x28, 0xF5, 0x08, 0x13, 0x00, 0x16, 0x58, 0xC0, 0x12, 0x05, + 0x14, 0xCA, 0x09, 0xF7, 0x0F, 0x01, 0x6B, 0x0B, 0x17, 0xE8, 0xD6, 0x17, 0x16, 0x00, 0xE1, 0x33, + 0x19, 0xDB, 0x38, 0x00, 0x15, 0x79, 0xD4, 0x04, 0x0A, 0x77, 0x14, 0x1D, 0x4B, 0x5A, 0x14, 0x2D, + 0xF8, 0x0B, 0x9F, 0x18, 0x1E, 0xBA, 0x20, 0x14, 0x1E, 0x72, 0x03, 0x14, 0x1D, 0x29, 0xE6, 0x13, + 0x04, 0x46, 0x9A, 0x07, 0x9A, 0xA0, 0x19, 0x99, 0x4B, 0x00, 0x16, 0xBC, 0xD1, 0x08, 0x04, 0xAA, + 0x05, 0x00, 0x6C, 0x07, 0x02, 0xC9, 0xCA, 0x09, 0xBC, 0x8A, 0x2D, 0xC0, 0x00, 0xDF, 0x0F, 0x19, + 0x77, 0x83, 0x00, 0x19, 0xDE, 0x8D, 0x81, 0x05, 0x83, 0x14, 0x19, 0xE7, 0x83, 0x00, 0x17, 0x6E, + 0xB6, 0x15, 0x08, 0x04, 0x11, 0x18, 0x56, 0x12, 0x00, 0x23, 0x09, 0xF6, 0x60, 0x15, 0x06, 0x13, + 0x00, 0x18, 0x47, 0x6A, 0x19, 0x16, 0x00, 0x0B, 0x09, 0x0A, 0xA0, 0x15, 0x19, 0xD7, 0xE2, 0x33, + 0x05, 0x3E, 0x04, 0x01, 0xEC, 0x14, 0x19, 0x00, 0x53, 0x97, 0x01, 0x1B, 0x70, 0x09, 0x04, 0xA5, + 0x08, 0xC9, 0x5E, 0x04, 0x3E, 0x19, 0x1B, 0x16, 0x28, 0x03, 0x29, 0x1B, 0x17, 0xAC, 0x12, 0x89, + 0x03, 0x2F, 0x56, 0x72, 0x7A, 0x73, 0x57, 0x2F, 0x39, 0x03, 0x24, 0x1D, 0x92, 0x4C, 0x07, 0x26, + 0xED, 0x94, 0x97, 0x02, 0x27, 0x66, 0xF6, 0xD4, 0x03, 0x14, 0xF7, 0xF8, 0x82, 0x2F, 0x7C, 0xFF, + 0x9F, 0x13, 0x01, 0x1D, 0x4C, 0xB4, 0x05, 0x00, 0xAC, 0x08, 0x2D, 0x05, 0xDD, 0x17, 0x00, 0x25, + 0xE1, 0x07, 0xD0, 0x0C, 0x75, 0xFF, 0xFB, 0xAF, 0x88, 0xA6, 0xF6, 0xFF, 0x5B, 0x0C, 0x03, 0xBB, + 0x12, 0x11, 0xF3, 0x4F, 0xCB, 0x03, 0x50, 0x23, 0x45, 0xCE, 0x00, 0x13, 0xFD, 0x8C, 0x4F, 0x06, + 0x2B, 0x1F, 0x48, 0xFF, 0x1D, 0x4A, 0xFF, 0x6C, 0x15, 0x03, 0x60, 0x09, 0x23, 0xFF, 0x59, 0xF7, + 0x0C, 0x27, 0xF7, 0x02, 0x04, 0x22, 0x58, 0xFF, 0xFF, 0x7B, 0x8D, 0xFF, 0xD2, 0x0A, 0x04, 0xD9, + 0x36, 0x37, 0x9D, 0x9C, 0xFF, 0xED, 0x19, 0x05, 0x45, 0x13, 0x13, 0xAB, 0x83, 0x06, 0x04, 0x48, + 0xA9, 0x1A, 0xBD, 0x9A, 0x06, 0x18, 0xD0, 0x87, 0x02, 0x0F, 0x17, 0x00, 0xFF, 0x78, 0x0B, 0xCC, + 0x01, 0x03, 0x61, 0x11, 0x13, 0xAC, 0x7D, 0x0C, 0x1A, 0xE1, 0xFA, 0x01, 0x38, 0x9F, 0x6C, 0xFF, + 0x9A, 0x85, 0x22, 0x01, 0xEB, 0x0F, 0x00, 0x38, 0x7C, 0x48, 0xFF, 0x8F, 0x0B, 0x14, 0x21, 0x56, + 0x02, 0x13, 0x11, 0xC0, 0x11, 0x19, 0x90, 0xB9, 0x13, 0x33, 0x1D, 0x00, 0xBB, 0x46, 0x00, 0x00, + 0x16, 0x06, 0x13, 0x33, 0xFB, 0x95, 0x16, 0xCB, 0x9D, 0x9B, 0x56, 0xFD, 0xAB, 0x80, 0xA5, 0xFA, + 0x5E, 0x13, 0x2D, 0x02, 0xCF, 0x0E, 0x03, 0x00, 0x68, 0x4D, 0x04, 0x6D, 0xA5, 0x0A, 0x2B, 0x96, + 0x03, 0xD7, 0xDB, 0x08, 0x16, 0x00, 0x04, 0xDA, 0x24, 0x18, 0x50, 0xF0, 0x16, 0x16, 0xF3, 0x03, + 0x04, 0x34, 0x14, 0x84, 0xE4, 0x0B, 0x77, 0x19, 0x8B, 0xDE, 0xD4, 0x85, 0x02, 0x24, 0x51, 0x75, + 0x7E, 0x76, 0x54, 0x27, 0xF4, 0x03, 0x39, 0x1B, 0x0F, 0x2B, 0xDE, 0x14, 0x21, 0x46, 0xF6, 0x4E, + 0x5B, 0x03, 0x15, 0x05, 0x36, 0x72, 0xFC, 0xFF, 0x58, 0x1D, 0x14, 0x39, 0x26, 0xAC, 0x10, 0xD8, + 0x00, 0x65, 0x16, 0xB5, 0xB1, 0x12, 0x28, 0x15, 0x73, 0xA8, 0x17, 0x13, 0xD8, 0x51, 0x01, 0x0F, + 0x0F, 0x00, 0x18, 0x35, 0xFE, 0xCA, 0xCE, 0x0F, 0x00, 0x44, 0xD9, 0x95, 0x52, 0x12, 0xB3, 0x0D, + 0x38, 0xD8, 0x21, 0x1E, 0xC2, 0x0D, 0x04, 0xDF, 0x1D, 0x0F, 0x0F, 0x00, 0xFF, 0xCA, 0x39, 0x1B, + 0x17, 0x2C, 0xEF, 0x06, 0x79, 0x1F, 0x4A, 0x6C, 0x79, 0x77, 0x63, 0x3C, 0x4E, 0x07, 0x24, 0x0C, + 0x78, 0xA6, 0x1D, 0x35, 0xFE, 0xBB, 0x5A, 0x2E, 0x00, 0x28, 0x3F, 0xE4, 0x59, 0x02, 0x13, 0xC2, + 0x04, 0x27, 0x2A, 0x48, 0xFA, 0x3A, 0x03, 0x11, 0xEB, 0x26, 0x06, 0x2C, 0x1B, 0xF0, 0x68, 0x03, + 0x38, 0xD9, 0x07, 0x00, 0xB2, 0x56, 0x08, 0xAE, 0x8C, 0x14, 0x1C, 0x43, 0x00, 0x34, 0xD0, 0x8E, + 0x95, 0x5E, 0x6B, 0x25, 0xEA, 0x04, 0xFE, 0x06, 0x10, 0x83, 0xB2, 0xB2, 0x24, 0xAC, 0xFF, 0xAD, + 0x11, 0x03, 0x95, 0x14, 0x11, 0xCD, 0x98, 0x00, 0x13, 0x14, 0xDA, 0x29, 0x39, 0x84, 0x02, 0xF9, + 0x21, 0x1B, 0x13, 0xB8, 0xE9, 0x11, 0x01, 0xA3, 0x55, 0x06, 0xBD, 0x96, 0x12, 0x90, 0x0E, 0x00, + 0x38, 0xCA, 0x39, 0xFF, 0x75, 0x14, 0x03, 0xC8, 0x1F, 0x33, 0xFF, 0xD6, 0x4B, 0xD2, 0x06, 0x09, + 0x5D, 0x6C, 0x23, 0xFF, 0xD3, 0xE1, 0x0F, 0x18, 0xF1, 0xE2, 0x09, 0x33, 0xFF, 0xFF, 0xBE, 0x17, + 0x00, 0x04, 0x1D, 0x45, 0x12, 0xD2, 0x0F, 0x00, 0x31, 0xA1, 0x0F, 0x30, 0x01, 0x00, 0x03, 0x72, + 0x00, 0x1B, 0x28, 0x51, 0x04, 0x19, 0x00, 0x60, 0x12, 0x0A, 0x93, 0x09, 0x23, 0x00, 0x1D, 0xC5, + 0x00, 0x2E, 0xD1, 0x00, 0x53, 0x0A, 0x0D, 0xD8, 0x18, 0x14, 0x40, 0xC9, 0x25, 0x09, 0x15, 0x0B, + 0x3B, 0x0B, 0xDC, 0xFF, 0x09, 0x62, 0x08, 0xF9, 0x00, 0x29, 0xFF, 0xBA, 0x6E, 0x09, 0x04, 0x70, + 0x9A, 0x19, 0xF4, 0x3F, 0x70, 0x14, 0x06, 0x87, 0x9C, 0x09, 0xC6, 0x0A, 0x05, 0x8B, 0x05, 0x19, + 0xBE, 0x3F, 0x02, 0x04, 0x18, 0x45, 0x19, 0xF5, 0x59, 0x1D, 0x04, 0xF7, 0x24, 0x2D, 0xFF, 0x6D, + 0xE4, 0xDF, 0x01, 0xB5, 0x0C, 0x09, 0x43, 0x00, 0x13, 0x1A, 0x53, 0x18, 0x29, 0xF7, 0x26, 0x2D, + 0x00, 0x28, 0xAD, 0xFF, 0xFC, 0x14, 0x0A, 0x55, 0x68, 0x39, 0xFF, 0xFF, 0xCA, 0x55, 0x05, 0x23, + 0x0F, 0xE6, 0x6C, 0x27, 0x0A, 0x3F, 0x1E, 0x13, 0x97, 0x2D, 0x00, 0x09, 0x77, 0xAE, 0x03, 0x9C, + 0x2B, 0x39, 0xFF, 0xFF, 0xD1, 0xBE, 0x1C, 0x22, 0x07, 0xD7, 0x16, 0x00, 0x14, 0xFC, 0x98, 0x5E, + 0x09, 0x67, 0x63, 0x29, 0xFF, 0x86, 0x16, 0x00, 0x13, 0x2B, 0xB2, 0x02, 0x19, 0xD7, 0x0E, 0x0C, + 0x04, 0x30, 0x17, 0x2F, 0xFE, 0x39, 0xF6, 0x00, 0x02, 0x18, 0xFF, 0x16, 0x6E, 0x13, 0xBA, 0x65, + 0x1B, 0x0B, 0x01, 0x00, 0x1F, 0xBC, 0x17, 0x00, 0x4A, 0x0B, 0xA0, 0x0A, 0x89, 0x0A, 0x33, 0x5B, + 0x75, 0x7A, 0x70, 0x50, 0x29, 0xA0, 0x0A, 0x24, 0x40, 0xA8, 0x4E, 0x25, 0x25, 0xE7, 0x90, 0xFF, + 0x69, 0x28, 0x12, 0xA3, 0x49, 0x00, 0x22, 0xF8, 0x7E, 0x7D, 0x01, 0x2B, 0x17, 0xD7, 0x62, 0x00, + 0x32, 0xAD, 0x04, 0x00, 0x1B, 0x0F, 0x0B, 0x7A, 0x00, 0x16, 0x85, 0x66, 0x17, 0x08, 0x91, 0x00, + 0x44, 0xFB, 0x2C, 0x00, 0x01, 0xF0, 0x03, 0x55, 0xE5, 0x9B, 0x88, 0xAA, 0xF6, 0xB6, 0x21, 0x04, + 0xA0, 0x03, 0x10, 0xBA, 0x83, 0x1C, 0x13, 0x1E, 0xDA, 0x0A, 0x48, 0xF2, 0x09, 0x80, 0xFF, 0x22, + 0x25, 0x04, 0x37, 0x9C, 0x24, 0x3B, 0xA7, 0xC0, 0x0A, 0x03, 0x6D, 0xBE, 0x03, 0x2E, 0x03, 0x29, + 0xCB, 0xFF, 0x68, 0x1D, 0x03, 0xDE, 0x62, 0x2A, 0x83, 0xD9, 0xF8, 0x25, 0x03, 0xAA, 0x02, 0x2A, + 0x8E, 0xDC, 0xE8, 0x1D, 0x03, 0xD4, 0x08, 0x31, 0x88, 0xBE, 0xDC, 0x01, 0x00, 0x04, 0x24, 0xB3, + 0x1F, 0xD3, 0xD7, 0x02, 0x01, 0x3B, 0x00, 0x05, 0xF5, 0xA7, 0x70, 0x07, 0x3C, 0x1F, 0x0C, 0x33, + 0x0E, 0x23, 0x00, 0x07, 0xE6, 0x07, 0x08, 0xCE, 0x23, 0x46, 0x02, 0x1B, 0x58, 0xD1, 0x5F, 0x48, + 0x04, 0x01, 0x00, 0x06, 0x68, 0x9F, 0x18, 0xFD, 0xCE, 0x03, 0x14, 0xD8, 0x16, 0x00, 0x3E, 0xF1, + 0x52, 0x00, 0x17, 0x00, 0x4F, 0xFC, 0x8A, 0x16, 0x00, 0x17, 0x00, 0x00, 0x3F, 0xFF, 0xE3, 0x5A, + 0x17, 0x00, 0x02, 0x4F, 0xFF, 0xFF, 0x90, 0x01, 0x17, 0x00, 0x02, 0x27, 0xFF, 0x74, 0x17, 0x00, + 0x43, 0x04, 0x08, 0x29, 0x7A, 0x74, 0x09, 0x1B, 0xFA, 0xC3, 0x3A, 0x13, 0x37, 0x01, 0x04, 0x2A, + 0x92, 0x00, 0x01, 0x00, 0x13, 0x93, 0x0F, 0x06, 0x0B, 0x01, 0x54, 0x2F, 0x36, 0xFF, 0xE8, 0x21, + 0x02, 0x2F, 0x05, 0xF7, 0x45, 0x2B, 0x03, 0x03, 0x90, 0x00, 0x31, 0x77, 0x5A, 0x68, 0x01, 0x00, + 0x1A, 0x34, 0xB5, 0x01, 0x1B, 0x8B, 0xB5, 0x01, 0x03, 0x07, 0x8F, 0x12, 0x8E, 0x70, 0x1E, 0x28, + 0xFF, 0x87, 0x48, 0x0F, 0x4A, 0xFF, 0xFF, 0x87, 0xD0, 0x79, 0x01, 0x13, 0xCD, 0xDC, 0x6A, 0x27, + 0xB3, 0xFF, 0x17, 0x23, 0x04, 0xA1, 0x26, 0x23, 0xFF, 0x51, 0x13, 0x58, 0x27, 0xE6, 0x01, 0x9B, + 0x31, 0x49, 0xFF, 0xFF, 0x2F, 0x62, 0xB7, 0x0A, 0x03, 0xE2, 0xDD, 0x24, 0xEC, 0x03, 0x16, 0x0D, + 0x10, 0xC8, 0x1A, 0x0F, 0x13, 0x21, 0x9D, 0x51, 0x15, 0xA7, 0xE8, 0x0C, 0x66, 0xFF, 0xE9, 0x9A, + 0x80, 0xA3, 0xF4, 0x73, 0x0A, 0x1E, 0x40, 0x0E, 0x03, 0x25, 0xCA, 0x01, 0x96, 0x16, 0x08, 0x93, + 0xE4, 0x01, 0x6A, 0x22, 0x1B, 0x12, 0x1A, 0xA2, 0x04, 0xDE, 0x0F, 0x19, 0x12, 0x9D, 0x25, 0x15, + 0xF6, 0xDE, 0xE4, 0x34, 0x01, 0x4A, 0xB3, 0x07, 0x1D, 0x39, 0xED, 0x92, 0x1D, 0xDB, 0x07, 0x66, + 0x35, 0x5F, 0x78, 0x7E, 0x74, 0x56, 0x94, 0x0E, 0x0B, 0xB4, 0x32, 0x00, 0x01, 0x00, 0x14, 0x6D, + 0xA5, 0x04, 0x1A, 0x6B, 0x18, 0x00, 0x06, 0x3A, 0x5C, 0x0A, 0x1A, 0x06, 0x05, 0x64, 0x2D, 0x0D, + 0x19, 0x00, 0x1F, 0xB8, 0x19, 0x00, 0x04, 0x2F, 0x28, 0xFF, 0x19, 0x00, 0x04, 0x1F, 0x94, 0x19, + 0x00, 0x04, 0x2F, 0x0F, 0xF4, 0x19, 0x00, 0x04, 0x2F, 0x70, 0xFF, 0x19, 0x00, 0x03, 0x11, 0x03, + 0x35, 0x04, 0x1E, 0xE1, 0x19, 0x00, 0x01, 0x3E, 0x0F, 0x2E, 0xF9, 0x90, 0x19, 0x00, 0x01, 0x02, + 0x2D, 0x2D, 0xAF, 0x80, 0x19, 0x00, 0x12, 0x2A, 0x82, 0x6B, 0x0E, 0x19, 0x00, 0x01, 0xC4, 0x07, + 0x2D, 0xF3, 0x09, 0x19, 0x00, 0x22, 0x10, 0xF5, 0x58, 0x33, 0x0D, 0x19, 0x00, 0x13, 0x72, 0x27, + 0x19, 0x0C, 0x19, 0x00, 0x02, 0x4F, 0x1D, 0x2D, 0xEB, 0x05, 0x19, 0x00, 0x14, 0x4E, 0xD6, 0x1B, + 0x0C, 0x19, 0x00, 0x14, 0xBC, 0xE6, 0x19, 0x0B, 0x19, 0x00, 0x24, 0x2B, 0xFF, 0xEC, 0x6B, 0x0B, + 0x19, 0x00, 0x15, 0x98, 0x2D, 0x1C, 0x0A, 0x19, 0x00, 0x25, 0x11, 0xF6, 0x97, 0x31, 0x0A, 0x19, + 0x00, 0x02, 0x2C, 0x19, 0x2C, 0xD5, 0x01, 0x19, 0x00, 0x26, 0x03, 0xE0, 0x0C, 0x1B, 0x09, 0x19, + 0x00, 0x03, 0x0E, 0x09, 0x1D, 0x22, 0x19, 0x00, 0x17, 0xBE, 0xB8, 0x22, 0x08, 0x19, 0x00, 0x18, + 0x16, 0xE8, 0x1C, 0x08, 0x19, 0x00, 0x16, 0x1C, 0xF2, 0x32, 0x04, 0x01, 0x34, 0x01, 0x0D, 0x00, + 0x3F, 0xDD, 0x1C, 0xFF, 0x01, 0x00, 0x03, 0x1F, 0xE0, 0x19, 0x00, 0x51, 0x09, 0x68, 0x15, 0x03, + 0xFF, 0x1A, 0x19, 0x6F, 0x66, 0x16, 0x0D, 0xFA, 0x00, 0x0F, 0x19, 0x00, 0xCE, 0x00, 0x4C, 0x0C, + 0x01, 0x50, 0x08, 0x2E, 0x75, 0xFC, 0x01, 0x00, 0x1E, 0x08, 0x5F, 0x29, 0x03, 0xBA, 0x36, 0x1F, + 0x7E, 0x17, 0x00, 0x03, 0x1F, 0x81, 0x17, 0x00, 0x03, 0x1F, 0x85, 0x17, 0x00, 0x03, 0x1F, 0x89, + 0x17, 0x00, 0x03, 0x1F, 0x8D, 0x17, 0x00, 0x03, 0x02, 0xF0, 0x03, 0x19, 0xCF, 0x2C, 0x17, 0x14, + 0x01, 0x6F, 0x04, 0x0D, 0x95, 0x29, 0x02, 0x2E, 0x03, 0x1F, 0xB8, 0x78, 0x29, 0x02, 0x2F, 0xFF, + 0xAD, 0xB2, 0x2B, 0x03, 0x1C, 0xA1, 0x17, 0x00, 0x17, 0xA3, 0x79, 0x2D, 0x0C, 0xA3, 0x16, 0x2C, + 0xFF, 0x8B, 0x17, 0x00, 0x16, 0xAA, 0xE1, 0x13, 0x49, 0x06, 0x08, 0x01, 0x00, 0x40, 0x4A, 0xC8, + 0xFF, 0x74, 0x05, 0x5F, 0xB4, 0xE5, 0xFF, 0xFF, 0xF5, 0xCB, 0x8C, 0x2A, 0x1B, 0x1E, 0x15, 0x98, + 0x21, 0x08, 0x39, 0xFE, 0x94, 0x07, 0x15, 0xB9, 0x05, 0xFB, 0x00, 0x25, 0xB7, 0x04, 0x2B, 0x26, + 0x09, 0x13, 0x01, 0x16, 0x7F, 0xCE, 0x11, 0x09, 0xDA, 0x09, 0x16, 0x17, 0xB2, 0x06, 0x65, 0xB3, + 0x33, 0x08, 0x25, 0x8B, 0xFF, 0xDD, 0x21, 0x03, 0xC8, 0x27, 0x27, 0xB0, 0x02, 0x06, 0x02, 0x14, + 0xDB, 0x6C, 0x24, 0x12, 0xF9, 0xB6, 0x08, 0x24, 0x11, 0xFA, 0xC9, 0x1D, 0x20, 0xB5, 0xE4, 0x01, + 0x00, 0x17, 0x9A, 0x3E, 0x6D, 0x0D, 0x93, 0x0C, 0x04, 0x37, 0x25, 0x2B, 0xFF, 0x74, 0x17, 0x00, + 0x2C, 0x86, 0xFF, 0x4A, 0x74, 0x17, 0x00, 0xF6, 0x30, 0x02, 0xD7, 0x20, 0x0D, 0x01, 0x06, 0x1C, + 0xAE, 0xC4, 0x06, 0x0F, 0x17, 0x00, 0x03, 0x03, 0x7A, 0x22, 0x22, 0xA9, 0x15, 0xA5, 0x0D, 0x1A, + 0x26, 0x45, 0x00, 0x37, 0x9A, 0x6D, 0xFF, 0x73, 0x22, 0x05, 0x02, 0x15, 0x37, 0x8C, 0x63, 0xFF, + 0x6D, 0x1E, 0x05, 0x04, 0x03, 0x26, 0x75, 0x4B, 0x71, 0x97, 0x05, 0x71, 0x16, 0x33, 0xFF, 0xFF, + 0x53, 0xEB, 0x22, 0x28, 0xFD, 0x08, 0xC3, 0x01, 0x24, 0xFF, 0x23, 0x72, 0x37, 0x17, 0x3C, 0x15, + 0x18, 0x00, 0x5E, 0x08, 0x18, 0xD3, 0x81, 0x26, 0x15, 0x40, 0xD6, 0x6F, 0x03, 0x25, 0x03, 0x10, + 0xFC, 0x83, 0x18, 0x25, 0x1B, 0xD3, 0x6F, 0x1F, 0x03, 0x12, 0x26, 0x53, 0xFF, 0xFF, 0xC1, 0x91, + 0xA6, 0x14, 0x07, 0x10, 0xD0, 0x93, 0x01, 0x1D, 0x90, 0xCC, 0x01, 0x01, 0x77, 0x1E, 0x2B, 0x0C, + 0xD0, 0x16, 0x00, 0x12, 0x7C, 0x95, 0x00, 0x19, 0x15, 0xE5, 0xBF, 0x15, 0xF1, 0x39, 0x08, 0x34, + 0x02, 0x59, 0xC6, 0x0A, 0x13, 0x29, 0xED, 0x93, 0x2F, 0x9D, 0x84, 0x12, 0x3F, 0x63, 0x77, 0x7E, + 0x76, 0x55, 0x2B, 0x6E, 0x0E, 0x2A, 0x1B, 0x18, 0x98, 0x29, 0x8A, 0x10, 0x3D, 0x67, 0x78, 0x78, + 0x65, 0x3F, 0x15, 0x70, 0x01, 0x24, 0x4B, 0xBD, 0xC1, 0x05, 0x26, 0xC1, 0x60, 0xF5, 0x0D, 0x28, + 0x14, 0xAB, 0x7E, 0x00, 0x14, 0xC8, 0x84, 0x2C, 0x1B, 0x13, 0x50, 0x0C, 0x13, 0xE5, 0x6B, 0x0A, + 0x0D, 0x15, 0x09, 0x02, 0x5B, 0x27, 0x1E, 0x4B, 0xC0, 0x02, 0x23, 0x6A, 0x00, 0x05, 0x62, 0x01, + 0x72, 0x10, 0x36, 0x90, 0x90, 0xCB, 0x94, 0x6D, 0x04, 0xB8, 0x4B, 0x01, 0x10, 0xE7, 0x26, 0x01, + 0x77, 0xD3, 0x16, 0x03, 0xC5, 0x22, 0x11, 0xF0, 0xD3, 0x18, 0x25, 0x02, 0xE1, 0xA8, 0x24, 0x19, + 0xB8, 0x70, 0x02, 0x14, 0xA0, 0x36, 0x0C, 0x29, 0x01, 0xEC, 0x1B, 0x05, 0x14, 0x7B, 0x7D, 0x6B, + 0x19, 0x11, 0x50, 0x14, 0x04, 0xED, 0x23, 0x13, 0xB9, 0x93, 0x07, 0x05, 0x82, 0x10, 0x21, 0x1F, + 0x50, 0x01, 0x00, 0x15, 0x3B, 0xB0, 0x36, 0x2F, 0x1E, 0x00, 0x4C, 0x09, 0x03, 0x0C, 0xFB, 0x37, + 0x15, 0x4F, 0xB4, 0x3A, 0x0A, 0x01, 0x00, 0x04, 0x7E, 0x20, 0x1F, 0x10, 0x18, 0x00, 0x08, 0x3E, + 0x01, 0x09, 0x06, 0x18, 0x00, 0xA9, 0x0A, 0x6D, 0xBE, 0xEF, 0xFF, 0xFF, 0xE7, 0xB6, 0x64, 0x09, + 0x18, 0x00, 0x15, 0x34, 0x03, 0x0C, 0x28, 0xE8, 0x42, 0x18, 0x00, 0x07, 0x26, 0xF2, 0x27, 0xFD, + 0x52, 0x18, 0x00, 0x09, 0x48, 0x02, 0x1F, 0x23, 0x18, 0x00, 0x03, 0x27, 0xFF, 0xA0, 0x18, 0x00, + 0x62, 0xD4, 0x4D, 0x0E, 0x13, 0x5B, 0xE7, 0x0C, 0x00, 0x25, 0xFA, 0x19, 0x18, 0x00, 0x28, 0xCE, + 0x0B, 0x1F, 0x0C, 0x3A, 0x60, 0x00, 0x50, 0x38, 0x01, 0x14, 0xC8, 0x52, 0x36, 0x0B, 0xF0, 0x00, + 0x03, 0x8A, 0x07, 0x1C, 0xCF, 0x18, 0x00, 0x03, 0xA7, 0x0B, 0x1C, 0xEB, 0x18, 0x00, 0x04, 0x40, + 0x10, 0x1B, 0x07, 0x18, 0x00, 0x04, 0x8E, 0x16, 0x2A, 0x10, 0x4F, 0x18, 0x00, 0x04, 0x07, 0xAF, + 0x2A, 0x12, 0x47, 0x18, 0x00, 0x04, 0x0F, 0x00, 0x2A, 0x0B, 0x33, 0xB0, 0x01, 0x03, 0xB1, 0x25, + 0x3A, 0xF5, 0x01, 0x1B, 0x43, 0x79, 0x14, 0x60, 0xA1, 0xF0, 0x04, 0x50, 0x36, 0x19, 0x43, 0x4C, + 0x04, 0x15, 0xBE, 0xA6, 0x0C, 0x17, 0x7C, 0x8E, 0x0A, 0x01, 0x05, 0x05, 0x03, 0x3F, 0x21, 0x11, + 0xDA, 0x79, 0x03, 0x25, 0x18, 0xFA, 0xEC, 0x4E, 0x04, 0x9C, 0x53, 0x00, 0x10, 0x9E, 0x13, 0x05, + 0x08, 0x0C, 0x27, 0xEE, 0x0A, 0xD8, 0x05, 0x24, 0xCF, 0x89, 0x09, 0x0D, 0x02, 0xDB, 0x1C, 0x1D, + 0x38, 0x50, 0x36, 0x28, 0xF9, 0x21, 0x28, 0x24, 0x0D, 0xED, 0x2C, 0x1A, 0x06, 0x19, 0xC4, 0x24, + 0xFF, 0xB3, 0xEC, 0x08, 0x28, 0x08, 0x95, 0x4B, 0x00, 0x17, 0x97, 0x48, 0x11, 0x23, 0x39, 0xB5, + 0x7E, 0x0F, 0x3A, 0xFA, 0xB3, 0x3D, 0x90, 0x02, 0x75, 0x11, 0x3F, 0x69, 0x7C, 0x7C, 0x67, 0x43, + 0x39, 0x1C, 0x22, 0x1B, 0x13, 0xF0, 0x35, 0x1D, 0xE5, 0x39, 0x08, 0x2D, 0xA6, 0xE8, 0x40, 0x02, + 0x1F, 0xA8, 0x13, 0x00, 0x25, 0x35, 0x87, 0x13, 0x14, 0x01, 0x00, 0x03, 0x63, 0x7C, 0x08, 0x16, + 0x33, 0x03, 0xEE, 0x03, 0x01, 0x08, 0x9D, 0x08, 0xBC, 0x3E, 0x2E, 0xFF, 0xE0, 0x01, 0x36, 0x05, + 0x58, 0x3C, 0x06, 0x32, 0x01, 0x08, 0x64, 0x1D, 0x03, 0x93, 0x0E, 0x1D, 0x3A, 0xD4, 0x0E, 0x02, + 0x13, 0xE4, 0x08, 0xC8, 0x3F, 0x2C, 0xFF, 0xCB, 0xF0, 0x2F, 0x06, 0x52, 0x71, 0x07, 0xEC, 0x25, + 0x08, 0x71, 0x1C, 0x1D, 0xDD, 0xAE, 0x31, 0x14, 0x16, 0xE9, 0x38, 0x2A, 0x00, 0x00, 0x2F, 0x0C, + 0x2E, 0xFF, 0xB6, 0x4C, 0x07, 0x08, 0x01, 0x13, 0x03, 0xDA, 0x10, 0x07, 0x6B, 0x35, 0x2D, 0x04, + 0xF4, 0x5B, 0x04, 0x3C, 0x2F, 0xFF, 0xFF, 0xF0, 0x35, 0x1E, 0x68, 0xD4, 0x39, 0x2C, 0xA0, 0xFF, + 0xA7, 0x9F, 0x04, 0x0D, 0xB0, 0x04, 0x12, 0x75, 0x05, 0xD5, 0x40, 0x3D, 0xFF, 0xF6, 0x05, 0xE4, + 0x04, 0x2C, 0xC3, 0x00, 0x3E, 0x7C, 0x09, 0x18, 0x09, 0x1D, 0xBA, 0x36, 0x08, 0x01, 0x2C, 0xC4, + 0x07, 0x50, 0x40, 0x05, 0xF2, 0x0C, 0x2C, 0xFF, 0xE5, 0x9B, 0x20, 0x0A, 0xFB, 0x07, 0x03, 0xB1, + 0x1A, 0x2D, 0x76, 0x00, 0x5D, 0x11, 0x07, 0x65, 0x20, 0x03, 0x93, 0xB3, 0x02, 0xFF, 0xE1, 0x08, + 0x6C, 0x8E, 0x27, 0xFF, 0xD0, 0x38, 0x00, 0x03, 0x98, 0x07, 0x1C, 0x98, 0xA2, 0x1E, 0x06, 0xD9, + 0x53, 0x00, 0xA9, 0x00, 0x1D, 0xEE, 0xDF, 0x15, 0x03, 0x10, 0x28, 0x17, 0xF0, 0xFB, 0x14, 0x03, + 0x14, 0x04, 0x1D, 0xBA, 0x7A, 0x0A, 0x04, 0xCE, 0x3A, 0x08, 0x7C, 0x79, 0x1F, 0x4C, 0x68, 0x1E, + 0x07, 0x8A, 0x08, 0x31, 0x5B, 0x75, 0x7A, 0x6E, 0x48, 0x1C, 0x63, 0x0F, 0x14, 0x97, 0xAA, 0x2D, + 0x25, 0xCC, 0x67, 0x7B, 0x01, 0x28, 0x01, 0x71, 0x0A, 0x41, 0x2C, 0xCF, 0x26, 0x7A, 0x3C, 0x02, + 0x01, 0x00, 0x12, 0xEA, 0xB4, 0x04, 0x1C, 0x53, 0x4D, 0x03, 0x01, 0xC8, 0xA4, 0x24, 0x07, 0xDE, + 0x09, 0x2C, 0x14, 0x9C, 0x6B, 0x16, 0x16, 0x5B, 0x7A, 0x32, 0x66, 0xF2, 0x32, 0x00, 0x00, 0x05, + 0xAA, 0x1F, 0x1C, 0x17, 0xAD, 0x83, 0x2B, 0x24, 0x13, 0xF6, 0x23, 0x0E, 0x02, 0x01, 0x43, 0x0B, + 0xF1, 0x27, 0x1B, 0x66, 0xD3, 0x02, 0x14, 0x7E, 0xD5, 0x85, 0x28, 0x36, 0xFF, 0x72, 0x29, 0x03, + 0x62, 0x2F, 0x14, 0xAA, 0x9C, 0x01, 0x28, 0xC2, 0x00, 0xAD, 0x00, 0x14, 0xB8, 0x17, 0x00, 0x28, + 0xC7, 0x00, 0x4D, 0x2B, 0x14, 0xB9, 0x2F, 0x2B, 0x27, 0xD6, 0x00, 0xE9, 0x33, 0x43, 0xFF, 0xA7, + 0x00, 0x14, 0xB9, 0x06, 0x17, 0x01, 0xCC, 0x30, 0x24, 0xFF, 0x8A, 0x66, 0x43, 0x03, 0x28, 0x33, + 0x02, 0xDE, 0x42, 0x24, 0xFF, 0x59, 0xD8, 0x69, 0x02, 0xFE, 0x37, 0x12, 0x05, 0xC9, 0x1C, 0x24, + 0xFD, 0x16, 0xD8, 0x42, 0x36, 0xFF, 0xD5, 0x07, 0xE8, 0x14, 0x26, 0xB7, 0x00, 0xE8, 0xC7, 0x57, + 0xAF, 0x20, 0x06, 0x55, 0xF2, 0x95, 0x09, 0x3F, 0x28, 0xF5, 0xFF, 0xA7, 0x36, 0x02, 0x1A, 0x52, + 0x9D, 0x1C, 0x14, 0xC8, 0x9F, 0x26, 0x18, 0x54, 0x6E, 0x05, 0x14, 0xC5, 0x42, 0x05, 0x19, 0x20, + 0x4E, 0xC9, 0x22, 0xF7, 0x67, 0xC3, 0x00, 0x1C, 0x27, 0x04, 0x05, 0x01, 0x4B, 0x02, 0x2D, 0x0C, + 0xDB, 0x1A, 0x05, 0x16, 0x5A, 0x1E, 0x04, 0x53, 0xFE, 0x82, 0x1F, 0x0A, 0x42, 0x67, 0x02, 0x22, + 0xEF, 0x10, 0xBF, 0xAE, 0x04, 0x79, 0x17, 0x24, 0x12, 0xE5, 0xC2, 0x01, 0x19, 0x58, 0x04, 0x7C, + 0x03, 0xD0, 0x32, 0x39, 0xD5, 0x00, 0x97, 0x55, 0x13, 0x13, 0x1D, 0x5E, 0x00, 0x28, 0x15, 0xC3, + 0xE0, 0x2C, 0x05, 0xF5, 0x1D, 0x2A, 0x45, 0xDD, 0x33, 0xC8, 0x03, 0x96, 0x1C, 0x13, 0x60, 0xA6, + 0xA7, 0x1A, 0x35, 0x06, 0x20, 0x2A, 0x6E, 0xE8, 0x4D, 0x04, 0x03, 0x11, 0x04, 0x26, 0x6C, 0xDD, + 0x97, 0x25, 0x07, 0xD1, 0x04, 0x29, 0x62, 0xBF, 0x2B, 0x3E, 0x23, 0x00, 0xCF, 0x73, 0x00, 0x03, + 0x44, 0x30, 0x03, 0xEA, 0x7A, 0x13, 0x02, 0x89, 0x01, 0x38, 0x26, 0x6E, 0xFF, 0x8F, 0x7E, 0x13, + 0x2E, 0xBF, 0x02, 0x13, 0x06, 0xC3, 0x33, 0x28, 0xF9, 0x19, 0x37, 0x19, 0x15, 0xAE, 0xF9, 0x15, + 0x10, 0xC3, 0x28, 0x1B, 0x24, 0x55, 0xFC, 0x45, 0x40, 0x05, 0x77, 0x87, 0x47, 0xEE, 0xA6, 0x92, + 0xC5, 0x43, 0xC6, 0x2D, 0x03, 0xC3, 0x70, 0x01, 0x11, 0x53, 0xDB, 0x32, 0x1F, 0xDE, 0x1A, 0x17, + 0x00, 0x00, 0xD7, 0x07, 0x09, 0x4B, 0x41, 0x25, 0xF8, 0x6D, 0x6E, 0xA1, 0x24, 0x51, 0xB8, 0x14, + 0x02, 0x38, 0xE8, 0x91, 0x1F, 0xDF, 0x03, 0x9F, 0x0F, 0x38, 0x62, 0x78, 0x7E, 0x73, 0x4F, 0x26, + 0x03, 0x7C, 0x22, 0x05, 0x7A, 0x2E, 0x5B, 0x73, 0x7B, 0x6F, 0x52, 0x1F, 0xED, 0x32, 0x14, 0x8A, + 0xC6, 0x09, 0x26, 0xD1, 0x69, 0x8F, 0x05, 0x27, 0x4F, 0xED, 0x7C, 0x00, 0x14, 0xD1, 0xC4, 0x3A, + 0x1A, 0x5D, 0x2E, 0x08, 0x12, 0xEE, 0x88, 0x09, 0x2C, 0x32, 0xFA, 0x64, 0x22, 0x00, 0x8F, 0x02, + 0x2D, 0x01, 0xC7, 0xEF, 0x00, 0x17, 0x8D, 0x69, 0x19, 0x34, 0xF8, 0xAB, 0x89, 0x09, 0x14, 0x24, + 0xF5, 0x12, 0xEB, 0x0E, 0x20, 0xFF, 0xF4, 0x75, 0x12, 0x24, 0x50, 0xFE, 0x99, 0x33, 0x13, 0x0A, + 0x02, 0x16, 0x17, 0x77, 0x54, 0x0F, 0x22, 0xFF, 0xD0, 0xA4, 0x87, 0x05, 0x2B, 0x04, 0x13, 0x3F, + 0x0E, 0x00, 0x13, 0x14, 0xA2, 0x7E, 0x1A, 0xE6, 0xEB, 0xA5, 0x2A, 0x45, 0x8F, 0x73, 0x3D, 0x03, + 0x16, 0x1A, 0x13, 0x64, 0xC1, 0x03, 0x1A, 0xB2, 0xFB, 0x05, 0x37, 0x82, 0xC0, 0xFF, 0x6C, 0x3B, + 0x05, 0x62, 0x7D, 0x13, 0x95, 0xCD, 0x00, 0x1A, 0xA8, 0x80, 0x05, 0x2A, 0x9B, 0xC5, 0x07, 0x08, + 0x03, 0x17, 0x00, 0x29, 0x9C, 0xB6, 0x17, 0x42, 0x05, 0x17, 0x00, 0x03, 0xC4, 0x07, 0x1B, 0xC1, + 0x17, 0x00, 0x03, 0x72, 0x03, 0x1B, 0xE4, 0x17, 0x00, 0x28, 0x55, 0xFF, 0x70, 0x04, 0x13, 0x02, + 0xE1, 0x02, 0x38, 0x9C, 0x13, 0xFD, 0x0C, 0x21, 0x04, 0x38, 0x2F, 0x15, 0x9C, 0xA3, 0x0F, 0x65, + 0x83, 0x1D, 0x02, 0x29, 0x97, 0xFF, 0x17, 0x00, 0x2F, 0x53, 0xFF, 0x01, 0x00, 0x00, 0x1E, 0x9C, + 0x01, 0x33, 0x03, 0x62, 0x45, 0x08, 0xFD, 0x32, 0x25, 0xFE, 0xF2, 0x17, 0x00, 0x25, 0x00, 0x22, + 0xC1, 0x19, 0x36, 0xFA, 0x5E, 0xD0, 0x17, 0x00, 0xB5, 0x00, 0x02, 0x50, 0xAB, 0xDF, 0xFF, 0xFF, + 0xFE, 0xDA, 0x97, 0x28, 0xB8, 0x00, 0x05, 0x82, 0x06, 0x11, 0x12, 0x80, 0x10, 0x0C, 0x17, 0x00, + 0x0A, 0xC2, 0x06, 0x0C, 0x17, 0x00, 0x2C, 0xD1, 0xFF, 0xD4, 0xA7, 0x07, 0xA4, 0x30, 0x2F, 0xFF, + 0x96, 0x77, 0x39, 0x01, 0x51, 0xFF, 0xFF, 0x87, 0x19, 0x38, 0x01, 0x00, 0x04, 0xBB, 0x06, 0x03, + 0xF5, 0x35, 0x29, 0x77, 0x6E, 0xE3, 0x01, 0x14, 0x0A, 0x25, 0x44, 0x15, 0x61, 0x38, 0x44, 0x07, + 0x84, 0x07, 0x23, 0xFF, 0x39, 0x56, 0x02, 0x28, 0xEB, 0x01, 0x53, 0x06, 0x39, 0xFA, 0x0B, 0x1A, + 0x74, 0x0C, 0x14, 0xB0, 0x86, 0x9F, 0x22, 0x01, 0xE1, 0x0A, 0x00, 0x25, 0xB8, 0x08, 0x72, 0x49, + 0x01, 0xB6, 0x10, 0x04, 0x6C, 0x12, 0x44, 0xE1, 0x96, 0x80, 0xB1, 0x32, 0x01, 0x5D, 0x18, 0x00, + 0x00, 0x29, 0xFC, 0x6E, 0x01, 0x2F, 0x94, 0x00, 0xA3, 0x0F, 0x01, 0x11, 0xE9, 0x4C, 0x0C, 0x1B, + 0x09, 0x47, 0x45, 0x13, 0xF7, 0x30, 0x2E, 0x28, 0x0B, 0xA2, 0x16, 0x00, 0x16, 0xDA, 0x1D, 0xA9, + 0x24, 0x40, 0xAC, 0xC5, 0x07, 0x38, 0xE0, 0x7A, 0x0A, 0x23, 0x01, 0x85, 0x0C, 0x38, 0x5E, 0x79, + 0x7E, 0x73, 0x4F, 0x24, 0x13, 0x0A, 0x40, 0x0C, 0x08, 0x19, 0x03, 0x21, 0x04, 0x12, 0xBA, 0x59, + 0x0B, 0x13, 0x3F, 0x1A, 0x0C, 0x1F, 0x40, 0x08, 0x00, 0x15, 0x1E, 0x03, 0xD4, 0x51, 0x0F, 0x01, + 0x00, 0x27, 0x0F, 0x88, 0x00, 0x30, 0x55, 0x0D, 0x08, 0x23, 0x03, 0xFC, 0x58, 0x4C, 0x23, 0xFC, + 0x38, 0xE2, 0x90, 0x0F, 0x08, 0x00, 0x16, 0x0E, 0xA4, 0x52, 0x0F, 0x01, 0x00, 0x4B, 0x12, 0xC1, + 0xA8, 0x00, 0x13, 0x5B, 0x3C, 0x13, 0x1F, 0x5C, 0x08, 0x00, 0x14, 0x53, 0x5B, 0x04, 0x04, 0x04, + 0x0A, 0x78, 0x29, 0x12, 0x37, 0x00, 0x07, 0x20, 0x02, 0xB1, 0x3C, 0x42, 0x31, 0x17, 0x5B, 0xC2, + 0x31, 0x03, 0x01, 0x27, 0x4E, 0x80, 0xE7, 0x1B, 0x00, 0x06, 0xF2, 0xFF, 0xFF, 0xC9, 0x61, 0x37, + 0x30, 0x5E, 0x67, 0x31, 0xD5, 0x00, 0x4F, 0x14, 0x11, 0x1D, 0x01, 0x71, 0x6F, 0x00, 0x1B, 0x0D, + 0xFF, 0x47, 0x29, 0x3A, 0xDD, 0x87, 0xAE, 0x39, 0x05, 0x84, 0xFD, 0x98, 0xAE, 0x29, 0x28, 0xCC, + 0x89, 0x81, 0x39, 0x01, 0x6B, 0xF6, 0x9A, 0x81, 0x29, 0x19, 0xB7, 0xDB, 0x07, 0x48, 0x00, 0x52, + 0xEC, 0xFF, 0x11, 0x00, 0x15, 0x0E, 0xB4, 0x37, 0x11, 0xD2, 0x47, 0x0A, 0x25, 0x3D, 0xDF, 0xAE, + 0x8F, 0x00, 0x3F, 0x03, 0x33, 0x06, 0x87, 0xFE, 0x0F, 0x00, 0x11, 0xE7, 0x05, 0x08, 0x13, 0x2A, + 0x03, 0x08, 0x04, 0x18, 0xB2, 0x14, 0x40, 0x7E, 0x1E, 0x38, 0xF5, 0x65, 0x01, 0xCE, 0x0B, 0x39, + 0xFF, 0xCC, 0x26, 0xDF, 0x0B, 0x3A, 0xFE, 0x86, 0x06, 0xF0, 0x0B, 0x1C, 0x4C, 0x01, 0x0C, 0x2C, + 0xDE, 0x39, 0x12, 0x0C, 0x36, 0xFC, 0x7D, 0x03, 0x69, 0x7E, 0x03, 0xD0, 0x07, 0x03, 0x21, 0x07, + 0x06, 0x97, 0x00, 0x14, 0xF0, 0x19, 0xBD, 0x15, 0x3C, 0xB9, 0x00, 0x13, 0xA1, 0x19, 0x41, 0x15, + 0x0E, 0xBF, 0x22, 0x14, 0xDD, 0x5A, 0x81, 0x14, 0x51, 0x45, 0xB0, 0x14, 0xFC, 0xF6, 0xAF, 0x15, + 0x18, 0x93, 0x1B, 0x04, 0x0B, 0x2D, 0x3A, 0x01, 0x66, 0xF5, 0x32, 0x01, 0x4B, 0x00, 0x00, 0x24, + 0xC7, 0x11, 0x00, 0x4C, 0x00, 0x04, 0x7D, 0xFC, 0x1F, 0xB0, 0x2C, 0x35, 0xD8, 0x30, 0xB0, 0x2C, + 0x0A, 0x93, 0x41, 0xB0, 0x20, 0x00, 0x47, 0xF8, 0x00, 0x53, 0x17, 0x11, 0x10, 0x03, 0x0D, 0xDD, + 0x8C, 0x08, 0x4A, 0x0F, 0x1B, 0xAA, 0x0F, 0x41, 0x2F, 0xFF, 0xAC, 0x11, 0x00, 0x20, 0x2A, 0x13, + 0x14, 0x01, 0x00, 0x1F, 0x0E, 0x09, 0x03, 0x20, 0x1B, 0x0C, 0x01, 0x00, 0x1F, 0x09, 0x99, 0x00, + 0x31, 0x0D, 0x11, 0x00, 0x1B, 0x04, 0x01, 0x00, 0x41, 0x03, 0x14, 0x11, 0x1D, 0xC3, 0xF1, 0x2B, + 0x05, 0x30, 0x90, 0x00, 0x3A, 0x08, 0xFA, 0x77, 0x28, 0x03, 0x5B, 0x08, 0xFF, 0xFF, 0xC3, 0x21, + 0x11, 0x00, 0x4A, 0xFF, 0xF3, 0x61, 0x01, 0x11, 0x00, 0x4B, 0xFF, 0xFF, 0xAE, 0x15, 0x11, 0x00, + 0x3B, 0xFF, 0xE8, 0x4B, 0x11, 0x00, 0x33, 0xFF, 0xFF, 0x97, 0x42, 0x0E, 0x15, 0x02, 0x87, 0x21, + 0x14, 0xDB, 0x30, 0x02, 0x15, 0x4F, 0x30, 0x02, 0x13, 0x81, 0x81, 0x09, 0x15, 0x18, 0xCA, 0x3A, + 0x13, 0xCA, 0x7B, 0x09, 0x24, 0x01, 0x6D, 0xE0, 0x05, 0x23, 0xF6, 0x6A, 0x81, 0x00, 0x15, 0x2B, + 0x55, 0x46, 0x04, 0xAF, 0x4F, 0x3C, 0x07, 0x8C, 0xFF, 0x9C, 0x0E, 0x2C, 0x43, 0xE4, 0xAD, 0x0E, + 0x2A, 0x12, 0xD6, 0x11, 0x00, 0x2A, 0x0F, 0xA5, 0x22, 0x00, 0x29, 0x3C, 0xE0, 0x44, 0x00, 0x24, + 0x04, 0x82, 0xD1, 0x33, 0x02, 0xBB, 0x89, 0x15, 0x23, 0xD7, 0x09, 0x10, 0xCC, 0xC9, 0x0E, 0x24, + 0x01, 0x5E, 0x72, 0xBF, 0x20, 0xFC, 0x82, 0xBD, 0x00, 0x15, 0x10, 0xC5, 0x8D, 0x11, 0xDB, 0x9D, + 0x06, 0x25, 0x3D, 0xE1, 0x79, 0x97, 0x01, 0x01, 0x01, 0x14, 0x07, 0x4E, 0x00, 0x2A, 0xE7, 0x49, + 0x21, 0x01, 0x29, 0xAB, 0x14, 0x32, 0x01, 0x39, 0xF1, 0x5C, 0x01, 0x43, 0x01, 0x29, 0xBE, 0x1E, + 0x76, 0x01, 0x39, 0xF8, 0x71, 0x02, 0x98, 0x01, 0x1A, 0xCF, 0x83, 0x42, 0x2E, 0x08, 0x85, 0x85, + 0x40, 0x28, 0x1A, 0x16, 0xE4, 0x26, 0x88, 0x03, 0x27, 0x50, 0x71, 0x7A, 0x75, 0x5C, 0x35, 0x81, + 0xB0, 0x24, 0x19, 0x85, 0x23, 0x4B, 0x25, 0xF8, 0xAE, 0xAB, 0x34, 0x19, 0x5B, 0xB5, 0x26, 0x28, + 0xB4, 0x1C, 0xC3, 0x39, 0x06, 0x95, 0x16, 0x11, 0x25, 0x39, 0x77, 0x0C, 0xCC, 0x07, 0x2F, 0xD7, + 0x07, 0x7F, 0x19, 0x01, 0x25, 0xFF, 0x81, 0xD9, 0x2A, 0x44, 0xFE, 0xB6, 0x89, 0x9C, 0x71, 0x09, + 0x37, 0xF0, 0x08, 0x61, 0x1C, 0x4C, 0x24, 0x0B, 0xAA, 0xE6, 0x89, 0x18, 0x8C, 0x5C, 0x10, 0x13, + 0x08, 0x2C, 0x0C, 0x29, 0x93, 0x94, 0x08, 0x11, 0x03, 0x16, 0x27, 0x29, 0xBB, 0x96, 0xC7, 0x11, + 0x03, 0x14, 0x2E, 0x29, 0xDA, 0x80, 0x30, 0x8A, 0x03, 0x81, 0x22, 0x29, 0xE2, 0x62, 0xAD, 0x44, + 0x03, 0x1A, 0x4B, 0x10, 0xD9, 0xCB, 0x4A, 0x49, 0xE0, 0xAC, 0x78, 0x32, 0x04, 0x27, 0x5B, 0xB7, + 0x06, 0x7B, 0x47, 0x14, 0xFA, 0x2E, 0x0C, 0x8C, 0x19, 0x26, 0x0B, 0xF4, 0x2B, 0x40, 0x06, 0x16, + 0x00, 0x03, 0x54, 0x05, 0x19, 0xF8, 0x89, 0x16, 0x2B, 0x05, 0xDE, 0xA7, 0x88, 0x08, 0x54, 0x01, + 0x19, 0xFD, 0x30, 0x47, 0x2A, 0x1E, 0xF1, 0xB0, 0x23, 0x02, 0x98, 0x05, 0x03, 0x13, 0x07, 0x2F, + 0xEB, 0x15, 0x5C, 0x22, 0x00, 0x2F, 0xFF, 0x4C, 0x67, 0x25, 0x01, 0x19, 0x83, 0xA1, 0x31, 0x03, + 0x84, 0x02, 0x18, 0xB3, 0xEF, 0x03, 0x22, 0x54, 0xFC, 0x15, 0x00, 0x18, 0xC5, 0x49, 0x31, 0x27, + 0x5F, 0xFD, 0xC1, 0x21, 0x2A, 0x00, 0x00, 0xEE, 0x4B, 0x2F, 0xC4, 0x0F, 0xD8, 0x23, 0x00, 0x2F, + 0xB9, 0x0B, 0xEE, 0x23, 0x01, 0x2F, 0x44, 0x00, 0x16, 0x00, 0x52, 0x12, 0x04, 0x49, 0x05, 0x1F, + 0x04, 0xB3, 0x08, 0x3D, 0x12, 0x82, 0x3A, 0x06, 0x1A, 0x9E, 0x16, 0x00, 0x1E, 0x84, 0x9B, 0x01, + 0x0F, 0x16, 0x00, 0x59, 0x5F, 0x32, 0x2D, 0x33, 0x03, 0xF8, 0xAE, 0x00, 0x01, 0xFF, 0x00, 0x06, + 0x3E, 0x71, 0x9E, 0xC3, 0xD9, 0xEE, 0xF9, 0xFB, 0xF2, 0xDF, 0xC4, 0x9C, 0x67, 0x27, 0xD9, 0x09, + 0x08, 0x4A, 0x09, 0x5A, 0xB1, 0xF3, 0x9B, 0x03, 0x3F, 0xD8, 0x78, 0x12, 0x2B, 0x00, 0x03, 0x4E, + 0x0F, 0x7E, 0xED, 0xFF, 0x01, 0x00, 0x3E, 0xF5, 0x81, 0x0B, 0x2B, 0x00, 0x4F, 0x02, 0x69, 0xEE, + 0xFF, 0x01, 0x00, 0x03, 0x1D, 0xDC, 0x08, 0xB5, 0x3F, 0x1E, 0xC1, 0xFF, 0x01, 0x00, 0x06, 0x2A, + 0xF9, 0x56, 0x2C, 0x00, 0x15, 0x3D, 0xB7, 0xB8, 0xC4, 0xFE, 0xC3, 0x87, 0x55, 0x37, 0x1F, 0x16, + 0x1B, 0x2C, 0x50, 0x76, 0xA8, 0x6C, 0x00, 0x28, 0xFD, 0x53, 0x2C, 0x00, 0x14, 0x50, 0x93, 0x0F, + 0x38, 0xDF, 0x70, 0x17, 0x1B, 0x01, 0x13, 0x53, 0xE0, 0x24, 0x17, 0xF8, 0xF1, 0x32, 0x13, 0x45, + 0x2C, 0x00, 0x3B, 0xF1, 0x6F, 0x05, 0x9E, 0x00, 0x22, 0x01, 0x5B, 0x4A, 0x0D, 0x15, 0xDF, 0x05, + 0x4A, 0x13, 0x21, 0x6F, 0x00, 0x2F, 0xC5, 0x1C, 0x24, 0x01, 0x00, 0x29, 0x24, 0xE0, 0xF5, 0x25, + 0x26, 0x05, 0xCD, 0x5C, 0x1B, 0x0F, 0x52, 0x01, 0x00, 0x11, 0x25, 0xDB, 0x03, 0x29, 0xFC, 0x24, + 0x36, 0x3E, 0x17, 0xA8, 0x93, 0x03, 0x2D, 0x07, 0x04, 0xE3, 0x29, 0x02, 0x2E, 0x0E, 0x12, 0x1D, + 0x3B, 0x09, 0x15, 0xCC, 0x54, 0xDA, 0x80, 0x58, 0xB0, 0xEA, 0xFF, 0xF8, 0xA8, 0x1D, 0x07, 0xBB, + 0xAA, 0x24, 0xFC, 0x97, 0x39, 0x1F, 0x26, 0xF3, 0x0A, 0x0A, 0x3D, 0x14, 0xF8, 0x56, 0x04, 0x13, + 0x40, 0x8C, 0x16, 0x25, 0xE8, 0x6E, 0x67, 0x1E, 0x24, 0x29, 0xFE, 0x21, 0x4B, 0x28, 0x19, 0xF8, + 0xD4, 0x3D, 0x2B, 0x01, 0x71, 0xEF, 0x45, 0x15, 0x4E, 0xA4, 0x32, 0x15, 0xAF, 0x05, 0x2A, 0x29, + 0xE5, 0x0A, 0xB3, 0x19, 0x06, 0xBE, 0x01, 0x15, 0x29, 0xF8, 0x3F, 0x58, 0xEC, 0x01, 0x00, 0x02, + 0xE2, 0x6F, 0x12, 0x1C, 0x51, 0x2C, 0x00, 0x26, 0xFD, 0x07, 0x85, 0x4B, 0x13, 0x1D, 0x39, 0x14, + 0x12, 0xF3, 0x5E, 0x04, 0x13, 0x12, 0x42, 0x33, 0x57, 0xEB, 0x71, 0x22, 0x09, 0x73, 0x44, 0x33, + 0x22, 0x01, 0xED, 0x00, 0x04, 0x17, 0x83, 0x1A, 0x43, 0x03, 0x35, 0x46, 0x35, 0xFF, 0xCB, 0x18, + 0x73, 0x40, 0x17, 0xB8, 0x29, 0x1B, 0x37, 0x58, 0x00, 0xC9, 0xA0, 0x3D, 0x12, 0x26, 0xDD, 0x00, + 0x26, 0xE0, 0x14, 0x86, 0x0E, 0x17, 0x92, 0x3D, 0x48, 0x36, 0x6A, 0x0B, 0xFD, 0xC7, 0x48, 0x28, + 0x00, 0x98, 0xB3, 0x3D, 0x18, 0xB4, 0xEE, 0x28, 0x01, 0xBA, 0x20, 0x27, 0x7C, 0x38, 0xBB, 0x17, + 0x28, 0x09, 0xF2, 0x6A, 0x17, 0x18, 0xD8, 0x91, 0x06, 0x01, 0x72, 0x44, 0x26, 0x7C, 0x68, 0x7E, + 0x1A, 0x28, 0x00, 0x54, 0x21, 0x19, 0x28, 0x04, 0xFA, 0x8E, 0x49, 0x01, 0x2D, 0x11, 0x27, 0x76, + 0x8F, 0x46, 0x17, 0x27, 0xA4, 0xFF, 0x9F, 0x36, 0x02, 0x43, 0x07, 0x36, 0xF9, 0x03, 0x00, 0x9F, + 0x6D, 0x26, 0x67, 0xAA, 0x5A, 0x4B, 0x28, 0x00, 0xE2, 0x34, 0x9A, 0x18, 0x45, 0xE8, 0x15, 0x02, + 0x0C, 0x1E, 0x26, 0x48, 0xC6, 0x9B, 0x24, 0x19, 0x10, 0x8F, 0x2D, 0x18, 0x6A, 0x85, 0x49, 0x11, + 0x01, 0xD7, 0x06, 0x03, 0x8F, 0xC2, 0x15, 0x0B, 0xB0, 0x7E, 0x05, 0xAE, 0x14, 0x18, 0x8E, 0xA2, + 0x18, 0x01, 0x94, 0x00, 0x21, 0xF6, 0x04, 0xA8, 0x03, 0x27, 0xFD, 0x01, 0x4A, 0x52, 0x25, 0x2B, + 0x00, 0xD8, 0xAD, 0x05, 0x5E, 0xD9, 0x12, 0x63, 0xBE, 0x59, 0x01, 0x81, 0x04, 0x18, 0xF4, 0xD2, + 0xD8, 0x17, 0x23, 0x98, 0x36, 0x27, 0xFF, 0x40, 0x3A, 0x00, 0x12, 0x75, 0xCC, 0x58, 0x18, 0xF3, + 0x2D, 0x00, 0x02, 0x3C, 0x57, 0x12, 0x05, 0x01, 0x20, 0x01, 0x97, 0x5A, 0x02, 0xB6, 0x6C, 0x22, + 0xFD, 0x1A, 0x06, 0x11, 0x18, 0xF7, 0x5C, 0x19, 0x17, 0x58, 0xFF, 0x3E, 0x26, 0xF5, 0x01, 0xCD, + 0x14, 0x14, 0xB6, 0xE1, 0x28, 0x23, 0x09, 0x00, 0x31, 0x6D, 0x04, 0xEE, 0x36, 0x27, 0x01, 0xBD, + 0x52, 0x48, 0x23, 0x2B, 0xFB, 0x92, 0x00, 0x16, 0xD1, 0xA8, 0x01, 0x12, 0x03, 0x11, 0x04, 0x00, + 0x2D, 0x93, 0x02, 0x59, 0xBF, 0x03, 0x7B, 0x4C, 0x24, 0x0D, 0xD5, 0x26, 0x4C, 0x17, 0xB5, 0x75, + 0x02, 0x03, 0xC5, 0x1A, 0x34, 0xF8, 0xA6, 0x90, 0x99, 0x36, 0x00, 0x35, 0x42, 0x11, 0x18, 0xD0, + 0x07, 0x25, 0xEF, 0x1C, 0x73, 0x81, 0x18, 0x79, 0xB7, 0x43, 0x24, 0xFF, 0xFF, 0xF6, 0x90, 0x66, + 0xFF, 0xFC, 0x63, 0x4A, 0x85, 0xEE, 0x95, 0x96, 0x17, 0x5D, 0xCA, 0x4B, 0x26, 0x00, 0xA3, 0x2C, + 0x00, 0x29, 0xB6, 0xA4, 0x5E, 0x03, 0x26, 0x78, 0x00, 0xD6, 0x00, 0x02, 0xBB, 0xF0, 0x25, 0x00, + 0x0C, 0xCD, 0xCF, 0x37, 0xF6, 0x24, 0x2D, 0x1C, 0x46, 0x13, 0xF4, 0x4E, 0x2F, 0x28, 0x01, 0xD9, + 0xCB, 0x1B, 0x13, 0x0E, 0x2B, 0x14, 0x55, 0xF0, 0x48, 0x00, 0x00, 0x51, 0xA7, 0x17, 0x29, 0xB9, + 0x25, 0x46, 0xBB, 0x05, 0x0A, 0x04, 0x71, 0x00, 0x36, 0x90, 0xC0, 0xCE, 0xBC, 0x7E, 0x2C, 0x16, + 0x87, 0x1C, 0x8B, 0xD6, 0xFA, 0xFF, 0xEE, 0xC3, 0x89, 0xFA, 0x1A, 0x03, 0x90, 0x4F, 0x1F, 0x82, + 0x14, 0x05, 0x02, 0x2B, 0x01, 0x02, 0x11, 0x00, 0x02, 0x7A, 0x00, 0x2F, 0xFC, 0x39, 0xA7, 0x07, + 0x12, 0x03, 0x52, 0x43, 0x2F, 0xE8, 0x26, 0x2E, 0x00, 0x12, 0x03, 0xB2, 0x04, 0x2F, 0xEB, 0x3B, + 0x2D, 0x00, 0x11, 0x13, 0x04, 0x5E, 0x14, 0x3F, 0xFC, 0x85, 0x0B, 0x2E, 0x00, 0x10, 0x14, 0x17, + 0x05, 0x1A, 0x3B, 0xEA, 0x7B, 0x1D, 0x48, 0x00, 0x2D, 0x34, 0x5C, 0x2E, 0x00, 0x15, 0x1E, 0xFE, + 0x4F, 0xF4, 0x01, 0xFE, 0xCB, 0x8A, 0x5B, 0x33, 0x1C, 0x0A, 0x02, 0x05, 0x11, 0x25, 0x3D, 0x63, + 0x8A, 0xBD, 0xF4, 0xE8, 0x6D, 0x09, 0x33, 0x1E, 0x1F, 0xBA, 0x31, 0x07, 0x06, 0x1E, 0x2D, 0x8A, + 0x00, 0x2F, 0x03, 0x71, 0xFF, 0x5B, 0x04, 0x2F, 0xFF, 0x64, 0xB9, 0x00, 0x01, 0x2F, 0x1F, 0x9A, + 0xFC, 0x5B, 0x03, 0x1F, 0x9B, 0xE8, 0x00, 0x03, 0x3D, 0x1C, 0x78, 0xD5, 0x2B, 0x00, 0x3F, 0xDF, + 0xA5, 0x50, 0x18, 0x01, 0x06, 0x51, 0x1E, 0x5F, 0x91, 0xBA, 0xDE, 0xF7, 0x06, 0x7F, 0xF3, 0xDF, + 0xC5, 0x9F, 0x79, 0x4D, 0x16, 0x4B, 0x01, 0x0F, 0x4F, 0x06, 0x0D, 0x0E, 0x07, 0x7D, 0x00, 0x04, + 0x1B, 0x1B, 0x77, 0x4F, 0x13, 0x65, 0xE1, 0x0F, 0x2D, 0xF0, 0x02, 0x2C, 0x00, 0x05, 0xAC, 0x59, + 0x0E, 0xF4, 0x59, 0x05, 0x6B, 0x11, 0x2D, 0x5C, 0x00, 0x10, 0x0F, 0x04, 0x1B, 0x00, 0x0D, 0xB2, + 0x53, 0x1F, 0x35, 0xF7, 0xBD, 0x06, 0x25, 0x00, 0x69, 0x1B, 0x00, 0x1C, 0xF5, 0xBD, 0x01, 0x07, + 0xE9, 0x33, 0x1F, 0x2B, 0xF7, 0x15, 0x03, 0x08, 0x4A, 0x5E, 0x04, 0xDF, 0x10, 0x07, 0x56, 0x0D, + 0x0A, 0x0A, 0x3D, 0x2F, 0x00, 0x39, 0x51, 0x55, 0x00, 0x09, 0xEA, 0x25, 0x02, 0x93, 0x0C, 0x2F, + 0xF7, 0x04, 0x39, 0x33, 0x00, 0x29, 0xAD, 0xFD, 0x7B, 0x5C, 0x08, 0x04, 0x18, 0x2E, 0x7A, 0xDB, + 0x59, 0x33, 0x12, 0x0C, 0x0A, 0x12, 0x27, 0x51, 0xB1, 0x53, 0x47, 0x0A, 0x3A, 0x32, 0x27, 0x27, + 0x87, 0x78, 0x51, 0x08, 0x08, 0x94, 0x32, 0xFF, 0xFA, 0x04, 0xA9, 0x04, 0x03, 0x39, 0x70, 0x06, + 0xD3, 0xBF, 0x00, 0x83, 0x24, 0x03, 0x2A, 0x22, 0x1D, 0x31, 0xDF, 0x2E, 0x3D, 0xAA, 0x00, 0x0B, + 0xA9, 0x02, 0x15, 0x0E, 0xF2, 0x3B, 0x1C, 0xDF, 0x70, 0x1E, 0x15, 0x40, 0x7E, 0x0D, 0x1C, 0xB5, + 0x04, 0xBF, 0x15, 0x74, 0x1E, 0x03, 0x02, 0x4B, 0x0E, 0x2B, 0xFA, 0x07, 0x08, 0x56, 0x00, 0x7F, + 0x08, 0x18, 0x62, 0xB6, 0x47, 0x06, 0x5B, 0x17, 0x16, 0xDA, 0x88, 0x05, 0x19, 0x67, 0xF2, 0xCE, + 0x02, 0xDD, 0x18, 0x1B, 0x0F, 0x1F, 0x03, 0x17, 0x44, 0x18, 0x33, 0x18, 0xE4, 0x80, 0x31, 0x05, + 0xB2, 0x22, 0x16, 0x5D, 0xB4, 0x1B, 0x28, 0xFB, 0x08, 0x24, 0x40, 0x03, 0x7C, 0x00, 0x03, 0x10, + 0x17, 0x04, 0xCB, 0x94, 0x26, 0xE0, 0xFF, 0x79, 0x07, 0x19, 0x66, 0xCD, 0x35, 0x18, 0x15, 0x40, + 0x33, 0x19, 0xFE, 0x22, 0xA2, 0x1F, 0x48, 0xC2, 0x03, 0x00, 0x19, 0xD1, 0x9A, 0x25, 0x0A, 0xB9, + 0x44, 0x1F, 0x0A, 0x51, 0x26, 0x03, 0x04, 0xFA, 0x60, 0x02, 0xA0, 0xD0, 0x0D, 0x1B, 0x00, 0x18, + 0x6C, 0xF8, 0x3C, 0x12, 0x20, 0x07, 0x13, 0x17, 0x6D, 0xA5, 0x0C, 0x03, 0x8A, 0x26, 0x1A, 0xDF, + 0x33, 0x03, 0x17, 0xD4, 0x57, 0x0F, 0x04, 0xE8, 0x51, 0x26, 0x0B, 0xFE, 0x64, 0x20, 0x03, 0x78, + 0x30, 0x1B, 0x84, 0xE2, 0x18, 0x13, 0x3B, 0x12, 0xCD, 0x04, 0xFB, 0x06, 0x07, 0xB1, 0x00, 0x13, + 0x6F, 0x57, 0x96, 0x08, 0x5A, 0x20, 0x15, 0x82, 0x61, 0x0F, 0x03, 0xBA, 0x24, 0x39, 0xF8, 0x04, + 0x00, 0x1D, 0x62, 0x25, 0xFF, 0xD7, 0xF0, 0x47, 0x05, 0xA2, 0x01, 0x03, 0x8C, 0x9B, 0x5C, 0xFF, + 0xFE, 0x0D, 0x00, 0xB7, 0x6D, 0x0D, 0x22, 0x04, 0xF8, 0x12, 0x00, 0x38, 0x3E, 0x01, 0xEB, 0x33, + 0x4B, 0x08, 0x54, 0x1D, 0x00, 0x2D, 0x07, 0x56, 0x1D, 0x19, 0x2B, 0x03, 0x00, 0x8C, 0x17, 0x00, + 0x01, 0x00, 0x77, 0xF8, 0xEA, 0xD0, 0xB4, 0x86, 0x45, 0x05, 0x3C, 0xC1, 0x09, 0x46, 0x01, 0x3F, + 0xE2, 0x72, 0x09, 0x19, 0x00, 0x03, 0x4F, 0xFF, 0xFF, 0xD9, 0x2C, 0x19, 0x00, 0x04, 0x3F, 0xFF, + 0xEC, 0x25, 0x19, 0x00, 0x04, 0x36, 0xFF, 0xC9, 0x02, 0x19, 0x00, 0x76, 0x1C, 0x15, 0x1E, 0x2E, + 0x50, 0x96, 0xF1, 0xF1, 0xAA, 0x04, 0x19, 0x00, 0x02, 0x28, 0x63, 0x25, 0x16, 0xCF, 0xC8, 0x1D, + 0x0A, 0x19, 0x00, 0x22, 0x00, 0x24, 0x1C, 0x04, 0x2C, 0xF0, 0x01, 0x19, 0x00, 0x24, 0x00, 0xC9, + 0x11, 0x4B, 0x0C, 0x19, 0x00, 0x14, 0xA1, 0xC8, 0x0A, 0x0C, 0x19, 0x00, 0x14, 0x89, 0x92, 0x11, + 0x0C, 0x19, 0x00, 0x14, 0x87, 0xBE, 0x29, 0x0C, 0x19, 0x00, 0x14, 0x98, 0x7A, 0x02, 0x0C, 0x19, + 0x00, 0x14, 0xB6, 0xE8, 0x22, 0x0B, 0x19, 0x00, 0x12, 0x02, 0x9A, 0x0E, 0x1D, 0xE8, 0xAF, 0x00, + 0x15, 0x4F, 0x9D, 0x23, 0x0A, 0xE1, 0x00, 0x25, 0x1C, 0xDD, 0x5A, 0x1F, 0x04, 0x19, 0x00, 0x76, + 0x14, 0x0C, 0x0E, 0x1C, 0x3F, 0x87, 0xF1, 0x66, 0x1B, 0x0F, 0x5E, 0x01, 0x01, 0x2F, 0xA1, 0x05, + 0x19, 0x00, 0x01, 0x3F, 0xFB, 0xB7, 0x4A, 0xC2, 0x01, 0x03, 0x3F, 0xCF, 0x79, 0x1E, 0xDB, 0x01, + 0x05, 0x3F, 0xFB, 0x8C, 0x09, 0xC2, 0x01, 0x05, 0x26, 0xC4, 0x10, 0x19, 0x00, 0x64, 0x0C, 0x04, + 0x06, 0x13, 0x38, 0x7F, 0x9F, 0x1E, 0x1C, 0xB4, 0xE1, 0x00, 0x05, 0x60, 0xBA, 0x1C, 0x4A, 0xFA, + 0x00, 0x13, 0x12, 0xCA, 0x00, 0x1D, 0xBB, 0x45, 0x01, 0x03, 0x4E, 0x13, 0x2C, 0xFC, 0x0E, 0x19, + 0x00, 0x03, 0x15, 0x4A, 0x2C, 0xFF, 0x46, 0x19, 0x00, 0x04, 0xE0, 0xCA, 0x1C, 0x68, 0x19, 0x00, + 0x03, 0x61, 0x4A, 0x2C, 0xFF, 0x84, 0x19, 0x00, 0x04, 0x80, 0x1C, 0x1D, 0x8E, 0x19, 0x00, 0x03, + 0x6E, 0x10, 0x1C, 0x8A, 0x19, 0x00, 0x04, 0xAB, 0x63, 0x1C, 0x78, 0x19, 0x00, 0x04, 0xA0, 0x2A, + 0x1C, 0x54, 0x19, 0x00, 0x04, 0x82, 0x14, 0x1C, 0x30, 0x0D, 0x02, 0x14, 0xD1, 0x7D, 0x34, 0x0A, + 0x19, 0x00, 0x34, 0x02, 0x86, 0xFF, 0x24, 0x05, 0x06, 0xF4, 0x01, 0x44, 0x0D, 0x13, 0x30, 0x65, + 0xD1, 0x52, 0x2F, 0xFE, 0x2E, 0x90, 0x01, 0x03, 0x2F, 0xFF, 0x97, 0xA9, 0x01, 0x04, 0x2F, 0xCB, + 0x0A, 0x19, 0x00, 0x03, 0x2F, 0xBA, 0x11, 0xDB, 0x01, 0x02, 0x3D, 0xE2, 0x65, 0x02, 0x0D, 0x02, + 0x54, 0xF7, 0xDE, 0xB7, 0x8D, 0x42, 0x9A, 0x04, 0x2A, 0x1D, 0x19, 0x3C, 0x2C, 0x8A, 0x08, 0x30, + 0x53, 0x71, 0x7A, 0x76, 0x66, 0x44, 0x6A, 0x10, 0x35, 0x01, 0x46, 0xB2, 0xD9, 0x5D, 0x36, 0xDB, + 0x80, 0x13, 0x46, 0x71, 0x0A, 0x31, 0x1D, 0x14, 0xF0, 0xD0, 0xEA, 0x1D, 0x30, 0xB7, 0x11, 0x02, + 0xC6, 0x3F, 0x2D, 0x0F, 0xDE, 0xA2, 0x00, 0x29, 0xFE, 0x3D, 0x2B, 0x09, 0x08, 0x75, 0x23, 0x13, + 0x01, 0x5F, 0x77, 0x02, 0xD6, 0x21, 0x25, 0x88, 0x8B, 0x26, 0x2F, 0x16, 0x45, 0xAA, 0x5A, 0x11, + 0xC8, 0x3A, 0x12, 0x25, 0x4B, 0xFE, 0x75, 0x03, 0x03, 0x33, 0x0B, 0x29, 0xFD, 0x23, 0xA1, 0x0C, + 0x4A, 0xE2, 0x00, 0x07, 0xFA, 0xEA, 0x26, 0x04, 0x5C, 0x4B, 0x3A, 0x0C, 0x2E, 0xFF, 0xF7, 0x27, + 0x04, 0x65, 0x5E, 0x14, 0x29, 0x90, 0x60, 0x1A, 0x79, 0xED, 0x07, 0x23, 0xFF, 0x44, 0x2D, 0x26, + 0x05, 0x94, 0x5C, 0x13, 0x3A, 0x10, 0x00, 0x2B, 0x4E, 0x72, 0x6B, 0x3B, 0x04, 0x4C, 0x0D, 0x2B, + 0x50, 0x7A, 0x17, 0x35, 0x05, 0x19, 0x00, 0x1F, 0x7C, 0x19, 0x00, 0x15, 0x22, 0x24, 0xA4, 0x01, + 0x00, 0x1C, 0x34, 0x19, 0x00, 0x05, 0x01, 0x00, 0x0F, 0x19, 0x00, 0xDE, 0x12, 0x0D, 0x7F, 0x20, + 0x3F, 0x38, 0x12, 0x7C, 0x5E, 0x01, 0x1E, 0x1F, 0x7B, 0x19, 0x00, 0x05, 0x1B, 0x73, 0xC2, 0x01, + 0x04, 0xED, 0x0A, 0x14, 0x4F, 0x6C, 0x38, 0x1B, 0x72, 0xF4, 0x01, 0x3A, 0x4A, 0x4E, 0xFF, 0xA2, + 0xA1, 0x04, 0x18, 0x23, 0x14, 0x37, 0x46, 0x8F, 0x1B, 0xA0, 0x36, 0x2E, 0x3A, 0x22, 0x08, 0xFB, + 0xB4, 0x43, 0x03, 0x36, 0x02, 0x49, 0xFA, 0x05, 0x00, 0xBF, 0xDE, 0x45, 0x25, 0x00, 0xC5, 0xA3, + 0x2A, 0x13, 0x71, 0x19, 0x00, 0x10, 0xCA, 0x49, 0x0F, 0x26, 0x01, 0x68, 0x84, 0x46, 0x23, 0x16, + 0xF9, 0x0C, 0x00, 0x45, 0xF2, 0xA4, 0x80, 0x8D, 0x5F, 0x0F, 0x1E, 0x2C, 0x49, 0x28, 0x06, 0x58, + 0x39, 0x2D, 0x09, 0xD3, 0x18, 0x00, 0x12, 0xF4, 0xA1, 0x0C, 0x2C, 0x25, 0xE6, 0x9C, 0x03, 0x04, + 0xF6, 0x08, 0x29, 0x1B, 0xB2, 0x18, 0x00, 0x17, 0xE5, 0xEE, 0x17, 0x25, 0x40, 0xB0, 0x1A, 0x04, + 0x39, 0xD5, 0x72, 0x09, 0xB1, 0x01, 0x98, 0x09, 0x31, 0x55, 0x74, 0x7E, 0x7A, 0x66, 0x43, 0x1B, + 0x58, 0x3F, 0x1C, 0x18, 0xAC, 0x08, 0x8F, 0xFB, 0xF4, 0xE5, 0xCB, 0xAD, 0x7E, 0x41, 0x04, 0xAB, + 0x08, 0x04, 0x3F, 0xE7, 0x7A, 0x09, 0xCF, 0x06, 0x04, 0x2F, 0xDB, 0x2C, 0xCE, 0x06, 0x04, 0x2F, + 0xEE, 0x29, 0x3D, 0x05, 0x04, 0x26, 0xD2, 0x05, 0xA7, 0x08, 0x56, 0x14, 0x17, 0x24, 0x48, 0x9F, + 0x05, 0x58, 0x0A, 0xB8, 0x05, 0x04, 0x4C, 0x26, 0x2B, 0xD5, 0x01, 0xE9, 0x05, 0x04, 0x07, 0x0F, + 0x1B, 0x25, 0x18, 0x00, 0x04, 0x70, 0x57, 0x1B, 0x5E, 0x18, 0x00, 0x04, 0x21, 0x48, 0x1B, 0x80, + 0x18, 0x00, 0x13, 0x37, 0x0F, 0x00, 0x1B, 0x9C, 0x18, 0x00, 0x13, 0x2D, 0x0F, 0x00, 0x1B, 0xB8, + 0x18, 0x00, 0x13, 0x2A, 0x0F, 0x00, 0x1B, 0xC2, 0x18, 0x00, 0x04, 0xBE, 0x39, 0x1F, 0xC8, 0x18, + 0x00, 0xFF, 0x65, 0x14, 0x29, 0x40, 0x09, 0x0B, 0x18, 0x00, 0x04, 0x42, 0x08, 0x1B, 0xBE, 0x18, + 0x00, 0x04, 0xA3, 0x30, 0x1B, 0xA7, 0x18, 0x00, 0x14, 0x43, 0x03, 0x65, 0x0B, 0x18, 0x00, 0x04, + 0x6F, 0xED, 0x1B, 0x70, 0x18, 0x00, 0x04, 0xF9, 0x16, 0x1B, 0x42, 0x70, 0x08, 0x03, 0x9D, 0x3C, + 0x2A, 0xF9, 0x0C, 0x18, 0x00, 0x15, 0x6F, 0x99, 0x9E, 0x06, 0x87, 0x08, 0x34, 0x10, 0x22, 0x52, + 0xEE, 0x1C, 0x2F, 0xFF, 0x3B, 0x30, 0x03, 0x03, 0x1F, 0xA8, 0x48, 0x03, 0x03, 0x2F, 0xDA, 0x12, + 0x18, 0x00, 0x02, 0x2F, 0xC8, 0x18, 0x90, 0x03, 0x01, 0x3B, 0xE3, 0x6D, 0x04, 0xC0, 0x03, 0x54, + 0xF9, 0xED, 0xD0, 0xB2, 0x81, 0x81, 0x08, 0x2D, 0x17, 0x13, 0xBC, 0x0C, 0x03, 0x01, 0x00, 0x1E, + 0x2C, 0x63, 0x00, 0x0F, 0x13, 0x00, 0x2F, 0x15, 0x1C, 0x3C, 0x21, 0x1D, 0x04, 0x27, 0x0A, 0x2F, + 0x00, 0x00, 0x13, 0x00, 0xC6, 0x13, 0xFD, 0x54, 0x01, 0x1E, 0x0C, 0xA1, 0x01, 0x0F, 0x13, 0x00, + 0x31, 0x04, 0x56, 0x01, 0x1F, 0x01, 0x43, 0x01, 0x00, 0x0F, 0x13, 0x00, 0xDB, 0x15, 0x14, 0x58, + 0x23, 0x1E, 0x04, 0x86, 0x02, 0x1F, 0x4C, 0x13, 0x00, 0x39, 0x00, 0x4C, 0x0F, 0x1F, 0x12, 0x3C, + 0x03, 0x04, 0x1D, 0xD1, 0x30, 0x00, 0x1F, 0xD4, 0x12, 0x00, 0x2B, 0x05, 0x37, 0x03, 0x1E, 0x11, + 0xFC, 0x00, 0x0F, 0x12, 0x00, 0xBB, 0x03, 0x2A, 0x03, 0x1D, 0xD9, 0xF0, 0x02, 0x1F, 0xDC, 0x12, + 0x00, 0x2D, 0x03, 0x44, 0x01, 0x07, 0x3C, 0x05, 0x0E, 0x44, 0x01, 0x0F, 0x12, 0x00, 0xFF, 0x2A, + 0x3B, 0x00, 0x00, 0x1E, 0xCC, 0x0E, 0x99, 0x0A, 0x36, 0x5C, 0x71, 0x7B, 0x77, 0x67, 0x43, 0x1F, + 0x8D, 0x20, 0x35, 0x01, 0x51, 0xB7, 0x7A, 0x33, 0x26, 0xE3, 0x93, 0xF8, 0x22, 0x29, 0x20, 0xC4, + 0xBA, 0x01, 0x23, 0xFD, 0x8A, 0x3E, 0x13, 0x17, 0x28, 0xB8, 0xD8, 0x08, 0x7D, 0x37, 0x14, 0x0C, + 0x6F, 0x19, 0x0C, 0xE2, 0x31, 0x1F, 0x84, 0x33, 0x07, 0x00, 0x54, 0xFA, 0x1D, 0x00, 0x00, 0x0D, + 0x39, 0x43, 0x66, 0xF8, 0xB1, 0x8A, 0x90, 0xBF, 0xFE, 0xF5, 0x6C, 0x04, 0x58, 0x29, 0x11, 0xCD, + 0x29, 0x0B, 0x13, 0x35, 0xEC, 0x13, 0x15, 0xDA, 0x7C, 0x12, 0x29, 0xFF, 0x2C, 0x49, 0x3D, 0x4A, + 0xFF, 0x24, 0x02, 0xF2, 0xBD, 0x36, 0x14, 0x1F, 0xAB, 0x6E, 0x04, 0xE2, 0x24, 0x04, 0x87, 0xF6, + 0x03, 0x73, 0x5E, 0x3C, 0xFF, 0x72, 0x3D, 0x3C, 0x65, 0x03, 0x56, 0x33, 0x3B, 0x90, 0x55, 0xFF, + 0x5A, 0x14, 0x03, 0x9F, 0x32, 0x3A, 0x9B, 0x6B, 0xFF, 0x93, 0xFA, 0x04, 0x4F, 0x36, 0x2C, 0xA0, + 0x77, 0xA0, 0x0D, 0x03, 0xA6, 0x3A, 0x1D, 0xA0, 0xB9, 0x0D, 0x12, 0x33, 0xE7, 0xAA, 0x1F, 0x26, + 0x4F, 0x0E, 0x90, 0x17, 0xCD, 0x0F, 0xE4, 0x09, 0x19, 0x00, 0x07, 0xB5, 0x3D, 0x1F, 0xDC, 0x19, + 0x00, 0x45, 0x5F, 0x11, 0x14, 0x14, 0x14, 0x3D, 0x19, 0x00, 0x01, 0x07, 0x4A, 0x0A, 0x0F, 0x19, + 0x00, 0x07, 0x0D, 0x90, 0x01, 0x03, 0x44, 0x0C, 0x2C, 0xDC, 0x6D, 0xC2, 0x01, 0x03, 0x58, 0x64, + 0x2B, 0xDC, 0x54, 0xD9, 0x10, 0x04, 0xDA, 0x10, 0x14, 0xDC, 0xD5, 0x0E, 0x05, 0x35, 0x68, 0x03, + 0x7E, 0x60, 0x3A, 0xDC, 0x1C, 0xFF, 0x5B, 0x31, 0x04, 0xC6, 0x16, 0x32, 0xDC, 0x01, 0xE5, 0x09, + 0x00, 0x2A, 0xE9, 0x03, 0x98, 0x03, 0x13, 0xDC, 0xB7, 0x75, 0x05, 0x85, 0x20, 0x15, 0x39, 0x11, + 0x05, 0x04, 0x4A, 0x0F, 0x11, 0xE1, 0x7B, 0x03, 0x25, 0x26, 0xE4, 0x19, 0x00, 0x14, 0x0C, 0x4D, + 0x78, 0x67, 0xFB, 0xB3, 0x86, 0x85, 0xB4, 0xFA, 0x43, 0x05, 0x0D, 0x16, 0x3B, 0x13, 0xF1, 0x19, + 0x00, 0x2A, 0x10, 0xE5, 0x18, 0x00, 0x24, 0xC3, 0xA9, 0xB4, 0xBB, 0x19, 0x36, 0x63, 0x24, 0x26, + 0xF9, 0x30, 0x00, 0xD3, 0x17, 0x31, 0xB8, 0x03, 0x46, 0xFB, 0x55, 0x00, 0x67, 0xD5, 0xBF, 0x24, + 0x08, 0x70, 0xDC, 0x51, 0x23, 0xC4, 0x34, 0xBE, 0x20, 0x05, 0xEE, 0xBF, 0x79, 0x1F, 0x50, 0x6D, + 0x7E, 0x7A, 0x5E, 0x24, 0x42, 0x02, 0x13, 0x1F, 0x78, 0x17, 0x13, 0xB6, 0x3A, 0x02, 0x04, 0x4E, + 0xDD, 0x13, 0x2C, 0x10, 0x00, 0x14, 0xA2, 0x6B, 0x33, 0x1B, 0x1C, 0x58, 0x14, 0x1F, 0xA4, 0x19, + 0x00, 0xFF, 0x86, 0x04, 0x28, 0x0B, 0x1C, 0xFD, 0x19, 0x00, 0x0C, 0x01, 0x00, 0x0F, 0x19, 0x00, + 0x41, 0x13, 0x2E, 0x64, 0x09, 0x1F, 0x3D, 0x26, 0x02, 0x06, 0x0F, 0x19, 0x00, 0xFF, 0xB8, 0x57, + 0x00, 0x0F, 0x09, 0x2B, 0x03, 0x1C, 0x5E, 0x24, 0xFC, 0x28, 0x93, 0x34, 0x0F, 0x09, 0x00, 0xFF, + 0x60, 0x56, 0x00, 0x11, 0x0F, 0x2C, 0x00, 0x38, 0x0A, 0x16, 0xC5, 0x35, 0x49, 0x07, 0xEE, 0x42, + 0x2F, 0xFF, 0x07, 0x0F, 0x00, 0x28, 0x1F, 0x06, 0x0F, 0x00, 0x28, 0x1F, 0x05, 0x0F, 0x00, 0x28, + 0x1F, 0x04, 0x0F, 0x00, 0x28, 0x1F, 0x03, 0x0F, 0x00, 0x28, 0x1F, 0x02, 0x0F, 0x00, 0x28, 0x1F, + 0x01, 0x0F, 0x00, 0x28, 0x1F, 0x00, 0x0F, 0x00, 0x20, 0x14, 0xCC, 0x6E, 0x7F, 0x09, 0xFB, 0x20, + 0x12, 0xED, 0x0E, 0x00, 0x29, 0x0D, 0xFC, 0xAB, 0x17, 0x26, 0x5C, 0xFF, 0x52, 0x3E, 0x34, 0x00, + 0x01, 0x41, 0x23, 0x1D, 0x66, 0x87, 0x00, 0x49, 0x96, 0xAE, 0xDF, 0x02, 0xB7, 0x09, 0x02, 0x0C, + 0x4A, 0xC9, 0x01, 0x00, 0x84, 0x82, 0xD7, 0x06, 0x0F, 0x00, 0x27, 0xFB, 0x60, 0x2F, 0x0C, 0x21, + 0xFA, 0xAE, 0x17, 0x23, 0x83, 0x42, 0x80, 0x80, 0x80, 0x7E, 0x75, 0x58, 0x37, 0xF2, 0x25, 0x1B, + 0x1C, 0xDC, 0x1F, 0x04, 0xF0, 0x0C, 0x12, 0xBE, 0x0F, 0x00, 0x1C, 0xB4, 0x09, 0x0D, 0x15, 0x34, + 0xA6, 0x7B, 0x0B, 0x19, 0x00, 0x03, 0xE7, 0x7A, 0x2B, 0xDC, 0x02, 0x19, 0x00, 0x25, 0x1E, 0xFC, + 0xA1, 0x1B, 0x0A, 0x54, 0x0D, 0x03, 0x41, 0x18, 0x2B, 0xF5, 0x10, 0x19, 0x00, 0x26, 0x0E, 0xF1, + 0x1B, 0x31, 0x09, 0x86, 0x0D, 0x17, 0x72, 0x11, 0x26, 0x08, 0x19, 0x00, 0x13, 0x04, 0x8D, 0x32, + 0x1C, 0xBF, 0xB8, 0x0D, 0x27, 0x58, 0xFF, 0x7D, 0x6E, 0x07, 0x19, 0x00, 0x03, 0xDE, 0x98, 0x3B, + 0xFF, 0xE2, 0x04, 0x19, 0x00, 0x19, 0x3E, 0xB9, 0x0A, 0x07, 0x03, 0x0E, 0x03, 0xF4, 0x39, 0x2B, + 0xF8, 0x15, 0x19, 0x00, 0x29, 0x26, 0xFE, 0x84, 0x19, 0x06, 0x35, 0x0E, 0x04, 0xF5, 0x57, 0x1B, + 0x33, 0x19, 0x00, 0x04, 0x19, 0x41, 0x1C, 0xC7, 0x67, 0x0E, 0x17, 0x7C, 0xAC, 0x3F, 0x08, 0x19, + 0x00, 0x13, 0x10, 0x49, 0x32, 0x2B, 0xE8, 0x06, 0x19, 0x00, 0x1C, 0x6A, 0x72, 0x0D, 0x04, 0x19, + 0x00, 0x03, 0x61, 0x0D, 0x3F, 0xFB, 0x1A, 0x00, 0x9E, 0x21, 0x03, 0x2F, 0xCF, 0x00, 0x19, 0x00, + 0x04, 0x2F, 0xFF, 0x23, 0x19, 0x00, 0x05, 0x1F, 0x83, 0x19, 0x00, 0x05, 0x1B, 0xE3, 0x97, 0x0B, + 0x03, 0xF0, 0xCB, 0x07, 0x74, 0x44, 0x04, 0x19, 0x00, 0x23, 0xAF, 0x01, 0x55, 0x27, 0x1B, 0xAA, + 0x19, 0x00, 0x14, 0x28, 0xEE, 0x4B, 0x2C, 0xFA, 0x14, 0x45, 0x01, 0x29, 0x1B, 0xFE, 0x61, 0x0C, + 0x07, 0x93, 0x0F, 0x03, 0x27, 0x19, 0x2C, 0xD1, 0x01, 0x19, 0x00, 0x19, 0x5C, 0x78, 0x01, 0x07, + 0x19, 0x00, 0x28, 0x0B, 0xF3, 0x38, 0x6D, 0x08, 0xDE, 0x0F, 0x03, 0xA5, 0x19, 0x2C, 0xEF, 0x09, + 0x19, 0x00, 0x18, 0x41, 0x93, 0x01, 0x08, 0x19, 0x00, 0x04, 0x3A, 0x4A, 0x1D, 0xBC, 0x29, 0x10, + 0x17, 0x84, 0xC3, 0x3E, 0x09, 0x19, 0x00, 0x17, 0x27, 0xD7, 0x61, 0x0A, 0x5B, 0x10, 0x03, 0x2F, + 0x04, 0x2C, 0xE1, 0x03, 0x19, 0x00, 0x16, 0x69, 0x8D, 0x1E, 0x0B, 0x21, 0x21, 0x15, 0xFA, 0x73, + 0x54, 0x0B, 0xA6, 0x10, 0x03, 0x83, 0x43, 0x2F, 0xF8, 0x12, 0x34, 0x22, 0x04, 0x2C, 0xFF, 0x6C, + 0x19, 0x00, 0x24, 0x06, 0xEB, 0x2F, 0x24, 0x0C, 0xF1, 0x10, 0x13, 0x92, 0x10, 0x00, 0x1C, 0x31, + 0x19, 0x00, 0x15, 0x34, 0xB7, 0x27, 0x2F, 0x16, 0x13, 0x3C, 0x04, 0x03, 0x0E, 0x94, 0x15, 0x0F, + 0x13, 0x00, 0xFF, 0xFF, 0x94, 0x0F, 0x5C, 0x17, 0x5A, 0x22, 0x24, 0x1F, 0x3C, 0x03, 0x14, 0x2E, + 0xDF, 0x2B, 0x08, 0x57, 0x2B, 0x13, 0xA5, 0x15, 0x00, 0x15, 0x4D, 0xD0, 0x1B, 0x2E, 0xFF, 0x2A, + 0x22, 0x4A, 0x25, 0xFF, 0x52, 0xE7, 0x1D, 0x03, 0x23, 0x85, 0x09, 0xDA, 0x24, 0x4F, 0xFF, 0x56, + 0x00, 0x3B, 0x63, 0x2B, 0x00, 0x25, 0x49, 0xFF, 0xCB, 0x47, 0x04, 0x4B, 0x20, 0x2B, 0xFF, 0xC7, + 0x1F, 0x69, 0x02, 0xB1, 0x2B, 0x05, 0xC8, 0xD7, 0x16, 0xF7, 0xEB, 0x33, 0x05, 0x77, 0x52, 0x08, + 0xF2, 0xA8, 0x03, 0xD1, 0x71, 0x06, 0xFC, 0x45, 0x00, 0x57, 0x2A, 0x1E, 0x4C, 0x94, 0x2D, 0x17, + 0x21, 0x66, 0x29, 0x06, 0x3C, 0x4E, 0x05, 0x86, 0x68, 0x15, 0x57, 0x13, 0x00, 0x17, 0x70, 0x28, + 0xF8, 0x1A, 0xCD, 0x72, 0x89, 0x02, 0xDF, 0x33, 0x04, 0xDA, 0x07, 0x07, 0x6F, 0x2A, 0x15, 0xC3, + 0x13, 0x00, 0x18, 0x79, 0x9B, 0x77, 0x03, 0x73, 0x2A, 0x27, 0x04, 0xF6, 0xA2, 0x86, 0x2A, 0x61, + 0xFF, 0xD9, 0xAC, 0x05, 0x04, 0x4B, 0x02, 0x50, 0x07, 0x16, 0x65, 0x15, 0xE2, 0x17, 0x9F, 0x79, + 0x7F, 0x13, 0xFB, 0xC6, 0x45, 0x02, 0x98, 0x05, 0x17, 0xC3, 0x2D, 0x7B, 0x01, 0x2D, 0x54, 0x13, + 0xCA, 0x50, 0x48, 0x02, 0x16, 0x13, 0x26, 0x91, 0xF8, 0xB2, 0xF7, 0x01, 0x2E, 0x60, 0x13, 0x8F, + 0x5D, 0x39, 0x02, 0xC5, 0x08, 0x25, 0x87, 0xC7, 0xD3, 0x32, 0x10, 0x0C, 0x0C, 0x10, 0x23, 0xF9, + 0x5D, 0xAB, 0x33, 0x02, 0x31, 0x35, 0x25, 0x83, 0x91, 0xD3, 0x24, 0x01, 0x93, 0x08, 0x23, 0xC8, + 0x53, 0xC2, 0x27, 0x02, 0xE8, 0x23, 0x25, 0x7F, 0x5B, 0xAE, 0x50, 0x01, 0x18, 0x20, 0x23, 0x92, + 0x4F, 0xB0, 0x2B, 0x02, 0x48, 0x49, 0x24, 0x7B, 0x24, 0xE4, 0x2B, 0x02, 0x6B, 0x54, 0x23, 0x5C, + 0x4A, 0x7A, 0x48, 0x02, 0x40, 0x2A, 0x34, 0x77, 0x01, 0xEE, 0xDD, 0x4E, 0x01, 0x8D, 0x0A, 0x23, + 0x26, 0x46, 0x56, 0x2A, 0x13, 0x87, 0xA9, 0x15, 0x13, 0xB8, 0xB4, 0x4E, 0x12, 0x17, 0xAC, 0x7A, + 0x13, 0x41, 0xAB, 0x1D, 0x13, 0x8B, 0x94, 0x24, 0x13, 0x82, 0xBB, 0x45, 0x12, 0x4C, 0x8B, 0x27, + 0x13, 0x3D, 0xF9, 0x1D, 0x13, 0x8F, 0x50, 0x01, 0x13, 0x4B, 0x6B, 0x47, 0x12, 0x82, 0x2E, 0x01, + 0x13, 0x38, 0xD8, 0x13, 0x13, 0x93, 0x17, 0x02, 0x13, 0x16, 0x73, 0x4D, 0x12, 0xB8, 0xA0, 0x4D, + 0x13, 0x34, 0x17, 0x7E, 0x14, 0x97, 0x8B, 0x51, 0x01, 0xE7, 0x0A, 0x12, 0x15, 0xA3, 0x00, 0x13, + 0x19, 0x98, 0x01, 0x34, 0xB9, 0x00, 0x9B, 0x44, 0x2E, 0x01, 0xDB, 0x2C, 0x23, 0x49, 0x24, 0x8C, + 0x53, 0x13, 0x2B, 0x2B, 0x32, 0x14, 0xA0, 0xA8, 0x07, 0x01, 0x5E, 0x01, 0x23, 0x7E, 0x5A, 0x01, + 0x2A, 0x13, 0x26, 0x98, 0x45, 0x14, 0xA4, 0x62, 0x2B, 0x02, 0xE0, 0xAE, 0x13, 0x90, 0x3F, 0x32, + 0x13, 0x22, 0x63, 0x2E, 0x14, 0xA8, 0x25, 0x0A, 0x01, 0x95, 0x2E, 0x23, 0xE7, 0xC7, 0xDF, 0x5D, + 0x13, 0x1D, 0x7C, 0x8A, 0x15, 0xAC, 0x26, 0x36, 0x14, 0xCF, 0xA0, 0xD0, 0x23, 0xFE, 0x0F, 0xC0, + 0xD4, 0x23, 0xFF, 0xCE, 0x37, 0x3B, 0x16, 0x4A, 0xA8, 0x35, 0x02, 0x92, 0x34, 0x13, 0x14, 0x47, + 0x54, 0x15, 0xB5, 0x57, 0x34, 0x18, 0x63, 0x2B, 0x87, 0x13, 0x10, 0xAF, 0x2B, 0x15, 0xB9, 0x4D, + 0x5E, 0x18, 0x2C, 0x93, 0x02, 0x13, 0x0B, 0x74, 0x55, 0x15, 0xBD, 0xA1, 0x35, 0x36, 0x03, 0xF4, + 0xFF, 0x39, 0x49, 0x13, 0x07, 0x84, 0x2C, 0x16, 0xC1, 0x67, 0x35, 0x03, 0x65, 0x69, 0x10, 0xF9, + 0x1A, 0x0E, 0x13, 0x02, 0x79, 0x46, 0x16, 0xC5, 0x02, 0x03, 0x27, 0x8A, 0xFF, 0xC8, 0x2E, 0x12, + 0xFE, 0x79, 0x77, 0x16, 0xCA, 0x72, 0x49, 0x18, 0x53, 0xA3, 0x26, 0x12, 0xF9, 0x8D, 0x8B, 0x16, + 0xCE, 0x4B, 0x2F, 0x18, 0x1D, 0x65, 0x04, 0x12, 0xF5, 0x0A, 0x63, 0x16, 0xD2, 0x97, 0x04, 0x27, + 0x01, 0xE7, 0x86, 0x30, 0x01, 0x59, 0x3D, 0x13, 0xF5, 0xDB, 0x45, 0x16, 0x26, 0x5A, 0x3C, 0x25, + 0xF1, 0x02, 0x75, 0xCC, 0x46, 0xFF, 0xF9, 0x00, 0xDA, 0xA7, 0x35, 0x25, 0x00, 0x7A, 0x4C, 0x09, + 0x03, 0xB1, 0x34, 0x37, 0xFD, 0x00, 0xDE, 0x30, 0x53, 0x17, 0x44, 0xE0, 0x5D, 0x15, 0xE3, 0xD2, + 0x0D, 0x27, 0x1D, 0x17, 0x7C, 0x08, 0x16, 0xCB, 0x81, 0x19, 0x02, 0x64, 0x50, 0x27, 0x8E, 0xCC, + 0x1C, 0x75, 0x06, 0x88, 0x75, 0x2B, 0x90, 0xCC, 0xDF, 0x4F, 0x09, 0x17, 0x00, 0x2F, 0xFC, 0x1C, + 0x17, 0x00, 0x02, 0x2F, 0xFF, 0x84, 0x17, 0x00, 0x03, 0x2F, 0xEB, 0x08, 0x17, 0x00, 0x02, 0x2F, + 0xFF, 0x60, 0x17, 0x00, 0x03, 0x2F, 0xCE, 0x01, 0x17, 0x00, 0x02, 0x2F, 0xFF, 0x3C, 0x17, 0x00, + 0x03, 0x1F, 0xAA, 0x17, 0x00, 0x03, 0x2F, 0xFC, 0x1D, 0x17, 0x00, 0x02, 0x2F, 0xFF, 0x86, 0x17, + 0x00, 0x03, 0x2F, 0xEC, 0x09, 0x17, 0x00, 0x02, 0x2F, 0xFF, 0x62, 0x17, 0x00, 0x03, 0x2F, 0xD0, + 0x01, 0x17, 0x00, 0x02, 0x2F, 0xFF, 0x3E, 0x17, 0x00, 0x03, 0x1C, 0xAC, 0x17, 0x00, 0x24, 0xF6, + 0xFF, 0x5E, 0xC8, 0x09, 0x17, 0x00, 0x24, 0xD4, 0xC7, 0xA4, 0x5F, 0x0A, 0x17, 0x00, 0x02, 0xAD, + 0x0B, 0x2B, 0xED, 0x09, 0x17, 0x00, 0x23, 0x08, 0xEB, 0x0D, 0x04, 0x0A, 0x17, 0x00, 0x03, 0xA0, + 0x04, 0x2B, 0xD1, 0x01, 0x17, 0x00, 0x21, 0x1F, 0xFE, 0x09, 0x00, 0x1B, 0x3F, 0x17, 0x00, 0x03, + 0x97, 0x37, 0x1C, 0xAD, 0x17, 0x00, 0x02, 0xCE, 0x53, 0x2B, 0xFD, 0xF8, 0x17, 0x00, 0x08, 0x2B, + 0xBB, 0x07, 0x17, 0x00, 0x2F, 0x00, 0x72, 0x17, 0x00, 0x03, 0x2F, 0x11, 0xF6, 0x17, 0x00, 0x02, + 0x2F, 0x00, 0x9C, 0x17, 0x00, 0x03, 0x1F, 0x32, 0x17, 0x00, 0x03, 0x2F, 0x00, 0xC7, 0x17, 0x00, + 0x03, 0x1F, 0x5C, 0x17, 0x00, 0x03, 0x2F, 0x07, 0xEB, 0x17, 0x00, 0x02, 0x2F, 0x00, 0x87, 0x17, + 0x00, 0x03, 0x2F, 0x1F, 0xFD, 0x17, 0x00, 0x02, 0x2F, 0x00, 0xB1, 0x17, 0x00, 0x03, 0x1F, 0x46, + 0x17, 0x00, 0x03, 0x2F, 0x02, 0xDB, 0x17, 0x00, 0x02, 0x2F, 0x00, 0x71, 0x17, 0x00, 0x03, 0x2F, + 0x11, 0xF6, 0x17, 0x00, 0x02, 0x2F, 0x00, 0x9C, 0x17, 0x00, 0x03, 0x1F, 0x31, 0x17, 0x00, 0x03, + 0x24, 0x00, 0xC6, 0xA1, 0x34, 0x2B, 0x1E, 0x1A, 0x40, 0x2C, 0x74, 0x31, 0x54, 0x6F, 0x79, 0x77, + 0x6B, 0x4B, 0x93, 0x8D, 0x04, 0x7A, 0x08, 0x25, 0x4F, 0xB5, 0x27, 0x28, 0x27, 0xEA, 0x98, 0x72, + 0x62, 0x38, 0x24, 0xC6, 0xFF, 0x01, 0x00, 0x24, 0xFE, 0x97, 0xD0, 0x37, 0x1D, 0x32, 0x43, 0x2C, + 0x12, 0xC4, 0x10, 0x3D, 0x3D, 0x15, 0xE7, 0xFF, 0x01, 0x00, 0x25, 0xAC, 0x01, 0xE9, 0x3A, 0x2E, + 0xFF, 0xFF, 0x3F, 0x3C, 0x14, 0x1F, 0x46, 0x2C, 0x54, 0xF3, 0xAF, 0x89, 0x8F, 0xBD, 0x77, 0x01, + 0x26, 0xCB, 0x01, 0xD2, 0x5C, 0x02, 0x16, 0xD5, 0x26, 0x34, 0xED, 0x9F, 0x0E, 0x04, 0x26, 0x29, + 0x02, 0x23, 0x05, 0x05, 0xA4, 0x1D, 0x59, 0x7B, 0x00, 0x0F, 0xFE, 0xFF, 0xF6, 0x90, 0x24, 0x0E, + 0xFA, 0xFE, 0x50, 0x2B, 0x32, 0xFF, 0x4F, 0x64, 0x14, 0xD3, 0x4D, 0x12, 0x28, 0x4E, 0xFF, 0xCE, + 0x6F, 0x07, 0x19, 0x56, 0x14, 0x0C, 0x27, 0x10, 0x05, 0xA1, 0x71, 0x03, 0xF3, 0xA8, 0x3C, 0xFF, + 0x2A, 0x77, 0xFD, 0x63, 0x14, 0xB0, 0x1E, 0x33, 0x1F, 0x7C, 0x1A, 0x00, 0x05, 0x1F, 0x40, 0x1A, + 0x00, 0xFF, 0x74, 0x1F, 0x7B, 0x1A, 0x00, 0x05, 0x2F, 0x3F, 0x75, 0xD4, 0x01, 0x06, 0x04, 0x60, + 0x02, 0x1C, 0x76, 0x08, 0x02, 0x2C, 0x27, 0x46, 0x11, 0x86, 0x05, 0x3C, 0x02, 0x1B, 0x28, 0xEE, + 0x1F, 0x03, 0xBD, 0x3C, 0x5A, 0xFF, 0xEF, 0x00, 0x06, 0xF5, 0x66, 0x34, 0x25, 0x10, 0xFD, 0x38, + 0x38, 0x1A, 0xB5, 0xB1, 0x0C, 0x25, 0x69, 0xFF, 0xBD, 0x7E, 0x14, 0x6E, 0x0C, 0x03, 0x01, 0x45, + 0x3B, 0x35, 0x39, 0xEE, 0xFF, 0x25, 0x7C, 0x14, 0x13, 0xCF, 0x39, 0x66, 0xF3, 0xA8, 0x82, 0x88, + 0xB9, 0xFE, 0xDA, 0x14, 0x0F, 0xE5, 0x5F, 0x03, 0x02, 0xF8, 0x51, 0x2E, 0x0E, 0xE0, 0x19, 0x00, + 0x13, 0xA7, 0xA2, 0x1E, 0x0D, 0x53, 0x21, 0x14, 0xBF, 0xE1, 0x3A, 0x1A, 0x21, 0xAF, 0x51, 0x26, + 0xFD, 0x91, 0x09, 0x0E, 0x35, 0x01, 0x4D, 0xB4, 0xB9, 0x21, 0x2B, 0xEB, 0x9D, 0xB6, 0x66, 0x97, + 0x08, 0x35, 0x57, 0x73, 0x7D, 0x7D, 0x6D, 0x54, 0x2A, 0x78, 0x04, 0x1D, 0x1B, 0x6C, 0x2C, 0x8F, + 0xFC, 0xFC, 0xFC, 0xF4, 0xD7, 0xAE, 0x77, 0x1C, 0x6C, 0x2C, 0x04, 0x3F, 0xFE, 0xAB, 0x1C, 0x6C, + 0x2C, 0x04, 0x2F, 0xEF, 0x3D, 0x6C, 0x2C, 0x04, 0x2F, 0xF1, 0x28, 0x6C, 0x2C, 0x04, 0x27, 0xC6, + 0x01, 0xFA, 0x23, 0x6F, 0x15, 0x1E, 0x3B, 0x71, 0xE3, 0xFF, 0x7C, 0x34, 0x03, 0x24, 0x15, 0xDD, + 0x1C, 0x01, 0x0B, 0xFC, 0x0E, 0x14, 0x62, 0x67, 0xCE, 0x0B, 0x18, 0x00, 0x1F, 0x13, 0x85, 0x32, + 0x04, 0x13, 0x00, 0x99, 0x15, 0x1C, 0x51, 0x18, 0x00, 0x03, 0x9B, 0x16, 0x1C, 0x72, 0x18, 0x00, + 0x03, 0xD2, 0x21, 0x1C, 0x82, 0x18, 0x00, 0x03, 0x06, 0x1F, 0x1C, 0x86, 0x18, 0x00, 0x03, 0x57, + 0x13, 0x1B, 0x7E, 0x18, 0x00, 0x13, 0x01, 0xDA, 0x05, 0x1B, 0x62, 0x18, 0x00, 0x03, 0xD2, 0x3E, + 0x2F, 0xFF, 0x3D, 0x2C, 0x2D, 0x03, 0x2A, 0xFE, 0x14, 0x18, 0x00, 0x24, 0x1D, 0xE8, 0x21, 0x50, + 0x06, 0xF1, 0x0F, 0x55, 0x0D, 0x1A, 0x3B, 0x81, 0xF0, 0xB3, 0x0E, 0x0F, 0x68, 0x01, 0x02, 0x2F, + 0xD9, 0x07, 0x18, 0x00, 0x02, 0x2F, 0xF6, 0x33, 0x98, 0x01, 0x02, 0x1F, 0xEB, 0xC8, 0x01, 0x02, + 0x3D, 0xFC, 0x94, 0x12, 0xF8, 0x01, 0x4B, 0xF3, 0xD0, 0xAA, 0x64, 0xF2, 0x14, 0x1B, 0x0C, 0xFB, + 0xBD, 0x0E, 0xAC, 0x10, 0x0F, 0x18, 0x00, 0xFF, 0x8C, 0x5F, 0x1E, 0x1A, 0x35, 0x02, 0xF7, 0xAC, + 0x08, 0x1C, 0x2F, 0x9A, 0x2E, 0xAC, 0x08, 0x06, 0x3F, 0xFF, 0x99, 0x0B, 0xAC, 0x08, 0x06, 0x2F, + 0xC7, 0x0E, 0xAC, 0x08, 0x06, 0x1F, 0xAF, 0xAC, 0x08, 0x07, 0x1F, 0x51, 0xAC, 0x08, 0x06, 0x1F, + 0xCD, 0xAC, 0x08, 0x07, 0x1F, 0x34, 0xAC, 0x08, 0x06, 0x1F, 0x7C, 0xAC, 0x08, 0xFF, 0xFF, 0x5F, + 0x03, 0xAB, 0x12, 0x0F, 0xAC, 0x08, 0x00, 0x1F, 0x11, 0xAC, 0x08, 0x05, 0x2F, 0xEB, 0x01, 0xAC, + 0x08, 0x05, 0x1F, 0xBD, 0xAC, 0x08, 0x06, 0x1F, 0x7A, 0xAC, 0x08, 0x06, 0x1F, 0x2B, 0xAC, 0x08, + 0x05, 0x2F, 0xBF, 0x00, 0xAC, 0x08, 0x05, 0x1F, 0x3F, 0xAC, 0x08, 0x05, 0x1F, 0x91, 0xAC, 0x08, + 0x05, 0x2F, 0xAA, 0x04, 0xAC, 0x08, 0x03, 0x3F, 0xF9, 0x78, 0x02, 0xAC, 0x08, 0x02, 0x06, 0x44, + 0xE1, 0x08, 0xAC, 0x08, 0x2F, 0x86, 0xFD, 0x8D, 0x74, 0x01, 0x08, 0x75, 0x4B, 0x0F, 0x1B, 0x00, + 0x00, 0x13, 0x03, 0x23, 0x3E, 0x1E, 0x7D, 0x6D, 0x42, 0x25, 0x10, 0xD8, 0x1B, 0x5D, 0x0C, 0x36, + 0x00, 0x2F, 0x22, 0xE5, 0x70, 0x91, 0x04, 0x4D, 0x00, 0x00, 0x28, 0xE5, 0xFE, 0x7E, 0x05, 0x36, + 0x00, 0x1A, 0xD5, 0x0B, 0x61, 0x08, 0xC6, 0x54, 0x12, 0xA8, 0x96, 0x49, 0x0F, 0x01, 0x00, 0x01, + 0x12, 0x49, 0xFA, 0x04, 0x0E, 0x94, 0x3E, 0x7C, 0xFA, 0xF4, 0xE0, 0xC8, 0xAE, 0x82, 0x44, 0x28, + 0x1D, 0x06, 0xED, 0x9A, 0x2F, 0x7C, 0x11, 0xB9, 0x3C, 0x05, 0x2F, 0xE9, 0x48, 0x94, 0x3E, 0x05, + 0x2F, 0xFB, 0x4D, 0xD2, 0x3C, 0x05, 0x28, 0xF1, 0x1A, 0x7B, 0x2D, 0x44, 0x16, 0x25, 0x49, 0x93, + 0xD5, 0x05, 0x1C, 0x98, 0x22, 0x06, 0x13, 0x28, 0xB8, 0x0F, 0x2C, 0xF5, 0x09, 0x3B, 0x06, 0x04, + 0x72, 0x02, 0x1C, 0x46, 0x19, 0x00, 0x04, 0xA5, 0x02, 0x1D, 0x73, 0x6D, 0x06, 0x14, 0xD7, 0x65, + 0x00, 0x0C, 0x19, 0x00, 0x14, 0xBC, 0xB5, 0x5A, 0x0C, 0x19, 0x00, 0x03, 0x5C, 0x37, 0x1D, 0xAF, + 0x19, 0x00, 0x14, 0xBD, 0xF7, 0x66, 0x0C, 0x19, 0x00, 0x14, 0xDA, 0xE8, 0x71, 0x0B, 0x19, 0x00, + 0x15, 0x17, 0xA5, 0x38, 0x0B, 0x19, 0x00, 0x15, 0x77, 0xB3, 0x77, 0x0A, 0x19, 0x00, 0x04, 0x26, + 0x29, 0x27, 0xF3, 0x08, 0x19, 0x00, 0x56, 0x02, 0x1B, 0x48, 0x9C, 0xFC, 0xBD, 0x38, 0x05, 0x1A, + 0x2F, 0x08, 0x98, 0x4B, 0x2F, 0xF5, 0x24, 0x77, 0x01, 0x03, 0x2F, 0xFD, 0x59, 0x90, 0x01, 0x03, + 0x2F, 0xEA, 0x4F, 0xC2, 0x01, 0x03, 0x2F, 0xBA, 0x12, 0xF4, 0x01, 0x04, 0x1A, 0xC7, 0x26, 0x02, + 0x33, 0x1C, 0x14, 0x14, 0xC4, 0x34, 0x2C, 0xFD, 0x11, 0xE4, 0x07, 0x19, 0x23, 0x9A, 0xDB, 0x08, + 0x48, 0x20, 0x18, 0xE2, 0x29, 0x43, 0x08, 0x16, 0x08, 0x03, 0x2E, 0x63, 0x2C, 0xE2, 0x01, 0x19, + 0x00, 0x18, 0x5E, 0xD4, 0x41, 0x08, 0x19, 0x00, 0x04, 0x4E, 0x5F, 0x1D, 0x70, 0x61, 0x08, 0x17, + 0xDB, 0x14, 0x22, 0x09, 0x19, 0x00, 0x03, 0x70, 0x16, 0x2C, 0xF6, 0x08, 0x19, 0x00, 0x16, 0x58, + 0x3A, 0x1E, 0x0A, 0x19, 0x00, 0x17, 0x17, 0x80, 0x2B, 0x0A, 0xC5, 0x08, 0x16, 0xD4, 0x88, 0x22, + 0x0A, 0x19, 0x00, 0x04, 0x80, 0x51, 0x1C, 0x1A, 0x19, 0x00, 0x16, 0x51, 0xEF, 0x14, 0x0B, 0x9F, + 0x1E, 0x1F, 0xFE, 0x9F, 0x1E, 0x05, 0x14, 0xCE, 0xC5, 0x3E, 0x0C, 0x19, 0x00, 0x15, 0x8C, 0xDC, + 0x16, 0x0B, 0x19, 0x00, 0x15, 0x4A, 0x6A, 0x08, 0x0B, 0x19, 0x00, 0x04, 0x39, 0x23, 0x1D, 0xC3, + 0xBC, 0x02, 0x03, 0x53, 0x13, 0x2C, 0xFC, 0x0F, 0x19, 0x00, 0x15, 0x85, 0x05, 0x09, 0x1A, 0x1A, + 0x40, 0x5F, 0x79, 0x0F, 0x3B, 0x61, 0x77, 0x7A, 0x6A, 0x45, 0xBC, 0x84, 0x34, 0x01, 0x50, 0xB4, + 0x34, 0x48, 0x25, 0xCC, 0x5E, 0x9B, 0x1B, 0x28, 0x20, 0xBB, 0x43, 0x02, 0x13, 0xCD, 0xAE, 0x2B, + 0x2A, 0x2A, 0xE9, 0x5B, 0x02, 0x11, 0xE7, 0x67, 0x2F, 0x1D, 0x0A, 0x88, 0x61, 0x2F, 0xC2, 0x02, + 0x81, 0x67, 0x01, 0x01, 0xC0, 0x4B, 0x23, 0x0B, 0xF2, 0x0C, 0x00, 0x5D, 0xD0, 0x90, 0x87, 0xB6, + 0xFF, 0xF2, 0x7E, 0x10, 0x7F, 0x48, 0x02, 0x24, 0x49, 0xFB, 0x3B, 0x02, 0x03, 0xFB, 0x5E, 0x28, + 0xD5, 0x02, 0x48, 0x73, 0x14, 0x73, 0xFC, 0x6D, 0x02, 0x83, 0x4D, 0x04, 0x1B, 0x1C, 0x39, 0xA8, + 0x00, 0xCF, 0x6D, 0x68, 0x03, 0xF3, 0x43, 0x39, 0xCF, 0x00, 0xD2, 0xDA, 0xB8, 0x03, 0x25, 0x47, + 0x39, 0xF1, 0x00, 0xC2, 0x6B, 0x63, 0x00, 0x8B, 0x7F, 0x53, 0xF5, 0xC4, 0x91, 0x5E, 0x01, 0x00, + 0x56, 0x13, 0xFE, 0x02, 0x0A, 0x48, 0x5C, 0x5D, 0x2A, 0x03, 0xF0, 0x89, 0x1A, 0xC6, 0x0B, 0x0B, + 0x05, 0xB6, 0x1C, 0x19, 0xAB, 0x2D, 0x48, 0x15, 0x01, 0xDB, 0x74, 0x2F, 0xA8, 0x07, 0xC0, 0x6A, + 0x01, 0x4E, 0xFF, 0xFF, 0xBF, 0x11, 0xD0, 0x9C, 0x00, 0x01, 0x00, 0x18, 0xD6, 0xDD, 0x60, 0x16, + 0x0D, 0x61, 0x3C, 0x18, 0xE7, 0xC2, 0x79, 0x16, 0x1A, 0x72, 0x01, 0x27, 0xF4, 0x4A, 0x18, 0x00, + 0x16, 0x19, 0x21, 0x80, 0x28, 0xFD, 0x65, 0x48, 0x00, 0x04, 0x6A, 0x01, 0x0B, 0xDF, 0x67, 0x01, + 0xA0, 0xD5, 0x1E, 0xFF, 0xF0, 0x66, 0x25, 0x01, 0x76, 0x17, 0x00, 0x19, 0xFE, 0xAB, 0x85, 0x15, + 0x57, 0x06, 0xA1, 0x29, 0xEC, 0x1B, 0x44, 0x48, 0x05, 0x65, 0x56, 0x19, 0xB2, 0x1F, 0x01, 0x15, + 0x2F, 0x31, 0x02, 0x0A, 0xEA, 0x53, 0x14, 0x2D, 0x67, 0x08, 0x1F, 0xB5, 0xE7, 0x98, 0x00, 0x03, + 0x85, 0x03, 0x5B, 0x10, 0x44, 0x79, 0xAE, 0xD5, 0xC9, 0x15, 0x38, 0x5E, 0x90, 0xDA, 0x16, 0x28, + 0x14, 0x3C, 0xE6, 0x03, 0x03, 0xAA, 0x51, 0x1A, 0x22, 0x0F, 0x63, 0x2A, 0xAD, 0xAF, 0x52, 0x55, + 0x03, 0x65, 0x08, 0x13, 0xC1, 0x20, 0x03, 0x1A, 0x88, 0x0C, 0x9C, 0x13, 0xBE, 0x84, 0x02, 0x27, + 0xDD, 0x02, 0x66, 0x4F, 0x58, 0xFF, 0xFF, 0xA7, 0x18, 0xFD, 0xD8, 0x49, 0x24, 0x15, 0xFC, 0x3A, + 0x09, 0x03, 0x63, 0x3E, 0x10, 0xF4, 0xE2, 0x4E, 0x25, 0x05, 0xA8, 0x40, 0x18, 0x04, 0xF8, 0x04, + 0x44, 0xFF, 0xB8, 0x83, 0x8E, 0x76, 0x6C, 0x2D, 0xDB, 0x01, 0x95, 0x98, 0x04, 0x66, 0x1A, 0x1D, + 0x39, 0xB1, 0x4B, 0x11, 0xB5, 0x4B, 0x05, 0x1B, 0x5B, 0x8D, 0x57, 0x13, 0xCE, 0x82, 0x56, 0x19, + 0x44, 0xB0, 0x7E, 0x15, 0x9D, 0xD9, 0x52, 0x24, 0x0B, 0x72, 0x15, 0x31, 0x2A, 0xF9, 0xAB, 0xF5, + 0xA0, 0x75, 0x18, 0x42, 0x6B, 0x7B, 0x7C, 0x67, 0x3D, 0xED, 0x55, 0x4E, 0x16, 0x17, 0x2B, 0x00, + 0x28, 0x3A, 0x0F, 0x2C, 0x3A, 0x08, 0x0E, 0x0A, 0x3A, 0x0F, 0x17, 0x00, 0x3C, 0x03, 0xDA, 0x5A, + 0x04, 0xBA, 0x42, 0x1A, 0x3C, 0xD1, 0x5E, 0x2A, 0x98, 0xFF, 0x1A, 0x65, 0x0F, 0x17, 0x00, 0xFF, + 0xFF, 0xFF, 0x18, 0x22, 0x1E, 0x19, 0xC8, 0x76, 0x13, 0x20, 0xDA, 0x03, 0x05, 0x98, 0x36, 0x12, + 0x96, 0x10, 0x00, 0x2C, 0xF9, 0x20, 0x97, 0x0E, 0x03, 0x45, 0x00, 0x1F, 0xFC, 0x19, 0x00, 0xFF, + 0xFF, 0x92, 0x1C, 0x1D, 0x48, 0x83, 0x03, 0x3D, 0x06, 0x2C, 0xF9, 0x14, 0x92, 0x37, 0x03, 0xB5, + 0x51, 0x3B, 0xEE, 0x05, 0xFF, 0xE4, 0x20, 0x03, 0xC7, 0x2D, 0x3B, 0xDE, 0x00, 0xF3, 0xCA, 0x67, + 0x14, 0xBC, 0x8F, 0x25, 0x1B, 0xD6, 0xD2, 0x6F, 0x14, 0xE6, 0x71, 0x4D, 0x03, 0xF1, 0x4F, 0x27, + 0xF6, 0x0A, 0x62, 0xE5, 0x01, 0x5B, 0x00, 0x1A, 0x6D, 0x09, 0x26, 0x15, 0x86, 0xF5, 0x0E, 0x04, + 0xC2, 0x17, 0x11, 0xF1, 0x22, 0x73, 0x13, 0x55, 0x3D, 0x14, 0x25, 0xF8, 0x09, 0xB1, 0x7F, 0x67, + 0xFF, 0xFF, 0xBD, 0x86, 0x89, 0xC4, 0x2F, 0x42, 0x2F, 0x00, 0x56, 0x2C, 0x07, 0x01, 0x00, 0x14, + 0x23, 0x2E, 0x01, 0xB1, 0x18, 0x00, 0x02, 0xDD, 0x0A, 0x1C, 0x15, 0xBC, 0x82, 0x23, 0xFF, 0xC3, + 0x48, 0x46, 0x29, 0x13, 0xAA, 0x17, 0x00, 0x15, 0xFD, 0x1D, 0x1E, 0x45, 0x00, 0x00, 0x39, 0xAB, + 0xE2, 0x1F, 0x2A, 0xF0, 0xA0, 0x8E, 0x95, 0x94, 0x07, 0x31, 0x52, 0x72, 0x7D, 0x7C, 0x6F, 0x4E, + 0x2C, 0xA8, 0x11, 0x22, 0x1B, 0x1A, 0x58, 0x7F, 0x3A, 0xAD, 0xFC, 0xFC, 0x22, 0xD4, 0x22, 0x02, + 0xF1, 0x12, 0x00, 0x2A, 0x1E, 0x7C, 0xD1, 0x49, 0x05, 0x3F, 0xA0, 0x12, 0xEA, 0xF0, 0xCD, 0x08, + 0x08, 0x8F, 0x14, 0x52, 0xDA, 0x71, 0x1C, 0x15, 0xAF, 0x2D, 0x15, 0x7F, 0x09, 0x48, 0x02, 0x29, + 0x19, 0x2B, 0xFA, 0x06, 0x40, 0x85, 0x15, 0x4E, 0x0A, 0x00, 0x2A, 0x30, 0x00, 0xCA, 0x0F, 0x15, + 0x1A, 0x53, 0x6A, 0x1A, 0x60, 0x9E, 0x50, 0x16, 0xE6, 0xFA, 0x70, 0x1A, 0x90, 0xD3, 0x50, 0x16, + 0xB2, 0x0A, 0x1A, 0x1A, 0xC0, 0xF7, 0x5F, 0x16, 0x7D, 0xD2, 0x9E, 0x29, 0xF0, 0x01, 0x74, 0x86, + 0x16, 0x49, 0xDF, 0x7A, 0x03, 0xC6, 0x6B, 0x27, 0x00, 0xBE, 0xCD, 0x98, 0x17, 0x76, 0x6F, 0x97, + 0x04, 0x5D, 0x77, 0x18, 0xE1, 0x9F, 0x44, 0x25, 0x81, 0x00, 0x1A, 0xFA, 0x04, 0x7D, 0x7B, 0x18, + 0x11, 0x55, 0x51, 0x19, 0x46, 0xC6, 0x02, 0x17, 0xDB, 0x41, 0x00, 0x18, 0x74, 0xF3, 0x98, 0x04, + 0x1C, 0x3A, 0x17, 0x12, 0xC4, 0x4F, 0x19, 0x12, 0x1C, 0x1A, 0x16, 0x41, 0xE2, 0x50, 0x1A, 0xDD, + 0xA4, 0x3A, 0x00, 0x09, 0x0C, 0x29, 0x04, 0xF9, 0x16, 0x6C, 0x16, 0x0E, 0x8F, 0x63, 0x1B, 0x2A, + 0x79, 0x03, 0x15, 0xD9, 0x2D, 0x7A, 0x03, 0xBD, 0x28, 0x1A, 0x40, 0x0A, 0x54, 0x16, 0xFB, 0xD5, + 0x7C, 0x1B, 0x0E, 0x39, 0x21, 0x14, 0x32, 0x99, 0x11, 0x1C, 0xD8, 0x74, 0x54, 0x14, 0x62, 0x26, + 0x32, 0x1C, 0xA4, 0xA9, 0x54, 0x14, 0x93, 0x9B, 0x53, 0x1C, 0x70, 0x44, 0x6B, 0x39, 0xC3, 0x00, + 0x3B, 0x4F, 0x24, 0x15, 0x00, 0x9A, 0xC3, 0x3D, 0xF2, 0x02, 0x68, 0xEC, 0x72, 0x03, 0xDE, 0x14, + 0x29, 0x23, 0x96, 0x28, 0x4A, 0x06, 0xB7, 0xB3, 0x4C, 0xFF, 0x53, 0xC3, 0xFF, 0x9E, 0x91, 0x03, + 0xAE, 0x9F, 0x28, 0x84, 0xF0, 0x38, 0x29, 0x08, 0xDB, 0x17, 0x18, 0xD1, 0xF4, 0x99, 0x09, 0x30, + 0x7D, 0x1D, 0xFF, 0x1D, 0x75, 0x05, 0x0C, 0x75, 0x1E, 0xFF, 0x24, 0x94, 0x1F, 0x38, 0xA2, 0x57, + 0x06, 0x17, 0x09, 0xFE, 0x0B, 0x1F, 0x67, 0x78, 0x6C, 0x02, 0x0A, 0xED, 0x54, 0x08, 0xEA, 0x04, + 0x00, 0x06, 0x05, 0x1F, 0x06, 0xD4, 0x56, 0x05, 0x2F, 0xCA, 0x00, 0x09, 0x57, 0x05, 0x0C, 0x9B, + 0x6C, 0x04, 0xE6, 0x4D, 0x0E, 0x7A, 0xA2, 0x06, 0x73, 0x57, 0x1F, 0x2E, 0xA8, 0x57, 0x05, 0x2C, + 0xF7, 0x04, 0x1A, 0x00, 0x1F, 0x66, 0xE8, 0x56, 0x03, 0x07, 0x32, 0x24, 0x08, 0x6C, 0x85, 0x22, + 0x26, 0x24, 0x68, 0x04, 0x12, 0x32, 0x56, 0x04, 0x04, 0x53, 0x57, 0x00, 0xDB, 0xC7, 0x14, 0xFC, + 0xE4, 0xED, 0x12, 0x34, 0x1C, 0x00, 0x2A, 0x3E, 0x0F, 0x29, 0x17, 0x18, 0xD7, 0xB2, 0xA6, 0x14, + 0x55, 0x15, 0x04, 0x18, 0xEA, 0xBD, 0x32, 0x25, 0x06, 0xFC, 0xA1, 0xB4, 0x05, 0x10, 0x7D, 0x23, + 0xF4, 0x01, 0x45, 0x28, 0x19, 0xC1, 0x83, 0x75, 0x18, 0x3E, 0xD9, 0xA3, 0x14, 0xD0, 0x64, 0x03, + 0x19, 0xE1, 0xD4, 0x3D, 0x18, 0x69, 0xDF, 0x52, 0x14, 0xAC, 0x0F, 0x3F, 0x01, 0x0A, 0xB7, 0x05, + 0x5F, 0x48, 0x18, 0x94, 0xC3, 0x02, 0x15, 0x87, 0xB9, 0x12, 0x02, 0xB1, 0x0E, 0x18, 0xAA, 0x7D, + 0x04, 0x03, 0x69, 0x40, 0x15, 0x63, 0x5C, 0x10, 0x18, 0x42, 0xB7, 0x12, 0x18, 0xEB, 0x9E, 0x14, + 0x15, 0x3E, 0xC1, 0x56, 0x01, 0xA3, 0x01, 0x37, 0x05, 0xFA, 0xFF, 0x83, 0x04, 0x15, 0x37, 0x10, + 0x05, 0x03, 0xFD, 0x00, 0x19, 0x83, 0xA4, 0x84, 0x16, 0x41, 0x88, 0x2C, 0x01, 0x1C, 0xB4, 0x16, + 0xC5, 0xD2, 0x64, 0x19, 0x53, 0x22, 0x56, 0x14, 0x78, 0xFB, 0x00, 0x04, 0x61, 0x04, 0x18, 0xC4, + 0x38, 0x8B, 0x26, 0xFF, 0x97, 0x96, 0x07, 0x16, 0xAC, 0x0C, 0x40, 0x17, 0xE4, 0x9C, 0x04, 0x03, + 0x63, 0x11, 0x16, 0xB8, 0xBE, 0x86, 0x02, 0xFD, 0x00, 0x28, 0xFE, 0x07, 0x38, 0x59, 0x01, 0x20, + 0x75, 0x16, 0xD9, 0x4F, 0xA1, 0x15, 0x33, 0x1C, 0x78, 0x25, 0x04, 0xF8, 0x0B, 0x59, 0x14, 0x19, + 0xA0, 0xB7, 0x02, 0x98, 0x01, 0x15, 0x0F, 0x0B, 0x05, 0x01, 0x37, 0x7A, 0x23, 0xEB, 0xBC, 0x69, + 0x10, 0x27, 0x19, 0xFF, 0x4E, 0x5E, 0x14, 0xEA, 0xB4, 0x5E, 0x01, 0x7C, 0x11, 0x23, 0xC0, 0x90, + 0x9E, 0x06, 0x16, 0x3A, 0xFB, 0x00, 0x04, 0xFD, 0x00, 0x13, 0x86, 0xA1, 0x29, 0x23, 0x95, 0x65, + 0x5F, 0x19, 0x18, 0x5A, 0x48, 0x68, 0x14, 0xA1, 0x39, 0x7D, 0x01, 0x64, 0x2B, 0x23, 0x6A, 0x3A, + 0x82, 0x6F, 0x18, 0x7A, 0x71, 0x73, 0x14, 0x7C, 0x71, 0x15, 0x02, 0xEB, 0x97, 0x13, 0x0F, 0x39, + 0x06, 0x18, 0x9B, 0xB9, 0x87, 0x02, 0xFD, 0x00, 0x42, 0xE7, 0x00, 0x03, 0xF7, 0x61, 0x7B, 0x01, + 0xCD, 0x20, 0x13, 0x1B, 0x0A, 0x92, 0x19, 0x63, 0x56, 0x12, 0x23, 0x09, 0x22, 0xCC, 0x02, 0x12, + 0xB7, 0x45, 0x08, 0x18, 0xDC, 0x93, 0x02, 0x03, 0xFD, 0x00, 0x23, 0x28, 0x4D, 0xE2, 0x19, 0x01, + 0x5A, 0x14, 0x37, 0x72, 0x03, 0xFA, 0xFB, 0x00, 0x04, 0xFD, 0x00, 0x23, 0x48, 0x77, 0x60, 0x03, + 0x01, 0x6F, 0x51, 0x28, 0x9D, 0x1C, 0xFB, 0x00, 0x04, 0xFD, 0x00, 0x23, 0x68, 0xA1, 0x6C, 0x04, + 0x01, 0x12, 0x04, 0x28, 0xC8, 0x3D, 0xFB, 0x00, 0x04, 0xFD, 0x00, 0x23, 0x89, 0xCB, 0x78, 0x05, + 0x01, 0xB5, 0x2B, 0x28, 0xF2, 0x5E, 0xFB, 0x00, 0x04, 0xFD, 0x00, 0x24, 0xAB, 0xF4, 0x75, 0x79, + 0x01, 0x38, 0x07, 0x09, 0xFB, 0x00, 0x04, 0xFD, 0x00, 0x15, 0xE8, 0xDD, 0x78, 0x01, 0x18, 0x06, + 0x18, 0xE5, 0xFB, 0x00, 0x05, 0xFD, 0x00, 0x05, 0x45, 0x78, 0x05, 0xF4, 0x27, 0x05, 0x8E, 0x03, + 0x05, 0xFD, 0x00, 0x05, 0xFA, 0x08, 0x07, 0x29, 0xFC, 0x04, 0xFB, 0x00, 0x04, 0xFD, 0x00, 0x05, + 0x8F, 0x09, 0x03, 0xF8, 0x60, 0x08, 0xFB, 0x00, 0x04, 0xFD, 0x00, 0x05, 0x3A, 0x0D, 0x00, 0xC6, + 0xCE, 0x1A, 0xFF, 0xFB, 0x00, 0x06, 0xAA, 0x8E, 0x04, 0xDA, 0x06, 0x03, 0xED, 0x21, 0x07, 0xFB, + 0x00, 0x04, 0xFD, 0x00, 0x06, 0x14, 0xB7, 0x03, 0x20, 0x81, 0x07, 0xFB, 0x00, 0x05, 0xF4, 0x03, + 0x05, 0xB2, 0xAF, 0x04, 0xBE, 0xB3, 0x06, 0xFB, 0x00, 0x07, 0xFD, 0x00, 0x1B, 0x8C, 0x2A, 0x30, + 0x05, 0xFB, 0x00, 0x07, 0xFD, 0x00, 0x19, 0x61, 0xAB, 0x04, 0x08, 0xFB, 0x00, 0x06, 0xFD, 0x00, + 0x03, 0x7E, 0x76, 0x2D, 0x06, 0xFB, 0xFB, 0x00, 0x06, 0xFD, 0x00, 0x04, 0x44, 0x6A, 0x1E, 0xD4, + 0x19, 0x7A, 0x2A, 0x00, 0xA1, 0x06, 0x5A, 0x2D, 0x00, 0xA9, 0xFB, 0x00, 0x05, 0xFD, 0x00, 0x1B, + 0xB4, 0x55, 0x8F, 0x07, 0xFB, 0x00, 0x05, 0xFD, 0x00, 0x1B, 0x89, 0xFD, 0x09, 0x07, 0xFB, 0x00, + 0x05, 0xFD, 0x00, 0x05, 0xE2, 0x31, 0x19, 0x26, 0xFB, 0x00, 0x22, 0x1A, 0x1A, 0xB8, 0x12, 0x10, + 0x0F, 0x20, 0xEB, 0x08, 0xE3, 0xE1, 0x22, 0x00, 0xB7, 0xFE, 0x50, 0x3B, 0x21, 0x00, 0x9C, 0x55, + 0x14, 0x03, 0xBB, 0x13, 0x15, 0xBE, 0x65, 0x06, 0x2A, 0xFE, 0x22, 0x18, 0x08, 0x16, 0x5C, 0x14, + 0x59, 0x19, 0x89, 0x23, 0x59, 0x01, 0xB3, 0xCC, 0x19, 0x5F, 0xFF, 0x2C, 0x17, 0x25, 0xC5, 0x31, + 0x28, 0x09, 0xED, 0x74, 0x5E, 0x18, 0x7F, 0x10, 0x08, 0x17, 0x8C, 0xE8, 0x06, 0x26, 0x01, 0xD9, + 0x71, 0x88, 0x05, 0x0A, 0x0B, 0x01, 0x2C, 0x5D, 0x1A, 0x34, 0x2C, 0x46, 0x16, 0xB8, 0xD3, 0x1D, + 0x02, 0xF3, 0x16, 0x2A, 0xFB, 0x17, 0xEC, 0x52, 0x64, 0xF5, 0x10, 0x00, 0x03, 0xE7, 0xFF, 0xBB, + 0x65, 0x01, 0x01, 0x00, 0x24, 0x04, 0xE2, 0x34, 0x38, 0x19, 0x45, 0x2B, 0xCE, 0x06, 0x91, 0x01, + 0x22, 0xD8, 0x01, 0x96, 0x08, 0x16, 0xE7, 0x8E, 0x07, 0x13, 0x18, 0x08, 0x02, 0x2A, 0x4B, 0xF2, + 0x8F, 0x01, 0x06, 0x84, 0x16, 0x1E, 0xE8, 0x69, 0x5F, 0x2F, 0x3F, 0xFF, 0xA9, 0x5E, 0x05, 0x04, + 0xEB, 0x38, 0x06, 0x66, 0x03, 0x29, 0x00, 0x00, 0x0A, 0xD0, 0x02, 0xBD, 0x00, 0x19, 0x0E, 0x1A, + 0x00, 0x01, 0xD9, 0xF4, 0x0F, 0x24, 0x69, 0x02, 0x07, 0xE3, 0x8F, 0x07, 0xF0, 0x02, 0x08, 0xBC, + 0x7D, 0x06, 0xD7, 0xF2, 0x06, 0xC5, 0x16, 0x19, 0xF1, 0xE5, 0xE4, 0x0C, 0x16, 0x8B, 0x0A, 0xF2, + 0xF9, 0x0B, 0x87, 0x91, 0x2B, 0xFF, 0x60, 0x19, 0x00, 0x15, 0x15, 0x8F, 0x15, 0x08, 0xCF, 0x7E, + 0x0B, 0x94, 0x8B, 0x19, 0x36, 0x19, 0x00, 0x01, 0xCB, 0xF5, 0x0F, 0x1C, 0xB8, 0x02, 0x18, 0x32, + 0xFF, 0x78, 0x1F, 0x14, 0xEC, 0x6B, 0x01, 0x1C, 0xFF, 0x52, 0x9C, 0x27, 0x07, 0xED, 0x5F, 0x2E, + 0x27, 0xFF, 0xE0, 0x55, 0x18, 0x03, 0xF8, 0x5C, 0x2C, 0x63, 0xF7, 0xED, 0x01, 0x03, 0xED, 0x5C, + 0x4B, 0xED, 0x07, 0x9C, 0xFF, 0xE2, 0x87, 0x23, 0x1B, 0xFD, 0x09, 0x3A, 0x2B, 0x31, 0xFF, 0x6A, + 0x7F, 0x15, 0x79, 0xC9, 0x00, 0x19, 0xC5, 0x4B, 0x19, 0x33, 0x00, 0x01, 0xDA, 0x3A, 0x02, 0x05, + 0x31, 0x51, 0x29, 0xEF, 0x0A, 0x30, 0x0B, 0x00, 0x65, 0x01, 0x29, 0x06, 0xE8, 0xBD, 0x03, 0x02, + 0x78, 0x00, 0x02, 0x7B, 0xCF, 0x18, 0x83, 0x03, 0x30, 0x27, 0x0B, 0xF3, 0xE1, 0x64, 0x27, 0x1C, + 0xFC, 0x92, 0x5E, 0x19, 0x5F, 0x2B, 0x61, 0x17, 0xAC, 0xB1, 0x65, 0x02, 0xDE, 0x31, 0x29, 0xF5, + 0x0C, 0xAB, 0x0C, 0x25, 0xF9, 0x16, 0x1B, 0xB1, 0x1B, 0xA2, 0x62, 0x19, 0x15, 0x7A, 0x48, 0x05, + 0x1B, 0x44, 0xEE, 0x0A, 0x4A, 0xE2, 0x04, 0x02, 0xE1, 0xBB, 0x3B, 0x23, 0x00, 0x0D, 0x19, 0x18, + 0x2D, 0x50, 0x44, 0xA2, 0x04, 0x14, 0x92, 0x71, 0x5B, 0x05, 0x68, 0x04, 0x12, 0x5A, 0x67, 0x04, + 0x15, 0xEB, 0x13, 0x36, 0x22, 0x07, 0xF0, 0x12, 0x00, 0x3B, 0x3A, 0x0F, 0xFA, 0x03, 0x0D, 0x03, + 0x81, 0x03, 0x24, 0xE6, 0x02, 0x4C, 0x18, 0x1B, 0x8F, 0xA3, 0x94, 0x15, 0x95, 0x18, 0x7F, 0x04, + 0x4A, 0xF5, 0x25, 0x01, 0xDC, 0x88, 0x09, 0x29, 0x12, 0xFB, 0x9C, 0x4A, 0x03, 0x41, 0x3B, 0x17, + 0xEB, 0xE5, 0x88, 0x19, 0x7B, 0xDF, 0x56, 0x17, 0x9A, 0xD3, 0xA9, 0x19, 0xCA, 0xE0, 0x1E, 0x01, + 0x8B, 0x3C, 0x27, 0x15, 0xFD, 0x0E, 0x06, 0x12, 0x0F, 0x5C, 0x00, 0x28, 0xEF, 0x06, 0x27, 0x00, + 0x17, 0x67, 0xBA, 0x68, 0x19, 0xA0, 0x34, 0x01, 0x17, 0xB5, 0x01, 0x81, 0x03, 0x62, 0x02, 0x12, + 0x18, 0x91, 0x0D, 0x24, 0xF8, 0x0C, 0xC2, 0xB4, 0x00, 0xE3, 0x1E, 0x09, 0x83, 0x90, 0x15, 0x53, + 0xE2, 0x84, 0x1B, 0xA6, 0x77, 0x0D, 0x15, 0xA1, 0x9D, 0x01, 0x01, 0x29, 0x7C, 0x07, 0x08, 0x8D, + 0x23, 0xED, 0x04, 0xF9, 0x10, 0x2A, 0xF5, 0x0A, 0x0A, 0x2F, 0x4D, 0xFF, 0xFF, 0x3E, 0x1A, 0x63, + 0x06, 0x03, 0xF9, 0x00, 0x2D, 0x8D, 0x64, 0x99, 0x21, 0x03, 0x21, 0x12, 0x12, 0xDC, 0xEA, 0x19, + 0x18, 0xF8, 0x69, 0x04, 0x03, 0xC0, 0x19, 0x1E, 0xFB, 0x97, 0x1A, 0x03, 0x75, 0x89, 0x0D, 0x50, + 0x38, 0x06, 0xA3, 0x05, 0x01, 0x39, 0x00, 0x0A, 0x95, 0x86, 0x03, 0x26, 0x60, 0x0F, 0x44, 0x8B, + 0x00, 0x1F, 0x7B, 0x95, 0x65, 0x06, 0x06, 0x12, 0x90, 0x2F, 0xFD, 0x15, 0x23, 0xB2, 0x01, 0x03, + 0x9D, 0x06, 0x0F, 0xD8, 0x66, 0x02, 0x0F, 0x17, 0xB3, 0x00, 0x04, 0x39, 0x35, 0x1D, 0xFE, 0x2F, + 0xBA, 0x2D, 0x01, 0xDB, 0xDF, 0x38, 0x04, 0x01, 0x00, 0x02, 0x6F, 0xB7, 0x2F, 0xFF, 0xB0, 0x1A, + 0x00, 0xFF, 0x7F, 0x23, 0x17, 0x15, 0xA4, 0x92, 0x1E, 0x8E, 0x86, 0x1B, 0x1F, 0x3F, 0xFB, 0x8A, + 0x00, 0x2F, 0xFF, 0x40, 0x15, 0x00, 0x16, 0x1F, 0x3A, 0x15, 0x00, 0x00, 0x45, 0xED, 0x06, 0x00, + 0x0C, 0xB3, 0x55, 0x13, 0x16, 0x98, 0x1D, 0x09, 0x18, 0xA3, 0x04, 0x14, 0x42, 0x1F, 0x40, 0xD4, + 0x99, 0x00, 0x18, 0xE5, 0xDF, 0x1E, 0x2F, 0x04, 0xEB, 0x41, 0x73, 0x00, 0x04, 0xB1, 0x26, 0x09, + 0x8A, 0xA2, 0x03, 0x9C, 0x29, 0x28, 0xDC, 0x01, 0xE3, 0x06, 0x1F, 0xF0, 0xD3, 0x72, 0x00, 0x1F, + 0x4E, 0xFD, 0x3B, 0x00, 0x2F, 0x00, 0xA6, 0x39, 0x9A, 0x00, 0x2F, 0x0B, 0xF5, 0xF5, 0xB2, 0x00, + 0x29, 0x56, 0xFF, 0x8A, 0x13, 0x09, 0x83, 0x0B, 0x09, 0xB0, 0x08, 0x2F, 0x0E, 0xF8, 0xEB, 0x96, + 0x00, 0x03, 0x44, 0x3B, 0x18, 0xFD, 0x69, 0x70, 0x04, 0xFF, 0x3B, 0x18, 0xBB, 0x14, 0x00, 0x2F, + 0x13, 0xFB, 0x11, 0x11, 0x00, 0x03, 0x89, 0x05, 0x19, 0xF9, 0x22, 0x74, 0x1F, 0xBD, 0x09, 0x02, + 0x00, 0x2F, 0x19, 0xFE, 0x61, 0x74, 0x00, 0x03, 0x31, 0x16, 0x3E, 0xF4, 0x0A, 0x00, 0x98, 0x0B, + 0x1E, 0xA5, 0xE2, 0xBA, 0x0B, 0x1E, 0x74, 0x03, 0x59, 0x28, 0x19, 0xEE, 0xEF, 0x11, 0x1B, 0xCD, + 0x1F, 0x28, 0x07, 0x4A, 0x0B, 0x2F, 0xFF, 0x41, 0xFC, 0x9A, 0x00, 0x09, 0xDB, 0x01, 0x2F, 0x01, + 0xD6, 0xDB, 0x01, 0x00, 0x1F, 0x2D, 0xDB, 0x01, 0x01, 0x1F, 0x85, 0xDB, 0x01, 0x00, 0x2F, 0x01, + 0xDD, 0xDB, 0x01, 0x00, 0x1F, 0x35, 0xDB, 0x01, 0x01, 0x1F, 0x8D, 0xDB, 0x01, 0x00, 0x13, 0x02, + 0xDB, 0x1E, 0x17, 0x81, 0x54, 0x79, 0x3E, 0x04, 0x22, 0xFF, 0x01, 0x00, 0x2F, 0x44, 0x24, 0x15, + 0x00, 0x40, 0x50, 0x00, 0x12, 0x0D, 0x34, 0x03, 0xD4, 0x2C, 0x17, 0xF1, 0x88, 0x03, 0x18, 0xCD, + 0x7E, 0x6B, 0x1F, 0xD0, 0x0D, 0x00, 0x00, 0x12, 0x7A, 0xAC, 0x1E, 0x18, 0xF5, 0xC9, 0x09, 0x0F, + 0x0D, 0x00, 0x55, 0x1F, 0xF6, 0x0D, 0x00, 0x0C, 0x1F, 0x76, 0x0D, 0x00, 0x75, 0x1E, 0xF7, 0x0D, + 0x00, 0x1F, 0x75, 0x0D, 0x00, 0x7B, 0x03, 0xE7, 0x16, 0x1F, 0xF8, 0x0D, 0x00, 0x74, 0x02, 0x01, + 0x00, 0x1F, 0xC8, 0x0D, 0x00, 0x07, 0x04, 0xD0, 0xAA, 0x10, 0x06, 0x93, 0x0A, 0x1A, 0xFB, 0x87, + 0x6D, 0x14, 0xB1, 0xBE, 0x88, 0x0B, 0x00, 0x16, 0x0A, 0xAE, 0x78, 0x01, 0xA2, 0x40, 0x2E, 0xEA, + 0x02, 0x98, 0x9A, 0x1E, 0x34, 0x63, 0x9F, 0x2D, 0x7C, 0x00, 0x96, 0xA8, 0x19, 0xC5, 0x13, 0x00, + 0x26, 0x09, 0xF7, 0x4F, 0x28, 0x09, 0x40, 0x8A, 0x1E, 0x55, 0xA8, 0x92, 0x2D, 0x9D, 0x00, 0x99, + 0x04, 0x1A, 0xE5, 0x56, 0x56, 0x1E, 0xDD, 0x5B, 0x16, 0x1C, 0x95, 0xE9, 0x8A, 0x03, 0xDD, 0x0D, + 0x2E, 0xBF, 0x00, 0xC6, 0xA9, 0x1E, 0x0D, 0xEC, 0xA9, 0x1E, 0x4F, 0xDB, 0xBD, 0x1E, 0x98, 0x1E, + 0xBE, 0x1A, 0xE0, 0x87, 0x00, 0x1E, 0xE2, 0x70, 0x6E, 0x1B, 0x9A, 0x92, 0x18, 0x04, 0xC8, 0x10, + 0x19, 0xB9, 0x13, 0x00, 0x01, 0x74, 0x0B, 0x2A, 0xF8, 0x0A, 0x35, 0x81, 0x06, 0x44, 0x72, 0x09, + 0x51, 0x6C, 0x1C, 0x92, 0x54, 0xC4, 0x03, 0xCF, 0x40, 0x06, 0x87, 0x00, 0x1D, 0xE7, 0x68, 0xAB, + 0x2D, 0x00, 0x9F, 0x98, 0x18, 0x29, 0x00, 0x57, 0x2C, 0xBB, 0x01, 0x01, 0x00, 0x10, 0x12, 0x08, + 0x0C, 0x1A, 0xF5, 0x7D, 0x6F, 0x1E, 0xC6, 0x8B, 0x25, 0x1B, 0x7E, 0xDC, 0xBC, 0x04, 0xB2, 0x05, + 0x19, 0xD4, 0x13, 0x00, 0x28, 0x02, 0xEB, 0x62, 0xBD, 0x07, 0xE1, 0x74, 0x19, 0x65, 0x13, 0x00, + 0x1E, 0x5C, 0x4C, 0x96, 0x01, 0x07, 0x41, 0x1A, 0xF1, 0x43, 0x77, 0x1E, 0xCB, 0xE2, 0x0F, 0x1E, + 0x83, 0x90, 0xA0, 0x1A, 0x3A, 0xDE, 0x6B, 0x01, 0x7A, 0x08, 0x1B, 0xEF, 0xDA, 0x8E, 0x04, 0x3E, + 0x17, 0x0A, 0x75, 0x6F, 0x17, 0x61, 0x22, 0x37, 0x08, 0x03, 0x8F, 0x21, 0xED, 0x03, 0x40, 0xB8, + 0x33, 0x34, 0x01, 0xF7, 0xB1, 0xF1, 0x04, 0xE8, 0x05, 0x18, 0xE9, 0x8B, 0x9C, 0x19, 0xEC, 0x0D, + 0x00, 0x02, 0xE1, 0x05, 0x02, 0xCA, 0x1D, 0x18, 0xEC, 0x56, 0x2E, 0x0F, 0x0D, 0x00, 0x76, 0x1F, + 0x83, 0x0D, 0x00, 0x88, 0x1F, 0x82, 0x0D, 0x00, 0x7B, 0x1F, 0x81, 0x0D, 0x00, 0x75, 0x0E, 0x70, + 0x02, 0x0F, 0x0D, 0x00, 0x02, 0x47, 0x19, 0x16, 0x12, 0x01, 0xED, 0x0D, 0x21, 0x23, 0xFB, 0xAE, + 0x02, 0x1F, 0xBE, 0x63, 0xCB, 0x03, 0x09, 0x3F, 0x74, 0x3E, 0x0A, 0xEE, 0xFF, 0xD4, 0x8F, 0x05, + 0x32, 0x58, 0x27, 0xFF, 0xF5, 0xAF, 0x0A, 0x15, 0x01, 0x83, 0x20, 0x07, 0xB7, 0x1F, 0x08, 0x9D, + 0x1C, 0x2B, 0xDA, 0x02, 0x00, 0x9A, 0x1A, 0xA6, 0x6D, 0x91, 0x02, 0x3B, 0x67, 0x2A, 0xC8, 0x28, + 0xB1, 0xBF, 0x13, 0x79, 0x9E, 0x14, 0x18, 0xCD, 0x79, 0x15, 0x11, 0x03, 0x93, 0x11, 0x48, 0xFD, + 0x18, 0x00, 0x72, 0x78, 0x78, 0x14, 0x4F, 0x54, 0x67, 0x25, 0x1A, 0xFE, 0xF1, 0x93, 0x04, 0xFD, + 0x10, 0x15, 0x5F, 0x92, 0x21, 0x16, 0x63, 0xCA, 0x0A, 0x25, 0xF7, 0x0E, 0x95, 0x8E, 0x25, 0xCF, + 0x01, 0x35, 0x15, 0x01, 0x4A, 0x42, 0x24, 0x0F, 0xF8, 0x2B, 0x44, 0x27, 0x0B, 0xF0, 0xBA, 0xB8, + 0x14, 0xAB, 0xA1, 0x10, 0x02, 0xB0, 0x0B, 0x27, 0xEF, 0x07, 0x90, 0x2B, 0x48, 0xFB, 0x19, 0x01, + 0xD0, 0x85, 0x1D, 0x12, 0x07, 0x00, 0x6D, 0x31, 0x7E, 0x11, 0x84, 0x01, 0x00, 0x04, 0x58, 0x01, + 0x11, 0x5B, 0x0E, 0x00, 0x50, 0x6C, 0x13, 0x13, 0x06, 0x00, 0xB8, 0x7D, 0x1D, 0x10, 0x01, 0x00, + 0x0F, 0x7F, 0xD0, 0x00, 0x1F, 0xE4, 0x13, 0x00, 0x39, 0x60, 0x00, 0x00, 0x10, 0x0C, 0x0C, 0x02, + 0x21, 0x2C, 0x22, 0x18, 0xEF, 0xB8, 0x04, 0x17, 0x27, 0x9B, 0x2C, 0x01, 0x98, 0x06, 0x27, 0x07, + 0xDC, 0xF7, 0xA1, 0x02, 0x57, 0x01, 0x02, 0x8A, 0x06, 0x27, 0x01, 0xBA, 0xE9, 0xB8, 0x27, 0x2A, + 0xFC, 0x2B, 0x49, 0x17, 0x90, 0xB7, 0xB1, 0x27, 0x11, 0xEC, 0x2F, 0x15, 0x17, 0x67, 0x2A, 0x0D, + 0x27, 0x03, 0xD0, 0x84, 0x93, 0x00, 0x29, 0x0E, 0x27, 0xF6, 0x09, 0x39, 0xDB, 0x46, 0x01, 0x18, + 0x15, 0x1F, 0x24, 0x02, 0xA5, 0x19, 0x6A, 0xAF, 0xD4, 0xF2, 0xFA, 0xF2, 0xD1, 0xA6, 0x52, 0x7D, + 0x06, 0x36, 0x0C, 0x8B, 0xF9, 0x6D, 0x68, 0x03, 0xB9, 0x1F, 0x19, 0x15, 0x54, 0xCA, 0x11, 0xFB, + 0x9A, 0x00, 0x1B, 0x01, 0x6E, 0x82, 0x2F, 0xED, 0x11, 0xB3, 0x91, 0x01, 0x16, 0x87, 0x20, 0x8F, + 0x54, 0x99, 0x25, 0x24, 0x9A, 0xFF, 0x57, 0x7B, 0x03, 0x42, 0x21, 0x55, 0xDB, 0x03, 0x00, 0x00, + 0x05, 0xAC, 0x92, 0x17, 0x47, 0x07, 0x03, 0x14, 0xBF, 0x3E, 0x22, 0x17, 0x71, 0x99, 0x37, 0x14, + 0xA3, 0x8D, 0x46, 0x17, 0x86, 0x48, 0x01, 0x14, 0x9D, 0xFF, 0x20, 0x12, 0x2C, 0xDB, 0x98, 0x17, + 0x20, 0xF3, 0x42, 0x09, 0xDB, 0x9B, 0x2D, 0x04, 0xAE, 0x15, 0x00, 0x3B, 0x21, 0x84, 0xE5, 0xB7, + 0x24, 0x4C, 0x01, 0x43, 0xB5, 0xFE, 0x83, 0xA4, 0x19, 0x2F, 0x25, 0x5F, 0x01, 0x98, 0xA4, 0x22, + 0x08, 0x89, 0xBB, 0x13, 0x26, 0xF2, 0xDA, 0x15, 0x00, 0x13, 0x19, 0x9D, 0x03, 0x26, 0xBB, 0x1A, + 0x7E, 0x00, 0x13, 0x10, 0xE7, 0x23, 0x27, 0x89, 0x03, 0x93, 0x00, 0x16, 0x9F, 0xB9, 0x0D, 0x05, + 0xA8, 0x00, 0x12, 0x24, 0x76, 0x00, 0x28, 0xD2, 0x04, 0x15, 0x00, 0x16, 0x79, 0xE0, 0x92, 0x06, + 0xD2, 0x00, 0x17, 0xB1, 0x38, 0xD0, 0x05, 0x15, 0x00, 0x17, 0xD9, 0xCF, 0x54, 0x05, 0x15, 0x00, + 0x17, 0xE9, 0x73, 0xC6, 0x14, 0x9C, 0x85, 0x25, 0x16, 0xE2, 0xB2, 0x12, 0x24, 0x24, 0xE7, 0x99, + 0x15, 0x03, 0xBB, 0x50, 0x5D, 0xED, 0x4A, 0x13, 0x5A, 0xEA, 0x22, 0x25, 0x07, 0xE6, 0x16, 0x37, + 0x96, 0x00, 0x0F, 0x58, 0x30, 0x15, 0x7A, 0x92, 0x8E, 0x15, 0x54, 0x14, 0x00, 0x35, 0xB5, 0x06, + 0xFB, 0x87, 0x50, 0x13, 0x66, 0x7D, 0x15, 0x23, 0xC4, 0x0E, 0x3D, 0x1E, 0x01, 0xF5, 0xB4, 0x84, + 0x2B, 0x9E, 0xDF, 0xFD, 0xF1, 0xC3, 0x66, 0x05, 0xB1, 0x1A, 0x52, 0xF4, 0x01, 0x00, 0x19, 0x16, + 0x8C, 0x97, 0x13, 0x28, 0xE4, 0x07, 0x1F, 0x18, 0x9B, 0x13, 0x02, 0x0F, 0x16, 0x00, 0xE1, 0x89, + 0x0C, 0x6F, 0xBC, 0xEE, 0xF8, 0xD6, 0x8F, 0x1B, 0x16, 0x00, 0x13, 0x51, 0x7A, 0x88, 0x27, 0xF0, + 0x41, 0x16, 0x00, 0x06, 0x56, 0xCE, 0x29, 0xF5, 0x27, 0xE1, 0xA4, 0x05, 0x83, 0x3B, 0x0F, 0x16, + 0x00, 0x02, 0x25, 0xFF, 0x22, 0x16, 0x00, 0x55, 0xF7, 0x81, 0x2A, 0x22, 0x8B, 0xF2, 0x33, 0x17, + 0x28, 0x6D, 0x1D, 0x24, 0x01, 0xC2, 0xF1, 0x24, 0x09, 0xB0, 0x00, 0x14, 0x6E, 0xAC, 0x98, 0x09, + 0x16, 0x00, 0x03, 0x62, 0x17, 0x29, 0xFB, 0x02, 0x16, 0x00, 0x04, 0x5B, 0x10, 0x19, 0x0A, 0x16, + 0x00, 0x04, 0xEE, 0x18, 0x19, 0x10, 0x16, 0x00, 0x1F, 0x30, 0x16, 0x00, 0xB2, 0x04, 0x53, 0x1A, + 0x19, 0x0E, 0x16, 0x00, 0x03, 0xEC, 0x21, 0x29, 0xFE, 0x04, 0x16, 0x00, 0x03, 0xFA, 0x04, 0x1A, + 0xE9, 0x4A, 0x01, 0x14, 0x6D, 0x79, 0x96, 0x09, 0x16, 0x00, 0x14, 0xB5, 0x86, 0x24, 0x04, 0x16, + 0x00, 0x55, 0xC4, 0x63, 0x21, 0x15, 0x6E, 0x76, 0xAD, 0x0F, 0xE4, 0x01, 0x00, 0x2F, 0xF2, 0x09, + 0x16, 0x00, 0x01, 0x16, 0x8C, 0x10, 0x02, 0x06, 0x03, 0x6F, 0x26, 0xDB, 0x10, 0x16, 0x00, 0x14, + 0x27, 0xE3, 0x1B, 0x29, 0xDD, 0x20, 0x94, 0x02, 0x73, 0x2C, 0x95, 0xD6, 0xFB, 0xF4, 0xC1, 0x76, + 0xBD, 0x0D, 0x26, 0x17, 0x14, 0x50, 0x06, 0xB4, 0x01, 0x39, 0x92, 0xC1, 0xE8, 0xF9, 0xF9, 0xE7, + 0xC4, 0x94, 0x44, 0xAA, 0x12, 0x26, 0x2E, 0xCB, 0x72, 0x00, 0x12, 0xCE, 0x8E, 0x1B, 0x19, 0x3E, + 0x28, 0x7D, 0x10, 0xF8, 0x35, 0x23, 0x1B, 0x11, 0x36, 0x96, 0x27, 0xE2, 0x0A, 0xF5, 0x4F, 0x06, + 0x4E, 0x73, 0x13, 0x04, 0xCC, 0x1D, 0x44, 0x93, 0x24, 0x22, 0x8D, 0x38, 0x41, 0x16, 0x3A, 0x6C, + 0x1C, 0x12, 0x01, 0xC5, 0x31, 0x37, 0xFD, 0x06, 0x79, 0xE4, 0x18, 0x03, 0x16, 0x1F, 0x27, 0x24, + 0x9B, 0x94, 0x4A, 0x03, 0xFB, 0x1A, 0x27, 0x3E, 0xB9, 0xD6, 0x1B, 0x03, 0x63, 0x13, 0x27, 0x44, + 0xC9, 0xE6, 0x05, 0x03, 0x9D, 0x1D, 0x27, 0x44, 0xCC, 0x14, 0x00, 0x21, 0x5C, 0xBC, 0x01, 0x00, + 0x2F, 0x32, 0xCC, 0x62, 0x06, 0x00, 0x0F, 0x14, 0x00, 0x5D, 0x12, 0x1C, 0x0C, 0x72, 0x2F, 0x0F, + 0xCC, 0xB4, 0x00, 0x00, 0x1F, 0xC8, 0x14, 0x00, 0x00, 0x08, 0xF0, 0x00, 0x04, 0x14, 0x00, 0x17, + 0x9B, 0x08, 0x14, 0x03, 0x02, 0xA5, 0x27, 0x3D, 0x79, 0x23, 0x1D, 0x03, 0x5F, 0x07, 0x13, 0x20, + 0xCC, 0x62, 0x10, 0xDA, 0x68, 0x01, 0x13, 0xD3, 0x11, 0x83, 0x04, 0x90, 0x01, 0x45, 0x90, 0x1D, + 0x1A, 0x82, 0x70, 0x19, 0x0D, 0x9F, 0x84, 0x16, 0x60, 0x5B, 0x84, 0x04, 0x13, 0x00, 0x10, 0xD3, + 0xA9, 0x06, 0x29, 0x40, 0xF6, 0x47, 0x75, 0x02, 0x9B, 0xB9, 0x26, 0x30, 0xCE, 0x13, 0x00, 0x14, + 0xC0, 0xD3, 0x0F, 0xB1, 0x01, 0x3D, 0x96, 0xC4, 0xEC, 0xFC, 0xFB, 0xE9, 0xC4, 0x91, 0x3D, 0xF9, + 0x0F, 0x26, 0x19, 0x15, 0xAC, 0xD3, 0x05, 0x01, 0x00, 0x02, 0xE4, 0xDD, 0x1A, 0xFC, 0x41, 0x10, + 0x03, 0xC1, 0x16, 0x1F, 0x50, 0x15, 0x00, 0xC2, 0x97, 0x01, 0x4D, 0xAE, 0xE4, 0xF9, 0xE8, 0xB3, + 0x53, 0x03, 0x15, 0x00, 0x14, 0x03, 0x91, 0x82, 0x26, 0xC7, 0x24, 0x15, 0x00, 0x15, 0x95, 0x53, + 0x01, 0x24, 0xEE, 0xFA, 0x15, 0x00, 0x1E, 0x38, 0x12, 0x04, 0x3F, 0x50, 0x00, 0xA6, 0x15, 0x00, + 0x00, 0x13, 0x09, 0x04, 0x20, 0x6A, 0xCE, 0x37, 0x1D, 0x5D, 0xD8, 0xFF, 0x96, 0x1D, 0x01, 0x2C, + 0x0C, 0x04, 0x21, 0x00, 0x28, 0x50, 0x75, 0x1D, 0x53, 0x04, 0xA8, 0x00, 0x03, 0x7C, 0x00, 0x19, + 0x9E, 0x15, 0x00, 0x03, 0xE6, 0x82, 0x19, 0x8A, 0x15, 0x00, 0x18, 0xBC, 0xEC, 0x35, 0x04, 0x15, + 0x00, 0x1F, 0xC0, 0x15, 0x00, 0xA9, 0x18, 0xBF, 0xB0, 0x22, 0x04, 0x15, 0x00, 0x18, 0xB7, 0xB7, + 0x17, 0x04, 0x15, 0x00, 0x18, 0xA1, 0x34, 0x3F, 0x04, 0x15, 0x00, 0x18, 0x88, 0x6D, 0x28, 0x04, + 0x15, 0x00, 0x04, 0x03, 0x19, 0x18, 0x21, 0x15, 0x00, 0x04, 0x27, 0x17, 0x53, 0xCB, 0x37, 0x13, + 0x43, 0x97, 0xC0, 0x0A, 0x3F, 0x50, 0x01, 0xD3, 0xE3, 0x01, 0x01, 0x1F, 0x68, 0x15, 0x00, 0x01, + 0x25, 0x05, 0xC9, 0x0D, 0x00, 0x25, 0xFB, 0xFD, 0x37, 0x02, 0x14, 0x12, 0xE9, 0x78, 0x27, 0xDE, + 0x3E, 0x76, 0x02, 0x96, 0x03, 0x52, 0xB2, 0xE5, 0xFD, 0xF1, 0xC0, 0x68, 0x0B, 0x76, 0x02, 0x17, + 0x18, 0x04, 0x06, 0xB4, 0x00, 0x31, 0x8C, 0xBE, 0xE6, 0xF8, 0xF8, 0xE8, 0xC4, 0x91, 0x3F, 0xA5, + 0x13, 0x26, 0x24, 0xC0, 0x6C, 0x00, 0x2A, 0xBE, 0x1D, 0x72, 0xD9, 0x01, 0x01, 0x00, 0x10, 0xE4, + 0x15, 0x00, 0x1B, 0x0C, 0x8F, 0x40, 0x26, 0xBB, 0x01, 0x03, 0xBC, 0x07, 0x67, 0x5E, 0x13, 0x02, + 0xB5, 0x0A, 0x44, 0x8E, 0x22, 0x23, 0x89, 0x68, 0x20, 0x03, 0xA3, 0x23, 0x10, 0xD3, 0x9C, 0x04, + 0x02, 0xF8, 0x04, 0x37, 0xF0, 0x03, 0x75, 0xAD, 0x2B, 0x03, 0xE0, 0x3A, 0x27, 0x28, 0x98, 0x91, + 0x1A, 0x03, 0xAF, 0x8D, 0x27, 0x4B, 0xB7, 0xA2, 0xC5, 0x03, 0x84, 0x55, 0x27, 0x60, 0xC8, 0x23, + 0x1E, 0x03, 0x0D, 0x20, 0x2E, 0x75, 0xCC, 0x14, 0x00, 0x27, 0x7D, 0xCC, 0x2A, 0xAC, 0x1B, 0xFE, + 0xF4, 0x74, 0x07, 0x60, 0x01, 0x0F, 0x14, 0x00, 0x1D, 0x17, 0x67, 0x44, 0x92, 0x18, 0x02, 0x78, + 0x00, 0x0B, 0x04, 0x06, 0x0F, 0x14, 0x00, 0x0E, 0x08, 0xC8, 0x00, 0x21, 0x41, 0xAC, 0x01, 0x00, + 0x13, 0x54, 0xC0, 0x24, 0x17, 0x66, 0xC8, 0x00, 0x27, 0x7B, 0x9A, 0x7C, 0x41, 0x03, 0x25, 0x1B, + 0x27, 0x72, 0x77, 0xDD, 0x26, 0x03, 0x6F, 0x0D, 0x13, 0x52, 0xBD, 0x08, 0x26, 0xD1, 0x02, 0xFA, + 0x1A, 0x23, 0x2B, 0x03, 0x8D, 0x0A, 0x33, 0x8B, 0x1B, 0x1A, 0xFA, 0x05, 0x4F, 0xDF, 0x01, 0x00, + 0x7E, 0xF0, 0xA9, 0x00, 0x1B, 0x10, 0x17, 0x46, 0x10, 0xE2, 0xFC, 0x2D, 0x28, 0x3D, 0xF4, 0x13, + 0x00, 0x12, 0xF2, 0x98, 0x25, 0x2F, 0x2C, 0xC8, 0x04, 0x06, 0x01, 0xA1, 0x36, 0x91, 0xC0, 0xE8, + 0xFB, 0xFC, 0xEA, 0xC5, 0x92, 0x3B, 0x58, 0x02, 0x2C, 0x10, 0x10, 0x7B, 0xD3, 0x27, 0x02, 0x0A, + 0x42, 0x15, 0x40, 0x3E, 0xA1, 0xDA, 0xF9, 0x9F, 0x0D, 0x02, 0x5B, 0x5D, 0x14, 0x08, 0xBF, 0xB7, + 0x27, 0xFF, 0xC8, 0x4B, 0x89, 0x05, 0x10, 0x00, 0x2A, 0x14, 0xFA, 0x10, 0x00, 0x2A, 0x5A, 0xFF, + 0x10, 0x00, 0x03, 0xDC, 0x3C, 0x57, 0xFC, 0x5D, 0x0D, 0x14, 0x27, 0x5A, 0x27, 0x1B, 0xB2, 0x81, + 0xA1, 0x1B, 0x83, 0x97, 0x32, 0x1F, 0x7C, 0x10, 0x00, 0x01, 0x15, 0x0C, 0x53, 0xE1, 0x01, 0x38, + 0x02, 0x1B, 0xC5, 0x22, 0xE1, 0x1F, 0xC8, 0x10, 0x00, 0x1D, 0x44, 0x01, 0x14, 0x14, 0x14, 0x61, + 0xB2, 0x4E, 0x14, 0x14, 0x14, 0x10, 0x80, 0x00, 0x0F, 0x10, 0x00, 0xFF, 0x6C, 0x31, 0x19, 0x19, + 0x29, 0xC4, 0x16, 0x0F, 0x01, 0x00, 0x02, 0x15, 0x28, 0xA0, 0x1E, 0xA1, 0x26, 0x86, 0xBD, 0xE7, + 0xF9, 0xF5, 0xD8, 0xA7, 0x4E, 0x02, 0x0E, 0x98, 0x13, 0xFC, 0x89, 0x27, 0x16, 0x11, 0x60, 0x8A, + 0x54, 0xC2, 0x17, 0x00, 0x12, 0xC5, 0x13, 0x24, 0x18, 0x1D, 0x6E, 0xC1, 0x34, 0xD1, 0x19, 0xD0, + 0x88, 0x85, 0x29, 0x02, 0xCA, 0x1E, 0x02, 0x02, 0x5B, 0x11, 0x29, 0xEE, 0x1A, 0xD3, 0x02, 0x05, + 0xD8, 0x3E, 0x25, 0x55, 0x06, 0xA5, 0x30, 0x43, 0xFC, 0x6F, 0x20, 0x23, 0xC3, 0x09, 0x28, 0xB0, + 0x30, 0x4A, 0xA1, 0x16, 0x93, 0xE0, 0x02, 0x02, 0x23, 0x33, 0x27, 0x00, 0x5E, 0x96, 0x08, 0x18, + 0x77, 0x94, 0x32, 0x17, 0x80, 0xE7, 0x33, 0x13, 0x5A, 0x4A, 0x34, 0x08, 0x71, 0x31, 0x17, 0x15, + 0x27, 0x26, 0x18, 0x17, 0x5D, 0x47, 0x17, 0x0B, 0xC5, 0x14, 0x18, 0x33, 0x1E, 0x44, 0x17, 0x09, + 0x32, 0x0D, 0x18, 0x42, 0xD4, 0x2A, 0x17, 0x0E, 0x05, 0x21, 0x18, 0x3E, 0xD2, 0x03, 0x17, 0x1E, + 0xC1, 0x2A, 0x18, 0x29, 0xBE, 0x80, 0x17, 0x44, 0xEC, 0x33, 0x18, 0x0A, 0xA7, 0x28, 0x16, 0x91, + 0xB5, 0x3E, 0x19, 0xDC, 0xB0, 0x26, 0x5A, 0xFA, 0x60, 0x09, 0x0E, 0x6F, 0x9D, 0xD3, 0x0D, 0xFA, + 0xC2, 0x1B, 0x33, 0x94, 0x26, 0x2C, 0xFF, 0xFF, 0xAC, 0xA7, 0x19, 0x02, 0x21, 0x8C, 0x16, 0xD3, + 0xCC, 0x15, 0x18, 0x3A, 0x3F, 0x4B, 0x16, 0xAD, 0x74, 0x24, 0x10, 0x3B, 0x8A, 0x27, 0x96, 0x97, + 0xBD, 0xEB, 0xFF, 0xFF, 0xFA, 0xD4, 0x99, 0x3A, 0xE8, 0x1A, 0x23, 0x1D, 0xEE, 0x0B, 0x08, 0x2A, + 0x0A, 0x10, 0xB2, 0x31, 0x1F, 0x8D, 0x36, 0x8A, 0x05, 0x02, 0xA2, 0x05, 0x6F, 0xBC, 0x7B, 0x58, + 0x3B, 0x21, 0x08, 0x19, 0x00, 0x00, 0x03, 0x22, 0x02, 0x44, 0xD4, 0xB4, 0x81, 0x3F, 0xBD, 0x07, + 0x0D, 0x6F, 0x07, 0x13, 0xDD, 0x0D, 0x26, 0x14, 0x06, 0x07, 0x49, 0x0D, 0x3A, 0xA2, 0x4F, 0x01, + 0x55, 0xE3, 0xFF, 0xA1, 0xDE, 0x02, 0x11, 0x06, 0xF9, 0x09, 0x36, 0xAE, 0xBE, 0xD5, 0x27, 0x99, + 0x01, 0xA2, 0x21, 0x25, 0x0B, 0xC0, 0xCF, 0x27, 0x45, 0x05, 0x1D, 0x4F, 0xA2, 0xAB, 0xAE, 0x11, + 0x01, 0x1D, 0x1A, 0x2A, 0xEC, 0x0A, 0x29, 0x34, 0x14, 0x2B, 0x32, 0x02, 0x1B, 0xAE, 0xAE, 0x2A, + 0x14, 0x36, 0x9A, 0x0C, 0x2A, 0xCB, 0x01, 0xC2, 0x22, 0x15, 0x26, 0x4F, 0x26, 0x94, 0xBD, 0x61, + 0x36, 0x22, 0x14, 0x13, 0x21, 0x49, 0x9B, 0x02, 0xE1, 0x05, 0x06, 0x67, 0x0A, 0xC5, 0x3F, 0x0A, + 0xB9, 0x2E, 0x0A, 0xC8, 0x00, 0x1E, 0x11, 0xB9, 0xA4, 0x03, 0xBA, 0x09, 0x2C, 0x16, 0x9D, 0x79, + 0xBE, 0x14, 0x70, 0x8A, 0x00, 0x61, 0x11, 0x5B, 0x9A, 0xC5, 0xE1, 0xF3, 0x43, 0x5D, 0x46, 0xE2, + 0xC8, 0x98, 0x58, 0x5F, 0x1C, 0x04, 0xB8, 0x0C, 0x13, 0x18, 0xE8, 0x12, 0x1D, 0x20, 0x62, 0xC8, + 0x0C, 0x1A, 0x23, 0x0F, 0x15, 0x00, 0xCA, 0x87, 0x0B, 0x66, 0xAD, 0xE1, 0xF9, 0xEA, 0xAD, 0x2C, + 0x15, 0x00, 0x23, 0x04, 0x76, 0x19, 0x0A, 0x25, 0xF7, 0x39, 0x15, 0x00, 0x16, 0x42, 0xD4, 0x04, + 0x3A, 0xD8, 0x04, 0x18, 0x91, 0x14, 0x01, 0x01, 0x00, 0x2F, 0x48, 0x18, 0xBE, 0x01, 0x00, 0x15, + 0x8C, 0x15, 0x00, 0x43, 0xCC, 0x4D, 0x1A, 0x52, 0x8B, 0x2B, 0x14, 0xB1, 0x15, 0x00, 0x26, 0x93, + 0x05, 0x47, 0x2D, 0x19, 0xBE, 0xA8, 0x00, 0x03, 0x77, 0x10, 0x19, 0xC0, 0x15, 0x00, 0x1F, 0x78, + 0x15, 0x00, 0xFF, 0xC3, 0x32, 0x00, 0x0D, 0x08, 0x7C, 0xBE, 0x03, 0x8F, 0x03, 0x04, 0x54, 0xAF, + 0x1F, 0x48, 0x08, 0x00, 0x0D, 0x04, 0x9C, 0x0B, 0x0F, 0xD7, 0x07, 0x05, 0x04, 0x1B, 0x28, 0x03, + 0x30, 0x00, 0x1F, 0x40, 0x08, 0x00, 0xD5, 0x35, 0x0D, 0x0C, 0x32, 0x0B, 0xCF, 0x12, 0x86, 0x04, + 0x01, 0x17, 0xC1, 0x94, 0xD3, 0x1F, 0xC4, 0x0C, 0x00, 0x21, 0x03, 0x7C, 0xA3, 0x2F, 0x04, 0x00, + 0x01, 0x00, 0x20, 0x12, 0x7E, 0x84, 0x00, 0x17, 0xB6, 0x9E, 0x08, 0x1F, 0xB8, 0x0C, 0x00, 0xFF, + 0x42, 0x17, 0x81, 0x0C, 0x00, 0x16, 0x92, 0x56, 0x07, 0x13, 0x03, 0xFD, 0x1A, 0x44, 0xA0, 0x25, + 0x16, 0x2B, 0x75, 0x3B, 0x17, 0x75, 0x4C, 0x1B, 0x16, 0x26, 0x0C, 0x00, 0x14, 0xB1, 0x77, 0x2B, + 0x45, 0xFF, 0xFF, 0xE9, 0x1E, 0x0C, 0x00, 0xD1, 0xCE, 0x28, 0x00, 0x00, 0x79, 0xCA, 0xEB, 0xFD, + 0xFB, 0xDE, 0xAF, 0x58, 0x04, 0xA4, 0xEC, 0x0A, 0x28, 0x1A, 0x2F, 0x0C, 0x00, 0xC5, 0x2D, 0x03, + 0x0F, 0x18, 0x00, 0xFC, 0x13, 0x97, 0x2F, 0x01, 0x1A, 0x41, 0x18, 0x00, 0x24, 0x35, 0xFE, 0x80, + 0xAA, 0x09, 0x18, 0x00, 0x04, 0xCE, 0x8B, 0x2A, 0xF6, 0x1E, 0x18, 0x00, 0x04, 0x9A, 0x3C, 0x1A, + 0x7B, 0x60, 0x00, 0x13, 0x15, 0xB1, 0x07, 0x2A, 0xDD, 0x08, 0x18, 0x00, 0x17, 0x9E, 0x06, 0x2B, + 0x07, 0x90, 0x00, 0x04, 0xFE, 0x67, 0x1A, 0xB4, 0xA8, 0x00, 0x13, 0x04, 0x62, 0x1E, 0x2A, 0xF9, + 0x24, 0x18, 0x00, 0x19, 0x6F, 0x6E, 0x0A, 0x05, 0xD8, 0x00, 0x13, 0x19, 0x1E, 0x32, 0x2A, 0xE3, + 0x0B, 0x18, 0x00, 0x29, 0xA5, 0xFF, 0xB9, 0x90, 0x04, 0x08, 0x01, 0x04, 0xB8, 0x0B, 0x2A, 0xBE, + 0x01, 0x18, 0x00, 0x2A, 0xDE, 0xFF, 0xE1, 0xAD, 0x1E, 0x28, 0xA4, 0xAE, 0x0F, 0x18, 0x00, 0x02, + 0x1F, 0xC1, 0x18, 0x00, 0x04, 0x2B, 0xFF, 0x2A, 0x18, 0x00, 0x29, 0xEC, 0x8B, 0xC7, 0x40, 0x05, + 0x18, 0x00, 0x37, 0x51, 0x19, 0xFD, 0xE0, 0x6D, 0x26, 0x00, 0x28, 0x15, 0xAB, 0x18, 0xB8, 0xEB, + 0x30, 0x16, 0x28, 0xDC, 0xB5, 0x18, 0x5B, 0x49, 0xAA, 0x07, 0xE0, 0x01, 0x04, 0x0C, 0xA1, 0x1C, + 0x2D, 0xF8, 0x01, 0x17, 0xA1, 0xCE, 0x3C, 0x08, 0x18, 0x00, 0x03, 0xBA, 0x15, 0x2B, 0xF1, 0x0B, + 0x18, 0x00, 0x26, 0x03, 0xE5, 0x32, 0x2D, 0x09, 0x40, 0x02, 0x07, 0xA6, 0x65, 0x09, 0x18, 0x00, + 0x16, 0x2D, 0x24, 0x37, 0x0A, 0x70, 0x02, 0x15, 0xD0, 0xC7, 0x1F, 0x0A, 0x18, 0x00, 0x03, 0x67, + 0x8A, 0x2B, 0xF3, 0x0D, 0x18, 0x00, 0x24, 0x19, 0xFD, 0x93, 0x12, 0x0B, 0xB8, 0x02, 0x14, 0xB9, + 0x50, 0x16, 0x0B, 0x18, 0x00, 0x04, 0x43, 0x3A, 0x57, 0x34, 0x0D, 0x08, 0x2B, 0x03, 0xE8, 0xA8, + 0x13, 0x7B, 0x38, 0x04, 0x1F, 0x7C, 0x08, 0x00, 0xFF, 0x36, 0x22, 0x26, 0x22, 0xD8, 0x15, 0x13, + 0x3C, 0x19, 0xB7, 0x92, 0x00, 0x00, 0x06, 0x5A, 0xA8, 0xDB, 0xF7, 0xF3, 0xC7, 0x61, 0x8F, 0x86, + 0x09, 0x66, 0xAB, 0xE2, 0xF8, 0xED, 0xB5, 0x44, 0xDF, 0x4D, 0x34, 0xA8, 0x00, 0x50, 0x51, 0x21, + 0x66, 0xAB, 0x02, 0x00, 0x01, 0x63, 0xE7, 0xFF, 0x13, 0x03, 0x22, 0x00, 0x17, 0xAB, 0x62, 0xC3, + 0x38, 0x68, 0x07, 0x9D, 0x80, 0x6C, 0x03, 0x22, 0x00, 0x17, 0xFC, 0x50, 0x03, 0x18, 0xE3, 0x40, + 0x45, 0x15, 0xCB, 0x45, 0x4E, 0x0F, 0x01, 0x00, 0x06, 0x15, 0x1C, 0x22, 0x00, 0x44, 0xA2, 0x3D, + 0x19, 0x56, 0x6E, 0x38, 0x53, 0xF7, 0x8A, 0x33, 0x1B, 0x6C, 0x65, 0x02, 0x13, 0x49, 0x22, 0x00, + 0x27, 0xEE, 0x44, 0x24, 0xF1, 0x27, 0xDE, 0x2C, 0xD1, 0x57, 0x28, 0x65, 0x3C, 0x80, 0xAF, 0x18, + 0x57, 0x26, 0x36, 0x03, 0x1C, 0x0C, 0x19, 0x6C, 0x22, 0x00, 0x18, 0x4D, 0xE3, 0x03, 0x1F, 0x75, + 0x22, 0x00, 0x01, 0x18, 0x4C, 0x22, 0x00, 0x1F, 0x74, 0x22, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0xD8, + 0x10, 0x09, 0x28, 0x04, 0xC6, 0xFC, 0x04, 0x00, 0x00, 0x18, 0x78, 0xB9, 0xEA, 0xF9, 0xE0, 0x96, + 0x18, 0xFA, 0x51, 0x33, 0x04, 0x10, 0x96, 0x32, 0x11, 0x25, 0xDF, 0x18, 0x15, 0x00, 0x16, 0x4C, + 0xF9, 0x1F, 0x1F, 0x9E, 0xDF, 0x03, 0x01, 0x2F, 0xF9, 0x10, 0xF4, 0x03, 0x01, 0x15, 0x4D, 0x15, + 0x00, 0x34, 0xB0, 0x3B, 0x1C, 0xE0, 0x42, 0x14, 0x72, 0x15, 0x00, 0x10, 0x66, 0x07, 0x1A, 0x03, + 0xC7, 0x24, 0x28, 0x83, 0x3C, 0xE9, 0x79, 0x03, 0x56, 0x52, 0x19, 0x84, 0x15, 0x00, 0x1F, 0xBC, + 0x15, 0x00, 0xFF, 0xC3, 0x0A, 0x94, 0x1C, 0x95, 0x2F, 0x8A, 0xBE, 0xE5, 0xF8, 0xF8, 0xE5, 0xBD, + 0x8A, 0x00, 0xDA, 0x17, 0x1D, 0xC1, 0xE7, 0x12, 0xB8, 0x94, 0x1C, 0x19, 0x31, 0x4C, 0xA7, 0x10, + 0xEF, 0xDC, 0x15, 0x1B, 0x0E, 0xDD, 0x14, 0x25, 0xE6, 0x10, 0x3D, 0x22, 0x06, 0x8E, 0x02, 0x33, + 0x8A, 0x00, 0x07, 0x8F, 0x0A, 0x33, 0x94, 0x25, 0x26, 0x00, 0x59, 0x23, 0xF7, 0x0B, 0x2D, 0x10, + 0x43, 0xD7, 0x02, 0x00, 0x00, 0xB3, 0x2A, 0x37, 0xFF, 0x52, 0x84, 0x54, 0x17, 0x03, 0x57, 0x09, + 0x27, 0x8F, 0xA7, 0xCF, 0x2B, 0x03, 0x89, 0x3F, 0x27, 0xB2, 0xC3, 0xB5, 0x3D, 0x03, 0x80, 0x3D, + 0x27, 0xCE, 0xCB, 0x06, 0x3F, 0x03, 0x04, 0x1E, 0x27, 0xD7, 0xCC, 0x14, 0x00, 0x03, 0x9F, 0x6B, + 0x1F, 0xD8, 0x14, 0x00, 0x8D, 0x0F, 0xC8, 0x00, 0x01, 0x17, 0xC3, 0xAD, 0x37, 0x03, 0xF0, 0x00, + 0x27, 0xCF, 0xA8, 0x0C, 0x73, 0x03, 0xC4, 0x17, 0x27, 0xB3, 0x86, 0xA5, 0xBD, 0x03, 0x40, 0x01, + 0x35, 0x90, 0x4B, 0xFF, 0x5C, 0x2C, 0x13, 0x01, 0x3C, 0x22, 0x23, 0x55, 0x08, 0x15, 0x0B, 0x33, + 0x92, 0x1E, 0x1C, 0x4B, 0x10, 0x2E, 0xF8, 0x0D, 0xB1, 0xC7, 0x1E, 0x90, 0x94, 0x1C, 0x10, 0xEA, + 0x69, 0x48, 0x19, 0x38, 0xE0, 0xFD, 0x12, 0xF2, 0x31, 0xA6, 0x17, 0x22, 0xB1, 0xC4, 0x14, 0xBF, + 0x9B, 0x42, 0xB3, 0x01, 0x34, 0x8F, 0xC1, 0xE9, 0xFC, 0xFB, 0xE8, 0xC1, 0x8E, 0x34, 0x98, 0x22, + 0x39, 0x29, 0x02, 0xF6, 0x08, 0x05, 0x87, 0x19, 0x7F, 0xC4, 0xF1, 0xF8, 0xD1, 0x87, 0x15, 0x02, + 0x57, 0x23, 0x08, 0x7A, 0x61, 0x2B, 0x26, 0xE9, 0x34, 0x15, 0x00, 0x06, 0x22, 0x1F, 0x2F, 0xEE, + 0x1B, 0x08, 0x05, 0x01, 0x1F, 0x9B, 0x15, 0x00, 0x01, 0x24, 0xFA, 0x13, 0x15, 0x00, 0x44, 0xF4, + 0x7A, 0x26, 0x26, 0x4C, 0x09, 0x25, 0x5C, 0x3C, 0x0B, 0xF8, 0x33, 0x00, 0x00, 0x03, 0xA4, 0x2E, + 0x19, 0x9D, 0x25, 0x03, 0x03, 0xB0, 0x0F, 0x19, 0xCC, 0x15, 0x00, 0x03, 0xC4, 0x29, 0x19, 0xE9, + 0x15, 0x00, 0x03, 0x6F, 0x7A, 0x19, 0xF6, 0x15, 0x00, 0x03, 0x13, 0x4C, 0x19, 0xFC, 0x15, 0x00, + 0x1F, 0x3C, 0x15, 0x00, 0xA9, 0x03, 0x4B, 0x1A, 0x19, 0xFA, 0x15, 0x00, 0x03, 0x2A, 0x0D, 0x19, + 0xED, 0x15, 0x00, 0x03, 0x5C, 0x1A, 0x1F, 0xD5, 0x50, 0x01, 0x01, 0x18, 0xB8, 0x15, 0x00, 0x04, + 0xD0, 0x7D, 0x14, 0x87, 0x15, 0x00, 0x44, 0xBD, 0x5F, 0x1E, 0x18, 0x3C, 0x04, 0x1F, 0x40, 0xCE, + 0x01, 0x00, 0x2F, 0xE5, 0x03, 0x15, 0x00, 0x00, 0x15, 0x78, 0xF8, 0x01, 0x06, 0xBE, 0xAB, 0x25, + 0xCF, 0x08, 0x15, 0x00, 0x24, 0x09, 0x7F, 0xAC, 0x7F, 0x17, 0x17, 0x69, 0x07, 0xA8, 0x00, 0x22, + 0x90, 0xD5, 0xFC, 0xF2, 0xBC, 0x6E, 0x09, 0x00, 0x15, 0x00, 0x07, 0x01, 0xF9, 0x0F, 0x15, 0x00, + 0xAA, 0x07, 0x68, 0x03, 0x00, 0x01, 0x00, 0xA2, 0x45, 0xAA, 0xE1, 0xFA, 0xEB, 0xBC, 0x68, 0x0C, + 0x00, 0xD9, 0x74, 0x03, 0x44, 0x63, 0x00, 0x00, 0x05, 0xDC, 0x4C, 0x35, 0xE3, 0x4D, 0xDC, 0x02, + 0x21, 0x07, 0xDA, 0xCF, 0x14, 0xFC, 0x15, 0x00, 0x2F, 0x31, 0xFE, 0xAC, 0xA5, 0x00, 0x2E, 0xA8, + 0xFF, 0x15, 0x00, 0x22, 0x09, 0xF6, 0x09, 0x00, 0x44, 0xD0, 0x3A, 0x1B, 0x58, 0x56, 0x23, 0x13, + 0x64, 0xDF, 0x15, 0x10, 0xFE, 0xB3, 0x10, 0x13, 0x07, 0xF7, 0x0C, 0x28, 0x64, 0x73, 0xD8, 0x63, + 0x04, 0x7E, 0x00, 0x18, 0x92, 0x04, 0x25, 0x04, 0x15, 0x00, 0x18, 0xA8, 0x04, 0x25, 0x04, 0x15, + 0x00, 0x18, 0xB2, 0x47, 0x24, 0x04, 0x15, 0x00, 0x1F, 0xB8, 0x15, 0x00, 0xA9, 0x18, 0xB7, 0x04, + 0x25, 0x04, 0x15, 0x00, 0x18, 0xAF, 0x56, 0x0D, 0x04, 0x15, 0x00, 0x18, 0x99, 0xE7, 0x42, 0x04, + 0x15, 0x00, 0x18, 0x81, 0xF8, 0x10, 0x04, 0x15, 0x00, 0x18, 0x57, 0xF9, 0x5D, 0x04, 0x15, 0x00, + 0x14, 0x1E, 0x1F, 0x03, 0x43, 0x3B, 0x12, 0x41, 0x93, 0x6A, 0x0A, 0x3F, 0x64, 0x01, 0xCD, 0xCE, + 0x01, 0x00, 0x2F, 0x00, 0x63, 0x15, 0x00, 0x01, 0x16, 0x04, 0xE9, 0x68, 0x25, 0xE9, 0xEF, 0x37, + 0x02, 0x14, 0x11, 0x5E, 0x5F, 0x26, 0xC5, 0x1F, 0x4C, 0x02, 0xCF, 0x00, 0x03, 0x51, 0xB1, 0xE5, + 0xFD, 0xEF, 0xB9, 0x56, 0x03, 0x00, 0xDC, 0x4E, 0x42, 0x01, 0x0F, 0x15, 0x00, 0xB5, 0x22, 0x12, + 0x10, 0x44, 0x09, 0x16, 0x20, 0xB0, 0x1C, 0x65, 0x14, 0x89, 0xDB, 0xFA, 0xA6, 0x20, 0x4E, 0x19, + 0x10, 0x38, 0x68, 0x0B, 0x15, 0xA8, 0x10, 0x00, 0x38, 0x28, 0xF1, 0xFF, 0x10, 0x00, 0x39, 0x29, + 0xD3, 0xFF, 0x10, 0x00, 0x2A, 0xA3, 0xFF, 0x10, 0x00, 0x1F, 0xFF, 0x10, 0x00, 0x0E, 0x65, 0xC2, + 0x51, 0x13, 0x0C, 0x43, 0x5F, 0x10, 0x00, 0x28, 0x9C, 0x03, 0x4B, 0x44, 0x23, 0xFF, 0xBC, 0x19, + 0x04, 0x1B, 0x20, 0x57, 0x35, 0x06, 0xA0, 0x00, 0x0F, 0x10, 0x00, 0xFF, 0x24, 0x27, 0x15, 0x13, + 0x3E, 0x92, 0x85, 0x2D, 0x89, 0xC6, 0xEC, 0xFA, 0xEE, 0xC6, 0x84, 0xA4, 0xDB, 0x15, 0x12, 0x66, + 0x4D, 0x22, 0xFA, 0x81, 0x90, 0x01, 0x28, 0x19, 0xDA, 0xBE, 0x01, 0x00, 0x33, 0x02, 0x29, 0x03, + 0xC0, 0xD2, 0x01, 0x17, 0x75, 0xB9, 0xBE, 0x04, 0xDA, 0x0D, 0x15, 0x1D, 0x32, 0x83, 0x43, 0x80, + 0x21, 0x2D, 0xAA, 0x68, 0x21, 0x25, 0x02, 0xF2, 0x60, 0x48, 0x11, 0x02, 0x72, 0x09, 0x37, 0xE8, + 0x03, 0x16, 0xE2, 0x50, 0x02, 0x25, 0x22, 0x27, 0x33, 0x17, 0x69, 0xC8, 0x00, 0xF5, 0x2D, 0x57, + 0xD3, 0x6D, 0x0E, 0x02, 0xF4, 0x34, 0x0B, 0x46, 0x85, 0xA0, 0x39, 0x01, 0x8B, 0x60, 0x2E, 0xFD, + 0x59, 0xFB, 0x42, 0x17, 0xFE, 0x1B, 0x3C, 0x14, 0xB2, 0x93, 0x00, 0x15, 0x8B, 0x31, 0x0C, 0x04, + 0x9F, 0x70, 0x35, 0xFF, 0xFF, 0xA5, 0xB1, 0x41, 0x15, 0x27, 0xC9, 0x20, 0x15, 0xBC, 0xBC, 0x46, + 0x24, 0x29, 0xE2, 0x14, 0x00, 0x15, 0xD0, 0xC2, 0x31, 0x26, 0x18, 0xC8, 0x38, 0xE1, 0x04, 0x14, + 0x00, 0x25, 0x08, 0xA5, 0x94, 0x4B, 0x05, 0x50, 0x00, 0x15, 0x01, 0x89, 0x4E, 0x07, 0x75, 0xC8, + 0x13, 0x56, 0x1C, 0x0A, 0x17, 0xFB, 0x34, 0x1F, 0x25, 0x4C, 0xFA, 0x89, 0x56, 0x48, 0x03, 0x42, + 0x9C, 0xB1, 0x8D, 0x42, 0x44, 0xBB, 0x33, 0x8F, 0xE6, 0x24, 0x7A, 0x12, 0x02, 0x85, 0x01, 0x27, + 0xDA, 0xB6, 0x7C, 0x79, 0x02, 0xD0, 0x2B, 0x12, 0xDB, 0xD8, 0x28, 0x10, 0xF3, 0xA9, 0x06, 0x12, + 0x05, 0xD2, 0x0C, 0x13, 0xBB, 0x60, 0x49, 0x54, 0xE6, 0x58, 0x16, 0x2D, 0xAD, 0x1A, 0x2F, 0x1B, + 0x79, 0x14, 0x05, 0x5E, 0xFE, 0x24, 0x00, 0x08, 0xCB, 0x20, 0x6A, 0x19, 0x1D, 0xD0, 0xA2, 0x11, + 0xB7, 0xD1, 0x00, 0x26, 0x14, 0xA5, 0x84, 0x68, 0x14, 0x77, 0xAF, 0x07, 0x94, 0x2D, 0x87, 0xC7, + 0xEC, 0xFE, 0xF8, 0xDA, 0xB1, 0x66, 0xE9, 0xB4, 0x26, 0x12, 0x11, 0xA5, 0x3D, 0x13, 0xF9, 0x74, + 0x1D, 0x05, 0x11, 0x00, 0x18, 0xFC, 0xC6, 0xEF, 0x0F, 0x11, 0x00, 0x64, 0x1A, 0x04, 0x9D, 0x27, + 0x3A, 0xED, 0x00, 0x04, 0xFF, 0x00, 0x1F, 0xF0, 0x11, 0x00, 0x21, 0x00, 0xA2, 0x27, 0x03, 0x7E, + 0x14, 0x5E, 0x57, 0x14, 0x14, 0x14, 0x13, 0xEE, 0x00, 0x0F, 0x11, 0x00, 0xF0, 0x06, 0x58, 0xCE, + 0x26, 0x00, 0x00, 0x94, 0x7D, 0x07, 0x91, 0x6F, 0x04, 0x87, 0x49, 0x67, 0xEC, 0x51, 0x0A, 0x02, + 0x11, 0x09, 0x8C, 0x4C, 0x06, 0x09, 0x47, 0x1C, 0x66, 0x11, 0x00, 0x2B, 0x0E, 0xF3, 0x11, 0x00, + 0x2C, 0x00, 0x76, 0x11, 0x00, 0x2B, 0x02, 0x84, 0x11, 0x00, 0xC4, 0x00, 0x00, 0x39, 0x9D, 0xD0, + 0xF6, 0xFE, 0xF6, 0xE3, 0xD0, 0xB5, 0x29, 0xD8, 0x12, 0x12, 0x6F, 0xAC, 0x02, 0x16, 0xC5, 0x1E, + 0xF1, 0x47, 0xFC, 0xFC, 0x2C, 0x70, 0x21, 0x2A, 0x04, 0x95, 0x29, 0x0F, 0x15, 0x00, 0xFF, 0xAF, + 0x19, 0xCD, 0x15, 0x00, 0x03, 0x7E, 0x1C, 0x27, 0xF3, 0x03, 0x98, 0x47, 0x14, 0x2C, 0x09, 0xA7, + 0x44, 0x85, 0x17, 0x26, 0x85, 0x60, 0x02, 0x3E, 0x2C, 0x3B, 0xFF, 0x01, 0x00, 0x3F, 0x2C, 0x07, + 0xF2, 0x15, 0x00, 0x00, 0x25, 0x00, 0x8F, 0x0C, 0x00, 0x25, 0xF1, 0x66, 0x15, 0x00, 0x13, 0x11, + 0xC1, 0x39, 0x46, 0xFE, 0xA5, 0x19, 0x0C, 0x00, 0x99, 0x87, 0x14, 0x92, 0xE0, 0xFD, 0xF0, 0xC0, + 0x83, 0x20, 0x93, 0x00, 0x57, 0x00, 0x15, 0x15, 0x1F, 0x00, 0x6C, 0x15, 0x02, 0x14, 0xD6, 0x12, + 0x44, 0x0D, 0x00, 0x22, 0xAD, 0x0D, 0x26, 0x00, 0x27, 0xF6, 0x01, 0xE2, 0x2E, 0x37, 0x7F, 0x00, + 0xDA, 0x5C, 0xF7, 0x14, 0x89, 0x58, 0x3B, 0x17, 0xA8, 0xAA, 0xF5, 0x14, 0xAB, 0xFE, 0xC7, 0x17, + 0x77, 0x7E, 0x1C, 0x14, 0xCD, 0xED, 0x57, 0x17, 0x46, 0xB6, 0x59, 0x14, 0xEF, 0xDD, 0x39, 0x16, + 0x15, 0xE4, 0x4F, 0x16, 0x11, 0xC6, 0x06, 0x15, 0xE3, 0xAD, 0x0B, 0x16, 0x33, 0x42, 0x1D, 0x13, + 0xB1, 0x47, 0x57, 0x05, 0x03, 0x08, 0x16, 0x29, 0x3F, 0x20, 0x14, 0x0A, 0x44, 0x2A, 0x26, 0xF5, + 0x03, 0x5B, 0x4A, 0x14, 0x2C, 0x47, 0x6C, 0x17, 0xC7, 0x89, 0x2A, 0x11, 0x4E, 0xF8, 0x69, 0x04, + 0xFE, 0x5A, 0x24, 0x01, 0xEB, 0x01, 0x3C, 0x17, 0xDD, 0xE9, 0xB6, 0x13, 0xBA, 0x9E, 0x5A, 0x27, + 0x04, 0xFC, 0x23, 0xDF, 0x13, 0x89, 0x90, 0x20, 0x02, 0xE9, 0x85, 0x27, 0xFC, 0x08, 0xD7, 0x19, + 0x38, 0xD7, 0x00, 0x42, 0x59, 0xD7, 0x02, 0xE3, 0x01, 0x38, 0xF8, 0x02, 0x64, 0x21, 0x52, 0x12, + 0x02, 0xE4, 0x01, 0x29, 0x1C, 0x86, 0xE4, 0x5C, 0x02, 0xB2, 0x12, 0x29, 0x3E, 0xA8, 0x39, 0x04, + 0x02, 0x52, 0xB6, 0x29, 0x60, 0xCA, 0x10, 0xD5, 0x02, 0x2F, 0x02, 0x22, 0x83, 0xEC, 0xC1, 0x60, + 0x18, 0x00, 0xEF, 0xCB, 0x1A, 0xB4, 0xD0, 0xD9, 0x11, 0x05, 0x0F, 0x3F, 0x1A, 0xF3, 0x4B, 0x2C, + 0x2B, 0x00, 0xCC, 0x62, 0x7A, 0x1B, 0x00, 0x3A, 0xAA, 0x1F, 0x1A, 0x3B, 0x5C, 0x00, 0x16, 0xE9, + 0xBE, 0x09, 0x1F, 0x37, 0x0B, 0x4F, 0x01, 0x04, 0xB0, 0xCA, 0x0A, 0xF9, 0x55, 0x05, 0xE8, 0x4E, + 0x1D, 0x56, 0x46, 0xDA, 0x0A, 0xFB, 0xD1, 0x03, 0x6D, 0xB2, 0x33, 0xFF, 0xFF, 0xF3, 0x31, 0x09, + 0x22, 0x20, 0x1E, 0x30, 0x0A, 0x12, 0x9B, 0x6F, 0xC6, 0x01, 0x14, 0x00, 0x10, 0xDD, 0x0B, 0x00, + 0x02, 0x39, 0x2B, 0x12, 0xA0, 0xD5, 0x3B, 0x16, 0x77, 0xA9, 0x5F, 0x17, 0x0C, 0xFB, 0x3E, 0x12, + 0xC6, 0x7B, 0x59, 0x16, 0x50, 0xDD, 0x5D, 0x17, 0x33, 0x03, 0xD3, 0x12, 0xEA, 0xAB, 0x03, 0x16, + 0x29, 0x0A, 0x33, 0x02, 0x35, 0x14, 0x25, 0xFE, 0x09, 0x5F, 0x57, 0x13, 0xA0, 0x26, 0x5C, 0x17, + 0xE2, 0xAB, 0x30, 0x15, 0x2D, 0x81, 0x39, 0x13, 0x78, 0x94, 0x5F, 0x26, 0xFE, 0x06, 0xC8, 0xB0, + 0x15, 0x54, 0x89, 0x4C, 0x14, 0x4F, 0x54, 0x6A, 0x16, 0x24, 0x2E, 0x58, 0x15, 0x7B, 0x12, 0x41, + 0x14, 0x27, 0xFE, 0x4A, 0x15, 0x46, 0x8A, 0x5C, 0x24, 0xFF, 0xA1, 0x14, 0x37, 0x24, 0xFB, 0x05, + 0x72, 0x06, 0x16, 0x67, 0xD9, 0x57, 0x14, 0xC8, 0x41, 0x46, 0x15, 0xD7, 0x8D, 0x55, 0x16, 0x89, + 0xFB, 0x0A, 0x54, 0xEF, 0x01, 0x00, 0x00, 0xE5, 0x1A, 0x56, 0x14, 0x18, 0x09, 0x41, 0x05, 0x8F, + 0xDC, 0x35, 0x15, 0x00, 0x0B, 0x95, 0x01, 0x23, 0x01, 0xF1, 0xDA, 0x54, 0x16, 0xA7, 0xFB, 0x32, + 0x16, 0x2D, 0x9D, 0x03, 0x13, 0xCA, 0xB0, 0x91, 0x00, 0x37, 0x21, 0x12, 0xC9, 0xF8, 0x0A, 0x16, + 0x51, 0xF1, 0x54, 0x02, 0xB5, 0x01, 0x20, 0x0F, 0x03, 0x51, 0x02, 0x21, 0x85, 0xE9, 0x84, 0x00, + 0x02, 0x99, 0x1C, 0x16, 0x0F, 0xFA, 0x37, 0x11, 0x30, 0x0B, 0x63, 0x21, 0x56, 0xBC, 0xFC, 0x4C, + 0x16, 0x99, 0xCD, 0xCC, 0x02, 0xBD, 0x54, 0x11, 0x51, 0xD6, 0x1C, 0x21, 0x27, 0x8F, 0xCA, 0x00, + 0x16, 0xBD, 0xFD, 0x50, 0x02, 0xB9, 0x02, 0x21, 0x73, 0x76, 0xB2, 0x03, 0x11, 0x62, 0x72, 0xB4, + 0x16, 0xE1, 0x93, 0x5E, 0x11, 0x09, 0x50, 0x11, 0x21, 0x94, 0x9F, 0x09, 0x01, 0x01, 0xF2, 0x3B, + 0x27, 0x2B, 0xFE, 0x2C, 0x8F, 0x01, 0xE1, 0x33, 0x21, 0xB5, 0xC9, 0xCD, 0x4E, 0x10, 0x0A, 0x19, + 0x00, 0x18, 0x74, 0x20, 0x61, 0x01, 0xEE, 0x1F, 0x22, 0xD7, 0xF2, 0x9C, 0x3E, 0x00, 0xB3, 0x01, + 0x27, 0xBE, 0xFF, 0xC9, 0x46, 0x01, 0x43, 0x11, 0x13, 0xFE, 0xB2, 0x04, 0x14, 0xAE, 0x2D, 0x52, + 0x2C, 0xF4, 0x02, 0xC2, 0x56, 0x17, 0x0D, 0xC8, 0xDD, 0x1A, 0xCD, 0x2B, 0xB4, 0x02, 0x57, 0x61, + 0x05, 0xAB, 0x3E, 0x2A, 0xA5, 0x00, 0x33, 0xD0, 0x27, 0xFF, 0xAD, 0x13, 0x8F, 0x04, 0xAC, 0xC2, + 0x05, 0x2F, 0xD7, 0x01, 0xC4, 0xE7, 0x02, 0x09, 0x5C, 0x08, 0x2D, 0x49, 0x27, 0xCF, 0xFF, 0xD5, + 0xD5, 0x1C, 0xCD, 0x5C, 0xE4, 0x18, 0xA8, 0x58, 0x0D, 0x1A, 0xA0, 0x97, 0xDB, 0x05, 0xA8, 0x00, + 0x27, 0xF0, 0x01, 0x1D, 0x21, 0x05, 0x7B, 0x9B, 0x28, 0x00, 0x5A, 0xF4, 0x6E, 0x1B, 0x46, 0xB7, + 0x59, 0x28, 0x00, 0x33, 0x43, 0x8B, 0x1B, 0x19, 0xC1, 0x9C, 0x28, 0x00, 0x0D, 0xD8, 0x0F, 0x29, + 0x01, 0xEB, 0xE5, 0x0F, 0x22, 0x16, 0x16, 0x40, 0x06, 0x12, 0x26, 0xA1, 0x44, 0x12, 0xE8, 0x8F, + 0x00, 0x11, 0x3F, 0x0D, 0x00, 0x48, 0xF1, 0x0F, 0x00, 0xB5, 0xB0, 0x5A, 0x14, 0xA0, 0x7A, 0x50, + 0x17, 0x44, 0x8B, 0x85, 0x24, 0x0C, 0xF4, 0x51, 0x60, 0x26, 0x01, 0xD2, 0x4E, 0x76, 0x16, 0x60, + 0xAE, 0x00, 0x16, 0x62, 0x00, 0xD5, 0x16, 0xC0, 0x47, 0x4F, 0x24, 0x08, 0xE9, 0xB8, 0x36, 0x02, + 0x28, 0x4E, 0x28, 0xE7, 0x06, 0x53, 0x1F, 0x38, 0x8D, 0x00, 0x81, 0x1B, 0x60, 0x23, 0x16, 0xF8, + 0x14, 0xDB, 0x19, 0xE0, 0x36, 0x92, 0x03, 0x37, 0x61, 0x19, 0xAB, 0xB4, 0x91, 0x05, 0xF4, 0x4E, + 0x0B, 0x50, 0xD5, 0x07, 0x17, 0x71, 0x2F, 0xD3, 0x01, 0x2B, 0xE4, 0x00, 0x26, 0xFF, 0x68, 0xD1, + 0x04, 0x16, 0x02, 0xD4, 0xE6, 0x1E, 0x0C, 0x73, 0xD6, 0x06, 0x01, 0x30, 0x02, 0x3E, 0x05, 0x17, + 0xF9, 0x61, 0x17, 0x0D, 0xAC, 0x14, 0x1E, 0xCA, 0x79, 0x49, 0x00, 0xEE, 0x0E, 0x08, 0xE1, 0x3F, + 0x2B, 0x14, 0xF9, 0x45, 0x2F, 0x09, 0x4E, 0xAB, 0x4F, 0xFF, 0xFF, 0xEE, 0x0C, 0xF3, 0xE4, 0x00, + 0x08, 0xF2, 0x45, 0x17, 0x44, 0xF1, 0x00, 0x39, 0xE0, 0x04, 0x00, 0xDC, 0xB6, 0x1A, 0xFB, 0x79, + 0x55, 0x11, 0x1A, 0xB7, 0x04, 0x2A, 0xFA, 0x6C, 0xF0, 0x87, 0x02, 0x03, 0x04, 0x38, 0xAE, 0x04, + 0xDF, 0x0C, 0xDA, 0x23, 0x03, 0xE2, 0x69, 0x07, 0x18, 0x6D, 0x31, 0x06, 0x02, 0xF3, 0x1D, 0x57, + 0xE9, 0x05, 0x00, 0x0B, 0xED, 0x4A, 0x62, 0x15, 0xB4, 0x8B, 0x58, 0x16, 0x82, 0x09, 0x08, 0x25, + 0x1F, 0xFE, 0x7C, 0x05, 0x13, 0x16, 0x7C, 0xD8, 0x14, 0x1D, 0x01, 0x49, 0x18, 0xCC, 0x11, 0xEB, + 0x47, 0x8C, 0x00, 0x05, 0xE8, 0xBF, 0x9F, 0x03, 0xFC, 0x42, 0x33, 0xF2, 0x0F, 0x54, 0xD7, 0x18, + 0x08, 0x91, 0xBC, 0x00, 0x4C, 0x4C, 0x31, 0x16, 0x16, 0x27, 0xC8, 0x45, 0x12, 0x87, 0xE7, 0x08, + 0x03, 0x5E, 0x94, 0x12, 0x83, 0x0E, 0x00, 0x29, 0x86, 0x4A, 0x8E, 0x35, 0x03, 0xE5, 0x43, 0x38, + 0x4E, 0x0E, 0xFD, 0xE5, 0x5D, 0x14, 0xD8, 0x6F, 0x61, 0x17, 0xCB, 0x7A, 0x65, 0x03, 0xD3, 0x05, + 0x15, 0xDB, 0x08, 0x22, 0x17, 0x41, 0xA4, 0x5D, 0x15, 0xA1, 0xE3, 0x70, 0x17, 0x71, 0xD4, 0x59, + 0x56, 0x68, 0x00, 0x00, 0x0E, 0xFC, 0xA7, 0x14, 0x16, 0x7E, 0x13, 0x01, 0x16, 0xC9, 0x91, 0x5D, + 0x02, 0xF7, 0x03, 0x25, 0xF2, 0x03, 0xCA, 0x2A, 0x01, 0x15, 0x67, 0x16, 0xD1, 0x04, 0x31, 0x03, + 0xEF, 0x3F, 0x56, 0x2F, 0x00, 0x00, 0x03, 0xF8, 0x64, 0x66, 0x24, 0x0C, 0xFB, 0x46, 0x47, 0x18, + 0x24, 0xAF, 0x94, 0x14, 0xC4, 0x75, 0x30, 0x18, 0x4E, 0x01, 0xDC, 0x14, 0x83, 0x92, 0x56, 0x18, + 0x78, 0xA6, 0x86, 0x02, 0xCF, 0x08, 0x48, 0xEE, 0x01, 0x00, 0xA1, 0x25, 0x47, 0x23, 0x09, 0xF9, + 0x4A, 0x05, 0x19, 0xCB, 0x28, 0xD8, 0x02, 0x9E, 0x3A, 0x39, 0x4D, 0x01, 0xF4, 0xCD, 0x02, 0x02, + 0xD3, 0x00, 0x2A, 0x7D, 0x1E, 0xDE, 0xD9, 0x03, 0x51, 0x8D, 0x1A, 0x47, 0x87, 0x04, 0x11, 0x06, + 0x17, 0x17, 0x2B, 0xDC, 0x71, 0xD4, 0x5B, 0x02, 0x87, 0x09, 0x1B, 0xA8, 0xC7, 0x52, 0x02, 0x53, + 0x07, 0x01, 0x4F, 0x05, 0x2F, 0xFC, 0x0C, 0xBC, 0x48, 0x01, 0x07, 0x40, 0x4C, 0x16, 0x05, 0x17, + 0x38, 0x1E, 0x94, 0x92, 0xD9, 0x07, 0x9A, 0x27, 0x0A, 0xD5, 0x57, 0x1F, 0x21, 0x90, 0x03, 0x00, + 0x0A, 0xE1, 0xF7, 0x14, 0x07, 0x38, 0x30, 0x1E, 0xAD, 0x7B, 0x4E, 0x0D, 0x0B, 0xE2, 0x2D, 0x7C, + 0xFF, 0x54, 0xDB, 0x06, 0x7D, 0x03, 0x1A, 0xF9, 0x54, 0x33, 0x1F, 0x10, 0xD6, 0x57, 0x03, 0x2E, + 0xF7, 0xFF, 0xDA, 0xF9, 0x27, 0x00, 0x24, 0x02, 0x98, 0x02, 0xE6, 0x03, 0x42, 0x15, 0x1F, 0x3C, + 0x6A, 0xA3, 0x02, 0x2E, 0xF6, 0x0F, 0x34, 0x91, 0x09, 0xDF, 0x33, 0x06, 0x16, 0x00, 0x2F, 0xEB, + 0x17, 0x16, 0x00, 0x00, 0x3D, 0xEE, 0x38, 0x00, 0x16, 0x00, 0x29, 0xFD, 0xAD, 0x06, 0x7B, 0x8A, + 0x14, 0xFF, 0xFC, 0xEA, 0xD2, 0xA6, 0x6D, 0x1A, 0x95, 0x00, 0x23, 0x14, 0x12, 0xF4, 0x13, 0x1B, + 0x6F, 0xE1, 0x56, 0x19, 0x38, 0xE4, 0xE8, 0x02, 0x13, 0x44, 0x0F, 0x12, 0x00, 0x20, 0x43, 0xF4, + 0x0E, 0x00, 0x09, 0xD3, 0x56, 0x1C, 0xA5, 0xF7, 0x54, 0x04, 0x67, 0x5E, 0x1C, 0x34, 0x93, 0x5E, + 0x1D, 0xCD, 0xA7, 0x75, 0x1C, 0x66, 0x99, 0x68, 0x2C, 0xF3, 0x0D, 0x85, 0x56, 0x06, 0x47, 0x4B, + 0x2C, 0x16, 0xFA, 0x0E, 0xDC, 0x1C, 0x78, 0x32, 0x5E, 0x2C, 0x03, 0xDF, 0x04, 0x17, 0x03, 0x4F, + 0x04, 0x16, 0xF2, 0xA4, 0x02, 0x1C, 0xB3, 0x77, 0x67, 0x2B, 0x1F, 0xFE, 0xD2, 0x6A, 0x04, 0x63, + 0x55, 0x06, 0x93, 0xBD, 0x2C, 0x06, 0xE9, 0x81, 0x56, 0x17, 0x57, 0x79, 0x29, 0x09, 0x84, 0xF8, + 0x1B, 0x94, 0xEB, 0xE9, 0x08, 0x52, 0x51, 0x1C, 0x92, 0x57, 0x02, 0x2C, 0x0B, 0xF1, 0x0E, 0x5F, + 0x03, 0x6A, 0x5B, 0x2C, 0xF0, 0x0A, 0x25, 0x4C, 0x14, 0x9A, 0x9A, 0x55, 0x3B, 0x02, 0x2C, 0xFF, + 0x01, 0x00, 0x2F, 0x24, 0x3C, 0x12, 0x00, 0x34, 0x76, 0x00, 0x00, 0x12, 0x0F, 0x37, 0x02, 0xF5, + 0x47, 0x02, 0x72, 0x01, 0x2D, 0x5C, 0x76, 0x7C, 0x7C, 0x7C, 0xAE, 0x37, 0x37, 0x07, 0x7E, 0xE4, + 0x13, 0x1A, 0x15, 0x04, 0x38, 0xB7, 0x18, 0x88, 0x45, 0x0C, 0x03, 0x0F, 0x00, 0x19, 0xDB, 0x0F, + 0x00, 0x15, 0x1A, 0x01, 0x18, 0x27, 0x9C, 0x50, 0x32, 0xB9, 0x19, 0x60, 0x07, 0x58, 0x04, 0xB3, + 0xC1, 0x1A, 0x6E, 0x40, 0x04, 0x03, 0x49, 0x07, 0x03, 0xBD, 0x8F, 0x2A, 0x00, 0x77, 0x96, 0xDE, + 0x1A, 0x78, 0x4B, 0x09, 0x0F, 0x0F, 0x00, 0x38, 0x1A, 0x79, 0x0F, 0x00, 0x1A, 0x7A, 0x0F, 0x00, + 0x03, 0x2B, 0x06, 0x1A, 0xAF, 0x19, 0xDF, 0x18, 0xA0, 0x36, 0x53, 0x06, 0xC3, 0x09, 0x19, 0xB2, + 0xED, 0x02, 0x27, 0x04, 0xE8, 0xDF, 0x18, 0x23, 0x0B, 0x24, 0x5A, 0x2D, 0x27, 0xDD, 0x01, 0x12, + 0x77, 0x04, 0x12, 0x05, 0x1A, 0xB4, 0x81, 0x9B, 0x02, 0x0F, 0x00, 0x2A, 0xF6, 0x5C, 0x3F, 0x77, + 0x39, 0xFF, 0x8C, 0x01, 0x0F, 0x00, 0x03, 0x0C, 0x5D, 0x23, 0x05, 0x1C, 0x9F, 0x07, 0x13, 0xE3, + 0x56, 0x0B, 0x2A, 0x03, 0xE5, 0x97, 0x03, 0x1A, 0xB0, 0xED, 0x5C, 0x1A, 0x93, 0xA3, 0x6D, 0x1A, + 0x85, 0x6A, 0xCD, 0x1A, 0x7D, 0x79, 0xBE, 0x1F, 0x7A, 0x2C, 0x01, 0x03, 0x0F, 0x95, 0x01, 0x46, + 0x1A, 0xB5, 0xFE, 0x01, 0x04, 0xFD, 0x0E, 0x1A, 0x73, 0x3D, 0x6E, 0x03, 0x59, 0x22, 0x1A, 0xDA, + 0x9D, 0x5A, 0x2A, 0xFE, 0x13, 0x2C, 0xF0, 0x21, 0xB9, 0x2E, 0x12, 0xE9, 0x2A, 0x0B, 0xFC, 0xB2, + 0x02, 0x1A, 0xBB, 0x0F, 0x00, 0x29, 0x3A, 0xFD, 0x0F, 0x00, 0x39, 0x00, 0x63, 0xFA, 0x0F, 0x00, + 0x58, 0x00, 0x20, 0x7E, 0xC5, 0xF3, 0xCC, 0x78, 0x00, 0x52, 0x00, 0x30, 0x10, 0x10, 0x10, 0xC8, + 0x0E, 0x22, 0x0D, 0x07, 0x60, 0xCC, 0x12, 0x6B, 0x8C, 0xA9, 0x02, 0x80, 0x09, 0x13, 0xDB, 0x07, + 0x00, 0x1F, 0x6E, 0x07, 0x00, 0x01, 0x18, 0x6F, 0x07, 0x00, 0x13, 0xDA, 0x07, 0x00, 0x1F, 0x70, + 0x07, 0x00, 0x01, 0x18, 0x71, 0x07, 0x00, 0x13, 0xD9, 0x07, 0x00, 0x1F, 0x72, 0x07, 0x00, 0x08, + 0x18, 0x73, 0x07, 0x00, 0x13, 0xD8, 0x07, 0x00, 0x1F, 0x74, 0x07, 0x00, 0x01, 0x18, 0x75, 0x07, + 0x00, 0x13, 0xD7, 0x07, 0x00, 0x1F, 0x76, 0x07, 0x00, 0x01, 0x18, 0x77, 0x07, 0x00, 0x1A, 0xD6, + 0x07, 0x00, 0x1F, 0x78, 0x07, 0x00, 0x01, 0x18, 0x79, 0x07, 0x00, 0x13, 0xD5, 0x07, 0x00, 0x1F, + 0x7A, 0x07, 0x00, 0x01, 0x18, 0x7B, 0x07, 0x00, 0x13, 0xD4, 0x07, 0x00, 0x1F, 0x7C, 0x07, 0x00, + 0x08, 0x00, 0x1E, 0x5C, 0x03, 0xB4, 0x04, 0x7B, 0x5A, 0x7C, 0x7C, 0x7C, 0x72, 0x56, 0x20, 0x2E, + 0xF0, 0x3A, 0xD4, 0x64, 0x01, 0x3D, 0xF0, 0x1B, 0x90, 0x4C, 0xF0, 0x1A, 0x41, 0x0F, 0x00, 0x01, + 0xED, 0x3B, 0x49, 0x6C, 0x9F, 0xD2, 0xFF, 0x14, 0xDC, 0x29, 0x01, 0x90, 0x8A, 0x68, 0x2A, 0x00, + 0x25, 0x23, 0x30, 0x2A, 0x03, 0xFB, 0x5C, 0x08, 0x1A, 0xEC, 0xC2, 0xF3, 0x1A, 0xE6, 0xA8, 0xDE, + 0x1A, 0xE5, 0x2F, 0x17, 0x1F, 0xE4, 0x0F, 0x00, 0x4D, 0x1A, 0x49, 0x19, 0xA2, 0x1A, 0x4C, 0x3B, + 0xC5, 0x1A, 0x52, 0x36, 0x09, 0x1A, 0x63, 0x80, 0x5E, 0x04, 0xFC, 0x9F, 0x1A, 0x5E, 0xD7, 0xF2, + 0x13, 0x15, 0x0F, 0x03, 0x3A, 0x79, 0x1C, 0x08, 0xF5, 0xE5, 0x02, 0xE6, 0x73, 0x2A, 0x06, 0xA8, + 0xF5, 0x73, 0x37, 0x01, 0x81, 0xFD, 0x0F, 0x00, 0x29, 0x09, 0xB2, 0x1E, 0x00, 0x19, 0x93, 0x3C, + 0x00, 0x14, 0x19, 0xCD, 0xA1, 0x27, 0x13, 0x03, 0xC1, 0x42, 0x19, 0xB6, 0x35, 0xED, 0x2A, 0xFF, + 0x7F, 0x74, 0x07, 0x1A, 0x61, 0xF4, 0x12, 0x1A, 0x51, 0xED, 0x8B, 0x1E, 0x4B, 0x0E, 0x01, 0x0F, + 0x77, 0x01, 0x4B, 0x0B, 0xE0, 0x01, 0x19, 0xE8, 0x39, 0x72, 0x04, 0xF3, 0x47, 0x1A, 0x40, 0x5C, + 0xDC, 0x1A, 0x36, 0xA1, 0xBD, 0x00, 0x78, 0x58, 0x33, 0x02, 0x0B, 0x3E, 0xE6, 0x67, 0x29, 0xFD, + 0x06, 0xA3, 0x02, 0x1A, 0xD4, 0xB2, 0x02, 0x19, 0x8A, 0x0F, 0x00, 0x28, 0xEE, 0x19, 0x0F, 0x00, + 0x26, 0xED, 0x3F, 0xEE, 0x02, 0x33, 0xEC, 0xB8, 0x6D, 0xBB, 0x1B, 0x4A, 0x0C, 0x10, 0x10, 0x10, + 0xF1, 0x0A, 0x46, 0x19, 0x17, 0x0A, 0x01, 0x47, 0x5A, 0x17, 0x01, 0x34, 0xEE, 0x06, 0xD7, 0x58, + 0x55, 0x86, 0xE8, 0xFF, 0xDF, 0x95, 0xA7, 0x43, 0x03, 0xCA, 0x11, 0x13, 0x48, 0xDE, 0x00, 0x11, + 0xB2, 0xED, 0x43, 0x31, 0x05, 0x87, 0xF8, 0xC1, 0x3F, 0x16, 0x6C, 0x8B, 0x23, 0x96, 0xBB, 0x55, + 0x16, 0x41, 0xCE, 0xFF, 0xFF, 0xF0, 0x2D, 0xCB, 0x7F, 0x09, 0x44, 0x3F, 0x3E, 0x01, 0x02, 0xC4, + 0x16, 0x00, 0x00, 0x95, 0x52, 0x86, 0x19, 0xE5, 0xFF, 0xFD, 0x96, 0x2A, 0x10, 0x52, 0xE9, 0x00, + 0x11, 0xFC, 0xC0, 0x3E, 0x22, 0x38, 0xE4, 0x86, 0x0C, 0x22, 0x33, 0xAD, 0x65, 0x00, 0x13, 0xE9, + 0x66, 0x03, 0x05, 0x32, 0x09, 0x8E, 0x27, 0x8F, 0xD8, 0xFF, 0xE2, 0x88, 0x11, 0x00, 0x01, 0x00, + 0x06, 0xD6, 0x00, 0x22, 0x13, 0x0F, 0xD8, 0xDC, 0x28, 0x0D, 0x34, 0x01, 0x00, 0x1A, 0x2C, 0x13, + 0x09, 0x55, 0xD8, 0x3C, 0xFF, 0xCA, 0x90, 0x01, 0x00, 0x36, 0xF8, 0xD8, 0x3C, 0xC4, 0x76, 0x3F, + 0x00, 0x00, 0xEC, 0x0F, 0x00, 0xFF, 0xB3, 0x25, 0xE1, 0xC0, 0x01, 0x00, 0x2B, 0xFB, 0xD8, 0xFE, + 0x01, 0x04, 0x4A, 0x06, 0x00, 0xA7, 0x0A, 0x04, 0xE8, 0x1F, 0x52, 0x06, 0x04, 0x13, 0x01, 0x00, + 0xC4, 0x5A, 0xF0, 0x1F, 0x5E, 0xC4, 0xFF, 0xFF, 0x4B, 0xB3, 0xFF, 0xFF, 0x38, 0xA1, 0xFF, 0xFF, + 0x25, 0x90, 0xFF, 0xFF, 0x12, 0x7F, 0xFF, 0xFD, 0x02, 0x6E, 0xFF, 0xEB, 0x00, 0x5D, 0xFF, 0xD8, + 0x00, 0x4C, 0xFF, 0xC5, 0x00, 0x3B, 0xFF, 0xB2, 0x00, 0x2A, 0xFF, 0x9F, 0x00, 0x19, 0xFF, 0x8B, + 0x00, 0x08, 0xBA, 0x16, 0xF0, 0x04, 0xF7, 0x65, 0x00, 0x00, 0xE6, 0x52, 0x00, 0x00, 0x04, 0x02, + 0x00, 0xE1, 0xFC, 0xFC, 0x4B, 0xE4, 0xFF, 0xFF, 0x4C, 0x04, 0x00, 0x40, 0x09, 0x08, 0x08, 0x01, + 0x47, 0x0C, 0xF1, 0x2C, 0x8A, 0xFC, 0xFC, 0x36, 0x86, 0xFC, 0xFC, 0x3D, 0x8C, 0xFF, 0xFF, 0x0C, + 0x88, 0xFF, 0xFF, 0x11, 0x8C, 0xFF, 0xDD, 0x00, 0x88, 0xFF, 0xE4, 0x00, 0x8C, 0xFF, 0xB0, 0x00, + 0x88, 0xFF, 0xB7, 0x00, 0x8C, 0xFF, 0x84, 0x00, 0x88, 0xFF, 0x89, 0x00, 0x8C, 0xFF, 0x57, 0x00, + 0x88, 0xFF, 0x5C, 0x00, 0x8C, 0xFF, 0x2B, 0x00, 0x88, 0xFF, 0x2F, 0x00, 0x03, 0x04, 0x01, 0x04, + 0x00, 0x25, 0x0C, 0x0C, 0xD6, 0xC2, 0x10, 0x56, 0xB8, 0x17, 0x42, 0xA6, 0xFC, 0xF9, 0x08, 0xAB, + 0x0A, 0x53, 0x34, 0x00, 0xD0, 0xFF, 0xDC, 0xC1, 0x12, 0x32, 0x0D, 0x02, 0xF7, 0x5E, 0x09, 0x52, + 0xCA, 0xFF, 0xE4, 0x00, 0x20, 0xA5, 0x0A, 0x40, 0x01, 0xF1, 0xFF, 0xBC, 0x6D, 0x9F, 0x31, 0x64, + 0x00, 0x11, 0x38, 0xAE, 0x00, 0xFF, 0x48, 0x36, 0xFE, 0x5D, 0x13, 0x0C, 0x01, 0xD1, 0x5B, 0x07, + 0x50, 0x9C, 0xFF, 0xFF, 0x7E, 0x50, 0xD3, 0xFF, 0xF4, 0x50, 0x1C, 0x05, 0x12, 0x53, 0x29, 0x00, + 0xD8, 0xFF, 0xD5, 0x0F, 0x44, 0x53, 0x0C, 0x01, 0xF5, 0xFF, 0xB7, 0x9D, 0x12, 0x02, 0x40, 0x00, + 0x26, 0x52, 0x1E, 0x3C, 0x00, 0x30, 0x51, 0x0A, 0x59, 0xDF, 0xFE, 0x60, 0x95, 0xFF, 0xFF, 0x85, + 0x50, 0x19, 0xFB, 0x17, 0x32, 0x83, 0x00, 0x81, 0x6D, 0x0D, 0x10, 0x4A, 0xBA, 0x05, 0x12, 0xA2, + 0xC8, 0x16, 0x10, 0x6C, 0xED, 0x13, 0x33, 0xC4, 0xFF, 0xED, 0x04, 0x43, 0x32, 0x1D, 0x00, 0xE5, + 0xD7, 0x0D, 0x53, 0xAF, 0xFF, 0xF9, 0x03, 0x09, 0x1F, 0x14, 0x52, 0xD0, 0xFF, 0xD9, 0x00, 0x28, + 0x7D, 0x26, 0x54, 0x0C, 0x0B, 0x18, 0x00, 0xFE, 0xEE, 0x00, 0x16, 0x4C, 0x90, 0x75, 0x16, 0x9C, + 0x07, 0x14, 0x13, 0x9C, 0x42, 0x57, 0xC4, 0x2B, 0xA9, 0xE8, 0xFE, 0xFF, 0xDF, 0x7A, 0x03, 0x00, + 0x00, 0x39, 0xF7, 0x3B, 0x73, 0xC2, 0x01, 0xCF, 0xFF, 0xFF, 0xC6, 0x5A, 0x7D, 0xFE, 0xFF, 0xFE, + 0x25, 0x1C, 0xE3, 0x15, 0x52, 0xAC, 0xFF, 0xFF, 0x72, 0x36, 0x19, 0x74, 0x52, 0x74, 0xFF, 0xFF, + 0x96, 0x24, 0xAB, 0x12, 0xA6, 0x2A, 0x4A, 0x1B, 0x01, 0x02, 0xEC, 0xFF, 0xFF, 0xFB, 0x52, 0xE9, + 0x0A, 0x21, 0xFD, 0x6F, 0x02, 0x02, 0x11, 0x02, 0x69, 0x21, 0x11, 0x95, 0xB0, 0x13, 0x11, 0x05, + 0xC5, 0x0B, 0x11, 0xAC, 0x6C, 0x5D, 0x27, 0x01, 0x78, 0x5E, 0x0E, 0x23, 0x55, 0xFA, 0x90, 0x13, + 0x12, 0x0A, 0xCE, 0x86, 0x52, 0xB3, 0x21, 0xA6, 0xDB, 0xDE, 0x3B, 0x5D, 0x21, 0xEC, 0x29, 0x31, + 0xC9, 0x00, 0xB5, 0x0A, 0x31, 0xFD, 0x04, 0xF1, 0x57, 0x15, 0x10, 0x77, 0xE1, 0x74, 0x70, 0x96, + 0xFF, 0xFF, 0xEA, 0x65, 0x61, 0xE7, 0x67, 0x10, 0x13, 0x15, 0x46, 0x0D, 0xB3, 0xD9, 0x11, 0x00, + 0x00, 0x12, 0x8E, 0xDD, 0xFD, 0xFF, 0xEE, 0x96, 0xC1, 0x05, 0x25, 0x34, 0xCF, 0xDD, 0x22, 0x11, + 0x34, 0x8C, 0x13, 0x24, 0x17, 0x17, 0xFC, 0x01, 0x61, 0x52, 0xC4, 0xF2, 0xF9, 0xDB, 0x88, 0x04, + 0x38, 0x3B, 0xEA, 0xFC, 0x5B, 0x00, 0x85, 0x11, 0xB4, 0xDE, 0x5D, 0x27, 0xFE, 0x15, 0x67, 0xEC, + 0x31, 0x81, 0x5E, 0xE3, 0xC7, 0x08, 0x35, 0x84, 0xFF, 0xC8, 0x27, 0x05, 0x31, 0xF7, 0xFF, 0xDC, + 0xF3, 0x0B, 0x10, 0x5D, 0x51, 0x73, 0x05, 0xEE, 0xEB, 0x11, 0x0B, 0x12, 0x0F, 0x10, 0x6A, 0xBB, + 0x14, 0x17, 0x1A, 0xDE, 0x0F, 0x11, 0x0C, 0x17, 0x00, 0x10, 0x69, 0x4E, 0x1B, 0x35, 0x62, 0xFF, + 0xE9, 0x98, 0x00, 0x41, 0x03, 0xFC, 0xFF, 0xD6, 0xA2, 0x1F, 0x38, 0x63, 0x00, 0xAC, 0x6F, 0x6E, + 0xDD, 0xD2, 0xFF, 0xFE, 0x35, 0x0E, 0xC7, 0xFF, 0xFF, 0x38, 0x05, 0xF2, 0xFF, 0x56, 0xE6, 0x6D, + 0xF0, 0x03, 0xD5, 0x03, 0x40, 0xFF, 0xFC, 0x11, 0x01, 0x62, 0xCC, 0xF5, 0xF5, 0xCE, 0x68, 0x01, + 0x00, 0x00, 0x04, 0x94, 0x55, 0x02, 0x87, 0xD2, 0x29, 0x00, 0x8A, 0xFF, 0xC2, 0x00, 0x6C, 0xF1, + 0x4B, 0x30, 0x15, 0x44, 0x4C, 0x8A, 0x61, 0xD8, 0xD4, 0xFF, 0x78, 0x01, 0xE2, 0xFF, 0xFA, 0x70, + 0x6D, 0xF8, 0xFF, 0xEE, 0x04, 0xB4, 0x65, 0x21, 0x2E, 0x1C, 0x27, 0x0C, 0x18, 0xAF, 0xFF, 0x64, + 0x51, 0x68, 0xFF, 0xE4, 0x01, 0x34, 0xDD, 0x14, 0x18, 0x97, 0xCB, 0x12, 0x51, 0xB2, 0xFF, 0x9A, + 0x00, 0x38, 0xBD, 0x0D, 0x17, 0x95, 0xA4, 0x5F, 0x61, 0x08, 0xF5, 0xFF, 0x50, 0x00, 0x34, 0xBD, + 0x24, 0x17, 0x98, 0x9B, 0x67, 0x61, 0x46, 0xFF, 0xFA, 0x0D, 0x00, 0x19, 0x35, 0x3A, 0x17, 0xB6, + 0x47, 0x1B, 0x11, 0x90, 0xA1, 0x0E, 0x96, 0xDA, 0xFF, 0xFE, 0x6D, 0x6A, 0xFB, 0xFF, 0xE7, 0x02, + 0x1C, 0x7B, 0x16, 0x72, 0x05, 0x2F, 0x17, 0x6D, 0x32, 0x12, 0x01, 0xCE, 0x46, 0x61, 0x59, 0xCB, + 0xF8, 0xF9, 0xCF, 0x63, 0x4E, 0x02, 0x43, 0x0E, 0x0C, 0x13, 0x01, 0xD0, 0x01, 0x51, 0xB6, 0xF0, + 0xF5, 0xCA, 0x62, 0x0D, 0x00, 0x26, 0x38, 0xF9, 0x58, 0x29, 0x61, 0xC3, 0xFF, 0xFF, 0x9C, 0x65, + 0xEF, 0x15, 0x13, 0x71, 0x06, 0xFC, 0xFF, 0xF7, 0x06, 0x00, 0x9D, 0xB5, 0x47, 0x10, 0x09, 0x93, + 0x22, 0x22, 0x00, 0xB6, 0xE9, 0xA1, 0x62, 0xD7, 0xFF, 0xFF, 0x1D, 0x09, 0xF2, 0x87, 0x3A, 0x53, + 0x7C, 0xFF, 0xFF, 0x6A, 0x68, 0x1D, 0x52, 0x85, 0x0F, 0xEA, 0xFF, 0xCE, 0xE6, 0xFF, 0xBB, 0x04, + 0x5D, 0x5A, 0x25, 0xCE, 0x0F, 0x98, 0x11, 0xA2, 0xFE, 0x1F, 0x00, 0x00, 0x29, 0x30, 0x2D, 0x00, + 0x43, 0xFD, 0xB1, 0x0E, 0xF0, 0x0D, 0xE9, 0xFF, 0xE3, 0x0B, 0xE5, 0xFF, 0xF5, 0xC7, 0xFF, 0xFC, + 0x2F, 0x12, 0xFF, 0xFF, 0xC1, 0x62, 0xFF, 0xFF, 0x91, 0x2A, 0xFB, 0xFF, 0xC7, 0x48, 0xFF, 0xFF, + 0x83, 0xA6, 0x1E, 0x01, 0x80, 0x88, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0x2D, 0xC8, 0x2E, 0x10, 0x21, + 0x0B, 0xE0, 0x9A, 0x09, 0x11, 0xBA, 0xE9, 0x0A, 0x00, 0x31, 0x0E, 0x81, 0x8D, 0x04, 0x78, 0xFF, + 0xFF, 0xCB, 0x52, 0x8B, 0xED, 0x09, 0x22, 0xE9, 0x0C, 0x82, 0x1B, 0xF2, 0x04, 0xEE, 0x7B, 0xFA, + 0xFF, 0xF8, 0x00, 0x14, 0x96, 0xE6, 0xFD, 0xE4, 0xA1, 0x20, 0x00, 0x3B, 0xD0, 0xF6, 0x08, 0x04, + 0xF0, 0x04, 0x51, 0x5F, 0xFC, 0xFC, 0x53, 0x60, 0x83, 0x1F, 0xF2, 0x0C, 0xFD, 0x07, 0x60, 0xFF, + 0xDA, 0x00, 0x60, 0xFF, 0xB2, 0x00, 0x60, 0xFF, 0x89, 0x00, 0x60, 0xFF, 0x61, 0x00, 0x02, 0x04, + 0x02, 0x00, 0x08, 0x06, 0x17, 0x01, 0xFC, 0x91, 0x02, 0x31, 0x5A, 0xC7, 0xD6, 0xFB, 0x1D, 0x91, + 0xE0, 0x00, 0x2E, 0xFE, 0xFF, 0xF3, 0x5F, 0x00, 0x92, 0xA2, 0x7B, 0x10, 0xDE, 0x85, 0x00, 0x11, + 0x10, 0x21, 0x1F, 0x41, 0x30, 0xFF, 0xFF, 0xD9, 0x8A, 0x15, 0x11, 0xC7, 0xF8, 0x0D, 0x11, 0xBD, + 0xB1, 0x0A, 0x11, 0xB6, 0xC9, 0x18, 0x1A, 0xB4, 0x06, 0x00, 0x11, 0x5E, 0x4E, 0x0E, 0x11, 0x56, + 0x52, 0x10, 0x11, 0x48, 0x30, 0x00, 0x11, 0x32, 0x3C, 0x00, 0x12, 0x12, 0xDA, 0xD4, 0x11, 0xE0, + 0x03, 0x04, 0x11, 0x93, 0xFE, 0x03, 0x51, 0x30, 0xFF, 0xFF, 0xF2, 0x5D, 0x8F, 0x04, 0xD0, 0xE0, + 0x00, 0x00, 0x01, 0x5D, 0xCB, 0xD9, 0x00, 0x00, 0x07, 0x07, 0x17, 0x00, 0x94, 0x00, 0x42, 0x3B, + 0xEA, 0xAA, 0x2A, 0x97, 0x14, 0xE2, 0xF7, 0x39, 0x00, 0x00, 0x14, 0x9C, 0xFF, 0xFF, 0xD2, 0x01, + 0x00, 0x00, 0x02, 0xD2, 0x67, 0x6F, 0x12, 0x83, 0xCC, 0x0A, 0x12, 0x53, 0xB8, 0x0A, 0x12, 0x35, + 0xAF, 0xA1, 0x12, 0x23, 0x45, 0x78, 0x10, 0x1A, 0x9C, 0xA0, 0x02, 0xF8, 0x7C, 0x12, 0x03, 0x6E, + 0x1F, 0x12, 0x07, 0x70, 0x14, 0x12, 0x08, 0x07, 0x00, 0x11, 0x07, 0x8B, 0x00, 0x00, 0x1C, 0x00, + 0x03, 0x2A, 0x00, 0x12, 0x25, 0x38, 0x00, 0x12, 0x37, 0x71, 0x59, 0x12, 0x52, 0x0D, 0x0F, 0x11, + 0x83, 0xA0, 0x4C, 0x00, 0x2C, 0xC1, 0x41, 0x37, 0x00, 0x13, 0x9A, 0xCC, 0x19, 0x00, 0x8C, 0x00, + 0x63, 0x38, 0x00, 0x00, 0x3C, 0xEE, 0xAE, 0xB2, 0x1A, 0x43, 0x0A, 0x09, 0x09, 0x01, 0x15, 0x09, + 0x20, 0xE8, 0xFC, 0xB5, 0x1B, 0xF4, 0x04, 0x12, 0x0B, 0x00, 0xD1, 0xFF, 0x55, 0x00, 0x1C, 0x00, + 0x7F, 0xE8, 0x6B, 0xBC, 0xFF, 0x60, 0xAB, 0xF5, 0x0E, 0xB7, 0x39, 0xDE, 0xE1, 0x01, 0x38, 0xB2, + 0xFF, 0xFF, 0xF3, 0x71, 0x15, 0x00, 0x00, 0x05, 0xCA, 0xFF, 0xEA, 0x0F, 0x4A, 0xF0, 0x00, 0x86, + 0xFF, 0xCD, 0x4F, 0xFF, 0xEE, 0x1D, 0x00, 0x01, 0x8D, 0xFC, 0x51, 0x01, 0xD1, 0xD7, 0xE0, 0x09, + 0x42, 0x27, 0x02, 0x00, 0x23, 0x51, 0x62, 0x55, 0x0A, 0x0A, 0x0B, 0x00, 0x04, 0xFC, 0x25, 0x15, + 0x53, 0x08, 0x24, 0x1F, 0x54, 0x0A, 0x00, 0x04, 0x11, 0x5F, 0x8B, 0x25, 0x55, 0xFE, 0xFC, 0xFC, + 0xD1, 0x60, 0xC6, 0x0A, 0xAF, 0x1E, 0x50, 0x50, 0x50, 0xFE, 0xFF, 0x8A, 0x50, 0x50, 0x43, 0x3C, + 0x00, 0x0B, 0x01, 0x35, 0x11, 0x03, 0x9F, 0x43, 0x53, 0x05, 0x05, 0x07, 0x00, 0xFC, 0xB8, 0x23, + 0x10, 0x2C, 0x78, 0x1E, 0x02, 0x05, 0x00, 0x00, 0x97, 0x04, 0xD0, 0x1D, 0x00, 0x22, 0xDA, 0xD5, + 0x00, 0x00, 0xC4, 0xDF, 0x31, 0x00, 0x00, 0x21, 0x3C, 0x4E, 0x40, 0x08, 0x07, 0x04, 0x01, 0xAE, + 0x00, 0x20, 0x30, 0x48, 0x01, 0x00, 0x12, 0x0B, 0x93, 0x0C, 0x13, 0x24, 0x07, 0x00, 0x02, 0x89, + 0x42, 0x41, 0x01, 0x05, 0x04, 0x03, 0x6B, 0x03, 0x08, 0x90, 0x07, 0x37, 0x0A, 0x09, 0x13, 0x34, + 0x0A, 0x22, 0xC6, 0xFC, 0x01, 0x05, 0x23, 0x16, 0xFE, 0x87, 0x69, 0x14, 0x5D, 0xBE, 0x65, 0x13, + 0xA7, 0x55, 0x20, 0x23, 0x04, 0xEE, 0x5B, 0x6A, 0x14, 0x3B, 0x8B, 0x65, 0x14, 0x86, 0xBB, 0x80, + 0x13, 0xD0, 0x2F, 0x6B, 0x14, 0x1B, 0x06, 0x14, 0x43, 0x64, 0xFF, 0xE4, 0x01, 0xD9, 0x18, 0x02, + 0x31, 0x15, 0x23, 0x06, 0xF3, 0x12, 0x54, 0x10, 0x43, 0x59, 0x04, 0x02, 0x02, 0x4A, 0x14, 0xBB, + 0x51, 0x7B, 0x02, 0x3F, 0x91, 0x14, 0x22, 0xCF, 0x17, 0x13, 0x6B, 0x26, 0x12, 0x44, 0x00, 0xB5, + 0xFF, 0x93, 0xFF, 0x65, 0x03, 0xCE, 0x0C, 0x23, 0x0C, 0x0B, 0x40, 0x04, 0xB3, 0x02, 0x66, 0xC7, + 0xF2, 0xF8, 0xD5, 0x84, 0x0D, 0x00, 0x00, 0x01, 0x6C, 0x1E, 0x20, 0xD5, 0x10, 0x6C, 0x18, 0x40, + 0xFD, 0x7D, 0x63, 0xE8, 0x78, 0x18, 0x11, 0xAC, 0xE2, 0x0E, 0x40, 0x66, 0xFF, 0xFF, 0xEC, 0x8D, + 0x1A, 0x12, 0x79, 0xED, 0x63, 0x21, 0x1E, 0xEC, 0x18, 0x19, 0x00, 0xC0, 0x59, 0x21, 0x30, 0xEC, + 0x17, 0x21, 0x1F, 0x30, 0x0B, 0x00, 0x36, 0x04, 0x58, 0x00, 0x11, 0xDC, 0x07, 0x21, 0x00, 0xC8, + 0x17, 0x21, 0x1F, 0xAC, 0x49, 0x12, 0x10, 0x72, 0x17, 0x64, 0x00, 0x95, 0x19, 0x30, 0x7C, 0x62, + 0xEB, 0xEE, 0x06, 0x13, 0x01, 0xA2, 0xE8, 0xB2, 0xD4, 0x0F, 0x00, 0x00, 0x02, 0x63, 0xC8, 0xF5, + 0xFB, 0xD8, 0x84, 0xB5, 0x15, 0x33, 0x0C, 0x07, 0x13, 0x51, 0x05, 0x70, 0x02, 0x84, 0xFC, 0xFC, + 0x86, 0x01, 0x47, 0xA7, 0x1D, 0x12, 0x88, 0xFE, 0x18, 0x21, 0x88, 0xEC, 0x48, 0x1E, 0x52, 0x88, + 0x8E, 0x5B, 0x1A, 0xCC, 0x8D, 0x11, 0x0F, 0x07, 0x00, 0x4F, 0x05, 0x6C, 0x01, 0x85, 0x01, 0x5D, + 0xC2, 0xEF, 0xFA, 0xDF, 0x9B, 0x20, 0x2D, 0x22, 0x31, 0xFF, 0xF0, 0x2C, 0xED, 0x00, 0x30, 0x9A, + 0x5D, 0xD3, 0xCE, 0x19, 0x11, 0x8D, 0xC9, 0x34, 0x00, 0x38, 0x20, 0x21, 0x15, 0xB7, 0xDE, 0x1D, + 0x00, 0xC2, 0x17, 0x21, 0x39, 0xC7, 0x55, 0x0F, 0x00, 0x41, 0x10, 0x52, 0x3A, 0x39, 0x48, 0x48, + 0x24, 0xFE, 0x29, 0x01, 0xCE, 0x23, 0x01, 0x0E, 0xF1, 0x16, 0xD0, 0x4F, 0x1E, 0x02, 0x76, 0xD9, + 0x51, 0x2C, 0xFB, 0xFF, 0xFF, 0xBF, 0x71, 0x00, 0x65, 0x03, 0xC7, 0xFF, 0xFF, 0xF4, 0x22, 0x52, + 0x17, 0x02, 0xFF, 0x7C, 0x73, 0x1C, 0xF2, 0xFF, 0xFF, 0xBD, 0x02, 0x00, 0x9F, 0x82, 0x25, 0xF3, + 0x20, 0xC0, 0xF0, 0x02, 0x0A, 0x09, 0x22, 0x10, 0xE6, 0x7C, 0x53, 0x03, 0xAF, 0x1B, 0x10, 0x67, + 0x0B, 0x03, 0x14, 0x36, 0x93, 0x0E, 0x00, 0x3B, 0x13, 0x07, 0x0B, 0x00, 0x27, 0x00, 0x00, 0x44, + 0x0A, 0x70, 0x0B, 0x7B, 0xD0, 0xF5, 0xF7, 0xD6, 0x89, 0x0F, 0x00, 0x13, 0x0D, 0x2A, 0x10, 0x21, + 0xE2, 0x1B, 0x5C, 0x4B, 0x41, 0xF1, 0x6B, 0x67, 0xE4, 0x71, 0x1F, 0x11, 0xDE, 0xCA, 0x00, 0x62, + 0x64, 0xFF, 0xFF, 0xF7, 0x03, 0x04, 0x88, 0x21, 0x00, 0xA0, 0x22, 0x62, 0x1C, 0x07, 0xC8, 0xC8, + 0xC8, 0x3C, 0x1C, 0x42, 0x03, 0x13, 0x81, 0x25, 0x00, 0x73, 0x03, 0x80, 0x35, 0x47, 0x78, 0xF0, + 0x95, 0x72, 0x65, 0xF4, 0xFF, 0xFF, 0xE9, 0x44, 0x00, 0x0C, 0x00, 0x24, 0xFF, 0xA9, 0x32, 0xAE, + 0x27, 0x37, 0xE1, 0x7F, 0x51, 0x10, 0x6F, 0x6A, 0x23, 0x52, 0x02, 0x28, 0x28, 0x28, 0x0C, 0x3F, + 0x02, 0x22, 0x12, 0x08, 0xA2, 0x1F, 0x00, 0x11, 0x22, 0x10, 0x1E, 0xB9, 0x9B, 0x12, 0x6A, 0xC6, + 0x19, 0x10, 0x0A, 0xB2, 0x1F, 0x20, 0xB6, 0x03, 0x1C, 0x06, 0x12, 0xDB, 0x37, 0x16, 0x22, 0xDF, + 0xD3, 0x84, 0x1E, 0x13, 0x09, 0x76, 0x23, 0x10, 0xD6, 0xBD, 0x11, 0x88, 0x0A, 0x7E, 0xD3, 0xF8, + 0xFB, 0xD8, 0x87, 0x0E, 0xEC, 0x00, 0x00, 0x80, 0x0A, 0x33, 0xFC, 0xFC, 0xFC, 0x74, 0x1C, 0x26, + 0x03, 0xDD, 0x81, 0x14, 0x17, 0x53, 0x8D, 0x14, 0x34, 0xC6, 0xFF, 0xF9, 0x0C, 0x00, 0x44, 0x3A, + 0xFF, 0xFF, 0xAA, 0x0C, 0x00, 0x43, 0xAD, 0xFF, 0xDB, 0x71, 0x0C, 0x00, 0x53, 0x23, 0xFE, 0xFF, + 0x7D, 0x70, 0x0C, 0x00, 0x43, 0x93, 0xFF, 0xFF, 0x21, 0x0C, 0x00, 0x53, 0x12, 0xF5, 0xFF, 0xC1, + 0x00, 0x0C, 0x00, 0x10, 0x7A, 0x45, 0x18, 0x02, 0x0C, 0x00, 0x20, 0x07, 0xE7, 0x4F, 0x63, 0x02, + 0x0C, 0x00, 0xC7, 0x24, 0xFF, 0xFF, 0xF2, 0xBC, 0xBC, 0xDA, 0xFF, 0xFF, 0xEC, 0xBC, 0x88, 0x26, + 0x6D, 0x18, 0xB8, 0x0C, 0x00, 0x11, 0x01, 0xB3, 0x04, 0x65, 0x73, 0xFF, 0xFF, 0xB6, 0x04, 0x03, + 0x35, 0x09, 0x05, 0xBE, 0x1B, 0x0F, 0x0C, 0x00, 0x0B, 0x04, 0xB4, 0x02, 0x04, 0xEB, 0xD7, 0x26, + 0xFC, 0x6F, 0x8B, 0xE4, 0x36, 0x70, 0x00, 0x6E, 0x0B, 0x00, 0x43, 0x72, 0xFF, 0xFF, 0x70, 0x0F, + 0x49, 0x16, 0x76, 0x98, 0x18, 0x16, 0x7A, 0x49, 0x74, 0x96, 0x7E, 0xFF, 0xFF, 0x87, 0xC4, 0xF6, + 0xEE, 0xB3, 0x2C, 0x48, 0x7B, 0x20, 0xF1, 0x23, 0x01, 0x17, 0x40, 0xFC, 0x80, 0x61, 0xE0, 0xF4, + 0x56, 0x11, 0x8A, 0x22, 0x1B, 0x10, 0x51, 0xD8, 0xA9, 0x75, 0x0B, 0x14, 0x14, 0x07, 0x00, 0x00, + 0x1E, 0xE0, 0x02, 0x26, 0x00, 0x10, 0xD7, 0x2F, 0x00, 0xD6, 0x20, 0x52, 0x2C, 0xA1, 0xC0, 0xC0, + 0x55, 0xFE, 0x82, 0x21, 0x20, 0xC7, 0xA6, 0x21, 0x61, 0x1B, 0xFF, 0xFF, 0xFB, 0x07, 0xA3, 0x6F, + 0x20, 0x10, 0x4E, 0x58, 0x0A, 0x70, 0x52, 0xFF, 0xFF, 0xFE, 0x77, 0x56, 0xD8, 0x74, 0x0A, 0x13, + 0x03, 0x34, 0x35, 0xCA, 0xCE, 0x07, 0x00, 0x00, 0x09, 0x85, 0xD5, 0xF8, 0xFB, 0xD8, 0x85, 0x0B, + 0xFC, 0x04, 0x86, 0x00, 0x42, 0xB8, 0xED, 0xFA, 0xE3, 0xA8, 0x32, 0x47, 0x19, 0xF1, 0x00, 0xFA, + 0x44, 0x00, 0x15, 0xF5, 0xFF, 0xFF, 0x9F, 0x59, 0xC1, 0xFF, 0xFF, 0xD6, 0x01, 0x68, 0x59, 0x5C, + 0x00, 0x7D, 0x24, 0x21, 0x1A, 0xA0, 0xA9, 0xEF, 0x66, 0x06, 0xB0, 0xB0, 0xB0, 0x23, 0xBD, 0xB4, + 0x19, 0x16, 0xC7, 0x00, 0x17, 0x91, 0xC8, 0xFF, 0xFF, 0x9D, 0x9C, 0xEB, 0xF7, 0xCB, 0x55, 0x0B, + 0x00, 0x13, 0xFE, 0x75, 0x7A, 0x00, 0x0D, 0x2E, 0x81, 0x8C, 0x5B, 0xCE, 0xFF, 0xFF, 0xE1, 0x02, + 0xC8, 0x92, 0x5C, 0x00, 0x09, 0x5F, 0x21, 0x2B, 0xC8, 0x37, 0x00, 0x00, 0x32, 0xA9, 0x12, 0x4E, + 0x0B, 0x00, 0x62, 0x00, 0xFB, 0xFF, 0xFF, 0x5B, 0xC2, 0x69, 0x20, 0x51, 0xFB, 0xFF, 0xFF, 0x50, + 0xA8, 0x49, 0x17, 0x00, 0xF2, 0x00, 0x21, 0x31, 0x6C, 0x27, 0x63, 0x10, 0x41, 0x9A, 0x69, 0x71, + 0x13, 0xF3, 0xFF, 0xFF, 0x9B, 0x54, 0xD2, 0x27, 0x00, 0x12, 0x5A, 0x62, 0x00, 0x10, 0xDC, 0xAD, + 0x78, 0x62, 0x3E, 0xBA, 0xEF, 0xFD, 0xDD, 0x96, 0x5C, 0x6C, 0x48, 0x0C, 0x0A, 0x13, 0x00, 0xA8, + 0x2A, 0x25, 0xFC, 0x5B, 0x32, 0x54, 0x20, 0x5B, 0x04, 0x20, 0x63, 0x24, 0x54, 0xFD, 0xB8, 0x50, + 0x15, 0x31, 0x16, 0xF7, 0x15, 0x6B, 0xD4, 0x44, 0x15, 0xA5, 0x14, 0x26, 0x13, 0xDF, 0x86, 0xE0, + 0x24, 0x00, 0x1A, 0xA8, 0x80, 0x25, 0x00, 0x53, 0xA1, 0x22, 0x15, 0x8D, 0xE9, 0x17, 0x14, 0xC7, + 0x11, 0x18, 0x00, 0xC4, 0xD9, 0x14, 0x31, 0x80, 0x78, 0x24, 0xF4, 0x04, 0x0F, 0x41, 0x15, 0xBE, + 0x42, 0xD6, 0x02, 0xED, 0x20, 0x24, 0x01, 0xE9, 0x50, 0x14, 0x15, 0x23, 0xB6, 0xFA, 0x15, 0x5D, + 0x83, 0x17, 0x15, 0x97, 0x78, 0x27, 0x06, 0x58, 0x04, 0x70, 0x07, 0x75, 0xCF, 0xF5, 0xF6, 0xCF, + 0x75, 0xA1, 0x07, 0x13, 0x03, 0x73, 0x14, 0x21, 0xB8, 0x02, 0x88, 0x92, 0x41, 0xF8, 0x74, 0x75, + 0xFA, 0x8F, 0x14, 0x11, 0xA5, 0x3C, 0x45, 0x11, 0xA2, 0x40, 0x26, 0x11, 0xC2, 0x4D, 0x06, 0x11, + 0x75, 0xD3, 0x09, 0x11, 0xB4, 0xB1, 0x06, 0x11, 0x7D, 0xDF, 0x71, 0x11, 0x79, 0xF5, 0x1D, 0x11, + 0xB0, 0xE2, 0x0A, 0x90, 0x14, 0xEB, 0xFF, 0xFD, 0x74, 0x72, 0xFE, 0xFF, 0xEC, 0x64, 0x00, 0x11, + 0x37, 0x84, 0x1F, 0x10, 0xF8, 0xAF, 0x08, 0x13, 0x04, 0x43, 0x1C, 0x21, 0xA2, 0x03, 0x14, 0x01, + 0x41, 0xDD, 0x28, 0x27, 0xDE, 0x86, 0x19, 0x11, 0xD0, 0x1D, 0x05, 0x10, 0x6B, 0x64, 0x1A, 0x21, + 0x06, 0xFD, 0x3F, 0x7C, 0x62, 0x3B, 0xFF, 0xFF, 0xFC, 0x05, 0x0E, 0xD0, 0x15, 0x00, 0x15, 0x25, + 0x31, 0x0F, 0x02, 0xF9, 0x2C, 0x61, 0x71, 0x3B, 0xFF, 0xFF, 0xFA, 0x02, 0x00, 0xCE, 0xB4, 0x85, + 0x11, 0x73, 0x36, 0x71, 0x71, 0x75, 0xFF, 0xFF, 0xEE, 0x66, 0x64, 0xEF, 0x58, 0x26, 0x13, 0x09, + 0x1C, 0x30, 0x10, 0xCD, 0x88, 0x02, 0x88, 0x09, 0x7D, 0xD3, 0xF9, 0xF9, 0xD5, 0x81, 0x0B, 0x20, + 0x06, 0xA3, 0x65, 0xC7, 0xF3, 0xF6, 0xCC, 0x70, 0x04, 0x00, 0x00, 0x01, 0xB1, 0x63, 0x20, 0xB2, + 0x03, 0x88, 0x86, 0x40, 0xFB, 0x76, 0x6C, 0xF1, 0xFB, 0x0E, 0x11, 0xA8, 0x75, 0x0C, 0x10, 0x7C, + 0xE8, 0x02, 0x11, 0xDC, 0x1F, 0x0C, 0x10, 0x45, 0xBE, 0x82, 0x11, 0xF7, 0xD0, 0x14, 0x00, 0x6D, + 0xC0, 0x21, 0x1E, 0xF8, 0x8F, 0x15, 0x00, 0x55, 0x1F, 0x21, 0x24, 0xE3, 0x3F, 0x07, 0x00, 0x16, + 0x00, 0x70, 0x24, 0xAC, 0xFF, 0xFF, 0xD9, 0x1B, 0x10, 0x64, 0x31, 0x27, 0x24, 0x42, 0xBC, 0x1B, + 0x62, 0x6D, 0xF6, 0xFF, 0xFF, 0xFE, 0xAE, 0xC7, 0x1B, 0x56, 0x0F, 0x41, 0x4A, 0x1C, 0x38, 0x51, + 0x66, 0x00, 0xE4, 0x07, 0x52, 0x23, 0x1F, 0x24, 0x24, 0x0F, 0x07, 0x87, 0x21, 0x19, 0xD2, 0x7F, + 0x22, 0x10, 0x62, 0x47, 0x51, 0x11, 0xB0, 0xFB, 0x01, 0x10, 0xA5, 0x9F, 0x4B, 0x00, 0xEA, 0x23, + 0x21, 0xB4, 0xAE, 0xA9, 0x1A, 0x13, 0x05, 0xC4, 0x3B, 0xC3, 0xC4, 0x04, 0x00, 0x00, 0x0A, 0x7C, + 0xD3, 0xF8, 0xFA, 0xD6, 0x7E, 0x09, 0x00, 0x11, 0x32, 0x0C, 0x01, 0x01, 0xD9, 0xE5, 0x50, 0xA2, + 0x84, 0xFF, 0xFF, 0xA4, 0x04, 0x00, 0x24, 0x03, 0x04, 0x90, 0x04, 0x06, 0x01, 0x00, 0x0C, 0x20, + 0x00, 0x52, 0x06, 0x04, 0x10, 0x01, 0xFE, 0xE4, 0x10, 0x50, 0x9E, 0x8C, 0xFF, 0xFF, 0xA0, 0x04, + 0x00, 0x0F, 0x38, 0x00, 0x01, 0x03, 0x6C, 0x4C, 0x50, 0xAE, 0x88, 0xFF, 0xFF, 0xB0, 0x04, 0x00, + 0xF7, 0x04, 0x03, 0x04, 0xE3, 0xAB, 0x00, 0x53, 0xFF, 0x7D, 0x46, 0xFF, 0xF1, 0x21, 0x0E, 0x70, + 0x1E, 0x00, 0x09, 0x08, 0x0E, 0xC6, 0x13, 0x13, 0x00, 0x0C, 0x67, 0x11, 0x45, 0xCC, 0x2D, 0x21, + 0x0A, 0x92, 0x66, 0x28, 0x20, 0x33, 0xD7, 0x01, 0x06, 0xE0, 0x04, 0x7C, 0xFB, 0xFF, 0xFF, 0xC8, + 0x24, 0x18, 0xC6, 0xFF, 0xFF, 0xFC, 0x7F, 0x04, 0x21, 0x06, 0x22, 0xDC, 0x39, 0xEF, 0x1F, 0x10, + 0x99, 0x66, 0x06, 0x50, 0x32, 0xFB, 0xFF, 0xFF, 0xD1, 0x6F, 0x7A, 0xB4, 0x32, 0xD6, 0xFF, 0xFF, + 0xF7, 0x6C, 0x01, 0x00, 0x00, 0x09, 0x8F, 0x18, 0x41, 0x23, 0x43, 0xE3, 0xAE, 0x28, 0x24, 0x10, + 0xA4, 0xB9, 0xFB, 0x41, 0x42, 0x0A, 0x08, 0x08, 0x4C, 0x0A, 0x11, 0x2C, 0x4C, 0x0A, 0x23, 0x48, + 0x42, 0xD0, 0x01, 0x14, 0xE8, 0x08, 0x00, 0x04, 0xD8, 0x4C, 0x0F, 0x20, 0x00, 0x0D, 0x56, 0x09, + 0x08, 0x0E, 0x01, 0x01, 0xB9, 0x00, 0x43, 0x00, 0x9E, 0x6B, 0x01, 0x5C, 0x26, 0x23, 0xB9, 0x1B, + 0xEC, 0x27, 0x21, 0xEE, 0x57, 0x7B, 0x00, 0x00, 0xF2, 0x60, 0x00, 0x4E, 0x0A, 0x50, 0x58, 0xEF, + 0xFF, 0xFF, 0xE4, 0xBB, 0x00, 0x22, 0x1D, 0xBD, 0x56, 0x0C, 0x30, 0x01, 0x68, 0xFE, 0x08, 0x00, + 0x21, 0x14, 0xAF, 0x72, 0x23, 0x21, 0x45, 0xE6, 0x32, 0x00, 0x00, 0x0A, 0x1A, 0x20, 0xB8, 0x1B, + 0x48, 0x00, 0x20, 0xF5, 0x69, 0x52, 0x00, 0x22, 0xA8, 0xC8, 0x9B, 0x0E, 0x34, 0x3E, 0x04, 0x00, + 0x48, 0x04, 0x02, 0x69, 0x00, 0xB4, 0x22, 0x9D, 0xE0, 0xFA, 0xEF, 0xC3, 0x63, 0x03, 0x00, 0x2C, + 0xF2, 0x78, 0xA8, 0xB1, 0xB0, 0xFF, 0xFF, 0xD3, 0x5E, 0x85, 0xFD, 0xFF, 0xFF, 0x56, 0xE5, 0xA4, + 0x18, 0x51, 0x9B, 0xFF, 0xFF, 0xAB, 0xDE, 0x6F, 0x82, 0x81, 0x6F, 0xFF, 0xFF, 0xCD, 0x9A, 0xA9, + 0x76, 0x1E, 0xE0, 0x17, 0x02, 0x53, 0x04, 0x00, 0x3A, 0x11, 0x15, 0x91, 0x33, 0x94, 0x01, 0x8B, + 0x1F, 0x23, 0x14, 0xE3, 0xE7, 0x03, 0x50, 0x07, 0xBF, 0xFF, 0xFF, 0xD5, 0xB4, 0x09, 0x63, 0x09, + 0xB5, 0xFF, 0xFF, 0xDF, 0x1E, 0x39, 0x06, 0x24, 0xD6, 0x1D, 0x50, 0x56, 0x2B, 0x74, 0x00, 0x0A, + 0x00, 0x3D, 0x1E, 0x3C, 0x3C, 0x0F, 0xE6, 0x15, 0x9A, 0x2F, 0xE8, 0x15, 0x9C, 0x51, 0x1D, 0x06, + 0x0A, 0x00, 0x24, 0x16, 0x15, 0x14, 0x0E, 0x01, 0x7A, 0x0B, 0x96, 0x4B, 0x95, 0xC2, 0xEB, 0xFA, + 0xF5, 0xD4, 0xA5, 0x51, 0x1D, 0x40, 0x16, 0x4E, 0xC6, 0xBA, 0x13, 0xCF, 0x2A, 0x20, 0x10, 0x08, + 0x42, 0x29, 0xA1, 0xD7, 0x93, 0x64, 0x53, 0x61, 0x89, 0xD6, 0xFF, 0xFF, 0xF5, 0x54, 0x21, 0x20, + 0x03, 0xB1, 0x04, 0xD2, 0x03, 0x34, 0x0B, 0x52, 0x5B, 0xF3, 0xFF, 0xE6, 0x13, 0x39, 0x05, 0x16, + 0xCC, 0xD4, 0x71, 0x20, 0x42, 0xFD, 0xC9, 0x06, 0xF0, 0x02, 0x18, 0xF1, 0xFF, 0xEC, 0x19, 0x00, + 0x00, 0x18, 0x99, 0xE5, 0xE9, 0x5F, 0xF6, 0xFC, 0x87, 0x00, 0x97, 0xD1, 0x77, 0x11, 0x83, 0x06, + 0x29, 0x24, 0x2A, 0xE7, 0x71, 0x1D, 0xF0, 0x02, 0x32, 0xFF, 0xFF, 0x3D, 0x01, 0xE0, 0xFF, 0xEC, + 0x07, 0x00, 0x07, 0xD6, 0xFF, 0xFF, 0xCE, 0x62, 0xBB, 0xC9, 0x56, 0x51, 0x01, 0xF1, 0xFF, 0x68, + 0x21, 0x19, 0x21, 0x71, 0x6C, 0xFF, 0xFF, 0xCB, 0x08, 0x00, 0xAD, 0xF3, 0x63, 0x41, 0xD6, 0xFF, + 0x7D, 0x51, 0x17, 0x24, 0x11, 0xD5, 0xF5, 0x17, 0x40, 0xD1, 0xFF, 0xF2, 0x01, 0x79, 0x28, 0x20, + 0x7F, 0x7E, 0xC8, 0x05, 0x11, 0x1F, 0xAC, 0x89, 0x21, 0x01, 0xF5, 0x61, 0x25, 0x40, 0xE0, 0xFF, + 0x6A, 0x95, 0x5C, 0x57, 0x11, 0x4B, 0x53, 0x6F, 0x11, 0x19, 0x06, 0x00, 0x50, 0x0E, 0xFF, 0xFF, + 0x3E, 0x9E, 0x86, 0x1A, 0x11, 0x5B, 0x51, 0x0A, 0x11, 0x3D, 0x82, 0x09, 0x50, 0x51, 0xFF, 0xF0, + 0x08, 0x94, 0xA2, 0xBF, 0x11, 0x48, 0xEC, 0x07, 0x10, 0x7C, 0xB9, 0x11, 0x40, 0x02, 0xC7, 0xFF, + 0x91, 0x71, 0x17, 0x10, 0x39, 0x39, 0x95, 0xC0, 0xFB, 0x68, 0x6A, 0xF5, 0xFF, 0xFF, 0x4F, 0x01, + 0x80, 0xFF, 0xE7, 0x15, 0x58, 0x07, 0x13, 0x7B, 0x48, 0x2D, 0xF3, 0x0D, 0xA5, 0xFB, 0xFF, 0xD8, + 0xD8, 0xFF, 0xEF, 0x3A, 0x00, 0x00, 0x0A, 0xF6, 0xFF, 0xDD, 0x06, 0x00, 0x04, 0x81, 0xDC, 0xEC, + 0x9A, 0x08, 0x5B, 0xDB, 0xFF, 0xE5, 0x9D, 0x1D, 0x16, 0x80, 0x06, 0xBB, 0x2C, 0x04, 0x63, 0x01, + 0x5D, 0x14, 0xED, 0xFF, 0xFF, 0x80, 0x26, 0xED, 0xD5, 0x40, 0xF5, 0xFF, 0xFF, 0xDA, 0x7A, 0x39, + 0x13, 0x03, 0x09, 0x26, 0x4B, 0x7D, 0xA5, 0xDF, 0x08, 0x00, 0x62, 0x06, 0x51, 0x8A, 0x32, 0x04, + 0x5B, 0xB9, 0x3F, 0x1A, 0x29, 0xF5, 0xC8, 0x2F, 0x73, 0x66, 0x04, 0x25, 0x44, 0x4A, 0x3E, 0x1C, + 0x70, 0xF4, 0x16, 0x0D, 0xA0, 0x09, 0x44, 0xB4, 0xFC, 0xFC, 0xFC, 0xF8, 0x21, 0x01, 0xD7, 0x8B, + 0x18, 0x67, 0x4F, 0x73, 0x18, 0x9C, 0xF2, 0x1D, 0x04, 0xDB, 0x76, 0x10, 0x8B, 0x9F, 0x24, 0x25, + 0xFC, 0x0A, 0x29, 0x1A, 0x14, 0xA6, 0xAD, 0xAF, 0x54, 0x03, 0xF3, 0xFF, 0xEA, 0x64, 0x90, 0x00, + 0x54, 0x2A, 0xFF, 0xFF, 0xBD, 0x38, 0x3F, 0x2A, 0x54, 0x5F, 0xFF, 0xFF, 0x91, 0x0D, 0xBE, 0x06, + 0x10, 0x95, 0xD9, 0x01, 0x13, 0xDF, 0xC8, 0xFE, 0x10, 0xCA, 0x27, 0x06, 0x12, 0xB3, 0xC5, 0x19, + 0x20, 0x06, 0xF9, 0x99, 0x2A, 0x12, 0x87, 0x24, 0x25, 0x11, 0x34, 0x4A, 0xDE, 0x12, 0xFE, 0x0B, + 0x20, 0x17, 0x69, 0x32, 0x6C, 0x00, 0x33, 0x4D, 0x51, 0xAC, 0x50, 0x50, 0x52, 0xFD, 0xFD, 0x08, + 0x12, 0xD3, 0x4C, 0x09, 0x10, 0xDA, 0x86, 0x07, 0x22, 0x0B, 0xFD, 0xD2, 0x77, 0x10, 0xAF, 0xE5, + 0x0A, 0x13, 0x3D, 0x32, 0x59, 0x10, 0x85, 0xAF, 0x12, 0x13, 0x72, 0x55, 0x2E, 0x11, 0x5A, 0xAC, + 0x25, 0x13, 0x0D, 0x14, 0x12, 0x11, 0x8A, 0x7B, 0x9E, 0x47, 0xE9, 0xC2, 0x6B, 0x08, 0x13, 0xD5, + 0x21, 0xCA, 0x0A, 0x0C, 0x00, 0x40, 0x51, 0x5B, 0x8B, 0xF5, 0xCE, 0x2A, 0x12, 0x8C, 0x0E, 0xBE, + 0x10, 0x6A, 0x77, 0x79, 0x03, 0x0C, 0x00, 0x10, 0x33, 0xEB, 0x85, 0x03, 0x0C, 0x00, 0x10, 0x3B, + 0x13, 0x05, 0x03, 0x0C, 0x00, 0x10, 0x7C, 0xAE, 0x03, 0x00, 0x0C, 0x00, 0x75, 0x48, 0x50, 0x85, + 0xF6, 0xFF, 0xF7, 0x2F, 0x54, 0x00, 0x27, 0xC5, 0x2B, 0x60, 0x00, 0x21, 0xC3, 0x1B, 0x0C, 0x00, + 0x83, 0x04, 0x0C, 0x44, 0xD8, 0xFF, 0xFF, 0xCA, 0x01, 0x3C, 0x00, 0x00, 0xAE, 0x00, 0x13, 0x34, + 0x0C, 0x00, 0x00, 0x3B, 0xE6, 0x13, 0x6A, 0x0C, 0x00, 0x00, 0xF1, 0x1C, 0x13, 0x7A, 0x0C, 0x00, + 0x53, 0x09, 0xFB, 0xFF, 0xFF, 0x69, 0x0C, 0x00, 0x00, 0x7E, 0x23, 0x11, 0x3A, 0x6C, 0x00, 0x30, + 0x4D, 0x78, 0xEA, 0x3F, 0x43, 0x05, 0x60, 0x00, 0x23, 0xF2, 0x38, 0x6C, 0x00, 0x75, 0xFB, 0xDB, + 0x95, 0x1E, 0x00, 0x00, 0x0D, 0xC4, 0x09, 0x86, 0x48, 0xB2, 0xE4, 0xFA, 0xF0, 0xC8, 0x74, 0x07, + 0xFA, 0x2B, 0x20, 0xC4, 0x06, 0x14, 0x2A, 0xC1, 0xAC, 0x56, 0x72, 0xF7, 0xFF, 0xFF, 0x67, 0x89, + 0xFF, 0xFF, 0xEC, 0x05, 0x5D, 0x01, 0x22, 0xBC, 0xBE, 0xA2, 0x2A, 0x52, 0x83, 0xFF, 0xFF, 0xE1, + 0xD5, 0x9A, 0x1C, 0x52, 0x7D, 0xFF, 0xFF, 0xEC, 0xDC, 0x1F, 0x20, 0x43, 0x6B, 0xDC, 0xDC, 0xCB, + 0x0B, 0x00, 0x03, 0x07, 0x3B, 0x0F, 0x0B, 0x00, 0x12, 0x43, 0x10, 0x20, 0x20, 0x1E, 0x0B, 0x00, + 0x55, 0x7C, 0xFF, 0xFF, 0xEC, 0xD6, 0x58, 0x00, 0x22, 0xEA, 0xBF, 0xB8, 0x23, 0x91, 0x83, 0xFF, + 0xFF, 0xDC, 0x8A, 0xFF, 0xFF, 0xF1, 0x06, 0xBE, 0x5A, 0x20, 0xB2, 0x2D, 0xFA, 0x01, 0x30, 0x50, + 0x74, 0xFB, 0x1D, 0x0A, 0x04, 0x61, 0x26, 0x00, 0x69, 0x13, 0x71, 0x48, 0xB8, 0xE8, 0xFE, 0xF4, + 0xCF, 0x75, 0xD1, 0x0C, 0x09, 0xC8, 0x01, 0x57, 0xF9, 0xE3, 0xBD, 0x6A, 0x05, 0x68, 0x01, 0x21, + 0xC8, 0x0B, 0x0C, 0x00, 0x31, 0x50, 0x58, 0x98, 0x6D, 0x1D, 0x03, 0x38, 0x01, 0x10, 0xB3, 0x73, + 0x12, 0x03, 0x0C, 0x00, 0x00, 0x72, 0x29, 0x13, 0x08, 0x0C, 0x00, 0x00, 0x80, 0x16, 0x13, 0x1D, + 0x0C, 0x00, 0x00, 0x68, 0x16, 0x1F, 0x20, 0x0C, 0x00, 0x30, 0x17, 0x79, 0x0C, 0x00, 0x00, 0x71, + 0x1F, 0x13, 0x1A, 0x0C, 0x00, 0x10, 0x86, 0x99, 0x16, 0x03, 0x0C, 0x00, 0x10, 0xB9, 0x56, 0x31, + 0x01, 0xC8, 0x01, 0x21, 0x52, 0x99, 0xBC, 0x2A, 0x05, 0xC0, 0x00, 0x22, 0xBD, 0x06, 0x0C, 0x00, + 0x40, 0xFE, 0xE7, 0xC1, 0x68, 0x2D, 0x08, 0x17, 0x09, 0xEC, 0x00, 0x44, 0xFC, 0xFC, 0xFC, 0x96, + 0x29, 0x00, 0x11, 0x98, 0xE6, 0x00, 0x44, 0x50, 0x50, 0x50, 0x30, 0x33, 0x02, 0x1F, 0x00, 0x09, + 0x00, 0x0C, 0x44, 0x48, 0x48, 0x48, 0x2D, 0x68, 0x00, 0x1A, 0xA0, 0x09, 0x00, 0x00, 0x8E, 0xF3, + 0x0E, 0x3F, 0x00, 0x0F, 0x51, 0x00, 0x10, 0x24, 0x48, 0x2F, 0x90, 0x00, 0x15, 0xA4, 0x09, 0x00, + 0x0D, 0xB4, 0x00, 0x14, 0x6F, 0x1B, 0x00, 0x14, 0x70, 0xB4, 0x00, 0x1F, 0x23, 0x63, 0x00, 0x18, + 0x14, 0x28, 0xAB, 0x00, 0x1A, 0x8C, 0x09, 0x00, 0x0E, 0xB4, 0x00, 0x0F, 0x09, 0x00, 0x28, 0x05, + 0x54, 0x02, 0xA7, 0x00, 0x00, 0x48, 0xB3, 0xE4, 0xFA, 0xF1, 0xCE, 0x83, 0x11, 0x5F, 0x81, 0xB0, + 0xDE, 0x14, 0x00, 0x23, 0xFD, 0xFF, 0xFF, 0xB3, 0x58, 0x72, 0xEF, 0x3E, 0x16, 0x51, 0x82, 0xFF, + 0xFF, 0xEE, 0x07, 0xC5, 0x02, 0x32, 0xE1, 0x00, 0xB7, 0x88, 0x55, 0x00, 0x72, 0x9B, 0x22, 0x08, + 0xD1, 0xDD, 0x02, 0x00, 0x0C, 0x2B, 0x13, 0x10, 0xF4, 0x02, 0x57, 0x06, 0x10, 0x10, 0x10, 0x01, + 0x16, 0x03, 0x1D, 0x00, 0x0C, 0x00, 0x02, 0x3D, 0x3E, 0x12, 0x2C, 0x0C, 0x00, 0x02, 0x20, 0x2F, + 0x01, 0x0C, 0x00, 0x35, 0x0A, 0x50, 0x53, 0x0C, 0x00, 0x20, 0x00, 0x00, 0xF4, 0x93, 0x22, 0x2C, + 0xD2, 0x48, 0x8A, 0x00, 0xA3, 0xDE, 0x22, 0x2C, 0xB7, 0xFE, 0x27, 0x00, 0xAE, 0x05, 0x62, 0x2C, + 0x80, 0xFF, 0xFF, 0xF7, 0x0C, 0xDA, 0x1F, 0x71, 0x2C, 0x25, 0xFE, 0xFF, 0xFF, 0xB8, 0x53, 0xF8, + 0xEE, 0x14, 0x2C, 0x46, 0x25, 0x10, 0xB7, 0x0C, 0x00, 0xB4, 0x01, 0x56, 0xC0, 0xF1, 0xFD, 0xD5, + 0x63, 0x33, 0xFF, 0xFF, 0x2C, 0x1C, 0x17, 0x12, 0x82, 0x00, 0xBE, 0x00, 0xD6, 0x39, 0x22, 0x82, + 0x84, 0x31, 0x15, 0x00, 0x77, 0x10, 0x1F, 0x84, 0x0C, 0x00, 0x2D, 0x44, 0x4E, 0x48, 0x48, 0x4B, + 0x0C, 0x00, 0x03, 0xAC, 0x06, 0x0D, 0x0C, 0x00, 0x4E, 0x0C, 0x04, 0x04, 0x08, 0x6C, 0x00, 0x0F, + 0x0C, 0x00, 0x3F, 0x44, 0x07, 0x05, 0x13, 0x01, 0xB7, 0x29, 0x10, 0x0C, 0x14, 0x19, 0x0F, 0x05, + 0x00, 0x43, 0x34, 0x00, 0x08, 0x07, 0x5C, 0x07, 0x12, 0x30, 0xE4, 0x33, 0x00, 0xAF, 0x13, 0x0F, + 0x07, 0x00, 0x02, 0x1F, 0x5A, 0x07, 0x00, 0x08, 0x1F, 0x59, 0x07, 0x00, 0x01, 0x1C, 0x58, 0x07, + 0x00, 0x12, 0x35, 0x85, 0x34, 0x00, 0x7F, 0x2F, 0x30, 0x45, 0x5E, 0x9B, 0x77, 0x0A, 0x22, 0x19, + 0xC8, 0x85, 0x4C, 0x6C, 0xC8, 0xFF, 0xFA, 0xDD, 0x8B, 0x0B, 0x24, 0x05, 0x00, 0xAA, 0x19, 0x42, + 0xFC, 0xFC, 0xEC, 0x0B, 0xEE, 0x02, 0x24, 0x03, 0xDB, 0x42, 0x03, 0x01, 0x55, 0x10, 0x23, 0xFE, + 0x21, 0x0C, 0x00, 0x11, 0xC5, 0x07, 0x0E, 0x01, 0x12, 0x03, 0x12, 0x3A, 0x6B, 0x23, 0x01, 0x0C, + 0x00, 0x52, 0xAD, 0xFF, 0xFF, 0xD4, 0x01, 0x0C, 0x00, 0x00, 0x89, 0x2E, 0x13, 0x66, 0x36, 0x03, + 0x53, 0x96, 0xFF, 0xFF, 0xEE, 0x0B, 0x0C, 0x00, 0x13, 0xF6, 0x9F, 0x1B, 0x26, 0x8C, 0xFF, 0xCC, + 0x2E, 0x00, 0x0C, 0x00, 0x13, 0xB3, 0x03, 0x60, 0x00, 0x0C, 0x00, 0x22, 0x0E, 0xCF, 0x7A, 0x2A, + 0x01, 0x72, 0x03, 0x12, 0x6D, 0x40, 0x2A, 0x01, 0x0C, 0x00, 0x21, 0x13, 0xF9, 0x94, 0x0D, 0x02, + 0x8A, 0x03, 0x11, 0xAB, 0xFB, 0x1A, 0x02, 0x0C, 0x00, 0x11, 0x49, 0x42, 0x2A, 0x03, 0xB4, 0x00, + 0x10, 0xE5, 0x7A, 0x86, 0x03, 0xAE, 0x03, 0x00, 0x32, 0x13, 0x03, 0xCC, 0x00, 0x01, 0x94, 0x36, + 0x18, 0x61, 0x70, 0x04, 0x0E, 0x0D, 0x04, 0x0F, 0x09, 0x00, 0x6B, 0x5F, 0x6C, 0x6C, 0x6C, 0x6C, + 0x46, 0x24, 0x05, 0x00, 0x22, 0x10, 0x0E, 0xB4, 0x00, 0x52, 0x46, 0xFC, 0xFC, 0xFC, 0x79, 0xF3, + 0x7B, 0x44, 0xFC, 0xFC, 0xA0, 0x4B, 0x03, 0x29, 0x00, 0xE4, 0x14, 0x24, 0xA6, 0x4F, 0x5D, 0x8E, + 0x00, 0x27, 0x26, 0x22, 0xAB, 0x53, 0x5F, 0x8F, 0x02, 0xF3, 0x89, 0x24, 0xAF, 0x58, 0x65, 0x62, + 0x00, 0x2B, 0x23, 0x23, 0xB4, 0x5C, 0xD4, 0x3E, 0x01, 0x7F, 0xE6, 0x50, 0xB8, 0x60, 0xFF, 0xFF, + 0xE7, 0x8E, 0x19, 0x70, 0x52, 0xFF, 0xF4, 0xF6, 0xFF, 0xBC, 0x64, 0x12, 0x32, 0xD0, 0xF0, 0x02, + 0x00, 0x8A, 0xFF, 0xBF, 0xEE, 0xFF, 0xC1, 0x68, 0xFF, 0xFF, 0x6E, 0xFF, 0x16, 0xF0, 0x3E, 0xC1, + 0xFF, 0x88, 0xEA, 0xFF, 0xC5, 0x6D, 0xFF, 0xFF, 0x4A, 0xE9, 0xFF, 0x5C, 0x04, 0xF5, 0xFF, 0x50, + 0xE5, 0xFF, 0xCA, 0x71, 0xFF, 0xFF, 0x45, 0xB1, 0xFF, 0x92, 0x2F, 0xFF, 0xFF, 0x19, 0xE0, 0xFF, + 0xCE, 0x75, 0xFF, 0xFF, 0x40, 0x79, 0xFF, 0xC8, 0x66, 0xFF, 0xE1, 0x00, 0xDC, 0xFF, 0xD3, 0x79, + 0xFF, 0xFF, 0x3C, 0x41, 0xFF, 0xF8, 0xA2, 0xFF, 0xA9, 0x00, 0xD7, 0xFF, 0xD7, 0x7D, 0xFF, 0xFF, + 0x38, 0x0D, 0xFD, 0xFF, 0xF6, 0xFF, 0x72, 0x00, 0xD2, 0xFF, 0xDB, 0x82, 0xE7, 0x01, 0x11, 0xD1, + 0xAE, 0x25, 0x40, 0xCE, 0xFF, 0xE0, 0x86, 0xBA, 0x2F, 0xA0, 0x99, 0xFF, 0xFF, 0xFA, 0x09, 0x00, + 0xC9, 0xFF, 0xE4, 0x8A, 0xA5, 0x60, 0x11, 0x61, 0x53, 0x2C, 0x40, 0xC4, 0xFF, 0xE9, 0x8E, 0x81, + 0x60, 0x11, 0x29, 0x6A, 0x0B, 0x40, 0xC0, 0xFF, 0xED, 0x92, 0x1B, 0x1A, 0x20, 0x02, 0xEF, 0x7C, + 0x8C, 0x36, 0xBB, 0xFF, 0xF2, 0xB4, 0x08, 0x30, 0x8A, 0xFC, 0xF9, 0x85, 0x33, 0x52, 0x57, 0xFC, + 0xFC, 0x92, 0x8C, 0x8E, 0x23, 0x95, 0x58, 0xFF, 0xFF, 0x94, 0x8C, 0xFF, 0xFF, 0xEF, 0x0C, 0x0B, + 0x00, 0x26, 0xFF, 0x6A, 0x0B, 0x00, 0x25, 0xD9, 0x02, 0x0B, 0x00, 0x26, 0xFF, 0x4A, 0x0B, 0x00, + 0x16, 0xBA, 0x0B, 0x00, 0x23, 0xFF, 0x2B, 0x0B, 0x00, 0x43, 0xBC, 0xFF, 0xFF, 0x9A, 0x0B, 0x00, + 0x52, 0x76, 0xD8, 0xFF, 0xF7, 0x6C, 0x0B, 0x00, 0x53, 0x74, 0x6A, 0xFF, 0xFF, 0xD2, 0x0B, 0x00, + 0x11, 0x0C, 0x4F, 0x24, 0x01, 0x0B, 0x00, 0x26, 0x00, 0x8D, 0x0B, 0x00, 0x25, 0x21, 0xFD, 0x0B, + 0x00, 0x26, 0x00, 0xAF, 0x0B, 0x00, 0x16, 0x40, 0x0B, 0x00, 0x25, 0x01, 0xD1, 0x0B, 0x00, 0x26, + 0x00, 0x63, 0x0B, 0x00, 0x49, 0x09, 0xEC, 0xFF, 0x94, 0x60, 0x06, 0x87, 0x47, 0xB2, 0xE3, 0xFA, + 0xF2, 0xCD, 0x80, 0x0E, 0xB9, 0xBF, 0x21, 0xDD, 0x18, 0xA6, 0x33, 0x40, 0xAF, 0x58, 0x71, 0xF2, + 0x92, 0x07, 0x11, 0x91, 0xE4, 0x84, 0x00, 0x48, 0x08, 0x10, 0xF8, 0x0F, 0x62, 0x13, 0xC3, 0x02, + 0xC0, 0x22, 0x39, 0xD8, 0xB6, 0x2B, 0x00, 0x75, 0x4A, 0x22, 0x53, 0xDC, 0x0C, 0x00, 0x00, 0xDF, + 0x24, 0x1F, 0x58, 0x0C, 0x00, 0x35, 0x16, 0xD7, 0x60, 0x00, 0x22, 0x52, 0xBC, 0x0C, 0x0A, 0x01, + 0x78, 0x00, 0x12, 0x86, 0x23, 0x0A, 0x50, 0x79, 0xFF, 0xFF, 0xFA, 0x0D, 0xA3, 0xF3, 0x41, 0xAA, + 0x50, 0x6B, 0xEF, 0x41, 0x0E, 0x04, 0xCC, 0x6E, 0x10, 0xDC, 0x6B, 0x2F, 0x81, 0x4A, 0xB3, 0xE6, + 0xFE, 0xF6, 0xD2, 0x87, 0x0F, 0x9C, 0x12, 0x06, 0xA0, 0x09, 0x57, 0xFC, 0xF7, 0xD4, 0x84, 0x0E, + 0xA0, 0x09, 0x22, 0xD3, 0x0D, 0xA0, 0x09, 0x30, 0x55, 0x7F, 0xF6, 0x77, 0x26, 0x06, 0x94, 0x09, + 0x14, 0xD1, 0x0C, 0x00, 0x44, 0x58, 0xFF, 0xFF, 0xF8, 0x20, 0x0B, 0x00, 0xF3, 0x32, 0x16, 0x02, + 0x64, 0x09, 0x12, 0xE8, 0x24, 0x00, 0x30, 0x04, 0x39, 0xDD, 0xC2, 0x20, 0x14, 0x8C, 0xAD, 0x48, + 0x16, 0xF9, 0x74, 0x0B, 0x22, 0xCE, 0x3D, 0x6C, 0x00, 0x4A, 0x50, 0x50, 0x46, 0x21, 0xE2, 0x07, + 0x0F, 0x0C, 0x00, 0x43, 0x24, 0x0D, 0x0C, 0x40, 0x0F, 0x01, 0xD8, 0x01, 0x37, 0xCC, 0x7E, 0x0D, + 0xD8, 0x01, 0x27, 0xDB, 0x17, 0xD8, 0x01, 0x17, 0x9E, 0xD8, 0x01, 0x27, 0xF7, 0x0A, 0xD8, 0x01, + 0x1F, 0x38, 0xD8, 0x01, 0x64, 0x16, 0x33, 0xD8, 0x01, 0x26, 0xF9, 0x08, 0xD8, 0x01, 0x16, 0x99, + 0xD8, 0x01, 0x23, 0xDE, 0x18, 0xD8, 0x01, 0x47, 0xFF, 0xFF, 0xE6, 0x15, 0xD3, 0x9A, 0x14, 0x9C, + 0xAA, 0x1C, 0x27, 0x02, 0xAD, 0x6F, 0xA5, 0x27, 0x07, 0xAD, 0xF2, 0x2F, 0x3A, 0x01, 0x63, 0x02, + 0xA8, 0x0B, 0x57, 0xF8, 0xE4, 0xBC, 0x6B, 0x09, 0x08, 0x02, 0x23, 0xD4, 0x11, 0xA8, 0x0B, 0x20, + 0x92, 0xFB, 0x1A, 0x06, 0x03, 0x54, 0x01, 0x15, 0x90, 0xE4, 0x01, 0x02, 0xD1, 0x33, 0x13, 0x0D, + 0x0C, 0x00, 0x00, 0x5A, 0x33, 0x13, 0x10, 0x0C, 0x00, 0x10, 0x76, 0xC3, 0x33, 0x01, 0x0C, 0x00, + 0x30, 0x0A, 0x4B, 0xEA, 0xA1, 0x0F, 0x00, 0x0C, 0x00, 0x01, 0x22, 0x1F, 0x25, 0xF3, 0x34, 0x60, + 0x00, 0x23, 0xE7, 0x2E, 0x08, 0x02, 0x12, 0x8D, 0x6E, 0xA9, 0x01, 0xB4, 0x01, 0x12, 0x1F, 0x36, + 0x34, 0x02, 0xC0, 0x01, 0x11, 0xDB, 0x78, 0x11, 0x02, 0x0C, 0x00, 0x11, 0x96, 0xA4, 0x0E, 0x02, + 0x0C, 0x00, 0x11, 0x52, 0xCE, 0x3B, 0x02, 0x0C, 0x00, 0x00, 0xD3, 0xAB, 0x14, 0x6E, 0x90, 0x00, + 0x10, 0xC8, 0xF0, 0x92, 0x06, 0xB0, 0x02, 0x23, 0xF8, 0x0A, 0x0C, 0x00, 0x00, 0xAC, 0x05, 0x16, + 0x4B, 0x90, 0x15, 0x70, 0x0E, 0x81, 0xD3, 0xF6, 0xF5, 0xCE, 0x72, 0xD1, 0x0F, 0x13, 0x12, 0x58, + 0x35, 0x21, 0xB3, 0x02, 0xAB, 0x30, 0x41, 0xE2, 0x64, 0x68, 0xEE, 0xB5, 0x05, 0x11, 0xE4, 0x54, + 0x2E, 0x10, 0x74, 0xF1, 0x16, 0x12, 0x02, 0xFD, 0x07, 0x11, 0x3C, 0xA0, 0x2F, 0xA2, 0xF3, 0xFF, + 0xFF, 0xB0, 0x01, 0x00, 0x12, 0x56, 0x27, 0x03, 0x85, 0x9B, 0x27, 0x8A, 0x01, 0x54, 0x88, 0x27, + 0xA6, 0x08, 0x49, 0x2E, 0x12, 0xC7, 0xDD, 0x32, 0x22, 0x01, 0x79, 0x8B, 0xD5, 0x02, 0x1A, 0x00, + 0x10, 0x54, 0x8F, 0x23, 0x13, 0xD2, 0x0A, 0x13, 0x24, 0x36, 0xEA, 0x6D, 0x2A, 0x50, 0x09, 0x02, + 0x00, 0x2B, 0xF2, 0x23, 0x83, 0x52, 0x02, 0x99, 0xCE, 0xFB, 0x18, 0x6C, 0x2E, 0x31, 0x24, 0x00, + 0xED, 0xB2, 0x21, 0x11, 0x35, 0x0D, 0x87, 0x11, 0xB7, 0x14, 0x21, 0x11, 0x3E, 0xC9, 0x16, 0x71, + 0x53, 0xFF, 0xFF, 0xFC, 0x7B, 0x55, 0xCA, 0x20, 0x16, 0x04, 0x42, 0x1C, 0x10, 0xEB, 0x2F, 0x1D, + 0xD7, 0x02, 0x5E, 0xC2, 0xF1, 0xFE, 0xE1, 0x96, 0x1A, 0x00, 0x00, 0x0A, 0x0B, 0x13, 0xB8, 0xBF, + 0x01, 0x6A, 0x5E, 0x06, 0xA8, 0x54, 0xC2, 0x0C, 0x49, 0x50, 0x50, 0xC1, 0xFF, 0xFF, 0xED, 0x50, + 0x50, 0x50, 0x04, 0x21, 0x25, 0x01, 0x43, 0x97, 0x0F, 0x0B, 0x00, 0x95, 0x04, 0x1C, 0x0B, 0x43, + 0xB2, 0xFC, 0xFC, 0xBA, 0x9B, 0x99, 0x22, 0x38, 0xB4, 0x40, 0x03, 0x00, 0x9A, 0x10, 0x0F, 0x0C, + 0x00, 0x71, 0x22, 0x37, 0xAC, 0x2F, 0x84, 0x00, 0x80, 0x2F, 0x22, 0x30, 0x95, 0xE1, 0x1C, 0x00, + 0x20, 0x03, 0x61, 0x19, 0x63, 0xFF, 0xFF, 0xFA, 0x11, 0x46, 0x1A, 0xA1, 0xE8, 0x01, 0x14, 0xF7, + 0xFF, 0xFF, 0xC0, 0x53, 0x72, 0xF5, 0x3F, 0x19, 0x04, 0x47, 0x11, 0x10, 0xDB, 0xD5, 0x0C, 0x86, + 0x42, 0xB3, 0xE7, 0xFE, 0xF6, 0xD4, 0x86, 0x11, 0x44, 0x18, 0x13, 0x59, 0xBC, 0x43, 0x92, 0x6E, + 0xFC, 0xFC, 0xC3, 0x26, 0xFF, 0xFF, 0xF6, 0x03, 0x4C, 0x3A, 0x32, 0x90, 0x02, 0xF0, 0xED, 0x23, + 0x10, 0xCC, 0xBC, 0x0A, 0x11, 0xBC, 0x24, 0x94, 0x20, 0x04, 0xF7, 0x1D, 0x03, 0x11, 0x87, 0x92, + 0x1A, 0x11, 0x28, 0xB2, 0x3D, 0x11, 0x52, 0xC4, 0x18, 0x11, 0x56, 0x9B, 0x0C, 0x11, 0x1D, 0x12, + 0x00, 0x11, 0x85, 0xCC, 0x18, 0x00, 0xF3, 0xBF, 0x32, 0x21, 0x00, 0xB3, 0xFC, 0x3B, 0x10, 0xB2, + 0x87, 0x18, 0x12, 0xE1, 0x8E, 0x3F, 0x53, 0x7D, 0xFF, 0xFF, 0x83, 0x10, 0x71, 0x01, 0x53, 0x48, + 0xFF, 0xFF, 0xB5, 0x3E, 0xF3, 0x08, 0x54, 0x14, 0xFF, 0xFF, 0xE6, 0x6C, 0x29, 0x9E, 0x44, 0xDE, + 0xFF, 0xFF, 0xB1, 0x3C, 0x24, 0x11, 0xA9, 0xB6, 0x39, 0x16, 0x10, 0xBD, 0x32, 0x17, 0xD9, 0xCD, + 0x93, 0x03, 0x67, 0x19, 0x27, 0x0D, 0xFE, 0xD5, 0xD8, 0x17, 0xD5, 0x3F, 0xA4, 0x13, 0x9F, 0x6F, + 0xC6, 0x22, 0x11, 0x11, 0xEC, 0x00, 0x30, 0x26, 0xFC, 0xFC, 0xD0, 0x12, 0x32, 0xA3, 0xFC, 0xE2, + 0x31, 0x39, 0x31, 0x5D, 0x06, 0xFC, 0xA7, 0x22, 0x11, 0xD1, 0x5C, 0x1D, 0x10, 0xAA, 0x39, 0x00, + 0x10, 0xDC, 0x07, 0x03, 0x21, 0x04, 0xF9, 0x03, 0x24, 0x10, 0xCB, 0x5D, 0x9B, 0x10, 0xB6, 0xAC, + 0x12, 0x12, 0x27, 0x21, 0x1E, 0x31, 0xEC, 0xFF, 0xEE, 0x9D, 0x1E, 0x11, 0x58, 0x28, 0x04, 0x31, + 0x95, 0x00, 0x0D, 0xB2, 0x0A, 0x10, 0x6B, 0xB8, 0x00, 0x11, 0x7D, 0xFB, 0x5E, 0x11, 0x2E, 0x94, + 0x00, 0x10, 0x46, 0xA7, 0x14, 0x71, 0xA8, 0xFF, 0xF6, 0xFF, 0xED, 0x01, 0x4F, 0x1D, 0x3D, 0x10, + 0x20, 0xDC, 0x38, 0x71, 0xD4, 0xFF, 0xA9, 0xFF, 0xFF, 0x19, 0x70, 0xDA, 0x0B, 0xC2, 0x03, 0xF9, + 0xFF, 0xDC, 0x05, 0xFA, 0xFF, 0x56, 0xFB, 0xFF, 0x45, 0x91, 0x27, 0x0B, 0xB2, 0xD5, 0xFF, 0xFB, + 0x2D, 0xFF, 0xFF, 0x23, 0xD4, 0xFF, 0x71, 0xB2, 0x17, 0x2F, 0xD3, 0xB0, 0xFF, 0xFF, 0x73, 0xFF, + 0xF4, 0x02, 0xA7, 0xFF, 0x9D, 0xD3, 0xFF, 0xE9, 0x15, 0x2E, 0xA3, 0xBF, 0xFF, 0xC9, 0x00, 0x7A, + 0xFF, 0xCA, 0xF4, 0xFF, 0xC4, 0xCD, 0x2D, 0x50, 0xFC, 0xFF, 0x9C, 0x00, 0x4D, 0x21, 0x01, 0x15, + 0x9E, 0x14, 0x01, 0x35, 0x6F, 0x00, 0x20, 0x73, 0x9F, 0x12, 0x1A, 0x37, 0x2F, 0x23, 0x01, 0xF2, + 0xD8, 0x3F, 0x02, 0x47, 0xF9, 0x12, 0x15, 0x58, 0x40, 0x14, 0x2E, 0xA5, 0x3D, 0x13, 0xE8, 0x9B, + 0xAE, 0x14, 0x0A, 0x71, 0x01, 0x12, 0xBB, 0x42, 0x28, 0x15, 0xE4, 0x09, 0x83, 0x12, 0x8E, 0x5D, + 0x00, 0x18, 0xBF, 0x7C, 0x1A, 0x40, 0x6E, 0xFC, 0xFC, 0xDB, 0xC5, 0x14, 0x61, 0xCE, 0xFC, 0xFC, + 0x46, 0x11, 0xF6, 0x09, 0x2E, 0x71, 0x2D, 0xFF, 0xFF, 0xE2, 0x03, 0x00, 0x9A, 0x6F, 0x3A, 0x11, + 0x88, 0x80, 0x04, 0xA2, 0x2F, 0xFF, 0xFF, 0xFE, 0x20, 0x02, 0xE2, 0xFF, 0xFE, 0x20, 0xAD, 0x39, + 0x23, 0x86, 0x3E, 0xE6, 0x39, 0x53, 0x59, 0xFF, 0xFF, 0xE9, 0xA0, 0x94, 0x1F, 0x02, 0x88, 0x93, + 0x26, 0xED, 0x08, 0xE8, 0x82, 0x03, 0x53, 0x3C, 0x26, 0x1B, 0xFC, 0xF0, 0x35, 0x23, 0x0E, 0xF6, + 0x23, 0x7D, 0x03, 0x7B, 0x3C, 0x27, 0xFA, 0x19, 0x27, 0x8C, 0x14, 0x81, 0xA8, 0x94, 0x53, 0xF9, + 0xFF, 0xFF, 0xE9, 0x07, 0x2C, 0x1B, 0x22, 0x76, 0xEC, 0x10, 0x40, 0x62, 0x0B, 0xF1, 0xFF, 0xF9, + 0x13, 0x85, 0x32, 0xB7, 0x10, 0x60, 0x3A, 0x08, 0x21, 0x1B, 0xFB, 0x8F, 0x17, 0x11, 0xC5, 0x54, + 0x2E, 0x10, 0xA7, 0xBB, 0x1C, 0x51, 0x2B, 0xFF, 0xFF, 0xE4, 0x03, 0x1B, 0x1A, 0x33, 0xFC, 0x1E, + 0x8E, 0x8D, 0x1B, 0x44, 0xC8, 0xFF, 0xFF, 0x89, 0xEC, 0x00, 0x30, 0x9C, 0xFC, 0xFC, 0x14, 0x39, + 0x62, 0x02, 0xE5, 0xFC, 0xFC, 0x55, 0x4A, 0x31, 0xA3, 0x10, 0x36, 0x77, 0x0F, 0x21, 0x06, 0xEF, + 0x08, 0x1C, 0x11, 0x82, 0x3E, 0x1B, 0x11, 0x9F, 0x86, 0x01, 0x11, 0xCE, 0xE0, 0x01, 0x61, 0x4A, + 0xFF, 0xFF, 0xEB, 0x03, 0x1B, 0x5B, 0x55, 0x10, 0x00, 0x25, 0x00, 0x23, 0x3D, 0x66, 0xE8, 0x02, + 0x53, 0x9F, 0xFF, 0xFF, 0x8D, 0xB3, 0x91, 0x34, 0x53, 0x49, 0xFF, 0xFF, 0xE1, 0xF6, 0xED, 0x91, + 0x00, 0x25, 0x00, 0x05, 0x11, 0x34, 0x17, 0x9E, 0x08, 0xF6, 0x00, 0xAC, 0x07, 0x13, 0xF9, 0x61, + 0x26, 0x00, 0x25, 0x00, 0x17, 0xB3, 0x41, 0x9F, 0x1F, 0x90, 0x0C, 0x00, 0x39, 0x13, 0x0A, 0x1C, + 0x1D, 0x23, 0x00, 0xE1, 0xD7, 0x05, 0x35, 0x9E, 0x00, 0xE4, 0x62, 0x39, 0x55, 0x48, 0x50, 0x50, + 0x50, 0x66, 0xDE, 0x30, 0x45, 0x6D, 0xFF, 0xFF, 0xEF, 0x0C, 0xCF, 0x15, 0x9A, 0xB7, 0x39, 0x14, + 0x3E, 0xD2, 0x1E, 0x24, 0xE1, 0x02, 0x36, 0x98, 0x15, 0x87, 0x81, 0xCE, 0x02, 0xC5, 0x16, 0x14, + 0x8F, 0x3C, 0xA0, 0x24, 0x03, 0xE7, 0x36, 0x98, 0x54, 0x44, 0xFF, 0xFF, 0xFE, 0x1A, 0xAE, 0x03, + 0x15, 0xBB, 0xBB, 0xFC, 0x14, 0x5F, 0x71, 0x41, 0x24, 0xF6, 0x0E, 0x60, 0x35, 0x02, 0x67, 0x5B, + 0x51, 0x10, 0xFA, 0xFF, 0xFF, 0x88, 0x7D, 0x12, 0x05, 0x32, 0x62, 0x16, 0xA4, 0x0A, 0x00, 0x00, + 0xA8, 0x24, 0x02, 0x94, 0x09, 0x02, 0x70, 0x43, 0x92, 0x28, 0x9D, 0xFF, 0xFF, 0x6B, 0x2C, 0x2C, + 0x07, 0x9D, 0xB9, 0x30, 0x0A, 0x07, 0x00, 0x1C, 0x9E, 0x07, 0x00, 0x1F, 0x4A, 0x07, 0x00, 0x05, + 0x15, 0x9F, 0x07, 0x00, 0x1F, 0x49, 0x07, 0x00, 0x0C, 0x12, 0xA0, 0xAA, 0x30, 0x0F, 0x07, 0x00, + 0x05, 0x55, 0x65, 0x28, 0x28, 0x07, 0xA0, 0x9A, 0x98, 0x04, 0x1C, 0x25, 0x44, 0x09, 0xF3, 0xFC, + 0x48, 0x2E, 0x73, 0x14, 0x92, 0x6F, 0xA1, 0x03, 0x9E, 0x24, 0x15, 0x22, 0xC6, 0xB9, 0x14, 0xD8, + 0xF5, 0x17, 0x12, 0x8E, 0x52, 0x9C, 0x00, 0x3C, 0x01, 0x12, 0xF9, 0xD5, 0x23, 0x24, 0x07, 0xF3, + 0x1D, 0x8A, 0x14, 0xAF, 0x0D, 0x91, 0x44, 0x65, 0xFF, 0xE3, 0x01, 0xAB, 0x94, 0x14, 0x2D, 0xA3, + 0x32, 0x14, 0x77, 0x80, 0xC4, 0x14, 0xC2, 0x09, 0x3C, 0x24, 0xFC, 0x11, 0x92, 0x88, 0x14, 0x56, + 0x98, 0x41, 0x14, 0xA0, 0xA4, 0x32, 0x03, 0x7F, 0x2A, 0x15, 0x16, 0x9F, 0x2A, 0x53, 0xCA, 0xFF, + 0x7F, 0x00, 0x08, 0xB4, 0x27, 0x12, 0x77, 0x52, 0x7A, 0x42, 0x15, 0x2C, 0x2C, 0xAE, 0x8C, 0x0E, + 0x1F, 0x9C, 0x07, 0x00, 0x0F, 0x1F, 0x9B, 0x07, 0x00, 0x0F, 0x1F, 0x9A, 0x07, 0x00, 0x0F, 0x1F, + 0x99, 0x07, 0x00, 0x05, 0x85, 0x13, 0x28, 0x28, 0xA9, 0xFF, 0xFF, 0x50, 0x78, 0x84, 0x71, 0x34, + 0x0B, 0x0B, 0x09, 0xC9, 0x30, 0x56, 0x1C, 0xF9, 0xFC, 0xFC, 0x40, 0x4B, 0x87, 0x12, 0xAB, 0x51, + 0x03, 0x63, 0xE7, 0xFF, 0xFA, 0xFF, 0xFC, 0x1B, 0xED, 0x18, 0x13, 0x77, 0x49, 0x04, 0x51, 0xC0, + 0xFF, 0xEF, 0x07, 0xCD, 0x84, 0x41, 0x10, 0x2B, 0x82, 0x21, 0x11, 0x73, 0x4E, 0x2C, 0x10, 0x94, + 0x7A, 0x2C, 0x40, 0x1C, 0xFE, 0xFF, 0xC2, 0x7E, 0x97, 0x21, 0xE7, 0x03, 0x22, 0x3E, 0x22, 0x2D, + 0x01, 0x74, 0x1D, 0x10, 0x03, 0xE0, 0x21, 0x31, 0x09, 0x09, 0x03, 0x18, 0x01, 0x13, 0x4C, 0x01, + 0x00, 0x05, 0xCF, 0x9C, 0x16, 0x90, 0x2B, 0x35, 0x40, 0x07, 0x05, 0x06, 0x01, 0x23, 0x0C, 0xA0, + 0x81, 0xFC, 0xFC, 0xA9, 0x00, 0x0C, 0xE5, 0xFF, 0xF0, 0x04, 0x7A, 0x1A, 0x40, 0x3D, 0x00, 0x01, + 0xC5, 0xC0, 0x0F, 0x31, 0x34, 0xFE, 0xCE, 0x9C, 0x27, 0x44, 0x00, 0x00, 0x0B, 0x0A, 0x46, 0x4F, + 0xA2, 0x1C, 0x98, 0xE0, 0xFA, 0xEB, 0xAB, 0x25, 0x00, 0x00, 0x15, 0x07, 0x33, 0x20, 0xE9, 0x12, + 0x62, 0x07, 0x30, 0xCA, 0x5C, 0xDD, 0x53, 0x29, 0x10, 0xC8, 0x9A, 0x00, 0x10, 0x89, 0xD3, 0x04, + 0x63, 0x9B, 0xB0, 0xB0, 0x30, 0x00, 0x7D, 0x5E, 0x14, 0x31, 0x03, 0x48, 0xC8, 0x0A, 0x00, 0x32, + 0x01, 0x57, 0xDB, 0xDF, 0x37, 0x00, 0xD7, 0xAF, 0x20, 0xB2, 0x91, 0x0A, 0x00, 0x60, 0x87, 0xFF, + 0xFF, 0xB2, 0x02, 0x7C, 0x0A, 0x00, 0x10, 0xE7, 0x6F, 0x1C, 0x00, 0x0A, 0x00, 0x11, 0x0C, 0x1C, + 0x3E, 0xB0, 0x7E, 0xFF, 0xFF, 0xB9, 0x03, 0xF1, 0xFF, 0xFF, 0xA3, 0x62, 0xEC, 0xC8, 0x06, 0x01, + 0x81, 0x25, 0x10, 0xAD, 0x5E, 0x08, 0xB5, 0x0A, 0x9B, 0xF4, 0xEC, 0x88, 0x17, 0xFF, 0xFF, 0xEB, + 0x0B, 0x0A, 0x1C, 0x09, 0x15, 0x92, 0x32, 0x39, 0x1F, 0x94, 0x0A, 0x00, 0x14, 0x83, 0x96, 0x6A, + 0xDA, 0xF7, 0xB8, 0x1C, 0x00, 0xB4, 0xE4, 0x3E, 0x10, 0xC2, 0x0A, 0x00, 0x20, 0xE7, 0x6D, 0x62, + 0x0F, 0x11, 0x27, 0x28, 0x00, 0x00, 0x6D, 0x08, 0x12, 0x5B, 0x32, 0x00, 0x42, 0xDA, 0xFF, 0xFF, + 0x6F, 0x0A, 0x00, 0x4F, 0xD8, 0xFF, 0xFF, 0x70, 0x0A, 0x00, 0x11, 0x41, 0xDA, 0xFF, 0xFF, 0x6B, + 0x0A, 0x00, 0x00, 0x85, 0xCC, 0x60, 0x55, 0xB4, 0xFF, 0xFF, 0xD2, 0x5C, 0x8E, 0x07, 0x23, 0x1E, + 0xB4, 0xF1, 0x41, 0x10, 0xB4, 0x6E, 0x00, 0x50, 0x98, 0x79, 0xE6, 0xF7, 0xB1, 0x52, 0x21, 0x32, + 0x0B, 0x09, 0x0E, 0x18, 0x03, 0x92, 0x2C, 0xAD, 0xE9, 0xFB, 0xE6, 0xA5, 0x23, 0x00, 0x24, 0x61, + 0x3D, 0xC0, 0xE8, 0x11, 0x9A, 0xFF, 0xFF, 0xC8, 0x5A, 0xD7, 0xFF, 0xFF, 0x6A, 0xDE, 0x7E, 0x05, + 0x50, 0x7A, 0xFF, 0xFF, 0x99, 0xFB, 0xD4, 0x03, 0x41, 0x6D, 0xFF, 0xFF, 0xA4, 0x80, 0x34, 0x45, + 0x1F, 0x48, 0x48, 0x2F, 0x89, 0x34, 0x0A, 0x09, 0x00, 0x45, 0x3A, 0x88, 0x88, 0x58, 0x2D, 0x00, + 0x10, 0xDE, 0x32, 0x1C, 0xE2, 0x7A, 0xFF, 0xFF, 0x97, 0x9B, 0xFF, 0xFF, 0xCC, 0x5F, 0xD9, 0xFF, + 0xFF, 0x65, 0x26, 0x29, 0x45, 0x90, 0xE3, 0x0D, 0x00, 0x2F, 0xB1, 0xED, 0xFE, 0xE8, 0xA3, 0x0E, + 0x07, 0x04, 0x50, 0x01, 0x05, 0x21, 0xE0, 0x15, 0x1C, 0x1D, 0x97, 0x0F, 0x0A, 0x00, 0x0D, 0x59, + 0x5D, 0xDB, 0xF7, 0xBB, 0x5E, 0xD2, 0x63, 0x60, 0x1C, 0xA3, 0xFF, 0xFF, 0xDC, 0x5C, 0x01, 0x74, + 0x11, 0x1C, 0xFC, 0x20, 0x01, 0x28, 0x00, 0x10, 0xF6, 0xBC, 0x35, 0x01, 0x0A, 0x00, 0x10, 0xFC, + 0x0F, 0x03, 0x0F, 0x0A, 0x00, 0x10, 0x10, 0xF8, 0xE2, 0x05, 0x01, 0x0A, 0x00, 0x10, 0xE3, 0xF0, + 0x08, 0x01, 0x0A, 0x00, 0x50, 0xB3, 0xFF, 0xFF, 0xD9, 0x53, 0xCE, 0x1F, 0x24, 0x1C, 0x53, 0x67, + 0x46, 0x72, 0x1C, 0x01, 0x6D, 0xE1, 0xFB, 0xC2, 0x5D, 0x96, 0x00, 0x05, 0x50, 0x01, 0x92, 0x29, + 0xAA, 0xE8, 0xFA, 0xE3, 0x9F, 0x18, 0x00, 0x22, 0x0B, 0x1F, 0xC0, 0xDB, 0x09, 0x98, 0xFF, 0xFF, + 0xC2, 0x5A, 0xD2, 0xFF, 0xFF, 0x5D, 0xDC, 0x57, 0x00, 0x50, 0x6D, 0xFF, 0xFF, 0x9A, 0xFA, 0x77, + 0x0C, 0x12, 0x61, 0xDD, 0x49, 0x31, 0xDF, 0xD4, 0xE5, 0x92, 0x11, 0x03, 0x91, 0x3C, 0x00, 0xDA, + 0x2F, 0x00, 0xD3, 0x1F, 0x15, 0x03, 0xCD, 0x35, 0x10, 0xFB, 0x2D, 0x00, 0x50, 0x5C, 0xF4, 0xF4, + 0xB3, 0xDE, 0x54, 0x46, 0x80, 0x73, 0xFF, 0xFF, 0xAA, 0x9C, 0xFF, 0xFF, 0xCF, 0x9D, 0x01, 0x22, + 0x70, 0x28, 0xAA, 0x40, 0x90, 0xE1, 0x0D, 0x00, 0x2F, 0xB0, 0xEB, 0xFE, 0xE7, 0x9F, 0xC2, 0x03, + 0x24, 0x07, 0x08, 0x84, 0x0D, 0x63, 0x12, 0x9E, 0xE9, 0xF9, 0xEA, 0x23, 0xE6, 0x67, 0xB3, 0x28, + 0x00, 0x01, 0xF0, 0xFF, 0xFF, 0xB2, 0x5A, 0x12, 0x00, 0x0B, 0xA3, 0x06, 0x12, 0x10, 0xB6, 0x3B, + 0x21, 0x8E, 0xFD, 0xDF, 0xDF, 0x04, 0xF6, 0xDB, 0x20, 0x28, 0x2D, 0x3A, 0x67, 0x34, 0x74, 0x50, + 0x0D, 0x20, 0x00, 0x0F, 0x08, 0x00, 0x3D, 0x31, 0x0B, 0x0C, 0x13, 0x20, 0x04, 0x07, 0xCC, 0x8D, + 0x00, 0xB4, 0x1F, 0xB2, 0xA3, 0xE8, 0xF9, 0xD5, 0x5F, 0x06, 0x99, 0xF0, 0x0A, 0x00, 0x17, 0x00, + 0x1F, 0x40, 0xCE, 0xFF, 0xF4, 0x3D, 0x3E, 0x09, 0x71, 0xB8, 0x5A, 0xD5, 0xFF, 0xFF, 0x79, 0x0C, + 0x52, 0x08, 0x32, 0x36, 0x00, 0x6A, 0x89, 0x3C, 0x10, 0xEE, 0xCC, 0x31, 0x12, 0x51, 0x15, 0xD7, + 0x10, 0xF1, 0x52, 0x0B, 0x12, 0x50, 0x5E, 0x44, 0x10, 0xD3, 0x5F, 0x24, 0x12, 0x69, 0x2F, 0x13, + 0x62, 0x8D, 0xFF, 0xFF, 0xB3, 0x52, 0xD1, 0x7B, 0x0B, 0x12, 0x0E, 0x79, 0x39, 0x10, 0xCC, 0xA6, + 0x04, 0x82, 0x23, 0xDE, 0xEC, 0xE5, 0xFF, 0xE9, 0x99, 0x13, 0xFB, 0xA6, 0x36, 0x84, 0x00, 0x02, + 0xAD, 0xC3, 0x50, 0xE2, 0xC2, 0xAA, 0x8B, 0x4B, 0x24, 0x00, 0x13, 0x60, 0xDD, 0x57, 0xB0, 0xC0, + 0x06, 0x00, 0x00, 0x50, 0xF3, 0xEC, 0x61, 0x73, 0x8D, 0xD0, 0x6E, 0x16, 0x42, 0x24, 0xF9, 0xFF, + 0x87, 0xEC, 0xFB, 0x10, 0x80, 0xDE, 0x26, 0x50, 0xD8, 0x6C, 0x51, 0x55, 0xA1, 0x85, 0x13, 0x14, + 0x45, 0xBF, 0x01, 0xD6, 0xEF, 0x18, 0x00, 0x00, 0x50, 0xB4, 0xE8, 0xFD, 0xFF, 0xFB, 0xE1, 0xA7, + 0x2E, 0xDC, 0x02, 0x15, 0xAE, 0x2C, 0x04, 0x15, 0xB0, 0x0E, 0x04, 0x0F, 0x0A, 0x00, 0x0F, 0x50, + 0x34, 0xAF, 0xEF, 0xEB, 0x62, 0x0A, 0x00, 0x11, 0xDF, 0x27, 0x74, 0x60, 0x12, 0xB0, 0xFF, 0xFF, + 0xF9, 0x85, 0xEC, 0x0E, 0x20, 0x43, 0xB0, 0x6E, 0x32, 0x52, 0x02, 0xFB, 0xFF, 0xFF, 0x4C, 0x32, + 0x00, 0x1F, 0xF8, 0x0A, 0x00, 0x4A, 0x06, 0xA0, 0x34, 0xB5, 0xA2, 0xFC, 0xFC, 0xA6, 0xA4, 0xFF, + 0xFF, 0xA8, 0x34, 0x50, 0x50, 0x3D, 0x96, 0x8F, 0xA2, 0xFC, 0xFC, 0xA2, 0xA4, 0xFF, 0xFF, 0xA4, + 0x04, 0x00, 0x1D, 0x42, 0x06, 0x06, 0x17, 0xFF, 0x08, 0x02, 0x41, 0x6B, 0xFC, 0xFC, 0xDD, 0x69, + 0x0B, 0x89, 0xE0, 0x00, 0x00, 0x22, 0x50, 0x50, 0x46, 0x00, 0x01, 0x00, 0x11, 0x6B, 0x74, 0xEA, + 0x11, 0x6C, 0x56, 0x26, 0x0F, 0x06, 0x00, 0x35, 0xA2, 0x7C, 0xFF, 0xFF, 0xDA, 0x2F, 0x84, 0xEC, + 0xFF, 0xFF, 0xB8, 0x42, 0x16, 0x57, 0x48, 0xEF, 0xFD, 0xD6, 0x5F, 0xF4, 0x27, 0x55, 0xB2, 0xFC, + 0xFC, 0x8A, 0x00, 0xB5, 0x05, 0x1F, 0x8C, 0x0B, 0x00, 0x1B, 0x51, 0x4A, 0xFC, 0xFC, 0xFC, 0x43, + 0x0B, 0x00, 0x20, 0x0A, 0xDF, 0x94, 0x06, 0x01, 0x0B, 0x00, 0x51, 0x87, 0xFF, 0xFF, 0xF3, 0x1B, + 0x0B, 0x00, 0x21, 0x2C, 0xFB, 0xF2, 0x09, 0x91, 0xB4, 0xFF, 0xFF, 0x8E, 0xC4, 0xFF, 0xFF, 0xD4, + 0x05, 0x0B, 0x00, 0x13, 0xE3, 0x60, 0x3A, 0x16, 0xB4, 0x81, 0x84, 0x00, 0x0B, 0x00, 0x42, 0x95, + 0xFF, 0xFF, 0xE8, 0x21, 0x00, 0x31, 0xB1, 0x02, 0xE3, 0x76, 0x0A, 0x01, 0x63, 0x00, 0x11, 0x89, + 0xD7, 0x06, 0x01, 0x0B, 0x00, 0x11, 0x2E, 0xBC, 0x18, 0x02, 0x79, 0x00, 0x10, 0xD2, 0xCA, 0x23, + 0x02, 0x0B, 0x00, 0x52, 0x76, 0xFF, 0xFF, 0xE6, 0x05, 0x0B, 0x00, 0x22, 0x1D, 0xFE, 0x5B, 0x00, + 0x04, 0x64, 0x36, 0x8F, 0x86, 0xFC, 0xFC, 0xBD, 0x88, 0xFF, 0xFF, 0xC0, 0x04, 0x00, 0x31, 0x22, + 0x11, 0x10, 0xF4, 0x04, 0xF3, 0x02, 0xBD, 0xFC, 0xFC, 0x60, 0x65, 0xCF, 0xF8, 0xD4, 0x37, 0x07, + 0x7D, 0xDA, 0xF8, 0xB9, 0x1E, 0x00, 0xC0, 0xF1, 0x8C, 0x22, 0xDD, 0xC4, 0x37, 0x99, 0x50, 0xC0, + 0xFF, 0xFF, 0xED, 0x79, 0x26, 0x3E, 0x81, 0xDB, 0x69, 0x94, 0xFF, 0xFF, 0xF6, 0x02, 0xC0, 0xC6, + 0x03, 0x10, 0xEA, 0x2C, 0x17, 0x00, 0x9B, 0x0D, 0x21, 0x0C, 0xC0, 0xC8, 0x20, 0x10, 0xE4, 0x78, + 0x0E, 0x1F, 0x14, 0x10, 0x00, 0x81, 0x25, 0x0B, 0x0A, 0xE8, 0x00, 0x65, 0x86, 0x40, 0xB7, 0xF2, + 0xE3, 0x51, 0xE2, 0x00, 0x10, 0xEB, 0xC5, 0x58, 0x20, 0xF2, 0x79, 0x1C, 0x48, 0x20, 0x29, 0xC0, + 0x45, 0x36, 0x00, 0xB2, 0x4D, 0x20, 0x34, 0xC0, 0xD3, 0x2D, 0x1F, 0x14, 0x0A, 0x00, 0x4B, 0x05, + 0x70, 0x06, 0x92, 0x28, 0xAA, 0xE8, 0xFA, 0xE2, 0x9B, 0x1A, 0x00, 0x24, 0xF6, 0x43, 0xC0, 0xE3, + 0x12, 0x9E, 0xFF, 0xFF, 0xC7, 0x5B, 0xD9, 0xFF, 0xFF, 0x80, 0xE3, 0xEE, 0x0E, 0x50, 0x72, 0xFF, + 0xFF, 0xC6, 0xFE, 0x43, 0x06, 0x41, 0x5E, 0xFF, 0xFF, 0xE2, 0x55, 0x06, 0x12, 0x5C, 0xBC, 0x00, + 0x0F, 0x09, 0x00, 0x05, 0x01, 0x2D, 0x00, 0x50, 0x5D, 0xFF, 0xFF, 0xE2, 0xE4, 0x10, 0x07, 0xE2, + 0x72, 0xFF, 0xFF, 0xC7, 0xA2, 0xFF, 0xFF, 0xC2, 0x52, 0xD4, 0xFF, 0xFF, 0x83, 0x27, 0x23, 0x08, + 0xA1, 0xE6, 0x14, 0x00, 0x2B, 0xAE, 0xEC, 0xFE, 0xE6, 0xA0, 0x1D, 0xC0, 0x07, 0x32, 0x12, 0x01, + 0xFC, 0x1C, 0x01, 0x60, 0x8C, 0x79, 0xDE, 0xF7, 0xB4, 0x18, 0x1C, 0x01, 0x12, 0xFA, 0x7B, 0x18, + 0x00, 0x26, 0x01, 0x10, 0x6B, 0x89, 0x3D, 0x11, 0x20, 0xB8, 0x00, 0x51, 0x05, 0xF6, 0xFF, 0xFF, + 0x53, 0x0A, 0x00, 0x00, 0xDB, 0x10, 0x12, 0x67, 0x0A, 0x00, 0x4F, 0xDC, 0xFF, 0xFF, 0x68, 0x0A, + 0x00, 0x11, 0x41, 0xDF, 0xFF, 0xFF, 0x63, 0x0A, 0x00, 0xF4, 0x00, 0x03, 0xF5, 0xFF, 0xFF, 0x4D, + 0xC0, 0xFF, 0xFF, 0xCC, 0x5A, 0x85, 0xFF, 0xFF, 0xFE, 0x17, 0x6E, 0x00, 0x10, 0xAC, 0x6E, 0x00, + 0x85, 0x8D, 0x7C, 0xE8, 0xF6, 0xAD, 0x10, 0x00, 0xC0, 0x42, 0x41, 0x0F, 0x0A, 0x00, 0x0B, 0x04, + 0xBC, 0x00, 0xC3, 0x00, 0x5B, 0xDC, 0xF8, 0xC0, 0x57, 0xFC, 0xFC, 0xFC, 0x24, 0x37, 0xFE, 0xDC, + 0x07, 0x60, 0x24, 0xA2, 0xFF, 0xFF, 0xDE, 0x5C, 0xEB, 0x29, 0x20, 0x24, 0xDC, 0x55, 0x11, 0x00, + 0xD9, 0x0D, 0x20, 0x24, 0xF3, 0x4B, 0x03, 0x01, 0x0A, 0x00, 0x10, 0xF8, 0x1C, 0x01, 0x0F, 0x0A, + 0x00, 0x10, 0x10, 0xF4, 0xB6, 0x03, 0x01, 0x0A, 0x00, 0x10, 0xE0, 0x4A, 0x08, 0x01, 0x0A, 0x00, + 0x51, 0xB0, 0xFF, 0xFF, 0xDB, 0x54, 0x4B, 0x1C, 0x24, 0x52, 0xFF, 0x6E, 0x00, 0x65, 0x01, 0x6D, + 0xE0, 0xFB, 0xC4, 0x57, 0x5C, 0x29, 0x1F, 0x24, 0x0A, 0x00, 0x0F, 0x37, 0x08, 0x07, 0x0F, 0xB3, + 0x28, 0x10, 0x05, 0x8F, 0x0A, 0x83, 0x26, 0xBE, 0xFB, 0xB4, 0xFF, 0xFF, 0xAA, 0xE2, 0x36, 0x52, + 0xA2, 0xF9, 0xFD, 0xB4, 0xFF, 0xFF, 0xFE, 0x6A, 0x05, 0x0B, 0xB4, 0x2D, 0x5B, 0x03, 0x8A, 0x0A, + 0x0F, 0x07, 0x00, 0x25, 0x01, 0xA8, 0x0D, 0x03, 0x90, 0x0B, 0x74, 0x01, 0x5F, 0xCE, 0xF7, 0xEA, + 0x9A, 0x12, 0x48, 0x45, 0xC1, 0xCC, 0x04, 0x05, 0xF1, 0xFF, 0xFD, 0x72, 0x89, 0xFF, 0xFF, 0x5D, + 0x21, 0x75, 0x44, 0x50, 0xBC, 0xFF, 0x90, 0x09, 0xF8, 0xFB, 0x19, 0x22, 0x3A, 0x2E, 0xA0, 0x46, + 0x11, 0x81, 0x9F, 0x28, 0x00, 0x00, 0x2A, 0x10, 0x9D, 0xF1, 0x28, 0x10, 0x0A, 0x88, 0x4C, 0x10, + 0xB0, 0x6A, 0x07, 0x21, 0x02, 0x85, 0x6D, 0x88, 0x30, 0x09, 0x53, 0x09, 0x54, 0x17, 0x50, 0xE1, + 0x4A, 0xF1, 0xFF, 0x5E, 0xFA, 0xAC, 0x70, 0xFC, 0x1D, 0xFA, 0xFF, 0xEB, 0x64, 0x83, 0xEC, 0x10, + 0x14, 0x80, 0x6D, 0xBE, 0x60, 0x01, 0x65, 0xD0, 0xFA, 0xF4, 0xC1, 0x80, 0x0E, 0x36, 0x08, 0x08, + 0x12, 0x67, 0x1E, 0x13, 0x1C, 0x5E, 0x8B, 0x0F, 0x08, 0x00, 0x00, 0x12, 0x8A, 0xDC, 0x08, 0x13, + 0x38, 0x10, 0x17, 0x20, 0x38, 0x2C, 0xD1, 0x28, 0x3E, 0x64, 0x50, 0x12, 0x30, 0x00, 0x0F, 0x08, + 0x00, 0x14, 0x13, 0x2A, 0x9D, 0x41, 0x73, 0x0D, 0xFD, 0xFF, 0xFF, 0xD2, 0x94, 0x3A, 0xB8, 0x54, + 0x94, 0x5C, 0x00, 0x00, 0x17, 0xB0, 0xF2, 0xFC, 0xEF, 0x51, 0x28, 0x04, 0x10, 0xD5, 0x0A, 0x2F, + 0x10, 0x38, 0x13, 0x16, 0x00, 0x9E, 0x0B, 0x01, 0x6B, 0x2B, 0x0F, 0x0A, 0x00, 0x41, 0x12, 0x75, + 0x0A, 0x00, 0x50, 0xCE, 0xFF, 0xFF, 0xD2, 0x70, 0xB9, 0x32, 0x11, 0x0C, 0xC0, 0x62, 0x00, 0xCA, + 0x55, 0x60, 0x0C, 0x1C, 0xC8, 0xFB, 0xD3, 0x68, 0xC2, 0x1E, 0x44, 0x0C, 0x0A, 0x0A, 0x0E, 0x27, + 0xB8, 0x11, 0x93, 0xA6, 0x12, 0x20, 0x4F, 0x67, 0xC3, 0x17, 0x60, 0x01, 0xF3, 0xFF, 0xFF, 0x1F, + 0x36, 0x47, 0x14, 0x10, 0x15, 0x4A, 0x18, 0x61, 0x09, 0xFC, 0xFF, 0xFA, 0x03, 0x37, 0xC6, 0x14, + 0x51, 0xD3, 0xFF, 0xFF, 0x1E, 0x5A, 0xDC, 0x14, 0x51, 0xA1, 0xFF, 0xFF, 0x41, 0x7C, 0xDF, 0x00, + 0x51, 0x70, 0xFF, 0xFF, 0x63, 0x9E, 0xBD, 0x10, 0x51, 0x3E, 0xFF, 0xFF, 0x86, 0xC0, 0x11, 0xB0, + 0x52, 0x0E, 0xFF, 0xFF, 0xA8, 0xE2, 0xCE, 0x48, 0x65, 0xDB, 0xFF, 0xD2, 0xFE, 0xFF, 0x98, 0xBE, + 0x97, 0x15, 0x67, 0x64, 0x45, 0x14, 0x36, 0xCA, 0x4C, 0x24, 0xFC, 0x09, 0x3D, 0x98, 0x00, 0x67, + 0x40, 0x22, 0x0E, 0x0E, 0x94, 0x00, 0x10, 0x54, 0x0C, 0xB0, 0xA0, 0x19, 0xFC, 0xFC, 0x72, 0x00, + 0x06, 0xF9, 0xFC, 0x96, 0x2F, 0x78, 0x0E, 0x10, 0x42, 0x4A, 0x11, 0x50, 0x26, 0xFF, 0xFF, 0x70, + 0x0A, 0xD2, 0x09, 0x10, 0x6C, 0x85, 0x0D, 0x10, 0x49, 0xB0, 0x18, 0x30, 0xE0, 0xFF, 0xC4, 0xA1, + 0x18, 0x10, 0xE8, 0x40, 0x0B, 0x51, 0x1F, 0x00, 0xB9, 0xFF, 0xE5, 0x9B, 0x4C, 0x50, 0x0F, 0x91, + 0xFF, 0xF5, 0x02, 0x61, 0x02, 0x91, 0x08, 0xE9, 0xFF, 0xEE, 0xFF, 0x36, 0xB4, 0xFF, 0xCE, 0x87, + 0x14, 0x91, 0x3A, 0xFF, 0xF2, 0xA7, 0xFF, 0x5E, 0xD8, 0xFF, 0xA6, 0x57, 0x11, 0x91, 0x84, 0xFF, + 0xC3, 0x78, 0xFF, 0x87, 0xF9, 0xFF, 0x7E, 0x04, 0x10, 0x61, 0xCF, 0xFF, 0x94, 0x4B, 0xFF, 0xCB, + 0x9F, 0x51, 0x01, 0x06, 0x14, 0x24, 0x65, 0x1D, 0x37, 0x47, 0x00, 0x56, 0x28, 0x33, 0x35, 0x01, + 0xF0, 0x7F, 0x51, 0x73, 0xA7, 0xFF, 0xFF, 0xFD, 0x09, 0x00, 0xC2, 0xCE, 0x2E, 0x11, 0x80, 0xAE, + 0x53, 0x13, 0x95, 0x02, 0x31, 0x11, 0x58, 0x85, 0x11, 0x11, 0x67, 0x60, 0x07, 0x04, 0x60, 0x01, + 0x10, 0x7B, 0x74, 0xE4, 0x00, 0xAE, 0x08, 0x10, 0x65, 0x99, 0x50, 0x60, 0x27, 0x00, 0xCC, 0xFF, + 0xF0, 0x0C, 0xF0, 0x0F, 0x21, 0x95, 0x2D, 0x59, 0x12, 0x52, 0x2C, 0xFF, 0xFF, 0xF5, 0x9E, 0xC3, + 0x10, 0x15, 0xB9, 0x6D, 0x46, 0x15, 0x48, 0x39, 0x43, 0x00, 0x2F, 0xEE, 0x24, 0xDE, 0x03, 0x61, + 0x56, 0x25, 0xD7, 0x02, 0x4A, 0x20, 0x00, 0xED, 0x5A, 0x42, 0x08, 0xED, 0xFF, 0xFD, 0xB2, 0x1A, + 0x51, 0x5C, 0xFF, 0xFF, 0x7D, 0xF4, 0x0E, 0x38, 0x50, 0xC4, 0xFF, 0xF9, 0x13, 0x8F, 0xD2, 0x30, + 0x10, 0x2D, 0xC5, 0x0F, 0x61, 0x1E, 0xFC, 0xFF, 0xFE, 0x26, 0x94, 0x4C, 0x00, 0x92, 0xA3, 0xFF, + 0xFF, 0x99, 0x0A, 0x0A, 0x12, 0x00, 0xFC, 0x4A, 0xAB, 0x11, 0x72, 0x9A, 0x00, 0x21, 0xAE, 0x7C, + 0x20, 0x0B, 0x51, 0xA6, 0xFF, 0xFF, 0x78, 0x3D, 0xCC, 0x28, 0xE0, 0xCF, 0xFF, 0xFF, 0x3F, 0x07, + 0xF7, 0xFF, 0xFB, 0x07, 0x02, 0xF6, 0xFF, 0xFC, 0x0B, 0xBE, 0x53, 0x21, 0x30, 0x21, 0x7E, 0x19, + 0x51, 0x7D, 0xFF, 0xFF, 0x60, 0x4A, 0xCB, 0x20, 0x51, 0x3D, 0xFF, 0xFF, 0x8F, 0x73, 0xAE, 0x3B, + 0x52, 0x07, 0xF7, 0xFF, 0xBE, 0x9C, 0x7D, 0x04, 0x72, 0xBD, 0xFF, 0xEE, 0xC5, 0xFF, 0xEB, 0x01, + 0xC2, 0x16, 0x35, 0xFA, 0xFF, 0xB3, 0x19, 0x67, 0x01, 0xD4, 0xA6, 0x25, 0x08, 0xF9, 0x9F, 0x44, + 0x54, 0xC2, 0xFF, 0xFF, 0xFD, 0x0D, 0xAB, 0x19, 0x15, 0xD1, 0x86, 0x4A, 0x01, 0x95, 0x11, 0x33, + 0x40, 0x74, 0xD4, 0xFA, 0x31, 0x00, 0x8F, 0x50, 0x11, 0xC5, 0x48, 0x1B, 0x41, 0xAC, 0xF5, 0xC6, + 0x7D, 0xC4, 0x11, 0x14, 0x09, 0x64, 0x04, 0x14, 0xD5, 0x3C, 0xA3, 0x14, 0xD8, 0xB6, 0x51, 0x20, + 0x44, 0x50, 0xC9, 0x1A, 0x23, 0xF0, 0x0B, 0xFE, 0x48, 0x01, 0xAE, 0x36, 0x23, 0x20, 0xFE, 0x4C, + 0x53, 0x13, 0x86, 0x0C, 0x7A, 0x23, 0x07, 0xE9, 0x34, 0x14, 0x14, 0x59, 0x4C, 0x15, 0x13, 0xC3, + 0x5D, 0x4D, 0x14, 0x2D, 0xC2, 0x4E, 0x13, 0x96, 0x72, 0x30, 0x94, 0x0D, 0xF3, 0xFF, 0xFF, 0x91, + 0x48, 0x48, 0x48, 0x10, 0x1A, 0xE2, 0x26, 0x38, 0x34, 0xD1, 0x90, 0x04, 0x40, 0x13, 0xA1, 0x00, + 0x00, 0x5A, 0xCB, 0xF5, 0xFC, 0x7B, 0x00, 0x2A, 0xFE, 0x73, 0x57, 0x82, 0x68, 0xFF, 0xFF, 0xFB, + 0x70, 0x28, 0x00, 0x7A, 0x7A, 0x24, 0x12, 0x7C, 0xC1, 0x2C, 0x12, 0x7C, 0xE8, 0x34, 0x12, 0x7D, + 0x07, 0x00, 0x12, 0x80, 0x22, 0x16, 0x11, 0x93, 0x14, 0x37, 0x21, 0x50, 0xE1, 0x16, 0x2F, 0x51, + 0xF4, 0xFF, 0xFF, 0xA2, 0x09, 0x07, 0x00, 0x52, 0xCB, 0x0F, 0x00, 0x00, 0x12, 0xFC, 0x2F, 0x22, + 0x00, 0x90, 0x99, 0x05, 0x12, 0x80, 0x55, 0xA9, 0x03, 0x3F, 0x00, 0x1C, 0x7C, 0x07, 0x00, 0x12, + 0xC2, 0x85, 0x25, 0x12, 0xD1, 0x05, 0x31, 0x62, 0xFD, 0x70, 0x26, 0x00, 0x1D, 0xF9, 0xFF, 0x57, + 0x31, 0x4C, 0xC8, 0xF8, 0x4B, 0x2B, 0x22, 0x06, 0x04, 0xAC, 0x00, 0x97, 0x5F, 0xFC, 0xFC, 0x76, + 0x61, 0xFF, 0xFF, 0x77, 0x62, 0x04, 0x00, 0x12, 0x63, 0x04, 0x00, 0x10, 0x76, 0x04, 0x00, 0x17, + 0x64, 0x04, 0x00, 0x12, 0x65, 0x04, 0x00, 0x10, 0x75, 0x04, 0x00, 0x17, 0x66, 0x04, 0x00, 0x12, + 0x67, 0x04, 0x00, 0x10, 0x74, 0x04, 0x00, 0x17, 0x68, 0x04, 0x00, 0x13, 0x09, 0x10, 0x01, 0x52, + 0xF5, 0xFB, 0xE6, 0xA5, 0x19, 0xDA, 0x9E, 0x52, 0xAF, 0x00, 0x00, 0x53, 0xBB, 0x13, 0xE8, 0x12, + 0x49, 0xDE, 0xDA, 0x12, 0x3D, 0x89, 0x67, 0x19, 0x3C, 0x07, 0x00, 0x12, 0x3B, 0xBC, 0xE9, 0x12, + 0x26, 0xD3, 0x83, 0x00, 0x0C, 0x88, 0x21, 0x92, 0x24, 0x10, 0x2F, 0x00, 0x7C, 0x30, 0x20, 0x5C, + 0xFB, 0x07, 0x00, 0x82, 0x03, 0xEE, 0xFF, 0xFF, 0x62, 0x04, 0x00, 0x21, 0xC7, 0xB3, 0x12, 0x39, + 0x31, 0x00, 0x0A, 0x46, 0x00, 0x03, 0x5B, 0x00, 0x12, 0x3E, 0xC6, 0x3A, 0x81, 0x4D, 0xFF, 0xFF, + 0xFB, 0x00, 0x00, 0x50, 0xBE, 0x4E, 0xDD, 0x12, 0xF8, 0x16, 0x8B, 0x42, 0xF8, 0xFF, 0xE7, 0x9D, + 0x21, 0x19, 0x41, 0x0B, 0x0B, 0x05, 0x00, 0xFF, 0x16, 0x93, 0x02, 0x75, 0xEA, 0xCF, 0x4D, 0x00, + 0x00, 0x0A, 0x3C, 0x2C, 0x31, 0xA0, 0xB5, 0x59, 0xCD, 0xF3, 0x2A, 0x05, 0xC8, 0xE5, 0x66, 0x97, + 0x53, 0x17, 0xC9, 0xDB, 0x16, 0x00, 0x1F, 0x20, 0x00, 0x00, 0x2D, 0xB7, 0xFB, 0xB1, 0x1A, 0xCD, + 0x43, 0x22, 0x09, 0x08, 0x48, 0x00, 0x91, 0x2F, 0xDB, 0xCC, 0xCC, 0xCC, 0xCC, 0xDB, 0x28, 0x34, + 0xDC, 0x04, 0x2F, 0xA0, 0x2C, 0x08, 0x00, 0x56, 0xF0, 0x1E, 0xEA, 0xC8, 0xC8, 0xC8, 0xC8, 0xEB, + 0x2C, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x28, 0x42, 0xFF, 0xFF, 0x18, 0xC6, 0x04, + 0x21, 0xC7, 0x39, 0x10, 0x84, 0x9D, 0xC4, 0xFF, 0xFF, 0x04, 0x21, 0xEB, 0x5A, 0x10, 0x84, 0x08, + 0x42, 0x04, 0x21, 0x10, 0x84, 0x14, 0xFD, 0xF6, 0x15, 0xE0, 0x1F, 0x04, 0x10, 0x84, 0x18, 0xC6, + 0x1F, 0x04, 0xFF, 0xFF, 0x08, 0x42, 0x10, 0x84, 0x06, 0x00, 0x22, 0x18, 0xC6, 0x0A, 0x00, 0x00, + 0x08, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 0x08, 0x51, 0x02, 0x00, 0x2C, 0x51, 0x02, 0x00, + 0x4C, 0x51, 0x02, 0x00, 0x6C, 0x51, 0x02, 0x00, 0x8C, 0x51, 0x02, 0x00, 0xAC, 0x51, 0x02, 0x00, + 0xCC, 0x51, 0x02, 0x00, 0xF0, 0x51, 0x02, 0x00, 0x10, 0x52, 0x02, 0x00, 0x30, 0x52, 0x02, 0x00, + 0x54, 0x52, 0x02, 0x00, 0x58, 0x52, 0x02, 0x00, 0x5C, 0x52, 0x02, 0x00, 0x60, 0x52, 0x02, 0x00, + 0x64, 0x52, 0x02, 0x00, 0x68, 0x52, 0x02, 0x00, 0x88, 0x52, 0x02, 0x00, 0xA8, 0x52, 0x02, 0x00, + 0xC8, 0x52, 0x02, 0x00, 0xE8, 0x52, 0x02, 0x00, 0x08, 0x53, 0x02, 0x00, 0x28, 0x53, 0x02, 0x00, + 0x48, 0x53, 0x02, 0x00, 0x68, 0x53, 0x02, 0x00, 0x88, 0x53, 0x02, 0x00, 0xA8, 0x53, 0x02, 0x00, + 0xAC, 0x53, 0x02, 0x00, 0xB0, 0x53, 0x02, 0x00, 0xB4, 0x53, 0x02, 0x00, 0xB8, 0x53, 0x02, 0x00, + 0xBC, 0x53, 0x02, 0x00, 0xC0, 0x53, 0x02, 0x00, 0xC4, 0x53, 0x02, 0x00, 0xE4, 0x53, 0x02, 0x00, + 0x04, 0x54, 0x02, 0x00, 0x24, 0x54, 0x02, 0x00, 0x28, 0x54, 0x02, 0x00, 0x2C, 0x54, 0x02, 0x00, + 0x30, 0x54, 0x02, 0x00, 0x50, 0x54, 0x02, 0x00, 0x70, 0x54, 0x02, 0x00, 0x90, 0x54, 0x02, 0x00, + 0xB0, 0x54, 0x02, 0x00, 0xD0, 0x54, 0x02, 0x00, 0xF0, 0x54, 0x02, 0x00, 0x10, 0x55, 0x02, 0x00, + 0x30, 0x55, 0x02, 0x00, 0x50, 0x55, 0x02, 0x00, 0x70, 0x55, 0x02, 0x00, 0x90, 0x55, 0x02, 0x00, + 0xB0, 0x55, 0x02, 0x00, 0xD0, 0x55, 0x02, 0x00, 0xF0, 0x55, 0x02, 0x00, 0x10, 0x56, 0x02, 0x00, + 0x14, 0x56, 0x02, 0x00, 0x18, 0x56, 0x02, 0x00, 0x1C, 0x56, 0x02, 0x00, 0x20, 0x56, 0x02, 0x00, + 0x24, 0x56, 0x02, 0x00, 0x28, 0x56, 0x02, 0x00, 0x2C, 0x56, 0x02, 0x00, 0x30, 0x56, 0x02, 0x00, + 0x34, 0x56, 0x02, 0x00, 0x38, 0x56, 0x02, 0x00, 0x3C, 0x56, 0x02, 0x00, 0x40, 0x56, 0x02, 0x00, + 0x44, 0x56, 0x02, 0x00, 0x48, 0x56, 0x02, 0x00, 0x4C, 0x56, 0x02, 0x00, 0x50, 0x56, 0x02, 0x00, + 0x70, 0x56, 0x02, 0x00, 0x90, 0x56, 0x02, 0x00, 0xB0, 0x56, 0x02, 0x00, 0xD0, 0x56, 0x02, 0x00, + 0xF0, 0x56, 0x02, 0x00, 0x10, 0x57, 0x02, 0x00, 0x30, 0x57, 0x02, 0x00, 0x50, 0x57, 0x02, 0x00, + 0x70, 0x57, 0x02, 0x00, 0x90, 0x57, 0x02, 0x00, 0xB0, 0x57, 0x02, 0x00, 0xD0, 0x57, 0x02, 0x00, + 0xF0, 0x57, 0x02, 0x00, 0x10, 0x58, 0x02, 0x00, 0x30, 0x58, 0x02, 0x00, 0x50, 0x58, 0x02, 0x00, + 0x70, 0x58, 0x02, 0x00, 0x90, 0x58, 0x02, 0x00, 0xB0, 0x58, 0x02, 0x00, 0xD0, 0x58, 0x02, 0x00, + 0xF0, 0x58, 0x02, 0x00, 0x10, 0x59, 0x02, 0x00, 0x30, 0x59, 0x02, 0x00, 0x50, 0x59, 0x02, 0x00, + 0x70, 0x59, 0x02, 0x00, 0x90, 0x59, 0x02, 0x00, 0xB0, 0x59, 0x02, 0x00, 0xD0, 0x59, 0x02, 0x00, + 0xF0, 0x59, 0x02, 0x00, 0x10, 0x5A, 0x02, 0x00, 0x30, 0x5A, 0x02, 0x00, 0x50, 0x5A, 0x02, 0x00, + 0x70, 0x5A, 0x02, 0x00, 0x90, 0x5A, 0x02, 0x00, 0xB0, 0x5A, 0x02, 0x00, 0xD0, 0x5A, 0x02, 0x00, + 0xF0, 0x5A, 0x02, 0x00, 0x10, 0x5B, 0x02, 0x00, 0x30, 0x5B, 0x02, 0x00, 0x50, 0x5B, 0x02, 0x00, + 0x70, 0x5B, 0x02, 0x00, 0x90, 0x5B, 0x02, 0x00, 0xB0, 0x5B, 0x02, 0x00, 0xD0, 0x5B, 0x02, 0x00, + 0xF0, 0x5B, 0x02, 0x00, 0x10, 0x5C, 0x02, 0x00, 0x30, 0x5C, 0x02, 0x00, 0x50, 0x5C, 0x02, 0x00, + 0x70, 0x5C, 0x02, 0x00, 0x90, 0x5C, 0x02, 0x00, 0xB0, 0x5C, 0x02, 0x00, 0xD0, 0x5C, 0x02, 0x00, + 0xF0, 0x5C, 0x02, 0x00, 0x10, 0x5D, 0x02, 0x00, 0x30, 0x5D, 0x02, 0x00, 0x50, 0x5D, 0x02, 0x00, + 0x70, 0x5D, 0x02, 0x00, 0x90, 0x5D, 0x02, 0x00, 0xB0, 0x5D, 0x02, 0x00, 0xD0, 0x5D, 0x02, 0x00, + 0xF0, 0x5D, 0x02, 0x00, 0x10, 0x5E, 0x02, 0x00, 0x30, 0x5E, 0x02, 0x00, 0x50, 0x5E, 0x02, 0x00, + 0x70, 0x5E, 0x02, 0x00, 0x90, 0x5E, 0x02, 0x00, 0xB0, 0x5E, 0x02, 0x00, 0xD0, 0x5E, 0x02, 0x00, + 0xF0, 0x5E, 0x02, 0x00, 0x10, 0x5F, 0x02, 0x00, 0x30, 0x5F, 0x02, 0x00, 0x50, 0x5F, 0x02, 0x00, + 0x70, 0x5F, 0x02, 0x00, 0x90, 0x5F, 0x02, 0x00, 0xB0, 0x5F, 0x02, 0x00, 0xD0, 0x5F, 0x02, 0x00, + 0xF0, 0x5F, 0x02, 0x00, 0x10, 0x60, 0x02, 0x00, 0x30, 0x60, 0x02, 0x00, 0x50, 0x60, 0x02, 0x00, + 0x70, 0x60, 0x02, 0x00, 0x90, 0x60, 0x02, 0x00, 0xB0, 0x60, 0x02, 0x00, 0xD0, 0x60, 0x02, 0x00, + 0xF0, 0x60, 0x02, 0x00, 0x10, 0x61, 0x02, 0x00, 0x30, 0x61, 0x02, 0x00, 0x50, 0x61, 0x02, 0x00, + 0x70, 0x61, 0x02, 0x00, 0x90, 0x61, 0x02, 0x00, 0xB0, 0x61, 0x02, 0x00, 0xD0, 0x61, 0x02, 0x00, + 0xF0, 0x61, 0x02, 0x00, 0x10, 0x62, 0x02, 0x00, 0x30, 0x62, 0x02, 0x00, 0x50, 0x62, 0x02, 0x00, + 0x70, 0x62, 0x02, 0x00, 0x90, 0x62, 0x02, 0x00, 0xB0, 0x62, 0x02, 0x00, 0xD0, 0x62, 0x02, 0x00, + 0xF0, 0x62, 0x02, 0x00, 0x10, 0x63, 0x02, 0x00, 0x30, 0x63, 0x02, 0x00, 0x50, 0x63, 0x02, 0x00, + 0x70, 0x63, 0x02, 0x00, 0x90, 0x63, 0x02, 0x00, 0xB0, 0x63, 0x02, 0x00, 0xD0, 0x63, 0x02, 0x00, + 0xF0, 0x63, 0x02, 0x00, 0x10, 0x64, 0x02, 0x00, 0x30, 0x64, 0x02, 0x00, 0x50, 0x64, 0x02, 0x00, + 0x70, 0x64, 0x02, 0x00, 0x90, 0x64, 0x02, 0x00, 0x94, 0x64, 0x02, 0x00, 0x98, 0x64, 0x02, 0x00, + 0x9C, 0x64, 0x02, 0x00, 0xA0, 0x64, 0x02, 0x00, 0xA4, 0x64, 0x02, 0x00, 0xA8, 0x64, 0x02, 0x00, + 0xAC, 0x64, 0x02, 0x00, 0xB0, 0x64, 0x02, 0x00, 0xB4, 0x64, 0x02, 0x00, 0xB8, 0x64, 0x02, 0x00, + 0xBC, 0x64, 0x02, 0x00, 0xC0, 0x64, 0x02, 0x00, 0xC4, 0x64, 0x02, 0x00, 0xC8, 0x64, 0x02, 0x00, + 0xCC, 0x64, 0x02, 0x00, 0xD0, 0x64, 0x02, 0x00, 0xD4, 0x64, 0x02, 0x00, 0xD8, 0x64, 0x02, 0x00, + 0xDC, 0x64, 0x02, 0x00, 0xE0, 0x64, 0x02, 0x00, 0xE4, 0x64, 0x02, 0x00, 0xE8, 0x64, 0x02, 0x00, + 0xEC, 0x64, 0x02, 0x00, 0xF0, 0x64, 0x02, 0x00, 0xF4, 0x64, 0x02, 0x00, 0xF8, 0x64, 0x02, 0x00, + 0xFC, 0x64, 0x02, 0x00, 0x00, 0x65, 0x02, 0x00, 0x04, 0x65, 0x02, 0x00, 0x08, 0x65, 0x02, 0x00, + 0x0C, 0x65, 0x02, 0x00, 0x10, 0x65, 0x02, 0x00, 0x14, 0x65, 0x02, 0x00, 0x18, 0x65, 0x02, 0x00, + 0x1C, 0x65, 0x02, 0x00, 0x20, 0x65, 0x02, 0x00, 0x24, 0x65, 0x02, 0x00, 0x28, 0x65, 0x02, 0x00, + 0x2C, 0x65, 0x02, 0x00, 0x30, 0x65, 0x02, 0x00, 0x34, 0x65, 0x02, 0x00, 0x38, 0x65, 0x02, 0x00, + 0x3C, 0x65, 0x02, 0x00, 0x40, 0x65, 0x02, 0x00, 0x44, 0x65, 0x02, 0x00, 0x48, 0x65, 0x02, 0x00, + 0x4C, 0x65, 0x02, 0x00, 0x50, 0x65, 0x02, 0x00, 0x54, 0x65, 0x02, 0x00, 0x58, 0x65, 0x02, 0x00, + 0x5C, 0x65, 0x02, 0x00, 0x60, 0x65, 0x02, 0x00, 0x64, 0x65, 0x02, 0x00, 0x68, 0x65, 0x02, 0x00, + 0x6C, 0x65, 0x02, 0x00, 0x70, 0x65, 0x02, 0x00, 0x74, 0x65, 0x02, 0x00, 0x78, 0x65, 0x02, 0x00, + 0x7C, 0x65, 0x02, 0x00, 0x80, 0x65, 0x02, 0x00, 0x84, 0x65, 0x02, 0x00, 0x88, 0x65, 0x02, 0x00, + 0x8C, 0x65, 0x02, 0x00, 0x90, 0x65, 0x02, 0x00, 0x94, 0x65, 0x02, 0x00, 0x98, 0x65, 0x02, 0x00, + 0x9C, 0x65, 0x02, 0x00, 0xA0, 0x65, 0x02, 0x00, 0xA4, 0x65, 0x02, 0x00, 0xA8, 0x65, 0x02, 0x00, + 0xAC, 0x65, 0x02, 0x00, 0xB0, 0x65, 0x02, 0x00, 0xB4, 0x65, 0x02, 0x00, 0xB8, 0x65, 0x02, 0x00, + 0xBC, 0x65, 0x02, 0x00, 0xC0, 0x65, 0x02, 0x00, 0xC4, 0x65, 0x02, 0x00, 0xC8, 0x65, 0x02, 0x00, + 0xCC, 0x65, 0x02, 0x00, 0xD0, 0x65, 0x02, 0x00, 0xD4, 0x65, 0x02, 0x00, 0xD8, 0x65, 0x02, 0x00, + 0xDC, 0x65, 0x02, 0x00, 0xE0, 0x65, 0x02, 0x00, 0xE4, 0x65, 0x02, 0x00, 0xE8, 0x65, 0x02, 0x00, + 0xEC, 0x65, 0x02, 0x00, 0xF0, 0x65, 0x02, 0x00, 0xF4, 0x65, 0x02, 0x00, 0xF8, 0x65, 0x02, 0x00, + 0xFC, 0xD4, 0x79, 0xF0, 0x51, 0x66, 0x02, 0x00, 0x04, 0x66, 0x02, 0x00, 0x08, 0x66, 0x02, 0x00, + 0x0C, 0x66, 0x02, 0x00, 0x10, 0x66, 0x02, 0x00, 0x14, 0x66, 0x02, 0x00, 0x18, 0x66, 0x02, 0x00, + 0x1C, 0x66, 0x02, 0x00, 0x20, 0x66, 0x02, 0x00, 0x24, 0x66, 0x02, 0x00, 0x28, 0x66, 0x02, 0x00, + 0x2C, 0x66, 0x02, 0x00, 0x30, 0x66, 0x02, 0x00, 0x34, 0x66, 0x02, 0x00, 0x38, 0x66, 0x02, 0x00, + 0x3C, 0x66, 0x02, 0x00, 0x40, 0x66, 0x02, 0x00, 0x44, 0x66, 0x02, 0x00, 0x48, 0x66, 0x02, 0x00, + 0x4C, 0x66, 0x02, 0x00, 0x70, 0x66, 0x02, 0x00, 0x90, 0x66, 0x02, 0x00, 0xB0, 0x66, 0x02, 0x00, + 0xD0, 0x66, 0x02, 0x00, 0xF0, 0x54, 0x00, 0xF0, 0x89, 0x67, 0x02, 0x00, 0x30, 0x67, 0x02, 0x00, + 0x50, 0x67, 0x02, 0x00, 0x70, 0x67, 0x02, 0x00, 0x90, 0x67, 0x02, 0x00, 0xB0, 0x67, 0x02, 0x00, + 0xD0, 0x67, 0x02, 0x00, 0xF0, 0x67, 0x02, 0x00, 0x10, 0x68, 0x02, 0x00, 0x30, 0x68, 0x02, 0x00, + 0x50, 0x68, 0x02, 0x00, 0x70, 0x68, 0x02, 0x00, 0x90, 0x68, 0x02, 0x00, 0xB0, 0x68, 0x02, 0x00, + 0xD0, 0x68, 0x02, 0x00, 0xF4, 0x68, 0x02, 0x00, 0xF8, 0x68, 0x02, 0x00, 0xFC, 0x68, 0x02, 0x00, + 0x00, 0x69, 0x02, 0x00, 0x04, 0x69, 0x02, 0x00, 0x08, 0x69, 0x02, 0x00, 0x0C, 0x69, 0x02, 0x00, + 0x10, 0x69, 0x02, 0x00, 0x14, 0x69, 0x02, 0x00, 0x18, 0x69, 0x02, 0x00, 0x1C, 0x69, 0x02, 0x00, + 0x20, 0x69, 0x02, 0x00, 0x24, 0x69, 0x02, 0x00, 0x28, 0x69, 0x02, 0x00, 0x2C, 0x69, 0x02, 0x00, + 0x30, 0x69, 0x02, 0x00, 0x34, 0x69, 0x02, 0x00, 0x38, 0x69, 0x02, 0x00, 0x58, 0x69, 0x02, 0x00, + 0x78, 0x69, 0x02, 0x00, 0x98, 0x69, 0x02, 0x00, 0xB8, 0x69, 0x02, 0x00, 0xD8, 0x69, 0x02, 0x00, + 0xF8, 0x3C, 0x00, 0xF3, 0xFF, 0xC2, 0x6A, 0x02, 0x00, 0x38, 0x6A, 0x02, 0x00, 0x58, 0x6A, 0x02, + 0x00, 0x7C, 0x6A, 0x02, 0x00, 0xA0, 0x6A, 0x02, 0x00, 0xC4, 0x6A, 0x02, 0x00, 0xE4, 0x6A, 0x02, + 0x00, 0x04, 0x6B, 0x02, 0x00, 0x24, 0x6B, 0x02, 0x00, 0x28, 0x6B, 0x02, 0x00, 0x2C, 0x6B, 0x02, + 0x00, 0x30, 0x6B, 0x02, 0x00, 0x34, 0x6B, 0x02, 0x00, 0x38, 0x6B, 0x02, 0x00, 0x3C, 0x6B, 0x02, + 0x00, 0x40, 0x6B, 0x02, 0x00, 0x44, 0x6B, 0x02, 0x00, 0x64, 0x6B, 0x02, 0x00, 0x84, 0x6B, 0x02, + 0x00, 0xA4, 0x6B, 0x02, 0x00, 0xC4, 0x6B, 0x02, 0x00, 0xE8, 0x6B, 0x02, 0x00, 0x08, 0x6C, 0x02, + 0x00, 0x28, 0x6C, 0x02, 0x00, 0x48, 0x6C, 0x02, 0x00, 0x68, 0x6C, 0x02, 0x00, 0x88, 0x6C, 0x02, + 0x00, 0xA8, 0x6C, 0x02, 0x00, 0xD0, 0x6C, 0x02, 0x00, 0xF8, 0x6C, 0x02, 0x00, 0x20, 0x6D, 0x02, + 0x00, 0x48, 0x6D, 0x02, 0x00, 0x58, 0x6D, 0x02, 0x00, 0x68, 0x6D, 0x02, 0x00, 0x78, 0x6D, 0x02, + 0x00, 0x88, 0x6D, 0x02, 0x00, 0x8C, 0x6D, 0x02, 0x00, 0x90, 0x6D, 0x02, 0x00, 0x94, 0x6D, 0x02, + 0x00, 0x98, 0x6D, 0x02, 0x00, 0x9C, 0x6D, 0x02, 0x00, 0xA0, 0x6D, 0x02, 0x00, 0xA4, 0x6D, 0x02, + 0x00, 0xA8, 0x6D, 0x02, 0x00, 0xAC, 0x6D, 0x02, 0x00, 0xB0, 0x6D, 0x02, 0x00, 0xB4, 0x6D, 0x02, + 0x00, 0xB8, 0x6D, 0x02, 0x00, 0xBC, 0x6D, 0x02, 0x00, 0xC0, 0x6D, 0x02, 0x00, 0xC4, 0x6D, 0x02, + 0x00, 0xC8, 0x6D, 0x02, 0x00, 0xCC, 0x6D, 0x02, 0x00, 0xD0, 0x6D, 0x02, 0x00, 0xD4, 0x6D, 0x02, + 0x00, 0xD8, 0x6D, 0x02, 0x00, 0xDC, 0x6D, 0x02, 0x00, 0x08, 0x6E, 0x02, 0x00, 0x34, 0x6E, 0x02, + 0x00, 0x60, 0x6E, 0x02, 0x00, 0x84, 0x6E, 0x02, 0x00, 0xA8, 0x6E, 0x02, 0x00, 0xCC, 0x6E, 0x02, + 0x00, 0xF0, 0x6E, 0x02, 0x00, 0x14, 0x6F, 0x02, 0x00, 0x38, 0x6F, 0x02, 0x00, 0x5C, 0x6F, 0x02, + 0x00, 0x80, 0x6F, 0x02, 0x00, 0xA4, 0x6F, 0x02, 0x00, 0xC8, 0x6F, 0x02, 0x00, 0xEC, 0x6F, 0x02, + 0x00, 0x10, 0x70, 0x02, 0x00, 0x34, 0x70, 0x02, 0x00, 0x58, 0x70, 0x02, 0x00, 0x7C, 0x70, 0x02, + 0x00, 0xA0, 0x70, 0x02, 0x00, 0xC0, 0x70, 0x02, 0x00, 0xE0, 0x70, 0x02, 0x00, 0x00, 0x71, 0x02, + 0x00, 0x20, 0x71, 0x02, 0x00, 0x40, 0x71, 0x02, 0x00, 0x60, 0x71, 0x02, 0x00, 0x80, 0x71, 0x02, + 0x00, 0xA0, 0x71, 0x02, 0x00, 0xC0, 0x71, 0x02, 0x00, 0xE0, 0x71, 0x02, 0x00, 0x00, 0x72, 0x02, + 0x00, 0x20, 0x72, 0x02, 0x00, 0x40, 0x72, 0x02, 0x00, 0x60, 0x72, 0x02, 0x00, 0x80, 0x72, 0x02, + 0x00, 0xA0, 0x72, 0x02, 0x00, 0xC0, 0x72, 0x02, 0x00, 0xE0, 0x72, 0x02, 0x00, 0x00, 0x73, 0x02, + 0x00, 0x20, 0x73, 0x02, 0x00, 0x40, 0x73, 0x02, 0x00, 0x60, 0x73, 0x02, 0x00, 0x80, 0x73, 0x02, + 0x00, 0xA0, 0x73, 0x02, 0x00, 0xC0, 0x73, 0x02, 0x00, 0xE0, 0x73, 0x02, 0x00, 0x00, 0x74, 0x02, + 0x00, 0x20, 0x74, 0x02, 0x00, 0x40, 0x74, 0x02, 0x00, 0x60, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, + 0x00, 0xA0, 0x74, 0x02, 0x00, 0xC0, 0x74, 0x02, 0x00, 0xE0, 0x74, 0x02, 0x00, 0x00, 0x75, 0x02, + 0x00, 0x20, 0x75, 0x02, 0x00, 0x40, 0x75, 0x02, 0x00, 0x60, 0x75, 0x02, 0x00, 0x80, 0x75, 0x02, + 0x00, 0xA0, 0x75, 0x02, 0x00, 0x0F, 0xF5, 0x07, 0x40, 0xC0, 0x75, 0x02, 0x00, 0x81, 0x0B, 0x31, + 0xC4, 0x75, 0x02, 0x10, 0x00, 0x62, 0xD0, 0x75, 0x02, 0x00, 0xFF, 0xFF, 0xA4, 0x49, 0x08, 0xD6, + 0x4C, 0x00, 0xB1, 0x34, 0x13, 0xD4, 0x24, 0x00, 0x13, 0xDC, 0x24, 0x00, 0x0C, 0x20, 0x00, 0x13, + 0xE0, 0x20, 0x00, 0x1F, 0xE8, 0x20, 0x00, 0x04, 0x13, 0xEC, 0x20, 0x00, 0x17, 0xF4, 0x64, 0x00, + 0x08, 0x20, 0x00, 0x13, 0xF8, 0x20, 0x00, 0x22, 0x00, 0x76, 0x20, 0x00, 0x17, 0x0A, 0x20, 0x00, + 0x00, 0xA4, 0x00, 0x22, 0x04, 0x76, 0x20, 0x00, 0x13, 0x10, 0x20, 0x00, 0x22, 0xFB, 0x03, 0xC4, + 0x00, 0x39, 0x14, 0x76, 0x02, 0x96, 0x4C, 0x26, 0x18, 0x76, 0x60, 0x00, 0x05, 0x89, 0xFA, 0x0B, + 0xBA, 0x4C, 0x1F, 0x1C, 0x64, 0x00, 0x04, 0x13, 0x20, 0x64, 0x00, 0x1B, 0x2C, 0x64, 0x00, 0x1B, + 0x30, 0x64, 0x00, 0x26, 0x34, 0x76, 0xE4, 0x00, 0x00, 0xCA, 0x0B, 0x13, 0x05, 0x30, 0x01, 0x04, + 0x08, 0x00, 0x1B, 0x01, 0x58, 0x00, 0x13, 0x38, 0x58, 0x00, 0x13, 0x44, 0x38, 0x00, 0x1B, 0x04, + 0xFC, 0x00, 0x13, 0x48, 0x20, 0x00, 0x13, 0x50, 0x20, 0x00, 0x1B, 0x07, 0x20, 0x00, 0x13, 0x54, + 0x20, 0x00, 0x2F, 0x5C, 0x76, 0x3C, 0x01, 0x03, 0x13, 0x60, 0x20, 0x00, 0x13, 0x68, 0x20, 0x00, + 0x0C, 0x80, 0x00, 0x13, 0x6C, 0x20, 0x00, 0x1F, 0x78, 0x60, 0x00, 0x04, 0x13, 0x7C, 0x20, 0x00, + 0x1F, 0x84, 0x60, 0x00, 0x04, 0x13, 0x88, 0x20, 0x00, 0x1F, 0x90, 0x60, 0x00, 0x04, 0x13, 0x94, + 0x20, 0x00, 0x1F, 0xA0, 0x60, 0x00, 0x04, 0x13, 0xA4, 0x20, 0x00, 0x1F, 0xAC, 0x60, 0x00, 0x04, + 0x13, 0xB0, 0x20, 0x00, 0x17, 0xB8, 0x60, 0x00, 0x13, 0x02, 0x5C, 0x00, 0x26, 0x05, 0x00, 0x90, + 0x02, 0x2E, 0x09, 0x00, 0x3C, 0x00, 0x13, 0xBC, 0x3C, 0x00, 0x13, 0xC4, 0x3C, 0x00, 0x1B, 0x05, + 0x20, 0x00, 0x13, 0xC8, 0x20, 0x00, 0x1F, 0xD0, 0x7C, 0x00, 0x04, 0x13, 0xD4, 0x20, 0x00, 0x1B, + 0xDC, 0xDC, 0x00, 0x1F, 0x02, 0x6C, 0x00, 0x00, 0x13, 0xE0, 0x2C, 0x00, 0x1F, 0xE8, 0x6C, 0x00, + 0x04, 0x13, 0xEC, 0x20, 0x00, 0x1F, 0xF4, 0x6C, 0x00, 0x04, 0x13, 0xF8, 0x20, 0x00, 0x2F, 0x00, + 0x77, 0x20, 0x00, 0x03, 0x22, 0x04, 0x77, 0x20, 0x00, 0x1F, 0x0C, 0x20, 0x00, 0x04, 0x13, 0x10, + 0x20, 0x00, 0x1F, 0x18, 0x20, 0x00, 0x04, 0x13, 0x1C, 0x20, 0x00, 0x1F, 0x24, 0x20, 0x00, 0x04, + 0x13, 0x28, 0x20, 0x00, 0x1F, 0x30, 0x20, 0x00, 0x04, 0x13, 0x34, 0x20, 0x00, 0x1F, 0x3C, 0x20, + 0x00, 0x04, 0x13, 0x40, 0x20, 0x00, 0x1F, 0x48, 0x20, 0x00, 0x04, 0x13, 0x4C, 0x20, 0x00, 0x1F, + 0x54, 0x20, 0x00, 0x04, 0x13, 0x58, 0x20, 0x00, 0x2F, 0x60, 0x77, 0x80, 0x03, 0x03, 0x13, 0x64, + 0x20, 0x00, 0x1F, 0x70, 0x40, 0x00, 0x04, 0x13, 0x74, 0x20, 0x00, 0x1F, 0x7C, 0x20, 0x00, 0x04, + 0x13, 0x80, 0x20, 0x00, 0x1F, 0x88, 0x20, 0x00, 0x04, 0x13, 0x8C, 0x20, 0x00, 0x2E, 0x94, 0x77, + 0xEC, 0x01, 0x17, 0x03, 0xCC, 0x03, 0x00, 0x38, 0x00, 0x17, 0x07, 0x74, 0x02, 0x00, 0xA8, 0x00, + 0x11, 0x0B, 0x04, 0x00, 0x20, 0x02, 0x00, 0xB1, 0x0F, 0x00, 0xE5, 0x0F, 0x1F, 0x0E, 0xE8, 0x03, + 0x00, 0x13, 0x98, 0x60, 0x00, 0x2F, 0xA4, 0x77, 0x20, 0x02, 0x03, 0x13, 0xA8, 0x20, 0x00, 0x1F, + 0xB0, 0xA0, 0x00, 0x04, 0x13, 0xB4, 0x20, 0x00, 0x1F, 0xBC, 0x20, 0x00, 0x04, 0x13, 0xC0, 0x20, + 0x00, 0x1F, 0xC8, 0x20, 0x00, 0x04, 0x13, 0xCC, 0x20, 0x00, 0x1F, 0xD4, 0x20, 0x00, 0x04, 0x13, + 0xD8, 0x20, 0x00, 0x1F, 0xE0, 0x20, 0x00, 0x04, 0x13, 0xE4, 0x20, 0x00, 0x1F, 0xEC, 0x20, 0x00, + 0x04, 0x13, 0xF0, 0x20, 0x00, 0x1F, 0xF8, 0x20, 0x00, 0x04, 0x13, 0xFC, 0x20, 0x00, 0x2F, 0x04, + 0x78, 0x20, 0x00, 0x03, 0x23, 0x08, 0x78, 0xC4, 0x05, 0x0F, 0x20, 0x00, 0x04, 0x13, 0x14, 0x20, + 0x00, 0x1F, 0x1C, 0x20, 0x00, 0x04, 0x13, 0x20, 0x20, 0x00, 0x2F, 0x28, 0x78, 0x48, 0x05, 0x03, + 0x13, 0x2C, 0x20, 0x00, 0x2F, 0x34, 0x78, 0xA8, 0x04, 0x03, 0x13, 0x38, 0x20, 0x00, 0x1F, 0x44, + 0x60, 0x00, 0x04, 0x13, 0x48, 0x20, 0x00, 0x1F, 0x50, 0x20, 0x00, 0x04, 0x13, 0x54, 0x20, 0x00, + 0x1F, 0x5C, 0x20, 0x00, 0x04, 0x13, 0x60, 0x20, 0x00, 0x1F, 0x68, 0x20, 0x00, 0x04, 0x13, 0x6C, + 0x20, 0x00, 0x1F, 0x74, 0x20, 0x00, 0x04, 0x13, 0x78, 0x20, 0x00, 0x1F, 0x80, 0x20, 0x00, 0x04, + 0x13, 0x84, 0x20, 0x00, 0x1F, 0x8C, 0x20, 0x00, 0x04, 0x13, 0x90, 0x20, 0x00, 0x1F, 0x98, 0x20, + 0x00, 0x04, 0x13, 0x9C, 0x20, 0x00, 0x1F, 0xA4, 0x20, 0x00, 0x04, 0x13, 0xA8, 0x20, 0x00, 0x1F, + 0xB0, 0x20, 0x00, 0x04, 0x13, 0xB4, 0x20, 0x00, 0x1F, 0xBC, 0x20, 0x00, 0x04, 0x13, 0xC0, 0x20, + 0x00, 0x1F, 0xC8, 0x20, 0x00, 0x04, 0x13, 0xCC, 0x20, 0x00, 0x1F, 0xD4, 0x20, 0x00, 0x04, 0x13, + 0xD8, 0x20, 0x00, 0x1F, 0xE0, 0x20, 0x00, 0x04, 0x13, 0xE4, 0x20, 0x00, 0x1F, 0xEC, 0x20, 0x00, + 0x04, 0x13, 0xF0, 0x20, 0x00, 0x1F, 0xF8, 0x20, 0x00, 0x04, 0x13, 0xFC, 0x20, 0x00, 0x2F, 0x04, + 0x79, 0xA0, 0x02, 0x04, 0x13, 0x79, 0xA0, 0x02, 0x0F, 0x20, 0x00, 0x04, 0x13, 0x14, 0x20, 0x00, + 0x1F, 0x1C, 0x20, 0x00, 0x04, 0x13, 0x20, 0x20, 0x00, 0x1F, 0x28, 0x20, 0x00, 0x04, 0x13, 0x2C, + 0x20, 0x00, 0x1F, 0x34, 0x20, 0x00, 0x04, 0x13, 0x38, 0x20, 0x00, 0x1F, 0x40, 0x20, 0x00, 0x04, + 0x13, 0x44, 0x20, 0x00, 0x1F, 0x4C, 0x20, 0x00, 0x04, 0x13, 0x50, 0x20, 0x00, 0x1F, 0x58, 0x20, + 0x00, 0x04, 0x13, 0x5C, 0x20, 0x00, 0x1F, 0x64, 0x20, 0x00, 0x04, 0x13, 0x68, 0x20, 0x00, 0x1F, + 0x70, 0x20, 0x00, 0x04, 0x13, 0x74, 0x20, 0x00, 0x1F, 0x7C, 0x20, 0x00, 0x04, 0x13, 0x80, 0x20, + 0x00, 0x1F, 0x88, 0x20, 0x00, 0x04, 0x13, 0x8C, 0x20, 0x00, 0x1F, 0x94, 0x20, 0x00, 0x04, 0x13, + 0x98, 0x20, 0x00, 0x1F, 0xA0, 0x20, 0x00, 0x04, 0x13, 0xA4, 0x20, 0x00, 0x2F, 0xAC, 0x79, 0xE0, + 0x03, 0x03, 0x13, 0xB0, 0x20, 0x00, 0x1F, 0xBC, 0x40, 0x00, 0x04, 0x13, 0xC0, 0x20, 0x00, 0x1F, + 0xC8, 0x20, 0x00, 0x04, 0x13, 0xCC, 0x20, 0x00, 0x1F, 0xD4, 0x20, 0x00, 0x04, 0x13, 0xD8, 0x20, + 0x00, 0x1F, 0xE0, 0x20, 0x00, 0x04, 0x13, 0xE4, 0x20, 0x00, 0x1F, 0xEC, 0x20, 0x00, 0x04, 0x13, + 0xF0, 0x20, 0x00, 0x1F, 0xF8, 0x20, 0x00, 0x04, 0x13, 0xFC, 0x20, 0x00, 0x2F, 0x04, 0x7A, 0xA0, + 0x02, 0x04, 0x13, 0x7A, 0xA0, 0x02, 0x0F, 0x20, 0x00, 0x04, 0x13, 0x14, 0x20, 0x00, 0x1F, 0x1C, + 0x20, 0x00, 0x04, 0x13, 0x20, 0x20, 0x00, 0x1F, 0x28, 0x20, 0x00, 0x04, 0x13, 0x2C, 0x20, 0x00, + 0x1F, 0x34, 0x20, 0x00, 0x04, 0x13, 0x38, 0x20, 0x00, 0x1F, 0x40, 0x20, 0x00, 0x04, 0x13, 0x44, + 0x20, 0x00, 0x1F, 0x4C, 0x20, 0x00, 0x04, 0x13, 0x50, 0x20, 0x00, 0x1F, 0x58, 0x20, 0x00, 0x04, + 0x13, 0x5C, 0x20, 0x00, 0x1F, 0x64, 0x20, 0x00, 0x04, 0x13, 0x68, 0x20, 0x00, 0x1F, 0x70, 0x20, + 0x00, 0x04, 0x13, 0x74, 0x20, 0x00, 0x1F, 0x7C, 0x20, 0x00, 0x04, 0x13, 0x80, 0x20, 0x00, 0x1F, + 0x88, 0x20, 0x00, 0x04, 0x13, 0x8C, 0x20, 0x00, 0x1F, 0x94, 0x20, 0x00, 0x04, 0x13, 0x98, 0x20, + 0x00, 0x1F, 0xA0, 0x20, 0x00, 0x04, 0x13, 0xA4, 0x20, 0x00, 0x1F, 0xAC, 0x20, 0x00, 0x04, 0x13, + 0xB0, 0x20, 0x00, 0x1F, 0xB8, 0x20, 0x00, 0x04, 0x13, 0xBC, 0x20, 0x00, 0x1F, 0xC4, 0x20, 0x00, + 0x04, 0x13, 0xC8, 0x20, 0x00, 0x1F, 0xD0, 0x20, 0x00, 0x04, 0x13, 0xD4, 0x20, 0x00, 0x1F, 0xDC, + 0x20, 0x00, 0x04, 0x13, 0xE0, 0x20, 0x00, 0x1F, 0xE8, 0x20, 0x00, 0x04, 0x13, 0xEC, 0x20, 0x00, + 0x1F, 0xF4, 0x20, 0x00, 0x04, 0x13, 0xF8, 0x20, 0x00, 0x2F, 0x00, 0x7B, 0xC0, 0x0A, 0x04, 0x13, + 0x7B, 0xC0, 0x0A, 0x0F, 0x20, 0x00, 0x04, 0x13, 0x10, 0x20, 0x00, 0x1F, 0x18, 0x20, 0x00, 0x04, + 0x13, 0x1C, 0x20, 0x00, 0x2F, 0x24, 0x7B, 0xE0, 0x03, 0x03, 0x13, 0x28, 0x20, 0x00, 0x1F, 0x34, + 0x40, 0x00, 0x04, 0x13, 0x38, 0x20, 0x00, 0x1F, 0x40, 0x20, 0x00, 0x04, 0x13, 0x44, 0x20, 0x00, + 0x1F, 0x4C, 0x20, 0x00, 0x04, 0x13, 0x50, 0x20, 0x00, 0x1F, 0x58, 0x20, 0x00, 0x04, 0x13, 0x5C, + 0x20, 0x00, 0x1F, 0x64, 0x20, 0x00, 0x04, 0x13, 0x68, 0x20, 0x00, 0x1F, 0x70, 0x20, 0x00, 0x04, + 0x13, 0x74, 0x20, 0x00, 0x1F, 0x7C, 0x20, 0x00, 0x04, 0x13, 0x80, 0x20, 0x00, 0x1F, 0x88, 0x20, + 0x00, 0x04, 0x13, 0x8C, 0x20, 0x00, 0x1F, 0x94, 0x20, 0x00, 0x04, 0x13, 0x98, 0x20, 0x00, 0x1F, + 0xA0, 0x20, 0x00, 0x04, 0x13, 0xA4, 0x20, 0x00, 0x1F, 0xAC, 0x20, 0x00, 0x04, 0x13, 0xB0, 0x20, + 0x00, 0x1F, 0xB8, 0x20, 0x00, 0x04, 0x13, 0xBC, 0x20, 0x00, 0x1F, 0xC4, 0x20, 0x00, 0x04, 0x13, + 0xC8, 0x20, 0x00, 0x1F, 0xD0, 0x20, 0x00, 0x04, 0x13, 0xD4, 0x20, 0x00, 0x1F, 0xDC, 0x20, 0x00, + 0x04, 0x13, 0xE0, 0x20, 0x00, 0x1F, 0xE8, 0x20, 0x00, 0x04, 0x13, 0xEC, 0x20, 0x00, 0x1F, 0xF4, + 0x20, 0x00, 0x04, 0x13, 0xF8, 0x20, 0x00, 0x2F, 0x00, 0x7C, 0xA0, 0x02, 0x04, 0x13, 0x7C, 0xA0, + 0x02, 0x0F, 0x20, 0x00, 0x04, 0x13, 0x10, 0x20, 0x00, 0x1F, 0x18, 0x20, 0x00, 0x04, 0x13, 0x1C, + 0x20, 0x00, 0x1F, 0x24, 0x20, 0x00, 0x04, 0x13, 0x28, 0x20, 0x00, 0x1F, 0x30, 0x20, 0x00, 0x04, + 0x13, 0x34, 0x20, 0x00, 0x1F, 0x3C, 0x20, 0x00, 0x04, 0x13, 0x40, 0x20, 0x00, 0x1F, 0x48, 0x20, + 0x00, 0x04, 0x13, 0x4C, 0x20, 0x00, 0x1F, 0x54, 0x20, 0x00, 0x04, 0x13, 0x58, 0x20, 0x00, 0x1F, + 0x60, 0x20, 0x00, 0x04, 0x13, 0x64, 0x20, 0x00, 0x1F, 0x6C, 0x20, 0x00, 0x04, 0x13, 0x70, 0x20, + 0x00, 0x1F, 0x78, 0x20, 0x00, 0x04, 0x13, 0x7C, 0x20, 0x00, 0x1F, 0x84, 0x20, 0x00, 0x04, 0x13, + 0x88, 0x20, 0x00, 0x1F, 0x90, 0x20, 0x00, 0x04, 0x13, 0x94, 0x20, 0x00, 0x1F, 0x9C, 0x20, 0x00, + 0x04, 0x13, 0xA0, 0x20, 0x00, 0x2F, 0xA8, 0x7C, 0xE0, 0x0B, 0x03, 0x13, 0xAC, 0x20, 0x00, 0x1F, + 0xB4, 0x40, 0x00, 0x04, 0x13, 0xB8, 0x20, 0x00, 0x1F, 0xC0, 0x20, 0x00, 0x04, 0x13, 0xC4, 0x20, + 0x00, 0x1F, 0xCC, 0x20, 0x00, 0x04, 0x13, 0xD0, 0x20, 0x00, 0x1F, 0xD8, 0x20, 0x00, 0x04, 0x13, + 0xDC, 0x20, 0x00, 0x2F, 0xE4, 0x7C, 0xC0, 0x0E, 0x03, 0x13, 0xE8, 0x20, 0x00, 0x1F, 0xF4, 0x40, + 0x00, 0x04, 0x13, 0xF8, 0x20, 0x00, 0x2E, 0x00, 0x7D, 0xE8, 0x10, 0x0F, 0x7C, 0x0E, 0x0D, 0x13, + 0x0C, 0x74, 0x0E, 0x00, 0xBC, 0x13, 0x00, 0xAA, 0x1B, 0x00, 0xBC, 0x2F, 0x00, 0x12, 0x22, 0x00, + 0xD4, 0x29, 0x00, 0xDC, 0x2C, 0x00, 0xA7, 0x39, 0x00, 0x72, 0x49, 0x00, 0x20, 0x38, 0x00, 0xBE, + 0x39, 0x13, 0x19, 0x66, 0x2A, 0x00, 0x20, 0x2B, 0x13, 0x1C, 0x66, 0x60, 0x00, 0x49, 0x4A, 0x00, + 0x61, 0x3D, 0x00, 0x84, 0x2C, 0x00, 0x25, 0x3B, 0x00, 0x02, 0x53, 0x00, 0x20, 0x61, 0x00, 0xE6, + 0x1E, 0x00, 0xE6, 0x4A, 0x00, 0xAA, 0x1F, 0x00, 0x2E, 0x1E, 0x00, 0xA0, 0x30, 0x00, 0x58, 0x59, + 0x00, 0xF7, 0x21, 0x00, 0xBD, 0x31, 0x00, 0x2A, 0x20, 0x00, 0x8C, 0x33, 0x00, 0x26, 0x8A, 0x00, + 0xEA, 0x39, 0x00, 0xCF, 0x4E, 0x00, 0x44, 0x48, 0x00, 0xBD, 0x34, 0x00, 0xE7, 0x2A, 0x00, 0x19, + 0x29, 0x00, 0xF7, 0x20, 0x00, 0x2B, 0x4E, 0x00, 0x80, 0x35, 0x00, 0xBD, 0x63, 0x00, 0x69, 0x4B, + 0x00, 0x26, 0x48, 0x00, 0x2B, 0xB3, 0x00, 0x53, 0x59, 0x00, 0x7F, 0x2B, 0x00, 0x43, 0x61, 0x00, + 0xE1, 0x2B, 0x00, 0x32, 0x5A, 0x00, 0x33, 0x1F, 0x00, 0xAF, 0x56, 0x00, 0xEB, 0x35, 0x00, 0x0C, + 0x48, 0x00, 0x03, 0x29, 0x00, 0xD9, 0x6D, 0x00, 0x5A, 0x2D, 0x00, 0x4D, 0x31, 0x00, 0xF4, 0x22, + 0x00, 0x27, 0x20, 0x00, 0x0D, 0x20, 0x00, 0x70, 0x4F, 0x00, 0xD3, 0x2A, 0x00, 0xD8, 0x2F, 0x00, + 0xD8, 0x27, 0x00, 0x8B, 0x32, 0x00, 0x4C, 0x1F, 0x00, 0xD8, 0x34, 0x00, 0x73, 0x72, 0x00, 0xBF, + 0x30, 0x00, 0xEC, 0x4B, 0x00, 0x53, 0x34, 0x00, 0xE1, 0x6F, 0x00, 0x63, 0x33, 0x00, 0x10, 0x49, + 0x00, 0x14, 0x1F, 0x10, 0x5D, 0xCF, 0x30, 0x00, 0x28, 0x1E, 0x03, 0x80, 0x5E, 0x00, 0xE2, 0x62, + 0x00, 0x7D, 0x6A, 0x00, 0x9E, 0x63, 0x00, 0x57, 0x2B, 0x00, 0x22, 0x77, 0x00, 0xDC, 0x40, 0x00, + 0xC1, 0x21, 0x00, 0xE9, 0x53, 0x00, 0xD6, 0x3A, 0x00, 0xB9, 0x4F, 0x00, 0x61, 0x89, 0x00, 0x87, + 0x6F, 0x00, 0x6C, 0x5A, 0x00, 0x60, 0x36, 0x00, 0x66, 0x70, 0x11, 0x70, 0x04, 0x00, 0x20, 0x02, + 0x00, 0x4E, 0x56, 0x04, 0x44, 0x15, 0x22, 0x04, 0x7D, 0x44, 0x15, 0x22, 0x08, 0x7D, 0xDC, 0x01, + 0x13, 0x14, 0xDC, 0x01, 0x04, 0xC8, 0x01, 0x08, 0x00, 0x02, 0x13, 0x18, 0x24, 0x00, 0x2F, 0x20, + 0x7D, 0x20, 0x02, 0x03, 0x13, 0x24, 0x20, 0x00, 0x1F, 0x2C, 0x20, 0x00, 0x04, 0x13, 0x30, 0x20, + 0x00, 0x2F, 0x38, 0x7D, 0x68, 0x13, 0x03, 0x13, 0x3C, 0x20, 0x00, 0x1F, 0x44, 0x40, 0x00, 0x04, + 0x13, 0x48, 0x20, 0x00, 0x1F, 0x50, 0x40, 0x00, 0x04, 0x13, 0x54, 0x20, 0x00, 0x1F, 0x5C, 0x40, + 0x00, 0x04, 0x13, 0x60, 0x20, 0x00, 0x1F, 0x68, 0x40, 0x00, 0x04, 0x13, 0x6C, 0x20, 0x00, 0x1F, + 0x74, 0x40, 0x00, 0x04, 0x13, 0x78, 0x20, 0x00, 0x1F, 0x80, 0x40, 0x00, 0x04, 0x13, 0x84, 0x20, + 0x00, 0x2F, 0x8C, 0x7D, 0x00, 0x08, 0x03, 0x13, 0x90, 0x20, 0x00, 0x13, 0x9C, 0x20, 0x00, 0x22, + 0x04, 0x04, 0x24, 0x00, 0x13, 0xA0, 0x84, 0x01, 0x13, 0xA4, 0x20, 0x00, 0x1B, 0xB0, 0x20, 0x00, + 0x13, 0xB4, 0x20, 0x00, 0x13, 0xB8, 0x20, 0x00, 0x1B, 0xC4, 0x20, 0x00, 0x13, 0xC8, 0x20, 0x00, + 0x13, 0xCC, 0x20, 0x00, 0x1B, 0xD8, 0x20, 0x00, 0x13, 0xDC, 0x20, 0x00, 0x13, 0xE0, 0x20, 0x00, + 0x1B, 0xEC, 0x20, 0x00, 0x13, 0xF0, 0x20, 0x00, 0x13, 0xF4, 0x20, 0x00, 0x22, 0x00, 0x7E, 0x20, + 0x00, 0x0F, 0x80, 0x16, 0x05, 0x2F, 0x04, 0x7E, 0x24, 0x17, 0x03, 0x23, 0x08, 0x7E, 0xE0, 0x0B, + 0x1F, 0x7E, 0x60, 0x04, 0x03, 0x13, 0x14, 0x20, 0x00, 0x2A, 0x20, 0x7E, 0xA0, 0x16, 0x2A, 0x24, + 0x7E, 0xA0, 0x16, 0x2A, 0x28, 0x7E, 0x60, 0x04, 0x1F, 0x01, 0x64, 0x04, 0x10, 0x1B, 0x13, 0x74, + 0x15, 0x13, 0x07, 0x1C, 0x00, 0x1F, 0x13, 0x0C, 0x18, 0x00, 0x13, 0x2C, 0x88, 0x00, 0x1F, 0x34, + 0xC8, 0x00, 0x04, 0x13, 0x38, 0x20, 0x00, 0x1F, 0x40, 0x20, 0x00, 0x04, 0x13, 0x44, 0x20, 0x00, + 0x2A, 0x4C, 0x7E, 0x48, 0x01, 0x22, 0x50, 0x7E, 0x48, 0x01, 0x13, 0x54, 0x20, 0x00, 0x1F, 0x60, + 0x48, 0x01, 0x0C, 0x1F, 0x64, 0x28, 0x01, 0x04, 0x13, 0x68, 0x40, 0x00, 0x1F, 0x74, 0x20, 0x00, + 0x04, 0x13, 0x78, 0x20, 0x00, 0x1F, 0x84, 0x20, 0x00, 0x04, 0x13, 0x88, 0x20, 0x00, 0x1F, 0x94, + 0x20, 0x00, 0x04, 0x13, 0x98, 0x20, 0x00, 0x1B, 0xA4, 0x88, 0x01, 0x1B, 0xA8, 0x88, 0x01, 0x17, + 0xAC, 0x88, 0x01, 0x04, 0x24, 0x00, 0x1B, 0xB0, 0x24, 0x00, 0x13, 0xB4, 0x24, 0x00, 0x00, 0x6C, + 0x01, 0x13, 0xFE, 0x24, 0x00, 0x31, 0xB8, 0x7E, 0x02, 0xAC, 0x01, 0x32, 0xBC, 0x7E, 0x02, 0x98, + 0x0E, 0x03, 0x24, 0x00, 0x00, 0x01, 0x00, 0x13, 0xFF, 0x24, 0x00, 0x31, 0xD4, 0x7E, 0x02, 0xC8, + 0x01, 0x13, 0xD8, 0x24, 0x00, 0x13, 0xF0, 0x24, 0x00, 0x13, 0xF4, 0x20, 0x00, 0x13, 0xF8, 0xA4, + 0x00, 0x13, 0xFC, 0x08, 0x00, 0x2A, 0x00, 0x7F, 0x20, 0x00, 0x22, 0x04, 0x7F, 0x18, 0x00, 0x13, + 0x08, 0x08, 0x00, 0x2F, 0x0C, 0x7F, 0x14, 0x15, 0x03, 0x0C, 0x10, 0x00, 0x13, 0x19, 0x14, 0x00, + 0x31, 0x10, 0x7F, 0x02, 0x28, 0x02, 0x13, 0x14, 0x40, 0x00, 0x13, 0x28, 0x40, 0x00, 0x04, 0x20, + 0x00, 0x13, 0x2C, 0x20, 0x00, 0x13, 0x30, 0x20, 0x00, 0x1B, 0x44, 0x20, 0x00, 0x13, 0x48, 0x20, + 0x00, 0x13, 0x4C, 0x20, 0x00, 0x2F, 0x60, 0x7F, 0xB4, 0x08, 0x04, 0x03, 0x20, 0x00, 0x2A, 0x6C, + 0x7F, 0x6C, 0x01, 0x2A, 0x70, 0x7F, 0x48, 0x01, 0x26, 0x74, 0x7F, 0x6C, 0x02, 0x0D, 0x78, 0x04, + 0x03, 0x44, 0x00, 0x1F, 0x80, 0x64, 0x00, 0x04, 0x13, 0x84, 0x20, 0x00, 0x1F, 0x8C, 0x20, 0x00, + 0x04, 0x13, 0x90, 0x20, 0x00, 0x1F, 0x98, 0x20, 0x00, 0x04, 0x13, 0x9C, 0x20, 0x00, 0x1F, 0xA4, + 0x20, 0x00, 0x04, 0x13, 0xA8, 0x20, 0x00, 0x2F, 0xB0, 0x7F, 0xD0, 0x02, 0x0B, 0x13, 0xB4, 0x20, + 0x00, 0x14, 0xEF, 0x08, 0x02, 0x0B, 0xE4, 0x00, 0x17, 0xBC, 0xA4, 0x01, 0x35, 0xC0, 0x7F, 0x02, + 0x28, 0x00, 0x1B, 0xC4, 0x28, 0x00, 0x17, 0xC8, 0x28, 0x00, 0x17, 0xCC, 0x28, 0x00, 0x1B, 0xD0, + 0x28, 0x00, 0x17, 0xD4, 0x28, 0x00, 0x17, 0xD8, 0x28, 0x00, 0x1B, 0xDC, 0x28, 0x00, 0x17, 0xE0, + 0x28, 0x00, 0x5B, 0xE4, 0x7F, 0x02, 0x00, 0x0B, 0xBC, 0x00, 0x1F, 0x07, 0x10, 0x00, 0x1C, 0x0C, + 0x76, 0x17, 0x04, 0x68, 0x02, 0x20, 0x01, 0x00, 0x28, 0x01, 0x73, 0x03, 0x00, 0x01, 0x00, 0x04, + 0x00, 0x05, 0x22, 0x00, 0x11, 0x02, 0x02, 0x00, 0x20, 0x03, 0x00, 0x12, 0x03, 0x0C, 0xB8, 0x04, + 0x08, 0x0C, 0x00, 0x08, 0x8C, 0x17, 0x5B, 0x20, 0x03, 0xE0, 0x01, 0x16, 0x6A, 0x00, 0x1B, 0xE8, + 0xD4, 0x00, 0x0F, 0x2C, 0x00, 0x09, 0x1F, 0xF0, 0x2C, 0x00, 0x18, 0x17, 0xF8, 0x2C, 0x00, 0x35, + 0x06, 0x00, 0xFE, 0xD6, 0x06, 0x5F, 0x2E, 0x00, 0x2C, 0x00, 0x1D, 0xF6, 0x00, 0x00, 0x31, 0x06, + 0x00, 0xFD, 0x24, 0x00, 0x1F, 0x30, 0x24, 0x00, 0x0A, 0x11, 0xFC, 0x24, 0x00, 0x1F, 0x60, 0x24, + 0x00, 0x0A, 0x11, 0xFB, 0x24, 0x00, 0x1F, 0x90, 0x24, 0x00, 0x0A, 0x11, 0xFA, 0x24, 0x00, 0x1F, + 0xC0, 0x24, 0x00, 0x0A, 0x11, 0xF9, 0x24, 0x00, 0x1F, 0xF0, 0x24, 0x00, 0x0A, 0x11, 0xF8, 0x24, + 0x00, 0x2F, 0x20, 0x01, 0x24, 0x00, 0x09, 0x11, 0xF7, 0x24, 0x00, 0x1F, 0x50, 0x24, 0x00, 0x0A, + 0x11, 0xF6, 0x24, 0x00, 0x1F, 0x80, 0x24, 0x00, 0x0A, 0x11, 0xF5, 0x24, 0x00, 0x1F, 0xB0, 0x24, + 0x00, 0x08, 0x33, 0x04, 0x00, 0xF4, 0x0E, 0x05, 0x5D, 0x2E, 0x00, 0xDF, 0x01, 0x8A, 0x28, 0x08, + 0x20, 0x00, 0x80, 0x1C, 0x05, 0x13, 0x99, 0x0E, 0x04, 0x7F, 0xB8, 0x00, 0x46, 0x00, 0x2C, 0x00, + 0x1E, 0x48, 0x00, 0x02, 0x10, 0x98, 0xEC, 0x43, 0x23, 0x00, 0x48, 0x24, 0x00, 0x0C, 0x48, 0x00, + 0x11, 0x0C, 0x48, 0x00, 0x20, 0x94, 0xFF, 0x6E, 0x0B, 0x5F, 0x90, 0x00, 0xB8, 0x00, 0xBE, 0x90, + 0x00, 0x04, 0x40, 0x0A, 0x00, 0x93, 0xFF, 0x9E, 0x0B, 0x5F, 0x50, 0x01, 0xB8, 0x00, 0x5E, 0x6C, + 0x00, 0x00, 0x80, 0x92, 0xFF, 0x1F, 0x00, 0x06, 0x00, 0x91, 0xFF, 0x36, 0x0A, 0x5E, 0xB0, 0x01, + 0xB8, 0x00, 0x2E, 0x90, 0x00, 0x09, 0x01, 0x00, 0x02, 0x8A, 0x7C, 0x40, 0x34, 0x00, 0x58, 0x02, + 0x7B, 0x2B, 0x2B, 0x80, 0x3F, 0x1F, 0x00, 0x2F, 0x3F, 0x10, 0x3B, 0x00, 0x07, 0x10, 0x3F, 0x30, + 0x00, 0x0F, 0x20, 0x00, 0x07, 0x00, 0x4C, 0x00, 0x1F, 0xC0, 0x20, 0x00, 0x08, 0x11, 0xC0, 0xA3, + 0x0B, 0x0E, 0x60, 0x00, 0x0F, 0xA0, 0x00, 0x09, 0x2F, 0x00, 0x00, 0xA0, 0x00, 0x0B, 0x2F, 0x80, + 0x3F, 0xA0, 0x00, 0x8B, 0x0F, 0x40, 0x01, 0x0D, 0x2F, 0x80, 0x3F, 0xA0, 0x00, 0x8B, 0x0F, 0x40, + 0x01, 0x0D, 0x2F, 0x80, 0x3F, 0xA0, 0x00, 0x8B, 0x0F, 0x40, 0x01, 0x0D, 0x0D, 0x00, 0x03, 0x01, + 0x7C, 0x0D, 0x00, 0x8A, 0x0E, 0x3F, 0x78, 0x00, 0x04, 0x84, 0x00, 0x02, 0x00, 0x20, 0x00, 0x1F, + 0x78, 0x20, 0x00, 0x03, 0x01, 0xA0, 0x00, 0x00, 0x20, 0x00, 0x1F, 0xF0, 0x20, 0x00, 0x02, 0x02, + 0xA0, 0x00, 0x00, 0x20, 0x00, 0x2E, 0x68, 0x01, 0x20, 0x00, 0x04, 0xA0, 0x00, 0x00, 0x20, 0x00, + 0x1F, 0xE0, 0x20, 0x00, 0x02, 0x04, 0x58, 0x04, 0x0F, 0x95, 0xA7, 0x0A, 0x01, 0x40, 0x00, 0x7F, + 0x3A, 0x00, 0xF8, 0x00, 0xA6, 0x01, 0x14, 0x21, 0x00, 0x02, 0x02, 0x70, 0x0A, 0x1F, 0x14, 0x64, + 0x01, 0x06, 0x06, 0x90, 0x0A, 0x0C, 0x24, 0x00, 0x6E, 0x20, 0x40, 0x00, 0x00, 0x40, 0x40, 0x40, + 0x00, 0x0F, 0x60, 0x00, 0x16, 0x01, 0x20, 0x01, 0x0F, 0x60, 0x00, 0x07, 0x00, 0xBF, 0x0F, 0x1F, + 0x20, 0x60, 0x00, 0x28, 0x06, 0x60, 0x01, 0x11, 0x16, 0xBC, 0x07, 0x1F, 0x14, 0x60, 0x01, 0x02, + 0x0F, 0x60, 0x00, 0x09, 0xF3, 0x3F, 0x18, 0x80, 0x02, 0x00, 0x1C, 0x80, 0x02, 0x00, 0x20, 0x80, + 0x02, 0x00, 0x24, 0x80, 0x02, 0x00, 0x30, 0x80, 0x02, 0x00, 0x34, 0x80, 0x02, 0x00, 0x38, 0x80, + 0x02, 0x00, 0x44, 0x80, 0x02, 0x00, 0x48, 0x80, 0x02, 0x00, 0x4C, 0x80, 0x02, 0x00, 0x58, 0x80, + 0x02, 0x00, 0x5C, 0x80, 0x02, 0x00, 0x60, 0x80, 0x02, 0x00, 0x6C, 0x80, 0x02, 0x00, 0x70, 0x80, + 0x02, 0x00, 0x74, 0x80, 0x02, 0x00, 0x80, 0x80, 0x02, 0x00, 0x84, 0x80, 0x02, 0x00, 0x88, 0x80, + 0x02, 0x00, 0x8C, 0x80, 0xD8, 0x09, 0xF2, 0x06, 0x80, 0x02, 0x00, 0xA4, 0x80, 0x02, 0x00, 0xB0, + 0x80, 0x02, 0x00, 0xB4, 0x80, 0x02, 0x00, 0xB8, 0x80, 0x02, 0x00, 0xBC, 0x80, 0x58, 0x0B, 0xF0, + 0xFF, 0xE7, 0xC8, 0x80, 0x02, 0x00, 0xD4, 0x80, 0x02, 0x00, 0xD8, 0x80, 0x02, 0x00, 0xDC, 0x80, + 0x02, 0x00, 0xE0, 0x80, 0x02, 0x00, 0xEC, 0x80, 0x02, 0x00, 0xF0, 0x80, 0x02, 0x00, 0xF4, 0x80, + 0x02, 0x00, 0x00, 0x81, 0x02, 0x00, 0x04, 0x81, 0x02, 0x00, 0x08, 0x81, 0x02, 0x00, 0x14, 0x81, + 0x02, 0x00, 0x18, 0x81, 0x02, 0x00, 0x1C, 0x81, 0x02, 0x00, 0x28, 0x81, 0x02, 0x00, 0x2C, 0x81, + 0x02, 0x00, 0x30, 0x81, 0x02, 0x00, 0x34, 0x81, 0x02, 0x00, 0x40, 0x81, 0x02, 0x00, 0x44, 0x81, + 0x02, 0x00, 0x48, 0x81, 0x02, 0x00, 0x54, 0x81, 0x02, 0x00, 0x58, 0x81, 0x02, 0x00, 0x5C, 0x81, + 0x02, 0x00, 0x68, 0x81, 0x02, 0x00, 0x6C, 0x81, 0x02, 0x00, 0x70, 0x81, 0x02, 0x00, 0x74, 0x81, + 0x02, 0x00, 0x80, 0x81, 0x02, 0x00, 0x84, 0x81, 0x02, 0x00, 0x88, 0x81, 0x02, 0x00, 0x94, 0x81, + 0x02, 0x00, 0x98, 0x81, 0x02, 0x00, 0x9C, 0x81, 0x02, 0x00, 0xA8, 0x81, 0x02, 0x00, 0xAC, 0x81, + 0x02, 0x00, 0xB0, 0x81, 0x02, 0x00, 0xBC, 0x81, 0x02, 0x00, 0xC0, 0x81, 0x02, 0x00, 0xC4, 0x81, + 0x02, 0x00, 0xD0, 0x81, 0x02, 0x00, 0xD4, 0x81, 0x02, 0x00, 0xD8, 0x81, 0x02, 0x00, 0xE4, 0x81, + 0x02, 0x00, 0xE8, 0x81, 0x02, 0x00, 0xEC, 0x81, 0x02, 0x00, 0xF8, 0x81, 0x02, 0x00, 0xFC, 0x81, + 0x02, 0x00, 0x00, 0x82, 0x02, 0x00, 0x0C, 0x82, 0x02, 0x00, 0x10, 0x82, 0x02, 0x00, 0x14, 0x82, + 0x02, 0x00, 0x20, 0x82, 0x02, 0x00, 0x24, 0x82, 0x02, 0x00, 0x28, 0x82, 0x02, 0x00, 0x34, 0x82, + 0x02, 0x00, 0x38, 0x82, 0x02, 0x00, 0x3C, 0x82, 0x02, 0x00, 0x48, 0x82, 0x02, 0x00, 0x4C, 0x82, + 0x02, 0x00, 0x50, 0x82, 0x02, 0x00, 0x5C, 0x82, 0x02, 0x00, 0x60, 0x82, 0x02, 0x00, 0x64, 0x82, + 0x02, 0x00, 0x70, 0x82, 0x02, 0x00, 0x74, 0x82, 0x02, 0x00, 0x78, 0x82, 0x02, 0x00, 0x84, 0x82, + 0x02, 0x00, 0x88, 0x82, 0x02, 0x00, 0x8C, 0x82, 0x02, 0x00, 0x98, 0x82, 0x02, 0x00, 0x9C, 0x82, + 0x02, 0x00, 0xA0, 0x82, 0x02, 0x00, 0xAC, 0x82, 0x02, 0x00, 0xB0, 0x82, 0x02, 0x00, 0xB4, 0x82, + 0x02, 0x00, 0xC0, 0x82, 0x02, 0x00, 0xC4, 0x82, 0x02, 0x00, 0xC8, 0x82, 0x02, 0x00, 0xCC, 0x82, + 0x02, 0x00, 0xD8, 0x82, 0x02, 0x00, 0xDC, 0x82, 0x02, 0x00, 0xE0, 0x82, 0x02, 0x00, 0xEC, 0x82, + 0x02, 0x00, 0xF0, 0x82, 0x02, 0x00, 0xF4, 0x82, 0x02, 0x00, 0x00, 0x83, 0x02, 0x00, 0x04, 0x83, + 0x02, 0x00, 0x08, 0x83, 0x02, 0x00, 0x14, 0x83, 0x02, 0x00, 0x18, 0x83, 0x02, 0x00, 0x1C, 0x83, + 0x02, 0x00, 0x20, 0x83, 0x02, 0x00, 0x2C, 0x83, 0x02, 0x00, 0x30, 0x83, 0x02, 0x00, 0x34, 0x83, + 0x02, 0x00, 0x40, 0x83, 0x02, 0x00, 0x44, 0x83, 0x02, 0x00, 0x48, 0x83, 0x02, 0x00, 0x54, 0x83, + 0x02, 0x00, 0x58, 0x83, 0x02, 0x00, 0x5C, 0x83, 0x02, 0x00, 0x68, 0x83, 0x02, 0x00, 0x6C, 0x83, + 0x02, 0x00, 0x70, 0x83, 0x02, 0x00, 0x7C, 0x83, 0x02, 0x00, 0x80, 0x83, 0x02, 0x00, 0x84, 0x83, + 0x02, 0x00, 0x90, 0x83, 0x02, 0x00, 0x94, 0x83, 0x02, 0x00, 0x98, 0x83, 0x02, 0x00, 0xA4, 0x83, + 0x02, 0x00, 0xA8, 0x83, 0x02, 0x00, 0xAC, 0x83, 0x02, 0x00, 0xB8, 0x83, 0x02, 0x00, 0xBC, 0x83, + 0x02, 0x00, 0xC0, 0x83, 0x02, 0x00, 0xCC, 0x83, 0x02, 0x00, 0xD0, 0x83, 0x02, 0x00, 0xD4, 0x83, + 0x02, 0x00, 0xE0, 0x83, 0x02, 0x00, 0xE4, 0x83, 0x02, 0x00, 0xE8, 0x83, 0x02, 0x00, 0xF4, 0x83, + 0x02, 0x00, 0xF8, 0x83, 0x02, 0x00, 0xFC, 0x98, 0x00, 0xF0, 0xFF, 0xBE, 0x84, 0x02, 0x00, 0x0C, + 0x84, 0x02, 0x00, 0x10, 0x84, 0x02, 0x00, 0x1C, 0x84, 0x02, 0x00, 0x20, 0x84, 0x02, 0x00, 0x24, + 0x84, 0x02, 0x00, 0x28, 0x84, 0x02, 0x00, 0x34, 0x84, 0x02, 0x00, 0x38, 0x84, 0x02, 0x00, 0x3C, + 0x84, 0x02, 0x00, 0x48, 0x84, 0x02, 0x00, 0x4C, 0x84, 0x02, 0x00, 0x50, 0x84, 0x02, 0x00, 0x5C, + 0x84, 0x02, 0x00, 0x60, 0x84, 0x02, 0x00, 0x64, 0x84, 0x02, 0x00, 0x70, 0x84, 0x02, 0x00, 0x74, + 0x84, 0x02, 0x00, 0x78, 0x84, 0x02, 0x00, 0x84, 0x84, 0x02, 0x00, 0x88, 0x84, 0x02, 0x00, 0x8C, + 0x84, 0x02, 0x00, 0x98, 0x84, 0x02, 0x00, 0x9C, 0x84, 0x02, 0x00, 0xA0, 0x84, 0x02, 0x00, 0xAC, + 0x84, 0x02, 0x00, 0xB0, 0x84, 0x02, 0x00, 0xB4, 0x84, 0x02, 0x00, 0xC0, 0x84, 0x02, 0x00, 0xC4, + 0x84, 0x02, 0x00, 0xC8, 0x84, 0x02, 0x00, 0xD4, 0x84, 0x02, 0x00, 0xD8, 0x84, 0x02, 0x00, 0xDC, + 0x84, 0x02, 0x00, 0xE8, 0x84, 0x02, 0x00, 0xEC, 0x84, 0x02, 0x00, 0xF0, 0x84, 0x02, 0x00, 0xFC, + 0x84, 0x02, 0x00, 0x00, 0x85, 0x02, 0x00, 0x04, 0x85, 0x02, 0x00, 0x10, 0x85, 0x02, 0x00, 0x14, + 0x85, 0x02, 0x00, 0x18, 0x85, 0x02, 0x00, 0x24, 0x85, 0x02, 0x00, 0x28, 0x85, 0x02, 0x00, 0x2C, + 0x85, 0x02, 0x00, 0x38, 0x85, 0x02, 0x00, 0x3C, 0x85, 0x02, 0x00, 0x40, 0x85, 0x02, 0x00, 0x4C, + 0x85, 0x02, 0x00, 0x50, 0x85, 0x02, 0x00, 0x54, 0x85, 0x02, 0x00, 0x60, 0x85, 0x02, 0x00, 0x64, + 0x85, 0x02, 0x00, 0x68, 0x85, 0x02, 0x00, 0x74, 0x85, 0x02, 0x00, 0x78, 0x85, 0x02, 0x00, 0x7C, + 0x85, 0x02, 0x00, 0x88, 0x85, 0x02, 0x00, 0x8C, 0x85, 0x02, 0x00, 0x90, 0x85, 0x02, 0x00, 0x9C, + 0x85, 0x02, 0x00, 0xA0, 0x85, 0x02, 0x00, 0xA4, 0x85, 0x02, 0x00, 0xB0, 0x85, 0x02, 0x00, 0xB4, + 0x85, 0x02, 0x00, 0xB8, 0x85, 0x02, 0x00, 0xC4, 0x85, 0x02, 0x00, 0xC8, 0x85, 0x02, 0x00, 0xCC, + 0x85, 0x02, 0x00, 0xD8, 0x85, 0x02, 0x00, 0xDC, 0x85, 0x02, 0x00, 0xE0, 0x85, 0x02, 0x00, 0xEC, + 0x85, 0x02, 0x00, 0xF0, 0x85, 0x02, 0x00, 0xF4, 0x85, 0x02, 0x00, 0x00, 0x86, 0x02, 0x00, 0x04, + 0x86, 0x02, 0x00, 0x08, 0x86, 0x02, 0x00, 0x14, 0x86, 0x02, 0x00, 0x18, 0x86, 0x02, 0x00, 0x1C, + 0x86, 0x02, 0x00, 0x28, 0x86, 0x02, 0x00, 0x2C, 0x86, 0x02, 0x00, 0x30, 0x86, 0x02, 0x00, 0x3C, + 0x86, 0x02, 0x00, 0x40, 0x86, 0x02, 0x00, 0x44, 0x86, 0x02, 0x00, 0x50, 0x86, 0x02, 0x00, 0x54, + 0x86, 0x02, 0x00, 0x58, 0x86, 0x02, 0x00, 0x64, 0x86, 0x02, 0x00, 0x68, 0x86, 0x02, 0x00, 0x6C, + 0x86, 0x02, 0x00, 0x78, 0x86, 0x02, 0x00, 0x7C, 0x86, 0x02, 0x00, 0x80, 0x86, 0x02, 0x00, 0x8C, + 0x86, 0x02, 0x00, 0x90, 0x86, 0x02, 0x00, 0x94, 0x86, 0x02, 0x00, 0x98, 0x86, 0x02, 0x00, 0xA4, + 0x86, 0x02, 0x00, 0xA8, 0x86, 0x02, 0x00, 0xAC, 0x86, 0x02, 0x00, 0xB8, 0x86, 0x02, 0x00, 0xBC, + 0x86, 0x02, 0x00, 0xC0, 0x86, 0x02, 0x00, 0xCC, 0x86, 0x02, 0x00, 0xD0, 0x86, 0x02, 0x00, 0xD4, + 0x86, 0x02, 0x00, 0xE0, 0x86, 0x02, 0x00, 0xE4, 0x86, 0x02, 0x00, 0xE8, 0x86, 0x02, 0x00, 0xF4, + 0x86, 0x02, 0x00, 0xF8, 0x86, 0x02, 0x00, 0xFC, 0x98, 0x00, 0xF0, 0xFF, 0xBA, 0x87, 0x02, 0x00, + 0x0C, 0x87, 0x02, 0x00, 0x10, 0x87, 0x02, 0x00, 0x1C, 0x87, 0x02, 0x00, 0x20, 0x87, 0x02, 0x00, + 0x24, 0x87, 0x02, 0x00, 0x30, 0x87, 0x02, 0x00, 0x34, 0x87, 0x02, 0x00, 0x38, 0x87, 0x02, 0x00, + 0x44, 0x87, 0x02, 0x00, 0x48, 0x87, 0x02, 0x00, 0x4C, 0x87, 0x02, 0x00, 0x58, 0x87, 0x02, 0x00, + 0x5C, 0x87, 0x02, 0x00, 0x60, 0x87, 0x02, 0x00, 0x6C, 0x87, 0x02, 0x00, 0x70, 0x87, 0x02, 0x00, + 0x74, 0x87, 0x02, 0x00, 0x80, 0x87, 0x02, 0x00, 0x84, 0x87, 0x02, 0x00, 0x88, 0x87, 0x02, 0x00, + 0x94, 0x87, 0x02, 0x00, 0x98, 0x87, 0x02, 0x00, 0x9C, 0x87, 0x02, 0x00, 0xA8, 0x87, 0x02, 0x00, + 0xAC, 0x87, 0x02, 0x00, 0xB0, 0x87, 0x02, 0x00, 0xBC, 0x87, 0x02, 0x00, 0xC0, 0x87, 0x02, 0x00, + 0xC4, 0x87, 0x02, 0x00, 0xD0, 0x87, 0x02, 0x00, 0xD4, 0x87, 0x02, 0x00, 0xD8, 0x87, 0x02, 0x00, + 0xE4, 0x87, 0x02, 0x00, 0xE8, 0x87, 0x02, 0x00, 0xEC, 0x87, 0x02, 0x00, 0xF8, 0x87, 0x02, 0x00, + 0xFC, 0x87, 0x02, 0x00, 0x00, 0x88, 0x02, 0x00, 0x0C, 0x88, 0x02, 0x00, 0x10, 0x88, 0x02, 0x00, + 0x14, 0x88, 0x02, 0x00, 0x20, 0x88, 0x02, 0x00, 0x24, 0x88, 0x02, 0x00, 0x28, 0x88, 0x02, 0x00, + 0x34, 0x88, 0x02, 0x00, 0x38, 0x88, 0x02, 0x00, 0x3C, 0x88, 0x02, 0x00, 0x48, 0x88, 0x02, 0x00, + 0x4C, 0x88, 0x02, 0x00, 0x50, 0x88, 0x02, 0x00, 0x5C, 0x88, 0x02, 0x00, 0x60, 0x88, 0x02, 0x00, + 0x64, 0x88, 0x02, 0x00, 0x70, 0x88, 0x02, 0x00, 0x74, 0x88, 0x02, 0x00, 0x78, 0x88, 0x02, 0x00, + 0x84, 0x88, 0x02, 0x00, 0x88, 0x88, 0x02, 0x00, 0x8C, 0x88, 0x02, 0x00, 0x98, 0x88, 0x02, 0x00, + 0x9C, 0x88, 0x02, 0x00, 0xA0, 0x88, 0x02, 0x00, 0xAC, 0x88, 0x02, 0x00, 0xB0, 0x88, 0x02, 0x00, + 0xB4, 0x88, 0x02, 0x00, 0xC0, 0x88, 0x02, 0x00, 0xC4, 0x88, 0x02, 0x00, 0xC8, 0x88, 0x02, 0x00, + 0xD4, 0x88, 0x02, 0x00, 0xD8, 0x88, 0x02, 0x00, 0xDC, 0x88, 0x02, 0x00, 0xE8, 0x88, 0x02, 0x00, + 0xEC, 0x88, 0x02, 0x00, 0xF0, 0x88, 0x02, 0x00, 0xFC, 0x88, 0x02, 0x00, 0x00, 0x89, 0x02, 0x00, + 0x04, 0x89, 0x02, 0x00, 0x08, 0x89, 0x02, 0x00, 0x14, 0x89, 0x02, 0x00, 0x18, 0x89, 0x02, 0x00, + 0x1C, 0x89, 0x02, 0x00, 0x28, 0x89, 0x02, 0x00, 0x2C, 0x89, 0x02, 0x00, 0x30, 0x89, 0x02, 0x00, + 0x3C, 0x89, 0x02, 0x00, 0x40, 0x89, 0x02, 0x00, 0x44, 0x89, 0x02, 0x00, 0x50, 0x89, 0x02, 0x00, + 0x54, 0x89, 0x02, 0x00, 0x58, 0x89, 0x02, 0x00, 0x64, 0x89, 0x02, 0x00, 0x68, 0x89, 0x02, 0x00, + 0x6C, 0x89, 0x02, 0x00, 0x78, 0x89, 0x02, 0x00, 0x7C, 0x89, 0x02, 0x00, 0x80, 0x89, 0x02, 0x00, + 0x8C, 0x89, 0x02, 0x00, 0x90, 0x89, 0x02, 0x00, 0x94, 0x89, 0x02, 0x00, 0xA0, 0x89, 0x02, 0x00, + 0xA4, 0x89, 0x02, 0x00, 0xA8, 0x89, 0x02, 0x00, 0xB4, 0x89, 0x02, 0x00, 0xB8, 0x89, 0x02, 0x00, + 0xBC, 0x89, 0x02, 0x00, 0xC8, 0x89, 0x02, 0x00, 0xCC, 0x89, 0x02, 0x00, 0xD0, 0x89, 0x02, 0x00, + 0xDC, 0x89, 0x02, 0x00, 0xE0, 0x89, 0x02, 0x00, 0xE4, 0x89, 0x02, 0x00, 0xF0, 0x89, 0x02, 0x00, + 0xF4, 0x89, 0x02, 0x00, 0xF8, 0x98, 0x00, 0xF0, 0x89, 0x8A, 0x02, 0x00, 0x08, 0x8A, 0x02, 0x00, + 0x0C, 0x8A, 0x02, 0x00, 0x18, 0x8A, 0x02, 0x00, 0x1C, 0x8A, 0x02, 0x00, 0x20, 0x8A, 0x02, 0x00, + 0x2C, 0x8A, 0x02, 0x00, 0x30, 0x8A, 0x02, 0x00, 0x34, 0x8A, 0x02, 0x00, 0x40, 0x8A, 0x02, 0x00, + 0x44, 0x8A, 0x02, 0x00, 0x48, 0x8A, 0x02, 0x00, 0x54, 0x8A, 0x02, 0x00, 0x58, 0x8A, 0x02, 0x00, + 0x5C, 0x8A, 0x02, 0x00, 0x68, 0x8A, 0x02, 0x00, 0x6C, 0x8A, 0x02, 0x00, 0x70, 0x8A, 0x02, 0x00, + 0x7C, 0x8A, 0x02, 0x00, 0x80, 0x8A, 0x02, 0x00, 0x84, 0x8A, 0x02, 0x00, 0x90, 0x8A, 0x02, 0x00, + 0x94, 0x8A, 0x02, 0x00, 0x98, 0x8A, 0x02, 0x00, 0xA4, 0x8A, 0x02, 0x00, 0xA8, 0x8A, 0x02, 0x00, + 0xAC, 0x8A, 0x02, 0x00, 0xB8, 0x8A, 0x02, 0x00, 0xBC, 0x8A, 0x02, 0x00, 0xC0, 0x8A, 0x02, 0x00, + 0xCC, 0x8A, 0x02, 0x00, 0xD0, 0x8A, 0x02, 0x00, 0xD4, 0x8A, 0x02, 0x00, 0xE0, 0x8A, 0x02, 0x00, + 0xE4, 0x8A, 0x02, 0x00, 0xE8, 0x8A, 0x02, 0x00, 0xF4, 0x8A, 0x02, 0x00, 0xF8, 0x8A, 0x02, 0x00, + 0xFC, 0x98, 0x00, 0xF0, 0x85, 0x8B, 0x02, 0x00, 0x0C, 0x8B, 0x02, 0x00, 0x10, 0x8B, 0x02, 0x00, + 0x1C, 0x8B, 0x02, 0x00, 0x20, 0x8B, 0x02, 0x00, 0x24, 0x8B, 0x02, 0x00, 0x30, 0x8B, 0x02, 0x00, + 0x34, 0x8B, 0x02, 0x00, 0x38, 0x8B, 0x02, 0x00, 0x44, 0x8B, 0x02, 0x00, 0x48, 0x8B, 0x02, 0x00, + 0x4C, 0x8B, 0x02, 0x00, 0x58, 0x8B, 0x02, 0x00, 0x5C, 0x8B, 0x02, 0x00, 0x60, 0x8B, 0x02, 0x00, + 0x6C, 0x8B, 0x02, 0x00, 0x70, 0x8B, 0x02, 0x00, 0x74, 0x8B, 0x02, 0x00, 0x80, 0x8B, 0x02, 0x00, + 0x84, 0x8B, 0x02, 0x00, 0x88, 0x8B, 0x02, 0x00, 0x94, 0x8B, 0x02, 0x00, 0x98, 0x8B, 0x02, 0x00, + 0x9C, 0x8B, 0x02, 0x00, 0xA8, 0x8B, 0x02, 0x00, 0xAC, 0x8B, 0x02, 0x00, 0xB0, 0x8B, 0x02, 0x00, + 0xBC, 0x8B, 0x02, 0x00, 0xC0, 0x8B, 0x02, 0x00, 0xC4, 0x8B, 0x02, 0x00, 0xD0, 0x8B, 0x02, 0x00, + 0xD4, 0x8B, 0x02, 0x00, 0xD8, 0x8B, 0x02, 0x00, 0xE4, 0x8B, 0x02, 0x00, 0xE8, 0x8B, 0x02, 0x00, + 0xEC, 0x8B, 0x02, 0x00, 0xF0, 0x8B, 0x02, 0x00, 0xFC, 0xC2, 0x95, 0x52, 0x8C, 0x02, 0x00, 0x04, + 0x8C, 0xAC, 0x0E, 0xF3, 0x87, 0x10, 0x8C, 0x02, 0x00, 0x14, 0x8C, 0x02, 0x00, 0x18, 0x8C, 0x02, + 0x00, 0x1C, 0x8C, 0x02, 0x00, 0x28, 0x8C, 0x02, 0x00, 0x2C, 0x8C, 0x02, 0x00, 0x30, 0x8C, 0x02, + 0x00, 0x3C, 0x8C, 0x02, 0x00, 0x40, 0x8C, 0x02, 0x00, 0x44, 0x8C, 0x02, 0x00, 0x50, 0x8C, 0x02, + 0x00, 0x54, 0x8C, 0x02, 0x00, 0x58, 0x8C, 0x02, 0x00, 0x64, 0x8C, 0x02, 0x00, 0x68, 0x8C, 0x02, + 0x00, 0x6C, 0x8C, 0x02, 0x00, 0x78, 0x8C, 0x02, 0x00, 0x7C, 0x8C, 0x02, 0x00, 0x80, 0x8C, 0x02, + 0x00, 0x8C, 0x8C, 0x02, 0x00, 0x90, 0x8C, 0x02, 0x00, 0x94, 0x8C, 0x02, 0x00, 0xA0, 0x8C, 0x02, + 0x00, 0xA4, 0x8C, 0x02, 0x00, 0xA8, 0x8C, 0x02, 0x00, 0xB4, 0x8C, 0x02, 0x00, 0xB8, 0x8C, 0x02, + 0x00, 0xBC, 0x8C, 0x02, 0x00, 0xC8, 0x8C, 0x02, 0x00, 0xCC, 0x8C, 0x02, 0x00, 0xD0, 0x8C, 0x02, + 0x00, 0xDC, 0x8C, 0x02, 0x00, 0xE0, 0x8C, 0x02, 0x00, 0xE4, 0x8C, 0x02, 0x00, 0xF0, 0x8C, 0x02, + 0x00, 0xF4, 0x8C, 0x02, 0x00, 0xF8, 0x8C, 0x02, 0x00, 0xFC, 0x8C, 0x90, 0x12, 0xD2, 0x8D, 0x02, + 0x00, 0x0C, 0x8D, 0x02, 0x00, 0x10, 0x8D, 0x02, 0x00, 0x20, 0x8D, 0x84, 0x07, 0xE2, 0x2C, 0x8D, + 0x02, 0x00, 0x30, 0x8D, 0x02, 0x00, 0x34, 0x8D, 0x02, 0x00, 0x44, 0x8D, 0x24, 0x14, 0xE2, 0x50, + 0x8D, 0x02, 0x00, 0x54, 0x8D, 0x02, 0x00, 0x58, 0x8D, 0x02, 0x00, 0x68, 0x8D, 0x30, 0x13, 0xE2, + 0x74, 0x8D, 0x02, 0x00, 0x78, 0x8D, 0x02, 0x00, 0x7C, 0x8D, 0x02, 0x00, 0x8C, 0x8D, 0x60, 0x12, + 0xF2, 0x1F, 0x98, 0x8D, 0x02, 0x00, 0x9C, 0x8D, 0x02, 0x00, 0xA0, 0x8D, 0x02, 0x00, 0xB0, 0x8D, + 0x02, 0x00, 0xBC, 0x8D, 0x02, 0x00, 0xC8, 0x8D, 0x02, 0x00, 0xCC, 0x8D, 0x02, 0x00, 0xD0, 0x8D, + 0x02, 0x00, 0xDC, 0x8D, 0x02, 0x00, 0xE0, 0x8D, 0x02, 0x00, 0xE4, 0x8D, 0x02, 0x00, 0xE8, 0x8D, + 0x54, 0x13, 0xF2, 0x17, 0xF4, 0x8D, 0x02, 0x00, 0x00, 0x8E, 0x02, 0x00, 0x04, 0x8E, 0x02, 0x00, + 0x08, 0x8E, 0x02, 0x00, 0x14, 0x8E, 0x02, 0x00, 0x18, 0x8E, 0x02, 0x00, 0x1C, 0x8E, 0x02, 0x00, + 0x28, 0x8E, 0x02, 0x00, 0x2C, 0x8E, 0x02, 0x00, 0x30, 0x8E, 0x4C, 0x01, 0xF3, 0x42, 0x3C, 0x8E, + 0x02, 0x00, 0x40, 0x8E, 0x02, 0x00, 0x44, 0x8E, 0x02, 0x00, 0x48, 0x8E, 0x02, 0x00, 0x54, 0x8E, + 0x02, 0x00, 0x60, 0x8E, 0x02, 0x00, 0x64, 0x8E, 0x02, 0x00, 0x68, 0x8E, 0x02, 0x00, 0x6C, 0x8E, + 0x02, 0x00, 0x78, 0x8E, 0x02, 0x00, 0x7C, 0x8E, 0x02, 0x00, 0x80, 0x8E, 0x02, 0x00, 0x84, 0x8E, + 0x02, 0x00, 0x90, 0x8E, 0x02, 0x00, 0x94, 0x8E, 0x02, 0x00, 0x98, 0x8E, 0x02, 0x00, 0x9C, 0x8E, + 0x02, 0x00, 0xA8, 0x8E, 0x02, 0x00, 0xAC, 0x8E, 0x02, 0x00, 0xB0, 0x8E, 0x02, 0x00, 0xB4, 0x58, + 0x00, 0x23, 0xC0, 0x8E, 0xAC, 0x1A, 0x12, 0x8E, 0x04, 0x01, 0xF2, 0x07, 0xD8, 0x8E, 0x02, 0x00, + 0xDC, 0x8E, 0x02, 0x00, 0xE0, 0x8E, 0x02, 0x00, 0xE4, 0x8E, 0x02, 0x00, 0xE8, 0x8E, 0x02, 0x00, + 0xF4, 0x8E, 0x0C, 0x01, 0xF2, 0x0F, 0x00, 0x8F, 0x02, 0x00, 0x04, 0x8F, 0x02, 0x00, 0x08, 0x8F, + 0x02, 0x00, 0x0C, 0x8F, 0x02, 0x00, 0x10, 0x8F, 0x02, 0x00, 0x14, 0x8F, 0x02, 0x00, 0x18, 0x8F, + 0x02, 0x00, 0x24, 0x8F, 0x1C, 0x01, 0x62, 0x30, 0x8F, 0x02, 0x00, 0x34, 0x8F, 0x14, 0x01, 0x62, + 0x40, 0x8F, 0x02, 0x00, 0x44, 0x8F, 0x68, 0x00, 0xF3, 0x07, 0x50, 0x8F, 0x02, 0x00, 0x54, 0x8F, + 0x02, 0x00, 0x58, 0x8F, 0x02, 0x00, 0x5C, 0x8F, 0x02, 0x00, 0x60, 0x8F, 0x02, 0x00, 0x6C, 0x8F, + 0x08, 0x1C, 0xF2, 0x06, 0x8F, 0x02, 0x00, 0x7C, 0x8F, 0x02, 0x00, 0x80, 0x8F, 0x02, 0x00, 0x84, + 0x8F, 0x02, 0x00, 0x88, 0x8F, 0x02, 0x00, 0x94, 0x8F, 0x90, 0x00, 0xF2, 0x13, 0xA0, 0x8F, 0x02, + 0x00, 0xA4, 0x8F, 0x02, 0x00, 0xA8, 0x8F, 0x02, 0x00, 0xAC, 0x8F, 0x02, 0x00, 0xB0, 0x8F, 0x02, + 0x00, 0xBC, 0x8F, 0x02, 0x00, 0xC8, 0x8F, 0x02, 0x00, 0xCC, 0x8F, 0x02, 0x00, 0xD0, 0x8F, 0x9C, + 0x00, 0xF0, 0x02, 0xDC, 0x8F, 0x02, 0x00, 0xE8, 0x8F, 0x02, 0x00, 0xEC, 0x8F, 0x02, 0x00, 0xF0, + 0x8F, 0x02, 0x00, 0xFC, 0x78, 0x00, 0xF2, 0x1E, 0x90, 0x02, 0x00, 0x04, 0x90, 0x02, 0x00, 0x10, + 0x90, 0x02, 0x00, 0x14, 0x90, 0x02, 0x00, 0x18, 0x90, 0x02, 0x00, 0x24, 0x90, 0x02, 0x00, 0x28, + 0x90, 0x02, 0x00, 0x2C, 0x90, 0x02, 0x00, 0x38, 0x90, 0x02, 0x00, 0x3C, 0x90, 0x02, 0x00, 0x40, + 0x90, 0x02, 0x00, 0x4C, 0x90, 0xC0, 0x00, 0x62, 0x58, 0x90, 0x02, 0x00, 0x64, 0x90, 0xC0, 0x00, + 0x62, 0x6C, 0x90, 0x02, 0x00, 0x78, 0x90, 0xAC, 0x01, 0x71, 0x80, 0x90, 0x02, 0x00, 0x8C, 0x90, + 0x02, 0x76, 0x11, 0xF0, 0x02, 0x94, 0x90, 0x02, 0x00, 0xA0, 0x90, 0x02, 0x00, 0xA8, 0x90, 0x02, + 0x00, 0xCC, 0x90, 0x02, 0x00, 0xF0, 0x60, 0x00, 0xF1, 0x12, 0x91, 0x02, 0x00, 0x38, 0x91, 0x02, + 0x00, 0x5C, 0x91, 0x02, 0x00, 0x80, 0x91, 0x02, 0x00, 0xAC, 0x91, 0x02, 0x00, 0xD8, 0x91, 0x02, + 0x00, 0x04, 0x92, 0x02, 0x00, 0x28, 0x92, 0x02, 0x00, 0x4C, 0x92, 0x08, 0x01, 0x17, 0xE0, 0x04, + 0x00, 0x08, 0x6F, 0x0A, 0x0F, 0x14, 0x00, 0x26, 0x1F, 0x02, 0x14, 0x00, 0x00, 0x17, 0x03, 0x68, + 0x00, 0x01, 0xC4, 0x14, 0x2D, 0x92, 0x02, 0x04, 0x14, 0x01, 0xCC, 0x14, 0x13, 0x92, 0x08, 0x24, + 0x0B, 0x30, 0x00, 0x1F, 0x78, 0x30, 0x00, 0x00, 0x0F, 0xBC, 0x00, 0x05, 0x2E, 0x01, 0x60, 0x14, + 0x00, 0x1F, 0x05, 0x28, 0x00, 0x00, 0x1F, 0x06, 0xD0, 0x00, 0x0B, 0x1B, 0xE0, 0xC8, 0x13, 0x0F, + 0x40, 0x00, 0x2A, 0x1F, 0x08, 0x40, 0x00, 0x14, 0x1F, 0x09, 0x54, 0x00, 0x01, 0x0F, 0xD0, 0x00, + 0x00, 0x1F, 0x0A, 0x28, 0x00, 0x00, 0x1F, 0x0B, 0x8C, 0x01, 0x01, 0x0F, 0x3C, 0x00, 0x00, 0x1F, + 0x0C, 0x28, 0x00, 0x00, 0x1F, 0x0D, 0x14, 0x00, 0x00, 0x1F, 0x0E, 0x14, 0x00, 0x00, 0x1F, 0x0F, + 0x14, 0x00, 0x00, 0x1F, 0x10, 0x14, 0x00, 0x00, 0x1F, 0x11, 0x14, 0x00, 0x00, 0x1F, 0x12, 0x14, + 0x00, 0x00, 0x1F, 0x13, 0x14, 0x00, 0x00, 0x1F, 0x14, 0x14, 0x00, 0x00, 0x13, 0x15, 0x14, 0x00, + 0x2A, 0x06, 0x60, 0x18, 0x00, 0x1F, 0x16, 0x2C, 0x00, 0x00, 0x1F, 0x17, 0x14, 0x00, 0x00, 0x1F, + 0x18, 0xAC, 0x01, 0x09, 0x0B, 0x16, 0x00, 0x2F, 0x02, 0x60, 0x5C, 0x01, 0x01, 0x0F, 0x48, 0x01, + 0xB3, 0x2F, 0x0D, 0x60, 0x08, 0x01, 0x17, 0x1F, 0x19, 0x40, 0x00, 0x00, 0x1F, 0x1A, 0x14, 0x00, + 0x00, 0x1F, 0x1B, 0x14, 0x00, 0x00, 0x1F, 0x1C, 0x14, 0x00, 0x00, 0x1F, 0x1D, 0x14, 0x00, 0x00, + 0x1F, 0x1E, 0x14, 0x00, 0x00, 0x1F, 0x1F, 0x14, 0x00, 0x00, 0x1F, 0x20, 0x14, 0x00, 0x00, 0x1F, + 0x21, 0x14, 0x00, 0x00, 0x1F, 0x22, 0x14, 0x00, 0x00, 0x1F, 0x23, 0x14, 0x00, 0x00, 0x1F, 0x24, + 0x14, 0x00, 0x00, 0x1F, 0x25, 0x14, 0x00, 0x00, 0x1F, 0x26, 0x14, 0x00, 0x00, 0x1F, 0x27, 0x14, + 0x00, 0x00, 0x1F, 0x28, 0x14, 0x00, 0x00, 0x1F, 0x29, 0x14, 0x00, 0x00, 0x1F, 0x2A, 0x14, 0x00, + 0x00, 0x1F, 0x2B, 0x14, 0x00, 0x00, 0x1F, 0x2C, 0x14, 0x00, 0x00, 0x1F, 0x2D, 0x14, 0x00, 0x00, + 0x1F, 0x2E, 0x14, 0x00, 0x00, 0x1F, 0x2F, 0x14, 0x00, 0x00, 0x1F, 0x30, 0x14, 0x00, 0x00, 0x1F, + 0x31, 0x14, 0x00, 0x00, 0x1F, 0x32, 0x14, 0x00, 0x00, 0x1F, 0x33, 0x14, 0x00, 0x00, 0x1F, 0x34, + 0xA4, 0x03, 0x08, 0x08, 0x14, 0x00, 0x1F, 0x35, 0x78, 0x03, 0x18, 0x1F, 0x36, 0x2C, 0x00, 0x00, + 0x1F, 0x37, 0x14, 0x00, 0x00, 0x1F, 0x38, 0x14, 0x00, 0x00, 0x1F, 0x39, 0x14, 0x00, 0x00, 0x1F, + 0x3A, 0x14, 0x00, 0x00, 0x1F, 0x3B, 0x14, 0x00, 0x00, 0x1F, 0x3C, 0x14, 0x00, 0x00, 0x1F, 0x3D, + 0x14, 0x00, 0x00, 0x1F, 0x3E, 0x14, 0x00, 0x00, 0x1F, 0x3F, 0x14, 0x00, 0x00, 0x1F, 0x40, 0x14, + 0x00, 0x00, 0x1F, 0x41, 0x14, 0x00, 0x00, 0x1F, 0x42, 0x14, 0x00, 0x00, 0x1F, 0x43, 0x14, 0x00, + 0x00, 0x1F, 0x44, 0x14, 0x00, 0x00, 0x1F, 0x45, 0x14, 0x00, 0x00, 0x1F, 0x46, 0x14, 0x00, 0x00, + 0x1F, 0x47, 0x14, 0x00, 0x00, 0x1F, 0x48, 0x70, 0x02, 0x14, 0x1F, 0x49, 0x14, 0x00, 0x00, 0x1F, + 0x4A, 0x14, 0x00, 0x00, 0x1F, 0x4B, 0x14, 0x00, 0x00, 0x1F, 0x4C, 0x14, 0x00, 0x00, 0x1F, 0x4D, + 0x14, 0x00, 0x00, 0x1F, 0x4E, 0x14, 0x00, 0x00, 0x1F, 0x4F, 0x70, 0x02, 0x54, 0x0F, 0x14, 0x06, + 0x01, 0x1F, 0x50, 0x1C, 0x01, 0x14, 0x1F, 0x51, 0x14, 0x00, 0x00, 0x1F, 0x52, 0x14, 0x00, 0x00, + 0x1F, 0x53, 0x14, 0x00, 0x00, 0x1F, 0x54, 0x14, 0x00, 0x00, 0x1F, 0x55, 0x14, 0x00, 0x00, 0x1F, + 0x56, 0x14, 0x00, 0x00, 0x1F, 0x57, 0x48, 0x08, 0x14, 0x1F, 0x58, 0x14, 0x00, 0x00, 0x1F, 0x59, + 0x14, 0x00, 0x00, 0x1F, 0x5A, 0x14, 0x00, 0x00, 0x1F, 0x5B, 0x14, 0x00, 0x00, 0x1F, 0x5C, 0x14, + 0x00, 0x00, 0x1F, 0x5D, 0x14, 0x00, 0x00, 0x1F, 0x5E, 0x14, 0x00, 0x00, 0x1F, 0x5F, 0x14, 0x00, + 0x00, 0x1F, 0x60, 0x14, 0x00, 0x00, 0x1F, 0x61, 0x14, 0x00, 0x00, 0x1F, 0x62, 0x14, 0x00, 0x00, + 0x1F, 0x63, 0x14, 0x00, 0x00, 0x1F, 0x64, 0x14, 0x00, 0x00, 0x1F, 0x65, 0x14, 0x00, 0x00, 0x1F, + 0x66, 0x30, 0x08, 0x14, 0x1F, 0x67, 0x14, 0x00, 0x00, 0x1F, 0x68, 0x70, 0x02, 0x14, 0x1F, 0x16, + 0x78, 0x07, 0x14, 0x1F, 0x69, 0x28, 0x00, 0x00, 0x1F, 0x6A, 0x14, 0x00, 0x00, 0x1F, 0x6B, 0x14, + 0x00, 0x00, 0x1F, 0x6C, 0xE4, 0x08, 0x08, 0x2F, 0x0E, 0x60, 0xE0, 0x00, 0x0F, 0x0F, 0xA8, 0x0A, + 0x05, 0x1F, 0x6D, 0x14, 0x00, 0x00, 0x17, 0x6E, 0x88, 0x0B, 0x13, 0x7C, 0x88, 0x0B, 0x17, 0x6F, + 0x14, 0x00, 0x13, 0x80, 0x14, 0x00, 0x1F, 0x70, 0x3C, 0x00, 0x00, 0x17, 0x71, 0x28, 0x00, 0x13, + 0x84, 0x28, 0x00, 0x1F, 0x72, 0x28, 0x00, 0x00, 0x17, 0x73, 0x28, 0x00, 0x13, 0x88, 0x28, 0x00, + 0x1F, 0x74, 0x28, 0x00, 0x00, 0x17, 0x75, 0x28, 0x00, 0x13, 0x8C, 0x28, 0x00, 0x1F, 0x76, 0xF4, + 0x03, 0x18, 0xFA, 0x07, 0x1A, 0xC0, 0x00, 0xE0, 0x77, 0x00, 0x00, 0xE0, 0x1A, 0xC0, 0x77, 0x00, + 0x01, 0xC0, 0x29, 0xC0, 0x78, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x58, 0x0C, 0x00, 0x24, 0x00, 0x11, + 0x79, 0x24, 0x00, 0x1F, 0x79, 0x24, 0x00, 0x0A, 0x11, 0x7A, 0x24, 0x00, 0x1F, 0x7A, 0x24, 0x00, + 0x0A, 0x11, 0x7B, 0x24, 0x00, 0x1F, 0x7B, 0x24, 0x00, 0x0A, 0x11, 0x7C, 0x24, 0x00, 0x1F, 0x7C, + 0x24, 0x00, 0x06, 0x01, 0x88, 0x21, 0x03, 0x18, 0x0D, 0x0F, 0xB4, 0x01, 0x01, 0x1B, 0x7D, 0x2C, + 0x0D, 0x1F, 0x98, 0x2C, 0x0D, 0x0B, 0x0E, 0x04, 0x02, 0x0F, 0x14, 0x00, 0x0C, 0x00, 0x30, 0x01, + 0x22, 0x7E, 0x00, 0xA8, 0x00, 0x01, 0x84, 0x26, 0x25, 0x92, 0x02, 0xB0, 0x0D, 0x13, 0xA0, 0x0C, + 0x00, 0x1B, 0x7F, 0x84, 0x00, 0x13, 0xA4, 0x84, 0x00, 0x1B, 0x80, 0x18, 0x00, 0x13, 0xA8, 0x18, + 0x00, 0x1B, 0x81, 0x18, 0x00, 0x3F, 0xAC, 0x92, 0x02, 0xCC, 0x00, 0x02, 0x1F, 0xB0, 0xCC, 0x00, + 0x03, 0x05, 0x0C, 0x00, 0x62, 0x82, 0x00, 0x00, 0xE0, 0x82, 0x00, 0x8C, 0x01, 0x13, 0x83, 0x34, + 0x00, 0x1B, 0xB4, 0x34, 0x00, 0x13, 0x00, 0x28, 0x00, 0x13, 0x77, 0x04, 0x00, 0x53, 0x84, 0x00, + 0x00, 0xE0, 0x85, 0x38, 0x00, 0x01, 0x6C, 0x22, 0x0F, 0x30, 0x00, 0x00, 0x48, 0x04, 0x20, 0x00, + 0xE0, 0x68, 0x00, 0x1B, 0x05, 0x10, 0x00, 0x22, 0x01, 0x40, 0xA4, 0x00, 0x00, 0x50, 0x00, 0xCC, + 0x86, 0x00, 0x00, 0xE0, 0x14, 0x00, 0x7C, 0x00, 0x01, 0x40, 0x30, 0xC0, 0x70, 0x02, 0x17, 0x02, + 0x28, 0x00, 0x13, 0x87, 0x28, 0x00, 0x1F, 0x02, 0x28, 0x00, 0x00, 0x1F, 0x03, 0x28, 0x00, 0x00, + 0x1F, 0x03, 0x28, 0x00, 0x00, 0x1F, 0x88, 0xB4, 0x01, 0x03, 0x05, 0x98, 0x00, 0x1F, 0x89, 0x20, + 0x00, 0x00, 0x1F, 0x8A, 0xB4, 0x07, 0x08, 0x00, 0xA8, 0x10, 0x39, 0xBC, 0x92, 0x02, 0x28, 0x04, + 0x01, 0xFC, 0x19, 0x29, 0x92, 0x02, 0x54, 0x04, 0x01, 0x44, 0x23, 0x26, 0x92, 0x02, 0x40, 0x23, + 0x07, 0x04, 0x02, 0x13, 0xD8, 0x0C, 0x00, 0x53, 0xDC, 0x92, 0x02, 0x00, 0xE0, 0x0C, 0x00, 0x13, + 0xEC, 0x08, 0x00, 0x6A, 0xF0, 0x92, 0x02, 0x00, 0xF4, 0x92, 0x54, 0x22, 0x63, 0x04, 0x93, 0x02, + 0x00, 0x08, 0x93, 0xF0, 0x27, 0x03, 0x08, 0x00, 0x60, 0x14, 0x93, 0x02, 0x00, 0x18, 0x93, 0xCC, + 0x10, 0x00, 0x48, 0x22, 0xBF, 0x00, 0x00, 0xFF, 0x00, 0xCA, 0x00, 0x22, 0x01, 0x4C, 0x00, 0x17, + 0x48, 0x22, 0x06, 0x04, 0xDC, 0x0B, 0x3F, 0x23, 0x00, 0x18, 0x24, 0x00, 0x00, 0x3F, 0x07, 0x00, + 0xFC, 0x48, 0x00, 0x10, 0x11, 0xFB, 0x24, 0x00, 0x4F, 0xFD, 0x02, 0xBD, 0x01, 0x48, 0x00, 0x07, + 0x1F, 0xFA, 0x48, 0x00, 0x10, 0x13, 0xF9, 0x48, 0x00, 0x0E, 0x90, 0x00, 0x0F, 0xB8, 0x02, 0x01, + 0x0C, 0xB8, 0x21, 0x00, 0x10, 0x21, 0x3F, 0x2C, 0x93, 0x02, 0x2C, 0x00, 0x16, 0x1F, 0xA4, 0x2C, + 0x00, 0x18, 0x28, 0x1C, 0x94, 0xA4, 0x23, 0x26, 0x97, 0xFF, 0x2C, 0x0A, 0x0F, 0x84, 0x22, 0x05, + 0x1F, 0x96, 0x24, 0x00, 0x10, 0x1F, 0x95, 0x24, 0x00, 0x0E, 0xF2, 0x5C, 0x94, 0x94, 0x02, 0x00, + 0x98, 0x94, 0x02, 0x00, 0x9C, 0x94, 0x02, 0x00, 0xA0, 0x94, 0x02, 0x00, 0xA4, 0x94, 0x02, 0x00, + 0xA8, 0x94, 0x02, 0x00, 0xAC, 0x94, 0x02, 0x00, 0xB0, 0x94, 0x02, 0x00, 0xB4, 0x94, 0x02, 0x00, + 0xB8, 0x94, 0x02, 0x00, 0xBC, 0x94, 0x02, 0x00, 0xC0, 0x94, 0x02, 0x00, 0xC4, 0x94, 0x02, 0x00, + 0xC8, 0x94, 0x02, 0x00, 0xCC, 0x94, 0x02, 0x00, 0xD0, 0x94, 0x02, 0x00, 0xD4, 0x94, 0x02, 0x00, + 0xD8, 0x94, 0x02, 0x00, 0xDC, 0x94, 0x02, 0x00, 0xE0, 0x94, 0x02, 0x00, 0xE4, 0x94, 0x02, 0x00, + 0xE8, 0x94, 0x02, 0x00, 0xEC, 0x94, 0x02, 0x00, 0xF0, 0x94, 0x02, 0x00, 0xF4, 0x94, 0x02, 0x00, + 0xF8, 0x94, 0x02, 0x00, 0xFC, 0x94, 0x02, 0x8C, 0x03, 0x62, 0x40, 0x8B, 0x00, 0x03, 0xC0, 0x2A, + 0x30, 0x03, 0x43, 0x95, 0x02, 0x00, 0x02, 0x14, 0x00, 0x35, 0x04, 0xC0, 0x8C, 0x18, 0x00, 0x01, + 0x64, 0x03, 0xA0, 0x40, 0x8C, 0x00, 0x04, 0xC0, 0x00, 0xE0, 0x04, 0x95, 0x02, 0xA9, 0x0B, 0xF0, + 0xFF, 0x6D, 0xE0, 0x01, 0x40, 0x8B, 0x00, 0x02, 0xC0, 0x02, 0x40, 0x8C, 0x00, 0x02, 0xC0, 0x00, + 0xC0, 0x03, 0x40, 0x00, 0xC0, 0x00, 0xE0, 0x08, 0x95, 0x02, 0x00, 0x2C, 0x95, 0x02, 0x00, 0x50, + 0x95, 0x02, 0x00, 0x74, 0x95, 0x02, 0x00, 0x98, 0x95, 0x02, 0x00, 0xBC, 0x95, 0x02, 0x00, 0xE0, + 0x95, 0x02, 0x00, 0x04, 0x96, 0x02, 0x00, 0x28, 0x96, 0x02, 0x00, 0x4C, 0x96, 0x02, 0x00, 0x70, + 0x96, 0x02, 0x00, 0x94, 0x96, 0x02, 0x00, 0xB8, 0x96, 0x02, 0x00, 0xDC, 0x96, 0x02, 0x00, 0x00, + 0x97, 0x02, 0x00, 0x24, 0x97, 0x02, 0x00, 0x48, 0x97, 0x02, 0x00, 0x6C, 0x97, 0x02, 0x00, 0x90, + 0x97, 0x02, 0x00, 0xB4, 0x97, 0x02, 0x00, 0xD8, 0x97, 0x02, 0x00, 0xFC, 0x97, 0x02, 0x00, 0x20, + 0x98, 0x02, 0x00, 0x44, 0x98, 0x02, 0x00, 0x68, 0x98, 0x02, 0x00, 0x8C, 0x98, 0x02, 0x00, 0xB0, + 0x98, 0x02, 0x00, 0xD4, 0x98, 0x02, 0x00, 0xF8, 0x98, 0x02, 0x00, 0x1C, 0x99, 0x02, 0x00, 0x40, + 0x99, 0x02, 0x00, 0x64, 0x99, 0x02, 0x00, 0x88, 0x99, 0x02, 0x00, 0xAC, 0x99, 0x02, 0x00, 0xD0, + 0x99, 0x02, 0x00, 0xF4, 0x99, 0x02, 0x00, 0x18, 0x9A, 0x02, 0x00, 0x3C, 0x9A, 0x02, 0x00, 0x60, + 0x9A, 0x02, 0x00, 0x84, 0x9A, 0x02, 0x00, 0xA8, 0x9A, 0x02, 0x00, 0xCC, 0x9A, 0x02, 0x00, 0xF0, + 0x9A, 0x02, 0x00, 0x14, 0x9B, 0x02, 0x00, 0x38, 0x9B, 0x02, 0x00, 0x5C, 0x9B, 0x02, 0x00, 0x80, + 0x9B, 0x02, 0x00, 0xA4, 0x9B, 0x02, 0x00, 0xC8, 0x9B, 0x02, 0x00, 0xEC, 0x9B, 0x02, 0x00, 0x10, + 0x9C, 0x02, 0x00, 0x34, 0x9C, 0x02, 0x00, 0x58, 0x9C, 0x02, 0x00, 0x7C, 0x9C, 0x02, 0x00, 0xA0, + 0x9C, 0x02, 0x00, 0xC4, 0x9C, 0x02, 0x00, 0xE8, 0x9C, 0x02, 0x00, 0x0C, 0x9D, 0x02, 0x00, 0x30, + 0x9D, 0x02, 0x00, 0x54, 0x9D, 0x02, 0x00, 0x78, 0x9D, 0x02, 0x00, 0x9C, 0x9D, 0x02, 0x00, 0xC0, + 0x9D, 0x02, 0x00, 0xE4, 0x9D, 0x02, 0x00, 0x08, 0x9E, 0x02, 0x00, 0x2C, 0x9E, 0x02, 0x00, 0x50, + 0x9E, 0x02, 0x00, 0x74, 0x9E, 0x02, 0x00, 0x98, 0x9E, 0x02, 0x00, 0xBC, 0x9E, 0x02, 0x00, 0xE0, + 0x9E, 0x02, 0x00, 0x04, 0x9F, 0x02, 0x00, 0x28, 0x9F, 0x02, 0x00, 0x4C, 0x9F, 0x02, 0x00, 0x70, + 0x9F, 0x02, 0x00, 0x94, 0x9F, 0x02, 0x00, 0xB8, 0x9F, 0x02, 0x00, 0xDC, 0x9F, 0x02, 0x00, 0x00, + 0xA0, 0x02, 0x00, 0x24, 0xA0, 0x02, 0x00, 0x48, 0xA0, 0x02, 0x00, 0x6C, 0xA0, 0x02, 0x00, 0x90, + 0xA0, 0x02, 0x00, 0xB4, 0xA0, 0x02, 0x00, 0xD8, 0xA0, 0x02, 0x00, 0xFC, 0xA0, 0x02, 0x00, 0x20, + 0xA1, 0x02, 0x00, 0x44, 0xA1, 0x02, 0x00, 0x68, 0xA1, 0x02, 0x00, 0x8C, 0xA1, 0xC4, 0x14, 0x13, + 0x01, 0xF4, 0x12, 0x00, 0x5C, 0x3E, 0xF3, 0x04, 0x01, 0x00, 0x0D, 0x00, 0x02, 0x00, 0x0E, 0x00, + 0x03, 0x00, 0x0F, 0x00, 0x04, 0x00, 0x10, 0x00, 0x05, 0x00, 0x0C, 0x20, 0x00, 0x53, 0x14, 0x00, + 0x06, 0x00, 0x03, 0x98, 0x24, 0x60, 0x07, 0x00, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x15, 0x11, 0x01, + 0x1C, 0x15, 0x53, 0x08, 0x00, 0x04, 0x00, 0x09, 0x6E, 0x3E, 0x11, 0x01, 0x46, 0x27, 0x11, 0x02, + 0x56, 0x27, 0x00, 0x5A, 0x86, 0x31, 0x0E, 0x00, 0x07, 0x08, 0x00, 0x71, 0x0C, 0x00, 0x05, 0x00, + 0x0D, 0x00, 0x06, 0x18, 0x00, 0x3F, 0x06, 0x00, 0xF3, 0xA8, 0x26, 0x10, 0x1F, 0xF2, 0xA8, 0x26, + 0x10, 0x1F, 0xF1, 0xA8, 0x26, 0x10, 0x1F, 0xF0, 0xA8, 0x26, 0x10, 0x1F, 0xEF, 0xA8, 0x26, 0x10, + 0x1F, 0xEE, 0xA8, 0x26, 0x10, 0x1F, 0xED, 0xA8, 0x26, 0x10, 0x1F, 0xEC, 0xA8, 0x26, 0x10, 0x1F, + 0xEB, 0xA8, 0x26, 0x10, 0x1F, 0xEA, 0xA8, 0x26, 0x0E, 0x33, 0x06, 0x00, 0xE9, 0x68, 0x01, 0x1F, + 0x2E, 0x24, 0x00, 0x08, 0x13, 0xE8, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xE7, 0x68, 0x01, + 0x0F, 0x24, 0x00, 0x09, 0x13, 0xE6, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xE5, 0x68, 0x01, + 0x0F, 0x24, 0x00, 0x09, 0x13, 0xE4, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xE3, 0x68, 0x01, + 0x0F, 0x24, 0x00, 0x09, 0x13, 0xE2, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xE1, 0x68, 0x01, + 0x0F, 0x24, 0x00, 0x09, 0x13, 0xE0, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xDF, 0x68, 0x01, + 0x1F, 0x5C, 0x24, 0x00, 0x08, 0x13, 0xDE, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xDD, 0x68, + 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xDC, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xDB, 0x68, + 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xDA, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xD9, 0x68, + 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xD8, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xD7, 0x68, + 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xD6, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x1F, 0xD5, 0x38, + 0x04, 0x10, 0x1F, 0xD4, 0x38, 0x04, 0x10, 0x1F, 0xD3, 0x38, 0x04, 0x10, 0x1F, 0xD2, 0x38, 0x04, + 0x10, 0x1F, 0xD1, 0x38, 0x04, 0x10, 0x1F, 0xD0, 0x38, 0x04, 0x10, 0x1F, 0xCF, 0x38, 0x04, 0x10, + 0x1F, 0xCE, 0x38, 0x04, 0x10, 0x1F, 0xCD, 0x38, 0x04, 0x10, 0x1F, 0xCC, 0x38, 0x04, 0x10, 0x1F, + 0xCB, 0x38, 0x04, 0x10, 0x1F, 0xCA, 0x38, 0x04, 0x10, 0x1F, 0xC9, 0x38, 0x04, 0x10, 0x1F, 0xC8, + 0x38, 0x04, 0x10, 0x1F, 0xC7, 0x38, 0x04, 0x10, 0x1F, 0xC6, 0x38, 0x04, 0x10, 0x1F, 0xC5, 0x38, + 0x04, 0x10, 0x1F, 0xC4, 0x38, 0x04, 0x10, 0x1F, 0xC3, 0x38, 0x04, 0x10, 0x1F, 0xC2, 0x38, 0x04, + 0x10, 0x1F, 0xC1, 0x38, 0x04, 0x10, 0x1F, 0xC0, 0x38, 0x04, 0x10, 0x1F, 0xBF, 0x38, 0x04, 0x10, + 0x1F, 0xBE, 0x38, 0x04, 0x10, 0x1F, 0xBD, 0x38, 0x04, 0x10, 0x1F, 0xBC, 0x38, 0x04, 0x10, 0x1F, + 0xBB, 0x38, 0x04, 0x10, 0x1F, 0xBA, 0x38, 0x04, 0x10, 0x1F, 0xB9, 0x38, 0x04, 0x10, 0x1F, 0xB8, + 0x38, 0x04, 0x10, 0x1F, 0xB7, 0x38, 0x04, 0x10, 0x1F, 0xB6, 0x38, 0x04, 0x10, 0x1F, 0xB5, 0x38, + 0x04, 0x10, 0x1F, 0xB4, 0x38, 0x04, 0x10, 0x1F, 0xB3, 0x38, 0x04, 0x10, 0x1F, 0xB2, 0x38, 0x04, + 0x10, 0x1F, 0xB1, 0x38, 0x04, 0x10, 0x1F, 0xB0, 0x38, 0x04, 0x10, 0x1F, 0xAF, 0x38, 0x04, 0x10, + 0x1F, 0xAE, 0x38, 0x04, 0x10, 0x1F, 0xAD, 0x38, 0x04, 0x10, 0x1F, 0xAC, 0x38, 0x04, 0x10, 0x1F, + 0xAB, 0x38, 0x04, 0x10, 0x1F, 0xAA, 0x38, 0x04, 0x10, 0x1F, 0xA9, 0x38, 0x04, 0x10, 0x1F, 0xA8, + 0x38, 0x04, 0x10, 0x1F, 0xA7, 0x38, 0x04, 0x10, 0x1F, 0xA6, 0x38, 0x04, 0x10, 0x1F, 0xA5, 0x38, + 0x04, 0x10, 0x1F, 0xA4, 0x38, 0x04, 0x10, 0x1F, 0xA3, 0x38, 0x04, 0x10, 0x1F, 0xA2, 0x38, 0x04, + 0x10, 0x1F, 0xA1, 0x38, 0x04, 0x10, 0x1F, 0xA0, 0x38, 0x04, 0x10, 0x1F, 0x9F, 0x38, 0x04, 0x10, + 0x1F, 0x9E, 0x38, 0x04, 0x10, 0x1F, 0x9D, 0x38, 0x04, 0x10, 0x1F, 0x9C, 0x38, 0x04, 0x10, 0x1F, + 0x9B, 0x38, 0x04, 0x10, 0x1F, 0x9A, 0x38, 0x04, 0x0E, 0xF1, 0xFF, 0xFF, 0x2C, 0x08, 0xA4, 0x02, + 0x00, 0x18, 0xA4, 0x02, 0x00, 0x28, 0xA4, 0x02, 0x00, 0x38, 0xA4, 0x02, 0x00, 0x48, 0xA4, 0x02, + 0x00, 0x58, 0xA4, 0x02, 0x00, 0x68, 0xA4, 0x02, 0x00, 0x78, 0xA4, 0x02, 0x00, 0x88, 0xA4, 0x02, + 0x00, 0x98, 0xA4, 0x02, 0x00, 0xA8, 0xA4, 0x02, 0x00, 0xB8, 0xA4, 0x02, 0x00, 0xC8, 0xA4, 0x02, + 0x00, 0xD8, 0xA4, 0x02, 0x00, 0xE8, 0xA4, 0x02, 0x00, 0xF8, 0xA4, 0x02, 0x00, 0x08, 0xA5, 0x02, + 0x00, 0x18, 0xA5, 0x02, 0x00, 0x28, 0xA5, 0x02, 0x00, 0x38, 0xA5, 0x02, 0x00, 0x48, 0xA5, 0x02, + 0x00, 0x58, 0xA5, 0x02, 0x00, 0x68, 0xA5, 0x02, 0x00, 0x78, 0xA5, 0x02, 0x00, 0x88, 0xA5, 0x02, + 0x00, 0x98, 0xA5, 0x02, 0x00, 0xA8, 0xA5, 0x02, 0x00, 0xB8, 0xA5, 0x02, 0x00, 0xC8, 0xA5, 0x02, + 0x00, 0xD8, 0xA5, 0x02, 0x00, 0xE8, 0xA5, 0x02, 0x00, 0xF8, 0xA5, 0x02, 0x00, 0x08, 0xA6, 0x02, + 0x00, 0x18, 0xA6, 0x02, 0x00, 0x28, 0xA6, 0x02, 0x00, 0x38, 0xA6, 0x02, 0x00, 0x48, 0xA6, 0x02, + 0x00, 0x58, 0xA6, 0x02, 0x00, 0x68, 0xA6, 0x02, 0x00, 0x78, 0xA6, 0x02, 0x00, 0x88, 0xA6, 0x02, + 0x00, 0x98, 0xA6, 0x02, 0x00, 0xA8, 0xA6, 0x02, 0x00, 0xB8, 0xA6, 0x02, 0x00, 0xC8, 0xA6, 0x02, + 0x00, 0xD8, 0xA6, 0x02, 0x00, 0xE8, 0xA6, 0x02, 0x00, 0xF8, 0xA6, 0x02, 0x00, 0x08, 0xA7, 0x02, + 0x00, 0x18, 0xA7, 0x02, 0x00, 0x28, 0xA7, 0x02, 0x00, 0x38, 0xA7, 0x02, 0x00, 0x48, 0xA7, 0x02, + 0x00, 0x58, 0xA7, 0x02, 0x00, 0x68, 0xA7, 0x02, 0x00, 0x78, 0xA7, 0x02, 0x00, 0x88, 0xA7, 0x02, + 0x00, 0x98, 0xA7, 0x02, 0x00, 0xA8, 0xA7, 0x02, 0x00, 0xB8, 0xA7, 0x02, 0x00, 0xC8, 0xA7, 0x02, + 0x00, 0xD8, 0xA7, 0x02, 0x00, 0xE8, 0xA7, 0x02, 0x00, 0xF8, 0xA7, 0x02, 0x00, 0x08, 0xA8, 0x02, + 0x00, 0x18, 0xA8, 0x02, 0x00, 0x28, 0xA8, 0x02, 0x00, 0x38, 0xA8, 0x02, 0x00, 0x48, 0xA8, 0x02, + 0x00, 0x58, 0xA8, 0x02, 0x00, 0x68, 0xA8, 0x02, 0x00, 0x78, 0xA8, 0x02, 0x00, 0x88, 0xA8, 0x02, + 0x00, 0x98, 0xA8, 0x02, 0x00, 0xA8, 0xA8, 0x02, 0x00, 0xB8, 0xA8, 0x02, 0x00, 0xC8, 0xA8, 0x02, + 0x00, 0xD8, 0xA8, 0x02, 0x00, 0xE8, 0xA8, 0x02, 0x00, 0xF8, 0xA8, 0x02, 0x00, 0x08, 0xA9, 0x02, + 0x00, 0x18, 0xA9, 0x02, 0x00, 0x28, 0xA9, 0x02, 0x00, 0x38, 0xA9, 0x02, 0x00, 0x48, 0xA9, 0x02, + 0x00, 0x58, 0xA9, 0x02, 0x00, 0x68, 0xA9, 0x02, 0x00, 0x78, 0xA9, 0x02, 0x00, 0x88, 0xA9, 0x02, + 0x00, 0x98, 0xA9, 0x02, 0x00, 0xA8, 0xA9, 0x02, 0x00, 0xB8, 0xA9, 0x02, 0x00, 0xC8, 0xA9, 0x02, + 0x00, 0xD8, 0xA9, 0x02, 0x00, 0xE8, 0xA9, 0x02, 0x00, 0xF8, 0xA9, 0x02, 0x00, 0x08, 0xAA, 0x02, + 0x00, 0x18, 0xAA, 0x02, 0x00, 0x28, 0xAA, 0x02, 0x00, 0x38, 0xAA, 0x02, 0x00, 0x48, 0xAA, 0x02, + 0x00, 0x58, 0xAA, 0x02, 0x00, 0x68, 0xAA, 0x02, 0x00, 0x78, 0xAA, 0x02, 0x00, 0x88, 0xAA, 0x02, + 0x00, 0x98, 0xAA, 0x02, 0x00, 0xA8, 0xAA, 0x02, 0x00, 0xB8, 0xAA, 0x02, 0x00, 0xC8, 0xAA, 0x02, + 0x00, 0xD8, 0xAA, 0x02, 0x00, 0xE8, 0xAA, 0x02, 0x00, 0xF8, 0xAA, 0x02, 0x00, 0x08, 0xAB, 0x02, + 0x00, 0x18, 0xAB, 0x02, 0x00, 0x28, 0xAB, 0x02, 0x00, 0x38, 0xAB, 0x02, 0x00, 0x48, 0xAB, 0x02, + 0x00, 0x58, 0xAB, 0x02, 0x00, 0x68, 0xAB, 0x02, 0x00, 0x78, 0xAB, 0x02, 0x00, 0x88, 0xAB, 0x02, + 0x00, 0x98, 0xAB, 0x02, 0x00, 0xA8, 0xAB, 0x02, 0x00, 0xB8, 0xAB, 0x02, 0x00, 0xC8, 0xAB, 0x02, + 0x00, 0xD8, 0xAB, 0x02, 0x00, 0xE8, 0xAB, 0x02, 0x00, 0xF8, 0xAB, 0x02, 0x00, 0x08, 0xAC, 0x02, + 0x00, 0x18, 0xAC, 0x02, 0x00, 0x28, 0xAC, 0x02, 0x00, 0x38, 0xAC, 0x02, 0x00, 0x48, 0xAC, 0x02, + 0x00, 0x58, 0xAC, 0x02, 0x00, 0x68, 0xAC, 0x02, 0x00, 0x78, 0xAC, 0x02, 0x00, 0x88, 0xAC, 0x02, + 0x00, 0x98, 0xAC, 0x02, 0x00, 0xA8, 0xAC, 0x02, 0x00, 0xB8, 0xAC, 0x02, 0x00, 0xC8, 0xAC, 0x02, + 0x00, 0x03, 0x01, 0x01, 0x00, 0x03, 0x01, 0x00, 0x12, 0x01, 0x58, 0x36, 0x22, 0x01, 0x01, 0xF3, + 0x91, 0x30, 0x03, 0x03, 0x01, 0x16, 0x00, 0x0F, 0x34, 0x14, 0x05, 0x0B, 0xC0, 0x20, 0x01, 0x01, + 0x00, 0x39, 0xD8, 0xAC, 0x02, 0x10, 0x00, 0x1B, 0xE8, 0x10, 0x00, 0x1B, 0xF8, 0x10, 0x00, 0x2A, + 0x04, 0xAD, 0x10, 0x00, 0x1B, 0x3C, 0x10, 0x00, 0x1B, 0x40, 0x10, 0x00, 0x1B, 0x7C, 0x10, 0x00, + 0x1B, 0xB4, 0x10, 0x00, 0x1B, 0xB8, 0x10, 0x00, 0x1B, 0xC4, 0x10, 0x00, 0x1B, 0xC8, 0x10, 0x00, + 0x1B, 0xCC, 0x10, 0x00, 0x1B, 0xD0, 0x10, 0x00, 0x1B, 0xD4, 0x10, 0x00, 0x1B, 0xD8, 0x10, 0x00, + 0x1B, 0xDC, 0x10, 0x00, 0x1B, 0xE0, 0x10, 0x00, 0x1B, 0xE4, 0x10, 0x00, 0x1B, 0xE8, 0x10, 0x00, + 0x1B, 0xEC, 0x10, 0x00, 0x1B, 0xF0, 0x10, 0x00, 0x1B, 0xF4, 0x10, 0x00, 0x1B, 0xF8, 0x10, 0x00, + 0x1B, 0xFC, 0x10, 0x00, 0x2B, 0x00, 0xAE, 0x60, 0x01, 0x0B, 0x10, 0x00, 0x1B, 0x08, 0x10, 0x00, + 0x1B, 0x0C, 0x10, 0x00, 0x1B, 0x10, 0x10, 0x00, 0x1B, 0x14, 0x10, 0x00, 0x1B, 0x18, 0x10, 0x00, + 0x1B, 0x1C, 0x10, 0x00, 0x1B, 0x20, 0x10, 0x00, 0x1B, 0x24, 0x10, 0x00, 0x1B, 0x28, 0x10, 0x00, + 0x1B, 0x2C, 0x10, 0x00, 0x1B, 0x30, 0x10, 0x00, 0x1B, 0x34, 0x10, 0x00, 0x1B, 0x38, 0x10, 0x00, + 0x1B, 0x3C, 0x10, 0x00, 0x1B, 0x40, 0x10, 0x00, 0x1B, 0x44, 0x10, 0x00, 0x1B, 0x48, 0x10, 0x00, + 0x1B, 0x4C, 0x10, 0x00, 0x1B, 0x50, 0x10, 0x00, 0x1B, 0x54, 0x10, 0x00, 0x1B, 0x58, 0x10, 0x00, + 0x1B, 0x5C, 0x10, 0x00, 0x1B, 0x60, 0x10, 0x00, 0x1B, 0x64, 0x10, 0x00, 0x1B, 0x68, 0x10, 0x00, + 0x1B, 0x6C, 0x10, 0x00, 0x1B, 0x70, 0x10, 0x00, 0x1B, 0x74, 0x10, 0x00, 0x1B, 0x78, 0x10, 0x00, + 0x1B, 0x7C, 0x10, 0x00, 0x1B, 0x80, 0x10, 0x00, 0x1B, 0x84, 0x10, 0x00, 0x1B, 0x88, 0x10, 0x00, + 0x1B, 0x8C, 0x10, 0x00, 0x1B, 0x90, 0x10, 0x00, 0x1B, 0x94, 0x10, 0x00, 0x1B, 0x98, 0x10, 0x00, + 0x1B, 0x9C, 0x10, 0x00, 0x1B, 0xA0, 0x10, 0x00, 0x1B, 0xA4, 0x10, 0x00, 0x1B, 0xA8, 0x10, 0x00, + 0x1B, 0xAC, 0x10, 0x00, 0x1B, 0xB0, 0x10, 0x00, 0x1B, 0xB4, 0x10, 0x00, 0x1B, 0xB8, 0x10, 0x00, + 0x1B, 0xBC, 0x10, 0x00, 0x1B, 0xC0, 0x10, 0x00, 0x1B, 0xC4, 0x10, 0x00, 0x1B, 0xC8, 0x10, 0x00, + 0x1B, 0xCC, 0x10, 0x00, 0x1B, 0xD0, 0x10, 0x00, 0x1B, 0xD4, 0x10, 0x00, 0x1B, 0xD8, 0x10, 0x00, + 0x1B, 0xDC, 0x10, 0x00, 0x1B, 0xE0, 0x10, 0x00, 0x1B, 0xE4, 0x10, 0x00, 0x1B, 0xE8, 0x10, 0x00, + 0x1B, 0xEC, 0x10, 0x00, 0x1B, 0xF0, 0x10, 0x00, 0x1B, 0xF4, 0x10, 0x00, 0x1B, 0xF8, 0x10, 0x00, + 0x1B, 0xFC, 0x10, 0x00, 0x2B, 0x00, 0xAF, 0x00, 0x04, 0x0B, 0x10, 0x00, 0x1B, 0x08, 0x10, 0x00, + 0x1B, 0x0C, 0x10, 0x00, 0x1B, 0x10, 0x10, 0x00, 0x1B, 0x14, 0x10, 0x00, 0x1B, 0x18, 0x10, 0x00, + 0x1B, 0x1C, 0x10, 0x00, 0x1B, 0x20, 0x10, 0x00, 0x1B, 0x24, 0x10, 0x00, 0x1B, 0x28, 0x10, 0x00, + 0x1B, 0x2C, 0x10, 0x00, 0x1B, 0x30, 0x10, 0x00, 0x1B, 0x34, 0x10, 0x00, 0x1B, 0x38, 0x10, 0x00, + 0x1B, 0x3C, 0x10, 0x00, 0x1B, 0x40, 0x10, 0x00, 0x1B, 0x44, 0x10, 0x00, 0x1B, 0x48, 0x10, 0x00, + 0x1B, 0x50, 0x10, 0x00, 0x1B, 0xB0, 0x10, 0x00, 0x1B, 0xC0, 0x10, 0x00, 0x1B, 0xD0, 0x10, 0x00, + 0x2B, 0x9C, 0xB0, 0xD0, 0x02, 0x0B, 0x10, 0x00, 0x2B, 0x2C, 0xB1, 0xC0, 0x00, 0x0B, 0x10, 0x00, + 0x1B, 0x8C, 0x10, 0x00, 0x3F, 0x98, 0xB1, 0x02, 0x00, 0x3E, 0x02, 0x0A, 0x98, 0xDB, 0x2A, 0xD0, + 0x3F, 0x10, 0x00, 0x3B, 0xE0, 0x3F, 0x07, 0x98, 0x07, 0x0A, 0x30, 0x00, 0x3B, 0xF8, 0x3F, 0x07, + 0x49, 0x8F, 0x05, 0xE0, 0x02, 0x0B, 0x70, 0x00, 0x1B, 0x03, 0x20, 0x00, 0x1B, 0xDC, 0xA0, 0x00, + 0x1B, 0xF0, 0x10, 0x00, 0x2B, 0x00, 0xB2, 0x30, 0x02, 0x1A, 0xB2, 0x50, 0x00, 0x1B, 0x32, 0xD0, + 0x3E, 0x1B, 0x64, 0xA0, 0x00, 0x75, 0x7B, 0x14, 0xAE, 0x47, 0xE1, 0x7A, 0x84, 0xA0, 0x00, 0x1B, + 0x63, 0x30, 0x00, 0x1B, 0x3B, 0x90, 0x00, 0x1B, 0x18, 0x70, 0x00, 0x1B, 0x20, 0x10, 0x00, 0x1B, + 0x24, 0x80, 0x00, 0x2A, 0x10, 0x0E, 0x50, 0x00, 0x14, 0x3C, 0x08, 0x02, 0xB0, 0x65, 0x6C, 0x6C, + 0x6F, 0x2C, 0x20, 0x77, 0x6F, 0x72, 0x6C, 0x64, 0xD8, 0x47, 0xF3, 0x06, 0x41, 0x4E, 0x49, 0x4D, + 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x44, 0x45, 0x4D, 0x4F, 0x00, 0x00, 0x49, 0x4E, 0x50, 0x55, + 0x54, 0x0C, 0x00, 0xF3, 0x26, 0x54, 0x6F, 0x75, 0x63, 0x68, 0x20, 0x74, 0x6F, 0x70, 0x2D, 0x6C, + 0x65, 0x66, 0x74, 0x20, 0x63, 0x72, 0x6F, 0x73, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x63, 0x68, + 0x61, 0x6E, 0x67, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x08, 0x48, 0x02, 0x3C, 0x00, 0xBF, + 0x62, 0x6F, 0x74, 0x74, 0x6F, 0x6D, 0x2D, 0x72, 0x69, 0x67, 0x68, 0x40, 0x00, 0x18, 0x06, 0x78, + 0x00, 0x0F, 0x39, 0x00, 0x1B, 0xFF, 0x00, 0x59, 0x65, 0x73, 0x00, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 0x7C, 0x48, 0x0E, 0x13, 0x39, 0xA4, 0x48, 0x13, 0x2E, 0xE8, + 0x48, 0x13, 0x22, 0xEC, 0x48, 0x12, 0x71, 0xC4, 0x1F, 0x22, 0x00, 0x65, 0x7C, 0x21, 0x00, 0x58, + 0x21, 0x22, 0x00, 0x79, 0x4C, 0x21, 0x27, 0x00, 0x69, 0xE0, 0x47, 0x12, 0x61, 0x88, 0x21, 0x2B, + 0x00, 0x64, 0x18, 0x48, 0x08, 0x14, 0x48, 0x00, 0x34, 0x49, 0x11, 0x7A, 0x64, 0x3A, 0x02, 0xE4, + 0x01, 0x13, 0x76, 0x54, 0x48, 0x13, 0x6E, 0x30, 0x48, 0x13, 0x2C, 0x2C, 0x49, 0x13, 0x51, 0x98, + 0x48, 0x13, 0x45, 0xB4, 0x48, 0x13, 0x54, 0xA0, 0x48, 0x13, 0x55, 0xE4, 0x48, 0x04, 0xD4, 0x48, + 0x13, 0x41, 0xD0, 0x48, 0x13, 0x46, 0x10, 0x49, 0x04, 0x08, 0x49, 0x12, 0x4A, 0xA4, 0x1E, 0x23, + 0x00, 0x4C, 0xD4, 0x48, 0x13, 0x58, 0x34, 0x49, 0x13, 0x56, 0x40, 0x49, 0x13, 0x4E, 0x20, 0x49, + 0x17, 0x40, 0xC4, 0x49, 0x13, 0x5E, 0xC8, 0x49, 0x17, 0x2A, 0xC8, 0x49, 0x13, 0x2D, 0x84, 0x49, + 0x13, 0x5F, 0x18, 0x49, 0x00, 0x14, 0x49, 0x12, 0x7B, 0x68, 0x20, 0x01, 0x24, 0x49, 0x13, 0x7C, + 0x9C, 0x49, 0x00, 0x58, 0x11, 0x13, 0x7E, 0xA8, 0x02, 0x13, 0x3A, 0x0C, 0x4A, 0x13, 0x3C, 0xBC, + 0x49, 0xF1, 0x02, 0x41, 0x42, 0x43, 0x00, 0x73, 0x79, 0x6D, 0x00, 0x61, 0x62, 0x63, 0x00, 0x53, + 0x70, 0x61, 0x63, 0x65, 0xE8, 0x59, 0xF1, 0x07, 0x6F, 0x20, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x73, + 0x20, 0x61, 0x72, 0x65, 0x20, 0x69, 0x6E, 0x66, 0x69, 0x6E, 0x69, 0x74, 0x65, 0x3A, 0xD4, 0x01, + 0xF1, 0x0E, 0x75, 0x6E, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x68, + 0x75, 0x6D, 0x61, 0x6E, 0x20, 0x73, 0x74, 0x75, 0x70, 0x69, 0x64, 0x69, 0x74, 0x79, 0x3B, 0x15, + 0x00, 0xF9, 0x03, 0x49, 0x27, 0x6D, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x75, 0x72, 0x65, 0x20, + 0x61, 0x62, 0x6F, 0x75, 0x74, 0x39, 0x00, 0xF0, 0x13, 0x2E, 0x00, 0x41, 0x6C, 0x62, 0x65, 0x72, + 0x74, 0x20, 0x45, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x69, 0x6E, 0x00, 0x4D, 0x61, 0x72, 0x69, 0x6C, + 0x79, 0x6E, 0x20, 0x4D, 0x6F, 0x6E, 0x72, 0x6F, 0x65, 0x00, 0x00, 0x41, 0x00, 0xF1, 0x03, 0x73, + 0x65, 0x6C, 0x66, 0x69, 0x73, 0x68, 0x2C, 0x20, 0x69, 0x6D, 0x70, 0x61, 0x74, 0x69, 0x65, 0x6E, + 0x74, 0x5C, 0x00, 0x70, 0x61, 0x20, 0x6C, 0x69, 0x74, 0x74, 0x6C, 0x95, 0x00, 0xF0, 0x0F, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x49, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x6D, 0x69, + 0x73, 0x74, 0x61, 0x6B, 0x65, 0x73, 0x2C, 0x20, 0x49, 0x20, 0x61, 0x6D, 0x20, 0x76, 0x00, 0xA2, + 0x6F, 0x66, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x3C, 0x00, 0xF3, 0x19, 0x74, 0x20, + 0x74, 0x69, 0x6D, 0x65, 0x73, 0x20, 0x68, 0x61, 0x72, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x68, 0x61, + 0x6E, 0x64, 0x6C, 0x65, 0x2E, 0x20, 0x42, 0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 0x79, 0x6F, 0x75, + 0x20, 0x63, 0x61, 0x6E, 0x27, 0x74, 0x19, 0x00, 0x30, 0x20, 0x6D, 0x65, 0x34, 0x00, 0x20, 0x6D, + 0x79, 0x82, 0x03, 0x30, 0x73, 0x74, 0x2C, 0xC6, 0x00, 0x11, 0x6E, 0x26, 0x00, 0x02, 0xDA, 0x00, + 0x90, 0x73, 0x20, 0x68, 0x65, 0x6C, 0x6C, 0x20, 0x64, 0x6F, 0x33, 0x00, 0x67, 0x64, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x34, 0x00, 0x64, 0x62, 0x65, 0x73, 0x74, 0x2E, 0x00, 0xEC, 0x00, 0x41, 0x43, + 0x61, 0x6D, 0x75, 0x1D, 0x7D, 0xC0, 0x44, 0x6F, 0x6E, 0xE2, 0x80, 0x99, 0x74, 0x20, 0x77, 0x61, + 0x6C, 0x6B, 0x27, 0x03, 0x41, 0x66, 0x72, 0x6F, 0x6E, 0xAA, 0x00, 0x51, 0x6D, 0x65, 0xE2, 0x80, + 0xA6, 0xCD, 0x00, 0x11, 0x79, 0x3E, 0x01, 0x79, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x30, + 0x00, 0xC7, 0x62, 0x65, 0x68, 0x69, 0x6E, 0x64, 0x20, 0x6D, 0x65, 0x2E, 0x2E, 0x2E, 0x2B, 0x00, + 0x62, 0x6C, 0x65, 0x61, 0x64, 0x20, 0x57, 0x21, 0x00, 0x43, 0x73, 0x69, 0x64, 0x65, 0x21, 0x00, + 0x70, 0x6A, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x8D, 0x00, 0x51, 0x66, 0x72, 0x69, 0x65, 0x6E, + 0xD7, 0x04, 0xC1, 0x4F, 0x73, 0x63, 0x61, 0x72, 0x20, 0x57, 0x69, 0x6C, 0x64, 0x65, 0x00, 0x29, + 0x01, 0xF2, 0x04, 0x73, 0x6F, 0x20, 0x63, 0x6C, 0x65, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x26, 0x01, 0x13, 0x49, 0xDA, 0x00, 0x72, 0x75, 0x6E, 0x64, + 0x65, 0x72, 0x73, 0x74, 0x7E, 0x01, 0x60, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x11, 0x01, 0x10, + 0x64, 0xB5, 0x00, 0x10, 0x77, 0x33, 0x00, 0x02, 0x47, 0x00, 0x60, 0x61, 0x79, 0x69, 0x6E, 0x67, + 0x2E, 0xCC, 0x01, 0x40, 0x6B, 0x20, 0x54, 0x77, 0xD3, 0x03, 0x22, 0x00, 0x49, 0x54, 0x01, 0x10, + 0x74, 0x26, 0x01, 0x00, 0x02, 0x02, 0x61, 0x74, 0x72, 0x75, 0x74, 0x68, 0x2C, 0x14, 0x00, 0x02, + 0x5B, 0x00, 0x40, 0x68, 0x61, 0x76, 0x65, 0x89, 0x01, 0xC1, 0x72, 0x65, 0x6D, 0x65, 0x6D, 0x62, + 0x65, 0x72, 0x20, 0x61, 0x6E, 0x79, 0x79, 0x02, 0x51, 0x2E, 0x00, 0x42, 0x41, 0x43, 0x97, 0xAE, + 0x78, 0x4E, 0x55, 0x4D, 0x42, 0x45, 0x52, 0x20, 0xEB, 0x04, 0x58, 0x00, 0x54, 0x45, 0x58, 0x54, + 0x12, 0x00, 0x4C, 0x52, 0x4F, 0x4C, 0x4C, 0x24, 0x00, 0x01, 0xC8, 0x0A, 0x30, 0x6F, 0x75, 0x72, + 0x75, 0x01, 0x80, 0x6D, 0x69, 0x6E, 0x00, 0x73, 0x65, 0x63, 0x00 +}; + +#elif defined(EEZ_PLATFORM_SIMULATOR) + +DataOperationsFunction g_dataOperationsFunctions[] = { + data_none, + data_alert_message, + data_touch_calibration_point, + data_keypad_text, + data_keypad_edit_unit, + data_keypad_sign_enabled, + data_keypad_unit_enabled, + data_keypad_dot_enabled, + data_keypad_option1_enabled, + data_keypad_option1_text, + data_keypad_option2_enabled, + data_keypad_option2_text, + data_keypad_option3_enabled, + data_keypad_option3_text, + data_keypad_mode, + data_keypad_ok_enabled, + data_main_app_view +}; + +ActionExecFunc g_actionExecFunctions[] = { + 0, + action_yes, + action_no, + action_cancel, + action_edit, + action_drag_overlay, + action_scroll, + action_keypad_key, + action_keypad_back, + action_keypad_unit, + action_keypad_option1, + action_keypad_option2, + action_keypad_option3, + action_keypad_sign, + action_keypad_ok, + action_keypad_cancel, + action_toggle_keypad_mode, + action_keypad_space +}; + +// ASSETS DEFINITION +const uint8_t assets[84703] = { + 0x7E, 0x65, 0x65, 0x7A, 0x03, 0x00, 0x01, 0x00, 0x88, 0x34, 0x2C, 0x00, 0xFD, 0x18, 0x44, 0x00, + 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x01, + 0x00, 0x00, 0x34, 0x01, 0x00, 0x01, 0x00, 0x17, 0x44, 0x14, 0x00, 0xF0, 0xA6, 0x20, 0x03, 0xE0, + 0x01, 0x5C, 0x01, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0xB4, 0x01, 0x00, 0x00, 0xE0, 0x01, 0x00, + 0x00, 0x0C, 0x02, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x64, 0x02, 0x00, 0x00, 0x90, 0x02, 0x00, + 0x00, 0xBC, 0x02, 0x00, 0x00, 0xE8, 0x02, 0x00, 0x00, 0x14, 0x03, 0x00, 0x00, 0x38, 0x03, 0x00, + 0x00, 0x5C, 0x03, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xA4, 0x03, 0x00, 0x00, 0xC8, 0x03, 0x00, + 0x00, 0xEC, 0x03, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x34, 0x04, 0x00, 0x00, 0x58, 0x04, 0x00, + 0x00, 0x7C, 0x04, 0x00, 0x00, 0xA0, 0x04, 0x00, 0x00, 0xC4, 0x04, 0x00, 0x00, 0xE8, 0x04, 0x00, + 0x00, 0x0C, 0x05, 0x00, 0x00, 0x30, 0x05, 0x00, 0x00, 0x54, 0x05, 0x00, 0x00, 0x78, 0x05, 0x00, + 0x00, 0x9C, 0x05, 0x00, 0x00, 0xC0, 0x05, 0x00, 0x00, 0xE4, 0x05, 0x00, 0x00, 0x08, 0x06, 0x00, + 0x00, 0x2C, 0x06, 0x00, 0x00, 0x50, 0x06, 0x00, 0x00, 0x74, 0x06, 0x00, 0x00, 0x98, 0x06, 0x00, + 0x00, 0xBC, 0x06, 0x00, 0x00, 0xE0, 0x06, 0x00, 0x00, 0x04, 0x07, 0x00, 0x00, 0x28, 0x07, 0x00, + 0x00, 0x4C, 0x07, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x94, 0x07, 0x00, 0x00, 0xB8, 0x07, 0x00, + 0x00, 0xDC, 0xE5, 0x00, 0xF2, 0x26, 0x08, 0x00, 0x00, 0x24, 0x08, 0x00, 0x00, 0x48, 0x08, 0x00, + 0x00, 0x6C, 0x08, 0x00, 0x00, 0x90, 0x08, 0x00, 0x00, 0xB4, 0x08, 0x00, 0x00, 0xD8, 0x08, 0x00, + 0x00, 0xF4, 0x08, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x48, 0x09, 0x00, + 0x00, 0x64, 0x09, 0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x9C, 0x09, 0x18, 0x01, 0xB1, 0xA4, 0x8A, + 0x29, 0x00, 0x0D, 0x00, 0x00, 0x00, 0xA8, 0x8A, 0x29, 0x40, 0x01, 0x50, 0xC4, 0x8A, 0x29, 0x00, + 0x8D, 0x38, 0x01, 0x25, 0x24, 0x2C, 0x18, 0x01, 0x2A, 0x01, 0x00, 0x24, 0x01, 0x17, 0x0F, 0x10, + 0x00, 0x00, 0x7F, 0x00, 0x5F, 0xEC, 0x8A, 0x29, 0x00, 0x08, 0x2C, 0x00, 0x10, 0x00, 0x1C, 0x00, + 0x2F, 0x08, 0x8B, 0x2C, 0x00, 0x13, 0x5F, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x2C, 0x00, 0x04, 0x48, + 0xE0, 0x01, 0x10, 0x01, 0x10, 0x00, 0x00, 0x38, 0x00, 0x5F, 0x18, 0x8B, 0x29, 0x00, 0x18, 0x2C, + 0x00, 0x10, 0x5F, 0x02, 0x00, 0x00, 0x00, 0x54, 0x2C, 0x00, 0x04, 0x39, 0x58, 0x02, 0x10, 0x84, + 0x00, 0x5F, 0x0E, 0x00, 0x00, 0x00, 0x5C, 0x2C, 0x00, 0x04, 0x5B, 0x1E, 0x00, 0x14, 0x00, 0x01, + 0xB0, 0x00, 0x5F, 0x94, 0x8B, 0x29, 0x00, 0x04, 0xDC, 0x00, 0x04, 0x08, 0x10, 0x00, 0x00, 0x24, + 0x00, 0x1F, 0xA0, 0x08, 0x01, 0x14, 0x5F, 0x09, 0x00, 0x00, 0x00, 0xB0, 0x2C, 0x00, 0x04, 0x4C, + 0xE8, 0x03, 0xA8, 0x02, 0xDC, 0x00, 0x17, 0xD4, 0x2C, 0x00, 0x11, 0x12, 0x14, 0x00, 0x00, 0x16, + 0x00, 0x31, 0x20, 0x00, 0x20, 0x12, 0x00, 0x16, 0x05, 0xB0, 0x00, 0x1F, 0xFF, 0x24, 0x00, 0x11, + 0x40, 0x14, 0x14, 0x14, 0x14, 0x24, 0x00, 0x7F, 0x0E, 0x00, 0x04, 0x00, 0x04, 0x00, 0x0E, 0x24, + 0x00, 0x0A, 0x71, 0x08, 0x00, 0x07, 0x00, 0x09, 0x00, 0x07, 0x24, 0x00, 0x73, 0x02, 0x02, 0x02, + 0x02, 0x0A, 0x00, 0x08, 0x01, 0x00, 0x60, 0x03, 0xFF, 0x08, 0x10, 0x08, 0x10, 0x24, 0x00, 0x7F, + 0x18, 0x00, 0x16, 0x00, 0x16, 0x00, 0x18, 0x48, 0x00, 0x02, 0x4F, 0x0C, 0x0C, 0x0C, 0x0C, 0x24, + 0x00, 0x31, 0x7F, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x10, 0x24, 0x00, 0x10, 0x00, 0x48, 0x00, + 0x1F, 0x17, 0x48, 0x00, 0x10, 0x0F, 0x24, 0x00, 0x0D, 0x1F, 0x02, 0x68, 0x01, 0x0C, 0x1E, 0x0A, + 0x68, 0x01, 0x0F, 0x44, 0x01, 0x20, 0x01, 0x83, 0x01, 0x65, 0x00, 0x12, 0x00, 0x21, 0x00, 0x22, + 0x48, 0x00, 0x10, 0x01, 0x01, 0x00, 0x0F, 0xD4, 0x01, 0x1C, 0x04, 0x24, 0x00, 0x1F, 0x23, 0x24, + 0x00, 0x10, 0x1F, 0x24, 0x24, 0x00, 0x10, 0x1F, 0x25, 0x64, 0x02, 0x2A, 0x15, 0x04, 0x24, 0x00, + 0x0F, 0xFC, 0x00, 0x0A, 0x03, 0x24, 0x00, 0x31, 0x0C, 0x00, 0x0B, 0x04, 0x00, 0x04, 0x24, 0x00, + 0x1F, 0x0D, 0x24, 0x00, 0x00, 0x7F, 0x21, 0x00, 0x26, 0x00, 0x26, 0x00, 0x21, 0x6C, 0x00, 0x00, + 0x15, 0x05, 0x24, 0x00, 0x3F, 0x0F, 0x00, 0x04, 0xB4, 0x00, 0x0E, 0x11, 0x21, 0x46, 0x00, 0x1F, + 0x27, 0x48, 0x00, 0x01, 0x0F, 0xD8, 0x00, 0x10, 0x19, 0x06, 0xB4, 0x00, 0x08, 0xD8, 0x00, 0x0E, + 0xB4, 0x00, 0x0F, 0xFC, 0x00, 0x09, 0x13, 0x02, 0x24, 0x00, 0x95, 0x10, 0x00, 0x1D, 0x00, 0x1B, + 0x00, 0x1E, 0x00, 0x1B, 0x24, 0x00, 0x15, 0x1F, 0x24, 0x00, 0x22, 0x07, 0xFF, 0x55, 0x04, 0x0F, + 0x44, 0x01, 0x00, 0x0F, 0x6C, 0x00, 0x22, 0x0E, 0xB4, 0x00, 0x0E, 0x24, 0x00, 0x0F, 0xFC, 0x00, + 0x09, 0x1F, 0x07, 0x24, 0x00, 0x1A, 0x1F, 0x28, 0x40, 0x02, 0x10, 0x1F, 0x29, 0x24, 0x00, 0x10, + 0x1F, 0x2A, 0x88, 0x02, 0x1C, 0x00, 0xD8, 0x00, 0x33, 0x2B, 0x00, 0x04, 0x01, 0x00, 0x17, 0x06, + 0x24, 0x00, 0x1F, 0x2C, 0xAC, 0x02, 0x0C, 0x1F, 0x10, 0xD8, 0x00, 0x0D, 0x1F, 0x06, 0x68, 0x01, + 0x0B, 0x06, 0x6C, 0x00, 0x11, 0x26, 0x48, 0x00, 0x1F, 0x26, 0xB4, 0x00, 0x08, 0x11, 0x14, 0x66, + 0x00, 0x33, 0x00, 0x00, 0x27, 0xFC, 0x05, 0x13, 0xDC, 0xE0, 0x05, 0x13, 0xE0, 0x98, 0x06, 0x00, + 0x1C, 0x00, 0x14, 0x22, 0x18, 0x06, 0x21, 0x8C, 0x29, 0x88, 0x06, 0x62, 0x04, 0x8C, 0x29, 0x00, + 0x12, 0x04, 0x1C, 0x00, 0x13, 0x7F, 0x1C, 0x00, 0x50, 0x10, 0x8C, 0x29, 0x00, 0x60, 0x50, 0x00, + 0x5A, 0x8C, 0x29, 0x00, 0x24, 0x09, 0x1C, 0x00, 0x22, 0x94, 0x8D, 0x1C, 0x00, 0x6A, 0x98, 0x8D, + 0x29, 0x00, 0x23, 0x00, 0x1C, 0x00, 0x22, 0x18, 0x8F, 0x1C, 0x00, 0x6A, 0x1C, 0x8F, 0x29, 0x00, + 0x39, 0x0E, 0x1C, 0x00, 0x22, 0x9C, 0x90, 0x1C, 0x00, 0x6A, 0xA0, 0x90, 0x29, 0x00, 0x19, 0x06, + 0x1C, 0x00, 0x22, 0x20, 0x92, 0x1C, 0x00, 0x31, 0x24, 0x92, 0x29, 0xA8, 0x06, 0x00, 0x1C, 0x00, + 0x4F, 0x80, 0x80, 0x80, 0xFF, 0x04, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x4C, 0xFE, 0x20, 0x84, 0x85, 0x85, 0xFF, 0x96, 0x96, 0x9B, 0xFF, 0xA6, 0xA6, 0xAE, + 0xFF, 0xB0, 0xB2, 0xBB, 0xFF, 0xB7, 0xB9, 0xC4, 0xFF, 0xB8, 0xBA, 0xC6, 0xFF, 0xB7, 0xB9, 0xC5, + 0xFF, 0xB5, 0xB7, 0xC1, 0xFF, 0xAD, 0xB1, 0xB9, 0xFF, 0xA4, 0xA7, 0xAD, 0xFF, 0x99, 0x9A, 0x9E, + 0xFF, 0x87, 0x87, 0x88, 0x30, 0x04, 0x0F, 0xA0, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x53, 0xF5, 0x00, 0x8A, 0x8B, 0x8C, 0xFF, 0xA7, + 0xA8, 0xAF, 0xFF, 0xBA, 0xBC, 0xC7, 0xFF, 0xBD, 0xBF, 0xCB, 0x04, 0x00, 0xFE, 0x18, 0xBC, 0xBE, + 0xCA, 0xFF, 0xBB, 0xBD, 0xC9, 0xFF, 0xB9, 0xBB, 0xC7, 0xFF, 0xB6, 0xB8, 0xC4, 0xFF, 0xB4, 0xB6, + 0xC2, 0xFF, 0xB1, 0xB4, 0xBF, 0xFF, 0xAD, 0xB1, 0xBD, 0xFF, 0xB0, 0xB3, 0xBE, 0xFF, 0xA5, 0xA7, + 0xAE, 0xFF, 0x8E, 0x8E, 0x90, 0x70, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4A, 0x0F, 0xA0, 0x0E, 0xE5, 0xF6, 0x07, 0x83, + 0x83, 0x83, 0xFF, 0xA1, 0xA2, 0xA9, 0xFF, 0xBD, 0xBF, 0xCA, 0xFF, 0xC1, 0xC4, 0xCE, 0xFF, 0xC2, + 0xC5, 0xCF, 0xFF, 0xC3, 0xC6, 0x04, 0x00, 0xB1, 0xC2, 0xC4, 0xCE, 0xFF, 0xC0, 0xC3, 0xCE, 0xFF, + 0xBE, 0xC0, 0xCC, 0x0C, 0x01, 0x04, 0x08, 0x01, 0xFE, 0x08, 0xB2, 0xB5, 0xC0, 0xFF, 0xAE, 0xB2, + 0xBD, 0xFF, 0xAA, 0xAE, 0xBA, 0xFF, 0xAB, 0xAF, 0xBA, 0xFF, 0xA3, 0xA4, 0xAB, 0xFF, 0x84, 0x84, + 0x85, 0x90, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x3A, 0x0F, 0xA0, 0x0E, 0xE9, 0xF1, 0x0C, 0x89, 0x89, 0x8B, 0xFF, 0xB3, + 0xB4, 0xBE, 0xFF, 0xC2, 0xC5, 0xCE, 0xFF, 0xC5, 0xC8, 0xD1, 0xFF, 0xC7, 0xCA, 0xD3, 0xFF, 0xC8, + 0xCB, 0xD4, 0xFF, 0xC9, 0xCC, 0xD5, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x14, 0x00, 0x31, 0xC6, + 0xC9, 0xD2, 0x0C, 0x01, 0xB1, 0xC1, 0xC3, 0xCE, 0xFF, 0xBD, 0xC0, 0xCB, 0xFF, 0xBA, 0xBC, 0xC8, + 0x04, 0x01, 0x35, 0xB3, 0xB5, 0xC1, 0x04, 0x01, 0x7F, 0xA5, 0xA9, 0xB5, 0xFF, 0xA9, 0xAD, 0xB5, + 0x4C, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x48, 0x0F, 0xA0, 0x0E, 0xE9, 0xB1, 0x8B, 0x8C, 0x8E, 0xFF, 0xB9, 0xBB, 0xC5, 0xFF, 0xC4, 0xC7, + 0xD0, 0xE4, 0x00, 0xE6, 0xCA, 0xCD, 0xD5, 0xFF, 0xCC, 0xCF, 0xD7, 0xFF, 0xCD, 0xD0, 0xD8, 0xFF, + 0xCE, 0xD1, 0x04, 0x00, 0x00, 0x14, 0x00, 0x31, 0xCB, 0xCE, 0xD6, 0x0C, 0x01, 0x00, 0x24, 0x01, + 0x00, 0x2C, 0x01, 0x31, 0xBE, 0xC1, 0xCC, 0x54, 0x20, 0x01, 0xA8, 0x10, 0x21, 0xB4, 0xC0, 0x4C, + 0x20, 0xFE, 0x00, 0xA9, 0xAD, 0xB9, 0xFF, 0xA4, 0xA8, 0xB4, 0xFF, 0xA8, 0xAB, 0xB6, 0xFF, 0x91, + 0x91, 0x93, 0xB8, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2A, 0x0F, 0xA0, 0x0E, 0xE9, 0x31, 0x88, 0x88, 0x8A, 0xFC, 0x00, + 0x00, 0xD0, 0x00, 0x22, 0xC9, 0xCC, 0xF8, 0x00, 0xF1, 0x00, 0xCF, 0xD2, 0xD9, 0xFF, 0xD1, 0xD4, + 0xDB, 0xFF, 0xD3, 0xD6, 0xDD, 0xFF, 0xD4, 0xD7, 0xDE, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x71, 0xD2, + 0xD5, 0xDC, 0xFF, 0xD0, 0xD3, 0xDA, 0x18, 0x01, 0x32, 0xCA, 0xCD, 0xD6, 0xAC, 0x10, 0x21, 0xC5, + 0xCF, 0x50, 0x20, 0x00, 0xA8, 0x10, 0xFF, 0x07, 0xB5, 0xB7, 0xC3, 0xFF, 0xB0, 0xB4, 0xBF, 0xFF, + 0xAB, 0xAF, 0xBB, 0xFF, 0xA7, 0xAB, 0xB7, 0xFF, 0xA2, 0xA6, 0xB2, 0xFF, 0xA5, 0xA8, 0x48, 0x1F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x39, 0x0F, + 0xA0, 0x0E, 0xE9, 0x71, 0x83, 0x83, 0x84, 0xFF, 0xB1, 0xB3, 0xBC, 0x98, 0x10, 0x00, 0xFC, 0x00, + 0x31, 0xCD, 0xD0, 0xD7, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0xB2, 0xD8, 0xD9, 0xE0, 0xFF, 0xDA, 0xDB, + 0xE1, 0xFF, 0xDB, 0xDC, 0xE2, 0x04, 0x00, 0x21, 0xDB, 0xE1, 0x14, 0x00, 0x31, 0xD5, 0xD7, 0xDE, + 0x1C, 0x01, 0x26, 0xCE, 0xD1, 0x04, 0x01, 0x00, 0xF8, 0x2F, 0x00, 0xA0, 0x3F, 0x00, 0x3C, 0x4F, + 0x31, 0xB3, 0xB6, 0xC2, 0x48, 0x20, 0x04, 0xA4, 0x10, 0xBE, 0x9F, 0xA2, 0xB0, 0xFF, 0xA5, 0xA8, + 0xB3, 0xFF, 0x85, 0x85, 0x86, 0xD8, 0x04, 0x0F, 0x70, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1C, 0x0F, 0xA0, 0x0E, 0xEB, 0x31, 0x9E, 0xA0, + 0xA7, 0xAC, 0x2F, 0x00, 0x10, 0x20, 0x22, 0xCC, 0xCF, 0xFC, 0x00, 0x31, 0xD5, 0xD8, 0xDF, 0xF8, + 0x00, 0xB1, 0xDE, 0xDF, 0xE4, 0xFF, 0xE0, 0xE1, 0xE6, 0xFF, 0xE1, 0xE2, 0xE7, 0x04, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x14, 0x00, 0x00, 0x0C, 0x01, 0x31, 0xD7, 0xD8, 0xDF, 0xAC, 0x10, 0x00, 0x04, + 0x01, 0x00, 0x38, 0x01, 0x00, 0xDC, 0x10, 0x35, 0xC0, 0xC2, 0xCD, 0x48, 0x20, 0x22, 0xB1, 0xB3, + 0xA4, 0x10, 0xFE, 0x00, 0xA6, 0xAA, 0xB6, 0xFF, 0xA1, 0xA5, 0xB1, 0xFF, 0x9C, 0x9F, 0xAD, 0xFF, + 0xA0, 0xA2, 0xA8, 0xE0, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x0F, 0xA0, 0x0E, 0xE9, 0x71, 0x88, 0x89, 0x8B, 0xFF, + 0xBC, 0xBE, 0xC9, 0xBC, 0x00, 0x00, 0x68, 0x10, 0x00, 0x34, 0x20, 0x00, 0x98, 0x10, 0x00, 0x88, + 0x10, 0xF1, 0x00, 0xDF, 0xE0, 0xE5, 0xFF, 0xE2, 0xE3, 0xE8, 0xFF, 0xE5, 0xE6, 0xEB, 0xFF, 0xE7, + 0xE8, 0xED, 0x04, 0x00, 0x71, 0xE6, 0xE7, 0xEC, 0xFF, 0xE3, 0xE4, 0xE9, 0x08, 0x01, 0x71, 0xDC, + 0xDD, 0xE2, 0xFF, 0xD6, 0xD8, 0xDF, 0xA8, 0x10, 0x00, 0x38, 0x01, 0x00, 0x14, 0x30, 0x26, 0xC2, + 0xC5, 0xA4, 0x10, 0x31, 0xB2, 0xB5, 0xC1, 0xE8, 0x2F, 0x31, 0xA8, 0xAC, 0xB8, 0x44, 0x20, 0xBE, + 0x9D, 0xA0, 0xAF, 0xFF, 0x9E, 0xA1, 0xAF, 0xFF, 0x8F, 0x90, 0x91, 0xE8, 0x04, 0x0F, 0xD8, 0x2E, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x13, 0x0F, + 0xA0, 0x0E, 0xEC, 0x31, 0xA2, 0xA4, 0xAB, 0xB4, 0x00, 0x00, 0xBC, 0x00, 0x00, 0xB0, 0x2F, 0x00, + 0x70, 0x10, 0x31, 0xD8, 0xDA, 0xE0, 0x84, 0x10, 0x00, 0xE8, 0x00, 0x00, 0xF4, 0x00, 0xF1, 0x00, + 0xEA, 0xEB, 0xF0, 0xFF, 0xE8, 0xE9, 0xEE, 0xFF, 0xD9, 0xDB, 0xE1, 0xFF, 0xEB, 0xEC, 0xF0, 0x14, + 0x00, 0x31, 0xE4, 0xE5, 0xEA, 0x20, 0x01, 0x00, 0xC4, 0x10, 0x00, 0xF4, 0x2F, 0x02, 0x38, 0x4F, + 0x11, 0xD4, 0x84, 0x20, 0x31, 0xBF, 0xC1, 0xCC, 0xD4, 0x5E, 0x11, 0xB4, 0x44, 0x20, 0x15, 0xBE, + 0x44, 0x20, 0xBE, 0x9E, 0xA2, 0xAF, 0xFF, 0x99, 0x9C, 0xAB, 0xFF, 0x9E, 0xA0, 0xA9, 0xF0, 0x04, + 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x12, 0x0F, 0xA0, 0x0E, 0xE9, 0x00, 0xFC, 0x6D, 0x00, 0x64, 0x8D, 0x22, 0xC3, 0xC6, 0xD8, + 0x2F, 0x00, 0x08, 0x20, 0x01, 0x9C, 0x10, 0x21, 0xDC, 0xE2, 0x2C, 0x20, 0x00, 0x8C, 0x10, 0x00, + 0xF0, 0x00, 0xF1, 0x04, 0xEA, 0xEB, 0xEF, 0xFF, 0x83, 0x88, 0x97, 0xFF, 0x68, 0x6E, 0x7F, 0xFF, + 0xD6, 0xD8, 0xDE, 0xFF, 0xEB, 0xEC, 0xF1, 0x04, 0x01, 0x00, 0xBC, 0x10, 0xF1, 0x00, 0xDD, 0xDE, + 0xE3, 0xFF, 0xCC, 0xCE, 0xD6, 0xFF, 0x90, 0x95, 0xA4, 0xFF, 0x9F, 0xA4, 0xB2, 0x00, 0x01, 0x22, + 0xC0, 0xC3, 0x44, 0x20, 0x01, 0x88, 0x3F, 0x25, 0xB3, 0xBE, 0xCC, 0x5E, 0xFE, 0x00, 0x9F, 0xA3, + 0xB0, 0xFF, 0x99, 0x9D, 0xAC, 0xFF, 0x9D, 0xA1, 0xAF, 0xFF, 0x88, 0x89, 0x89, 0xF8, 0x04, 0x0F, + 0x18, 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0B, 0x0F, 0xA0, 0x0E, 0xEC, 0x31, 0x91, 0x93, 0x97, 0xD4, 0x4E, 0x00, 0xB4, 0x00, 0x04, 0x3C, + 0x20, 0x00, 0xD8, 0x2F, 0x31, 0xDC, 0xDD, 0xE3, 0xDC, 0x00, 0x00, 0x94, 0x10, 0xF1, 0x08, 0xE8, + 0xEA, 0xEE, 0xFF, 0x81, 0x86, 0x95, 0xFF, 0x53, 0x5A, 0x6C, 0xFF, 0x57, 0x5E, 0x70, 0xFF, 0x67, + 0x6C, 0x7D, 0xFF, 0xD4, 0xD6, 0xDD, 0x1C, 0x00, 0x00, 0xC0, 0x10, 0xF5, 0x04, 0xD1, 0xD2, 0xD9, + 0xFF, 0x88, 0x8D, 0x9C, 0xFF, 0x81, 0x87, 0x97, 0xFF, 0x87, 0x8D, 0x9D, 0xFF, 0xA2, 0xA7, 0xB5, + 0x00, 0x01, 0x00, 0xE4, 0x2F, 0x35, 0xB0, 0xB3, 0xBF, 0x00, 0x01, 0xFE, 0x00, 0xA0, 0xA3, 0xB0, + 0xFF, 0x9A, 0x9D, 0xAC, 0xFF, 0x93, 0x99, 0xA7, 0xFF, 0x97, 0x99, 0x9D, 0x00, 0x05, 0x0F, 0x04, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, + 0x0F, 0xA0, 0x0E, 0xED, 0x31, 0xA0, 0xA2, 0xA9, 0xEC, 0x1F, 0x08, 0x00, 0x01, 0x00, 0xB0, 0x2F, + 0x00, 0x74, 0x10, 0x00, 0xDC, 0x00, 0x00, 0xE4, 0x00, 0xF1, 0x08, 0xDD, 0xDF, 0xE5, 0xFF, 0x63, + 0x69, 0x79, 0xFF, 0x4E, 0x55, 0x67, 0xFF, 0x54, 0x5A, 0x6D, 0xFF, 0x5A, 0x60, 0x72, 0xFF, 0x67, + 0x6C, 0x7E, 0x0C, 0x20, 0xF3, 0x08, 0xA3, 0xA6, 0xB3, 0xFF, 0x7C, 0x82, 0x91, 0xFF, 0x79, 0x7F, + 0x8F, 0xFF, 0x80, 0x86, 0x96, 0xFF, 0x86, 0x8C, 0x9C, 0xFF, 0x96, 0x9C, 0xAB, 0x6C, 0x6E, 0x16, + 0xCA, 0x84, 0x3F, 0x22, 0xAE, 0xBB, 0x00, 0x01, 0x12, 0xA4, 0x00, 0x01, 0x7E, 0x94, 0x99, 0xA7, + 0xFF, 0x9B, 0x9E, 0xA6, 0x00, 0x05, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x0F, 0xA0, 0x0E, 0xED, 0x55, 0xAB, 0xAC, 0xB6, + 0xFF, 0xBE, 0x00, 0x01, 0x12, 0xD5, 0xA0, 0x10, 0x25, 0xD7, 0xDE, 0xA0, 0x10, 0x00, 0x24, 0x20, + 0xF1, 0x14, 0xEC, 0xED, 0xF2, 0xFF, 0xDB, 0xDD, 0xE3, 0xFF, 0x62, 0x69, 0x79, 0xFF, 0x52, 0x59, + 0x6B, 0xFF, 0x59, 0x5F, 0x71, 0xFF, 0x5F, 0x65, 0x77, 0xFF, 0x66, 0x6B, 0x7E, 0xFF, 0x6C, 0x71, + 0x84, 0xFF, 0x72, 0x78, 0x89, 0x00, 0x01, 0x71, 0x7F, 0x85, 0x95, 0xFF, 0x91, 0x97, 0xA6, 0x9C, + 0x10, 0x00, 0xB4, 0x8D, 0x08, 0xA0, 0x10, 0x2A, 0xAB, 0xAF, 0xA0, 0x10, 0x00, 0x00, 0x01, 0x3E, + 0x9C, 0xA1, 0xAC, 0x00, 0x05, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x0F, 0xA0, 0x0E, 0xED, 0x00, 0x3C, 0x10, 0x00, 0x40, + 0x20, 0x00, 0xBC, 0x5E, 0x04, 0xE0, 0x2F, 0x00, 0x4C, 0x3F, 0x00, 0x54, 0x3F, 0x00, 0x00, 0x4F, + 0x00, 0x18, 0x4F, 0xF1, 0x08, 0xE9, 0xEA, 0xEF, 0xFF, 0xED, 0xEE, 0xF2, 0xFF, 0xDA, 0xDC, 0xE2, + 0xFF, 0x62, 0x69, 0x7A, 0xFF, 0x59, 0x60, 0x72, 0xFF, 0x60, 0x65, 0x78, 0x00, 0x01, 0x62, 0x6D, + 0x72, 0x85, 0xFF, 0x73, 0x79, 0x00, 0x01, 0x72, 0x88, 0x8E, 0x9E, 0xFF, 0xC2, 0xC6, 0xCF, 0xC4, + 0x5E, 0x0F, 0xE0, 0x2F, 0x08, 0x01, 0x40, 0x20, 0x21, 0x98, 0xA6, 0xE4, 0x2F, 0x0E, 0x00, 0x05, + 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x09, 0x0F, 0xA0, 0x0E, 0xED, 0x31, 0xB2, 0xB4, 0xC1, 0x40, 0xBC, 0x22, 0xC2, 0xC4, 0x20, + 0x4F, 0x00, 0x84, 0x5E, 0x00, 0x8C, 0x5E, 0x31, 0xD7, 0xD9, 0xE0, 0x44, 0x20, 0x00, 0x84, 0x3F, + 0x00, 0x04, 0x01, 0x00, 0x48, 0x20, 0x00, 0x24, 0x4F, 0x00, 0x24, 0x6E, 0xF1, 0x0C, 0x5C, 0x62, + 0x75, 0xFF, 0x62, 0x67, 0x7A, 0xFF, 0x68, 0x6D, 0x80, 0xFF, 0x6E, 0x73, 0x86, 0xFF, 0x74, 0x7A, + 0x8A, 0xFF, 0x7A, 0x80, 0x90, 0xFF, 0xA7, 0xAB, 0xB8, 0x44, 0x01, 0x0F, 0x20, 0x4F, 0x0B, 0x11, + 0xB0, 0x20, 0x4F, 0x6F, 0x92, 0x98, 0xA6, 0xFF, 0x99, 0x9E, 0x40, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D, 0x0F, 0xA0, 0x0E, 0xED, 0x00, + 0xDC, 0x1F, 0x00, 0xF0, 0x9C, 0x00, 0xB4, 0x7D, 0x04, 0x60, 0x6E, 0x31, 0xCE, 0xD1, 0xD9, 0xA4, + 0x10, 0x35, 0xD9, 0xDA, 0xE1, 0x04, 0x01, 0x00, 0xEC, 0x2F, 0x00, 0xB0, 0x5E, 0xFD, 0x10, 0xA3, + 0xA7, 0xB3, 0xFF, 0x60, 0x66, 0x78, 0xFF, 0x65, 0x6A, 0x7D, 0xFF, 0x6B, 0x70, 0x83, 0xFF, 0x70, + 0x76, 0x87, 0xFF, 0x76, 0x7C, 0x8C, 0xFF, 0x7C, 0x82, 0x92, 0xFF, 0xA8, 0xAD, 0xB9, 0x60, 0x6E, + 0x1F, 0xB3, 0x60, 0x6E, 0x00, 0xBE, 0x98, 0x9B, 0xAA, 0xFF, 0x91, 0x97, 0xA5, 0xFF, 0x98, 0x9D, + 0xAB, 0x00, 0x05, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x0F, 0xA0, 0x0E, 0xED, 0x31, 0xAD, 0xAF, 0xBC, 0xA8, 0x00, 0x00, + 0xB0, 0x00, 0x00, 0xA4, 0xDB, 0x00, 0xC0, 0x00, 0x20, 0xCB, 0xCE, 0xD8, 0xAC, 0x11, 0xDA, 0x04, + 0x4F, 0x00, 0x28, 0x9D, 0x00, 0xE4, 0x7D, 0x00, 0x6C, 0x6E, 0x71, 0xD2, 0xD4, 0xDB, 0xFF, 0x72, + 0x77, 0x88, 0xFC, 0x00, 0x31, 0x69, 0x6E, 0x81, 0x9C, 0x10, 0x35, 0x73, 0x79, 0x8A, 0xDC, 0x2F, + 0x31, 0x8F, 0x94, 0xA4, 0x38, 0x20, 0x08, 0xA0, 0x8D, 0x2C, 0xB0, 0xB4, 0xA0, 0x8D, 0x9F, 0xAE, + 0xFF, 0x96, 0x9A, 0xA9, 0xFF, 0x90, 0x96, 0xA4, 0x40, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x0F, 0xA0, 0x0E, 0xED, 0x31, 0xA6, 0xA7, + 0xB2, 0xA8, 0x00, 0x00, 0xA4, 0x10, 0x31, 0xBF, 0xC1, 0xCD, 0xFC, 0x1F, 0x04, 0x44, 0x9D, 0x00, + 0x7C, 0xBC, 0x00, 0x0C, 0x7E, 0x00, 0xD0, 0x5E, 0xF1, 0x04, 0xCE, 0xD0, 0xD8, 0xFF, 0x7C, 0x81, + 0x91, 0xFF, 0x67, 0x6C, 0x7F, 0xFF, 0x6A, 0x6F, 0x82, 0xFF, 0x6E, 0x73, 0x85, 0x78, 0x3F, 0x31, + 0x77, 0x7D, 0x8D, 0x9C, 0x10, 0x04, 0xBC, 0x5E, 0x55, 0x98, 0x9E, 0xAD, 0xFF, 0xBC, 0xE0, 0xAC, + 0x1A, 0xC1, 0xE0, 0xAC, 0x07, 0x7C, 0x3F, 0x6F, 0x8E, 0x94, 0xA3, 0xFF, 0x98, 0x9C, 0xE8, 0xAB, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D, 0x0F, + 0xA0, 0x0E, 0xED, 0x31, 0x9B, 0x9E, 0xA5, 0xE4, 0x1F, 0x00, 0x04, 0x7E, 0x00, 0xE8, 0x2F, 0x26, + 0xC0, 0xC3, 0x04, 0x01, 0x00, 0xA0, 0xDB, 0x01, 0x5C, 0xBC, 0x61, 0xCE, 0xD6, 0xFF, 0x82, 0x87, + 0x98, 0x30, 0x20, 0xF1, 0x10, 0x6D, 0x72, 0x84, 0xFF, 0x6F, 0x75, 0x87, 0xFF, 0x81, 0x86, 0x96, + 0xFF, 0xA7, 0xAC, 0xB8, 0xFF, 0xAA, 0xAE, 0xBB, 0xFF, 0x8F, 0x94, 0xA3, 0xFF, 0x85, 0x8B, 0x9B, + 0xFF, 0x89, 0x8F, 0x9F, 0x04, 0x00, 0x73, 0x9B, 0xA1, 0xB0, 0xFF, 0xB8, 0xBA, 0xC7, 0x18, 0x4F, + 0x06, 0x20, 0xCC, 0x08, 0x3C, 0x20, 0x7E, 0x8C, 0x92, 0xA2, 0xFF, 0x96, 0x99, 0xA2, 0x00, 0x05, + 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x0A, 0x0F, 0xA0, 0x0E, 0xED, 0x71, 0x8F, 0x90, 0x94, 0xFF, 0xAF, 0xB3, 0xBE, 0x28, 0x3F, + 0x00, 0x54, 0x10, 0x01, 0x04, 0x01, 0x21, 0xC2, 0xCD, 0xB0, 0x8D, 0x00, 0xF0, 0xCB, 0x01, 0xF4, + 0xFA, 0xA1, 0xCD, 0xD6, 0xFF, 0x9C, 0xA1, 0xAF, 0xFF, 0x71, 0x77, 0x88, 0x0C, 0x4F, 0x71, 0x88, + 0x8E, 0x9D, 0xFF, 0xC4, 0xC7, 0xD1, 0xF0, 0x5E, 0x02, 0xD0, 0x2F, 0x55, 0xCF, 0xFF, 0x9B, 0xA0, + 0xAF, 0x00, 0x01, 0x31, 0xA9, 0xAE, 0xBC, 0x9C, 0x10, 0x2A, 0xAD, 0xB1, 0x9C, 0x10, 0xFE, 0x04, + 0x9B, 0x9E, 0xAD, 0xFF, 0x95, 0x99, 0xA8, 0xFF, 0x8F, 0x95, 0xA4, 0xFF, 0x8A, 0x90, 0xA0, 0xFF, + 0x93, 0x95, 0x9A, 0x00, 0x05, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x0F, 0xA0, 0x0E, 0xED, 0x31, 0x83, 0x84, 0x84, 0x1C, + 0x3F, 0x00, 0x4C, 0x10, 0x04, 0x04, 0x01, 0x00, 0x9C, 0x2F, 0x00, 0xE0, 0x4E, 0x00, 0x34, 0x4F, + 0x22, 0xC4, 0xC7, 0x08, 0x01, 0x00, 0x04, 0x00, 0x71, 0xA1, 0xA6, 0xB3, 0xFF, 0x8D, 0x93, 0xA2, + 0xF0, 0x00, 0x00, 0x10, 0x00, 0x02, 0xF8, 0xFA, 0x11, 0xCF, 0x30, 0x01, 0x71, 0xBD, 0xC0, 0xCC, + 0xFF, 0x9E, 0xA4, 0xB3, 0xFC, 0x00, 0x13, 0xB4, 0xB8, 0xDB, 0x00, 0xB4, 0x5E, 0x04, 0xD8, 0x2F, + 0x31, 0x9D, 0xA0, 0xAE, 0x9C, 0x10, 0x31, 0x92, 0x97, 0xA5, 0x44, 0x00, 0x7E, 0x92, 0x97, 0xA6, + 0xFF, 0x87, 0x87, 0x88, 0x00, 0x05, 0x0F, 0x58, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x0F, 0xA0, 0x0E, 0xF0, 0x75, 0x9A, 0x9C, 0xA4, + 0xFF, 0xAC, 0xB0, 0xBC, 0x04, 0x01, 0x00, 0x4C, 0x20, 0x00, 0xF0, 0x2F, 0x00, 0xAC, 0x10, 0x00, + 0x08, 0x01, 0x01, 0xD0, 0x7D, 0x21, 0xC4, 0xCE, 0xF8, 0x4E, 0x05, 0x08, 0x00, 0xA1, 0xC3, 0xCE, + 0xFF, 0xBF, 0xC2, 0xCD, 0xFF, 0xBE, 0xC0, 0xCB, 0x30, 0x01, 0x00, 0x38, 0x01, 0x06, 0x54, 0xEB, + 0x15, 0xBE, 0xFC, 0x00, 0x00, 0x38, 0x20, 0x00, 0x10, 0xCC, 0x04, 0xD8, 0x2F, 0x31, 0x8F, 0x95, + 0xA3, 0x9C, 0x10, 0x3E, 0x97, 0x99, 0xA3, 0xF8, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x12, 0x0F, 0xA0, 0x0E, 0xED, 0x31, + 0x87, 0x88, 0x8A, 0xAC, 0x00, 0x00, 0x8C, 0x2F, 0x00, 0x4C, 0x20, 0x00, 0x74, 0xDB, 0x00, 0xB8, + 0x7D, 0x00, 0x08, 0x01, 0x00, 0x24, 0x6E, 0x00, 0xE0, 0x00, 0x00, 0x0C, 0x01, 0x00, 0x44, 0x4F, + 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x14, 0x00, 0x00, 0x24, 0x01, 0x00, 0xF4, 0x00, 0x00, + 0xC0, 0x3F, 0x00, 0x38, 0x01, 0x31, 0xB1, 0xB4, 0xBF, 0x34, 0x20, 0x04, 0x98, 0x10, 0x00, 0xEC, + 0x5E, 0x22, 0x9F, 0xA2, 0x38, 0x20, 0x04, 0x14, 0x4F, 0x31, 0x8C, 0x92, 0xA1, 0x10, 0x30, 0x3E, + 0x8D, 0x8D, 0x90, 0xF0, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x12, 0x0F, 0xA0, 0x0E, 0xF1, 0x31, 0x96, 0x98, 0x9F, 0x28, + 0x3F, 0x00, 0xBC, 0x00, 0x00, 0xC4, 0x00, 0x00, 0xAC, 0x10, 0x00, 0x08, 0x01, 0x00, 0xD8, 0x00, + 0x00, 0xE0, 0x00, 0x00, 0x04, 0x00, 0x00, 0x10, 0x01, 0x04, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x24, 0x01, 0x00, 0xBC, 0x3F, 0x71, 0xB1, 0xB4, 0xC0, 0xFF, 0xAF, 0xB2, 0xBD, 0xE4, 0x10, 0x00, + 0xD0, 0x2F, 0x02, 0x98, 0x10, 0x06, 0xFC, 0x00, 0x53, 0x97, 0x9B, 0xA9, 0xFF, 0x91, 0x38, 0x20, + 0x00, 0x9C, 0x10, 0x3E, 0x96, 0x98, 0xA1, 0xE8, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x0F, 0xA0, 0x0E, 0xED, 0x71, + 0x82, 0x82, 0x83, 0xFF, 0x9E, 0xA2, 0xAC, 0xE4, 0x9C, 0x00, 0xF0, 0x2F, 0x00, 0xAC, 0x10, 0x31, + 0xAD, 0xB1, 0xBC, 0x0C, 0x20, 0x00, 0x0C, 0x01, 0x00, 0x7C, 0x10, 0x00, 0xE8, 0x00, 0x05, 0x04, + 0x00, 0x21, 0xB3, 0xBF, 0xCC, 0x10, 0x22, 0xAE, 0xB1, 0xF8, 0x00, 0x00, 0x38, 0x01, 0x00, 0x40, + 0x01, 0x00, 0x6C, 0x3F, 0x31, 0xA1, 0xA5, 0xB2, 0x9C, 0xBC, 0x01, 0xFC, 0x00, 0x12, 0x9A, 0xFC, + 0x00, 0x22, 0x8E, 0x94, 0x38, 0x20, 0x31, 0x95, 0x9A, 0xA6, 0x34, 0xDC, 0x0E, 0xE0, 0x04, 0x0F, + 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x19, 0x0F, 0xA0, 0x0E, 0xF1, 0x71, 0x85, 0x86, 0x88, 0xFF, 0x9F, 0xA3, 0xAE, 0xF8, 0x1F, 0x00, + 0x08, 0x01, 0x00, 0xD0, 0x00, 0x00, 0x70, 0x10, 0x00, 0xDC, 0x00, 0x00, 0x10, 0x01, 0x31, 0xAC, + 0xB0, 0xBB, 0xEC, 0x00, 0x31, 0xAC, 0xAF, 0xBB, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x28, 0x00, 0x00, 0x30, 0x00, 0x00, 0x94, 0x10, 0x00, 0x60, 0xBC, 0x22, 0x9D, 0xA0, 0xD0, + 0x2F, 0x1B, 0x96, 0xFC, 0x00, 0x00, 0x74, 0x3F, 0x3E, 0x89, 0x8A, 0x8C, 0xD8, 0x04, 0x0F, 0x04, + 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x22, + 0x0F, 0xA0, 0x0E, 0xF1, 0xB1, 0x88, 0x88, 0x8B, 0xFF, 0x9E, 0xA1, 0xAD, 0xFF, 0xA0, 0xA4, 0xB1, + 0x3C, 0x3F, 0x00, 0x70, 0x10, 0x00, 0xDC, 0x00, 0x00, 0x14, 0x20, 0x08, 0x04, 0x00, 0x00, 0x14, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x28, 0x00, 0x00, 0xF8, 0x00, 0x22, 0x9E, 0xA1, + 0x94, 0x10, 0x00, 0x08, 0x4F, 0x00, 0xA8, 0x5E, 0x26, 0x91, 0x96, 0x34, 0x20, 0x7E, 0x92, 0x96, + 0xA5, 0xFF, 0x8B, 0x8B, 0x8E, 0xC8, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2A, 0x0F, 0xA0, 0x0E, 0xF1, 0x71, 0x86, 0x86, + 0x88, 0xFF, 0x9B, 0x9D, 0xA9, 0x68, 0x10, 0x31, 0x9F, 0xA2, 0xAF, 0xDC, 0x00, 0x00, 0x10, 0x01, + 0x26, 0xA1, 0xA5, 0x04, 0x00, 0x00, 0x10, 0x00, 0x13, 0x9F, 0xF4, 0x00, 0x32, 0x9C, 0xA0, 0xAE, + 0xF8, 0x00, 0x61, 0x9C, 0xAB, 0xFF, 0x96, 0x9A, 0xA8, 0x5C, 0xBC, 0x00, 0x08, 0x4F, 0x22, 0x8C, + 0x92, 0xFC, 0x00, 0x3E, 0x93, 0x98, 0xA4, 0x38, 0x1F, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x36, 0x0F, 0xA0, 0x0E, 0xF1, 0x71, + 0x82, 0x83, 0x83, 0xFF, 0x93, 0x95, 0x9D, 0x08, 0x20, 0x00, 0x04, 0x00, 0x00, 0xE0, 0x00, 0x0C, + 0x04, 0x00, 0x00, 0x18, 0x00, 0x00, 0xEC, 0xCB, 0x00, 0xC4, 0x2F, 0x22, 0x95, 0x99, 0xF8, 0x00, + 0x00, 0x04, 0x4F, 0x00, 0x94, 0x10, 0x31, 0x8B, 0x91, 0xA1, 0x38, 0x20, 0x31, 0x94, 0x96, 0x9F, + 0xC4, 0x6E, 0x0E, 0xA8, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x39, 0x0F, 0xA0, 0x0E, 0xF5, 0xF1, 0x00, 0x88, 0x88, 0x8A, + 0xFF, 0x93, 0x96, 0x9E, 0xFF, 0x99, 0x9C, 0xA9, 0xFF, 0x96, 0x99, 0xA8, 0x04, 0x00, 0x11, 0x95, + 0x04, 0x00, 0x51, 0xA7, 0xFF, 0x93, 0x98, 0xA7, 0xB4, 0x2F, 0x00, 0xF4, 0x00, 0x00, 0x90, 0x10, + 0x04, 0xF8, 0x00, 0x00, 0x38, 0x20, 0x3E, 0x92, 0x95, 0x9E, 0x34, 0x1F, 0x0F, 0x04, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4E, 0x0F, 0xA0, + 0x0E, 0xF5, 0x00, 0x64, 0x10, 0xF2, 0x07, 0x8D, 0x8E, 0x93, 0xFF, 0x92, 0x94, 0x9D, 0xFF, 0x94, + 0x98, 0xA4, 0xFF, 0x96, 0x9B, 0xA7, 0xFF, 0x95, 0x9B, 0xA8, 0xFF, 0x95, 0x9A, 0x10, 0x01, 0xFE, + 0x00, 0x93, 0x97, 0xA3, 0xFF, 0x91, 0x93, 0x9C, 0xFF, 0x8E, 0x8F, 0x94, 0xFF, 0x85, 0x85, 0x86, + 0x70, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x90, 0x0F, 0xA0, 0x0E, 0xE9, 0x0F, 0x04, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x3F, 0x5A, 0x5A, + 0x5A, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, + 0x3F, 0xA0, 0xA0, 0xA0, 0xA0, 0x0F, 0xFF, 0xFF, 0xFF, 0x05, 0x3F, 0x3C, 0x3C, 0x3C, 0x04, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7A, 0x3F, 0x82, 0x82, + 0x82, 0xA0, 0x0F, 0xFF, 0xFF, 0xFF, 0x0D, 0x3F, 0x00, 0x00, 0x00, 0x04, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x0F, 0xA0, 0x0F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x00, 0x20, 0x03, 0x0F, 0x04, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x79, 0x0F, 0xA0, 0x0F, + 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x18, 0x03, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0x0E, 0xA0, 0x0F, 0x0F, 0x04, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D, + 0xFE, 0x20, 0x84, 0x85, 0x85, 0xFF, 0x96, 0x96, 0x9B, 0xFF, 0xA6, 0xA6, 0xAE, 0xFF, 0xB0, 0xB2, + 0xBB, 0xFF, 0xB7, 0xB9, 0xC4, 0xFF, 0xB8, 0xBA, 0xC6, 0xFF, 0xB7, 0xB9, 0xC5, 0xFF, 0xB5, 0xB7, + 0xC1, 0xFF, 0xAD, 0xB1, 0xB9, 0xFF, 0xA4, 0xA7, 0xAD, 0xFF, 0x99, 0x9A, 0x9E, 0xFF, 0x87, 0x87, + 0x88, 0x30, 0x04, 0x0F, 0xA0, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x53, 0xF5, 0x00, 0x8A, 0x8B, 0x8C, 0xFF, 0xA7, 0xA8, 0xAF, 0xFF, + 0xBA, 0xBC, 0xC7, 0xFF, 0xBD, 0xBF, 0xCB, 0x04, 0x00, 0xFE, 0x18, 0xBC, 0xBE, 0xCA, 0xFF, 0xBB, + 0xBD, 0xC9, 0xFF, 0xB9, 0xBB, 0xC7, 0xFF, 0xB6, 0xB8, 0xC4, 0xFF, 0xB4, 0xB6, 0xC2, 0xFF, 0xB1, + 0xB4, 0xBF, 0xFF, 0xAD, 0xB1, 0xBD, 0xFF, 0xB0, 0xB3, 0xBE, 0xFF, 0xA5, 0xA7, 0xAE, 0xFF, 0x8E, + 0x8E, 0x90, 0x70, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4A, 0x0F, 0xA0, 0x0E, 0xE5, 0xF6, 0x07, 0x83, 0x83, 0x83, 0xFF, + 0xA1, 0xA2, 0xA9, 0xFF, 0xBD, 0xBF, 0xCA, 0xFF, 0xC1, 0xC4, 0xCE, 0xFF, 0xC2, 0xC5, 0xCF, 0xFF, + 0xC3, 0xC6, 0x04, 0x00, 0xB1, 0xC2, 0xC4, 0xCE, 0xFF, 0xC0, 0xC3, 0xCE, 0xFF, 0xBE, 0xC0, 0xCC, + 0x0C, 0x01, 0x04, 0x08, 0x01, 0xFE, 0x08, 0xB2, 0xB5, 0xC0, 0xFF, 0xAE, 0xB2, 0xBD, 0xFF, 0xAA, + 0xAE, 0xBA, 0xFF, 0xAB, 0xAF, 0xBA, 0xFF, 0xA3, 0xA4, 0xAB, 0xFF, 0x84, 0x84, 0x85, 0x90, 0x04, + 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x3A, 0x0F, 0xA0, 0x0E, 0xE9, 0xF1, 0x0C, 0x89, 0x89, 0x8B, 0xFF, 0xB3, 0xB4, 0xBE, 0xFF, + 0xC2, 0xC5, 0xCE, 0xFF, 0xC5, 0xC8, 0xD1, 0xFF, 0xC7, 0xCA, 0xD3, 0xFF, 0xC8, 0xCB, 0xD4, 0xFF, + 0xC9, 0xCC, 0xD5, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x14, 0x00, 0x31, 0xC6, 0xC9, 0xD2, 0x0C, + 0x01, 0xB1, 0xC1, 0xC3, 0xCE, 0xFF, 0xBD, 0xC0, 0xCB, 0xFF, 0xBA, 0xBC, 0xC8, 0x04, 0x01, 0x35, + 0xB3, 0xB5, 0xC1, 0x04, 0x01, 0x7F, 0xA5, 0xA9, 0xB5, 0xFF, 0xA9, 0xAD, 0xB5, 0x4C, 0x1F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x48, 0x0F, 0xA0, + 0x0E, 0xE9, 0xB1, 0x8B, 0x8C, 0x8E, 0xFF, 0xB9, 0xBB, 0xC5, 0xFF, 0xC4, 0xC7, 0xD0, 0xE4, 0x00, + 0xE6, 0xCA, 0xCD, 0xD5, 0xFF, 0xCC, 0xCF, 0xD7, 0xFF, 0xCD, 0xD0, 0xD8, 0xFF, 0xCE, 0xD1, 0x04, + 0x00, 0x00, 0x14, 0x00, 0x31, 0xCB, 0xCE, 0xD6, 0x0C, 0x01, 0x00, 0x24, 0x01, 0x00, 0x2C, 0x01, + 0x31, 0xBE, 0xC1, 0xCC, 0x54, 0x20, 0x01, 0xA8, 0x10, 0x21, 0xB4, 0xC0, 0x4C, 0x20, 0xFE, 0x00, + 0xA9, 0xAD, 0xB9, 0xFF, 0xA4, 0xA8, 0xB4, 0xFF, 0xA8, 0xAB, 0xB6, 0xFF, 0x91, 0x91, 0x93, 0xB8, + 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x2A, 0x0F, 0xA0, 0x0E, 0xE9, 0x31, 0x88, 0x88, 0x8A, 0xFC, 0x00, 0x00, 0xD0, 0x00, + 0x22, 0xC9, 0xCC, 0xF8, 0x00, 0xF1, 0x00, 0xCF, 0xD2, 0xD9, 0xFF, 0xD1, 0xD4, 0xDB, 0xFF, 0xD3, + 0xD6, 0xDD, 0xFF, 0xD4, 0xD7, 0xDE, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x71, 0xD2, 0xD5, 0xDC, 0xFF, + 0xD0, 0xD3, 0xDA, 0x18, 0x01, 0x32, 0xCA, 0xCD, 0xD6, 0xAC, 0x10, 0x21, 0xC5, 0xCF, 0x50, 0x20, + 0x00, 0xA8, 0x10, 0xFF, 0x07, 0xB5, 0xB7, 0xC3, 0xFF, 0xB0, 0xB4, 0xBF, 0xFF, 0xAB, 0xAF, 0xBB, + 0xFF, 0xA7, 0xAB, 0xB7, 0xFF, 0xA2, 0xA6, 0xB2, 0xFF, 0xA5, 0xA8, 0x48, 0x1F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x39, 0x0F, 0xA0, 0x0E, 0xE9, + 0x71, 0x83, 0x83, 0x84, 0xFF, 0xB1, 0xB3, 0xBC, 0x98, 0x10, 0x00, 0xFC, 0x00, 0x31, 0xCD, 0xD0, + 0xD7, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0xB2, 0xD8, 0xD9, 0xE0, 0xFF, 0xDA, 0xDB, 0xE1, 0xFF, 0xDB, + 0xDC, 0xE2, 0x04, 0x00, 0x21, 0xDB, 0xE1, 0x14, 0x00, 0x31, 0xD5, 0xD7, 0xDE, 0x1C, 0x01, 0x26, + 0xCE, 0xD1, 0x04, 0x01, 0x00, 0xF8, 0x2F, 0x00, 0xA0, 0x3F, 0x00, 0x3C, 0x4F, 0x31, 0xB3, 0xB6, + 0xC2, 0x48, 0x20, 0x04, 0xA4, 0x10, 0xBE, 0x9F, 0xA2, 0xB0, 0xFF, 0xA5, 0xA8, 0xB3, 0xFF, 0x85, + 0x85, 0x86, 0xD8, 0x04, 0x0F, 0x70, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1C, 0x0F, 0xA0, 0x0E, 0xEB, 0x31, 0x9E, 0xA0, 0xA7, 0xAC, 0x2F, + 0x00, 0x10, 0x20, 0x22, 0xCC, 0xCF, 0xFC, 0x00, 0x31, 0xD5, 0xD8, 0xDF, 0xF8, 0x00, 0xB1, 0xDE, + 0xDF, 0xE4, 0xFF, 0xE0, 0xE1, 0xE6, 0xFF, 0xE1, 0xE2, 0xE7, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x0C, 0x01, 0x31, 0xD7, 0xD8, 0xDF, 0xAC, 0x10, 0x00, 0x04, 0x01, 0x00, 0x38, + 0x01, 0x00, 0xDC, 0x10, 0x35, 0xC0, 0xC2, 0xCD, 0x48, 0x20, 0x22, 0xB1, 0xB3, 0xA4, 0x10, 0xFE, + 0x00, 0xA6, 0xAA, 0xB6, 0xFF, 0xA1, 0xA5, 0xB1, 0xFF, 0x9C, 0x9F, 0xAD, 0xFF, 0xA0, 0xA2, 0xA8, + 0xE0, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x1A, 0x0F, 0xA0, 0x0E, 0xE9, 0x71, 0x88, 0x89, 0x8B, 0xFF, 0xBC, 0xBE, 0xC9, + 0xBC, 0x00, 0x00, 0x68, 0x10, 0x00, 0x34, 0x20, 0x00, 0x98, 0x10, 0x00, 0x88, 0x10, 0xF1, 0x00, + 0xDF, 0xE0, 0xE5, 0xFF, 0xE2, 0xE3, 0xE8, 0xFF, 0xE5, 0xE6, 0xEB, 0xFF, 0xE7, 0xE8, 0xED, 0x04, + 0x00, 0x71, 0xE6, 0xE7, 0xEC, 0xFF, 0xE3, 0xE4, 0xE9, 0x08, 0x01, 0x71, 0xDC, 0xDD, 0xE2, 0xFF, + 0xD6, 0xD8, 0xDF, 0xA8, 0x10, 0x00, 0x38, 0x01, 0x00, 0x14, 0x30, 0x26, 0xC2, 0xC5, 0xA4, 0x10, + 0x31, 0xB2, 0xB5, 0xC1, 0xE8, 0x2F, 0x31, 0xA8, 0xAC, 0xB8, 0x44, 0x20, 0xBE, 0x9D, 0xA0, 0xAF, + 0xFF, 0x9E, 0xA1, 0xAF, 0xFF, 0x8F, 0x90, 0x91, 0xE8, 0x04, 0x0F, 0xD8, 0x2E, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x13, 0x0F, 0xA0, 0x0E, 0xEC, + 0x31, 0xA2, 0xA4, 0xAB, 0xB4, 0x00, 0x00, 0xBC, 0x00, 0x00, 0xB0, 0x2F, 0x00, 0x70, 0x10, 0x31, + 0xD8, 0xDA, 0xE0, 0x84, 0x10, 0x00, 0xE8, 0x00, 0x00, 0xF4, 0x00, 0xF1, 0x00, 0xEA, 0xEB, 0xF0, + 0xFF, 0xE8, 0xE9, 0xEE, 0xFF, 0xD9, 0xDB, 0xE1, 0xFF, 0xEB, 0xEC, 0xF0, 0x14, 0x00, 0x31, 0xE4, + 0xE5, 0xEA, 0x20, 0x01, 0x00, 0xC4, 0x10, 0x00, 0xF4, 0x2F, 0x02, 0x38, 0x4F, 0x11, 0xD4, 0x84, + 0x20, 0x31, 0xBF, 0xC1, 0xCC, 0xD4, 0x5E, 0x11, 0xB4, 0x44, 0x20, 0x15, 0xBE, 0x44, 0x20, 0xBE, + 0x9E, 0xA2, 0xAF, 0xFF, 0x99, 0x9C, 0xAB, 0xFF, 0x9E, 0xA0, 0xA9, 0xF0, 0x04, 0x0F, 0x04, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x12, 0x0F, + 0xA0, 0x0E, 0xE9, 0x00, 0xFC, 0x6D, 0x00, 0x64, 0x8D, 0x22, 0xC3, 0xC6, 0xD8, 0x2F, 0x00, 0x08, + 0x20, 0x01, 0x9C, 0x10, 0x21, 0xDC, 0xE2, 0x2C, 0x20, 0x00, 0x8C, 0x10, 0x00, 0xF0, 0x00, 0xF1, + 0x04, 0xEA, 0xEB, 0xEF, 0xFF, 0x83, 0x88, 0x97, 0xFF, 0x68, 0x6E, 0x7F, 0xFF, 0xD6, 0xD8, 0xDE, + 0xFF, 0xEB, 0xEC, 0xF1, 0x04, 0x01, 0x00, 0xBC, 0x10, 0xF1, 0x00, 0xDD, 0xDE, 0xE3, 0xFF, 0xCC, + 0xCE, 0xD6, 0xFF, 0x90, 0x95, 0xA4, 0xFF, 0x9F, 0xA4, 0xB2, 0x00, 0x01, 0x22, 0xC0, 0xC3, 0x44, + 0x20, 0x01, 0x88, 0x3F, 0x25, 0xB3, 0xBE, 0xCC, 0x5E, 0xFE, 0x00, 0x9F, 0xA3, 0xB0, 0xFF, 0x99, + 0x9D, 0xAC, 0xFF, 0x9D, 0xA1, 0xAF, 0xFF, 0x88, 0x89, 0x89, 0xF8, 0x04, 0x0F, 0x18, 0x9C, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x0F, 0xA0, + 0x0E, 0xEC, 0x31, 0x91, 0x93, 0x97, 0xD4, 0x4E, 0x00, 0xB4, 0x00, 0x04, 0x3C, 0x20, 0x00, 0xD8, + 0x2F, 0x31, 0xDC, 0xDD, 0xE3, 0xDC, 0x00, 0x00, 0x94, 0x10, 0xF1, 0x08, 0xE8, 0xEA, 0xEE, 0xFF, + 0x81, 0x86, 0x95, 0xFF, 0x53, 0x5A, 0x6C, 0xFF, 0x57, 0x5E, 0x70, 0xFF, 0x67, 0x6C, 0x7D, 0xFF, + 0xD4, 0xD6, 0xDD, 0x1C, 0x00, 0x00, 0xC0, 0x10, 0xF5, 0x04, 0xD1, 0xD2, 0xD9, 0xFF, 0x88, 0x8D, + 0x9C, 0xFF, 0x81, 0x87, 0x97, 0xFF, 0x87, 0x8D, 0x9D, 0xFF, 0xA2, 0xA7, 0xB5, 0x00, 0x01, 0x00, + 0xE4, 0x2F, 0x35, 0xB0, 0xB3, 0xBF, 0x00, 0x01, 0xFE, 0x00, 0xA0, 0xA3, 0xB0, 0xFF, 0x9A, 0x9D, + 0xAC, 0xFF, 0x93, 0x99, 0xA7, 0xFF, 0x97, 0x99, 0x9D, 0x00, 0x05, 0x0F, 0x04, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x0F, 0xA0, 0x0E, + 0xED, 0x31, 0xA0, 0xA2, 0xA9, 0xEC, 0x1F, 0x08, 0x00, 0x01, 0x00, 0xB0, 0x2F, 0x00, 0x74, 0x10, + 0x00, 0xDC, 0x00, 0x00, 0xE4, 0x00, 0xF1, 0x08, 0xDD, 0xDF, 0xE5, 0xFF, 0x63, 0x69, 0x79, 0xFF, + 0x4E, 0x55, 0x67, 0xFF, 0x54, 0x5A, 0x6D, 0xFF, 0x5A, 0x60, 0x72, 0xFF, 0x67, 0x6C, 0x7E, 0x0C, + 0x20, 0xF3, 0x08, 0xA3, 0xA6, 0xB3, 0xFF, 0x7C, 0x82, 0x91, 0xFF, 0x79, 0x7F, 0x8F, 0xFF, 0x80, + 0x86, 0x96, 0xFF, 0x86, 0x8C, 0x9C, 0xFF, 0x96, 0x9C, 0xAB, 0x6C, 0x6E, 0x16, 0xCA, 0x84, 0x3F, + 0x22, 0xAE, 0xBB, 0x00, 0x01, 0x12, 0xA4, 0x00, 0x01, 0x7E, 0x94, 0x99, 0xA7, 0xFF, 0x9B, 0x9E, + 0xA6, 0x00, 0x05, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x0F, 0xA0, 0x0E, 0xED, 0x55, 0xAB, 0xAC, 0xB6, 0xFF, 0xBE, 0x00, + 0x01, 0x12, 0xD5, 0xA0, 0x10, 0x25, 0xD7, 0xDE, 0xA0, 0x10, 0x00, 0x24, 0x20, 0xF1, 0x14, 0xEC, + 0xED, 0xF2, 0xFF, 0xDB, 0xDD, 0xE3, 0xFF, 0x62, 0x69, 0x79, 0xFF, 0x52, 0x59, 0x6B, 0xFF, 0x59, + 0x5F, 0x71, 0xFF, 0x5F, 0x65, 0x77, 0xFF, 0x66, 0x6B, 0x7E, 0xFF, 0x6C, 0x71, 0x84, 0xFF, 0x72, + 0x78, 0x89, 0x00, 0x01, 0x71, 0x7F, 0x85, 0x95, 0xFF, 0x91, 0x97, 0xA6, 0x9C, 0x10, 0x00, 0xB4, + 0x8D, 0x08, 0xA0, 0x10, 0x2A, 0xAB, 0xAF, 0xA0, 0x10, 0x00, 0x00, 0x01, 0x3E, 0x9C, 0xA1, 0xAC, + 0x00, 0x05, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x0A, 0x0F, 0xA0, 0x0E, 0xED, 0x00, 0x3C, 0x10, 0x00, 0x40, 0x20, 0x00, 0xBC, + 0x5E, 0x04, 0xE0, 0x2F, 0x00, 0x4C, 0x3F, 0x00, 0x54, 0x3F, 0x00, 0x00, 0x4F, 0x00, 0x18, 0x4F, + 0xF1, 0x08, 0xE9, 0xEA, 0xEF, 0xFF, 0xED, 0xEE, 0xF2, 0xFF, 0xDA, 0xDC, 0xE2, 0xFF, 0x62, 0x69, + 0x7A, 0xFF, 0x59, 0x60, 0x72, 0xFF, 0x60, 0x65, 0x78, 0x00, 0x01, 0x62, 0x6D, 0x72, 0x85, 0xFF, + 0x73, 0x79, 0x00, 0x01, 0x72, 0x88, 0x8E, 0x9E, 0xFF, 0xC2, 0xC6, 0xCF, 0xC4, 0x5E, 0x0F, 0xE0, + 0x2F, 0x08, 0x01, 0x40, 0x20, 0x21, 0x98, 0xA6, 0xE4, 0x2F, 0x0E, 0x00, 0x05, 0x0F, 0x04, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x0F, + 0xA0, 0x0E, 0xED, 0x31, 0xB2, 0xB4, 0xC1, 0x40, 0xBC, 0x22, 0xC2, 0xC4, 0x20, 0x4F, 0x00, 0x84, + 0x5E, 0x00, 0x8C, 0x5E, 0x31, 0xD7, 0xD9, 0xE0, 0x44, 0x20, 0x00, 0x84, 0x3F, 0x00, 0x04, 0x01, + 0x00, 0x48, 0x20, 0x00, 0x24, 0x4F, 0x00, 0x24, 0x6E, 0xF1, 0x0C, 0x5C, 0x62, 0x75, 0xFF, 0x62, + 0x67, 0x7A, 0xFF, 0x68, 0x6D, 0x80, 0xFF, 0x6E, 0x73, 0x86, 0xFF, 0x74, 0x7A, 0x8A, 0xFF, 0x7A, + 0x80, 0x90, 0xFF, 0xA7, 0xAB, 0xB8, 0x44, 0x01, 0x0F, 0x20, 0x4F, 0x0B, 0x11, 0xB0, 0x20, 0x4F, + 0x6F, 0x92, 0x98, 0xA6, 0xFF, 0x99, 0x9E, 0x40, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D, 0x0F, 0xA0, 0x0E, 0xED, 0x00, 0xDC, 0x1F, 0x00, + 0xF0, 0x9C, 0x00, 0xB4, 0x7D, 0x04, 0x60, 0x6E, 0x31, 0xCE, 0xD1, 0xD9, 0xA4, 0x10, 0x35, 0xD9, + 0xDA, 0xE1, 0x04, 0x01, 0x00, 0xEC, 0x2F, 0x00, 0xB0, 0x5E, 0xFD, 0x10, 0xA3, 0xA7, 0xB3, 0xFF, + 0x60, 0x66, 0x78, 0xFF, 0x65, 0x6A, 0x7D, 0xFF, 0x6B, 0x70, 0x83, 0xFF, 0x70, 0x76, 0x87, 0xFF, + 0x76, 0x7C, 0x8C, 0xFF, 0x7C, 0x82, 0x92, 0xFF, 0xA8, 0xAD, 0xB9, 0x60, 0x6E, 0x1F, 0xB3, 0x60, + 0x6E, 0x00, 0xBE, 0x98, 0x9B, 0xAA, 0xFF, 0x91, 0x97, 0xA5, 0xFF, 0x98, 0x9D, 0xAB, 0x00, 0x05, + 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x0A, 0x0F, 0xA0, 0x0E, 0xED, 0x31, 0xAD, 0xAF, 0xBC, 0xA8, 0x00, 0x00, 0xB0, 0x00, 0x00, + 0xA4, 0xDB, 0x00, 0xC0, 0x00, 0x20, 0xCB, 0xCE, 0xD8, 0xAC, 0x11, 0xDA, 0x04, 0x4F, 0x00, 0x28, + 0x9D, 0x00, 0xE4, 0x7D, 0x00, 0x6C, 0x6E, 0x71, 0xD2, 0xD4, 0xDB, 0xFF, 0x72, 0x77, 0x88, 0xFC, + 0x00, 0x31, 0x69, 0x6E, 0x81, 0x9C, 0x10, 0x35, 0x73, 0x79, 0x8A, 0xDC, 0x2F, 0x31, 0x8F, 0x94, + 0xA4, 0x38, 0x20, 0x08, 0xA0, 0x8D, 0x2C, 0xB0, 0xB4, 0xA0, 0x8D, 0x9F, 0xAE, 0xFF, 0x96, 0x9A, + 0xA9, 0xFF, 0x90, 0x96, 0xA4, 0x40, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x20, 0x0F, 0xA0, 0x0E, 0xED, 0x31, 0xA6, 0xA7, 0xB2, 0xA8, 0x00, + 0x00, 0xA4, 0x10, 0x31, 0xBF, 0xC1, 0xCD, 0xFC, 0x1F, 0x04, 0x44, 0x9D, 0x00, 0x7C, 0xBC, 0x00, + 0x0C, 0x7E, 0x00, 0xD0, 0x5E, 0xF1, 0x04, 0xCE, 0xD0, 0xD8, 0xFF, 0x7C, 0x81, 0x91, 0xFF, 0x67, + 0x6C, 0x7F, 0xFF, 0x6A, 0x6F, 0x82, 0xFF, 0x6E, 0x73, 0x85, 0x78, 0x3F, 0x31, 0x77, 0x7D, 0x8D, + 0x9C, 0x10, 0x04, 0xBC, 0x5E, 0x55, 0x98, 0x9E, 0xAD, 0xFF, 0xBC, 0xE0, 0xAC, 0x1A, 0xC1, 0xE0, + 0xAC, 0x07, 0x7C, 0x3F, 0x6F, 0x8E, 0x94, 0xA3, 0xFF, 0x98, 0x9C, 0xE8, 0xAB, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D, 0x0F, 0xA0, 0x0E, 0xED, + 0x31, 0x9B, 0x9E, 0xA5, 0xE4, 0x1F, 0x00, 0x04, 0x7E, 0x00, 0xE8, 0x2F, 0x26, 0xC0, 0xC3, 0x04, + 0x01, 0x00, 0xA0, 0xDB, 0x01, 0x5C, 0xBC, 0x61, 0xCE, 0xD6, 0xFF, 0x82, 0x87, 0x98, 0x30, 0x20, + 0xF1, 0x10, 0x6D, 0x72, 0x84, 0xFF, 0x6F, 0x75, 0x87, 0xFF, 0x81, 0x86, 0x96, 0xFF, 0xA7, 0xAC, + 0xB8, 0xFF, 0xAA, 0xAE, 0xBB, 0xFF, 0x8F, 0x94, 0xA3, 0xFF, 0x85, 0x8B, 0x9B, 0xFF, 0x89, 0x8F, + 0x9F, 0x04, 0x00, 0x73, 0x9B, 0xA1, 0xB0, 0xFF, 0xB8, 0xBA, 0xC7, 0x18, 0x4F, 0x06, 0x20, 0xCC, + 0x08, 0x3C, 0x20, 0x7E, 0x8C, 0x92, 0xA2, 0xFF, 0x96, 0x99, 0xA2, 0x00, 0x05, 0x0F, 0x04, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x0F, + 0xA0, 0x0E, 0xED, 0x71, 0x8F, 0x90, 0x94, 0xFF, 0xAF, 0xB3, 0xBE, 0x28, 0x3F, 0x00, 0x54, 0x10, + 0x01, 0x04, 0x01, 0x21, 0xC2, 0xCD, 0xB0, 0x8D, 0x00, 0xF0, 0xCB, 0x01, 0xF4, 0xFA, 0xA1, 0xCD, + 0xD6, 0xFF, 0x9C, 0xA1, 0xAF, 0xFF, 0x71, 0x77, 0x88, 0x0C, 0x4F, 0x71, 0x88, 0x8E, 0x9D, 0xFF, + 0xC4, 0xC7, 0xD1, 0xF0, 0x5E, 0x02, 0xD0, 0x2F, 0x55, 0xCF, 0xFF, 0x9B, 0xA0, 0xAF, 0x00, 0x01, + 0x31, 0xA9, 0xAE, 0xBC, 0x9C, 0x10, 0x2A, 0xAD, 0xB1, 0x9C, 0x10, 0xFE, 0x04, 0x9B, 0x9E, 0xAD, + 0xFF, 0x95, 0x99, 0xA8, 0xFF, 0x8F, 0x95, 0xA4, 0xFF, 0x8A, 0x90, 0xA0, 0xFF, 0x93, 0x95, 0x9A, + 0x00, 0x05, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x0A, 0x0F, 0xA0, 0x0E, 0xED, 0x31, 0x83, 0x84, 0x84, 0x1C, 0x3F, 0x00, 0x4C, + 0x10, 0x04, 0x04, 0x01, 0x00, 0x9C, 0x2F, 0x00, 0xE0, 0x4E, 0x00, 0x34, 0x4F, 0x22, 0xC4, 0xC7, + 0x08, 0x01, 0x00, 0x04, 0x00, 0x71, 0xA1, 0xA6, 0xB3, 0xFF, 0x8D, 0x93, 0xA2, 0xF0, 0x00, 0x00, + 0x10, 0x00, 0x02, 0xF8, 0xFA, 0x11, 0xCF, 0x30, 0x01, 0x71, 0xBD, 0xC0, 0xCC, 0xFF, 0x9E, 0xA4, + 0xB3, 0xFC, 0x00, 0x13, 0xB4, 0xB8, 0xDB, 0x00, 0xB4, 0x5E, 0x04, 0xD8, 0x2F, 0x31, 0x9D, 0xA0, + 0xAE, 0x9C, 0x10, 0x31, 0x92, 0x97, 0xA5, 0x44, 0x00, 0x7E, 0x92, 0x97, 0xA6, 0xFF, 0x87, 0x87, + 0x88, 0x00, 0x05, 0x0F, 0x58, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x0F, 0xA0, 0x0E, 0xF0, 0x75, 0x9A, 0x9C, 0xA4, 0xFF, 0xAC, 0xB0, + 0xBC, 0x04, 0x01, 0x00, 0x4C, 0x20, 0x00, 0xF0, 0x2F, 0x00, 0xAC, 0x10, 0x00, 0x08, 0x01, 0x01, + 0xD0, 0x7D, 0x21, 0xC4, 0xCE, 0xF8, 0x4E, 0x05, 0x08, 0x00, 0xA1, 0xC3, 0xCE, 0xFF, 0xBF, 0xC2, + 0xCD, 0xFF, 0xBE, 0xC0, 0xCB, 0x30, 0x01, 0x00, 0x38, 0x01, 0x06, 0x54, 0xEB, 0x15, 0xBE, 0xFC, + 0x00, 0x00, 0x38, 0x20, 0x00, 0x10, 0xCC, 0x04, 0xD8, 0x2F, 0x31, 0x8F, 0x95, 0xA3, 0x9C, 0x10, + 0x3E, 0x97, 0x99, 0xA3, 0xF8, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x12, 0x0F, 0xA0, 0x0E, 0xED, 0x31, 0x87, 0x88, 0x8A, + 0xAC, 0x00, 0x00, 0x8C, 0x2F, 0x00, 0x4C, 0x20, 0x00, 0x74, 0xDB, 0x00, 0xB8, 0x7D, 0x00, 0x08, + 0x01, 0x00, 0x24, 0x6E, 0x00, 0xE0, 0x00, 0x00, 0x0C, 0x01, 0x00, 0x44, 0x4F, 0x00, 0x04, 0x00, + 0x00, 0x0C, 0x00, 0x00, 0x14, 0x00, 0x00, 0x24, 0x01, 0x00, 0xF4, 0x00, 0x00, 0xC0, 0x3F, 0x00, + 0x38, 0x01, 0x31, 0xB1, 0xB4, 0xBF, 0x34, 0x20, 0x04, 0x98, 0x10, 0x00, 0xEC, 0x5E, 0x22, 0x9F, + 0xA2, 0x38, 0x20, 0x04, 0x14, 0x4F, 0x31, 0x8C, 0x92, 0xA1, 0x10, 0x30, 0x3E, 0x8D, 0x8D, 0x90, + 0xF0, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x12, 0x0F, 0xA0, 0x0E, 0xF1, 0x31, 0x96, 0x98, 0x9F, 0x28, 0x3F, 0x00, 0xBC, + 0x00, 0x00, 0xC4, 0x00, 0x00, 0xAC, 0x10, 0x00, 0x08, 0x01, 0x00, 0xD8, 0x00, 0x00, 0xE0, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x10, 0x01, 0x04, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x24, 0x01, 0x00, + 0xBC, 0x3F, 0x71, 0xB1, 0xB4, 0xC0, 0xFF, 0xAF, 0xB2, 0xBD, 0xE4, 0x10, 0x00, 0xD0, 0x2F, 0x02, + 0x98, 0x10, 0x06, 0xFC, 0x00, 0x53, 0x97, 0x9B, 0xA9, 0xFF, 0x91, 0x38, 0x20, 0x00, 0x9C, 0x10, + 0x3E, 0x96, 0x98, 0xA1, 0xE8, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x0F, 0xA0, 0x0E, 0xED, 0x71, 0x82, 0x82, 0x83, + 0xFF, 0x9E, 0xA2, 0xAC, 0xE4, 0x9C, 0x00, 0xF0, 0x2F, 0x00, 0xAC, 0x10, 0x31, 0xAD, 0xB1, 0xBC, + 0x0C, 0x20, 0x00, 0x0C, 0x01, 0x00, 0x7C, 0x10, 0x00, 0xE8, 0x00, 0x05, 0x04, 0x00, 0x21, 0xB3, + 0xBF, 0xCC, 0x10, 0x22, 0xAE, 0xB1, 0xF8, 0x00, 0x00, 0x38, 0x01, 0x00, 0x40, 0x01, 0x00, 0x6C, + 0x3F, 0x31, 0xA1, 0xA5, 0xB2, 0x9C, 0xBC, 0x01, 0xFC, 0x00, 0x12, 0x9A, 0xFC, 0x00, 0x22, 0x8E, + 0x94, 0x38, 0x20, 0x31, 0x95, 0x9A, 0xA6, 0x34, 0xDC, 0x0E, 0xE0, 0x04, 0x0F, 0x04, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x19, 0x0F, 0xA0, + 0x0E, 0xF1, 0x71, 0x85, 0x86, 0x88, 0xFF, 0x9F, 0xA3, 0xAE, 0xF8, 0x1F, 0x00, 0x08, 0x01, 0x00, + 0xD0, 0x00, 0x00, 0x70, 0x10, 0x00, 0xDC, 0x00, 0x00, 0x10, 0x01, 0x31, 0xAC, 0xB0, 0xBB, 0xEC, + 0x00, 0x31, 0xAC, 0xAF, 0xBB, 0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0x28, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x94, 0x10, 0x00, 0x60, 0xBC, 0x22, 0x9D, 0xA0, 0xD0, 0x2F, 0x1B, 0x96, + 0xFC, 0x00, 0x00, 0x74, 0x3F, 0x3E, 0x89, 0x8A, 0x8C, 0xD8, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x22, 0x0F, 0xA0, 0x0E, + 0xF1, 0xB1, 0x88, 0x88, 0x8B, 0xFF, 0x9E, 0xA1, 0xAD, 0xFF, 0xA0, 0xA4, 0xB1, 0x3C, 0x3F, 0x00, + 0x70, 0x10, 0x00, 0xDC, 0x00, 0x00, 0x14, 0x20, 0x08, 0x04, 0x00, 0x00, 0x14, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x2C, 0x01, 0x00, 0x28, 0x00, 0x00, 0xF8, 0x00, 0x22, 0x9E, 0xA1, 0x94, 0x10, 0x00, + 0x08, 0x4F, 0x00, 0xA8, 0x5E, 0x26, 0x91, 0x96, 0x34, 0x20, 0x7E, 0x92, 0x96, 0xA5, 0xFF, 0x8B, + 0x8B, 0x8E, 0xC8, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2A, 0x0F, 0xA0, 0x0E, 0xF1, 0x71, 0x86, 0x86, 0x88, 0xFF, 0x9B, + 0x9D, 0xA9, 0x68, 0x10, 0x31, 0x9F, 0xA2, 0xAF, 0xDC, 0x00, 0x00, 0x10, 0x01, 0x26, 0xA1, 0xA5, + 0x04, 0x00, 0x00, 0x10, 0x00, 0x13, 0x9F, 0xF4, 0x00, 0x32, 0x9C, 0xA0, 0xAE, 0xF8, 0x00, 0x61, + 0x9C, 0xAB, 0xFF, 0x96, 0x9A, 0xA8, 0x5C, 0xBC, 0x00, 0x08, 0x4F, 0x22, 0x8C, 0x92, 0xFC, 0x00, + 0x3E, 0x93, 0x98, 0xA4, 0x38, 0x1F, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x36, 0x0F, 0xA0, 0x0E, 0xF1, 0x71, 0x82, 0x83, 0x83, + 0xFF, 0x93, 0x95, 0x9D, 0x08, 0x20, 0x00, 0x04, 0x00, 0x00, 0xE0, 0x00, 0x0C, 0x04, 0x00, 0x00, + 0x18, 0x00, 0x00, 0xEC, 0xCB, 0x00, 0xC4, 0x2F, 0x22, 0x95, 0x99, 0xF8, 0x00, 0x00, 0x04, 0x4F, + 0x00, 0x94, 0x10, 0x31, 0x8B, 0x91, 0xA1, 0x38, 0x20, 0x31, 0x94, 0x96, 0x9F, 0xC4, 0x6E, 0x0E, + 0xA8, 0x04, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x39, 0x0F, 0xA0, 0x0E, 0xF5, 0xF1, 0x00, 0x88, 0x88, 0x8A, 0xFF, 0x93, 0x96, + 0x9E, 0xFF, 0x99, 0x9C, 0xA9, 0xFF, 0x96, 0x99, 0xA8, 0x04, 0x00, 0x11, 0x95, 0x04, 0x00, 0x51, + 0xA7, 0xFF, 0x93, 0x98, 0xA7, 0xB4, 0x2F, 0x00, 0xF4, 0x00, 0x00, 0x90, 0x10, 0x04, 0xF8, 0x00, + 0x00, 0x38, 0x20, 0x3E, 0x92, 0x95, 0x9E, 0x34, 0x1F, 0x0F, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4E, 0x0F, 0xA0, 0x0E, 0xF5, 0x00, + 0x64, 0x10, 0xF2, 0x07, 0x8D, 0x8E, 0x93, 0xFF, 0x92, 0x94, 0x9D, 0xFF, 0x94, 0x98, 0xA4, 0xFF, + 0x96, 0x9B, 0xA7, 0xFF, 0x95, 0x9B, 0xA8, 0xFF, 0x95, 0x9A, 0x10, 0x01, 0xFE, 0x00, 0x93, 0x97, + 0xA3, 0xFF, 0x91, 0x93, 0x9C, 0xFF, 0x8E, 0x8F, 0x94, 0xFF, 0x85, 0x85, 0x86, 0x70, 0x04, 0x0F, + 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x90, + 0x0F, 0xA0, 0x0E, 0xE9, 0x0F, 0x04, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x4D, 0x40, 0xA4, 0x93, 0x29, 0x00, 0x01, 0x00, 0xF0, 0x0E, 0xE3, 0x07, 0x9C, 0x30, + 0x84, 0x16, 0x42, 0xE9, 0xFF, 0xFF, 0xE0, 0x07, 0x9E, 0xBF, 0x01, 0xEF, 0x59, 0xCE, 0x18, 0xC6, + 0x10, 0x84, 0x00, 0x00, 0xB0, 0x93, 0x29, 0x00, 0xD8, 0x24, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x94, 0x29, 0x00, 0x28, 0x94, 0x29, 0x00, 0x50, 0x94, 0x29, 0x00, + 0x78, 0x94, 0x29, 0x00, 0xA0, 0x94, 0x29, 0x00, 0xC8, 0x94, 0x29, 0x00, 0xF0, 0x94, 0x29, 0x00, + 0x18, 0x95, 0x29, 0x00, 0x40, 0x95, 0x29, 0x00, 0x64, 0x95, 0x29, 0x00, 0x84, 0x95, 0x29, 0x00, + 0xA4, 0x95, 0x29, 0x00, 0xC4, 0x95, 0x29, 0x00, 0xE8, 0x95, 0x29, 0x00, 0x0C, 0x96, 0x29, 0x00, + 0x30, 0x96, 0x29, 0x00, 0x54, 0x96, 0x29, 0x00, 0x74, 0x96, 0x29, 0x00, 0x98, 0x96, 0x29, 0x00, + 0xBC, 0x96, 0x29, 0x00, 0xDC, 0x96, 0x29, 0x00, 0x00, 0x97, 0x29, 0x00, 0x24, 0x97, 0x29, 0x00, + 0x48, 0x97, 0x29, 0x00, 0x6C, 0x97, 0x29, 0x00, 0x90, 0x97, 0x29, 0x00, 0xB4, 0x97, 0x29, 0x00, + 0xD8, 0x97, 0x29, 0x00, 0xFC, 0x97, 0x29, 0x00, 0x20, 0x98, 0x29, 0x00, 0x44, 0x98, 0x29, 0x00, + 0x68, 0x98, 0x29, 0x00, 0x8C, 0x98, 0x29, 0x00, 0xB0, 0x98, 0x29, 0x00, 0xD4, 0x98, 0x29, 0x00, + 0xF4, 0x98, 0x29, 0x00, 0x20, 0x99, 0x29, 0x00, 0x44, 0x99, 0x29, 0x00, 0x68, 0x99, 0x29, 0x00, + 0x8C, 0x99, 0x29, 0x00, 0xB0, 0x99, 0x29, 0x00, 0xD4, 0x99, 0x29, 0x00, 0xF8, 0x99, 0x29, 0x00, + 0x1C, 0x9A, 0x29, 0x00, 0x40, 0x9A, 0x29, 0x00, 0x64, 0x9A, 0x29, 0x00, 0x88, 0x9A, 0x29, 0x00, + 0xB4, 0x9A, 0x29, 0x00, 0xD8, 0x9A, 0x29, 0x00, 0xF8, 0x9A, 0x29, 0x00, 0x1C, 0x9B, 0x29, 0x00, + 0x3C, 0x9B, 0x29, 0x00, 0x5C, 0x9B, 0x29, 0x00, 0x7C, 0x9B, 0x29, 0x00, 0xA0, 0x9B, 0x29, 0x00, + 0xC4, 0x9B, 0x29, 0x00, 0xE8, 0x9B, 0x29, 0x00, 0x0C, 0x9C, 0x29, 0x00, 0x34, 0x9C, 0x29, 0x00, + 0x58, 0x9C, 0x29, 0x00, 0x80, 0x9C, 0x29, 0x00, 0xA4, 0x9C, 0x29, 0x00, 0xCC, 0x9C, 0x29, 0x00, + 0xF0, 0x9C, 0x29, 0x00, 0x14, 0x9D, 0x29, 0x00, 0x38, 0x9D, 0x29, 0x00, 0x5C, 0x9D, 0x29, 0x00, + 0x7C, 0x9D, 0x29, 0x00, 0x98, 0x9D, 0x29, 0x00, 0xA4, 0x9D, 0x29, 0x00, 0x3C, 0x9F, 0x29, 0x00, + 0xD4, 0xA0, 0x29, 0x00, 0x6C, 0xA2, 0x29, 0x00, 0x04, 0xA4, 0x29, 0x00, 0x9C, 0xA5, 0x29, 0x00, + 0x34, 0xA7, 0x29, 0x00, 0xCC, 0xA8, 0x29, 0x00, 0x64, 0xAA, 0x29, 0x00, 0x70, 0xAA, 0x29, 0x00, + 0x90, 0xAD, 0x29, 0x00, 0xC8, 0xB0, 0x29, 0x00, 0x10, 0xB3, 0x29, 0x00, 0x1C, 0xB3, 0x29, 0x00, + 0x24, 0xB3, 0x29, 0x00, 0x64, 0xB3, 0x29, 0x00, 0x8C, 0xB3, 0x29, 0x00, 0x14, 0xB4, 0x29, 0x00, + 0xAC, 0xB4, 0x29, 0x00, 0x94, 0xB5, 0x29, 0x00, 0x28, 0xB6, 0x29, 0x00, 0x44, 0xB6, 0x29, 0x00, + 0x90, 0xB6, 0x29, 0x00, 0xF0, 0xB6, 0x29, 0x00, 0x24, 0xB7, 0x29, 0x00, 0x64, 0xB7, 0x29, 0x00, + 0x80, 0xB7, 0x29, 0x00, 0x9C, 0xB7, 0x29, 0x00, 0xB0, 0xB7, 0x29, 0x00, 0x1C, 0xB8, 0x29, 0x00, + 0x94, 0xB8, 0x29, 0x00, 0xF0, 0xB8, 0x29, 0x00, 0x68, 0xB9, 0x29, 0x00, 0xE0, 0xB9, 0x29, 0x00, + 0x68, 0xBA, 0x29, 0x00, 0xE0, 0xBA, 0x29, 0x00, 0x68, 0xBB, 0x29, 0x00, 0xD4, 0xBB, 0x29, 0x00, + 0x4C, 0xBC, 0x29, 0x00, 0xC4, 0xBC, 0x29, 0x00, 0xE8, 0xBC, 0x29, 0x00, 0x14, 0xBD, 0x29, 0x00, + 0x60, 0xBD, 0x29, 0x00, 0x94, 0xBD, 0x29, 0x00, 0xEC, 0xBD, 0x29, 0x00, 0x64, 0xBE, 0x29, 0x00, + 0x7C, 0xBF, 0x29, 0x00, 0x04, 0xC0, 0x29, 0x00, 0x7C, 0xC0, 0x29, 0x00, 0x04, 0xC1, 0x29, 0x00, + 0x7C, 0xC1, 0x29, 0x00, 0xD8, 0xC1, 0x29, 0x00, 0x34, 0xC2, 0x29, 0x00, 0xBC, 0xC2, 0x29, 0x00, + 0x34, 0xC3, 0x29, 0x00, 0x68, 0xC3, 0x29, 0x00, 0xB8, 0xC3, 0x29, 0x00, 0x30, 0xC4, 0x29, 0x00, + 0x8C, 0xC4, 0x29, 0x00, 0x20, 0xC5, 0x29, 0x00, 0x98, 0xC5, 0x29, 0x00, 0x20, 0xC6, 0x29, 0x00, + 0x98, 0xC6, 0x29, 0x00, 0x3C, 0xC7, 0x29, 0x00, 0xB4, 0xC7, 0x29, 0x00, 0x2C, 0xC8, 0x29, 0x00, + 0xA4, 0xC8, 0x29, 0x00, 0x2C, 0xC9, 0x29, 0x00, 0xB4, 0xC9, 0x29, 0x00, 0x64, 0xCA, 0x29, 0x00, + 0xEC, 0xCA, 0x29, 0x00, 0x74, 0xCB, 0x29, 0x00, 0xE0, 0xCB, 0x29, 0x00, 0x50, 0xCC, 0x29, 0x00, + 0xBC, 0xCC, 0x29, 0x00, 0x1C, 0xCD, 0x29, 0x00, 0x54, 0xCD, 0x29, 0x00, 0x6C, 0xCD, 0x29, 0x00, + 0x88, 0xCD, 0x29, 0x00, 0xE0, 0xCD, 0x29, 0x00, 0x58, 0xCE, 0x29, 0x00, 0xA8, 0xCE, 0x29, 0x00, + 0x20, 0xCF, 0x29, 0x00, 0x70, 0xCF, 0x29, 0x00, 0xCC, 0xCF, 0x29, 0x00, 0x54, 0xD0, 0x29, 0x00, + 0xCC, 0xD0, 0x29, 0x00, 0x0C, 0xD1, 0x29, 0x00, 0x6C, 0xD1, 0x29, 0x00, 0xF4, 0xD1, 0x29, 0x00, + 0x28, 0xD2, 0x29, 0x00, 0xA8, 0xD2, 0x29, 0x00, 0x00, 0xD3, 0x29, 0x00, 0x50, 0xD3, 0x29, 0x00, + 0xC0, 0xD3, 0x29, 0x00, 0x30, 0xD4, 0x29, 0x00, 0x7C, 0xD4, 0x29, 0x00, 0xCC, 0xD4, 0x29, 0x00, + 0x24, 0xD5, 0x29, 0x00, 0x7C, 0xD5, 0x29, 0x00, 0xCC, 0xD5, 0x29, 0x00, 0x38, 0xD6, 0x29, 0x00, + 0x88, 0xD6, 0x29, 0x00, 0xEC, 0xD6, 0x29, 0x00, 0x30, 0xD7, 0x29, 0x00, 0xA0, 0xD7, 0x29, 0x00, + 0xDC, 0xD7, 0x29, 0x00, 0x4C, 0xD8, 0x29, 0x00, 0x74, 0xD8, 0x29, 0x00, 0xC4, 0xD8, 0x29, 0x00, + 0xD0, 0xD8, 0x29, 0x00, 0xD8, 0xD8, 0x29, 0x00, 0x88, 0xD9, 0x29, 0x00, 0xF4, 0xD9, 0x29, 0x00, + 0xA0, 0xDB, 0x29, 0x00, 0xA8, 0xDD, 0x29, 0x00, 0xF8, 0xE0, 0x29, 0x00, 0xDC, 0xE2, 0x29, 0x00, + 0x18, 0xE3, 0x29, 0x00, 0x38, 0xE4, 0x29, 0x00, 0x58, 0xE5, 0x29, 0x00, 0xF0, 0xE5, 0x29, 0x00, + 0xCC, 0xE6, 0x29, 0x00, 0x08, 0xE7, 0x29, 0x00, 0x40, 0xE7, 0x29, 0x00, 0x64, 0xE7, 0x29, 0x00, + 0xA0, 0xE8, 0x29, 0x00, 0x4C, 0xEA, 0x29, 0x00, 0x6C, 0xEB, 0x29, 0x00, 0x18, 0xED, 0x29, 0x00, + 0xC4, 0xEE, 0x29, 0x00, 0x8C, 0xF0, 0x29, 0x00, 0x38, 0xF2, 0x29, 0x00, 0xE4, 0xF3, 0x29, 0x00, + 0x3C, 0xF5, 0x29, 0x00, 0xE8, 0xF6, 0x29, 0x00, 0x94, 0xF8, 0x29, 0x00, 0xF4, 0xF8, 0x29, 0x00, + 0x70, 0xF9, 0x29, 0x00, 0x38, 0xFA, 0x29, 0x00, 0xC4, 0xFA, 0x29, 0x00, 0xA0, 0xFB, 0x29, 0x00, + 0x30, 0xFD, 0x29, 0x00, 0xF8, 0x00, 0x2A, 0x00, 0xDC, 0x02, 0x2A, 0x00, 0xA4, 0x04, 0x2A, 0x00, + 0x6C, 0x06, 0x2A, 0x00, 0x18, 0x08, 0x2A, 0x00, 0x70, 0x09, 0x2A, 0x00, 0xAC, 0x0A, 0x2A, 0x00, + 0x74, 0x0C, 0x2A, 0x00, 0x3C, 0x0E, 0x2A, 0x00, 0xD0, 0x0E, 0x2A, 0x00, 0xD4, 0x0F, 0x2A, 0x00, + 0x9C, 0x11, 0x2A, 0x00, 0xF4, 0x12, 0x2A, 0x00, 0x2C, 0x15, 0x2A, 0x00, 0xBC, 0x16, 0x2A, 0x00, + 0x84, 0x18, 0x2A, 0x00, 0x30, 0x1A, 0x2A, 0x00, 0x58, 0x1C, 0x2A, 0x00, 0x20, 0x1E, 0x2A, 0x00, + 0xCC, 0x1F, 0x2A, 0x00, 0x5C, 0x21, 0x2A, 0x00, 0x24, 0x23, 0x2A, 0x00, 0x08, 0x25, 0x2A, 0x00, + 0x78, 0x27, 0x2A, 0x00, 0x5C, 0x29, 0x2A, 0x00, 0x24, 0x2B, 0x2A, 0x00, 0x98, 0x2C, 0x2A, 0x00, + 0xD4, 0x2D, 0x2A, 0x00, 0x10, 0x2F, 0x2A, 0x00, 0x4C, 0x30, 0x2A, 0x00, 0xFC, 0x30, 0x2A, 0x00, + 0x34, 0x31, 0x2A, 0x00, 0x7C, 0x31, 0x2A, 0x00, 0x88, 0x32, 0x2A, 0x00, 0x18, 0x34, 0x2A, 0x00, + 0x24, 0x35, 0x2A, 0x00, 0x98, 0x36, 0x2A, 0x00, 0xA4, 0x37, 0x2A, 0x00, 0xBC, 0x38, 0x2A, 0x00, + 0x74, 0x3A, 0x2A, 0x00, 0x04, 0x3C, 0x2A, 0x00, 0xB0, 0x3C, 0x2A, 0x00, 0xB8, 0x3D, 0x2A, 0x00, + 0x64, 0x3F, 0x2A, 0x00, 0xF8, 0x3F, 0x2A, 0x00, 0xB8, 0x41, 0x2A, 0x00, 0xD8, 0x42, 0x2A, 0x00, + 0xE4, 0x43, 0x2A, 0x00, 0x58, 0x45, 0x2A, 0x00, 0xB4, 0x46, 0x2A, 0x00, 0x84, 0x47, 0x2A, 0x00, + 0x90, 0x48, 0x2A, 0x00, 0xB8, 0x49, 0x2A, 0x00, 0xC4, 0x4A, 0x2A, 0x00, 0xD0, 0x4B, 0x2A, 0x00, + 0x54, 0x4D, 0x2A, 0x00, 0x74, 0x4E, 0x2A, 0x00, 0xDC, 0x4F, 0x2A, 0x00, 0xC0, 0x50, 0x2A, 0x00, + 0x28, 0x52, 0x2A, 0x00, 0xDC, 0x52, 0x2A, 0x00, 0x44, 0x54, 0x2A, 0x00, 0xB0, 0x54, 0x2A, 0x00, + 0x88, 0x55, 0x2A, 0x00, 0x94, 0x55, 0x2A, 0x00, 0x9C, 0x55, 0x2A, 0x00, 0xA4, 0x55, 0x2A, 0x00, + 0xAC, 0x55, 0x2A, 0x00, 0xB4, 0x55, 0x2A, 0x00, 0xBC, 0x55, 0x2A, 0x00, 0xC4, 0x55, 0x2A, 0x00, + 0xCC, 0x55, 0x2A, 0x00, 0xD4, 0x55, 0x2A, 0x00, 0xDC, 0x55, 0x2A, 0x00, 0xE4, 0x55, 0x2A, 0x00, + 0xEC, 0x55, 0x2A, 0x00, 0xC0, 0x5A, 0x2A, 0x00, 0xC8, 0x5A, 0x2A, 0x00, 0xD0, 0x5A, 0x2A, 0x00, + 0xD8, 0x5A, 0x2A, 0x00, 0xE0, 0x5A, 0x2A, 0x00, 0xE8, 0x5A, 0x2A, 0x00, 0xF0, 0x5A, 0x2A, 0x00, + 0xF8, 0x5A, 0x2A, 0x00, 0x00, 0x5B, 0x2A, 0x00, 0x08, 0x5B, 0x2A, 0x00, 0x10, 0x5B, 0x2A, 0x00, + 0x18, 0x5B, 0x2A, 0x00, 0x20, 0x5B, 0x2A, 0x00, 0x28, 0x5B, 0x2A, 0x00, 0x30, 0x5B, 0x2A, 0x00, + 0x38, 0x5B, 0x2A, 0x00, 0x40, 0x5B, 0x2A, 0x00, 0x48, 0x5B, 0x2A, 0x00, 0x50, 0x5B, 0x2A, 0x00, + 0x58, 0x5B, 0x2A, 0x00, 0x60, 0x5B, 0x2A, 0x00, 0x68, 0x5B, 0x2A, 0x00, 0x70, 0x5B, 0x2A, 0x00, + 0x78, 0x5B, 0x2A, 0x00, 0x80, 0x5B, 0x2A, 0x00, 0x88, 0x5B, 0x2A, 0x00, 0x90, 0x5B, 0x2A, 0x00, + 0x98, 0x5B, 0x2A, 0x00, 0xA0, 0x5B, 0x2A, 0x00, 0xA8, 0x5B, 0x2A, 0x00, 0xB0, 0x5B, 0x2A, 0x00, + 0xB8, 0x5B, 0x2A, 0x00, 0xC0, 0x5B, 0x2A, 0x00, 0xC8, 0x5B, 0x2A, 0x00, 0xD0, 0x5B, 0x2A, 0x00, + 0xD8, 0x5B, 0x2A, 0x00, 0xE0, 0x5B, 0x2A, 0x00, 0xE8, 0x5B, 0x2A, 0x00, 0xF0, 0x5B, 0x2A, 0x00, + 0xF8, 0x5B, 0x2A, 0x00, 0x00, 0x5C, 0x2A, 0x00, 0x08, 0x5C, 0x2A, 0x00, 0x10, 0x5C, 0x2A, 0x00, + 0x18, 0x5C, 0x2A, 0x00, 0x20, 0x5C, 0x2A, 0x00, 0x28, 0x5C, 0x2A, 0x00, 0x30, 0x5C, 0x2A, 0x00, + 0x38, 0x5C, 0x2A, 0x00, 0x40, 0x5C, 0x2A, 0x00, 0x48, 0x5C, 0x2A, 0x00, 0x50, 0x5C, 0x2A, 0x00, + 0x58, 0x5C, 0x2A, 0x00, 0x60, 0x5C, 0x2A, 0x00, 0x68, 0x5C, 0x2A, 0x00, 0x70, 0x5C, 0x2A, 0x00, + 0x78, 0x5C, 0x2A, 0x00, 0x80, 0x5C, 0x2A, 0x00, 0x88, 0x5C, 0x2A, 0x00, 0x90, 0x5C, 0x2A, 0x00, + 0x98, 0x5C, 0x2A, 0x00, 0xA0, 0x5C, 0x2A, 0x00, 0xA8, 0x5C, 0x2A, 0x00, 0xB0, 0x5C, 0x2A, 0x00, + 0xB8, 0x5C, 0x2A, 0x00, 0xC0, 0x5C, 0x2A, 0x00, 0xC8, 0x5C, 0x2A, 0x00, 0xD0, 0x5C, 0x2A, 0x00, + 0xD8, 0x5C, 0x2A, 0x00, 0xE0, 0x5C, 0x2A, 0x00, 0xE8, 0x5C, 0x2A, 0x00, 0xF0, 0x5C, 0x2A, 0x00, + 0xF8, 0x5C, 0x2A, 0x00, 0x00, 0x5D, 0x2A, 0x00, 0x08, 0x5D, 0x2A, 0x00, 0x10, 0x5D, 0x2A, 0x00, + 0x18, 0x5D, 0x2A, 0x00, 0x20, 0x5D, 0x2A, 0x00, 0x28, 0x5D, 0x2A, 0x00, 0x30, 0x5D, 0x2A, 0x00, + 0x38, 0x5D, 0x2A, 0x00, 0x40, 0x5D, 0x2A, 0x00, 0x48, 0x5D, 0x2A, 0x00, 0x50, 0x5D, 0x2A, 0x00, + 0x58, 0x5D, 0x2A, 0x00, 0x60, 0x5D, 0x2A, 0x00, 0x6C, 0x5D, 0x2A, 0x00, 0x74, 0x5D, 0x2A, 0x00, + 0xD4, 0x5E, 0x2A, 0x00, 0xCC, 0x5F, 0x2A, 0x00, 0x08, 0x64, 0x2A, 0x00, 0x08, 0x69, 0x2A, 0x00, + 0x20, 0x71, 0x2A, 0x00, 0xE8, 0x75, 0x2A, 0x00, 0x5C, 0x76, 0x2A, 0x00, 0x30, 0x79, 0x2A, 0x00, + 0x04, 0x7C, 0x2A, 0x00, 0x78, 0x7D, 0x2A, 0x00, 0x64, 0x7F, 0x2A, 0x00, 0xE4, 0x7F, 0x2A, 0x00, + 0x50, 0x80, 0x2A, 0x00, 0x90, 0x80, 0x2A, 0x00, 0xCC, 0x83, 0x2A, 0x00, 0xE0, 0x87, 0x2A, 0x00, + 0x70, 0x8A, 0x2A, 0x00, 0x6C, 0x8E, 0x2A, 0x00, 0x80, 0x92, 0x2A, 0x00, 0xBC, 0x96, 0x2A, 0x00, + 0xB8, 0x9A, 0x2A, 0x00, 0xF8, 0x9E, 0x2A, 0x00, 0x34, 0xA2, 0x2A, 0x00, 0x48, 0xA6, 0x2A, 0x00, + 0x5C, 0xAA, 0x2A, 0x00, 0x2C, 0xAB, 0x2A, 0x00, 0x4C, 0xAC, 0x2A, 0x00, 0x44, 0xAE, 0x2A, 0x00, + 0x5C, 0xAF, 0x2A, 0x00, 0x54, 0xB1, 0x2A, 0x00, 0x24, 0xB5, 0x2A, 0x00, 0x24, 0xBE, 0x2A, 0x00, + 0xB8, 0xC2, 0x2A, 0x00, 0xF4, 0xC6, 0x2A, 0x00, 0x64, 0xCB, 0x2A, 0x00, 0x74, 0xCF, 0x2A, 0x00, + 0xB0, 0xD2, 0x2A, 0x00, 0xC0, 0xD5, 0x2A, 0x00, 0x30, 0xDA, 0x2A, 0x00, 0x6C, 0xDE, 0x2A, 0x00, + 0xF8, 0xDF, 0x2A, 0x00, 0x94, 0xE2, 0x2A, 0x00, 0xD0, 0xE6, 0x2A, 0x00, 0x0C, 0xEA, 0x2A, 0x00, + 0x4C, 0xEF, 0x2A, 0x00, 0x34, 0xF3, 0x2A, 0x00, 0xD0, 0xF7, 0x2A, 0x00, 0xE0, 0xFB, 0x2A, 0x00, + 0x4C, 0x01, 0x2B, 0x00, 0x88, 0x05, 0x2B, 0x00, 0x9C, 0x09, 0x2B, 0x00, 0x84, 0x0D, 0x2B, 0x00, + 0xD8, 0x11, 0x2B, 0x00, 0x40, 0x16, 0x2B, 0x00, 0x54, 0x1C, 0x2B, 0x00, 0xBC, 0x20, 0x2B, 0x00, + 0x24, 0x25, 0x2B, 0x00, 0xB4, 0x28, 0x2B, 0x00, 0x60, 0x2B, 0x2B, 0x00, 0x9C, 0x2E, 0x2B, 0x00, + 0x48, 0x31, 0x2B, 0x00, 0xDC, 0x32, 0x2B, 0x00, 0x58, 0x33, 0x2B, 0x00, 0xF0, 0x33, 0x2B, 0x00, + 0x84, 0x36, 0x2B, 0x00, 0x40, 0x3A, 0x2B, 0x00, 0xB4, 0x3C, 0x2B, 0x00, 0x44, 0x40, 0x2B, 0x00, + 0xB8, 0x42, 0x2B, 0x00, 0x60, 0x45, 0x2B, 0x00, 0x6C, 0x49, 0x2B, 0x00, 0xFC, 0x4C, 0x2B, 0x00, + 0x4C, 0x4E, 0x2B, 0x00, 0xAC, 0x50, 0x2B, 0x00, 0xBC, 0x54, 0x2B, 0x00, 0x1C, 0x56, 0x2B, 0x00, + 0x44, 0x5A, 0x2B, 0x00, 0xD8, 0x5C, 0x2B, 0x00, 0x4C, 0x5F, 0x2B, 0x00, 0xB4, 0x62, 0x2B, 0x00, + 0x1C, 0x66, 0x2B, 0x00, 0x14, 0x68, 0x2B, 0x00, 0x6C, 0x6A, 0x2B, 0x00, 0x1C, 0x6D, 0x2B, 0x00, + 0xB0, 0x6F, 0x2B, 0x00, 0x44, 0x72, 0x2B, 0x00, 0xF0, 0x75, 0x2B, 0x00, 0xA4, 0x78, 0x2B, 0x00, + 0x08, 0x7C, 0x2B, 0x00, 0x40, 0x7E, 0x2B, 0x00, 0x84, 0x81, 0x2B, 0x00, 0xF4, 0x82, 0x2B, 0x00, + 0x38, 0x86, 0x2B, 0x00, 0x28, 0x87, 0x2B, 0x00, 0x4C, 0x89, 0x2B, 0x00, 0x58, 0x89, 0x2B, 0x00, + 0x60, 0x89, 0x2B, 0x00, 0xB4, 0x89, 0x2B, 0x00, 0xFC, 0x89, 0x2B, 0x00, 0xE8, 0x8A, 0x2B, 0x00, + 0xF8, 0x8B, 0x2B, 0x00, 0xB8, 0x8D, 0x2B, 0x00, 0xA4, 0x8E, 0x2B, 0x00, 0xCC, 0x8E, 0x2B, 0x00, + 0x60, 0x8F, 0x2B, 0x00, 0x0C, 0x90, 0x2B, 0x00, 0x68, 0x90, 0x2B, 0x00, 0xE0, 0x90, 0x2B, 0x00, + 0x0C, 0x91, 0x2B, 0x00, 0x30, 0x91, 0x2B, 0x00, 0x44, 0x91, 0x2B, 0x00, 0xF8, 0x91, 0x2B, 0x00, + 0xD4, 0x92, 0x2B, 0x00, 0x64, 0x93, 0x2B, 0x00, 0x40, 0x94, 0x2B, 0x00, 0x2C, 0x95, 0x2B, 0x00, + 0x18, 0x96, 0x2B, 0x00, 0xF4, 0x96, 0x2B, 0x00, 0xD0, 0x97, 0x2B, 0x00, 0x98, 0x98, 0x2B, 0x00, + 0x84, 0x99, 0x2B, 0x00, 0x60, 0x9A, 0x2B, 0x00, 0x98, 0x9A, 0x2B, 0x00, 0xE0, 0x9A, 0x2B, 0x00, + 0x58, 0x9B, 0x2B, 0x00, 0xA0, 0x9B, 0x2B, 0x00, 0x18, 0x9C, 0x2B, 0x00, 0xE0, 0x9C, 0x2B, 0x00, + 0xCC, 0x9E, 0x2B, 0x00, 0xCC, 0x9F, 0x2B, 0x00, 0xB8, 0xA0, 0x2B, 0x00, 0x94, 0xA1, 0x2B, 0x00, + 0x80, 0xA2, 0x2B, 0x00, 0x34, 0xA3, 0x2B, 0x00, 0xE8, 0xA3, 0x2B, 0x00, 0xD4, 0xA4, 0x2B, 0x00, + 0xC0, 0xA5, 0x2B, 0x00, 0x28, 0xA6, 0x2B, 0x00, 0xB8, 0xA6, 0x2B, 0x00, 0xA4, 0xA7, 0x2B, 0x00, + 0x58, 0xA8, 0x2B, 0x00, 0x6C, 0xA9, 0x2B, 0x00, 0x48, 0xAA, 0x2B, 0x00, 0x34, 0xAB, 0x2B, 0x00, + 0x20, 0xAC, 0x2B, 0x00, 0x3C, 0xAD, 0x2B, 0x00, 0x28, 0xAE, 0x2B, 0x00, 0x14, 0xAF, 0x2B, 0x00, + 0xF0, 0xAF, 0x2B, 0x00, 0xDC, 0xB0, 0x2B, 0x00, 0xC8, 0xB1, 0x2B, 0x00, 0x14, 0xB3, 0x2B, 0x00, + 0x00, 0xB4, 0x2B, 0x00, 0xEC, 0xB4, 0x2B, 0x00, 0xB4, 0xB5, 0x2B, 0x00, 0x60, 0xB6, 0x2B, 0x00, + 0x14, 0xB7, 0x2B, 0x00, 0xC0, 0xB7, 0x2B, 0x00, 0x2C, 0xB8, 0x2B, 0x00, 0x50, 0xB8, 0x2B, 0x00, + 0x78, 0xB8, 0x2B, 0x00, 0x0C, 0xB9, 0x2B, 0x00, 0xD4, 0xB9, 0x2B, 0x00, 0x5C, 0xBA, 0x2B, 0x00, + 0x24, 0xBB, 0x2B, 0x00, 0xAC, 0xBB, 0x2B, 0x00, 0x4C, 0xBC, 0x2B, 0x00, 0x38, 0xBD, 0x2B, 0x00, + 0x00, 0xBE, 0x2B, 0x00, 0x54, 0xBE, 0x2B, 0x00, 0xE8, 0xBE, 0x2B, 0x00, 0xC4, 0xBF, 0x2B, 0x00, + 0x18, 0xC0, 0x2B, 0x00, 0x00, 0xC1, 0x2B, 0x00, 0x94, 0xC1, 0x2B, 0x00, 0x1C, 0xC2, 0x2B, 0x00, + 0xD8, 0xC2, 0x2B, 0x00, 0x94, 0xC3, 0x2B, 0x00, 0x08, 0xC4, 0x2B, 0x00, 0x90, 0xC4, 0x2B, 0x00, + 0x28, 0xC5, 0x2B, 0x00, 0xBC, 0xC5, 0x2B, 0x00, 0x50, 0xC6, 0x2B, 0x00, 0x1C, 0xC7, 0x2B, 0x00, + 0xB0, 0xC7, 0x2B, 0x00, 0x6C, 0xC8, 0x2B, 0x00, 0xF4, 0xC8, 0x2B, 0x00, 0xA0, 0xC9, 0x2B, 0x00, + 0x04, 0xCA, 0x2B, 0x00, 0xB0, 0xCA, 0x2B, 0x00, 0xF0, 0xCA, 0x2B, 0x00, 0x78, 0xCB, 0x2B, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x80, 0xCB, 0x2B, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xC0, 0xCB, 0x2B, 0x00, + 0x01, 0x00, 0x71, 0x03, 0x00, 0x00, 0x00, 0x48, 0x26, 0x2C, 0x08, 0x00, 0x93, 0xE8, 0xCB, 0x2B, + 0x00, 0x02, 0x00, 0x00, 0x00, 0xF4, 0x28, 0x00, 0x17, 0xFC, 0x28, 0x00, 0x04, 0x01, 0x00, 0x6A, + 0x07, 0x00, 0x00, 0x00, 0x24, 0xCC, 0x40, 0x00, 0x2E, 0x40, 0xCC, 0x28, 0x00, 0x00, 0x18, 0x00, + 0x17, 0x4C, 0x18, 0x00, 0x5F, 0x0F, 0x00, 0x00, 0x00, 0x58, 0x28, 0x00, 0x00, 0x57, 0x10, 0x00, + 0x00, 0x00, 0x94, 0x18, 0x00, 0x5F, 0x72, 0x00, 0x00, 0x00, 0xD4, 0x28, 0x00, 0x00, 0x66, 0x6F, + 0x00, 0x00, 0x00, 0x9C, 0xCE, 0x18, 0x00, 0x10, 0x15, 0x50, 0x00, 0x29, 0xD0, 0x2B, 0x98, 0x00, + 0xF7, 0x0A, 0x4C, 0x26, 0x2C, 0x00, 0x0B, 0x00, 0x00, 0x00, 0xAC, 0xD0, 0x2B, 0x00, 0x06, 0x00, + 0x00, 0x00, 0xD8, 0xD0, 0x2B, 0x00, 0x05, 0x00, 0x00, 0x00, 0xF0, 0x28, 0x00, 0x7D, 0x01, 0x00, + 0x00, 0x00, 0x54, 0x26, 0x2C, 0x60, 0x00, 0x00, 0xF0, 0x00, 0x26, 0x04, 0xD1, 0x28, 0x00, 0x00, + 0x40, 0x00, 0xB1, 0x58, 0x26, 0x2C, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2C, 0xD1, 0x2B, 0x08, 0x00, + 0x31, 0x3C, 0xD1, 0x2B, 0xC8, 0x00, 0x13, 0x4C, 0x10, 0x00, 0xF1, 0x04, 0x88, 0xD1, 0x2B, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x60, 0x26, 0x2C, 0x00, 0x12, 0x00, 0x00, 0x00, 0x98, 0xD1, 0x2B, 0xF8, + 0x00, 0x22, 0xE0, 0xD1, 0x48, 0x01, 0x2E, 0xEC, 0xD1, 0xC8, 0x00, 0x00, 0x80, 0x00, 0x2A, 0xF4, + 0xD1, 0x18, 0x01, 0x04, 0x01, 0x00, 0x5B, 0x54, 0x00, 0x49, 0x00, 0x01, 0x6C, 0x01, 0x00, 0x01, + 0x00, 0x13, 0x08, 0x08, 0x00, 0x9B, 0x1C, 0x01, 0xB1, 0x00, 0x40, 0x00, 0x40, 0x00, 0x10, 0x50, + 0x00, 0x04, 0x20, 0x00, 0x13, 0x7A, 0x20, 0x00, 0x1F, 0x11, 0x20, 0x00, 0x04, 0x13, 0xD7, 0x20, + 0x00, 0x1B, 0x12, 0x20, 0x00, 0x40, 0x06, 0x00, 0xFF, 0xFF, 0x0C, 0x00, 0xBF, 0xB0, 0x00, 0x2C, + 0x00, 0xC4, 0x01, 0x48, 0x00, 0x13, 0x00, 0x00, 0x20, 0x01, 0x00, 0xFD, 0x00, 0xFE, 0xFF, 0x00, + 0x00, 0xFF, 0xFF, 0x90, 0x00, 0x32, 0x01, 0xB4, 0x00, 0x50, 0x00, 0x14, 0x22, 0x00, 0xCF, 0x15, + 0x00, 0x0A, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0xFE, 0xFF, 0xE3, 0x01, 0x24, 0x00, 0x07, 0x13, 0x04, + 0x6C, 0x00, 0x00, 0x0E, 0x00, 0x5B, 0x20, 0x03, 0xE0, 0x01, 0x16, 0x34, 0x02, 0x20, 0xF8, 0xD1, + 0xB4, 0x01, 0x04, 0x24, 0x00, 0x7B, 0xBA, 0x00, 0x20, 0x03, 0x28, 0x00, 0x01, 0x46, 0x00, 0x11, + 0x06, 0x8C, 0x00, 0x9F, 0x01, 0x00, 0xFA, 0x00, 0x18, 0x01, 0x8C, 0x00, 0x28, 0x68, 0x00, 0x00, + 0x00, 0x24, 0x00, 0x00, 0x8C, 0x00, 0x4F, 0x02, 0x00, 0x9A, 0x01, 0x24, 0x00, 0x07, 0x17, 0x05, + 0x8C, 0x00, 0x5F, 0xD2, 0x00, 0x10, 0x01, 0x19, 0x68, 0x00, 0x02, 0x9F, 0x07, 0x00, 0xD2, 0x00, + 0x03, 0x00, 0x41, 0x00, 0x41, 0x68, 0x00, 0x08, 0x4F, 0x07, 0x00, 0x15, 0x01, 0x24, 0x00, 0x09, + 0x11, 0xFC, 0x24, 0x00, 0x1F, 0x58, 0x24, 0x00, 0x0A, 0x13, 0xFB, 0x6C, 0x00, 0x1F, 0x46, 0x24, + 0x00, 0x08, 0x13, 0xFA, 0x6C, 0x00, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xF9, 0x6C, 0x00, 0x0F, 0x24, + 0x00, 0x09, 0x13, 0xF8, 0x6C, 0x00, 0x1F, 0x89, 0x24, 0x00, 0x08, 0x13, 0xF7, 0x6C, 0x00, 0x0F, + 0x24, 0x00, 0x09, 0x13, 0xF6, 0x6C, 0x00, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xF5, 0x6C, 0x00, 0x3F, + 0xCC, 0x00, 0x84, 0x24, 0x00, 0x04, 0x33, 0x0A, 0x00, 0xF4, 0x48, 0x00, 0x1F, 0xCC, 0x48, 0x00, + 0x02, 0x80, 0xF3, 0xFF, 0x1A, 0x00, 0x06, 0x00, 0xF2, 0xFF, 0xCA, 0x02, 0x13, 0x9B, 0x44, 0x01, + 0x1F, 0x1B, 0x6C, 0x00, 0x02, 0x20, 0xF1, 0xFF, 0x52, 0x03, 0x3F, 0x9B, 0x01, 0x46, 0x24, 0x00, + 0x08, 0x71, 0xF0, 0xFF, 0x00, 0x00, 0x0E, 0x00, 0x9B, 0xB4, 0x00, 0x3F, 0x84, 0x00, 0x1B, 0x18, + 0x02, 0x0C, 0x5F, 0xE0, 0x01, 0x28, 0x00, 0x1C, 0xC4, 0x03, 0x00, 0x02, 0x08, 0x00, 0x7B, 0x2A, + 0x00, 0xDF, 0x01, 0xE6, 0x00, 0x01, 0xD0, 0x04, 0x28, 0x04, 0xD2, 0x48, 0x04, 0x00, 0x4C, 0x00, + 0x02, 0x50, 0x00, 0x5F, 0x78, 0x00, 0x30, 0x00, 0x20, 0x70, 0x00, 0x00, 0x11, 0x07, 0x68, 0x02, + 0xB1, 0x00, 0x00, 0x5E, 0x00, 0x43, 0x00, 0x90, 0x01, 0x23, 0x00, 0x21, 0x84, 0x00, 0x5B, 0x00, + 0x00, 0x44, 0xD2, 0x2B, 0x68, 0x02, 0x3F, 0xFE, 0xFF, 0x78, 0x48, 0x00, 0x0A, 0x13, 0xFC, 0x48, + 0x00, 0x55, 0x66, 0x00, 0x90, 0x01, 0x20, 0x48, 0x00, 0x3B, 0x58, 0xD2, 0x2B, 0x68, 0x02, 0x3F, + 0xFD, 0xFF, 0xF0, 0x48, 0x00, 0x0A, 0x13, 0xFA, 0x48, 0x00, 0x19, 0x86, 0x48, 0x00, 0x3B, 0x6C, + 0xD2, 0x2B, 0x68, 0x02, 0x4F, 0xFC, 0xFF, 0x68, 0x01, 0x48, 0x00, 0x09, 0x13, 0xF8, 0x48, 0x00, + 0x19, 0xA6, 0x48, 0x00, 0x3B, 0x80, 0xD2, 0x2B, 0x68, 0x02, 0x3F, 0xFB, 0xFF, 0xE0, 0x48, 0x00, + 0x0A, 0x13, 0xF6, 0x48, 0x00, 0x19, 0xC6, 0x48, 0x00, 0x3D, 0x94, 0xD2, 0x2B, 0x94, 0x01, 0x93, + 0x00, 0x00, 0x30, 0x00, 0x78, 0x00, 0x04, 0x00, 0x22, 0x24, 0x00, 0x2E, 0xA8, 0xD2, 0x84, 0x05, + 0x04, 0x74, 0x05, 0x7F, 0x04, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x14, 0x74, 0x05, 0x0A, 0xB1, 0x3A, + 0x00, 0xF8, 0x00, 0xB4, 0x01, 0x14, 0x00, 0x23, 0x00, 0x00, 0xD4, 0x05, 0x31, 0xBC, 0xD2, 0x2B, + 0x30, 0x00, 0x11, 0x0A, 0xD8, 0x02, 0x9F, 0xFA, 0xFF, 0xFE, 0x01, 0xE6, 0x00, 0x5A, 0x00, 0x2A, + 0xEC, 0x04, 0x02, 0x17, 0x08, 0x0E, 0x00, 0x53, 0x08, 0x00, 0x14, 0x00, 0x24, 0xE4, 0x04, 0x39, + 0xC4, 0xD2, 0x2B, 0x98, 0x05, 0x1B, 0x0B, 0x20, 0x00, 0x1B, 0xD0, 0x20, 0x00, 0x1B, 0x16, 0x20, + 0x00, 0x15, 0xDC, 0x84, 0x00, 0x02, 0x5C, 0x02, 0x4F, 0x28, 0x00, 0x2A, 0x00, 0x94, 0x05, 0x07, + 0x11, 0xFE, 0x38, 0x02, 0x4F, 0x36, 0x01, 0x2A, 0x00, 0xB8, 0x05, 0x0B, 0x4F, 0xFD, 0xFF, 0x43, + 0x02, 0x24, 0x00, 0x09, 0x11, 0xFC, 0xF0, 0x01, 0x7F, 0x9D, 0x02, 0x9B, 0x01, 0x7A, 0x00, 0x3D, + 0x24, 0x00, 0x02, 0x13, 0x19, 0xE8, 0x02, 0x00, 0x3C, 0x01, 0x48, 0x7F, 0x00, 0xE0, 0x01, 0x58, + 0x01, 0x95, 0xFE, 0xFF, 0xFD, 0xFF, 0xFC, 0xFF, 0x25, 0x00, 0x26, 0x84, 0x02, 0xBF, 0x00, 0x00, + 0x87, 0x00, 0xC4, 0x00, 0x67, 0x00, 0x58, 0x00, 0x27, 0xF4, 0x01, 0x00, 0x13, 0x19, 0x84, 0x02, + 0x5B, 0xF2, 0x00, 0x00, 0x00, 0x82, 0x4C, 0x00, 0x51, 0xF9, 0xFF, 0xF8, 0xFF, 0xF7, 0x4C, 0x00, + 0x13, 0x01, 0x84, 0x04, 0x7F, 0x00, 0x00, 0x74, 0x01, 0xC4, 0x00, 0x66, 0x4C, 0x00, 0x06, 0x11, + 0xF5, 0x24, 0x00, 0x2E, 0xD9, 0x01, 0x98, 0x00, 0x51, 0xF4, 0xFF, 0xF3, 0xFF, 0xF2, 0x4C, 0x00, + 0x13, 0x02, 0x40, 0x04, 0x7E, 0x00, 0x00, 0x58, 0x02, 0xC4, 0x00, 0x5C, 0x4C, 0x00, 0x07, 0x40, + 0x04, 0xBF, 0xFF, 0xFF, 0xAD, 0x02, 0x05, 0x00, 0x6C, 0x00, 0x73, 0x00, 0x28, 0x24, 0x00, 0x02, + 0x11, 0xEF, 0x74, 0x01, 0x31, 0xAD, 0x02, 0x7C, 0x24, 0x00, 0x0F, 0x88, 0x04, 0x03, 0x11, 0xEE, + 0x74, 0x01, 0x7F, 0xAD, 0x02, 0xF2, 0x00, 0x6C, 0x00, 0xE9, 0x24, 0x00, 0x02, 0x17, 0x09, 0x0C, + 0x00, 0x5B, 0xE8, 0x03, 0xA8, 0x02, 0x29, 0x84, 0x04, 0x13, 0x13, 0x70, 0x01, 0x31, 0x64, 0x00, + 0x64, 0x4C, 0x07, 0x08, 0x20, 0x00, 0x17, 0x20, 0xC8, 0x02, 0x2B, 0x14, 0x14, 0xAE, 0x01, 0x10, + 0x03, 0x01, 0x00, 0x11, 0x06, 0x01, 0x00, 0x03, 0x11, 0x00, 0x45, 0x06, 0x06, 0x06, 0x0A, 0x01, + 0x00, 0x03, 0x12, 0x00, 0x63, 0x0A, 0x10, 0x10, 0x10, 0x10, 0x17, 0x01, 0x00, 0x01, 0x13, 0x00, + 0x83, 0x0A, 0x10, 0x17, 0x1B, 0x1E, 0x21, 0x21, 0x28, 0x01, 0x00, 0x02, 0x13, 0x00, 0x0C, 0xBA, + 0x00, 0x00, 0x13, 0x00, 0x0B, 0x16, 0x01, 0x10, 0x03, 0x13, 0x00, 0x1C, 0x39, 0x27, 0x00, 0x4B, + 0x17, 0x21, 0x36, 0x4E, 0x14, 0x00, 0x5A, 0x10, 0x1B, 0x2C, 0x44, 0x5F, 0x3B, 0x00, 0x6C, 0x06, + 0x10, 0x1E, 0x32, 0x4E, 0x70, 0x4F, 0x00, 0x4C, 0x21, 0x39, 0x58, 0x7A, 0x76, 0x00, 0x4C, 0x21, + 0x3D, 0x5F, 0x84, 0x63, 0x00, 0x4D, 0x28, 0x40, 0x5F, 0x8B, 0x14, 0x00, 0x2F, 0x44, 0x66, 0x14, + 0x00, 0x15, 0x1F, 0x8E, 0x14, 0x00, 0x4A, 0x04, 0x98, 0x01, 0x1F, 0x06, 0x01, 0x00, 0x00, 0x1F, + 0x0A, 0x01, 0x00, 0x00, 0x1F, 0x17, 0x01, 0x00, 0x00, 0x1F, 0x28, 0x01, 0x00, 0x00, 0x1F, 0x00, + 0x01, 0x00, 0xFF, 0x2D, 0x0A, 0x98, 0x01, 0x01, 0x2D, 0x03, 0x06, 0xAC, 0x08, 0x05, 0x01, 0x00, + 0x00, 0x1B, 0x00, 0x02, 0x14, 0x00, 0x04, 0x8C, 0x01, 0x00, 0x30, 0x03, 0x13, 0x0A, 0x16, 0x00, + 0x04, 0x8C, 0x01, 0x9C, 0x21, 0x21, 0x1E, 0x1B, 0x17, 0x10, 0x0A, 0x06, 0x03, 0x65, 0x00, 0x1F, + 0x1B, 0x15, 0x00, 0x00, 0x10, 0x28, 0x15, 0x00, 0x0B, 0x14, 0x00, 0x10, 0x39, 0x15, 0x00, 0x0B, + 0x29, 0x00, 0x4C, 0x4E, 0x36, 0x21, 0x17, 0x29, 0x00, 0x5B, 0x5F, 0x44, 0x2C, 0x1B, 0x10, 0x14, + 0x00, 0x5B, 0x70, 0x4E, 0x32, 0x1E, 0x10, 0x66, 0x00, 0x4C, 0x7A, 0x58, 0x39, 0x21, 0x51, 0x00, + 0x4C, 0x84, 0x5F, 0x3D, 0x21, 0x7A, 0x00, 0x4C, 0x8B, 0x5F, 0x40, 0x28, 0x65, 0x00, 0x3F, 0x8B, + 0x66, 0x44, 0x14, 0x00, 0x12, 0x1F, 0x8E, 0x14, 0x00, 0x43, 0x05, 0x98, 0x01, 0x0E, 0x9C, 0x03, + 0x0F, 0x14, 0x00, 0xFF, 0x6B, 0x0D, 0x60, 0x06, 0x0E, 0x04, 0x02, 0x0F, 0x14, 0x00, 0xFF, 0x63, + 0x0F, 0x30, 0x03, 0x5F, 0x0F, 0x58, 0x07, 0x13, 0x0E, 0x94, 0x07, 0x01, 0xBC, 0x07, 0x1F, 0xF8, + 0xE4, 0x07, 0x00, 0x2E, 0xC5, 0xFB, 0x0C, 0x08, 0x81, 0x8E, 0xB0, 0xC8, 0xDD, 0xEA, 0xF4, 0xF4, + 0xFB, 0x01, 0x00, 0x03, 0x34, 0x08, 0x81, 0x7A, 0x99, 0xAD, 0xBE, 0xCC, 0xD2, 0xD6, 0xDD, 0x01, + 0x00, 0x03, 0x5C, 0x08, 0x72, 0x66, 0x7A, 0x8E, 0x9F, 0xAA, 0xB0, 0xB4, 0x01, 0x00, 0x03, 0x84, + 0x08, 0xD3, 0x4E, 0x5F, 0x70, 0x7A, 0x84, 0x88, 0x8B, 0x8B, 0x8B, 0x8E, 0x8E, 0x8E, 0x8E, 0xAC, + 0x08, 0x72, 0x36, 0x44, 0x4E, 0x58, 0x5F, 0x5F, 0x66, 0x01, 0x00, 0x03, 0xD4, 0x08, 0x72, 0x21, + 0x2C, 0x32, 0x39, 0x3D, 0x40, 0x44, 0x01, 0x00, 0x0F, 0xFC, 0x08, 0x03, 0x0C, 0x24, 0x09, 0x2D, + 0x1B, 0x1B, 0x4C, 0x09, 0x3C, 0x0D, 0x0D, 0x0D, 0x74, 0x09, 0x00, 0x17, 0x00, 0x0E, 0x30, 0x03, + 0x0F, 0x30, 0x07, 0xAB, 0x1F, 0xFB, 0x01, 0x00, 0x00, 0x1F, 0xDD, 0x01, 0x00, 0x00, 0x1F, 0xB4, + 0x01, 0x00, 0x00, 0x1F, 0x8E, 0x01, 0x00, 0x00, 0x1F, 0x66, 0x01, 0x00, 0x00, 0x1F, 0x44, 0x01, + 0x00, 0x00, 0x0F, 0xFC, 0x08, 0x01, 0x1F, 0x1B, 0x01, 0x00, 0x00, 0x1F, 0x0D, 0x01, 0x00, 0x00, + 0x0F, 0x60, 0x09, 0x01, 0x0F, 0xC8, 0x04, 0x66, 0x0F, 0x58, 0x07, 0x15, 0x0F, 0x94, 0x07, 0x00, + 0x1E, 0xF8, 0xBC, 0x07, 0x23, 0xFB, 0xC5, 0xE4, 0x07, 0x02, 0x8A, 0x01, 0x73, 0xF4, 0xF4, 0xEA, + 0xDD, 0xC8, 0xB0, 0x8E, 0x0C, 0x08, 0x02, 0x8A, 0x01, 0x73, 0xD6, 0xD2, 0xCC, 0xBE, 0xAD, 0x99, + 0x7A, 0x34, 0x08, 0x03, 0x8B, 0x01, 0x63, 0xB0, 0xAA, 0x9F, 0x8E, 0x7A, 0x66, 0x5C, 0x08, 0x00, + 0x88, 0x01, 0x93, 0x8B, 0x8B, 0x8B, 0x88, 0x84, 0x7A, 0x70, 0x5F, 0x4E, 0x84, 0x08, 0x03, 0x8B, + 0x01, 0x63, 0x5F, 0x5F, 0x58, 0x4E, 0x44, 0x36, 0xAC, 0x08, 0x03, 0x8B, 0x01, 0x63, 0x40, 0x3D, + 0x39, 0x32, 0x2C, 0x21, 0xD4, 0x08, 0x0F, 0xFC, 0x08, 0x01, 0x1F, 0x1B, 0x24, 0x09, 0x00, 0x2E, + 0x0D, 0x0D, 0x4C, 0x09, 0x03, 0x0D, 0x00, 0x09, 0x74, 0x09, 0x17, 0x20, 0x20, 0x14, 0x3A, 0x21, + 0x21, 0x18, 0xA0, 0x01, 0x3D, 0x4F, 0xE7, 0xFF, 0x01, 0x00, 0x35, 0xFE, 0xDD, 0x64, 0x20, 0x00, + 0x3F, 0x52, 0xF9, 0xFF, 0x01, 0x00, 0x01, 0x23, 0xFE, 0x66, 0x20, 0x00, 0x1F, 0x50, 0x20, 0x00, + 0x03, 0x33, 0xFF, 0xFF, 0xDB, 0x60, 0x00, 0x6C, 0xF8, 0xFF, 0xFF, 0xFE, 0x99, 0x6D, 0x01, 0x00, + 0x41, 0xA8, 0xFF, 0xFF, 0xFD, 0x20, 0x00, 0x7D, 0x4D, 0xF7, 0xFF, 0xFF, 0xFF, 0x84, 0x01, 0x38, + 0x02, 0x22, 0x67, 0xFF, 0x9D, 0x0D, 0x10, 0x4C, 0x20, 0x00, 0x3F, 0x86, 0x01, 0x00, 0x21, 0x00, + 0x05, 0x10, 0x4B, 0x20, 0x00, 0x12, 0x87, 0x13, 0x00, 0x12, 0x10, 0x9A, 0x10, 0x27, 0x16, 0x09, + 0x21, 0x00, 0x62, 0x49, 0xF6, 0xFF, 0xFF, 0xFF, 0x8A, 0x40, 0x00, 0xB5, 0x49, 0xF4, 0xF2, 0x55, + 0x00, 0x00, 0x01, 0x83, 0xFB, 0xE3, 0x21, 0x21, 0x00, 0x63, 0x48, 0xF5, 0xFF, 0xFF, 0xFF, 0x8B, + 0x60, 0x00, 0xB4, 0xA8, 0xFF, 0xFF, 0xF9, 0x56, 0x01, 0x87, 0xFE, 0xFF, 0xFF, 0x70, 0x21, 0x00, + 0x10, 0x31, 0x20, 0x00, 0x23, 0x8D, 0x02, 0x75, 0x00, 0xB4, 0x63, 0xFE, 0xFF, 0xFF, 0xF9, 0xAD, + 0xFE, 0xFF, 0xFF, 0xF7, 0x32, 0x21, 0x00, 0x65, 0xB0, 0xFF, 0xFF, 0xFF, 0x8F, 0x02, 0x58, 0x0E, + 0x12, 0x7E, 0xFE, 0x00, 0x25, 0xF8, 0x4E, 0x84, 0x00, 0x57, 0xEB, 0xFF, 0xFF, 0xA5, 0x02, 0xB9, + 0x00, 0x11, 0x80, 0x20, 0x00, 0x16, 0x50, 0xC6, 0x00, 0x4F, 0xEC, 0xFF, 0xFF, 0xA3, 0x21, 0x00, + 0x0A, 0x1F, 0xAF, 0x63, 0x00, 0x0D, 0x19, 0x2F, 0xA5, 0x00, 0x15, 0x60, 0xA5, 0x00, 0x1F, 0x2F, + 0xE7, 0x00, 0x03, 0x15, 0xA9, 0xE7, 0x00, 0x1F, 0x71, 0x29, 0x01, 0x03, 0x22, 0x4A, 0xF3, 0x29, + 0x01, 0x3F, 0xFA, 0xE2, 0x23, 0x6B, 0x01, 0x04, 0x12, 0x0E, 0x9A, 0x05, 0x2F, 0x14, 0x07, 0xAD, + 0x01, 0x1A, 0x0F, 0xEF, 0x01, 0x0B, 0x0F, 0x31, 0x02, 0x13, 0x0F, 0x73, 0x02, 0x08, 0x1F, 0xDA, + 0xB5, 0x02, 0x0D, 0x16, 0x63, 0xF7, 0x02, 0x1F, 0xE5, 0x1F, 0x00, 0x00, 0x6F, 0xE2, 0x69, 0x00, + 0x22, 0x22, 0x18, 0xB2, 0x05, 0x10, 0x4F, 0x4E, 0xE3, 0xE2, 0x47, 0x21, 0x00, 0x0A, 0x5F, 0x55, + 0xFB, 0xFF, 0xFF, 0xE0, 0x21, 0x00, 0x0D, 0x2F, 0xFF, 0xE4, 0x21, 0x00, 0x0D, 0x2F, 0xFB, 0x4F, + 0x21, 0x00, 0x0D, 0x1F, 0x55, 0x21, 0x00, 0x98, 0x4F, 0x48, 0xE3, 0xE2, 0x4E, 0x42, 0x00, 0x0B, + 0x1E, 0xE2, 0x4E, 0x00, 0x0B, 0x63, 0x00, 0x1D, 0xE5, 0x71, 0x00, 0x0C, 0x84, 0x00, 0x1C, 0x4F, + 0x94, 0x00, 0x0E, 0xA5, 0x00, 0x0B, 0x33, 0x00, 0x0E, 0xC6, 0x00, 0x0B, 0x77, 0x00, 0x0E, 0xE7, + 0x00, 0x0B, 0xBB, 0x00, 0x0E, 0x08, 0x01, 0x0B, 0xFF, 0x00, 0x0F, 0x29, 0x01, 0x07, 0x03, 0x1A, + 0x00, 0x0F, 0x4A, 0x01, 0x09, 0x02, 0x1C, 0x00, 0x0F, 0x6B, 0x01, 0x0A, 0x01, 0x23, 0x00, 0x0F, + 0x8C, 0x01, 0x0B, 0x2F, 0x55, 0xFB, 0x21, 0x00, 0x0C, 0x02, 0x23, 0x00, 0x2F, 0xFB, 0x55, 0xFA, + 0x02, 0x0B, 0x3F, 0xE0, 0xDF, 0x4E, 0x18, 0x00, 0x01, 0x22, 0x18, 0x18, 0x38, 0x03, 0x4C, 0x69, + 0xF0, 0xBD, 0x17, 0x1C, 0x00, 0x8B, 0x17, 0xBE, 0xF0, 0x68, 0xEE, 0xFF, 0xFF, 0xD1, 0x19, 0x00, + 0x7C, 0x18, 0xD2, 0xFF, 0xFF, 0xEE, 0xBF, 0xFF, 0x19, 0x00, 0xDB, 0x17, 0xD2, 0xFF, 0xFF, 0xFF, + 0xBF, 0x17, 0xD1, 0xFF, 0xFF, 0xFF, 0xD2, 0x16, 0x17, 0x00, 0x59, 0xD2, 0x17, 0x00, 0x17, 0xD1, + 0x32, 0x00, 0x02, 0x17, 0x00, 0x14, 0x18, 0x0A, 0x00, 0x2A, 0xD1, 0x16, 0x2E, 0x00, 0x01, 0x0F, + 0x06, 0x15, 0xD1, 0x0C, 0x00, 0x08, 0x17, 0x00, 0x16, 0x00, 0x4B, 0x00, 0x19, 0x18, 0x17, 0x00, + 0x31, 0x00, 0x00, 0x16, 0x4B, 0x00, 0x2B, 0x17, 0x17, 0x17, 0x00, 0x03, 0x32, 0x00, 0x1D, 0xD2, + 0x17, 0x00, 0x03, 0x19, 0x00, 0x04, 0x8A, 0x00, 0x0D, 0xCE, 0x00, 0x0C, 0x2E, 0x00, 0x0F, 0x18, + 0x00, 0x07, 0x01, 0x8A, 0x00, 0x0D, 0x13, 0x01, 0x02, 0x2E, 0x00, 0x2C, 0xD2, 0xD2, 0x19, 0x00, + 0x03, 0xA1, 0x00, 0x0C, 0x2C, 0x01, 0x05, 0x14, 0x01, 0x0A, 0x2C, 0x01, 0x07, 0x14, 0x01, 0x08, + 0x2C, 0x01, 0x09, 0x14, 0x01, 0x06, 0x2C, 0x01, 0x0B, 0x14, 0x01, 0x04, 0x4B, 0x00, 0x0D, 0x14, + 0x01, 0x03, 0x2C, 0x01, 0x1D, 0xBD, 0xCE, 0x00, 0x01, 0x32, 0x00, 0x2E, 0xBC, 0xF0, 0x14, 0x01, + 0x00, 0x19, 0x00, 0x4E, 0xF0, 0x6A, 0xED, 0xBB, 0x14, 0x01, 0x34, 0xBB, 0xEC, 0x69, 0xAC, 0x08, + 0x11, 0x60, 0x60, 0x18, 0x02, 0x01, 0x00, 0x31, 0x04, 0x04, 0x0E, 0x08, 0x00, 0xF0, 0x2D, 0x28, 0xFC, 0xFC, 0x17, 0x18, 0xFF, 0xFF, 0x05, 0x08, 0xFF, 0xF2, 0x00, 0x00, 0xF8, 0xDF, 0x00, 0x00, 0xE7, 0xCD, 0x00, 0x00, 0xD7, 0xBA, 0x00, 0x00, 0xC7, 0xA8, 0x00, 0x00, 0xB6, 0x95, 0x00, 0x00, 0xA6, 0x82, 0x00, 0x00, 0x95, 0x70, 0x00, 0x00, 0x85, 0x5D, 0x00, 0x00, 0x02, 0x02, 0x00, 0x23, - 0x9C, 0x9C, 0x05, 0x38, 0xFF, 0xFF, 0x08, 0x06, 0x05, 0x06, 0x01, 0x1C, 0x0D, 0xF0, 0x0D, 0xF5, + 0x9C, 0x9C, 0x05, 0x38, 0xFF, 0xFF, 0x08, 0x06, 0x05, 0x06, 0x01, 0xC8, 0x15, 0xF3, 0x14, 0xF5, 0xF1, 0x22, 0xFC, 0xCB, 0xF8, 0xCA, 0x20, 0xFF, 0xA1, 0xF8, 0x9E, 0x20, 0xFF, 0x75, 0xF8, 0x72, - 0x20, 0xFF, 0x48, 0xF8, 0x46, 0x20, 0xFF, 0x1B, 0x04, 0x01, 0x01, 0x3C, 0x16, 0x33, 0x09, 0x09, - 0x0E, 0x72, 0x00, 0xF2, 0x39, 0x6C, 0xFC, 0x7D, 0x1E, 0xFC, 0xC8, 0x00, 0x00, 0x00, 0x8F, 0xFF, - 0x5C, 0x41, 0xFF, 0xA8, 0x00, 0x00, 0x00, 0xB1, 0xFF, 0x39, 0x64, 0xFF, 0x85, 0x00, 0x00, 0x00, - 0xD3, 0xFF, 0x16, 0x87, 0xFF, 0x62, 0x00, 0x56, 0xFC, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0x0B, - 0x3A, 0xB5, 0xFF, 0xE7, 0xA4, 0xF4, 0xFF, 0xA8, 0x06, 0x00, 0x42, 0xFF, 0xA4, 0x01, 0xF3, 0xF4, - 0x01, 0x00, 0x39, 0xBE, 0xFF, 0xD4, 0x9F, 0xFF, 0xF3, 0x9C, 0x05, 0x5F, 0xFF, 0x01, 0x00, 0xF1, + 0x20, 0xFF, 0x48, 0xF8, 0x46, 0x20, 0xFF, 0x1B, 0x04, 0x01, 0x01, 0x04, 0x01, 0x00, 0x00, 0x09, + 0x09, 0x0E, 0x72, 0x00, 0xF3, 0x38, 0x6C, 0xFC, 0x7D, 0x1E, 0xFC, 0xC8, 0x00, 0x00, 0x00, 0x8F, + 0xFF, 0x5C, 0x41, 0xFF, 0xA8, 0x00, 0x00, 0x00, 0xB1, 0xFF, 0x39, 0x64, 0xFF, 0x85, 0x00, 0x00, + 0x00, 0xD3, 0xFF, 0x16, 0x87, 0xFF, 0x62, 0x00, 0x56, 0xFC, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, + 0x0B, 0x3A, 0xB5, 0xFF, 0xE7, 0xA4, 0xF4, 0xFF, 0xA8, 0x06, 0x00, 0x42, 0xFF, 0xA4, 0x01, 0xF3, + 0xF4, 0x01, 0x00, 0x39, 0xBE, 0xFF, 0xD4, 0x9F, 0xFF, 0xF3, 0x9C, 0x05, 0x5F, 0x58, 0x06, 0xF1, 0x1C, 0x05, 0x02, 0xA9, 0xFF, 0x43, 0x5B, 0xFF, 0x8F, 0x04, 0x01, 0x00, 0xC7, 0xFF, 0x20, 0x78, 0xFF, 0x6D, 0x00, 0x00, 0x00, 0xE7, 0xFC, 0x04, 0x98, 0xFF, 0x4E, 0x00, 0x00, 0x08, 0xFF, 0xE0, - 0x00, 0xB8, 0xFF, 0x2F, 0x00, 0x00, 0x25, 0xFF, 0xC0, 0x00, 0xD8, 0xFF, 0x47, 0x0E, 0x52, 0x08, - 0x08, 0x12, 0x00, 0xFE, 0x89, 0x00, 0x13, 0x18, 0xBF, 0x0E, 0x11, 0x30, 0x82, 0x05, 0xF0, 0x14, + 0x00, 0xB8, 0xFF, 0x2F, 0x00, 0x00, 0x25, 0xFF, 0xC0, 0x00, 0xD8, 0xFF, 0x9B, 0x1E, 0x53, 0x08, + 0x08, 0x12, 0x00, 0xFE, 0x10, 0x02, 0x12, 0x44, 0x08, 0x00, 0x11, 0x30, 0x2E, 0x0E, 0xF3, 0x11, 0x30, 0xBC, 0xF7, 0xFF, 0xD4, 0x43, 0x00, 0x0F, 0xEB, 0xFF, 0xCD, 0xC1, 0xFF, 0xF2, 0x13, 0x58, 0xFF, 0xF4, 0x07, 0x01, 0xD5, 0xFF, 0x62, 0x71, 0xFF, 0xF5, 0x05, 0x00, 0x9A, 0xCB, 0x56, 0x52, - 0xFF, 0xFF, 0x87, 0x27, 0x00, 0x50, 0x0C, 0xE6, 0xFF, 0xFF, 0x8C, 0x8B, 0x13, 0x50, 0x39, 0xF4, - 0xFF, 0xFF, 0xA7, 0x64, 0x13, 0x50, 0x34, 0xE9, 0xFF, 0xFF, 0x9F, 0x1B, 0x00, 0xF1, 0x1D, 0x23, - 0xDD, 0xFF, 0xFF, 0x49, 0x05, 0x32, 0x47, 0x00, 0x23, 0xF6, 0xFF, 0xA8, 0x6F, 0xFF, 0xD3, 0x00, - 0x00, 0xAD, 0xFF, 0xC8, 0x3C, 0xFF, 0xFD, 0x21, 0x00, 0xB0, 0xFF, 0xAC, 0x03, 0xD1, 0xFF, 0xE2, - 0xAD, 0xFE, 0xFF, 0x4C, 0x00, 0x1C, 0xAD, 0xF2, 0xFF, 0xE4, 0x63, 0x79, 0x00, 0x13, 0xB7, 0xB5, - 0x0E, 0x63, 0x5A, 0x00, 0x00, 0x00, 0x10, 0x10, 0x20, 0x01, 0xA1, 0x43, 0xD0, 0xF9, 0xE3, 0x81, - 0x02, 0x00, 0x00, 0xC8, 0xD6, 0x0F, 0x00, 0xB1, 0x09, 0xEE, 0xFF, 0xB3, 0xEB, 0xFF, 0x54, 0x00, - 0x14, 0xFE, 0x92, 0x10, 0x00, 0xB2, 0x3B, 0xFF, 0xC4, 0x00, 0x6C, 0xFF, 0x99, 0x00, 0x59, 0xFF, - 0x4B, 0xFE, 0x0E, 0xA7, 0xFF, 0xB1, 0x00, 0x56, 0xFF, 0xAF, 0x00, 0xA0, 0xF9, 0x0B, 0x10, 0x00, - 0x43, 0xAE, 0x01, 0xE6, 0xBD, 0xF7, 0x0A, 0x92, 0xFF, 0xC9, 0x00, 0x72, 0xFF, 0x96, 0x2E, 0xFF, - 0x75, 0x10, 0x00, 0xF1, 0x11, 0x07, 0xEA, 0xFF, 0xAE, 0xEC, 0xFF, 0x4E, 0x75, 0xFF, 0x2E, 0x0A, - 0x68, 0x97, 0x89, 0x37, 0x00, 0x00, 0x3F, 0xD3, 0xFF, 0xEC, 0x82, 0x01, 0xBC, 0xE6, 0x01, 0xB5, - 0xFF, 0xFF, 0xFF, 0xFE, 0x41, 0xB3, 0x14, 0xB2, 0x00, 0x0B, 0xF9, 0xA0, 0x16, 0xFF, 0xEB, 0x19, - 0x7C, 0xFF, 0xA0, 0x36, 0x00, 0xA2, 0x4A, 0xFF, 0x58, 0x38, 0xFF, 0xC6, 0x00, 0x43, 0xFF, 0xC1, - 0x10, 0x00, 0xA2, 0x91, 0xFE, 0x13, 0x3B, 0xFF, 0xC5, 0x00, 0x41, 0xFF, 0xC3, 0x10, 0x00, 0xA1, - 0xD8, 0xCA, 0x00, 0x26, 0xFF, 0xDB, 0x01, 0x55, 0xFF, 0xAF, 0x0F, 0x00, 0xB1, 0x1F, 0xFF, 0x83, - 0x00, 0x02, 0xE0, 0xFF, 0xB2, 0xE1, 0xFF, 0x69, 0x10, 0x00, 0xD4, 0x65, 0xFF, 0x3C, 0x00, 0x00, - 0x36, 0xC7, 0xFA, 0xEB, 0x92, 0x05, 0x0A, 0x0A, 0x08, 0x02, 0x52, 0x63, 0xDC, 0xF7, 0xBF, 0x38, - 0xA3, 0x00, 0x51, 0xF6, 0xB5, 0xFF, 0xEF, 0x0C, 0x12, 0x02, 0x40, 0x8C, 0x00, 0xCA, 0xFF, 0xAF, - 0x18, 0xF0, 0x01, 0x94, 0xFF, 0x87, 0x01, 0xE3, 0xFF, 0x36, 0x00, 0x00, 0x00, 0x54, 0xFF, 0xBE, - 0x36, 0xFF, 0xD9, 0x72, 0x01, 0x61, 0x05, 0xDC, 0xFC, 0xC2, 0xFD, 0x40, 0x3C, 0x00, 0x42, 0x64, - 0xFF, 0xFF, 0x64, 0xE7, 0x02, 0xF2, 0x37, 0xD2, 0xFF, 0xFE, 0x31, 0x00, 0x9A, 0xB8, 0x17, 0x00, - 0x8A, 0xFF, 0xCA, 0xFF, 0xC6, 0x04, 0xF4, 0xFE, 0x09, 0x02, 0xEE, 0xFF, 0x28, 0xB7, 0xFF, 0x8B, - 0xFF, 0xCA, 0x00, 0x21, 0xFF, 0xF4, 0x01, 0x29, 0xFC, 0xFF, 0xFF, 0x67, 0x00, 0x16, 0xFF, 0xFB, - 0x0C, 0x02, 0xC3, 0xFF, 0xFF, 0x48, 0x03, 0x00, 0xBC, 0xFF, 0xC8, 0xCB, 0xFF, 0xF1, 0xFF, 0xFF, - 0x30, 0x00, 0x1B, 0xAF, 0xF7, 0xF0, 0xA8, 0x17, 0x7E, 0xF6, 0x30, 0x05, 0x03, 0xC4, 0x02, 0xF1, - 0x01, 0xD9, 0xFC, 0x0D, 0xDC, 0xE3, 0x00, 0xDC, 0xBB, 0x00, 0xDC, 0x92, 0x00, 0xDC, 0x69, 0x00, - 0x04, 0x75, 0x00, 0x41, 0x04, 0x11, 0x01, 0xFD, 0x68, 0x0C, 0xF1, 0x12, 0xAD, 0xD4, 0x02, 0xCD, - 0xFF, 0xB3, 0x42, 0xFF, 0xE0, 0x05, 0x88, 0xFF, 0x97, 0x00, 0xAF, 0xFF, 0x77, 0x00, 0xC6, 0xFF, - 0x63, 0x00, 0xD6, 0xFF, 0x59, 0x00, 0xDB, 0xFF, 0x55, 0x00, 0xDC, 0xFF, 0x54, 0x04, 0x00, 0xF0, - 0x11, 0xD6, 0xFF, 0x58, 0x00, 0xC7, 0xFF, 0x61, 0x00, 0xB0, 0xFF, 0x75, 0x00, 0x8A, 0xFF, 0x98, - 0x00, 0x42, 0xFF, 0xDF, 0x05, 0x02, 0xCF, 0xFF, 0xB0, 0x00, 0x1D, 0xB1, 0xD7, 0x05, 0x05, 0x11, - 0x00, 0x4C, 0x00, 0xF0, 0x18, 0x71, 0xD5, 0x52, 0x00, 0x00, 0x50, 0xF8, 0xFE, 0x39, 0x00, 0x00, - 0x7A, 0xFF, 0xA7, 0x00, 0x00, 0x30, 0xFF, 0xED, 0x01, 0x00, 0x0D, 0xFF, 0xFF, 0x17, 0x00, 0x01, - 0xFB, 0xFF, 0x2D, 0x00, 0x00, 0xF0, 0xFF, 0x3A, 0x00, 0x00, 0xED, 0xFF, 0xB2, 0x12, 0x20, 0xFF, - 0x44, 0x0A, 0x00, 0x12, 0x42, 0x14, 0x00, 0x60, 0x01, 0xFA, 0xFF, 0x2E, 0x00, 0x0C, 0x28, 0x00, - 0xA0, 0x32, 0xFF, 0xEE, 0x01, 0x00, 0x7C, 0xFF, 0xA7, 0x00, 0x4F, 0x46, 0x00, 0x32, 0x73, 0xD9, - 0x54, 0xDC, 0x01, 0x23, 0x07, 0x06, 0x74, 0x18, 0xF0, 0x17, 0x18, 0xFC, 0x89, 0x00, 0x00, 0x01, - 0x8E, 0x2B, 0xFC, 0x78, 0x72, 0x3D, 0x19, 0xE6, 0xFD, 0xFE, 0xFA, 0xFE, 0x78, 0x00, 0x04, 0xA1, - 0xFF, 0xF6, 0x26, 0x00, 0x00, 0x2C, 0xF8, 0x8F, 0xF6, 0x98, 0x00, 0x00, 0x36, 0xC4, 0x0F, 0x87, - 0xAC, 0x19, 0x53, 0x07, 0x07, 0x08, 0x00, 0x03, 0x02, 0x04, 0x11, 0x7B, 0x07, 0x00, 0xC1, 0xFF, - 0x7C, 0x00, 0x00, 0x58, 0x9C, 0xAC, 0xFF, 0xCD, 0x9C, 0x95, 0x90, 0x63, 0x03, 0x83, 0xF4, 0x03, - 0x04, 0x2C, 0xFF, 0x7F, 0x04, 0x04, 0x1C, 0x00, 0x05, 0x07, 0x00, 0x10, 0x01, 0x21, 0x01, 0x31, - 0x04, 0x03, 0x06, 0xD4, 0x00, 0xF1, 0x02, 0x0C, 0x24, 0x23, 0x54, 0xFF, 0xF4, 0x54, 0xFF, 0xF4, - 0x00, 0x3A, 0xE0, 0x16, 0xE1, 0x6E, 0x02, 0x2C, 0xF8, 0x0D, 0x11, 0x03, 0x68, 0x04, 0x70, 0x08, - 0x9C, 0x9C, 0x9C, 0x9C, 0x0A, 0x0C, 0x4C, 0x00, 0x50, 0x10, 0x01, 0x04, 0x04, 0x04, 0x10, 0x04, - 0x22, 0x04, 0x04, 0x76, 0x00, 0x40, 0x08, 0x24, 0x24, 0x02, 0x48, 0x04, 0x00, 0x04, 0x00, 0x35, - 0x07, 0x07, 0x0E, 0xAC, 0x04, 0x20, 0xA1, 0xF2, 0xCA, 0x00, 0x30, 0x02, 0xEA, 0xB6, 0x0D, 0x00, - 0x30, 0x32, 0xFF, 0x6E, 0x07, 0x00, 0x31, 0x79, 0xFF, 0x27, 0x9F, 0x1A, 0x10, 0xDF, 0x38, 0x03, - 0x30, 0x0D, 0xFB, 0x98, 0x0D, 0x00, 0x30, 0x4F, 0xFF, 0x50, 0x07, 0x00, 0x21, 0x96, 0xFB, 0x3B, - 0x00, 0x11, 0xDD, 0xA0, 0x02, 0x21, 0x24, 0xFF, 0xD4, 0x10, 0x30, 0x6C, 0xFF, 0x32, 0x07, 0x00, - 0x20, 0xB3, 0xEA, 0xC8, 0x01, 0x30, 0x06, 0xF4, 0xA3, 0x0D, 0x00, 0x32, 0x41, 0xFF, 0x5C, 0x60, - 0x00, 0x23, 0x09, 0x08, 0x6C, 0x00, 0xFF, 0x18, 0x09, 0x8D, 0xE6, 0xF9, 0xD2, 0x59, 0x00, 0x00, - 0x9B, 0xFF, 0xEB, 0xB2, 0xFE, 0xFF, 0x48, 0x0B, 0xFA, 0xFF, 0x52, 0x00, 0xA6, 0xFF, 0xB7, 0x34, - 0xFF, 0xFF, 0x27, 0x00, 0x7C, 0xFF, 0xE3, 0x3C, 0xFF, 0xFF, 0x24, 0x00, 0x78, 0xFF, 0xEC, 0x08, - 0x00, 0x15, 0xF2, 0x14, 0x35, 0xFF, 0xFF, 0x29, 0x00, 0x7D, 0xFF, 0xE4, 0x0E, 0xFB, 0xFF, 0x57, - 0x00, 0xAB, 0xFF, 0xB8, 0x00, 0x99, 0xFF, 0xEB, 0xAF, 0xFE, 0xFF, 0x4A, 0x00, 0x09, 0x8E, 0xE9, - 0xFD, 0xD5, 0x5C, 0x00, 0x09, 0x06, 0x0E, 0xF6, 0x03, 0xFF, 0x0A, 0x05, 0x6B, 0xF6, 0xFC, 0x0C, - 0x4C, 0xDC, 0xFF, 0xFF, 0xFF, 0x0C, 0x88, 0xFD, 0xE1, 0xFF, 0xFF, 0x0C, 0x21, 0x0F, 0x50, 0xFF, - 0xFF, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x27, 0x05, 0xD4, 0x00, 0xF1, 0x18, 0x06, 0x85, 0xE1, 0xFA, - 0xDB, 0x74, 0x02, 0x00, 0x89, 0xFF, 0xF6, 0xB1, 0xF9, 0xFF, 0x6D, 0x02, 0xF0, 0xFF, 0x70, 0x00, - 0x87, 0xFF, 0xCE, 0x1C, 0xFF, 0xFF, 0x39, 0x00, 0x64, 0xFF, 0xF3, 0x17, 0xA0, 0xA0, 0x1E, 0x00, - 0x8B, 0xFF, 0xE9, 0xD0, 0x04, 0x30, 0xEA, 0xFF, 0xAA, 0x08, 0x00, 0x30, 0x8C, 0xFF, 0xFF, 0x8D, - 0x03, 0x40, 0x2B, 0xFB, 0xFF, 0x9D, 0xDB, 0x01, 0x30, 0xC0, 0xFF, 0xE7, 0x2F, 0x05, 0x30, 0x5A, - 0xFF, 0xFF, 0x5B, 0x02, 0x51, 0x0F, 0xE7, 0xFF, 0xB0, 0x01, 0xA0, 0x03, 0x10, 0xF2, 0x9D, 0x09, - 0x92, 0x23, 0xFC, 0xFF, 0xD9, 0x9C, 0x9C, 0x9C, 0x60, 0x3C, 0x83, 0x05, 0x15, 0x9C, 0x78, 0x00, - 0xF0, 0x17, 0x10, 0x98, 0xE9, 0xF8, 0xD1, 0x5B, 0x00, 0x00, 0xB8, 0xFF, 0xE4, 0xB5, 0xFE, 0xFF, - 0x4F, 0x25, 0xFF, 0xFF, 0x3A, 0x00, 0xA7, 0xFF, 0xB8, 0x4C, 0xFF, 0xFF, 0x11, 0x00, 0x7D, 0xFF, - 0xDC, 0x25, 0x74, 0x74, 0x06, 0x00, 0x8A, 0xFF, 0xFC, 0x05, 0x31, 0x00, 0x1C, 0xD8, 0x92, 0x04, - 0x40, 0x6B, 0xFF, 0xFF, 0x94, 0x09, 0x02, 0x51, 0x46, 0xC6, 0xFF, 0xEA, 0x2A, 0x55, 0x02, 0xC0, - 0xBA, 0xFF, 0xA4, 0x1D, 0x5C, 0x5C, 0x05, 0x00, 0x80, 0xFF, 0xD8, 0x4A, 0xEB, 0x02, 0xF7, 0x0B, - 0x80, 0xFF, 0xD8, 0x21, 0xFF, 0xFF, 0x61, 0x06, 0xC0, 0xFF, 0xAA, 0x00, 0xC2, 0xFF, 0xFF, 0xFB, - 0xFF, 0xFF, 0x4B, 0x00, 0x17, 0xA4, 0xEE, 0xFD, 0xD7, 0x63, 0x54, 0x06, 0x51, 0x00, 0x1D, 0xFA, - 0xFC, 0xDD, 0x09, 0x00, 0x41, 0x7F, 0xFF, 0xFF, 0xE0, 0x27, 0x0A, 0x13, 0xE3, 0x09, 0x00, 0x32, - 0x4B, 0xFF, 0xC7, 0x09, 0x00, 0x31, 0xB0, 0xFF, 0x75, 0x09, 0x00, 0x41, 0x1A, 0xFC, 0xC8, 0x58, - 0x09, 0x00, 0x31, 0x7B, 0xFF, 0x75, 0x09, 0x00, 0x41, 0x02, 0xE0, 0xFF, 0x22, 0x09, 0x00, 0x41, - 0x45, 0xFF, 0xCF, 0x00, 0x09, 0x00, 0xC2, 0x64, 0xFF, 0xFF, 0xFC, 0xFE, 0xFF, 0xFF, 0xFC, 0x4B, - 0x63, 0xFC, 0xFC, 0x09, 0x00, 0x00, 0x41, 0x00, 0x02, 0x36, 0x00, 0x0F, 0x09, 0x00, 0x00, 0x05, - 0x00, 0x01, 0x20, 0xDB, 0xFC, 0x01, 0x00, 0xC2, 0x63, 0x00, 0xE2, 0xFF, 0xB2, 0xA4, 0xA4, 0xA4, - 0x41, 0x00, 0xE6, 0xFF, 0x73, 0x07, 0x31, 0xE9, 0xFF, 0x17, 0x08, 0x00, 0x22, 0xED, 0xFF, 0x29, - 0x00, 0xF3, 0x08, 0xF0, 0xFF, 0xAB, 0xF3, 0xEA, 0x89, 0x03, 0x00, 0xF4, 0xFF, 0xEB, 0xB0, 0xFB, - 0xFF, 0x69, 0x00, 0xD0, 0xD8, 0x36, 0x00, 0x8F, 0xFF, 0xC2, 0xDB, 0x04, 0x11, 0xE4, 0x08, 0x00, - 0xF6, 0x13, 0x5E, 0xFF, 0xE9, 0x26, 0xFC, 0xFC, 0x27, 0x00, 0x64, 0xFF, 0xD8, 0x0D, 0xFE, 0xFF, - 0x4F, 0x00, 0x8A, 0xFF, 0xA8, 0x00, 0xB5, 0xFF, 0xE7, 0xA8, 0xF8, 0xFF, 0x44, 0x00, 0x18, 0xAE, - 0xF0, 0xFD, 0xD9, 0x61, 0x00, 0x01, 0xE0, 0x02, 0x76, 0xDF, 0xF9, 0xDD, 0x82, 0x04, 0x00, 0x00, - 0x6A, 0xFF, 0xF9, 0xAF, 0xF4, 0x9E, 0x03, 0xF2, 0x07, 0xD8, 0xFF, 0x7B, 0x00, 0x7A, 0xFF, 0xD5, - 0x00, 0x0F, 0xFF, 0xFF, 0x4C, 0x00, 0x31, 0x88, 0x7F, 0x00, 0x22, 0xFF, 0xFF, 0x3D, 0x00, 0x1D, - 0x03, 0x51, 0xFF, 0x5F, 0x89, 0x92, 0x44, 0x09, 0x00, 0x50, 0xFC, 0xFF, 0xFF, 0xFF, 0x5A, 0x09, - 0x00, 0x50, 0x93, 0x10, 0xAF, 0xFF, 0xCD, 0x09, 0x00, 0x70, 0x3C, 0x00, 0x5D, 0xFF, 0xFC, 0x03, - 0x23, 0x09, 0x00, 0xF0, 0x04, 0x52, 0xFF, 0xFF, 0x09, 0x13, 0xFF, 0xFF, 0x42, 0x00, 0x57, 0xFF, - 0xF6, 0x01, 0x00, 0xDB, 0xFF, 0x74, 0x00, 0x86, 0xFF, 0x05, 0x50, 0x68, 0xFF, 0xF5, 0xA9, 0xF7, - 0x16, 0x02, 0x51, 0x01, 0x73, 0xE1, 0xFD, 0xDD, 0xE0, 0x05, 0x13, 0x09, 0xB8, 0x03, 0x11, 0x53, - 0xFF, 0x00, 0x80, 0x9E, 0x36, 0xA4, 0xA4, 0xA4, 0xE8, 0xFF, 0x91, 0x12, 0x00, 0x11, 0xE1, 0x6F, - 0x03, 0x50, 0x19, 0xFF, 0xFF, 0x26, 0x00, 0xA3, 0x02, 0x11, 0xEE, 0xE2, 0x1D, 0x20, 0xFF, 0xB8, - 0x1B, 0x00, 0x30, 0xBF, 0xFF, 0x82, 0x7F, 0x08, 0x11, 0xF4, 0xC8, 0x06, 0xA0, 0x2F, 0xFF, 0xFF, - 0x15, 0x00, 0x00, 0x00, 0x66, 0xFF, 0xDE, 0x1B, 0x00, 0x10, 0x9E, 0x15, 0x05, 0x40, 0x00, 0x00, - 0xD6, 0xFF, 0xAF, 0x14, 0x10, 0x10, 0x45, 0x02, 0x00, 0x9C, 0x01, 0x29, 0xFB, 0x09, 0x6C, 0x01, + 0x9E, 0x07, 0x50, 0x0C, 0xE6, 0xFF, 0xFF, 0x8C, 0x0D, 0x08, 0x50, 0x39, 0xF4, 0xFF, 0xFF, 0xA7, + 0xC6, 0x19, 0x50, 0x34, 0xE9, 0xFF, 0xFF, 0x9F, 0x1B, 0x00, 0xF2, 0x1C, 0x23, 0xDD, 0xFF, 0xFF, + 0x49, 0x05, 0x32, 0x47, 0x00, 0x23, 0xF6, 0xFF, 0xA8, 0x6F, 0xFF, 0xD3, 0x00, 0x00, 0xAD, 0xFF, + 0xC8, 0x3C, 0xFF, 0xFD, 0x21, 0x00, 0xB0, 0xFF, 0xAC, 0x03, 0xD1, 0xFF, 0xE2, 0xAD, 0xFE, 0xFF, + 0x4C, 0x00, 0x1C, 0xAD, 0xF2, 0xFF, 0xE4, 0x2C, 0x07, 0x13, 0xB7, 0xAB, 0x07, 0x10, 0x5A, 0x5F, + 0x09, 0x13, 0x10, 0x20, 0x01, 0xA1, 0x43, 0xD0, 0xF9, 0xE3, 0x81, 0x02, 0x00, 0x00, 0xC8, 0xD6, + 0x0F, 0x00, 0xB1, 0x09, 0xEE, 0xFF, 0xB3, 0xEB, 0xFF, 0x54, 0x00, 0x14, 0xFE, 0x92, 0x10, 0x00, + 0xB2, 0x3B, 0xFF, 0xC4, 0x00, 0x6C, 0xFF, 0x99, 0x00, 0x59, 0xFF, 0x4B, 0x8E, 0x07, 0xA7, 0xFF, + 0xB1, 0x00, 0x56, 0xFF, 0xAF, 0x00, 0xA0, 0xF9, 0x0B, 0x10, 0x00, 0x42, 0xAE, 0x01, 0xE6, 0xBD, + 0x4F, 0x00, 0xA2, 0x39, 0xFF, 0xC9, 0x00, 0x72, 0xFF, 0x96, 0x2E, 0xFF, 0x75, 0x10, 0x00, 0xF0, + 0x0C, 0x07, 0xEA, 0xFF, 0xAE, 0xEC, 0xFF, 0x4E, 0x75, 0xFF, 0x2E, 0x0A, 0x68, 0x97, 0x89, 0x37, + 0x00, 0x00, 0x3F, 0xD3, 0xFF, 0xEC, 0x82, 0x01, 0xBC, 0xE6, 0x01, 0xB5, 0xA6, 0x07, 0x12, 0x41, + 0x4B, 0x1A, 0xA2, 0x0B, 0xF9, 0xA0, 0x16, 0xFF, 0xEB, 0x19, 0x7C, 0xFF, 0xA0, 0x36, 0x00, 0xA2, + 0x4A, 0xFF, 0x58, 0x38, 0xFF, 0xC6, 0x00, 0x43, 0xFF, 0xC1, 0x10, 0x00, 0xA2, 0x91, 0xFE, 0x13, + 0x3B, 0xFF, 0xC5, 0x00, 0x41, 0xFF, 0xC3, 0x10, 0x00, 0xA1, 0xD8, 0xCA, 0x00, 0x26, 0xFF, 0xDB, + 0x01, 0x55, 0xFF, 0xAF, 0x0F, 0x00, 0xB1, 0x1F, 0xFF, 0x83, 0x00, 0x02, 0xE0, 0xFF, 0xB2, 0xE1, + 0xFF, 0x69, 0x10, 0x00, 0xD4, 0x65, 0xFF, 0x3C, 0x00, 0x00, 0x36, 0xC7, 0xFA, 0xEB, 0x92, 0x05, + 0x0A, 0x0A, 0x08, 0x02, 0x52, 0x63, 0xDC, 0xF7, 0xBF, 0x38, 0xA3, 0x00, 0x51, 0xF6, 0xB5, 0xFF, + 0xEF, 0x0C, 0x12, 0x02, 0x50, 0x8C, 0x00, 0xCA, 0xFF, 0x48, 0x3F, 0x1B, 0x60, 0xFF, 0x87, 0x01, + 0xE3, 0xFF, 0x36, 0x79, 0x20, 0x50, 0xFF, 0xBE, 0x36, 0xFF, 0xD9, 0x72, 0x01, 0x61, 0x05, 0xDC, + 0xFC, 0xC2, 0xFD, 0x40, 0x3C, 0x00, 0x32, 0x64, 0xFF, 0xFF, 0x46, 0x0B, 0xF2, 0x38, 0x0A, 0xD2, + 0xFF, 0xFE, 0x31, 0x00, 0x9A, 0xB8, 0x17, 0x00, 0x8A, 0xFF, 0xCA, 0xFF, 0xC6, 0x04, 0xF4, 0xFE, + 0x09, 0x02, 0xEE, 0xFF, 0x28, 0xB7, 0xFF, 0x8B, 0xFF, 0xCA, 0x00, 0x21, 0xFF, 0xF4, 0x01, 0x29, + 0xFC, 0xFF, 0xFF, 0x67, 0x00, 0x16, 0xFF, 0xFB, 0x0C, 0x02, 0xC3, 0xFF, 0xFF, 0x48, 0x03, 0x00, + 0xBC, 0xFF, 0xC8, 0xCB, 0xFF, 0xF1, 0xFF, 0xFF, 0x30, 0x00, 0x1B, 0xAF, 0xF7, 0xF0, 0xA8, 0x17, + 0x7E, 0xF6, 0x30, 0x05, 0x03, 0xC4, 0x02, 0xF1, 0x01, 0xD9, 0xFC, 0x0D, 0xDC, 0xE3, 0x00, 0xDC, + 0xBB, 0x00, 0xDC, 0x92, 0x00, 0xDC, 0x69, 0x00, 0x04, 0x75, 0x00, 0x31, 0x04, 0x11, 0x01, 0x1C, + 0x09, 0xF1, 0x13, 0x1B, 0xAD, 0xD4, 0x02, 0xCD, 0xFF, 0xB3, 0x42, 0xFF, 0xE0, 0x05, 0x88, 0xFF, + 0x97, 0x00, 0xAF, 0xFF, 0x77, 0x00, 0xC6, 0xFF, 0x63, 0x00, 0xD6, 0xFF, 0x59, 0x00, 0xDB, 0xFF, + 0x55, 0x00, 0xDC, 0xFF, 0x54, 0x04, 0x00, 0xF0, 0x11, 0xD6, 0xFF, 0x58, 0x00, 0xC7, 0xFF, 0x61, + 0x00, 0xB0, 0xFF, 0x75, 0x00, 0x8A, 0xFF, 0x98, 0x00, 0x42, 0xFF, 0xDF, 0x05, 0x02, 0xCF, 0xFF, + 0xB0, 0x00, 0x1D, 0xB1, 0xD7, 0x05, 0x05, 0x11, 0x00, 0x4C, 0x00, 0xF0, 0x1E, 0x71, 0xD5, 0x52, + 0x00, 0x00, 0x50, 0xF8, 0xFE, 0x39, 0x00, 0x00, 0x7A, 0xFF, 0xA7, 0x00, 0x00, 0x30, 0xFF, 0xED, + 0x01, 0x00, 0x0D, 0xFF, 0xFF, 0x17, 0x00, 0x01, 0xFB, 0xFF, 0x2D, 0x00, 0x00, 0xF0, 0xFF, 0x3A, + 0x00, 0x00, 0xED, 0xFF, 0x41, 0x00, 0x00, 0xEC, 0xFF, 0x44, 0x0A, 0x00, 0x12, 0x42, 0x14, 0x00, + 0x60, 0x01, 0xFA, 0xFF, 0x2E, 0x00, 0x0C, 0x28, 0x00, 0xA0, 0x32, 0xFF, 0xEE, 0x01, 0x00, 0x7C, + 0xFF, 0xA7, 0x00, 0x4F, 0x46, 0x00, 0x32, 0x73, 0xD9, 0x54, 0xDC, 0x01, 0x23, 0x07, 0x06, 0x98, + 0x1B, 0xF0, 0x19, 0x18, 0xFC, 0x89, 0x00, 0x00, 0x01, 0x8E, 0x2B, 0xFC, 0x78, 0x72, 0x3D, 0x19, + 0xE6, 0xFD, 0xFE, 0xFA, 0xFE, 0x78, 0x00, 0x04, 0xA1, 0xFF, 0xF6, 0x26, 0x00, 0x00, 0x2C, 0xF8, + 0x8F, 0xF6, 0x98, 0x00, 0x00, 0x36, 0xC4, 0x0F, 0x87, 0x84, 0x02, 0x34, 0x00, 0x33, 0x08, 0x00, + 0x03, 0x02, 0x04, 0x11, 0x7B, 0x07, 0x00, 0xC1, 0xFF, 0x7C, 0x00, 0x00, 0x58, 0x9C, 0xAC, 0xFF, + 0xCD, 0x9C, 0x95, 0x90, 0x63, 0x03, 0x83, 0xF4, 0x03, 0x04, 0x2C, 0xFF, 0x7F, 0x04, 0x04, 0x1C, + 0x00, 0x05, 0x07, 0x00, 0x10, 0x01, 0x21, 0x01, 0x31, 0x04, 0x03, 0x06, 0xD4, 0x00, 0xF1, 0x02, + 0x0C, 0x24, 0x23, 0x54, 0xFF, 0xF4, 0x54, 0xFF, 0xF4, 0x00, 0x3A, 0xE0, 0x16, 0xE1, 0x6E, 0x02, + 0x2C, 0xA4, 0x16, 0x11, 0x03, 0x68, 0x04, 0x70, 0x08, 0x9C, 0x9C, 0x9C, 0x9C, 0x0A, 0x0C, 0x4C, + 0x00, 0x50, 0x10, 0x01, 0x04, 0x04, 0x04, 0x10, 0x04, 0x22, 0x04, 0x04, 0x76, 0x00, 0x40, 0x08, + 0x24, 0x24, 0x02, 0x48, 0x04, 0x00, 0x04, 0x00, 0x35, 0x07, 0x07, 0x0E, 0xB0, 0x04, 0x20, 0xA1, + 0xF2, 0xCA, 0x00, 0x30, 0x02, 0xEA, 0xB6, 0x0D, 0x00, 0x30, 0x32, 0xFF, 0x6E, 0x07, 0x00, 0x21, + 0x79, 0xFF, 0xF6, 0x1A, 0x20, 0xC0, 0xDF, 0x38, 0x03, 0x31, 0x0D, 0xFB, 0x98, 0x92, 0x08, 0x11, + 0xFF, 0xCC, 0x0B, 0x21, 0x96, 0xFB, 0x3B, 0x00, 0x11, 0xDD, 0xA0, 0x02, 0x21, 0x24, 0xFF, 0x80, + 0x19, 0x21, 0x6C, 0xFF, 0x48, 0x0C, 0x20, 0xB3, 0xEA, 0xC8, 0x01, 0x30, 0x06, 0xF4, 0xA3, 0x0D, + 0x00, 0x32, 0x41, 0xFF, 0x5C, 0x60, 0x00, 0x23, 0x09, 0x08, 0x6C, 0x00, 0xFF, 0x18, 0x09, 0x8D, + 0xE6, 0xF9, 0xD2, 0x59, 0x00, 0x00, 0x9B, 0xFF, 0xEB, 0xB2, 0xFE, 0xFF, 0x48, 0x0B, 0xFA, 0xFF, + 0x52, 0x00, 0xA6, 0xFF, 0xB7, 0x34, 0xFF, 0xFF, 0x27, 0x00, 0x7C, 0xFF, 0xE3, 0x3C, 0xFF, 0xFF, + 0x24, 0x00, 0x78, 0xFF, 0xEC, 0x08, 0x00, 0x15, 0xF2, 0x14, 0x35, 0xFF, 0xFF, 0x29, 0x00, 0x7D, + 0xFF, 0xE4, 0x0E, 0xFB, 0xFF, 0x57, 0x00, 0xAB, 0xFF, 0xB8, 0x00, 0x99, 0xFF, 0xEB, 0xAF, 0xFE, + 0xFF, 0x4A, 0x00, 0x09, 0x8E, 0xE9, 0xFD, 0xD5, 0x5C, 0x00, 0x09, 0x06, 0x0E, 0xF6, 0x03, 0xFF, + 0x0A, 0x05, 0x6B, 0xF6, 0xFC, 0x0C, 0x4C, 0xDC, 0xFF, 0xFF, 0xFF, 0x0C, 0x88, 0xFD, 0xE1, 0xFF, + 0xFF, 0x0C, 0x21, 0x0F, 0x50, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x27, 0x05, 0xD4, 0x00, + 0xF1, 0x18, 0x06, 0x85, 0xE1, 0xFA, 0xDB, 0x74, 0x02, 0x00, 0x89, 0xFF, 0xF6, 0xB1, 0xF9, 0xFF, + 0x6D, 0x02, 0xF0, 0xFF, 0x70, 0x00, 0x87, 0xFF, 0xCE, 0x1C, 0xFF, 0xFF, 0x39, 0x00, 0x64, 0xFF, + 0xF3, 0x17, 0xA0, 0xA0, 0x1E, 0x00, 0x8B, 0xFF, 0xE9, 0xD0, 0x04, 0x30, 0xEA, 0xFF, 0xAA, 0x08, + 0x00, 0x30, 0x8C, 0xFF, 0xFF, 0x8D, 0x03, 0x40, 0x2B, 0xFB, 0xFF, 0x9D, 0xDB, 0x01, 0x30, 0xC0, + 0xFF, 0xE7, 0x2F, 0x05, 0x30, 0x5A, 0xFF, 0xFF, 0x5B, 0x02, 0x51, 0x0F, 0xE7, 0xFF, 0xB0, 0x01, + 0xA0, 0x03, 0x10, 0xF2, 0x49, 0x12, 0x92, 0x23, 0xFC, 0xFF, 0xD9, 0x9C, 0x9C, 0x9C, 0x60, 0x3C, + 0x83, 0x05, 0x15, 0x9C, 0x78, 0x00, 0xF1, 0x18, 0x10, 0x98, 0xE9, 0xF8, 0xD1, 0x5B, 0x00, 0x00, + 0xB8, 0xFF, 0xE4, 0xB5, 0xFE, 0xFF, 0x4F, 0x25, 0xFF, 0xFF, 0x3A, 0x00, 0xA7, 0xFF, 0xB8, 0x4C, + 0xFF, 0xFF, 0x11, 0x00, 0x7D, 0xFF, 0xDC, 0x25, 0x74, 0x74, 0x06, 0x00, 0x8A, 0xFF, 0xC8, 0x30, + 0x24, 0x11, 0xD8, 0x92, 0x04, 0x40, 0x6B, 0xFF, 0xFF, 0x94, 0x09, 0x02, 0x51, 0x46, 0xC6, 0xFF, + 0xEA, 0x2A, 0x55, 0x02, 0xC0, 0xBA, 0xFF, 0xA4, 0x1D, 0x5C, 0x5C, 0x05, 0x00, 0x80, 0xFF, 0xD8, + 0x4A, 0xEB, 0x02, 0xF7, 0x0B, 0x80, 0xFF, 0xD8, 0x21, 0xFF, 0xFF, 0x61, 0x06, 0xC0, 0xFF, 0xAA, + 0x00, 0xC2, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x4B, 0x00, 0x17, 0xA4, 0xEE, 0xFD, 0xD7, 0x63, 0x54, + 0x06, 0x51, 0x00, 0x1D, 0xFA, 0xFC, 0xDD, 0x09, 0x00, 0x13, 0x7F, 0x1C, 0x0C, 0x23, 0x03, 0xE3, + 0x09, 0x00, 0x32, 0x4B, 0xFF, 0xC7, 0x09, 0x00, 0x31, 0xB0, 0xFF, 0x75, 0x09, 0x00, 0x41, 0x1A, + 0xFC, 0xC8, 0x58, 0x09, 0x00, 0x31, 0x7B, 0xFF, 0x75, 0x09, 0x00, 0x41, 0x02, 0xE0, 0xFF, 0x22, + 0x09, 0x00, 0x41, 0x45, 0xFF, 0xCF, 0x00, 0x09, 0x00, 0xC2, 0x64, 0xFF, 0xFF, 0xFC, 0xFE, 0xFF, + 0xFF, 0xFC, 0x4B, 0x63, 0xFC, 0xFC, 0x09, 0x00, 0x00, 0x41, 0x00, 0x02, 0x36, 0x00, 0x0F, 0x09, + 0x00, 0x00, 0x05, 0x00, 0x01, 0x20, 0xDB, 0xFC, 0x01, 0x00, 0xC2, 0x63, 0x00, 0xE2, 0xFF, 0xB2, + 0xA4, 0xA4, 0xA4, 0x41, 0x00, 0xE6, 0xFF, 0x73, 0x07, 0x22, 0xE9, 0xFF, 0x90, 0x07, 0x22, 0xED, + 0xFF, 0x29, 0x00, 0xF3, 0x08, 0xF0, 0xFF, 0xAB, 0xF3, 0xEA, 0x89, 0x03, 0x00, 0xF4, 0xFF, 0xEB, + 0xB0, 0xFB, 0xFF, 0x69, 0x00, 0xD0, 0xD8, 0x36, 0x00, 0x8F, 0xFF, 0xC2, 0xDB, 0x04, 0x02, 0xBA, + 0x0C, 0xF6, 0x13, 0x5E, 0xFF, 0xE9, 0x26, 0xFC, 0xFC, 0x27, 0x00, 0x64, 0xFF, 0xD8, 0x0D, 0xFE, + 0xFF, 0x4F, 0x00, 0x8A, 0xFF, 0xA8, 0x00, 0xB5, 0xFF, 0xE7, 0xA8, 0xF8, 0xFF, 0x44, 0x00, 0x18, + 0xAE, 0xF0, 0xFD, 0xD9, 0x61, 0x00, 0x01, 0xE0, 0x02, 0x76, 0xDF, 0xF9, 0xDD, 0x82, 0x04, 0x00, + 0x00, 0x6A, 0xFF, 0xF9, 0xAF, 0xF4, 0x9E, 0x03, 0xF2, 0x07, 0xD8, 0xFF, 0x7B, 0x00, 0x7A, 0xFF, + 0xD5, 0x00, 0x0F, 0xFF, 0xFF, 0x4C, 0x00, 0x31, 0x88, 0x7F, 0x00, 0x22, 0xFF, 0xFF, 0x3D, 0x00, + 0x1D, 0x03, 0x51, 0xFF, 0x5F, 0x89, 0x92, 0x44, 0x09, 0x00, 0x50, 0xFC, 0xFF, 0xFF, 0xFF, 0x5A, + 0x09, 0x00, 0x50, 0x93, 0x10, 0xAF, 0xFF, 0xCD, 0x09, 0x00, 0x70, 0x3C, 0x00, 0x5D, 0xFF, 0xFC, + 0x03, 0x23, 0x09, 0x00, 0xF0, 0x04, 0x52, 0xFF, 0xFF, 0x09, 0x13, 0xFF, 0xFF, 0x42, 0x00, 0x57, + 0xFF, 0xF6, 0x01, 0x00, 0xDB, 0xFF, 0x74, 0x00, 0x86, 0xFF, 0x05, 0x50, 0x68, 0xFF, 0xF5, 0xA9, + 0xF7, 0x16, 0x02, 0x51, 0x01, 0x73, 0xE1, 0xFD, 0xDD, 0xE0, 0x05, 0x13, 0x09, 0xB8, 0x03, 0x11, + 0x53, 0xFF, 0x00, 0x80, 0x9E, 0x36, 0xA4, 0xA4, 0xA4, 0xE8, 0xFF, 0x91, 0x12, 0x00, 0x11, 0xE1, + 0x6F, 0x03, 0x30, 0x19, 0xFF, 0xFF, 0x5B, 0x1F, 0x10, 0x50, 0xB5, 0x04, 0x50, 0x00, 0x00, 0x88, + 0xFF, 0xB8, 0x1B, 0x00, 0x30, 0xBF, 0xFF, 0x82, 0x7F, 0x08, 0x11, 0xF4, 0xC8, 0x06, 0x30, 0x2F, + 0xFF, 0xFF, 0x35, 0x27, 0x30, 0x66, 0xFF, 0xDE, 0x1B, 0x00, 0x10, 0x9E, 0x15, 0x05, 0x31, 0x00, + 0x00, 0xD6, 0x29, 0x10, 0x10, 0x10, 0x45, 0x02, 0x00, 0x9C, 0x01, 0x29, 0xFB, 0x09, 0x6C, 0x01, 0x60, 0x0C, 0x95, 0xE9, 0xF8, 0xCB, 0x44, 0x2D, 0x00, 0xF0, 0x1D, 0xE9, 0xBE, 0xFF, 0xF9, 0x22, 0x06, 0xF6, 0xFF, 0x4B, 0x01, 0xD1, 0xFF, 0x77, 0x1C, 0xFF, 0xFF, 0x23, 0x00, 0xA7, 0xFF, 0x98, 0x0C, 0xFE, 0xFF, 0x33, 0x00, 0xB6, 0xFF, 0x86, 0x00, 0xB9, 0xFF, 0x8B, 0x1A, 0xF1, 0xFF, 0x39, @@ -304,210 +5846,209 @@ const uint8_t assets[9804] = { 0x8F, 0xFF, 0xCD, 0x10, 0xFE, 0xFF, 0x4C, 0x04, 0xCA, 0xFF, 0x99, 0x00, 0xB6, 0xFF, 0xFB, 0xE8, 0xFF, 0xFC, 0x31, 0x00, 0x14, 0xA1, 0xEC, 0xFC, 0xD4, 0x50, 0x00, 0x04, 0x03, 0x09, 0x30, 0x04, 0x95, 0x95, 0x9C, 0x2C, 0xF4, 0xFF, 0x48, 0x04, 0x04, 0x02, 0x22, 0x05, 0x06, 0x12, 0x00, 0x40, - 0x04, 0x03, 0x0C, 0x01, 0xD4, 0x08, 0x86, 0xF5, 0xFC, 0x47, 0xF8, 0xFF, 0x48, 0x2B, 0x2C, 0x2D, - 0x0D, 0xF6, 0x06, 0x23, 0x24, 0x0C, 0xF8, 0xFF, 0x54, 0xF8, 0xFF, 0x54, 0x07, 0xDB, 0x42, 0xA9, - 0xCC, 0x08, 0x15, 0x02, 0x00, 0x07, 0x06, 0x0B, 0xE2, 0x0A, 0x00, 0xBF, 0x08, 0xF0, 0x1E, 0x01, - 0x66, 0x89, 0x00, 0x00, 0x16, 0xB2, 0xFF, 0x94, 0x00, 0x4B, 0xE9, 0xFF, 0xC8, 0x23, 0x5F, 0xFF, - 0xFD, 0x82, 0x05, 0x00, 0x7C, 0xFF, 0x94, 0x01, 0x00, 0x00, 0x4F, 0xFA, 0xFF, 0xA8, 0x10, 0x00, - 0x00, 0x30, 0xD4, 0xFF, 0xE0, 0x37, 0x00, 0x00, 0x09, 0x90, 0xFF, 0x94, 0x35, 0x00, 0x24, 0x45, - 0x79, 0x51, 0x18, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x05, 0x10, 0x03, 0xE0, 0x05, 0x31, 0x9C, 0x31, - 0x04, 0x0E, 0x04, 0x11, 0x50, 0xE2, 0x05, 0x2F, 0x04, 0x02, 0x15, 0x00, 0x02, 0x00, 0x34, 0x00, - 0x02, 0x80, 0x00, 0x12, 0x02, 0xFF, 0x05, 0x31, 0x0C, 0xC4, 0x21, 0x07, 0x00, 0xB0, 0xFF, 0xF2, - 0x5F, 0x01, 0x00, 0x00, 0x01, 0x6B, 0xF7, 0xFF, 0xAB, 0x86, 0x17, 0x40, 0x2A, 0xD0, 0xFF, 0xE6, - 0x9D, 0x00, 0xF0, 0x07, 0x1C, 0xED, 0xFF, 0x08, 0x00, 0x00, 0x47, 0xE8, 0xFF, 0xD1, 0x04, 0x03, - 0x8D, 0xFF, 0xFE, 0x89, 0x07, 0x00, 0x0C, 0xFF, 0xE1, 0x3F, 0x31, 0x00, 0x2A, 0xA2, 0x0F, 0x86, - 0x1F, 0x14, 0x08, 0xA0, 0x01, 0xF1, 0x17, 0x2D, 0xB9, 0xF2, 0xF4, 0xC2, 0x3F, 0x00, 0x09, 0xE7, - 0xFF, 0xD3, 0xC5, 0xFF, 0xF9, 0x28, 0x36, 0xFF, 0xFE, 0x0E, 0x01, 0xC9, 0xFF, 0x87, 0x2A, 0xFF, - 0xF7, 0x07, 0x00, 0xA7, 0xFF, 0xA6, 0x05, 0x33, 0x06, 0x00, 0x01, 0xD6, 0xFF, 0x39, 0x0F, 0x30, - 0x3F, 0xFF, 0xFF, 0xA6, 0x1A, 0x40, 0x0D, 0xD8, 0xFF, 0xAD, 0x35, 0x05, 0x41, 0xB6, 0xFF, 0xD5, - 0x10, 0x66, 0x06, 0x21, 0xD8, 0x19, 0xCD, 0x13, 0x02, 0xEF, 0x00, 0x41, 0x00, 0x47, 0x88, 0x4F, - 0x08, 0x00, 0x21, 0x16, 0x24, 0x17, 0x00, 0x47, 0x00, 0x98, 0xFF, 0xB0, 0x08, 0x00, 0x22, 0x10, - 0x10, 0xD4, 0x07, 0x01, 0x85, 0x00, 0x82, 0x3C, 0x9D, 0xD4, 0xF6, 0xF6, 0xD2, 0x89, 0x15, 0x0E, - 0x00, 0xB1, 0x0D, 0xA0, 0xFF, 0xFF, 0xD5, 0xAB, 0xB1, 0xE6, 0xFF, 0xED, 0x3B, 0xA2, 0x00, 0x40, - 0xC4, 0xFF, 0xC4, 0x29, 0x2E, 0x01, 0x41, 0x6D, 0xFC, 0xEB, 0x18, 0xAA, 0x04, 0x13, 0xB7, 0x6E, - 0x0C, 0x10, 0x76, 0x98, 0x02, 0xF2, 0x85, 0x15, 0xF6, 0xF6, 0x18, 0x00, 0x24, 0xB7, 0xF4, 0xA0, - 0xFC, 0xAF, 0x05, 0xE3, 0xEC, 0x02, 0x00, 0x6D, 0xFF, 0x92, 0x00, 0x15, 0xE6, 0xFF, 0xCF, 0xD5, - 0xFF, 0x8B, 0x00, 0x96, 0xFF, 0x23, 0x00, 0xAD, 0xFF, 0x3F, 0x00, 0x93, 0xFF, 0xA9, 0x02, 0x92, - 0xFF, 0x65, 0x00, 0x70, 0xFF, 0x37, 0x00, 0xDA, 0xFF, 0x0D, 0x07, 0xF2, 0xFF, 0x1E, 0x00, 0xB6, - 0xFF, 0x3F, 0x00, 0x6C, 0xFF, 0x34, 0x01, 0xFA, 0xEA, 0x00, 0x35, 0xFF, 0xDD, 0x00, 0x00, 0xDA, - 0xFF, 0x19, 0x00, 0x8D, 0xFF, 0x1A, 0x06, 0xFF, 0xDF, 0x00, 0x4B, 0xFF, 0xCD, 0x00, 0x05, 0xFA, - 0xF3, 0x01, 0x02, 0xD6, 0xDE, 0x01, 0x01, 0xFA, 0xEB, 0x00, 0x38, 0xFF, 0xF7, 0x33, 0x7C, 0xFF, - 0xD9, 0x00, 0x6C, 0xFF, 0x79, 0x00, 0x00, 0xDE, 0xFF, 0x14, 0x06, 0xE2, 0xFF, 0xFF, 0xF5, 0xF6, - 0xFA, 0xC3, 0xFF, 0xD5, 0x0A, 0x00, 0x00, 0x9D, 0xFF, 0x64, 0x00, 0x30, 0xBF, 0xD7, 0x57, 0x6C, - 0xF2, 0xF4, 0xA6, 0x16, 0x00, 0x00, 0x00, 0x3A, 0xFF, 0xE1, 0x11, 0xE9, 0x01, 0x03, 0x65, 0x01, - 0x41, 0x9F, 0xFF, 0xD4, 0x37, 0x10, 0x00, 0x13, 0x0C, 0x65, 0x06, 0x94, 0x9B, 0xFF, 0xFF, 0xDA, - 0xAE, 0xA4, 0xBC, 0xE8, 0x9A, 0xFF, 0x00, 0xA8, 0x3B, 0xA0, 0xD8, 0xFA, 0xFC, 0xE0, 0xBA, 0x68, - 0x00, 0x00, 0xF0, 0x0B, 0x41, 0x06, 0xF5, 0xFC, 0xD2, 0x09, 0x00, 0x53, 0x31, 0xFF, 0xFF, 0xFD, - 0x0B, 0xBE, 0x09, 0x01, 0xD4, 0x03, 0x41, 0x00, 0x97, 0xFF, 0xEE, 0xB1, 0x0B, 0x41, 0x00, 0xCA, - 0xFF, 0xA0, 0x6B, 0x0A, 0x61, 0x06, 0xF9, 0xFF, 0x4D, 0xFF, 0xD3, 0x2C, 0x00, 0x50, 0xEC, 0x0E, - 0xFF, 0xFD, 0x0A, 0x2C, 0x00, 0x50, 0xC3, 0x00, 0xE4, 0xFF, 0x39, 0x2C, 0x00, 0x50, 0x99, 0x00, - 0xBA, 0xFF, 0x6C, 0x2C, 0x00, 0x00, 0xB8, 0x04, 0x10, 0x9F, 0x2C, 0x00, 0x50, 0xB9, 0xA4, 0xC4, - 0xFF, 0xD2, 0x58, 0x00, 0xF1, 0x09, 0x1B, 0x00, 0x3C, 0xFF, 0xFC, 0x09, 0x64, 0xFF, 0xF0, 0x01, - 0x00, 0x11, 0xFF, 0xFF, 0x38, 0x97, 0xFF, 0xC5, 0x00, 0x00, 0x00, 0xE6, 0xFF, 0x6B, 0x30, 0x04, - 0x01, 0xC0, 0x00, 0xF0, 0x09, 0xF5, 0xFC, 0xFC, 0xFA, 0xE5, 0xA4, 0x21, 0x00, 0xF8, 0xFF, 0xD5, - 0xAB, 0xE4, 0xFF, 0xE0, 0x0A, 0xF8, 0xFF, 0x88, 0x00, 0x0D, 0xED, 0xFF, 0x4D, 0x08, 0x00, 0x41, - 0x00, 0xC5, 0xFF, 0x6D, 0x08, 0x00, 0xC0, 0xD8, 0xFF, 0x5B, 0xF8, 0xFF, 0x88, 0x03, 0x52, 0xFF, - 0xF3, 0x18, 0xF8, 0xB7, 0x02, 0x20, 0xE9, 0x3C, 0x30, 0x00, 0x50, 0xA9, 0xE5, 0xFF, 0xCF, 0x17, - 0x20, 0x00, 0x41, 0x0A, 0xE2, 0xFF, 0x8E, 0x28, 0x00, 0x31, 0x9F, 0xFF, 0xCB, 0x08, 0x00, 0x30, - 0x99, 0xFF, 0xD2, 0x08, 0x00, 0xC0, 0x03, 0xD5, 0xFF, 0xA9, 0xF8, 0xFF, 0xD2, 0x9F, 0xD6, 0xFF, - 0xFE, 0x3E, 0x38, 0x00, 0x36, 0xF7, 0xC8, 0x4B, 0x00, 0x01, 0x70, 0x04, 0x7A, 0xD8, 0xF8, 0xED, - 0xB2, 0x25, 0x50, 0x02, 0xF1, 0x13, 0xFA, 0xAE, 0xDA, 0xFF, 0xE0, 0x07, 0x03, 0xEE, 0xFF, 0x86, - 0x00, 0x16, 0xFF, 0xFF, 0x48, 0x20, 0xFF, 0xFF, 0x5D, 0x00, 0x00, 0xFB, 0xFF, 0x6B, 0x2F, 0xFF, - 0xFF, 0x58, 0x00, 0x00, 0xF8, 0xFF, 0x70, 0x30, 0x09, 0x00, 0x32, 0x10, 0x10, 0x07, 0x09, 0x00, - 0x00, 0x96, 0x0C, 0x0A, 0x09, 0x00, 0x35, 0x33, 0x34, 0x17, 0x2D, 0x00, 0xFA, 0x15, 0x21, 0xFF, - 0xFF, 0x5E, 0x00, 0x01, 0xFC, 0xFF, 0x69, 0x03, 0xEF, 0xFF, 0x89, 0x00, 0x1B, 0xFF, 0xFF, 0x43, - 0x00, 0x83, 0xFF, 0xFA, 0xAB, 0xD5, 0xFF, 0xDB, 0x04, 0x00, 0x03, 0x7B, 0xDF, 0xFC, 0xF2, 0xB5, - 0x25, 0x00, 0x00, 0x01, 0x31, 0xE4, 0xA7, 0x23, 0xD0, 0x00, 0x40, 0xE8, 0xFF, 0xE6, 0x0D, 0xB8, - 0x00, 0x40, 0x25, 0xFF, 0xFF, 0x63, 0x08, 0x00, 0x41, 0x01, 0xF8, 0xFF, 0x8C, 0xD0, 0x00, 0x31, - 0xF5, 0xFF, 0x98, 0x08, 0x00, 0x1F, 0xF4, 0x08, 0x00, 0x0C, 0x03, 0x28, 0x00, 0x40, 0x01, 0xFC, - 0xFF, 0x88, 0x08, 0x00, 0x20, 0x2C, 0xFF, 0x38, 0x01, 0x60, 0xD2, 0xA2, 0xE6, 0xFF, 0xE0, 0x09, - 0x00, 0x01, 0x65, 0xE9, 0xAC, 0x21, 0x00, 0x07, 0x06, 0x78, 0x00, 0x91, 0xFC, 0xFC, 0xC9, 0xF8, - 0xFF, 0xD5, 0xA4, 0xA4, 0x83, 0x3C, 0x00, 0x1F, 0x00, 0x06, 0x00, 0x01, 0x41, 0xFF, 0xFC, 0xFC, - 0x1C, 0x24, 0x00, 0x1F, 0x12, 0x24, 0x00, 0x07, 0x41, 0xD2, 0x9C, 0x9C, 0x82, 0x96, 0x01, 0x19, - 0xD4, 0x5C, 0x00, 0x11, 0xAE, 0x38, 0x00, 0x1F, 0x71, 0x5C, 0x00, 0x0A, 0x11, 0x0C, 0x24, 0x00, - 0x1E, 0x08, 0x24, 0x00, 0x0E, 0x06, 0x00, 0x05, 0xB8, 0x01, 0x70, 0x03, 0x77, 0xD8, 0xF9, 0xEE, - 0xB3, 0x2C, 0xA8, 0x03, 0xF0, 0x02, 0xFA, 0xB1, 0xD6, 0xFF, 0xEB, 0x0F, 0x02, 0xEC, 0xFF, 0x87, - 0x00, 0x0C, 0xF9, 0xFF, 0x5E, 0x1D, 0xFF, 0xD6, 0x06, 0x41, 0xE0, 0xFF, 0x85, 0x2D, 0x8B, 0x01, - 0x3F, 0x94, 0xAC, 0x5F, 0xAF, 0x01, 0x03, 0x50, 0x20, 0xFC, 0xFC, 0xFC, 0x9A, 0x09, 0x00, 0x52, - 0x15, 0xA4, 0xDF, 0xFF, 0x9C, 0x2D, 0x00, 0xF3, 0x1B, 0xA5, 0xFF, 0x9C, 0x19, 0xFF, 0xFF, 0x61, - 0x00, 0x00, 0xAF, 0xFF, 0x9C, 0x01, 0xE6, 0xFF, 0x90, 0x00, 0x05, 0xE2, 0xFF, 0x9C, 0x00, 0x80, - 0xFF, 0xFC, 0xAF, 0xCB, 0xF6, 0xFF, 0x9C, 0x00, 0x05, 0x82, 0xE4, 0xFD, 0xD0, 0x49, 0xFF, 0x9C, - 0x00, 0x00, 0x0A, 0xB8, 0x01, 0xFF, 0x01, 0xF1, 0xFC, 0x8E, 0x00, 0x00, 0xA2, 0xFC, 0xD9, 0xF4, - 0xFF, 0x90, 0x00, 0x00, 0xA4, 0xFF, 0xDC, 0x08, 0x00, 0x0F, 0x40, 0xFF, 0xFC, 0xFC, 0xFF, 0x08, - 0x00, 0x4E, 0xD8, 0xA4, 0xA4, 0xDF, 0x30, 0x00, 0x0F, 0x08, 0x00, 0x0D, 0x22, 0x05, 0x03, 0x78, - 0x00, 0x6F, 0xE1, 0xFC, 0x92, 0xE4, 0xFF, 0x94, 0x03, 0x00, 0x11, 0x44, 0x00, 0x00, 0x06, 0x05, - 0xEC, 0x03, 0x85, 0xFC, 0xFC, 0x7E, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x05, 0x00, 0x1A, 0x7E, 0x05, - 0x00, 0x15, 0x7D, 0x05, 0x00, 0x12, 0x7C, 0x05, 0x00, 0x40, 0x02, 0xFF, 0xFF, 0x7B, 0xFE, 0x07, - 0xA9, 0x6C, 0xA9, 0xF4, 0xFF, 0xFF, 0x30, 0xD8, 0xFD, 0xE3, 0x70, 0xB4, 0x02, 0x51, 0x86, 0x00, - 0x0B, 0xEB, 0xFC, 0x9C, 0x03, 0xB0, 0x6A, 0xFF, 0xF4, 0x10, 0xF8, 0xFF, 0x88, 0x02, 0xDB, 0xFF, - 0x98, 0xAA, 0x01, 0x40, 0x4F, 0xFF, 0xFF, 0x2D, 0x08, 0x00, 0x30, 0xC1, 0xFF, 0xC0, 0xBA, 0x01, - 0x11, 0xBC, 0xA8, 0x0A, 0x01, 0x1E, 0x02, 0x10, 0x1E, 0x08, 0x00, 0x20, 0xEF, 0xEF, 0x5E, 0x0A, - 0x70, 0xF8, 0xFF, 0x91, 0x98, 0xFF, 0xD6, 0x01, 0x28, 0x00, 0x40, 0x3B, 0xFF, 0xFF, 0x36, 0x08, - 0x00, 0x41, 0x01, 0xDD, 0xFF, 0x96, 0xEA, 0x01, 0x43, 0x81, 0xFF, 0xEF, 0x08, 0x04, 0x03, 0x11, - 0x57, 0xFA, 0x01, 0x36, 0xC7, 0xFF, 0xB8, 0x58, 0x02, 0x1E, 0x86, 0x28, 0x02, 0x0F, 0x06, 0x00, - 0x22, 0x42, 0xDF, 0xB8, 0xB8, 0x99, 0xB4, 0x02, 0x22, 0x0C, 0x0A, 0x5C, 0x00, 0xF0, 0x09, 0xC4, - 0xFC, 0xE2, 0x00, 0x00, 0x00, 0x42, 0xFC, 0xFC, 0x5D, 0xCB, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x78, - 0xFF, 0xFF, 0x62, 0xCF, 0xFF, 0xFF, 0x4D, 0x2D, 0x10, 0xF5, 0x61, 0xFF, 0x66, 0xD4, 0xFF, 0xFF, - 0x81, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0x6B, 0xD8, 0xFF, 0xF4, 0xB5, 0x00, 0x18, 0xFF, 0xF6, 0xFF, - 0x6F, 0xDC, 0xFF, 0xBF, 0xE9, 0x01, 0x4D, 0xFF, 0xC0, 0xFF, 0x73, 0xE0, 0xFF, 0x85, 0xFF, 0x1D, - 0x82, 0xFF, 0x88, 0xFF, 0x77, 0xE5, 0xFF, 0x4C, 0xFF, 0x51, 0xB7, 0xE4, 0x6B, 0xFF, 0x7C, 0xE9, - 0xFF, 0x14, 0xFF, 0x86, 0xED, 0xAF, 0x66, 0xFF, 0x80, 0xED, 0xFE, 0x00, 0xDC, 0xDA, 0xFF, 0x7A, - 0x61, 0xFF, 0x84, 0xF2, 0xFA, 0x00, 0xA7, 0xFF, 0xFF, 0x45, 0x5D, 0xFF, 0x89, 0xF6, 0xF6, 0x00, - 0x72, 0xFF, 0xFF, 0x11, 0x58, 0xFF, 0x8D, 0xFA, 0xF2, 0x00, 0x3D, 0xFF, 0xDB, 0x00, 0x54, 0xFF, - 0x91, 0xFE, 0xEE, 0x00, 0x0B, 0xFD, 0xA6, 0x00, 0x4F, 0xFF, 0x96, 0x68, 0x01, 0xA0, 0xEA, 0x09, - 0x00, 0x00, 0xDD, 0xFC, 0x34, 0xF8, 0xFF, 0x62, 0xD8, 0x02, 0x52, 0x34, 0xF8, 0xFF, 0xCF, 0x01, - 0x08, 0x00, 0x23, 0xFF, 0x3B, 0x08, 0x00, 0x12, 0xA8, 0x08, 0x00, 0x31, 0xFC, 0xFB, 0x1A, 0x08, - 0x00, 0x31, 0xAD, 0xFF, 0x82, 0x08, 0x00, 0x40, 0x47, 0xFE, 0xE9, 0xE7, 0x08, 0x00, 0x41, 0x28, - 0xB3, 0xFF, 0xFF, 0x08, 0x00, 0x13, 0x4A, 0x08, 0x00, 0x22, 0x03, 0xDF, 0x08, 0x00, 0x23, 0x00, - 0x78, 0x08, 0x00, 0x22, 0x16, 0xFA, 0x08, 0x00, 0x55, 0x00, 0xA5, 0xFF, 0x34, 0x0A, 0x1C, 0x05, - 0x60, 0x79, 0xD7, 0xF9, 0xEE, 0xB5, 0x2E, 0x1C, 0x05, 0xF0, 0x04, 0xFB, 0xB1, 0xD5, 0xFF, 0xF0, - 0x18, 0x03, 0xF0, 0xFF, 0x87, 0x00, 0x0B, 0xF2, 0xFF, 0x79, 0x21, 0xFF, 0xFF, 0x5F, 0x10, 0x12, - 0x21, 0xAB, 0x2F, 0x6D, 0x03, 0x4F, 0xD0, 0xFF, 0xBC, 0x30, 0x09, 0x00, 0x18, 0x20, 0xBB, 0x1F, - 0x1C, 0x05, 0xFA, 0x0F, 0x00, 0xD3, 0xFF, 0xAA, 0x02, 0xEC, 0xFF, 0x85, 0x00, 0x09, 0xF2, 0xFF, - 0x79, 0x00, 0x82, 0xFF, 0xF9, 0xA9, 0xCE, 0xFF, 0xF0, 0x18, 0x00, 0x04, 0x7A, 0xDA, 0xFC, 0xF2, - 0xBE, 0x31, 0x1C, 0x05, 0x40, 0xFC, 0xF3, 0xBA, 0x2C, 0x1C, 0x05, 0x50, 0xA8, 0xDD, 0xFF, 0xE8, - 0x0E, 0xBE, 0x01, 0x41, 0x10, 0xF8, 0xFF, 0x59, 0xC6, 0x01, 0x31, 0xDC, 0xFF, 0x7E, 0x08, 0x00, - 0x30, 0xE5, 0xFF, 0x7A, 0x80, 0x02, 0x41, 0x4C, 0xFF, 0xFF, 0x48, 0xD2, 0x01, 0x30, 0xFF, 0xBA, - 0x02, 0x56, 0x04, 0x33, 0x96, 0x57, 0x04, 0xEE, 0x01, 0x1F, 0x00, 0x08, 0x00, 0x16, 0x23, 0x0A, - 0x09, 0x34, 0x08, 0x0C, 0x00, 0x01, 0x14, 0x17, 0x00, 0x01, 0x1F, 0x78, 0x00, 0x01, 0x3D, 0x13, - 0x78, 0x00, 0x01, 0x11, 0xF1, 0x00, 0x01, 0x42, 0xFD, 0xFF, 0xFA, 0x3A, 0x82, 0x01, 0x32, 0x90, - 0xFF, 0xAA, 0x32, 0x10, 0x43, 0x04, 0xAC, 0xF7, 0x09, 0xF9, 0x04, 0x2A, 0x4D, 0x00, 0x1C, 0x01, - 0x40, 0xF9, 0xE3, 0xA6, 0x27, 0x1C, 0x01, 0x50, 0xAA, 0xE8, 0xFF, 0xEB, 0x15, 0xC4, 0x00, 0x41, - 0x16, 0xFB, 0xFF, 0x69, 0xCC, 0x00, 0x12, 0xD6, 0x38, 0x06, 0xC2, 0x01, 0xE5, 0xFF, 0x82, 0xF8, - 0xFF, 0x88, 0x07, 0x64, 0xFF, 0xFF, 0x50, 0x1C, 0x01, 0x90, 0xB6, 0x04, 0xF8, 0xFF, 0xD5, 0xC0, - 0xFF, 0xFA, 0x0A, 0xF4, 0x00, 0x41, 0x20, 0xFF, 0xFF, 0x45, 0xFC, 0x00, 0x31, 0xDE, 0xFF, 0x8D, - 0x08, 0x00, 0x31, 0x9C, 0xFF, 0xD5, 0x08, 0x00, 0x40, 0x5A, 0xFF, 0xFF, 0x1D, 0x08, 0x00, 0x43, - 0x19, 0xFF, 0xFF, 0x64, 0x50, 0x00, 0x15, 0xAC, 0xC8, 0x09, 0xF0, 0x01, 0x16, 0xA1, 0xEB, 0xF7, - 0xCC, 0x49, 0x00, 0x01, 0xC8, 0xFF, 0xDA, 0xB4, 0xFF, 0xFA, 0x27, 0x2F, 0xDA, 0x03, 0x40, 0xAE, - 0xFF, 0x87, 0x4A, 0x68, 0x0B, 0x70, 0x76, 0xD2, 0x72, 0x2D, 0xFF, 0xFF, 0xB1, 0x22, 0x0A, 0x50, - 0x02, 0xD0, 0xFF, 0xFF, 0xB6, 0x92, 0x08, 0x50, 0x26, 0xE8, 0xFF, 0xFF, 0xCA, 0x78, 0x16, 0x50, - 0x23, 0xDB, 0xFF, 0xFF, 0xC9, 0x5A, 0x09, 0xF3, 0x1F, 0x16, 0xCC, 0xFF, 0xFF, 0x74, 0x02, 0x2A, - 0x52, 0x00, 0x11, 0xE5, 0xFF, 0xD0, 0x44, 0xFF, 0xF5, 0x03, 0x00, 0x89, 0xFF, 0xED, 0x15, 0xFD, - 0xFF, 0x43, 0x00, 0x88, 0xFF, 0xD1, 0x00, 0xA1, 0xFF, 0xEF, 0xA8, 0xF5, 0xFF, 0x67, 0x00, 0x09, - 0x8B, 0xE4, 0xFE, 0xDC, 0x6D, 0x01, 0x07, 0x78, 0x00, 0x11, 0xED, 0xC4, 0x0C, 0xD3, 0xFC, 0x1C, - 0x9A, 0xA4, 0xDE, 0xFF, 0xF5, 0xA4, 0xA4, 0x12, 0x00, 0x00, 0xA0, 0xEE, 0x0D, 0x0F, 0x08, 0x00, - 0x43, 0x04, 0x0C, 0x03, 0xA1, 0x14, 0xFC, 0xFC, 0x5B, 0x00, 0x00, 0xC5, 0xFC, 0xA6, 0x14, 0xC4, - 0x01, 0x3F, 0xC8, 0xFF, 0xA8, 0x09, 0x00, 0x2C, 0x11, 0x13, 0x09, 0x00, 0xF7, 0x17, 0xC9, 0xFF, - 0xA6, 0x06, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0xCF, 0xFF, 0x96, 0x00, 0xD6, 0xFF, 0x95, 0x00, 0x0D, - 0xF5, 0xFF, 0x68, 0x00, 0x6D, 0xFF, 0xFE, 0xAE, 0xD3, 0xFF, 0xED, 0x14, 0x00, 0x02, 0x74, 0xDB, - 0xFB, 0xF3, 0xBC, 0x32, 0xF8, 0x06, 0xF0, 0x1B, 0x81, 0xFC, 0xB1, 0x00, 0x00, 0x01, 0xEE, 0xFC, - 0x4E, 0x51, 0xFF, 0xE2, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0x1C, 0x1E, 0xFF, 0xFF, 0x13, 0x00, 0x4D, - 0xFF, 0xE9, 0x01, 0x01, 0xEC, 0xFF, 0x42, 0x00, 0x7A, 0xFF, 0xB6, 0x00, 0x00, 0xB9, 0xFF, 0x71, - 0x00, 0xA7, 0xC0, 0x0D, 0xF0, 0x01, 0x86, 0xFF, 0xA1, 0x00, 0xD4, 0xFF, 0x4F, 0x00, 0x00, 0x53, - 0xFF, 0xD0, 0x07, 0xFC, 0xFF, 0x1C, 0x32, 0x00, 0x40, 0xFA, 0x35, 0xFF, 0xE9, 0xCC, 0x0B, 0x41, - 0xED, 0xFF, 0x8B, 0xFF, 0xBE, 0x11, 0x31, 0xBA, 0xFF, 0xE5, 0xEC, 0x0D, 0x51, 0x00, 0x87, 0xFF, - 0xFF, 0xFF, 0x4C, 0x0B, 0x30, 0x54, 0xFF, 0xFF, 0x2C, 0x00, 0x41, 0x00, 0x00, 0x21, 0xFF, 0x2C, - 0x00, 0x00, 0x72, 0x00, 0x02, 0x2C, 0x00, 0x32, 0x00, 0x0C, 0x0C, 0x88, 0x00, 0xF0, 0x0E, 0x5E, - 0xFC, 0xB9, 0x00, 0x00, 0xCE, 0xFB, 0x0B, 0x00, 0x7B, 0xFC, 0x90, 0x3B, 0xFF, 0xDB, 0x00, 0x03, - 0xF8, 0xFF, 0x33, 0x00, 0x9C, 0xFF, 0x6E, 0x17, 0xFF, 0xFA, 0x02, 0x24, 0x39, 0x09, 0xF0, 0x15, - 0xBC, 0xFF, 0x4A, 0x01, 0xF3, 0xFF, 0x1B, 0x4E, 0xFF, 0xFF, 0x88, 0x00, 0xDC, 0xFF, 0x26, 0x00, - 0xCF, 0xFF, 0x3B, 0x77, 0xFF, 0xFC, 0xB2, 0x02, 0xFA, 0xFD, 0x06, 0x00, 0xAB, 0xFF, 0x5A, 0xA1, - 0xFA, 0xC2, 0xDD, 0x1B, 0x4F, 0x0E, 0xF0, 0x07, 0x87, 0xFF, 0x7A, 0xCB, 0xD3, 0x94, 0xFE, 0x45, - 0xFF, 0xBA, 0x00, 0x00, 0x63, 0xFF, 0x9B, 0xF4, 0xA8, 0x69, 0xFF, 0x8C, 0xFF, 0x96, 0xFD, 0x0B, - 0x90, 0xD8, 0xFF, 0x7E, 0x3F, 0xFF, 0xD7, 0xFF, 0x72, 0x00, 0x3D, 0x09, 0x50, 0xFF, 0x53, 0x14, - 0xFF, 0xFF, 0x35, 0x16, 0x20, 0x02, 0xF6, 0xC2, 0x11, 0x41, 0xEA, 0xFF, 0xFF, 0x2A, 0x91, 0x16, - 0x60, 0xFA, 0x05, 0x00, 0xBF, 0xFF, 0xFE, 0x24, 0x03, 0x60, 0xAF, 0xFF, 0xD4, 0x00, 0x00, 0x95, - 0x16, 0x01, 0x50, 0x00, 0x00, 0x8B, 0xFF, 0xA9, 0x6D, 0x0F, 0x43, 0xBE, 0x00, 0x00, 0x08, 0x38, - 0x01, 0xF0, 0x00, 0x8B, 0xFC, 0xC9, 0x00, 0x00, 0x40, 0xFC, 0xE7, 0x06, 0x27, 0xFF, 0xFF, 0x35, - 0x00, 0x9B, 0x4E, 0x07, 0x60, 0xBD, 0xFF, 0x9F, 0x07, 0xEF, 0xFF, 0xA8, 0x27, 0x50, 0xFF, 0xF7, - 0x61, 0xFF, 0xCF, 0x70, 0x0D, 0x32, 0xE7, 0xFF, 0xF4, 0xCB, 0x12, 0x41, 0x83, 0xFF, 0xFF, 0xFA, - 0x25, 0x19, 0x21, 0x2B, 0xFF, 0x7D, 0x0C, 0x41, 0x00, 0x00, 0x67, 0xFF, 0x0C, 0x17, 0x00, 0x89, - 0x06, 0x20, 0xFF, 0xFA, 0x2F, 0x10, 0x40, 0x27, 0xFF, 0xF3, 0xE1, 0xA9, 0x0B, 0xF0, 0x0F, 0x00, - 0x86, 0xFF, 0x9F, 0x78, 0xFF, 0xDF, 0x03, 0x00, 0x03, 0xE4, 0xFF, 0x43, 0x16, 0xF9, 0xFF, 0x4A, - 0x00, 0x45, 0xFF, 0xE4, 0x03, 0x00, 0xA4, 0xFF, 0xB3, 0x00, 0xA5, 0xFF, 0x8A, 0xA9, 0x0B, 0x26, - 0xFE, 0x1F, 0x88, 0x00, 0xF0, 0x09, 0xAD, 0xFC, 0xA4, 0x00, 0x00, 0x50, 0xFC, 0xF0, 0x08, 0x5E, - 0xFF, 0xEF, 0x05, 0x00, 0x9B, 0xFF, 0xAA, 0x00, 0x11, 0xFB, 0xFF, 0x41, 0x01, 0xE5, 0x7D, 0x08, - 0x70, 0xB8, 0xFF, 0x8F, 0x30, 0xFF, 0xF9, 0x0E, 0x90, 0x15, 0x40, 0xDE, 0x7B, 0xFF, 0xB4, 0x23, - 0x03, 0x51, 0xFD, 0xFF, 0xE4, 0xFF, 0x62, 0x55, 0x13, 0x31, 0xFF, 0xFF, 0xFD, 0x91, 0x00, 0x42, - 0x6D, 0xFF, 0xFF, 0xBE, 0x53, 0x11, 0x32, 0xFF, 0xFF, 0x71, 0x5B, 0x0D, 0x01, 0x4A, 0x02, 0x0F, - 0x09, 0x00, 0x14, 0x04, 0xC4, 0x13, 0x11, 0x38, 0x47, 0x03, 0xD1, 0xCD, 0x24, 0xA4, 0xA4, 0xA4, - 0xEF, 0xFF, 0xB2, 0x00, 0x00, 0x00, 0x11, 0xFA, 0x22, 0x00, 0x30, 0x61, 0xFF, 0xF7, 0x21, 0x00, - 0x11, 0xB7, 0xF6, 0x00, 0x40, 0x13, 0xFB, 0xFF, 0x56, 0x0A, 0x16, 0x31, 0xFF, 0xF4, 0x0B, 0x28, - 0x02, 0x00, 0xF7, 0x0F, 0x21, 0x15, 0xFC, 0xD2, 0x13, 0x30, 0x66, 0xFF, 0xF1, 0x75, 0x01, 0x32, - 0xBC, 0xFF, 0xA1, 0xA7, 0x00, 0x11, 0x4A, 0x13, 0x11, 0x61, 0xFF, 0xA2, 0x9C, 0x9C, 0x82, 0x68, - 0x63, 0x04, 0x10, 0xD4, 0x60, 0x14, 0x02, 0x48, 0x05, 0x10, 0x05, 0x6B, 0x00, 0x90, 0x14, 0x05, - 0xFF, 0xFF, 0xA7, 0xA4, 0x0D, 0x05, 0xFF, 0x32, 0x0E, 0x02, 0x06, 0x00, 0x1F, 0x06, 0x06, 0x00, - 0x04, 0x1F, 0x07, 0x06, 0x00, 0x04, 0x1F, 0x08, 0x06, 0x00, 0x01, 0x41, 0xA3, 0xA0, 0x0A, 0x08, - 0xBA, 0x14, 0x06, 0xDC, 0x00, 0x31, 0x40, 0xFC, 0x5A, 0xEB, 0x00, 0x21, 0xF5, 0xA2, 0x0F, 0x00, - 0x32, 0xB4, 0xE8, 0x02, 0x39, 0x01, 0x00, 0x54, 0x06, 0x41, 0x00, 0x26, 0xFF, 0x78, 0xD1, 0x02, - 0x12, 0xDE, 0x46, 0x2F, 0x21, 0x97, 0xFB, 0x8E, 0x0F, 0x12, 0x50, 0xF9, 0x02, 0x31, 0x0E, 0xFB, - 0x96, 0x16, 0x00, 0x21, 0xC1, 0xDE, 0xF6, 0x02, 0x20, 0x7A, 0xFF, 0xA3, 0x0B, 0x22, 0x00, 0x33, - 0x05, 0x0D, 0x31, 0x02, 0xEA, 0xB4, 0x1D, 0x00, 0x20, 0xA4, 0xF5, 0xC2, 0x00, 0x03, 0x2C, 0x16, - 0x80, 0x9E, 0xFC, 0xFC, 0xFC, 0x77, 0x67, 0xA4, 0xDB, 0x56, 0x00, 0x1F, 0x98, 0x05, 0x00, 0x2B, - 0x81, 0x64, 0xA0, 0xD9, 0xFF, 0x78, 0xA0, 0xFF, 0xFF, 0xA1, 0x00, 0x24, 0x08, 0x08, 0x2C, 0x16, - 0x31, 0x4D, 0xFC, 0xFC, 0x28, 0x15, 0x21, 0xBB, 0xFF, 0x83, 0x0D, 0x60, 0x29, 0xFF, 0xB9, 0xD2, - 0xF9, 0x16, 0xEA, 0x02, 0xF1, 0x09, 0x5D, 0x76, 0xFF, 0x7D, 0x00, 0x0F, 0xF4, 0xF5, 0x0C, 0x1D, - 0xFE, 0xE7, 0x06, 0x2C, 0x84, 0x61, 0x00, 0x00, 0x6E, 0x84, 0x21, 0x06, 0x07, 0x02, 0x98, 0x00, - 0x11, 0xA0, 0x01, 0x00, 0x33, 0x0A, 0xFF, 0xFF, 0x1C, 0x01, 0x31, 0x05, 0x05, 0x04, 0x54, 0x28, - 0xF0, 0x00, 0x04, 0xC8, 0xFC, 0x61, 0x00, 0x00, 0x2A, 0xF8, 0xB7, 0x00, 0x00, 0x00, 0x73, 0xFB, - 0x12, 0x26, 0x16, 0x42, 0x01, 0x08, 0x08, 0x0A, 0xD4, 0x05, 0xE0, 0x24, 0xAF, 0xF1, 0xF1, 0xA7, - 0x10, 0x00, 0x01, 0xCF, 0xFF, 0xC9, 0xE5, 0xFF, 0x8D, 0xFE, 0x03, 0xA1, 0x17, 0x70, 0xFF, 0xD3, - 0x00, 0x14, 0x5C, 0x5C, 0x03, 0x70, 0x0E, 0x05, 0x21, 0x40, 0xBF, 0xB6, 0x13, 0xF4, 0x18, 0x7C, - 0xFF, 0xD2, 0x87, 0xFF, 0xE0, 0x00, 0x22, 0xFF, 0xFD, 0x1E, 0x64, 0xFF, 0xE0, 0x00, 0x4F, 0xFF, - 0xEF, 0x02, 0x6B, 0xFF, 0xE1, 0x00, 0x2A, 0xFF, 0xFF, 0xB7, 0xE4, 0xFF, 0xEB, 0x00, 0x00, 0x7D, - 0xF3, 0xDB, 0x51, 0xFF, 0xFE, 0x05, 0x2C, 0x06, 0x41, 0x18, 0xFC, 0xFC, 0x3C, 0x08, 0x00, 0x2F, - 0xFF, 0xFF, 0x08, 0x00, 0x05, 0x40, 0x88, 0xD4, 0xF0, 0x70, 0x08, 0x00, 0xD1, 0xDB, 0xC4, 0xFF, - 0xFD, 0x1A, 0x18, 0xFF, 0xFF, 0x3D, 0x09, 0xFB, 0xFF, 0x56, 0x20, 0x00, 0x31, 0xED, 0xFF, 0x64, - 0x08, 0x00, 0x1B, 0xEC, 0x08, 0x00, 0x30, 0xED, 0xFF, 0x63, 0x08, 0x00, 0xF3, 0x07, 0x07, 0xFB, - 0xFF, 0x50, 0x18, 0xFF, 0xFF, 0xCF, 0xBB, 0xFF, 0xFA, 0x15, 0x18, 0xFF, 0xFF, 0x95, 0xE0, 0xF1, - 0x68, 0x00, 0x07, 0x07, 0xD0, 0x00, 0xF1, 0x0D, 0x30, 0xC3, 0xF6, 0xED, 0xA4, 0x10, 0x03, 0xE0, - 0xFF, 0xC8, 0xE3, 0xFF, 0x8C, 0x2F, 0xFF, 0xFF, 0x19, 0x64, 0xFF, 0xCB, 0x4A, 0xFF, 0xFF, 0x09, - 0x44, 0xC4, 0xA3, 0x4C, 0x40, 0x02, 0x13, 0x00, 0x07, 0x00, 0x00, 0x15, 0x00, 0xF7, 0x09, 0x54, - 0xF4, 0xCB, 0x30, 0xFF, 0xFF, 0x18, 0x65, 0xFF, 0xC9, 0x04, 0xE2, 0xFF, 0xC8, 0xE2, 0xFF, 0x89, - 0x00, 0x34, 0xC8, 0xFA, 0xF0, 0xA3, 0x0E, 0xBC, 0x10, 0x61, 0x00, 0x00, 0x00, 0x2C, 0xFC, 0xFC, - 0x14, 0x1F, 0x3E, 0x2C, 0xFF, 0xFF, 0x08, 0x00, 0xF0, 0x04, 0x4C, 0xE3, 0xE9, 0x9A, 0xFF, 0xFF, - 0x28, 0x04, 0xE9, 0xFF, 0xD2, 0xCE, 0xFF, 0xFF, 0x28, 0x2F, 0xFF, 0xFF, 0x27, 0x18, 0x00, 0x40, - 0x46, 0xFF, 0xFF, 0x11, 0x08, 0x00, 0x48, 0x48, 0xFF, 0xFF, 0x10, 0x08, 0x00, 0x13, 0x47, 0x18, - 0x00, 0x40, 0x34, 0xFF, 0xFF, 0x22, 0x08, 0x00, 0x50, 0x06, 0xF4, 0xFF, 0xCC, 0xC5, 0x48, 0x00, - 0x84, 0x5B, 0xE6, 0xED, 0x9C, 0xFF, 0xFF, 0x28, 0x08, 0xC8, 0x00, 0xF1, 0x03, 0x2D, 0xC1, 0xF6, - 0xEE, 0x9F, 0x0B, 0x03, 0xDD, 0xFF, 0xC3, 0xDE, 0xFF, 0x83, 0x2E, 0xFF, 0xFF, 0x0F, 0x58, 0xC8, - 0x00, 0x51, 0x9E, 0xBC, 0xFF, 0xE1, 0x4C, 0xE1, 0x01, 0x10, 0xE4, 0xC8, 0x00, 0xF4, 0x14, 0x04, - 0x04, 0x04, 0x4A, 0xFF, 0xFF, 0x04, 0x2B, 0x88, 0x79, 0x30, 0xFF, 0xFF, 0x14, 0x60, 0xFF, 0xD5, - 0x04, 0xE3, 0xFF, 0xCD, 0xE6, 0xFF, 0x8D, 0x00, 0x35, 0xC7, 0xF9, 0xEF, 0xA0, 0x0D, 0x00, 0x00, - 0x05, 0x06, 0x9C, 0x13, 0xC1, 0xAE, 0xF5, 0xF0, 0x0F, 0x00, 0x6D, 0xFF, 0xFC, 0xB3, 0x0D, 0x00, - 0x98, 0x4F, 0x04, 0x10, 0xA0, 0x2D, 0x11, 0xC2, 0xAE, 0xFF, 0xFF, 0xFF, 0xFC, 0x10, 0x71, 0xDE, - 0xFF, 0xE4, 0xA4, 0x0B, 0x12, 0x00, 0x0F, 0x06, 0x00, 0x17, 0x00, 0xE0, 0x04, 0x16, 0xFD, 0xBA, - 0x12, 0xF0, 0x0A, 0x0F, 0x00, 0x00, 0x2A, 0xBB, 0xF6, 0xE5, 0x64, 0x86, 0xD4, 0x01, 0x01, 0xD9, + 0x04, 0x03, 0x0C, 0x01, 0xD4, 0x08, 0x86, 0xF5, 0xFC, 0x47, 0xF8, 0xFF, 0x48, 0x2B, 0x2C, 0xD9, + 0x15, 0xF8, 0x06, 0x23, 0x24, 0x0C, 0xF8, 0xFF, 0x54, 0xF8, 0xFF, 0x54, 0x07, 0xDB, 0x42, 0xA9, + 0xCC, 0x08, 0x15, 0x02, 0x00, 0x07, 0x06, 0x0B, 0x4D, 0x24, 0xF0, 0x20, 0x00, 0x00, 0x01, 0x66, + 0x89, 0x00, 0x00, 0x16, 0xB2, 0xFF, 0x94, 0x00, 0x4B, 0xE9, 0xFF, 0xC8, 0x23, 0x5F, 0xFF, 0xFD, + 0x82, 0x05, 0x00, 0x7C, 0xFF, 0x94, 0x01, 0x00, 0x00, 0x4F, 0xFA, 0xFF, 0xA8, 0x10, 0x00, 0x00, + 0x30, 0xD4, 0xFF, 0xE0, 0x37, 0x00, 0x00, 0x09, 0x90, 0xFF, 0x94, 0x35, 0x00, 0x24, 0x45, 0x79, + 0xE5, 0x1F, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x05, 0x10, 0x03, 0xE0, 0x05, 0x31, 0x9C, 0x31, 0x04, + 0x0E, 0x04, 0x11, 0x50, 0xE2, 0x05, 0x2F, 0x04, 0x02, 0x15, 0x00, 0x02, 0x00, 0x34, 0x00, 0x02, + 0x80, 0x00, 0x12, 0x02, 0xFF, 0x05, 0x21, 0x0C, 0xC4, 0x2E, 0x12, 0xC0, 0x0C, 0xFF, 0xF2, 0x5F, + 0x01, 0x00, 0x00, 0x01, 0x6B, 0xF7, 0xFF, 0xAB, 0xE2, 0x27, 0x40, 0x2A, 0xD0, 0xFF, 0xE6, 0x9D, + 0x00, 0xF0, 0x07, 0x1C, 0xED, 0xFF, 0x08, 0x00, 0x00, 0x47, 0xE8, 0xFF, 0xD1, 0x04, 0x03, 0x8D, + 0xFF, 0xFE, 0x89, 0x07, 0x00, 0x0C, 0xFF, 0xE1, 0x3F, 0x31, 0x00, 0x2A, 0xA2, 0x0F, 0x5A, 0x23, + 0x14, 0x08, 0xA0, 0x01, 0xF1, 0x17, 0x2D, 0xB9, 0xF2, 0xF4, 0xC2, 0x3F, 0x00, 0x09, 0xE7, 0xFF, + 0xD3, 0xC5, 0xFF, 0xF9, 0x28, 0x36, 0xFF, 0xFE, 0x0E, 0x01, 0xC9, 0xFF, 0x87, 0x2A, 0xFF, 0xF7, + 0x07, 0x00, 0xA7, 0xFF, 0xA6, 0x05, 0x33, 0x06, 0x00, 0x01, 0xD6, 0xFF, 0xE5, 0x17, 0x40, 0x3F, + 0xFF, 0xFF, 0x3B, 0x4A, 0x06, 0x30, 0xD8, 0xFF, 0xAD, 0x35, 0x05, 0x41, 0xB6, 0xFF, 0xD5, 0x10, + 0x66, 0x06, 0x11, 0xD8, 0x6D, 0x27, 0x12, 0x84, 0xEF, 0x00, 0x32, 0x00, 0x47, 0x88, 0x29, 0x10, + 0x22, 0x16, 0x24, 0x84, 0x27, 0x37, 0x98, 0xFF, 0xB0, 0x08, 0x00, 0x22, 0x10, 0x10, 0xD4, 0x07, + 0x01, 0x85, 0x00, 0x82, 0x3C, 0x9D, 0xD4, 0xF6, 0xF6, 0xD2, 0x89, 0x15, 0x0E, 0x00, 0xB1, 0x0D, + 0xA0, 0xFF, 0xFF, 0xD5, 0xAB, 0xB1, 0xE6, 0xFF, 0xED, 0x3B, 0xA2, 0x00, 0x30, 0xC4, 0xFF, 0xC4, + 0x06, 0x21, 0x51, 0x03, 0x6D, 0xFC, 0xEB, 0x18, 0xAA, 0x04, 0x13, 0xB7, 0x1A, 0x15, 0x10, 0x76, + 0x98, 0x02, 0xF0, 0x7D, 0x15, 0xF6, 0xF6, 0x18, 0x00, 0x24, 0xB7, 0xF4, 0xA0, 0xFC, 0xAF, 0x05, + 0xE3, 0xEC, 0x02, 0x00, 0x6D, 0xFF, 0x92, 0x00, 0x15, 0xE6, 0xFF, 0xCF, 0xD5, 0xFF, 0x8B, 0x00, + 0x96, 0xFF, 0x23, 0x00, 0xAD, 0xFF, 0x3F, 0x00, 0x93, 0xFF, 0xA9, 0x02, 0x92, 0xFF, 0x65, 0x00, + 0x70, 0xFF, 0x37, 0x00, 0xDA, 0xFF, 0x0D, 0x07, 0xF2, 0xFF, 0x1E, 0x00, 0xB6, 0xFF, 0x3F, 0x00, + 0x6C, 0xFF, 0x34, 0x01, 0xFA, 0xEA, 0x00, 0x35, 0xFF, 0xDD, 0x00, 0x00, 0xDA, 0xFF, 0x19, 0x00, + 0x8D, 0xFF, 0x1A, 0x06, 0xFF, 0xDF, 0x00, 0x4B, 0xFF, 0xCD, 0x00, 0x05, 0xFA, 0xF3, 0x01, 0x02, + 0xD6, 0xDE, 0x01, 0x01, 0xFA, 0xEB, 0x00, 0x38, 0xFF, 0xF7, 0x33, 0x7C, 0xFF, 0xD9, 0x00, 0x6C, + 0xFF, 0x79, 0x00, 0x00, 0xDE, 0xFF, 0x14, 0x06, 0xE2, 0xFF, 0xFF, 0xF5, 0xF6, 0xFA, 0xC3, 0xFF, + 0xD5, 0x0A, 0x00, 0x00, 0x9D, 0xFF, 0x64, 0x00, 0x30, 0xBF, 0xD7, 0x57, 0x6C, 0xF2, 0xF4, 0xA6, + 0xBD, 0x0C, 0x32, 0x3A, 0xFF, 0xE1, 0xAC, 0x29, 0x04, 0x93, 0x22, 0x41, 0x9F, 0xFF, 0xD4, 0x37, + 0x10, 0x00, 0x13, 0x0C, 0x65, 0x06, 0x94, 0x9B, 0xFF, 0xFF, 0xDA, 0xAE, 0xA4, 0xBC, 0xE8, 0x9A, + 0xFF, 0x00, 0xA8, 0x3B, 0xA0, 0xD8, 0xFA, 0xFC, 0xE0, 0xBA, 0x68, 0x00, 0x00, 0xF0, 0x0B, 0x41, + 0x06, 0xF5, 0xFC, 0xD2, 0x09, 0x00, 0x53, 0x31, 0xFF, 0xFF, 0xFD, 0x0B, 0xBE, 0x09, 0x01, 0xD4, + 0x03, 0x41, 0x00, 0x97, 0xFF, 0xEE, 0xB1, 0x0B, 0x41, 0x00, 0xCA, 0xFF, 0xA0, 0x6B, 0x0A, 0x61, + 0x06, 0xF9, 0xFF, 0x4D, 0xFF, 0xD3, 0x2C, 0x00, 0x50, 0xEC, 0x0E, 0xFF, 0xFD, 0x0A, 0x2C, 0x00, + 0x50, 0xC3, 0x00, 0xE4, 0xFF, 0x39, 0x2C, 0x00, 0x50, 0x99, 0x00, 0xBA, 0xFF, 0x6C, 0x2C, 0x00, + 0x00, 0xB8, 0x04, 0x10, 0x9F, 0x2C, 0x00, 0x50, 0xB9, 0xA4, 0xC4, 0xFF, 0xD2, 0x58, 0x00, 0xF1, + 0x09, 0x1B, 0x00, 0x3C, 0xFF, 0xFC, 0x09, 0x64, 0xFF, 0xF0, 0x01, 0x00, 0x11, 0xFF, 0xFF, 0x38, + 0x97, 0xFF, 0xC5, 0x00, 0x00, 0x00, 0xE6, 0xFF, 0x6B, 0x30, 0x04, 0x01, 0xC0, 0x00, 0xF0, 0x09, + 0xF5, 0xFC, 0xFC, 0xFA, 0xE5, 0xA4, 0x21, 0x00, 0xF8, 0xFF, 0xD5, 0xAB, 0xE4, 0xFF, 0xE0, 0x0A, + 0xF8, 0xFF, 0x88, 0x00, 0x0D, 0xED, 0xFF, 0x4D, 0x08, 0x00, 0x41, 0x00, 0xC5, 0xFF, 0x6D, 0x08, + 0x00, 0xC0, 0xD8, 0xFF, 0x5B, 0xF8, 0xFF, 0x88, 0x03, 0x52, 0xFF, 0xF3, 0x18, 0xF8, 0xB7, 0x02, + 0x20, 0xE9, 0x3C, 0x30, 0x00, 0x50, 0xA9, 0xE5, 0xFF, 0xCF, 0x17, 0x20, 0x00, 0x41, 0x0A, 0xE2, + 0xFF, 0x8E, 0x28, 0x00, 0x31, 0x9F, 0xFF, 0xCB, 0x08, 0x00, 0x30, 0x99, 0xFF, 0xD2, 0x08, 0x00, + 0xC0, 0x03, 0xD5, 0xFF, 0xA9, 0xF8, 0xFF, 0xD2, 0x9F, 0xD6, 0xFF, 0xFE, 0x3E, 0x38, 0x00, 0x36, + 0xF7, 0xC8, 0x4B, 0x00, 0x01, 0x70, 0x04, 0x7A, 0xD8, 0xF8, 0xED, 0xB2, 0x25, 0x50, 0x02, 0xF0, + 0x04, 0xFA, 0xAE, 0xDA, 0xFF, 0xE0, 0x07, 0x03, 0xEE, 0xFF, 0x86, 0x00, 0x16, 0xFF, 0xFF, 0x48, + 0x20, 0xFF, 0xFF, 0x5D, 0x5F, 0x26, 0xB1, 0x6B, 0x2F, 0xFF, 0xFF, 0x58, 0x00, 0x00, 0xF8, 0xFF, + 0x70, 0x30, 0x09, 0x00, 0x32, 0x10, 0x10, 0x07, 0x09, 0x00, 0x00, 0x96, 0x0C, 0x0A, 0x09, 0x00, + 0x35, 0x33, 0x34, 0x17, 0x2D, 0x00, 0xFA, 0x15, 0x21, 0xFF, 0xFF, 0x5E, 0x00, 0x01, 0xFC, 0xFF, + 0x69, 0x03, 0xEF, 0xFF, 0x89, 0x00, 0x1B, 0xFF, 0xFF, 0x43, 0x00, 0x83, 0xFF, 0xFA, 0xAB, 0xD5, + 0xFF, 0xDB, 0x04, 0x00, 0x03, 0x7B, 0xDF, 0xFC, 0xF2, 0xB5, 0x25, 0x00, 0x00, 0x01, 0x31, 0xE4, + 0xA7, 0x23, 0xD0, 0x00, 0x40, 0xE8, 0xFF, 0xE6, 0x0D, 0xB8, 0x00, 0x40, 0x25, 0xFF, 0xFF, 0x63, + 0x08, 0x00, 0x41, 0x01, 0xF8, 0xFF, 0x8C, 0xD0, 0x00, 0x31, 0xF5, 0xFF, 0x98, 0x08, 0x00, 0x1F, + 0xF4, 0x08, 0x00, 0x0C, 0x03, 0x28, 0x00, 0x40, 0x01, 0xFC, 0xFF, 0x88, 0x08, 0x00, 0x20, 0x2C, + 0xFF, 0x38, 0x01, 0x60, 0xD2, 0xA2, 0xE6, 0xFF, 0xE0, 0x09, 0x00, 0x01, 0x65, 0xE9, 0xAC, 0x21, + 0x00, 0x07, 0x06, 0x78, 0x00, 0x91, 0xFC, 0xFC, 0xC9, 0xF8, 0xFF, 0xD5, 0xA4, 0xA4, 0x83, 0x3C, + 0x00, 0x1F, 0x00, 0x06, 0x00, 0x01, 0x41, 0xFF, 0xFC, 0xFC, 0x1C, 0x24, 0x00, 0x1F, 0x12, 0x24, + 0x00, 0x07, 0x41, 0xD2, 0x9C, 0x9C, 0x82, 0x96, 0x01, 0x19, 0xD4, 0x5C, 0x00, 0x11, 0xAE, 0x38, + 0x00, 0x1F, 0x71, 0x5C, 0x00, 0x0A, 0x11, 0x0C, 0x24, 0x00, 0x1E, 0x08, 0x24, 0x00, 0x0E, 0x06, + 0x00, 0x05, 0xB8, 0x01, 0x70, 0x03, 0x77, 0xD8, 0xF9, 0xEE, 0xB3, 0x2C, 0xA8, 0x03, 0xF0, 0x02, + 0xFA, 0xB1, 0xD6, 0xFF, 0xEB, 0x0F, 0x02, 0xEC, 0xFF, 0x87, 0x00, 0x0C, 0xF9, 0xFF, 0x5E, 0x1D, + 0xFF, 0xD6, 0x06, 0x41, 0xE0, 0xFF, 0x85, 0x2D, 0x8B, 0x01, 0x3F, 0x94, 0xAC, 0x5F, 0xAF, 0x01, + 0x03, 0x50, 0x20, 0xFC, 0xFC, 0xFC, 0x9A, 0x09, 0x00, 0x52, 0x15, 0xA4, 0xDF, 0xFF, 0x9C, 0x2D, + 0x00, 0xF3, 0x1B, 0xA5, 0xFF, 0x9C, 0x19, 0xFF, 0xFF, 0x61, 0x00, 0x00, 0xAF, 0xFF, 0x9C, 0x01, + 0xE6, 0xFF, 0x90, 0x00, 0x05, 0xE2, 0xFF, 0x9C, 0x00, 0x80, 0xFF, 0xFC, 0xAF, 0xCB, 0xF6, 0xFF, + 0x9C, 0x00, 0x05, 0x82, 0xE4, 0xFD, 0xD0, 0x49, 0xFF, 0x9C, 0x00, 0x00, 0x0A, 0xB8, 0x01, 0xFF, + 0x01, 0xF1, 0xFC, 0x8E, 0x00, 0x00, 0xA2, 0xFC, 0xD9, 0xF4, 0xFF, 0x90, 0x00, 0x00, 0xA4, 0xFF, + 0xDC, 0x08, 0x00, 0x0F, 0x40, 0xFF, 0xFC, 0xFC, 0xFF, 0x08, 0x00, 0x4E, 0xD8, 0xA4, 0xA4, 0xDF, + 0x30, 0x00, 0x0F, 0x08, 0x00, 0x0D, 0x22, 0x05, 0x03, 0x78, 0x00, 0x6F, 0xE1, 0xFC, 0x92, 0xE4, + 0xFF, 0x94, 0x03, 0x00, 0x11, 0x44, 0x00, 0x00, 0x06, 0x05, 0xEC, 0x03, 0x30, 0xFC, 0xFC, 0x7E, + 0x81, 0x26, 0x15, 0x7F, 0x05, 0x00, 0x1A, 0x7E, 0x05, 0x00, 0x15, 0x7D, 0x05, 0x00, 0x12, 0x7C, + 0x05, 0x00, 0x40, 0x02, 0xFF, 0xFF, 0x7B, 0xFE, 0x07, 0xA9, 0x6C, 0xA9, 0xF4, 0xFF, 0xFF, 0x30, + 0xD8, 0xFD, 0xE3, 0x70, 0xB4, 0x02, 0x51, 0x86, 0x00, 0x0B, 0xEB, 0xFC, 0x9C, 0x03, 0xB0, 0x6A, + 0xFF, 0xF4, 0x10, 0xF8, 0xFF, 0x88, 0x02, 0xDB, 0xFF, 0x98, 0xAA, 0x01, 0x40, 0x4F, 0xFF, 0xFF, + 0x2D, 0x08, 0x00, 0x30, 0xC1, 0xFF, 0xC0, 0xBA, 0x01, 0x11, 0xBC, 0xA8, 0x0A, 0x01, 0x1E, 0x02, + 0x10, 0x1E, 0x08, 0x00, 0x20, 0xEF, 0xEF, 0x5E, 0x0A, 0x70, 0xF8, 0xFF, 0x91, 0x98, 0xFF, 0xD6, + 0x01, 0x28, 0x00, 0x40, 0x3B, 0xFF, 0xFF, 0x36, 0x08, 0x00, 0x41, 0x01, 0xDD, 0xFF, 0x96, 0xEA, + 0x01, 0x43, 0x81, 0xFF, 0xEF, 0x08, 0x04, 0x03, 0x11, 0x57, 0xFA, 0x01, 0x36, 0xC7, 0xFF, 0xB8, + 0x58, 0x02, 0x1E, 0x86, 0x28, 0x02, 0x0F, 0x06, 0x00, 0x22, 0x42, 0xDF, 0xB8, 0xB8, 0x99, 0xB4, + 0x02, 0x22, 0x0C, 0x0A, 0x5C, 0x00, 0xF0, 0x09, 0xC4, 0xFC, 0xE2, 0x00, 0x00, 0x00, 0x42, 0xFC, + 0xFC, 0x5D, 0xCB, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0x62, 0xCF, 0xFF, 0xFF, 0x4D, + 0x2D, 0x10, 0x61, 0xFF, 0x66, 0xD4, 0xFF, 0xFF, 0x81, 0xAA, 0x15, 0xF5, 0x56, 0x6B, 0xD8, 0xFF, + 0xF4, 0xB5, 0x00, 0x18, 0xFF, 0xF6, 0xFF, 0x6F, 0xDC, 0xFF, 0xBF, 0xE9, 0x01, 0x4D, 0xFF, 0xC0, + 0xFF, 0x73, 0xE0, 0xFF, 0x85, 0xFF, 0x1D, 0x82, 0xFF, 0x88, 0xFF, 0x77, 0xE5, 0xFF, 0x4C, 0xFF, + 0x51, 0xB7, 0xE4, 0x6B, 0xFF, 0x7C, 0xE9, 0xFF, 0x14, 0xFF, 0x86, 0xED, 0xAF, 0x66, 0xFF, 0x80, + 0xED, 0xFE, 0x00, 0xDC, 0xDA, 0xFF, 0x7A, 0x61, 0xFF, 0x84, 0xF2, 0xFA, 0x00, 0xA7, 0xFF, 0xFF, + 0x45, 0x5D, 0xFF, 0x89, 0xF6, 0xF6, 0x00, 0x72, 0xFF, 0xFF, 0x11, 0x58, 0xFF, 0x8D, 0xFA, 0xF2, + 0x00, 0x3D, 0xFF, 0xDB, 0x00, 0x54, 0xFF, 0x91, 0xFE, 0xEE, 0x00, 0x0B, 0xFD, 0xA6, 0x00, 0x4F, + 0xFF, 0x96, 0x68, 0x01, 0xA0, 0xEA, 0x09, 0x00, 0x00, 0xDD, 0xFC, 0x34, 0xF8, 0xFF, 0x62, 0xD8, + 0x02, 0x52, 0x34, 0xF8, 0xFF, 0xCF, 0x01, 0x08, 0x00, 0x23, 0xFF, 0x3B, 0x08, 0x00, 0x12, 0xA8, + 0x08, 0x00, 0x31, 0xFC, 0xFB, 0x1A, 0x08, 0x00, 0x31, 0xAD, 0xFF, 0x82, 0x08, 0x00, 0x40, 0x47, + 0xFE, 0xE9, 0xE7, 0x08, 0x00, 0x41, 0x28, 0xB3, 0xFF, 0xFF, 0x08, 0x00, 0x13, 0x4A, 0x08, 0x00, + 0x22, 0x03, 0xDF, 0x08, 0x00, 0x23, 0x00, 0x78, 0x08, 0x00, 0x22, 0x16, 0xFA, 0x08, 0x00, 0x55, + 0x00, 0xA5, 0xFF, 0x34, 0x0A, 0x1C, 0x05, 0x60, 0x79, 0xD7, 0xF9, 0xEE, 0xB5, 0x2E, 0x1C, 0x05, + 0xF0, 0x04, 0xFB, 0xB1, 0xD5, 0xFF, 0xF0, 0x18, 0x03, 0xF0, 0xFF, 0x87, 0x00, 0x0B, 0xF2, 0xFF, + 0x79, 0x21, 0xFF, 0xFF, 0x5F, 0x10, 0x12, 0x21, 0xAB, 0x2F, 0x6D, 0x03, 0x4F, 0xD0, 0xFF, 0xBC, + 0x30, 0x09, 0x00, 0x18, 0x20, 0xBB, 0x1F, 0x1C, 0x05, 0xFA, 0x0F, 0x00, 0xD3, 0xFF, 0xAA, 0x02, + 0xEC, 0xFF, 0x85, 0x00, 0x09, 0xF2, 0xFF, 0x79, 0x00, 0x82, 0xFF, 0xF9, 0xA9, 0xCE, 0xFF, 0xF0, + 0x18, 0x00, 0x04, 0x7A, 0xDA, 0xFC, 0xF2, 0xBE, 0x31, 0x1C, 0x05, 0x40, 0xFC, 0xF3, 0xBA, 0x2C, + 0x1C, 0x05, 0x50, 0xA8, 0xDD, 0xFF, 0xE8, 0x0E, 0xBE, 0x01, 0x41, 0x10, 0xF8, 0xFF, 0x59, 0xC6, + 0x01, 0x31, 0xDC, 0xFF, 0x7E, 0x08, 0x00, 0x30, 0xE5, 0xFF, 0x7A, 0x80, 0x02, 0x41, 0x4C, 0xFF, + 0xFF, 0x48, 0xD2, 0x01, 0x30, 0xFF, 0xBA, 0x02, 0x56, 0x04, 0x33, 0x96, 0x57, 0x04, 0xEE, 0x01, + 0x1F, 0x00, 0x08, 0x00, 0x16, 0x23, 0x0A, 0x09, 0x34, 0x08, 0x0C, 0x00, 0x01, 0x14, 0x17, 0x00, + 0x01, 0x1F, 0x78, 0x00, 0x01, 0x3D, 0x13, 0x78, 0x00, 0x01, 0x11, 0xF1, 0x00, 0x01, 0x42, 0xFD, + 0xFF, 0xFA, 0x3A, 0x82, 0x01, 0x32, 0x90, 0xFF, 0xAA, 0x32, 0x10, 0x33, 0x04, 0xAC, 0xF7, 0xD3, + 0x29, 0x3A, 0x03, 0x4D, 0x00, 0x1C, 0x01, 0x40, 0xF9, 0xE3, 0xA6, 0x27, 0x1C, 0x01, 0x50, 0xAA, + 0xE8, 0xFF, 0xEB, 0x15, 0xC4, 0x00, 0x41, 0x16, 0xFB, 0xFF, 0x69, 0xCC, 0x00, 0x12, 0xD6, 0x38, + 0x06, 0xC2, 0x01, 0xE5, 0xFF, 0x82, 0xF8, 0xFF, 0x88, 0x07, 0x64, 0xFF, 0xFF, 0x50, 0x1C, 0x01, + 0x90, 0xB6, 0x04, 0xF8, 0xFF, 0xD5, 0xC0, 0xFF, 0xFA, 0x0A, 0xF4, 0x00, 0x41, 0x20, 0xFF, 0xFF, + 0x45, 0xFC, 0x00, 0x31, 0xDE, 0xFF, 0x8D, 0x08, 0x00, 0x31, 0x9C, 0xFF, 0xD5, 0x08, 0x00, 0x40, + 0x5A, 0xFF, 0xFF, 0x1D, 0x08, 0x00, 0x43, 0x19, 0xFF, 0xFF, 0x64, 0x50, 0x00, 0x15, 0xAC, 0xC8, + 0x09, 0xF0, 0x01, 0x16, 0xA1, 0xEB, 0xF7, 0xCC, 0x49, 0x00, 0x01, 0xC8, 0xFF, 0xDA, 0xB4, 0xFF, + 0xFA, 0x27, 0x2F, 0xDA, 0x03, 0x40, 0xAE, 0xFF, 0x87, 0x4A, 0x68, 0x0B, 0x70, 0x76, 0xD2, 0x72, + 0x2D, 0xFF, 0xFF, 0xB1, 0x22, 0x0A, 0x50, 0x02, 0xD0, 0xFF, 0xFF, 0xB6, 0x92, 0x08, 0x50, 0x26, + 0xE8, 0xFF, 0xFF, 0xCA, 0x24, 0x1F, 0x50, 0x23, 0xDB, 0xFF, 0xFF, 0xC9, 0x5A, 0x09, 0xF3, 0x1F, + 0x16, 0xCC, 0xFF, 0xFF, 0x74, 0x02, 0x2A, 0x52, 0x00, 0x11, 0xE5, 0xFF, 0xD0, 0x44, 0xFF, 0xF5, + 0x03, 0x00, 0x89, 0xFF, 0xED, 0x15, 0xFD, 0xFF, 0x43, 0x00, 0x88, 0xFF, 0xD1, 0x00, 0xA1, 0xFF, + 0xEF, 0xA8, 0xF5, 0xFF, 0x67, 0x00, 0x09, 0x8B, 0xE4, 0xFE, 0xDC, 0x6D, 0x01, 0x07, 0x78, 0x00, + 0x11, 0xED, 0xC4, 0x0C, 0xD3, 0xFC, 0x1C, 0x9A, 0xA4, 0xDE, 0xFF, 0xF5, 0xA4, 0xA4, 0x12, 0x00, + 0x00, 0xA0, 0xEE, 0x0D, 0x0F, 0x08, 0x00, 0x43, 0x04, 0x0C, 0x03, 0xA1, 0x14, 0xFC, 0xFC, 0x5B, + 0x00, 0x00, 0xC5, 0xFC, 0xA6, 0x14, 0xC4, 0x01, 0x3F, 0xC8, 0xFF, 0xA8, 0x09, 0x00, 0x2C, 0x11, + 0x13, 0x09, 0x00, 0xF7, 0x17, 0xC9, 0xFF, 0xA6, 0x06, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0xCF, 0xFF, + 0x96, 0x00, 0xD6, 0xFF, 0x95, 0x00, 0x0D, 0xF5, 0xFF, 0x68, 0x00, 0x6D, 0xFF, 0xFE, 0xAE, 0xD3, + 0xFF, 0xED, 0x14, 0x00, 0x02, 0x74, 0xDB, 0xFB, 0xF3, 0xBC, 0x32, 0xF8, 0x06, 0xF0, 0x1B, 0x81, + 0xFC, 0xB1, 0x00, 0x00, 0x01, 0xEE, 0xFC, 0x4E, 0x51, 0xFF, 0xE2, 0x00, 0x00, 0x20, 0xFF, 0xFF, + 0x1C, 0x1E, 0xFF, 0xFF, 0x13, 0x00, 0x4D, 0xFF, 0xE9, 0x01, 0x01, 0xEC, 0xFF, 0x42, 0x00, 0x7A, + 0xFF, 0xB6, 0x00, 0x00, 0xB9, 0xFF, 0x71, 0x00, 0xA7, 0xC0, 0x0D, 0xF0, 0x01, 0x86, 0xFF, 0xA1, + 0x00, 0xD4, 0xFF, 0x4F, 0x00, 0x00, 0x53, 0xFF, 0xD0, 0x07, 0xFC, 0xFF, 0x1C, 0x32, 0x00, 0x40, + 0xFA, 0x35, 0xFF, 0xE9, 0xCC, 0x0B, 0x41, 0xED, 0xFF, 0x8B, 0xFF, 0xBE, 0x11, 0x31, 0xBA, 0xFF, + 0xE5, 0xEC, 0x0D, 0x51, 0x00, 0x87, 0xFF, 0xFF, 0xFF, 0x4C, 0x0B, 0x30, 0x54, 0xFF, 0xFF, 0x2C, + 0x00, 0x41, 0x00, 0x00, 0x21, 0xFF, 0x2C, 0x00, 0x00, 0x72, 0x00, 0x02, 0x2C, 0x00, 0x32, 0x00, + 0x0C, 0x0C, 0x88, 0x00, 0xF0, 0x0E, 0x5E, 0xFC, 0xB9, 0x00, 0x00, 0xCE, 0xFB, 0x0B, 0x00, 0x7B, + 0xFC, 0x90, 0x3B, 0xFF, 0xDB, 0x00, 0x03, 0xF8, 0xFF, 0x33, 0x00, 0x9C, 0xFF, 0x6E, 0x17, 0xFF, + 0xFA, 0x02, 0x24, 0x39, 0x09, 0xF0, 0x15, 0xBC, 0xFF, 0x4A, 0x01, 0xF3, 0xFF, 0x1B, 0x4E, 0xFF, + 0xFF, 0x88, 0x00, 0xDC, 0xFF, 0x26, 0x00, 0xCF, 0xFF, 0x3B, 0x77, 0xFF, 0xFC, 0xB2, 0x02, 0xFA, + 0xFD, 0x06, 0x00, 0xAB, 0xFF, 0x5A, 0xA1, 0xFA, 0xC2, 0xDD, 0x1B, 0x4F, 0x0E, 0xF0, 0x07, 0x87, + 0xFF, 0x7A, 0xCB, 0xD3, 0x94, 0xFE, 0x45, 0xFF, 0xBA, 0x00, 0x00, 0x63, 0xFF, 0x9B, 0xF4, 0xA8, + 0x69, 0xFF, 0x8C, 0xFF, 0x96, 0xFD, 0x0B, 0x90, 0xD8, 0xFF, 0x7E, 0x3F, 0xFF, 0xD7, 0xFF, 0x72, + 0x00, 0x3D, 0x09, 0x50, 0xFF, 0x53, 0x14, 0xFF, 0xFF, 0x35, 0x16, 0x20, 0x02, 0xF6, 0xC2, 0x11, + 0x41, 0xEA, 0xFF, 0xFF, 0x2A, 0x91, 0x16, 0x60, 0xFA, 0x05, 0x00, 0xBF, 0xFF, 0xFE, 0x24, 0x03, + 0x60, 0xAF, 0xFF, 0xD4, 0x00, 0x00, 0x95, 0x16, 0x01, 0x50, 0x00, 0x00, 0x8B, 0xFF, 0xA9, 0x6D, + 0x0F, 0x43, 0xBE, 0x00, 0x00, 0x08, 0x38, 0x01, 0xF0, 0x00, 0x8B, 0xFC, 0xC9, 0x00, 0x00, 0x40, + 0xFC, 0xE7, 0x06, 0x27, 0xFF, 0xFF, 0x35, 0x00, 0x9B, 0x4E, 0x07, 0x70, 0xBD, 0xFF, 0x9F, 0x07, + 0xEF, 0xFF, 0x30, 0xEF, 0x00, 0x40, 0xF7, 0x61, 0xFF, 0xCF, 0x70, 0x0D, 0x32, 0xE7, 0xFF, 0xF4, + 0xCB, 0x12, 0x41, 0x83, 0xFF, 0xFF, 0xFA, 0xD1, 0x21, 0x21, 0x2B, 0xFF, 0x7D, 0x0C, 0x01, 0xA5, + 0x1D, 0x11, 0xA8, 0x09, 0x00, 0x40, 0xC7, 0xFF, 0xFF, 0xFA, 0x2F, 0x10, 0x40, 0x27, 0xFF, 0xF3, + 0xE1, 0xA9, 0x0B, 0xF0, 0x0F, 0x00, 0x86, 0xFF, 0x9F, 0x78, 0xFF, 0xDF, 0x03, 0x00, 0x03, 0xE4, + 0xFF, 0x43, 0x16, 0xF9, 0xFF, 0x4A, 0x00, 0x45, 0xFF, 0xE4, 0x03, 0x00, 0xA4, 0xFF, 0xB3, 0x00, + 0xA5, 0xFF, 0x8A, 0xA9, 0x0B, 0x26, 0xFE, 0x1F, 0x88, 0x00, 0xF0, 0x09, 0xAD, 0xFC, 0xA4, 0x00, + 0x00, 0x50, 0xFC, 0xF0, 0x08, 0x5E, 0xFF, 0xEF, 0x05, 0x00, 0x9B, 0xFF, 0xAA, 0x00, 0x11, 0xFB, + 0xFF, 0x41, 0x01, 0xE5, 0x7D, 0x08, 0x70, 0xB8, 0xFF, 0x8F, 0x30, 0xFF, 0xF9, 0x0E, 0x90, 0x15, + 0x40, 0xDE, 0x7B, 0xFF, 0xB4, 0x23, 0x03, 0x51, 0xFD, 0xFF, 0xE4, 0xFF, 0x62, 0x55, 0x13, 0x31, + 0xFF, 0xFF, 0xFD, 0x91, 0x00, 0x42, 0x6D, 0xFF, 0xFF, 0xBE, 0x53, 0x11, 0x03, 0xC2, 0x1E, 0x21, + 0x00, 0x08, 0x4A, 0x02, 0x0F, 0x09, 0x00, 0x14, 0x04, 0xC4, 0x13, 0x11, 0x38, 0x47, 0x03, 0xD1, + 0xCD, 0x24, 0xA4, 0xA4, 0xA4, 0xEF, 0xFF, 0xB2, 0x00, 0x00, 0x00, 0x11, 0xFA, 0x22, 0x00, 0x30, + 0x61, 0xFF, 0xF7, 0x21, 0x00, 0x11, 0xB7, 0xF6, 0x00, 0x40, 0x13, 0xFB, 0xFF, 0x56, 0x0A, 0x16, + 0x31, 0xFF, 0xF4, 0x0B, 0x28, 0x02, 0x00, 0xF7, 0x0F, 0x21, 0x15, 0xFC, 0xD2, 0x13, 0x30, 0x66, + 0xFF, 0xF1, 0x75, 0x01, 0x32, 0xBC, 0xFF, 0xA1, 0xA7, 0x00, 0x11, 0x4A, 0x13, 0x11, 0x61, 0xFF, + 0xA2, 0x9C, 0x9C, 0x82, 0x68, 0x63, 0x04, 0x10, 0xD4, 0x60, 0x14, 0x02, 0x48, 0x05, 0x10, 0x05, + 0x6B, 0x00, 0x90, 0x14, 0x05, 0xFF, 0xFF, 0xA7, 0xA4, 0x0D, 0x05, 0xFF, 0x32, 0x0E, 0x02, 0x06, + 0x00, 0x1F, 0x06, 0x06, 0x00, 0x04, 0x1F, 0x07, 0x06, 0x00, 0x04, 0x1F, 0x08, 0x06, 0x00, 0x01, + 0x41, 0xA3, 0xA0, 0x0A, 0x08, 0xBA, 0x14, 0x06, 0xDC, 0x00, 0x31, 0x40, 0xFC, 0x5A, 0xEB, 0x00, + 0x21, 0xF5, 0xA2, 0x0F, 0x00, 0x32, 0xB4, 0xE8, 0x02, 0x39, 0x01, 0x00, 0x54, 0x06, 0x21, 0x00, + 0x26, 0x07, 0x33, 0x41, 0x00, 0x01, 0xDE, 0xC0, 0x1D, 0x00, 0x21, 0x97, 0xFB, 0x8E, 0x0F, 0x12, + 0x50, 0xF9, 0x02, 0x31, 0x0E, 0xFB, 0x96, 0x16, 0x00, 0x21, 0xC1, 0xDE, 0xF6, 0x02, 0x20, 0x7A, + 0xFF, 0xA3, 0x0B, 0x22, 0x00, 0x33, 0x05, 0x0D, 0x31, 0x02, 0xEA, 0xB4, 0x1D, 0x00, 0x20, 0xA4, + 0xF5, 0xC2, 0x00, 0x03, 0x2C, 0x16, 0x80, 0x9E, 0xFC, 0xFC, 0xFC, 0x77, 0x67, 0xA4, 0xDB, 0x56, + 0x00, 0x1F, 0x98, 0x05, 0x00, 0x2B, 0x81, 0x64, 0xA0, 0xD9, 0xFF, 0x78, 0xA0, 0xFF, 0xFF, 0xA1, + 0x00, 0x24, 0x08, 0x08, 0x2C, 0x16, 0x31, 0x4D, 0xFC, 0xFC, 0x28, 0x15, 0x21, 0xBB, 0xFF, 0x83, + 0x0D, 0x60, 0x29, 0xFF, 0xB9, 0xD2, 0xF9, 0x16, 0xEA, 0x02, 0xF1, 0x09, 0x5D, 0x76, 0xFF, 0x7D, + 0x00, 0x0F, 0xF4, 0xF5, 0x0C, 0x1D, 0xFE, 0xE7, 0x06, 0x2C, 0x84, 0x61, 0x00, 0x00, 0x6E, 0x84, + 0x21, 0x06, 0x07, 0x02, 0x98, 0x00, 0x11, 0xA0, 0x01, 0x00, 0x33, 0x0A, 0xFF, 0xFF, 0x1C, 0x01, + 0x32, 0x05, 0x05, 0x04, 0xA8, 0x38, 0xE0, 0xC8, 0xFC, 0x61, 0x00, 0x00, 0x2A, 0xF8, 0xB7, 0x00, + 0x00, 0x00, 0x73, 0xFB, 0x12, 0x26, 0x16, 0x42, 0x01, 0x08, 0x08, 0x0A, 0xD4, 0x05, 0xE0, 0x24, + 0xAF, 0xF1, 0xF1, 0xA7, 0x10, 0x00, 0x01, 0xCF, 0xFF, 0xC9, 0xE5, 0xFF, 0x8D, 0xFE, 0x03, 0xA1, + 0x17, 0x70, 0xFF, 0xD3, 0x00, 0x14, 0x5C, 0x5C, 0x03, 0x70, 0x0E, 0x05, 0x21, 0x40, 0xBF, 0xB6, + 0x13, 0xF4, 0x18, 0x7C, 0xFF, 0xD2, 0x87, 0xFF, 0xE0, 0x00, 0x22, 0xFF, 0xFD, 0x1E, 0x64, 0xFF, + 0xE0, 0x00, 0x4F, 0xFF, 0xEF, 0x02, 0x6B, 0xFF, 0xE1, 0x00, 0x2A, 0xFF, 0xFF, 0xB7, 0xE4, 0xFF, + 0xEB, 0x00, 0x00, 0x7D, 0xF3, 0xDB, 0x51, 0xFF, 0xFE, 0x05, 0x2C, 0x06, 0x41, 0x18, 0xFC, 0xFC, + 0x3C, 0x08, 0x00, 0x2F, 0xFF, 0xFF, 0x08, 0x00, 0x05, 0x40, 0x88, 0xD4, 0xF0, 0x70, 0x08, 0x00, + 0xD1, 0xDB, 0xC4, 0xFF, 0xFD, 0x1A, 0x18, 0xFF, 0xFF, 0x3D, 0x09, 0xFB, 0xFF, 0x56, 0x20, 0x00, + 0x31, 0xED, 0xFF, 0x64, 0x08, 0x00, 0x1B, 0xEC, 0x08, 0x00, 0x30, 0xED, 0xFF, 0x63, 0x08, 0x00, + 0xF3, 0x07, 0x07, 0xFB, 0xFF, 0x50, 0x18, 0xFF, 0xFF, 0xCF, 0xBB, 0xFF, 0xFA, 0x15, 0x18, 0xFF, + 0xFF, 0x95, 0xE0, 0xF1, 0x68, 0x00, 0x07, 0x07, 0xD0, 0x00, 0xF1, 0x0D, 0x30, 0xC3, 0xF6, 0xED, + 0xA4, 0x10, 0x03, 0xE0, 0xFF, 0xC8, 0xE3, 0xFF, 0x8C, 0x2F, 0xFF, 0xFF, 0x19, 0x64, 0xFF, 0xCB, + 0x4A, 0xFF, 0xFF, 0x09, 0x44, 0xC4, 0xA3, 0x4C, 0x40, 0x02, 0x13, 0x00, 0x07, 0x00, 0x00, 0x15, + 0x00, 0xF7, 0x09, 0x54, 0xF4, 0xCB, 0x30, 0xFF, 0xFF, 0x18, 0x65, 0xFF, 0xC9, 0x04, 0xE2, 0xFF, + 0xC8, 0xE2, 0xFF, 0x89, 0x00, 0x34, 0xC8, 0xFA, 0xF0, 0xA3, 0x0E, 0xBC, 0x10, 0x00, 0xD0, 0x39, + 0x21, 0xFC, 0xFC, 0xC0, 0x27, 0x3E, 0x2C, 0xFF, 0xFF, 0x08, 0x00, 0xF0, 0x04, 0x4C, 0xE3, 0xE9, + 0x9A, 0xFF, 0xFF, 0x28, 0x04, 0xE9, 0xFF, 0xD2, 0xCE, 0xFF, 0xFF, 0x28, 0x2F, 0xFF, 0xFF, 0x27, + 0x18, 0x00, 0x40, 0x46, 0xFF, 0xFF, 0x11, 0x08, 0x00, 0x48, 0x48, 0xFF, 0xFF, 0x10, 0x08, 0x00, + 0x13, 0x47, 0x18, 0x00, 0x40, 0x34, 0xFF, 0xFF, 0x22, 0x08, 0x00, 0x50, 0x06, 0xF4, 0xFF, 0xCC, + 0xC5, 0x48, 0x00, 0x84, 0x5B, 0xE6, 0xED, 0x9C, 0xFF, 0xFF, 0x28, 0x08, 0xC8, 0x00, 0xF1, 0x03, + 0x2D, 0xC1, 0xF6, 0xEE, 0x9F, 0x0B, 0x03, 0xDD, 0xFF, 0xC3, 0xDE, 0xFF, 0x83, 0x2E, 0xFF, 0xFF, + 0x0F, 0x58, 0xC8, 0x00, 0x51, 0x9E, 0xBC, 0xFF, 0xE1, 0x4C, 0xE1, 0x01, 0x10, 0xE4, 0xC8, 0x00, + 0xF4, 0x14, 0x04, 0x04, 0x04, 0x4A, 0xFF, 0xFF, 0x04, 0x2B, 0x88, 0x79, 0x30, 0xFF, 0xFF, 0x14, + 0x60, 0xFF, 0xD5, 0x04, 0xE3, 0xFF, 0xCD, 0xE6, 0xFF, 0x8D, 0x00, 0x35, 0xC7, 0xF9, 0xEF, 0xA0, + 0x0D, 0x00, 0x00, 0x05, 0x06, 0x9C, 0x13, 0xC1, 0xAE, 0xF5, 0xF0, 0x0F, 0x00, 0x6D, 0xFF, 0xFC, + 0xB3, 0x0D, 0x00, 0x98, 0x4F, 0x04, 0x10, 0xA0, 0x2D, 0x11, 0xC2, 0xAE, 0xFF, 0xFF, 0xFF, 0xFC, + 0x10, 0x71, 0xDE, 0xFF, 0xE4, 0xA4, 0x0B, 0x12, 0x00, 0x0F, 0x06, 0x00, 0x17, 0x00, 0xE0, 0x04, + 0x19, 0xFD, 0x27, 0x35, 0xF0, 0x07, 0x2A, 0xBB, 0xF6, 0xE5, 0x64, 0x86, 0xD4, 0x01, 0x01, 0xD9, 0xFF, 0xC2, 0xE1, 0xFF, 0xDB, 0x68, 0x04, 0x28, 0xFF, 0xF7, 0x04, 0x57, 0x44, 0x04, 0x50, 0x42, 0xFF, 0xE6, 0x00, 0x44, 0x71, 0x05, 0x50, 0x2F, 0xFF, 0xF4, 0x04, 0x54, 0x58, 0x15, 0x50, 0x03, 0xD3, 0xFF, 0xBA, 0xDD, 0x79, 0x0C, 0xD1, 0x00, 0x7D, 0xF2, 0xF8, 0xF3, 0x9D, 0x08, 0x00, 0x00, @@ -518,147 +6059,3604 @@ const uint8_t assets[9804] = { 0x08, 0x00, 0x04, 0x70, 0x6F, 0xB8, 0xF6, 0xB3, 0x03, 0x10, 0xFF, 0xA0, 0x14, 0xA0, 0xFF, 0x3B, 0x10, 0xFF, 0xFF, 0x43, 0x09, 0xFF, 0xFF, 0x4C, 0x20, 0x00, 0x1F, 0x04, 0x08, 0x00, 0x20, 0x04, 0xA8, 0x1D, 0x85, 0x08, 0xFC, 0xFC, 0x4B, 0x06, 0xA4, 0xA4, 0x31, 0xF8, 0x12, 0x7F, 0xFC, 0xFC, - 0x47, 0x08, 0xFF, 0xFF, 0x48, 0x04, 0x00, 0x0D, 0x42, 0x04, 0x05, 0x11, 0xFF, 0x40, 0x01, 0x97, - 0xE1, 0xFC, 0x73, 0x00, 0x00, 0x93, 0xA4, 0x4B, 0x00, 0x01, 0x00, 0x30, 0xDD, 0xFC, 0x6F, 0xFA, - 0x0B, 0x1F, 0x70, 0x05, 0x00, 0x16, 0xF6, 0x00, 0x04, 0xEE, 0xFF, 0x6D, 0x31, 0xD9, 0xFF, 0xFF, - 0x37, 0x34, 0xF7, 0xEC, 0x7D, 0x01, 0x00, 0x80, 0x06, 0x53, 0x18, 0xFC, 0xFC, 0x38, 0x00, 0x75, - 0x03, 0x0F, 0x09, 0x00, 0x0A, 0x40, 0x9F, 0xFC, 0xD9, 0x08, 0x09, 0x00, 0x10, 0x3F, 0xA2, 0x16, - 0x71, 0x18, 0xFF, 0xFF, 0x3E, 0xD6, 0xFF, 0xB3, 0x1B, 0x00, 0x41, 0xB0, 0xFF, 0xF8, 0x22, 0x09, - 0x00, 0x41, 0xFF, 0xFF, 0xEF, 0x09, 0x09, 0x00, 0x42, 0xB3, 0xE3, 0xFF, 0x5D, 0xCE, 0x03, 0x32, - 0x89, 0xFF, 0xC3, 0x3F, 0x00, 0x10, 0x2E, 0xA0, 0x07, 0x01, 0x48, 0x00, 0x32, 0xD2, 0xFF, 0x8F, - 0x09, 0x00, 0x40, 0x76, 0xFF, 0xEE, 0x08, 0x90, 0x1A, 0x04, 0xB8, 0x0A, 0x4F, 0x5B, 0xF8, 0xFF, - 0x5C, 0x03, 0x00, 0x11, 0x00, 0x74, 0x08, 0x02, 0x08, 0x03, 0xF0, 0x09, 0x1C, 0xFC, 0xFC, 0x67, - 0xD3, 0xF6, 0x90, 0x39, 0xC7, 0xF7, 0xA6, 0x03, 0x1C, 0xFF, 0xFF, 0xE9, 0xBB, 0xFF, 0xFF, 0xE9, - 0xB4, 0xFF, 0xFF, 0x3C, 0x54, 0x16, 0xFF, 0x05, 0x03, 0xFC, 0xFF, 0x46, 0x00, 0xDE, 0xFF, 0x5B, - 0x1C, 0xFF, 0xFF, 0x18, 0x00, 0xF8, 0xFF, 0x3C, 0x00, 0xD8, 0xFF, 0x5C, 0x0C, 0x00, 0x35, 0x25, - 0x08, 0x08, 0x80, 0x00, 0xFF, 0x07, 0x6F, 0xB7, 0xF6, 0xA1, 0x01, 0x1C, 0xFF, 0xFF, 0xE3, 0xC4, - 0xFF, 0xFF, 0x22, 0x1C, 0xFF, 0xFF, 0x3A, 0x21, 0xFF, 0xFF, 0x38, 0x1C, 0x04, 0x00, 0x24, 0x05, - 0xE0, 0x03, 0x80, 0x2C, 0xBF, 0xF6, 0xED, 0x9D, 0x0D, 0x04, 0xDF, 0xA8, 0x04, 0xF5, 0x05, 0x96, - 0x33, 0xFF, 0xFF, 0x13, 0x5D, 0xFF, 0xE7, 0x4B, 0xFF, 0xFF, 0x01, 0x4D, 0xFF, 0xFF, 0x4C, 0xFF, - 0xFF, 0x00, 0x4C, 0x07, 0x00, 0xF0, 0x0D, 0x4B, 0xFF, 0xFF, 0x00, 0x4D, 0xFF, 0xFF, 0x34, 0xFF, - 0xFF, 0x0F, 0x5D, 0xFF, 0xE8, 0x04, 0xE3, 0xFF, 0xC1, 0xDE, 0xFF, 0x9B, 0x00, 0x32, 0xC1, 0xF9, - 0xEF, 0xA1, 0x10, 0xFC, 0x02, 0x32, 0x0D, 0x00, 0xFD, 0xA8, 0x00, 0xD0, 0x8D, 0xD8, 0xEF, 0x6D, - 0x00, 0x1C, 0xFF, 0xFF, 0xDA, 0xC7, 0xFF, 0xFC, 0x17, 0x58, 0x1A, 0x40, 0x0B, 0xFD, 0xFF, 0x4F, - 0x74, 0x00, 0x41, 0x00, 0xF1, 0xFF, 0x60, 0x08, 0x00, 0x1B, 0xF0, 0x08, 0x00, 0x31, 0xF1, 0xFF, - 0x5F, 0x94, 0x00, 0xF3, 0x05, 0xFD, 0xFF, 0x4C, 0x1C, 0xFF, 0xFF, 0xCD, 0xBE, 0xFF, 0xF9, 0x12, - 0x1C, 0xFF, 0xFF, 0x91, 0xE0, 0xEF, 0x65, 0x00, 0x1C, 0x19, 0x02, 0x0C, 0x08, 0x00, 0x04, 0x70, - 0x00, 0xF0, 0x0D, 0x00, 0x48, 0xE1, 0xE9, 0x95, 0xFC, 0xFC, 0x30, 0x04, 0xE8, 0xFF, 0xD3, 0xCD, - 0xFF, 0xFF, 0x30, 0x30, 0xFF, 0xFF, 0x27, 0x24, 0xFF, 0xFF, 0x30, 0x43, 0xFF, 0xFF, 0x11, 0x08, - 0x00, 0x48, 0x44, 0xFF, 0xFF, 0x10, 0x08, 0x00, 0x04, 0x18, 0x00, 0x40, 0x30, 0xFF, 0xFF, 0x22, - 0x08, 0x00, 0x50, 0x05, 0xF1, 0xFF, 0xCC, 0xC4, 0xF2, 0x1D, 0x40, 0x59, 0xE6, 0xED, 0x97, 0x08, - 0x00, 0x02, 0x07, 0x19, 0x0D, 0x08, 0x00, 0x18, 0x06, 0x1C, 0x17, 0x60, 0x02, 0x14, 0xFC, 0xFC, - 0x6B, 0xCE, 0x8F, 0x0B, 0xA1, 0xFB, 0xB8, 0x79, 0x14, 0xFF, 0xFF, 0x77, 0x00, 0x00, 0x14, 0xDC, - 0x03, 0x0F, 0x06, 0x00, 0x11, 0x16, 0x00, 0x24, 0x06, 0xF1, 0x16, 0x54, 0xD4, 0xF7, 0xBB, 0x24, - 0x00, 0x21, 0xFD, 0xFB, 0xB4, 0xFC, 0xCD, 0x01, 0x5F, 0xFF, 0xC6, 0x00, 0x8E, 0xD7, 0x15, 0x31, - 0xFF, 0xFF, 0x73, 0x0A, 0x01, 0x00, 0x00, 0x93, 0xFF, 0xFF, 0x8B, 0x02, 0x00, 0x00, 0x02, 0x83, - 0x9A, 0x18, 0xF1, 0x0B, 0x0C, 0x08, 0x63, 0xFF, 0xFF, 0x31, 0x67, 0xF5, 0x63, 0x00, 0xC7, 0xFF, - 0x5B, 0x31, 0xFE, 0xF4, 0xAB, 0xFC, 0xFD, 0x20, 0x00, 0x5B, 0xD7, 0xFB, 0xD1, 0x57, 0x4C, 0x1D, - 0x03, 0xD6, 0x17, 0x40, 0xB6, 0xFC, 0x9E, 0x00, 0xCB, 0x09, 0x14, 0xA0, 0x06, 0x00, 0x01, 0x56, - 0x05, 0x78, 0x1C, 0x71, 0xE7, 0xFF, 0xDE, 0xA4, 0x12, 0x18, 0x00, 0x0F, 0x06, 0x00, 0x00, 0x11, - 0xB4, 0x76, 0x09, 0xD4, 0x88, 0xFF, 0xFF, 0xDB, 0x32, 0x00, 0x17, 0xC6, 0xFC, 0xF5, 0x33, 0x00, - 0x00, 0x7C, 0x02, 0xFF, 0x00, 0x2C, 0xFC, 0xFC, 0x24, 0x34, 0xFC, 0xFC, 0x1C, 0x2C, 0xFF, 0xFF, - 0x24, 0x34, 0xFF, 0xFF, 0x08, 0x00, 0x19, 0xA0, 0x2A, 0x37, 0xFF, 0xFF, 0x1C, 0x19, 0xFF, 0xFF, - 0xD0, 0xE7, 0xD6, 0x0B, 0x74, 0x9F, 0xFA, 0xC0, 0x67, 0xFF, 0xFF, 0x1C, 0x00, 0x01, 0xF0, 0x13, - 0xAE, 0xFC, 0x8B, 0x00, 0xA3, 0xFC, 0x92, 0x80, 0xFF, 0xAF, 0x00, 0xC7, 0xFF, 0x63, 0x4E, 0xFF, - 0xD2, 0x00, 0xE8, 0xFF, 0x33, 0x1D, 0xFF, 0xF4, 0x0C, 0xFF, 0xFB, 0x07, 0x01, 0xEC, 0xFF, 0x43, - 0xFF, 0xD1, 0x7A, 0x08, 0x10, 0x88, 0x9F, 0x00, 0x50, 0x89, 0xFF, 0xCC, 0xFF, 0x6F, 0x55, 0x1B, - 0x30, 0xFE, 0xFF, 0x3E, 0xFF, 0x0A, 0x10, 0xFF, 0x2E, 0x1B, 0x43, 0x02, 0xF3, 0xFF, 0xDC, 0xD0, - 0x22, 0x01, 0x50, 0x00, 0xF0, 0x2C, 0x7F, 0xFC, 0x67, 0x00, 0xD6, 0xF9, 0x06, 0x3A, 0xFC, 0x96, - 0x5B, 0xFF, 0x89, 0x07, 0xFC, 0xFF, 0x29, 0x5E, 0xFF, 0x71, 0x34, 0xFF, 0xAB, 0x2C, 0xFF, 0xFF, - 0x50, 0x82, 0xFF, 0x49, 0x0E, 0xFF, 0xCC, 0x55, 0xFF, 0xFE, 0x76, 0xA6, 0xFF, 0x21, 0x00, 0xE7, - 0xED, 0x7E, 0xF1, 0xCD, 0x9D, 0xCB, 0xF8, 0x03, 0x00, 0xC0, 0xFF, 0xB7, 0xC3, 0xA0, 0xC4, 0xF0, - 0xD2, 0xB0, 0x15, 0x40, 0xF7, 0x94, 0x74, 0xF5, 0xF1, 0x1C, 0x80, 0x72, 0xFF, 0xFF, 0x65, 0x47, - 0xFF, 0xFF, 0x83, 0x20, 0x1C, 0x60, 0xFF, 0x36, 0x1B, 0xFF, 0xFF, 0x5B, 0x03, 0x02, 0x65, 0xFE, - 0x0A, 0x01, 0xEF, 0xFF, 0x34, 0xBC, 0x01, 0xF1, 0x05, 0x92, 0xFC, 0xB1, 0x00, 0x64, 0xFC, 0x99, - 0x26, 0xFE, 0xFF, 0x26, 0xC8, 0xFF, 0x2F, 0x00, 0xB1, 0xFF, 0xBD, 0xFF, 0xC2, 0x36, 0x18, 0xF0, - 0x1E, 0xFF, 0x55, 0x00, 0x00, 0x01, 0xD8, 0xFF, 0xE4, 0x05, 0x00, 0x00, 0x15, 0xF9, 0xFF, 0xE8, - 0x08, 0x00, 0x00, 0x73, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x01, 0xD9, 0xFF, 0x98, 0xFF, 0xD4, 0x01, - 0x3F, 0xFF, 0xC2, 0x10, 0xF3, 0xFF, 0x48, 0xA5, 0xFF, 0x63, 0x00, 0x8E, 0xFF, 0xBB, 0x0C, 0x02, - 0x02, 0xC8, 0x02, 0xF0, 0x18, 0xC3, 0xFC, 0x75, 0x00, 0x67, 0xFC, 0xD2, 0x89, 0xFF, 0xA5, 0x00, - 0x90, 0xFF, 0x9E, 0x4B, 0xFF, 0xD3, 0x00, 0xB8, 0xFF, 0x66, 0x10, 0xFE, 0xFB, 0x07, 0xE0, 0xFF, - 0x2F, 0x00, 0xCE, 0xFF, 0x3A, 0xFF, 0xF5, 0x04, 0x00, 0x8F, 0xFF, 0x8F, 0xD3, 0x12, 0x51, 0x51, - 0xFF, 0xE4, 0xFF, 0x89, 0x4E, 0x02, 0x61, 0xFF, 0x51, 0x00, 0x00, 0x00, 0xD5, 0x2C, 0x12, 0x40, - 0x00, 0x98, 0xFF, 0xE3, 0x98, 0x00, 0xF1, 0x02, 0x75, 0xFF, 0xAB, 0x00, 0x00, 0x0B, 0xB6, 0xF0, - 0xFF, 0x52, 0x00, 0x00, 0x10, 0xFD, 0xD5, 0x74, 0x01, 0x20, 0x02, 0x05, 0xC8, 0x01, 0x91, 0xFC, - 0xFC, 0xD5, 0x1D, 0xA4, 0xA4, 0xE3, 0xFF, 0xBE, 0x3E, 0x22, 0x10, 0x5B, 0x38, 0x0B, 0x00, 0x1A, - 0x05, 0x10, 0xC6, 0x94, 0x0C, 0x40, 0x2E, 0xFF, 0xFF, 0x2B, 0xDC, 0x09, 0x50, 0xC4, 0x00, 0x00, - 0x0C, 0xF2, 0x24, 0x10, 0x70, 0x5D, 0xFF, 0xFF, 0xA6, 0x9C, 0x7F, 0x70, 0x6E, 0x05, 0x14, 0xD0, - 0x50, 0x0B, 0xF4, 0x08, 0x00, 0x00, 0x7D, 0xE8, 0xFC, 0x4B, 0x00, 0x17, 0xFF, 0xFF, 0xCC, 0x31, - 0x00, 0x35, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x38, 0xFF, 0xFF, 0x14, 0x06, 0x00, 0x11, 0x3A, 0x06, - 0x00, 0x10, 0x4A, 0x1B, 0x0D, 0x20, 0x2A, 0xD4, 0xB5, 0x0C, 0xF0, 0x02, 0x44, 0xFF, 0xFC, 0x52, - 0x00, 0x00, 0x02, 0x70, 0xFF, 0xE1, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0x0B, 0xD4, 0x21, 0x2A, - 0xFF, 0x14, 0x36, 0x00, 0xF0, 0x02, 0x32, 0xFF, 0xFF, 0x21, 0x00, 0x00, 0x13, 0xFE, 0xFF, 0xCA, - 0x30, 0x00, 0x00, 0x76, 0xEB, 0xFF, 0x4C, 0xAC, 0x05, 0x02, 0x5C, 0x21, 0x53, 0xDA, 0xFC, 0x28, - 0xDD, 0xFF, 0x03, 0x00, 0x17, 0xDE, 0x03, 0x00, 0x17, 0xDF, 0x03, 0x00, 0x1A, 0xE0, 0x03, 0x00, - 0x05, 0xFC, 0x0B, 0x81, 0x43, 0xFC, 0xE9, 0x84, 0x00, 0x00, 0x2C, 0xC9, 0xF9, 0x13, 0x00, 0x47, - 0x06, 0x10, 0x00, 0x4A, 0x21, 0x10, 0x44, 0x53, 0x1A, 0x06, 0x06, 0x00, 0x21, 0x02, 0xF6, 0x54, - 0x0C, 0x80, 0xA3, 0xFF, 0xD7, 0x2F, 0x00, 0x00, 0x4D, 0xFA, 0x7C, 0x00, 0x40, 0xDC, 0xFF, 0x76, - 0x02, 0x0F, 0x0C, 0x1A, 0x46, 0x2A, 0x00, 0x02, 0x3C, 0x00, 0x10, 0x1A, 0xF9, 0x12, 0x20, 0x2B, - 0xC7, 0x75, 0x01, 0x42, 0x44, 0xFF, 0xED, 0x7D, 0x8C, 0x04, 0x12, 0x04, 0x52, 0x37, 0xF4, 0x08, - 0x21, 0x8C, 0x63, 0x07, 0x00, 0x22, 0x00, 0x26, 0xEF, 0xFF, 0xFF, 0xE4, 0xB4, 0xFD, 0x2E, 0x06, - 0x7A, 0x17, 0x53, 0xCB, 0xF5, 0x7A, 0x01, 0x14, 0x1B, 0x22, 0x06, 0x06, 0x1F, 0x19, 0xFF, 0x02, - 0x25, 0x54, 0x54, 0x54, 0x54, 0x07, 0x70, 0x55, 0x3C, 0x3C, 0x9B, 0x14, 0x70, 0x20, 0x00, 0x00, - 0x7C, 0x06, 0x00, 0x1F, 0x67, 0x9B, 0x8C, 0x8C, 0xC5, 0x14, 0x20, 0xB4, 0x25, 0x0F, 0x01, 0x00, - 0x45, 0x3F, 0x23, 0x23, 0x23, 0x18, 0x00, 0x02, 0x3E, 0xFF, 0xFF, 0xFF, 0x3B, 0x00, 0x0F, 0x23, - 0x00, 0xFF, 0xE6, 0x0F, 0x36, 0x00, 0x03, 0x08, 0x01, 0x00, 0x0F, 0x14, 0x00, 0x01, 0x0F, 0x23, - 0x00, 0x33, 0x0F, 0x8E, 0x00, 0x12, 0x16, 0x04, 0x01, 0x00, 0x04, 0xD2, 0x00, 0x06, 0x13, 0x00, - 0x1F, 0x01, 0xBC, 0x02, 0xFF, 0xCC, 0x0F, 0x01, 0x00, 0xFF, 0xFF, 0xA1, 0xF0, 0x29, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6C, 0x74, 0x00, 0x28, 0x42, 0xFF, 0xFF, 0x18, 0xC6, 0x04, 0x21, 0xC7, 0x39, - 0x10, 0x84, 0x9D, 0xC4, 0xFF, 0xFF, 0x04, 0x21, 0xEB, 0x5A, 0x10, 0x84, 0x08, 0x42, 0x04, 0x21, - 0x10, 0x84, 0x14, 0xFD, 0x28, 0xFF, 0xFF, 0xFF, 0x1F, 0x04, 0x10, 0x84, 0x18, 0xC6, 0x1F, 0x04, - 0xFF, 0xFF, 0x08, 0x42, 0x10, 0x84, 0x06, 0x00, 0x22, 0x18, 0xC6, 0x0A, 0x00, 0x00, 0x08, 0x00, - 0xF8, 0x61, 0x54, 0x44, 0x00, 0x00, 0x74, 0x44, 0x00, 0x00, 0x78, 0x44, 0x00, 0x00, 0x98, 0x44, - 0x00, 0x00, 0xB8, 0x44, 0x00, 0x00, 0xD8, 0x44, 0x00, 0x00, 0xF8, 0x44, 0x00, 0x00, 0x18, 0x45, - 0x00, 0x00, 0x38, 0x45, 0x00, 0x00, 0x58, 0x45, 0x00, 0x00, 0x78, 0x45, 0x00, 0x00, 0x98, 0x45, - 0x00, 0x00, 0xB8, 0x45, 0x00, 0x00, 0xBC, 0x45, 0x00, 0x00, 0xC0, 0x45, 0x00, 0x00, 0xC4, 0x45, - 0x00, 0x00, 0xC8, 0x45, 0x00, 0x00, 0xCC, 0x45, 0x00, 0x00, 0xD0, 0x45, 0x00, 0x00, 0xD4, 0x45, - 0x00, 0x00, 0xF4, 0x45, 0x00, 0x00, 0x14, 0x46, 0x00, 0x00, 0x34, 0x46, 0x00, 0x00, 0x38, 0x46, - 0x00, 0x00, 0x3C, 0x46, 0x00, 0x00, 0x40, 0x46, 0x00, 0x00, 0x6C, 0x46, 0x00, 0x00, 0x98, 0x46, - 0x00, 0x00, 0x21, 0x2F, 0x00, 0xF7, 0x14, 0x22, 0xC4, 0x46, 0x86, 0x23, 0x20, 0xCC, 0x46, 0x8A, - 0x03, 0x0E, 0x1C, 0x43, 0x00, 0x64, 0x11, 0x13, 0xD0, 0x24, 0x00, 0x13, 0xDC, 0x24, 0x00, 0x1B, - 0x04, 0x44, 0x00, 0x13, 0xE0, 0x20, 0x00, 0x13, 0xE8, 0x20, 0x00, 0x1B, 0x07, 0x20, 0x00, 0x13, - 0xEC, 0x20, 0x00, 0x13, 0xF4, 0x20, 0x00, 0x0C, 0x84, 0x00, 0x13, 0xF8, 0x20, 0x00, 0x22, 0x00, - 0x47, 0x20, 0x00, 0x0C, 0x80, 0x00, 0x22, 0x04, 0x47, 0x14, 0x00, 0x2F, 0x10, 0x47, 0x60, 0x00, - 0x03, 0x13, 0x14, 0x20, 0x00, 0x2F, 0x1C, 0x47, 0x60, 0x00, 0x03, 0x13, 0x20, 0x20, 0x00, 0x1F, - 0x28, 0x60, 0x00, 0x04, 0x13, 0x2C, 0x20, 0x00, 0x1F, 0x38, 0x60, 0x00, 0x04, 0x13, 0x3C, 0x20, - 0x00, 0x1F, 0x44, 0x60, 0x00, 0x04, 0x13, 0x48, 0x20, 0x00, 0x17, 0x50, 0x60, 0x00, 0x13, 0x02, - 0x5C, 0x00, 0x00, 0x74, 0x0A, 0x13, 0x06, 0x80, 0x3C, 0x2E, 0x09, 0x00, 0x3C, 0x00, 0x13, 0x54, - 0x3C, 0x00, 0x13, 0x5C, 0x3C, 0x00, 0x1B, 0x05, 0x20, 0x00, 0x13, 0x60, 0x20, 0x00, 0x1F, 0x68, - 0x7C, 0x00, 0x04, 0x13, 0x6C, 0x20, 0x00, 0x1B, 0x74, 0xDC, 0x00, 0x1F, 0x02, 0x10, 0x45, 0x00, - 0x1B, 0x10, 0x3C, 0x00, 0x26, 0x78, 0x47, 0x10, 0x00, 0x0F, 0x2C, 0x00, 0x0D, 0x1F, 0x80, 0x2C, - 0x00, 0x18, 0x17, 0x88, 0x2C, 0x00, 0xF2, 0x37, 0x90, 0x47, 0x00, 0x00, 0x94, 0x47, 0x00, 0x00, - 0x98, 0x47, 0x00, 0x00, 0xA4, 0x47, 0x00, 0x00, 0xA8, 0x47, 0x00, 0x00, 0xAC, 0x47, 0x00, 0x00, - 0xB0, 0x47, 0x00, 0x00, 0xBC, 0x47, 0x00, 0x00, 0xC0, 0x47, 0x00, 0x00, 0xC4, 0x47, 0x00, 0x00, - 0xD0, 0x47, 0x00, 0x00, 0xD4, 0x47, 0x00, 0x00, 0xD8, 0x47, 0x00, 0x00, 0xE4, 0x47, 0x00, 0x00, - 0xE8, 0x47, 0x00, 0x00, 0xEC, 0x47, 0x00, 0x00, 0xF8, 0x47, 0x00, 0x00, 0xFC, 0x47, 0x05, 0x47, - 0xF1, 0x6F, 0x04, 0x48, 0x00, 0x00, 0x10, 0x48, 0x00, 0x00, 0x14, 0x48, 0x00, 0x00, 0x18, 0x48, - 0x00, 0x00, 0x24, 0x48, 0x00, 0x00, 0x28, 0x48, 0x00, 0x00, 0x2C, 0x48, 0x00, 0x00, 0x38, 0x48, - 0x00, 0x00, 0x3C, 0x48, 0x00, 0x00, 0x40, 0x48, 0x00, 0x00, 0x44, 0x48, 0x00, 0x00, 0x50, 0x48, - 0x00, 0x00, 0x54, 0x48, 0x00, 0x00, 0x58, 0x48, 0x00, 0x00, 0x64, 0x48, 0x00, 0x00, 0x68, 0x48, - 0x00, 0x00, 0x6C, 0x48, 0x00, 0x00, 0x78, 0x48, 0x00, 0x00, 0x7C, 0x48, 0x00, 0x00, 0x80, 0x48, - 0x00, 0x00, 0x8C, 0x48, 0x00, 0x00, 0x90, 0x48, 0x00, 0x00, 0x94, 0x48, 0x00, 0x00, 0xA0, 0x48, - 0x00, 0x00, 0xA4, 0x48, 0x00, 0x00, 0xA8, 0x48, 0x00, 0x00, 0xB4, 0x48, 0x00, 0x00, 0xD8, 0x48, - 0x00, 0x00, 0xFC, 0x48, 0x00, 0x00, 0x20, 0x49, 0x00, 0x00, 0x44, 0x49, 0x00, 0x00, 0x68, 0x49, - 0xDC, 0x00, 0x00, 0xE5, 0x16, 0x1B, 0xE0, 0x0B, 0x04, 0x2F, 0xE0, 0x00, 0x18, 0x00, 0x00, 0x2E, - 0x01, 0x60, 0x14, 0x00, 0x1F, 0x03, 0x28, 0x00, 0x00, 0x1F, 0x04, 0x54, 0x00, 0x18, 0x1F, 0x05, - 0x40, 0x00, 0x2C, 0x1F, 0x06, 0x40, 0x00, 0x14, 0x1F, 0x07, 0x54, 0x00, 0x01, 0x0F, 0xD0, 0x00, - 0x00, 0x1F, 0x08, 0x3C, 0x00, 0x02, 0x11, 0xFE, 0x46, 0x04, 0x9F, 0x5F, 0x00, 0x62, 0x00, 0x22, - 0x01, 0x4C, 0x00, 0x11, 0xB8, 0x3F, 0x06, 0x03, 0xBC, 0x0C, 0x21, 0x00, 0x23, 0x68, 0x45, 0x0E, - 0xC8, 0x40, 0x1F, 0xFC, 0x48, 0x00, 0x10, 0x11, 0xFB, 0x24, 0x00, 0x3F, 0xBD, 0x01, 0xED, 0x48, - 0x00, 0x08, 0x1F, 0xFA, 0x48, 0x00, 0x10, 0x13, 0xF9, 0x48, 0x00, 0x0F, 0x90, 0x00, 0x07, 0xF0, - 0x02, 0xB0, 0x49, 0x00, 0x00, 0xC0, 0x49, 0x00, 0x00, 0xD0, 0x49, 0x00, 0x00, 0xE0, 0x49, 0x00, - 0x00, 0xF0, 0xD0, 0x48, 0xDE, 0x4A, 0x00, 0x00, 0x10, 0x4A, 0x00, 0x00, 0x20, 0x4A, 0x00, 0x00, - 0x30, 0x4A, 0x34, 0x00, 0x1B, 0x01, 0x10, 0x00, 0x04, 0xD8, 0x29, 0x2A, 0x40, 0x4A, 0x10, 0x00, - 0x1B, 0x50, 0x10, 0x00, 0x1B, 0x88, 0x10, 0x00, 0x1B, 0x8C, 0x10, 0x00, 0x1B, 0xC8, 0x10, 0x00, - 0x2A, 0x00, 0x4B, 0x10, 0x00, 0x13, 0x04, 0x10, 0x00, 0xB0, 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x2C, - 0x20, 0x77, 0x6F, 0x72, 0x6C, 0xE7, 0x44, 0xF0, 0x27, 0x00, 0x54, 0x6F, 0x75, 0x63, 0x68, 0x20, - 0x74, 0x6F, 0x70, 0x2D, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x63, 0x72, 0x6F, 0x73, 0x73, 0x20, 0x69, - 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, - 0x69, 0x6C, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0xE4, - 0x1C, 0x05, 0x3C, 0x00, 0xBF, 0x62, 0x6F, 0x74, 0x74, 0x6F, 0x6D, 0x2D, 0x72, 0x69, 0x67, 0x68, - 0x40, 0x00, 0x18, 0x06, 0x78, 0x00, 0x0F, 0x39, 0x00, 0x1B, 0xF0, 0x01, 0x59, 0x65, 0x73, 0x00, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 0x00 + 0x47, 0x08, 0xFF, 0xFF, 0x48, 0x04, 0x00, 0x0D, 0x33, 0x04, 0x05, 0x11, 0xE4, 0x23, 0x97, 0xE1, + 0xFC, 0x73, 0x00, 0x00, 0x93, 0xA4, 0x4B, 0x00, 0x01, 0x00, 0x30, 0xDD, 0xFC, 0x6F, 0xFA, 0x0B, + 0x1F, 0x70, 0x05, 0x00, 0x16, 0xF6, 0x00, 0x04, 0xEE, 0xFF, 0x6D, 0x31, 0xD9, 0xFF, 0xFF, 0x37, + 0x34, 0xF7, 0xEC, 0x7D, 0x01, 0x00, 0x80, 0x06, 0x53, 0x18, 0xFC, 0xFC, 0x38, 0x00, 0x75, 0x03, + 0x0F, 0x09, 0x00, 0x0A, 0x40, 0x9F, 0xFC, 0xD9, 0x08, 0x09, 0x00, 0x10, 0x3F, 0xA2, 0x16, 0x71, + 0x18, 0xFF, 0xFF, 0x3E, 0xD6, 0xFF, 0xB3, 0x1B, 0x00, 0x41, 0xB0, 0xFF, 0xF8, 0x22, 0x09, 0x00, + 0x41, 0xFF, 0xFF, 0xEF, 0x09, 0x09, 0x00, 0x42, 0xB3, 0xE3, 0xFF, 0x5D, 0xCE, 0x03, 0x32, 0x89, + 0xFF, 0xC3, 0x3F, 0x00, 0x10, 0x2E, 0xA0, 0x07, 0x01, 0x48, 0x00, 0x32, 0xD2, 0xFF, 0x8F, 0x09, + 0x00, 0x40, 0x76, 0xFF, 0xEE, 0x08, 0x90, 0x1A, 0x04, 0xB8, 0x0A, 0x4F, 0x5B, 0xF8, 0xFF, 0x5C, + 0x03, 0x00, 0x11, 0x00, 0x74, 0x08, 0x02, 0x08, 0x03, 0xF0, 0x09, 0x1C, 0xFC, 0xFC, 0x67, 0xD3, + 0xF6, 0x90, 0x39, 0xC7, 0xF7, 0xA6, 0x03, 0x1C, 0xFF, 0xFF, 0xE9, 0xBB, 0xFF, 0xFF, 0xE9, 0xB4, + 0xFF, 0xFF, 0x3C, 0x54, 0x16, 0xFF, 0x05, 0x03, 0xFC, 0xFF, 0x46, 0x00, 0xDE, 0xFF, 0x5B, 0x1C, + 0xFF, 0xFF, 0x18, 0x00, 0xF8, 0xFF, 0x3C, 0x00, 0xD8, 0xFF, 0x5C, 0x0C, 0x00, 0x35, 0x25, 0x08, + 0x08, 0x80, 0x00, 0xFF, 0x07, 0x6F, 0xB7, 0xF6, 0xA1, 0x01, 0x1C, 0xFF, 0xFF, 0xE3, 0xC4, 0xFF, + 0xFF, 0x22, 0x1C, 0xFF, 0xFF, 0x3A, 0x21, 0xFF, 0xFF, 0x38, 0x1C, 0x04, 0x00, 0x24, 0x05, 0xE0, + 0x03, 0x80, 0x2C, 0xBF, 0xF6, 0xED, 0x9D, 0x0D, 0x04, 0xDF, 0xA8, 0x04, 0xF5, 0x05, 0x96, 0x33, + 0xFF, 0xFF, 0x13, 0x5D, 0xFF, 0xE7, 0x4B, 0xFF, 0xFF, 0x01, 0x4D, 0xFF, 0xFF, 0x4C, 0xFF, 0xFF, + 0x00, 0x4C, 0x07, 0x00, 0xF0, 0x0D, 0x4B, 0xFF, 0xFF, 0x00, 0x4D, 0xFF, 0xFF, 0x34, 0xFF, 0xFF, + 0x0F, 0x5D, 0xFF, 0xE8, 0x04, 0xE3, 0xFF, 0xC1, 0xDE, 0xFF, 0x9B, 0x00, 0x32, 0xC1, 0xF9, 0xEF, + 0xA1, 0x10, 0xFC, 0x02, 0x32, 0x0D, 0x00, 0xFD, 0xA8, 0x00, 0xD0, 0x8D, 0xD8, 0xEF, 0x6D, 0x00, + 0x1C, 0xFF, 0xFF, 0xDA, 0xC7, 0xFF, 0xFC, 0x17, 0x58, 0x1A, 0x40, 0x0B, 0xFD, 0xFF, 0x4F, 0x74, + 0x00, 0x41, 0x00, 0xF1, 0xFF, 0x60, 0x08, 0x00, 0x1B, 0xF0, 0x08, 0x00, 0x31, 0xF1, 0xFF, 0x5F, + 0x94, 0x00, 0xF3, 0x05, 0xFD, 0xFF, 0x4C, 0x1C, 0xFF, 0xFF, 0xCD, 0xBE, 0xFF, 0xF9, 0x12, 0x1C, + 0xFF, 0xFF, 0x91, 0xE0, 0xEF, 0x65, 0x00, 0x1C, 0x19, 0x02, 0x0C, 0x08, 0x00, 0x04, 0x70, 0x00, + 0xF0, 0x0D, 0x00, 0x48, 0xE1, 0xE9, 0x95, 0xFC, 0xFC, 0x30, 0x04, 0xE8, 0xFF, 0xD3, 0xCD, 0xFF, + 0xFF, 0x30, 0x30, 0xFF, 0xFF, 0x27, 0x24, 0xFF, 0xFF, 0x30, 0x43, 0xFF, 0xFF, 0x11, 0x08, 0x00, + 0x48, 0x44, 0xFF, 0xFF, 0x10, 0x08, 0x00, 0x04, 0x18, 0x00, 0x40, 0x30, 0xFF, 0xFF, 0x22, 0x08, + 0x00, 0x50, 0x05, 0xF1, 0xFF, 0xCC, 0xC4, 0xF2, 0x1D, 0x40, 0x59, 0xE6, 0xED, 0x97, 0x08, 0x00, + 0x02, 0x07, 0x19, 0x0D, 0x08, 0x00, 0x18, 0x06, 0x1C, 0x17, 0x60, 0x02, 0x14, 0xFC, 0xFC, 0x6B, + 0xCE, 0x8F, 0x0B, 0xA1, 0xFB, 0xB8, 0x79, 0x14, 0xFF, 0xFF, 0x77, 0x00, 0x00, 0x14, 0xDC, 0x03, + 0x0F, 0x06, 0x00, 0x11, 0x16, 0x00, 0x24, 0x06, 0xF1, 0x16, 0x54, 0xD4, 0xF7, 0xBB, 0x24, 0x00, + 0x21, 0xFD, 0xFB, 0xB4, 0xFC, 0xCD, 0x01, 0x5F, 0xFF, 0xC6, 0x00, 0x8E, 0xD7, 0x15, 0x31, 0xFF, + 0xFF, 0x73, 0x0A, 0x01, 0x00, 0x00, 0x93, 0xFF, 0xFF, 0x8B, 0x02, 0x00, 0x00, 0x02, 0x83, 0x9A, + 0x18, 0xF1, 0x0B, 0x0C, 0x08, 0x63, 0xFF, 0xFF, 0x31, 0x67, 0xF5, 0x63, 0x00, 0xC7, 0xFF, 0x5B, + 0x31, 0xFE, 0xF4, 0xAB, 0xFC, 0xFD, 0x20, 0x00, 0x5B, 0xD7, 0xFB, 0xD1, 0x57, 0x4C, 0x1D, 0x03, + 0xD6, 0x17, 0x40, 0xB6, 0xFC, 0x9E, 0x00, 0xCB, 0x09, 0x14, 0xA0, 0x06, 0x00, 0x01, 0x56, 0x05, + 0x78, 0x1C, 0x71, 0xE7, 0xFF, 0xDE, 0xA4, 0x12, 0x18, 0x00, 0x0F, 0x06, 0x00, 0x00, 0x11, 0xB4, + 0x76, 0x09, 0xD4, 0x88, 0xFF, 0xFF, 0xDB, 0x32, 0x00, 0x17, 0xC6, 0xFC, 0xF5, 0x33, 0x00, 0x00, + 0x7C, 0x02, 0xFF, 0x00, 0x2C, 0xFC, 0xFC, 0x24, 0x34, 0xFC, 0xFC, 0x1C, 0x2C, 0xFF, 0xFF, 0x24, + 0x34, 0xFF, 0xFF, 0x08, 0x00, 0x19, 0xA0, 0x2A, 0x37, 0xFF, 0xFF, 0x1C, 0x19, 0xFF, 0xFF, 0xD0, + 0xE7, 0xD6, 0x0B, 0x74, 0x9F, 0xFA, 0xC0, 0x67, 0xFF, 0xFF, 0x1C, 0x00, 0x01, 0xF0, 0x13, 0xAE, + 0xFC, 0x8B, 0x00, 0xA3, 0xFC, 0x92, 0x80, 0xFF, 0xAF, 0x00, 0xC7, 0xFF, 0x63, 0x4E, 0xFF, 0xD2, + 0x00, 0xE8, 0xFF, 0x33, 0x1D, 0xFF, 0xF4, 0x0C, 0xFF, 0xFB, 0x07, 0x01, 0xEC, 0xFF, 0x43, 0xFF, + 0xD1, 0x7A, 0x08, 0x10, 0x88, 0x9F, 0x00, 0x50, 0x89, 0xFF, 0xCC, 0xFF, 0x6F, 0x55, 0x1B, 0x30, + 0xFE, 0xFF, 0x3E, 0xFF, 0x0A, 0x10, 0xFF, 0x2E, 0x1B, 0x43, 0x02, 0xF3, 0xFF, 0xDC, 0x7C, 0x2B, + 0x01, 0x50, 0x00, 0xF0, 0x2C, 0x7F, 0xFC, 0x67, 0x00, 0xD6, 0xF9, 0x06, 0x3A, 0xFC, 0x96, 0x5B, + 0xFF, 0x89, 0x07, 0xFC, 0xFF, 0x29, 0x5E, 0xFF, 0x71, 0x34, 0xFF, 0xAB, 0x2C, 0xFF, 0xFF, 0x50, + 0x82, 0xFF, 0x49, 0x0E, 0xFF, 0xCC, 0x55, 0xFF, 0xFE, 0x76, 0xA6, 0xFF, 0x21, 0x00, 0xE7, 0xED, + 0x7E, 0xF1, 0xCD, 0x9D, 0xCB, 0xF8, 0x03, 0x00, 0xC0, 0xFF, 0xB7, 0xC3, 0xA0, 0xC4, 0xF0, 0xD2, + 0xB0, 0x15, 0x40, 0xF7, 0x94, 0x74, 0xF5, 0xF1, 0x1C, 0x80, 0x72, 0xFF, 0xFF, 0x65, 0x47, 0xFF, + 0xFF, 0x83, 0x20, 0x1C, 0x60, 0xFF, 0x36, 0x1B, 0xFF, 0xFF, 0x5B, 0x03, 0x02, 0x65, 0xFE, 0x0A, + 0x01, 0xEF, 0xFF, 0x34, 0xBC, 0x01, 0xF1, 0x05, 0x92, 0xFC, 0xB1, 0x00, 0x64, 0xFC, 0x99, 0x26, + 0xFE, 0xFF, 0x26, 0xC8, 0xFF, 0x2F, 0x00, 0xB1, 0xFF, 0xBD, 0xFF, 0xC2, 0x36, 0x18, 0x10, 0xFF, + 0xC1, 0x29, 0xF0, 0x19, 0xD8, 0xFF, 0xE4, 0x05, 0x00, 0x00, 0x15, 0xF9, 0xFF, 0xE8, 0x08, 0x00, + 0x00, 0x73, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x01, 0xD9, 0xFF, 0x98, 0xFF, 0xD4, 0x01, 0x3F, 0xFF, + 0xC2, 0x10, 0xF3, 0xFF, 0x48, 0xA5, 0xFF, 0x63, 0x00, 0x8E, 0xFF, 0xBB, 0x0C, 0x02, 0x02, 0xC8, + 0x02, 0xF0, 0x18, 0xC3, 0xFC, 0x75, 0x00, 0x67, 0xFC, 0xD2, 0x89, 0xFF, 0xA5, 0x00, 0x90, 0xFF, + 0x9E, 0x4B, 0xFF, 0xD3, 0x00, 0xB8, 0xFF, 0x66, 0x10, 0xFE, 0xFB, 0x07, 0xE0, 0xFF, 0x2F, 0x00, + 0xCE, 0xFF, 0x3A, 0xFF, 0xF5, 0x04, 0x00, 0x8F, 0xFF, 0x8F, 0xD3, 0x12, 0x51, 0x51, 0xFF, 0xE4, + 0xFF, 0x89, 0x4E, 0x02, 0x61, 0xFF, 0x51, 0x00, 0x00, 0x00, 0xD5, 0x2C, 0x12, 0x40, 0x00, 0x98, + 0xFF, 0xE3, 0x98, 0x00, 0xF1, 0x01, 0x75, 0xFF, 0xAB, 0x00, 0x00, 0x0B, 0xB6, 0xF0, 0xFF, 0x52, + 0x00, 0x00, 0x10, 0xFD, 0xD5, 0x74, 0x28, 0x41, 0x15, 0x06, 0xC8, 0x01, 0x91, 0xFC, 0xFC, 0xD5, + 0x1D, 0xA4, 0xA4, 0xE3, 0xFF, 0xBE, 0x3E, 0x22, 0x10, 0x5B, 0x38, 0x0B, 0x00, 0x1A, 0x05, 0x10, + 0xC6, 0x94, 0x0C, 0x40, 0x2E, 0xFF, 0xFF, 0x2B, 0xDC, 0x09, 0x50, 0xC4, 0x00, 0x00, 0x0C, 0xF2, + 0x24, 0x10, 0x70, 0x5D, 0xFF, 0xFF, 0xA6, 0x9C, 0x7F, 0x70, 0x6E, 0x05, 0x14, 0xD0, 0x50, 0x0B, + 0xF4, 0x08, 0x00, 0x00, 0x7D, 0xE8, 0xFC, 0x4B, 0x00, 0x17, 0xFF, 0xFF, 0xCC, 0x31, 0x00, 0x35, + 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x38, 0xFF, 0xFF, 0x14, 0x06, 0x00, 0x11, 0x3A, 0x06, 0x00, 0x10, + 0x4A, 0x1B, 0x0D, 0x20, 0x2A, 0xD4, 0xB5, 0x0C, 0xF0, 0x02, 0x44, 0xFF, 0xFC, 0x52, 0x00, 0x00, + 0x02, 0x70, 0xFF, 0xE1, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0x0B, 0xD4, 0x21, 0x2A, 0xFF, 0x14, + 0x36, 0x00, 0xF0, 0x02, 0x32, 0xFF, 0xFF, 0x21, 0x00, 0x00, 0x13, 0xFE, 0xFF, 0xCA, 0x30, 0x00, + 0x00, 0x76, 0xEB, 0xFF, 0x4C, 0xAC, 0x05, 0x02, 0x5C, 0x21, 0x53, 0xDA, 0xFC, 0x28, 0xDD, 0xFF, + 0x03, 0x00, 0x17, 0xDE, 0x03, 0x00, 0x17, 0xDF, 0x03, 0x00, 0x1A, 0xE0, 0x03, 0x00, 0x05, 0xFC, + 0x0B, 0x81, 0x43, 0xFC, 0xE9, 0x84, 0x00, 0x00, 0x2C, 0xC9, 0xF9, 0x13, 0x00, 0x47, 0x06, 0x10, + 0x00, 0x4A, 0x21, 0x10, 0x44, 0x53, 0x1A, 0x06, 0x06, 0x00, 0x21, 0x02, 0xF6, 0x54, 0x0C, 0x80, + 0xA3, 0xFF, 0xD7, 0x2F, 0x00, 0x00, 0x4D, 0xFA, 0x7C, 0x00, 0x40, 0xDC, 0xFF, 0x76, 0x02, 0x0F, + 0x0C, 0x1A, 0x46, 0x2A, 0x00, 0x02, 0x3C, 0x00, 0x10, 0x1A, 0xF9, 0x12, 0x20, 0x2B, 0xC7, 0x75, + 0x01, 0x42, 0x44, 0xFF, 0xED, 0x7D, 0x8C, 0x04, 0x11, 0x04, 0x2F, 0x1B, 0xF4, 0x09, 0x00, 0x21, + 0x8C, 0x63, 0x07, 0x00, 0x22, 0x00, 0x26, 0xEF, 0xFF, 0xFF, 0xE4, 0xB4, 0xFD, 0x2E, 0x06, 0x7A, + 0x17, 0x53, 0xCB, 0xF5, 0x7A, 0x01, 0x14, 0x1B, 0x22, 0x06, 0x06, 0x1F, 0x19, 0xFF, 0x02, 0x25, + 0x54, 0x54, 0x54, 0x54, 0x07, 0x70, 0x55, 0x3C, 0x3C, 0x9B, 0x14, 0x70, 0x20, 0x00, 0x00, 0x7C, + 0x06, 0x00, 0x1F, 0x58, 0x9B, 0x8C, 0x8C, 0xC5, 0x14, 0xB4, 0x25, 0x04, 0x74, 0x3D, 0x31, 0x08, + 0x06, 0x1C, 0x70, 0x00, 0x10, 0x67, 0xEC, 0x01, 0x20, 0x07, 0x58, 0xA3, 0x21, 0xF0, 0x09, 0x00, + 0x47, 0xFF, 0xFF, 0xFF, 0xE1, 0x00, 0x36, 0xFF, 0xFF, 0xFF, 0xCE, 0x00, 0x26, 0xFF, 0xFF, 0xFF, + 0xBB, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xA9, 0x0A, 0x0D, 0x00, 0xEE, 0x0E, 0x11, 0xF3, 0xEC, 0x02, + 0x11, 0xE3, 0x7C, 0x2D, 0x11, 0xD2, 0x78, 0x18, 0x20, 0xC1, 0xFF, 0x54, 0x0D, 0x40, 0xB0, 0xFF, + 0xFF, 0x37, 0x62, 0x09, 0x00, 0x89, 0x0C, 0x40, 0x8F, 0xFF, 0xFF, 0x12, 0x94, 0x1C, 0x20, 0xFD, + 0x02, 0xCD, 0x0C, 0x20, 0xEC, 0x00, 0x1D, 0x02, 0x11, 0xD9, 0xC4, 0x0A, 0x11, 0xC6, 0x79, 0x24, + 0x10, 0xB3, 0x99, 0x1B, 0x01, 0x90, 0x0D, 0x31, 0x1A, 0xFF, 0x8E, 0x00, 0x22, 0x0B, 0xFB, 0x37, + 0x71, 0x77, 0xFC, 0xFC, 0xFC, 0xE1, 0x00, 0x78, 0x7D, 0x2B, 0x08, 0x06, 0x00, 0x51, 0x0C, 0x0A, + 0x0A, 0x02, 0x12, 0x1E, 0x16, 0xF0, 0x07, 0xFC, 0xCE, 0x00, 0x7B, 0xFC, 0xFC, 0xFC, 0x57, 0xFF, + 0xFF, 0xFF, 0xA1, 0x00, 0x7C, 0xFF, 0xFF, 0xFF, 0x28, 0xFF, 0xFF, 0xFF, 0x72, 0x0A, 0x00, 0x30, + 0xF6, 0x03, 0xFF, 0x6C, 0x1E, 0x60, 0x7C, 0xFF, 0xFF, 0xC8, 0x00, 0xFF, 0x72, 0x10, 0x60, 0x7C, + 0xFF, 0xFF, 0x98, 0x00, 0xFF, 0xF1, 0x02, 0x81, 0x7C, 0xFF, 0xFF, 0x68, 0x00, 0xFF, 0xFF, 0xB3, + 0x0A, 0x00, 0x30, 0x38, 0x00, 0xFF, 0x9F, 0x09, 0x51, 0x7C, 0xFF, 0xFE, 0x0B, 0x00, 0xF5, 0x15, + 0x51, 0x7C, 0xFF, 0xD8, 0x00, 0x00, 0x53, 0x22, 0x10, 0x02, 0x90, 0x00, 0x44, 0x11, 0x0F, 0x1C, + 0x01, 0x90, 0x00, 0x40, 0xE9, 0xFC, 0xFC, 0xC4, 0x32, 0x04, 0x20, 0xFC, 0xFC, 0xAC, 0x2D, 0x50, + 0x0F, 0xFF, 0xFF, 0xFF, 0xA5, 0x05, 0x02, 0x01, 0x58, 0x04, 0x00, 0xA2, 0x17, 0x00, 0x13, 0x01, + 0x20, 0xC5, 0xFF, 0x51, 0x0C, 0x00, 0x71, 0x03, 0x01, 0x97, 0x17, 0x62, 0xE7, 0xFF, 0xFF, 0xC9, + 0x00, 0x00, 0xD0, 0x03, 0x20, 0x3F, 0x00, 0xDF, 0x0C, 0x01, 0x8B, 0x1E, 0x50, 0x94, 0xFF, 0xFF, + 0xFF, 0x1D, 0xAC, 0x0F, 0x01, 0xA7, 0x26, 0x60, 0x00, 0xB6, 0xFF, 0xFF, 0xF9, 0x03, 0x29, 0x07, + 0x00, 0x5A, 0x11, 0x40, 0x00, 0x00, 0xD7, 0xFF, 0x28, 0x01, 0x70, 0x6F, 0xFF, 0xFF, 0xFF, 0x41, + 0x00, 0xB4, 0x7E, 0x17, 0x21, 0xFF, 0xFF, 0x37, 0x20, 0x49, 0xFF, 0xFD, 0x9D, 0xBA, 0x05, 0x2D, + 0x29, 0x9C, 0xBE, 0x0F, 0x00, 0x90, 0x9A, 0x33, 0x44, 0x99, 0xFF, 0xFF, 0xFF, 0x71, 0x44, 0x36, + 0x15, 0x30, 0xC4, 0x44, 0x29, 0x58, 0x10, 0x00, 0xBF, 0x1E, 0x50, 0x1F, 0xFF, 0xFF, 0xFF, 0x93, + 0x59, 0x00, 0x92, 0xA7, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x3B, 0xFF, 0xFF, 0xBE, 0x25, 0xB0, 0xC2, + 0xFF, 0xFF, 0xE7, 0x00, 0x00, 0x56, 0xFF, 0xFF, 0xFF, 0x57, 0x4D, 0x04, 0x06, 0x68, 0x00, 0x49, + 0xFE, 0xFC, 0x91, 0xC8, 0x5A, 0x00, 0x29, 0x90, 0xCB, 0x0F, 0x00, 0x30, 0x8E, 0x37, 0x7F, 0xA2, + 0x2E, 0x90, 0x44, 0x44, 0xEC, 0xFF, 0xFF, 0xDA, 0x44, 0x44, 0x26, 0x77, 0x21, 0x82, 0xFF, 0x44, + 0x00, 0x04, 0xFC, 0xFF, 0xFF, 0xB1, 0xCF, 0x10, 0x00, 0xAE, 0x1E, 0x32, 0x20, 0xFF, 0xFF, 0xB6, + 0x1F, 0x83, 0xAA, 0xFF, 0xFF, 0xFE, 0x07, 0x00, 0x40, 0xFF, 0x01, 0x10, 0x11, 0xC9, 0x4D, 0x2D, + 0x30, 0x60, 0xFF, 0xFF, 0x70, 0x04, 0x62, 0x00, 0x00, 0xE8, 0xFF, 0xFF, 0xC4, 0x48, 0x2F, 0x01, + 0x38, 0x12, 0x41, 0xFF, 0xFF, 0xFF, 0xA4, 0x42, 0x02, 0x00, 0x3D, 0x02, 0x01, 0xB6, 0x05, 0x11, + 0x84, 0x4E, 0x10, 0x10, 0xF3, 0x87, 0x01, 0x21, 0x46, 0xFF, 0xA9, 0x25, 0x42, 0xE0, 0xFF, 0xFF, + 0xD3, 0x08, 0x26, 0x04, 0x77, 0x00, 0x12, 0xB4, 0x53, 0x30, 0x35, 0x22, 0x01, 0xFD, 0x3E, 0x02, + 0x29, 0x4A, 0x65, 0x4D, 0x02, 0x2A, 0x98, 0xD0, 0x0F, 0x00, 0x14, 0xD4, 0xB2, 0x28, 0xA1, 0x00, + 0x04, 0x63, 0xBD, 0xEC, 0xFE, 0xFF, 0xF9, 0xBE, 0x56, 0xE9, 0x01, 0x24, 0x15, 0xC7, 0xE6, 0x00, + 0x10, 0x92, 0x76, 0x12, 0x07, 0x62, 0x01, 0x21, 0x5C, 0x00, 0xA3, 0x01, 0xC0, 0xFF, 0xB5, 0x50, + 0x58, 0xD9, 0xFF, 0xFF, 0xFF, 0xD7, 0x01, 0x00, 0xA6, 0x25, 0x03, 0x11, 0x04, 0x75, 0x11, 0x52, + 0xFF, 0xFF, 0x33, 0x00, 0xD6, 0xBC, 0x00, 0xD0, 0x00, 0x00, 0xD4, 0xFF, 0xFF, 0xFF, 0x6B, 0x00, + 0xED, 0xFF, 0xFF, 0xFF, 0xAC, 0x0F, 0x00, 0x11, 0xA6, 0x2A, 0x20, 0x10, 0xE9, 0xBC, 0x02, 0x00, + 0xE2, 0x02, 0x83, 0x8F, 0xFA, 0xCB, 0x97, 0x46, 0x00, 0xC6, 0xFF, 0x10, 0x01, 0x24, 0x15, 0x07, + 0x12, 0x02, 0x25, 0xFF, 0xFD, 0x43, 0x2E, 0x02, 0x0B, 0x23, 0x45, 0xFB, 0x5B, 0x00, 0x00, 0x06, + 0x30, 0x00, 0x01, 0x00, 0x13, 0x6E, 0x0F, 0x00, 0x22, 0x0E, 0xD8, 0x10, 0x00, 0x13, 0x82, 0x9C, + 0x02, 0x22, 0x1F, 0xDD, 0x10, 0x00, 0x13, 0x8F, 0x10, 0x00, 0x13, 0x19, 0xE3, 0x2A, 0x13, 0x7D, + 0x30, 0x00, 0x22, 0x10, 0xC3, 0x10, 0x00, 0x13, 0x46, 0x10, 0x00, 0x21, 0x0A, 0xB3, 0x0F, 0x00, + 0x14, 0xDF, 0x02, 0x04, 0x21, 0x05, 0xAC, 0x10, 0x00, 0x14, 0x64, 0x6F, 0x00, 0x11, 0x07, 0x9E, + 0x00, 0x60, 0xC0, 0x00, 0x0C, 0x41, 0x79, 0xB2, 0x97, 0x0C, 0x91, 0x25, 0xFD, 0xFF, 0xFF, 0xFF, + 0xF6, 0x02, 0xF1, 0xFF, 0x08, 0x16, 0x00, 0x47, 0x11, 0x50, 0xFF, 0xFF, 0xFF, 0x16, 0xD7, 0x41, + 0x30, 0x21, 0x00, 0x00, 0x78, 0x08, 0x30, 0xFF, 0xFF, 0x1E, 0x44, 0x00, 0x01, 0xC0, 0x27, 0x10, + 0x91, 0xCB, 0x00, 0x20, 0x08, 0x66, 0x15, 0x00, 0x50, 0x39, 0x00, 0x00, 0x01, 0xCE, 0x0C, 0x06, + 0x20, 0x00, 0x12, 0x3D, 0x00, 0x30, 0xEA, 0x67, 0x45, 0xDA, 0x01, 0x22, 0xFF, 0x73, 0xDF, 0x02, + 0x04, 0x0B, 0x30, 0x55, 0x09, 0x00, 0x00, 0x01, 0x87, 0x8C, 0x32, 0x12, 0x25, 0xF1, 0x11, 0x76, + 0xA1, 0xDB, 0xFB, 0xFF, 0xFF, 0xE1, 0x83, 0x35, 0x48, 0x38, 0x08, 0xFF, 0x65, 0x8C, 0x30, 0x13, + 0x08, 0x1B, 0x1B, 0x0E, 0x0F, 0x00, 0x24, 0x20, 0x1E, 0xB4, 0x03, 0x83, 0x17, 0x88, 0xD1, 0xF5, + 0xF9, 0xDD, 0xA3, 0x35, 0x23, 0x00, 0x46, 0xF3, 0xFC, 0xFC, 0x2E, 0x32, 0x00, 0x22, 0x2B, 0xE9, + 0x71, 0x00, 0x12, 0xFC, 0xF7, 0x00, 0x46, 0x43, 0xFF, 0xFF, 0xE9, 0x0E, 0x21, 0x15, 0x01, 0x01, + 0x03, 0x32, 0xF9, 0x1C, 0x00, 0xE5, 0x08, 0x16, 0xA5, 0x3B, 0x00, 0x10, 0x32, 0x0A, 0x32, 0x41, + 0x63, 0x53, 0xCF, 0xFF, 0x88, 0x1A, 0x66, 0x00, 0x00, 0xCD, 0xFF, 0xFF, 0x60, 0x1E, 0x00, 0x00, + 0xED, 0x03, 0x52, 0x76, 0x00, 0x00, 0x34, 0xFF, 0xFB, 0x12, 0x47, 0x14, 0xFE, 0xFF, 0xFF, 0x39, + 0x40, 0x20, 0x97, 0xFF, 0xC0, 0x16, 0x00, 0x2C, 0x06, 0x01, 0xA3, 0x10, 0x47, 0x57, 0xFF, 0xFF, + 0xD6, 0xC7, 0x00, 0x00, 0x45, 0x01, 0x11, 0x36, 0xAC, 0x41, 0x20, 0xFF, 0xF5, 0x07, 0x4A, 0x03, + 0x43, 0x03, 0x03, 0x1E, 0x00, 0x00, 0xC0, 0x32, 0x10, 0x34, 0xC6, 0x1B, 0x70, 0xFF, 0xFF, 0xF8, + 0x00, 0x00, 0x01, 0xE1, 0xEC, 0x0C, 0x0A, 0x1E, 0x00, 0x15, 0x35, 0x1E, 0x00, 0x57, 0x25, 0xFF, + 0xFF, 0xFB, 0x0D, 0x1E, 0x00, 0x12, 0xAA, 0x8F, 0x01, 0x30, 0x00, 0xF6, 0xFF, 0x93, 0x2B, 0x13, + 0x6A, 0xAC, 0x01, 0x04, 0x3F, 0x01, 0x21, 0x91, 0xFF, 0x4C, 0x00, 0x12, 0x0B, 0x0D, 0x34, 0x13, + 0xAF, 0xD8, 0x00, 0x04, 0x1E, 0x00, 0x10, 0x69, 0x6C, 0x02, 0x00, 0x09, 0x0F, 0x62, 0xFF, 0xFF, + 0xB5, 0x00, 0x04, 0xF1, 0x49, 0x00, 0x05, 0x1E, 0x00, 0x81, 0x25, 0xFF, 0xFF, 0xFF, 0xF1, 0x5E, + 0x4F, 0xD7, 0xD1, 0x02, 0x41, 0x39, 0xFF, 0xFF, 0xF0, 0xC5, 0x21, 0x32, 0x21, 0x3A, 0x33, 0xF1, + 0x1F, 0x14, 0xB5, 0x4A, 0x01, 0x50, 0xF2, 0x11, 0x00, 0x7E, 0xFF, 0xD3, 0x29, 0x30, 0x07, 0x84, + 0xEB, 0x10, 0x00, 0x20, 0xC7, 0x42, 0xBB, 0x02, 0x13, 0xE0, 0x67, 0x01, 0xA4, 0x53, 0x00, 0x00, + 0xC3, 0xFF, 0xFF, 0x6A, 0x00, 0x02, 0xB9, 0xE3, 0x31, 0x00, 0x1F, 0x04, 0x80, 0x12, 0x85, 0xD5, + 0xFB, 0xFF, 0xE1, 0xA2, 0x2F, 0xA1, 0x27, 0x00, 0x56, 0x06, 0x15, 0x51, 0x36, 0x02, 0x12, 0xE2, + 0xEE, 0x20, 0x12, 0x01, 0xB4, 0x01, 0x20, 0x4D, 0xFF, 0x57, 0x45, 0x00, 0x3E, 0x01, 0x53, 0x87, + 0x0E, 0x2A, 0xDB, 0xFF, 0x36, 0x0B, 0x04, 0xA2, 0x00, 0x41, 0x92, 0xFF, 0xFF, 0x9B, 0xAF, 0x06, + 0x20, 0xFA, 0x09, 0xEF, 0x08, 0x01, 0x9F, 0x01, 0x06, 0x1E, 0x00, 0x72, 0xD6, 0xFF, 0xFF, 0x56, + 0x00, 0x03, 0xFD, 0x90, 0x01, 0x12, 0x54, 0xD7, 0x23, 0x05, 0x1D, 0x00, 0x50, 0x1C, 0xFF, 0xFF, + 0xFE, 0x14, 0xCE, 0x07, 0x22, 0xFF, 0xD9, 0x67, 0x00, 0x27, 0xFF, 0x9C, 0x1E, 0x00, 0x41, 0x60, + 0xFF, 0xFF, 0xCD, 0xEC, 0x07, 0x22, 0xFF, 0xD8, 0x9E, 0x11, 0x09, 0x1E, 0x00, 0x10, 0xA5, 0x4D, + 0x16, 0x23, 0x00, 0x09, 0x61, 0x35, 0x10, 0x4E, 0xA3, 0x05, 0x07, 0x11, 0x0C, 0x10, 0xE9, 0x63, + 0x1F, 0x32, 0x00, 0x01, 0xF5, 0x32, 0x06, 0x16, 0x5D, 0xB0, 0x33, 0x12, 0x00, 0xC2, 0x24, 0x10, + 0xF7, 0x9E, 0x03, 0x00, 0xC9, 0x03, 0x12, 0x21, 0x62, 0x03, 0x07, 0xD0, 0x04, 0x40, 0x74, 0xFF, + 0xFF, 0xB9, 0x08, 0x00, 0x81, 0x8E, 0xFF, 0xFF, 0xFF, 0xBD, 0x47, 0x69, 0xF7, 0x70, 0x05, 0x05, + 0x01, 0x00, 0x54, 0xB9, 0xFF, 0xFF, 0x74, 0x00, 0xB6, 0x03, 0x01, 0x01, 0x00, 0x17, 0xB7, 0x28, + 0x03, 0x41, 0xF7, 0xFF, 0xFF, 0x2F, 0x0A, 0x00, 0x23, 0x6F, 0xFE, 0x49, 0x01, 0x16, 0x21, 0x1E, + 0x00, 0x16, 0x42, 0x05, 0x03, 0xC6, 0x3C, 0xAA, 0xE2, 0xFD, 0xF5, 0xD0, 0x83, 0x11, 0x00, 0x00, + 0x14, 0x11, 0x04, 0x07, 0x75, 0x45, 0xB3, 0xEA, 0xFA, 0xE2, 0xA5, 0x37, 0x27, 0x03, 0x2A, 0x89, + 0xFF, 0x8A, 0x04, 0x15, 0x5A, 0xA0, 0x01, 0x12, 0x5D, 0x21, 0x00, 0x00, 0x92, 0x28, 0x20, 0xB2, + 0x4C, 0x03, 0x05, 0x11, 0xDD, 0x23, 0x00, 0x94, 0x2A, 0xFF, 0xFF, 0xFF, 0xF3, 0x0A, 0x00, 0x03, + 0xE9, 0xB4, 0x17, 0x13, 0x50, 0x37, 0x04, 0x32, 0xD3, 0xFF, 0xFF, 0xF2, 0x14, 0x21, 0x52, 0xFF, + 0x12, 0x06, 0x21, 0x03, 0xF5, 0x25, 0x07, 0x02, 0xE9, 0x21, 0x50, 0xFF, 0xE8, 0x01, 0x00, 0x2D, + 0x75, 0x03, 0x01, 0x44, 0x00, 0x10, 0x04, 0x5B, 0x05, 0x32, 0x22, 0x00, 0x7E, 0x8C, 0x08, 0x04, + 0x55, 0x03, 0x63, 0x67, 0x05, 0xE1, 0xFF, 0xFF, 0xFA, 0xE1, 0x08, 0x50, 0x26, 0xFD, 0xFF, 0xFF, + 0xBA, 0xD5, 0x2D, 0x14, 0x7B, 0xAB, 0x00, 0x85, 0x9F, 0xFF, 0xFF, 0xFD, 0xE6, 0xFF, 0xFF, 0xC0, + 0x65, 0x08, 0x20, 0x20, 0xFA, 0xA7, 0x00, 0x16, 0xDD, 0x8C, 0x2F, 0x01, 0xED, 0x05, 0x29, 0xE7, + 0x23, 0x67, 0x01, 0xE1, 0xFF, 0xFF, 0xBC, 0x01, 0x00, 0x00, 0x05, 0x70, 0x70, 0x70, 0x54, 0x00, + 0x00, 0x3A, 0x24, 0x07, 0x00, 0xD6, 0x17, 0x10, 0x1E, 0x95, 0x1A, 0x41, 0x00, 0x08, 0xDD, 0xFF, + 0x42, 0x28, 0x21, 0xDB, 0x07, 0xB1, 0x05, 0x10, 0x98, 0xED, 0x16, 0x31, 0xFF, 0xBC, 0x86, 0x60, + 0x07, 0x11, 0x67, 0x06, 0x00, 0x00, 0xD5, 0x00, 0xD0, 0x4A, 0x10, 0xEC, 0xFF, 0xFF, 0xF2, 0x18, + 0x96, 0xFF, 0xFF, 0xFF, 0x37, 0x1C, 0x5D, 0x09, 0x11, 0x05, 0x28, 0x00, 0x60, 0x9D, 0xDB, 0xFF, + 0xFF, 0xEC, 0x03, 0x68, 0x09, 0x52, 0xC8, 0x00, 0x00, 0x05, 0xD9, 0x35, 0x01, 0x11, 0x8D, 0x41, + 0x01, 0x13, 0xAF, 0x2E, 0x02, 0x41, 0xFF, 0xFF, 0xFE, 0x24, 0x20, 0x01, 0x14, 0xC0, 0x9E, 0x00, + 0x00, 0x28, 0x18, 0x00, 0xE4, 0x08, 0x60, 0xF5, 0x0D, 0x00, 0x00, 0x14, 0xD5, 0x11, 0x00, 0x40, + 0xF3, 0x62, 0x0A, 0x01, 0x3D, 0x00, 0x33, 0xBA, 0x45, 0x69, 0x4A, 0x03, 0x46, 0xFF, 0xD4, 0x00, + 0x56, 0x26, 0x03, 0x12, 0xED, 0xDC, 0x16, 0x13, 0x84, 0x10, 0x00, 0x41, 0xCF, 0x21, 0x2E, 0xE4, + 0x11, 0x00, 0xF2, 0x02, 0x00, 0x3F, 0xAE, 0xE8, 0xFD, 0xED, 0xBA, 0x68, 0x07, 0x00, 0x00, 0x16, + 0x9F, 0xEF, 0xD3, 0x0B, 0x05, 0x54, 0x09, 0xB0, 0xC5, 0xFC, 0xFC, 0xF4, 0x03, 0xC8, 0xFF, 0xFF, + 0xCF, 0x00, 0xC8, 0xCD, 0x06, 0x10, 0xC8, 0xDE, 0x15, 0x10, 0xC8, 0x1B, 0x04, 0x10, 0xC8, 0x88, + 0x02, 0x80, 0xC8, 0xFF, 0xF4, 0x02, 0x00, 0xC8, 0xFF, 0xCA, 0x12, 0x1A, 0x15, 0x9E, 0x75, 0x2B, + 0x53, 0x0B, 0x08, 0x23, 0x02, 0xF9, 0x33, 0x01, 0x91, 0x3F, 0xAC, 0xE6, 0x72, 0x00, 0x00, 0x02, + 0x8F, 0xFF, 0x84, 0x02, 0x00, 0x6B, 0x03, 0xF1, 0x02, 0xFF, 0x74, 0x00, 0x13, 0xF4, 0xFF, 0xFF, + 0xFF, 0x9E, 0x22, 0x00, 0x6E, 0xFF, 0xFF, 0xFF, 0xC6, 0x01, 0xE8, 0x03, 0x61, 0xFF, 0x59, 0x00, + 0x00, 0x0E, 0xFC, 0x9A, 0x09, 0x01, 0x3C, 0x01, 0x11, 0xE5, 0xB8, 0x17, 0x01, 0xF9, 0x01, 0x00, + 0x74, 0x29, 0x01, 0x45, 0x2A, 0x53, 0x95, 0xFF, 0xFF, 0xFF, 0x99, 0xB7, 0x08, 0x13, 0x8D, 0x49, + 0x04, 0x12, 0x85, 0x5C, 0x18, 0x20, 0xFF, 0x80, 0xFC, 0x1E, 0x11, 0xFF, 0xF8, 0x1F, 0x00, 0xE2, + 0x18, 0x01, 0xA2, 0x2B, 0x13, 0xC8, 0x8C, 0x16, 0x08, 0x08, 0x00, 0x00, 0xF1, 0x18, 0x13, 0xC6, + 0x07, 0x02, 0x13, 0xC2, 0xAF, 0x05, 0x12, 0xB9, 0x55, 0x08, 0x01, 0x6C, 0x05, 0x91, 0x8C, 0x00, + 0x00, 0x00, 0x9A, 0xFF, 0xFF, 0xFF, 0x97, 0x19, 0x19, 0x02, 0xE5, 0x05, 0x00, 0xCE, 0x08, 0x00, + 0xEF, 0x2E, 0x10, 0x48, 0x1F, 0x02, 0x01, 0x9F, 0x0A, 0x11, 0xFF, 0x3C, 0x24, 0x00, 0x99, 0x09, + 0x00, 0xBB, 0x05, 0x60, 0x00, 0x85, 0xFF, 0xFF, 0xFF, 0xA6, 0x65, 0x02, 0x60, 0xFE, 0xFF, 0xFF, + 0xFE, 0x5C, 0x03, 0xED, 0x24, 0x02, 0xF0, 0x00, 0x22, 0x0F, 0xCA, 0x08, 0x00, 0x42, 0x00, 0x07, + 0x82, 0xEE, 0x84, 0x03, 0x80, 0x00, 0x03, 0x29, 0x1C, 0x0A, 0x08, 0x23, 0x01, 0x20, 0x01, 0x52, + 0xEA, 0xCD, 0x7E, 0x0E, 0x00, 0xDC, 0x05, 0x22, 0xE0, 0x2F, 0x08, 0x00, 0x73, 0xFF, 0xE6, 0x0F, + 0x00, 0x00, 0x5B, 0xE7, 0xFC, 0x03, 0x10, 0x44, 0x82, 0x38, 0x20, 0x04, 0x00, 0x51, 0x26, 0x01, + 0x1C, 0x04, 0x23, 0x00, 0x95, 0x19, 0x00, 0x00, 0x4C, 0x07, 0x12, 0xBA, 0xA4, 0x06, 0x23, 0xFF, + 0xE3, 0x45, 0x03, 0x30, 0xFC, 0x03, 0x00, 0x53, 0x0D, 0x01, 0xEA, 0x28, 0x01, 0x38, 0x17, 0x53, + 0x26, 0x00, 0x00, 0x03, 0xFF, 0x47, 0x09, 0x22, 0xFD, 0xFF, 0xAC, 0x16, 0x11, 0xF9, 0x45, 0x0A, + 0x33, 0x00, 0x00, 0xF7, 0xFD, 0x07, 0x00, 0x54, 0x03, 0x13, 0x47, 0x08, 0x00, 0x12, 0x48, 0x0D, + 0x06, 0x23, 0xFF, 0x46, 0x28, 0x00, 0x00, 0x71, 0x00, 0x21, 0xFC, 0xFF, 0xF3, 0x0C, 0x22, 0x02, + 0xFF, 0x4B, 0x06, 0x01, 0x58, 0x00, 0x20, 0x2A, 0x00, 0x5F, 0x24, 0x00, 0x88, 0x28, 0x01, 0x7B, + 0x02, 0x22, 0xFF, 0x06, 0xB4, 0x0E, 0x13, 0xE9, 0xB5, 0x04, 0x12, 0xC5, 0xEE, 0x2B, 0x22, 0xFF, + 0x95, 0xDB, 0x09, 0x22, 0xFF, 0x54, 0x27, 0x00, 0x40, 0xF6, 0x0C, 0x00, 0x1B, 0x81, 0x01, 0x12, + 0xA2, 0xE8, 0x00, 0x00, 0x84, 0x13, 0x13, 0xF4, 0xD2, 0x08, 0x31, 0xF4, 0xFF, 0xC1, 0x92, 0x07, + 0x13, 0x37, 0xBD, 0x4F, 0x44, 0x0E, 0x0C, 0x0C, 0x01, 0xE8, 0x4F, 0x44, 0x67, 0xFC, 0xFC, 0xD9, + 0x7F, 0x03, 0x14, 0x50, 0xA4, 0x06, 0x40, 0x49, 0x16, 0x00, 0x37, 0x13, 0x02, 0xF0, 0x00, 0x01, + 0x53, 0x0A, 0x02, 0xE3, 0xF2, 0x79, 0x27, 0xFF, 0xFF, 0x91, 0x37, 0xC4, 0xFF, 0x59, 0x8F, 0x06, + 0x40, 0xE7, 0xFF, 0xFF, 0xE6, 0x8C, 0x03, 0x23, 0x30, 0xAC, 0x56, 0x35, 0x70, 0xFF, 0xE0, 0x78, + 0x00, 0x00, 0x18, 0x78, 0xDC, 0x03, 0x21, 0xC0, 0x47, 0xCB, 0x04, 0x10, 0x5C, 0x16, 0x00, 0x11, + 0xC9, 0x6D, 0x0D, 0x52, 0x1D, 0xF0, 0xFF, 0xEE, 0x98, 0x3D, 0x02, 0xF0, 0x06, 0x02, 0xBC, 0xFF, + 0xFF, 0x82, 0x1A, 0xF9, 0xFF, 0xFC, 0x39, 0x00, 0x00, 0x19, 0xD4, 0xFF, 0xF6, 0x15, 0x00, 0x9B, + 0xFF, 0xFA, 0x38, 0x19, 0xF7, 0x00, 0x05, 0x76, 0x88, 0x00, 0x00, 0x26, 0xBA, 0x28, 0x00, 0x00, + 0x0E, 0x0E, 0x0F, 0x00, 0x06, 0x8D, 0x0C, 0x16, 0xB2, 0x1A, 0x04, 0x13, 0x78, 0x73, 0x0A, 0x0F, + 0x0E, 0x00, 0x18, 0x32, 0x24, 0xFC, 0xFC, 0x5E, 0x0B, 0x00, 0x08, 0x00, 0x28, 0x7E, 0x24, 0x50, + 0x0B, 0x1A, 0x80, 0x0E, 0x00, 0x10, 0x0A, 0x66, 0x3C, 0x40, 0x9D, 0xFF, 0xFF, 0xC9, 0x08, 0x00, + 0x1E, 0x22, 0x70, 0x00, 0x0F, 0x0E, 0x00, 0x26, 0x14, 0x02, 0x26, 0x2F, 0x71, 0x00, 0x00, 0x07, + 0x05, 0x0A, 0x01, 0xFB, 0x50, 0x11, 0x30, 0xFC, 0xFC, 0xBA, 0x39, 0x08, 0x1A, 0xBC, 0x05, 0x00, + 0x10, 0xBB, 0x2B, 0x27, 0xF2, 0x03, 0xA8, 0x00, 0x01, 0xB7, 0xFF, 0x76, 0x14, 0x9A, 0xFF, 0xF5, + 0x1A, 0x54, 0xFF, 0xF7, 0x52, 0x00, 0x11, 0x87, 0x5E, 0x29, 0x21, 0x09, 0x05, 0xE0, 0x30, 0x22, + 0x09, 0x3C, 0x01, 0x00, 0x14, 0x31, 0xBF, 0x00, 0x1E, 0xD0, 0x09, 0x00, 0x23, 0x01, 0x04, 0x01, + 0x00, 0x01, 0x74, 0x00, 0x11, 0x05, 0xBF, 0x05, 0x00, 0xB3, 0x0D, 0x10, 0xE1, 0xAE, 0x0D, 0x1B, + 0xE4, 0x05, 0x00, 0x00, 0xE5, 0x28, 0x28, 0x0B, 0x1C, 0xE5, 0x09, 0x46, 0x65, 0xFC, 0xFC, 0xBB, + 0x1A, 0x09, 0x13, 0x79, 0x52, 0x20, 0x12, 0xEE, 0x06, 0x09, 0x20, 0x00, 0x00, 0xA1, 0x0E, 0x13, + 0xED, 0xD3, 0x00, 0x12, 0x7B, 0x35, 0x04, 0x03, 0x7D, 0x1C, 0x03, 0xCB, 0x0A, 0x21, 0x0C, 0xFA, + 0x6F, 0x10, 0x02, 0xB9, 0x2D, 0x05, 0x74, 0x3A, 0x12, 0x90, 0xAE, 0x02, 0x12, 0x00, 0x0A, 0x11, + 0x03, 0xBD, 0x3B, 0x43, 0x1B, 0xFF, 0xFF, 0xFC, 0x6D, 0x0A, 0x12, 0x5F, 0xD6, 0x02, 0x03, 0xC3, + 0x07, 0x16, 0x80, 0xB0, 0x07, 0x15, 0x3B, 0x9D, 0x07, 0x25, 0xF2, 0x05, 0x23, 0x06, 0x16, 0xB1, + 0x77, 0x07, 0x16, 0x6B, 0x64, 0x07, 0x12, 0x26, 0x0B, 0x00, 0x43, 0x44, 0xFF, 0xFF, 0xE1, 0xD1, + 0x00, 0x16, 0x89, 0x1D, 0x08, 0x11, 0xCE, 0x73, 0x0D, 0x01, 0x6F, 0x0C, 0x01, 0x5F, 0x08, 0x03, + 0xFE, 0x2D, 0x23, 0xFF, 0xCC, 0x20, 0x00, 0x15, 0x9E, 0x0C, 0x08, 0x20, 0x01, 0xE3, 0xC7, 0x0E, + 0x12, 0x00, 0x27, 0x31, 0x23, 0xFF, 0xF6, 0xB3, 0x4D, 0x43, 0x6D, 0xFF, 0xFF, 0xB8, 0x2B, 0x00, + 0x11, 0xB2, 0x4E, 0x0B, 0x01, 0x0B, 0x00, 0x07, 0xAC, 0x0E, 0x82, 0x10, 0x73, 0xC2, 0xED, 0xFA, + 0xE8, 0xBA, 0x61, 0x30, 0x00, 0x23, 0x33, 0xE1, 0x8F, 0x01, 0x20, 0xCD, 0x1E, 0x2F, 0x17, 0x15, + 0xEB, 0x6B, 0x02, 0x57, 0xD4, 0x08, 0x00, 0x00, 0x96, 0x7B, 0x02, 0x30, 0x6E, 0x00, 0x09, 0x1A, + 0x04, 0x40, 0xEB, 0x41, 0x0A, 0x54, 0x41, 0x03, 0x11, 0xD7, 0x71, 0x04, 0x01, 0x2D, 0x0E, 0x10, + 0x9B, 0x09, 0x00, 0x33, 0x1D, 0x69, 0xFF, 0x9F, 0x0A, 0x01, 0x54, 0x03, 0x11, 0x43, 0xFD, 0x3C, + 0x11, 0x1F, 0x4E, 0x2D, 0x00, 0x20, 0x0D, 0x23, 0x84, 0xFF, 0xD4, 0x07, 0x10, 0x41, 0x09, 0x00, + 0x15, 0x60, 0x0F, 0x00, 0x1F, 0x40, 0x0F, 0x00, 0x88, 0x22, 0x81, 0xFF, 0x61, 0x09, 0x02, 0xC3, + 0x00, 0x33, 0x5D, 0x6A, 0xFF, 0x3B, 0x0A, 0x00, 0x5B, 0x0E, 0x21, 0xFF, 0x44, 0xFF, 0x00, 0x10, + 0x7F, 0x44, 0x1D, 0x01, 0xFF, 0x00, 0x10, 0x08, 0xCA, 0x04, 0x52, 0xEF, 0x3D, 0x04, 0x54, 0xFC, + 0x55, 0x07, 0x17, 0x91, 0x3B, 0x01, 0x46, 0x6A, 0x00, 0x00, 0x15, 0x9F, 0x3F, 0x10, 0xCE, 0x38, + 0x04, 0x23, 0x2D, 0xDC, 0x0E, 0x00, 0x21, 0xC8, 0x1A, 0x87, 0x01, 0x80, 0x0D, 0x6F, 0xC3, 0xF0, + 0xFD, 0xEA, 0xBB, 0x60, 0x3B, 0x02, 0x36, 0x11, 0x0A, 0x1C, 0x6D, 0x0C, 0x40, 0x3D, 0xF4, 0xFC, + 0xFC, 0xDF, 0x05, 0x20, 0x02, 0x69, 0xEF, 0x22, 0x51, 0xBC, 0x00, 0x01, 0x4B, 0xCA, 0x38, 0x00, + 0x33, 0xBC, 0x16, 0xD4, 0x42, 0x00, 0x38, 0xBC, 0x24, 0xFF, 0x0A, 0x00, 0x10, 0xF2, 0xB0, 0x05, + 0x71, 0xBC, 0x22, 0xC7, 0x81, 0x3B, 0x05, 0xD8, 0x32, 0x00, 0x00, 0x01, 0x00, 0x0F, 0x0A, 0x00, + 0xBA, 0x07, 0xCC, 0x02, 0x82, 0x06, 0x65, 0xB6, 0xE6, 0xFA, 0xEF, 0xC8, 0x7F, 0x9B, 0x38, 0x23, + 0x19, 0xC9, 0x09, 0x01, 0x10, 0xEE, 0x72, 0x1A, 0x16, 0x04, 0x99, 0x10, 0x57, 0xF8, 0x2C, 0x00, + 0x00, 0x59, 0x91, 0x01, 0x12, 0xB4, 0x68, 0x08, 0x50, 0xFE, 0x66, 0x0C, 0x38, 0xE3, 0xC1, 0x07, + 0x33, 0x15, 0x0C, 0xFD, 0x91, 0x0F, 0x01, 0xF1, 0x1F, 0x10, 0x4B, 0xB1, 0x11, 0x10, 0xFF, 0x1A, + 0x41, 0x00, 0x58, 0x0A, 0x42, 0xFF, 0x6C, 0x4B, 0xFF, 0xFB, 0x06, 0x00, 0xF1, 0x0B, 0x44, 0xFF, + 0xFF, 0x76, 0x54, 0x4A, 0x07, 0x11, 0x2C, 0xDD, 0x01, 0x61, 0x3D, 0xB8, 0xB8, 0xB8, 0xB8, 0x23, + 0x70, 0x20, 0x03, 0x3A, 0x07, 0x02, 0xBA, 0x01, 0x10, 0xC1, 0xD0, 0x05, 0x05, 0x44, 0x56, 0x36, + 0x39, 0xFF, 0xFF, 0x99, 0x03, 0x21, 0x00, 0x02, 0x43, 0x0E, 0x14, 0x43, 0x0F, 0x00, 0x14, 0x68, + 0x4D, 0x0A, 0x01, 0x01, 0x00, 0x65, 0x16, 0xEF, 0xFF, 0xFF, 0xFF, 0xFA, 0xB0, 0x51, 0x01, 0x16, + 0x0F, 0x19, 0x84, 0xFE, 0x0F, 0x14, 0xDD, 0x13, 0x4F, 0x11, 0x04, 0x68, 0x3A, 0x15, 0x47, 0xE9, + 0x4A, 0x24, 0xFF, 0xFF, 0xDB, 0x21, 0x00, 0x9C, 0x08, 0x10, 0xF2, 0x7D, 0x0D, 0x05, 0xCE, 0x55, + 0x13, 0xA6, 0x8B, 0x02, 0x05, 0xCE, 0x0B, 0x34, 0xFF, 0xFF, 0xC9, 0xF3, 0x05, 0x10, 0x06, 0xBF, + 0x08, 0x25, 0xFC, 0x30, 0xD1, 0x06, 0x02, 0x70, 0x0A, 0x03, 0x0E, 0x00, 0x10, 0x1E, 0xF8, 0x03, + 0x22, 0xF5, 0x48, 0xD1, 0x05, 0x38, 0x2F, 0x00, 0x7D, 0x91, 0x06, 0x3F, 0xC8, 0x00, 0x80, 0x0F, + 0x00, 0x0A, 0x07, 0xAC, 0x01, 0x82, 0x25, 0x8B, 0xCE, 0xF2, 0xFA, 0xE7, 0xBB, 0x69, 0xBC, 0x00, + 0x14, 0x6F, 0xDB, 0x3F, 0x10, 0xDD, 0xEF, 0x08, 0x16, 0x5B, 0x34, 0x00, 0x40, 0xEA, 0x15, 0x00, + 0x08, 0x86, 0x04, 0x51, 0xED, 0x6B, 0x4B, 0x92, 0xFF, 0x3C, 0x08, 0x01, 0xD8, 0x0D, 0x22, 0x5A, + 0x00, 0x7F, 0x18, 0x20, 0xEF, 0x05, 0x8B, 0x09, 0x23, 0xFF, 0x11, 0x7A, 0x0E, 0x20, 0xFF, 0x28, + 0x65, 0x13, 0x10, 0xF3, 0x52, 0x00, 0x11, 0x47, 0xC6, 0x10, 0x13, 0xA8, 0x7F, 0x08, 0x01, 0x10, + 0x12, 0x74, 0xFF, 0x48, 0x28, 0x3C, 0x3C, 0x3C, 0x37, 0x09, 0x2E, 0x29, 0xFF, 0x2D, 0xF2, 0x0E, + 0x13, 0xEC, 0xFE, 0x00, 0x31, 0x01, 0x17, 0x7A, 0xA7, 0x0C, 0x03, 0x1F, 0x05, 0x02, 0x1A, 0x0D, + 0x13, 0xC3, 0x00, 0x11, 0x11, 0x10, 0x40, 0x02, 0x37, 0x82, 0x08, 0x00, 0x0F, 0x00, 0x39, 0xFF, + 0xC3, 0x1C, 0x0F, 0x00, 0x23, 0xFF, 0xDB, 0x1D, 0x06, 0x31, 0x01, 0x05, 0x22, 0xEF, 0x09, 0x16, + 0x85, 0x57, 0x07, 0x00, 0xE2, 0x10, 0x16, 0xE4, 0xB7, 0x06, 0x14, 0x7B, 0x17, 0x05, 0x24, 0x00, + 0x00, 0x0B, 0x14, 0x83, 0xFF, 0x3E, 0x93, 0xE0, 0xE0, 0xE0, 0xCC, 0x00, 0xC4, 0x09, 0x20, 0xFF, + 0x4A, 0xA9, 0x01, 0x15, 0xF1, 0xC3, 0x00, 0x24, 0x43, 0x92, 0xF0, 0x00, 0x01, 0x40, 0x0D, 0x24, + 0x28, 0x70, 0xF2, 0x01, 0x00, 0x62, 0x04, 0x21, 0xF9, 0x08, 0xAB, 0x02, 0x52, 0xCD, 0x25, 0x04, + 0x4B, 0xF4, 0x1F, 0x04, 0x17, 0xD0, 0x7F, 0x01, 0x13, 0x55, 0x43, 0x00, 0x03, 0x8D, 0x01, 0x00, + 0xEF, 0x00, 0x23, 0x65, 0xF8, 0x0E, 0x00, 0x12, 0xC9, 0x18, 0x02, 0x80, 0x25, 0x8D, 0xCF, 0xF5, + 0xFD, 0xE9, 0xBA, 0x60, 0x0D, 0x06, 0x28, 0x11, 0x10, 0x60, 0x07, 0x11, 0x3F, 0x56, 0x23, 0x15, + 0x57, 0x10, 0x00, 0x00, 0x59, 0x01, 0x04, 0x73, 0x2C, 0x00, 0x3F, 0x11, 0x1A, 0xFA, 0x10, 0x00, + 0x29, 0x7A, 0xFF, 0x10, 0x00, 0x2A, 0x03, 0xE1, 0x10, 0x00, 0x57, 0x4C, 0xFF, 0xFF, 0xF2, 0xFB, + 0x10, 0x00, 0x56, 0xB5, 0xFF, 0xFF, 0xA4, 0xF8, 0x10, 0x00, 0x57, 0x20, 0xFE, 0xFF, 0xFF, 0x4F, + 0x10, 0x00, 0x56, 0x86, 0xFF, 0xFF, 0xF2, 0x08, 0x10, 0x00, 0x20, 0x06, 0xE9, 0x71, 0x0C, 0x06, + 0x10, 0x00, 0x11, 0x58, 0xDE, 0x25, 0x06, 0x10, 0x00, 0x10, 0xC1, 0x2F, 0x00, 0x06, 0x10, 0x00, + 0x12, 0x2A, 0xAD, 0x0B, 0x05, 0x10, 0x00, 0x12, 0x92, 0x0D, 0x26, 0x04, 0x10, 0x00, 0x21, 0x0B, + 0xF1, 0x2F, 0x00, 0x05, 0x10, 0x00, 0x13, 0x64, 0xDC, 0x0B, 0x04, 0x10, 0x00, 0x00, 0x1B, 0x04, + 0x17, 0x50, 0x10, 0x00, 0x00, 0x69, 0x05, 0x22, 0xFD, 0xFC, 0x6D, 0x15, 0x69, 0xFE, 0xFC, 0xFC, + 0x1C, 0xD4, 0xFF, 0x01, 0x00, 0x0F, 0x10, 0x00, 0x0E, 0x04, 0xE7, 0x08, 0x00, 0xF2, 0x02, 0x35, + 0x5B, 0x04, 0x04, 0x64, 0x01, 0x04, 0x60, 0x00, 0x0F, 0x10, 0x00, 0x3D, 0x05, 0x74, 0x03, 0x26, + 0xCB, 0xFC, 0x01, 0x00, 0x11, 0x57, 0x8D, 0x17, 0x05, 0x95, 0x00, 0x11, 0x58, 0xDF, 0x08, 0x08, + 0x0F, 0x00, 0x1A, 0xD9, 0x0F, 0x00, 0x00, 0xA0, 0x06, 0x34, 0x1F, 0x04, 0x04, 0x4C, 0x33, 0x12, + 0xDF, 0x7B, 0x23, 0x04, 0x6B, 0x00, 0x12, 0xE3, 0xEC, 0x0B, 0x04, 0x0F, 0x00, 0x47, 0xE6, 0xFF, + 0xFF, 0xFC, 0x3B, 0x02, 0x11, 0xE9, 0x47, 0x12, 0x05, 0x98, 0x00, 0xA3, 0xED, 0xFF, 0xFF, 0xE8, + 0x00, 0x03, 0x27, 0x3A, 0x21, 0x01, 0x92, 0x36, 0x40, 0xFF, 0xDE, 0x6E, 0xE8, 0xA0, 0x0B, 0x10, + 0x73, 0xE7, 0x06, 0x16, 0xF3, 0x77, 0x00, 0x22, 0x9B, 0x01, 0x8E, 0x0C, 0x04, 0x87, 0x00, 0x10, + 0x47, 0x5A, 0x56, 0x70, 0xFF, 0xFF, 0xEA, 0x49, 0x0A, 0x49, 0xF0, 0x2B, 0x10, 0x02, 0xBC, 0x0C, + 0x21, 0x57, 0x00, 0x9E, 0x17, 0x94, 0xFF, 0xF9, 0x08, 0x00, 0x80, 0x80, 0x80, 0x7F, 0x03, 0x15, + 0x05, 0x16, 0x30, 0x29, 0x47, 0x01, 0xC5, 0x05, 0x05, 0x0F, 0x00, 0x16, 0x14, 0x73, 0x10, 0x01, + 0x0B, 0x09, 0x01, 0x0F, 0x00, 0x50, 0x0A, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x10, 0x13, 0x0F, + 0x00, 0x11, 0x56, 0xD4, 0x07, 0x23, 0x1B, 0x00, 0x0D, 0x20, 0x11, 0x44, 0xE3, 0x05, 0x13, 0x27, + 0xC0, 0x12, 0x30, 0xFF, 0x2B, 0x3A, 0x06, 0x00, 0x13, 0x49, 0x0A, 0x08, 0x43, 0xF4, 0x04, 0x0D, + 0xFC, 0xD4, 0x0C, 0x12, 0x94, 0x40, 0x11, 0x10, 0xB1, 0x21, 0x02, 0x42, 0x7F, 0x43, 0x7D, 0xFB, + 0xBC, 0x0E, 0x25, 0x39, 0xFE, 0xC2, 0x00, 0x10, 0xCB, 0xE2, 0x00, 0x14, 0x67, 0x7F, 0x0C, 0x22, + 0xD0, 0x1D, 0x9D, 0x32, 0x8A, 0x9C, 0xD1, 0xF5, 0xFE, 0xEB, 0xBE, 0x6A, 0x06, 0x98, 0x09, 0x82, + 0x01, 0x55, 0xB2, 0xE4, 0xFA, 0xF2, 0xD0, 0x8F, 0xB8, 0x52, 0x23, 0x0C, 0xB4, 0x35, 0x00, 0x34, + 0xFB, 0x6C, 0x00, 0x65, 0x08, 0x02, 0x16, 0x01, 0x13, 0x4A, 0x4D, 0x06, 0x41, 0xB1, 0x4D, 0x69, + 0xEC, 0x3F, 0x15, 0x00, 0x13, 0x0A, 0x32, 0xFF, 0xDE, 0x06, 0x25, 0x0F, 0x30, 0xFF, 0x22, 0x01, + 0x5C, 0x43, 0x13, 0x94, 0x07, 0x03, 0x01, 0x2A, 0x1F, 0x02, 0x07, 0x47, 0x10, 0x0D, 0x09, 0x00, + 0x11, 0x65, 0x3B, 0x00, 0x11, 0x53, 0x5C, 0x33, 0x59, 0x0C, 0x0C, 0x0C, 0x05, 0x4B, 0x40, 0x06, + 0x21, 0x00, 0x53, 0xFE, 0x00, 0x05, 0x0F, 0x00, 0x12, 0x54, 0x0F, 0x00, 0x45, 0x10, 0x37, 0x32, + 0x09, 0x0F, 0x00, 0x10, 0x57, 0x03, 0x0C, 0x33, 0xFB, 0xA4, 0x16, 0x0F, 0x00, 0x12, 0xF0, 0x95, + 0x00, 0x48, 0xDE, 0x12, 0x00, 0x54, 0xF5, 0x02, 0x12, 0x9A, 0x0F, 0x00, 0x50, 0xF8, 0x60, 0x0D, + 0x34, 0xDE, 0x08, 0x00, 0x11, 0x0F, 0x0F, 0x00, 0x12, 0x72, 0x5A, 0x27, 0x44, 0xFF, 0xFF, 0x4A, + 0x54, 0x69, 0x00, 0x01, 0x9F, 0x00, 0x15, 0x75, 0x0F, 0x00, 0x11, 0x05, 0xAB, 0x16, 0x05, 0x0F, + 0x00, 0x01, 0x75, 0x0E, 0x25, 0x9A, 0x51, 0x0F, 0x00, 0x00, 0x43, 0x03, 0x24, 0x96, 0x40, 0xB4, + 0x00, 0x10, 0x01, 0x69, 0x01, 0x24, 0x80, 0x23, 0x1F, 0x06, 0x11, 0x0F, 0xA8, 0x16, 0x23, 0x02, + 0xEC, 0x81, 0x05, 0x12, 0x36, 0x7A, 0x17, 0x10, 0x9F, 0xAD, 0x0A, 0x12, 0x03, 0x12, 0x2A, 0x41, + 0xE3, 0x03, 0x00, 0x35, 0x2A, 0x11, 0x33, 0x45, 0x71, 0xF9, 0xBE, 0x09, 0x16, 0x95, 0x0F, 0x11, + 0x00, 0xC5, 0x05, 0x24, 0x07, 0xA7, 0x2B, 0x0E, 0x03, 0xA5, 0x0B, 0x70, 0x4D, 0xB4, 0xE6, 0xFD, + 0xF2, 0xC2, 0x7B, 0x9D, 0x0F, 0x22, 0x11, 0x0C, 0xAC, 0x01, 0x16, 0xAE, 0x56, 0x03, 0x26, 0xD9, + 0xB0, 0xF3, 0x00, 0x17, 0xDC, 0x0C, 0x00, 0x22, 0xD6, 0x2F, 0x10, 0x4A, 0x14, 0xCC, 0xD6, 0x19, + 0x43, 0x00, 0x00, 0x01, 0xE8, 0x01, 0x01, 0x02, 0xF0, 0x28, 0x04, 0x24, 0x39, 0x01, 0x73, 0x01, + 0x25, 0xFD, 0x0C, 0x07, 0x0C, 0x23, 0xFF, 0xD4, 0x7C, 0x01, 0x23, 0xBE, 0xFF, 0xEC, 0x3F, 0x46, + 0x00, 0x00, 0x03, 0xF2, 0xBA, 0x07, 0x13, 0x2A, 0x7F, 0x0F, 0x03, 0x62, 0x14, 0x23, 0xFF, 0xFA, + 0xF7, 0x0B, 0x00, 0xAB, 0x0B, 0x13, 0xCB, 0x3B, 0x00, 0x16, 0xCC, 0xFD, 0x12, 0x10, 0x08, 0x7C, + 0x02, 0x12, 0x62, 0x0C, 0x00, 0x17, 0x37, 0x03, 0x07, 0x00, 0x66, 0x12, 0x13, 0xF5, 0xE7, 0x18, + 0x26, 0xA3, 0xFF, 0xF1, 0x15, 0x00, 0x06, 0x04, 0x17, 0x8E, 0x28, 0x03, 0x12, 0x59, 0x0C, 0x00, + 0x26, 0x45, 0xFF, 0x47, 0x14, 0x00, 0xC3, 0x06, 0x26, 0xEF, 0x01, 0x57, 0x16, 0x03, 0x85, 0x0D, + 0x24, 0x01, 0xE7, 0xF3, 0x17, 0x03, 0xD5, 0x01, 0x00, 0x4D, 0x1E, 0x03, 0xB3, 0x13, 0x13, 0xFF, + 0x30, 0x07, 0x10, 0x88, 0xF6, 0x03, 0x16, 0x01, 0xE0, 0x00, 0x1C, 0xB2, 0x9C, 0x0C, 0x82, 0x1D, + 0x86, 0xCD, 0xF2, 0xFA, 0xE3, 0xB1, 0x53, 0x10, 0x00, 0x23, 0x51, 0xF2, 0x4F, 0x01, 0x10, 0xB3, + 0x62, 0x11, 0x16, 0x2B, 0x0D, 0x48, 0x13, 0x9B, 0x0D, 0x08, 0x30, 0xF7, 0x71, 0x4E, 0x79, 0x44, + 0x20, 0xFE, 0x28, 0x2D, 0x33, 0x01, 0xF1, 0x11, 0x21, 0x10, 0xF5, 0xD1, 0x11, 0x14, 0x33, 0x26, + 0x01, 0x11, 0xBE, 0x30, 0x12, 0x01, 0x9C, 0x19, 0x13, 0x17, 0x4C, 0x09, 0x43, 0xC4, 0x00, 0x49, + 0xFF, 0x3F, 0x14, 0x00, 0x56, 0x03, 0x12, 0xC2, 0xE4, 0x03, 0x21, 0x3F, 0x00, 0xA1, 0x1B, 0x52, + 0xFF, 0x9F, 0x00, 0x01, 0xEB, 0x34, 0x12, 0x10, 0x0C, 0x52, 0x07, 0x30, 0x67, 0x00, 0x00, 0x07, + 0x0C, 0x30, 0xEB, 0x33, 0x09, 0x29, 0x02, 0x65, 0xF1, 0x0F, 0x00, 0x00, 0x0E, 0xD6, 0x87, 0x00, + 0x01, 0x3C, 0x4B, 0x14, 0x22, 0x41, 0x0D, 0x02, 0xA3, 0x09, 0x24, 0x6A, 0xFC, 0x61, 0x07, 0x14, + 0x16, 0x50, 0x03, 0x03, 0x7F, 0x07, 0x40, 0x04, 0x00, 0x04, 0xE2, 0x2B, 0x16, 0x21, 0x31, 0x0E, + 0x42, 0x09, 0x13, 0x60, 0xB1, 0x08, 0x03, 0x50, 0x18, 0x11, 0xC5, 0x58, 0x09, 0x21, 0xF8, 0x03, + 0xAB, 0x39, 0x40, 0xFF, 0xFF, 0xF8, 0x05, 0x89, 0x02, 0x15, 0xCF, 0x94, 0x03, 0x24, 0x29, 0xB3, + 0x04, 0x0B, 0x01, 0xFE, 0x02, 0x24, 0x36, 0xAC, 0x79, 0x01, 0x01, 0x0F, 0x00, 0x24, 0x31, 0x93, + 0xFE, 0x01, 0x01, 0x1B, 0x14, 0x10, 0x18, 0x41, 0x19, 0x23, 0xF2, 0x04, 0xC9, 0x09, 0x42, 0xF4, + 0x02, 0x2D, 0xFF, 0xD2, 0x06, 0x21, 0x03, 0xCD, 0xFC, 0x0A, 0x10, 0x01, 0x42, 0x0C, 0x52, 0xED, + 0x66, 0x46, 0xA9, 0xFF, 0x68, 0x1B, 0x25, 0x3D, 0xFC, 0xA5, 0x00, 0x10, 0xC0, 0xB0, 0x04, 0x23, + 0x5A, 0xF6, 0x0E, 0x00, 0x12, 0xC4, 0x5E, 0x38, 0x9A, 0x21, 0x8B, 0xCE, 0xF5, 0xFD, 0xE6, 0xB6, + 0x5B, 0x04, 0xAC, 0x01, 0x82, 0x0C, 0x74, 0xBE, 0xEE, 0xF9, 0xE1, 0xAA, 0x4A, 0x10, 0x00, 0x14, + 0x25, 0xD1, 0x0C, 0x10, 0xA1, 0xD7, 0x04, 0x29, 0x10, 0xE2, 0xAC, 0x01, 0x11, 0x83, 0x21, 0x05, + 0x22, 0x4D, 0xB0, 0x39, 0x0B, 0x22, 0x05, 0xE9, 0x3F, 0x05, 0x10, 0x04, 0x23, 0x15, 0x11, 0xA0, + 0x74, 0x1C, 0x01, 0xC8, 0x0E, 0x10, 0x8D, 0xBA, 0x0B, 0x10, 0x02, 0x62, 0x13, 0x24, 0xFF, 0x1A, + 0x4F, 0x0B, 0x11, 0x22, 0xEE, 0x09, 0x11, 0x09, 0x7E, 0x3F, 0x00, 0x7F, 0x0D, 0x11, 0x99, 0x89, + 0x43, 0x03, 0x50, 0x17, 0x2A, 0xFF, 0x52, 0x0F, 0x00, 0x10, 0x54, 0xF4, 0x16, 0x25, 0xFF, 0x0F, + 0x0F, 0x00, 0x00, 0x6D, 0x19, 0x25, 0xFF, 0x2E, 0x0F, 0x00, 0x14, 0x42, 0xB1, 0x0E, 0x11, 0x8C, + 0x0F, 0x00, 0x20, 0x07, 0xEE, 0x1D, 0x01, 0x22, 0x6C, 0x44, 0xAA, 0x0D, 0x1A, 0x54, 0xD8, 0x0A, + 0x42, 0x54, 0x00, 0x07, 0xBF, 0x0A, 0x00, 0x12, 0xDF, 0x0F, 0x00, 0x93, 0x00, 0x05, 0x71, 0xCF, + 0xF9, 0xFE, 0xDB, 0x7D, 0x51, 0x0F, 0x00, 0x03, 0x5F, 0x18, 0x16, 0x4C, 0x0F, 0x00, 0x03, 0x6B, + 0x18, 0x03, 0xBB, 0x1C, 0x06, 0xDF, 0x09, 0x74, 0x4B, 0x0D, 0x20, 0x20, 0x20, 0x20, 0x02, 0x1A, + 0x0F, 0x33, 0x37, 0x65, 0xFF, 0x17, 0x1E, 0x11, 0x78, 0xEA, 0x00, 0x01, 0x42, 0x00, 0x13, 0x2C, + 0x6B, 0x14, 0x33, 0xE5, 0x01, 0x20, 0x6D, 0x1B, 0x10, 0x06, 0x57, 0x02, 0x11, 0x9E, 0x3F, 0x1A, + 0x53, 0xFF, 0xEB, 0x64, 0x45, 0xAB, 0x32, 0x1B, 0x16, 0x48, 0xA3, 0x00, 0x11, 0xA6, 0x79, 0x40, + 0x04, 0x5C, 0x06, 0x12, 0xBA, 0x14, 0x27, 0x80, 0x2A, 0x92, 0xD3, 0xF5, 0xFE, 0xE7, 0xB7, 0x5B, + 0x6F, 0x00, 0x53, 0x08, 0x05, 0x11, 0x02, 0x02, 0x74, 0x32, 0x10, 0x5F, 0x1D, 0x08, 0x1B, 0x60, + 0x05, 0x00, 0x03, 0xDC, 0x07, 0x0F, 0x01, 0x00, 0x09, 0x0E, 0x3C, 0x00, 0x06, 0x37, 0x00, 0x52, + 0x08, 0x05, 0x17, 0x02, 0xFD, 0x6C, 0x1F, 0x11, 0xFC, 0xC1, 0x0B, 0x1B, 0x5C, 0x05, 0x00, 0x0E, + 0x60, 0x00, 0x0F, 0x01, 0x00, 0x08, 0x50, 0xF9, 0xFC, 0xFC, 0xFC, 0x73, 0x8A, 0x02, 0x1A, 0x74, + 0x05, 0x00, 0xF0, 0x03, 0x70, 0x04, 0x04, 0xBB, 0xFF, 0x52, 0x06, 0x5F, 0xFC, 0xF5, 0x12, 0xA4, + 0xFF, 0xFC, 0x61, 0x00, 0x33, 0x6D, 0x88, 0x04, 0x58, 0x0D, 0x0A, 0x13, 0x01, 0x02, 0x3F, 0x00, + 0x05, 0xCD, 0x63, 0x22, 0x5B, 0xC6, 0x08, 0x00, 0x23, 0x0D, 0xA2, 0x4B, 0x05, 0x22, 0x35, 0xDC, + 0x55, 0x05, 0x32, 0x02, 0x77, 0xFB, 0x5F, 0x05, 0x11, 0x1A, 0xA3, 0x1C, 0x41, 0xEB, 0x4A, 0x00, + 0x4C, 0xEE, 0x10, 0x22, 0xBE, 0x1A, 0xAD, 0x0F, 0x30, 0xFC, 0x7B, 0x03, 0x29, 0x36, 0x31, 0xFF, + 0xFF, 0xE1, 0xCB, 0x11, 0x00, 0xAF, 0x0D, 0x23, 0x11, 0x00, 0x0A, 0x00, 0x24, 0xEB, 0x4A, 0x0A, + 0x00, 0x30, 0xFF, 0xFF, 0x8C, 0xE1, 0x02, 0x21, 0x4A, 0xEA, 0xE4, 0x03, 0x00, 0x1E, 0x10, 0x11, + 0x18, 0x95, 0x1A, 0x10, 0xF0, 0x05, 0x02, 0x21, 0x02, 0x71, 0x16, 0x0B, 0x11, 0x8A, 0xE6, 0x07, + 0x15, 0xD8, 0xCD, 0x05, 0x26, 0x0B, 0x9A, 0xD7, 0x05, 0x35, 0x54, 0xEF, 0xD4, 0x49, 0x40, 0x10, + 0x95, 0xE0, 0x14, 0x11, 0x0B, 0x30, 0x13, 0x25, 0x05, 0x3C, 0x01, 0x00, 0x26, 0x0F, 0x14, 0xE4, + 0x01, 0x1F, 0x40, 0x0C, 0x00, 0x05, 0x05, 0x3C, 0x13, 0x07, 0x50, 0x0A, 0x1F, 0x00, 0x48, 0x00, + 0x2C, 0x22, 0x0D, 0x0B, 0x54, 0x01, 0x16, 0x0A, 0xB1, 0x5F, 0x16, 0x24, 0x37, 0x60, 0x54, 0x24, + 0xFF, 0xF7, 0x69, 0x01, 0x0B, 0x00, 0x45, 0xFF, 0xFF, 0xB0, 0x14, 0x0B, 0x00, 0x21, 0xFF, 0xE5, + 0x86, 0x12, 0x21, 0x04, 0x84, 0x20, 0x20, 0x11, 0x87, 0xFE, 0x12, 0x10, 0x42, 0x7A, 0x15, 0x21, + 0xFF, 0xCA, 0x31, 0x19, 0x21, 0x15, 0xB6, 0x8D, 0x18, 0x11, 0x56, 0x10, 0x0D, 0x26, 0x72, 0xFA, + 0x08, 0x0F, 0x24, 0x34, 0xE6, 0x0B, 0x00, 0x01, 0x3C, 0x00, 0x01, 0x0B, 0x00, 0x24, 0x1D, 0xC4, + 0x95, 0x1A, 0x21, 0x4E, 0xED, 0x37, 0x05, 0x31, 0x22, 0x00, 0x07, 0x1C, 0x44, 0x50, 0xFE, 0x83, + 0x05, 0x00, 0x0F, 0xDA, 0x06, 0x34, 0xFF, 0xE3, 0x3E, 0x79, 0x00, 0x23, 0xAB, 0x11, 0x84, 0x00, + 0x33, 0xF5, 0x62, 0x01, 0x8F, 0x00, 0x14, 0xCD, 0xAE, 0x5E, 0x28, 0x23, 0x8A, 0x0D, 0x52, 0x24, + 0x10, 0x0E, 0xB8, 0x04, 0x81, 0x01, 0x48, 0xAA, 0xDE, 0xF9, 0xF5, 0xD5, 0x9C, 0xA7, 0x1C, 0x25, + 0x06, 0xA3, 0xA7, 0x04, 0x12, 0x05, 0x33, 0x1B, 0x03, 0x19, 0x01, 0x47, 0x94, 0x00, 0x19, 0xFA, + 0x0F, 0x04, 0x11, 0x2E, 0xB6, 0x08, 0x31, 0x8D, 0x14, 0x21, 0x30, 0x00, 0x32, 0x8B, 0x7D, 0xFF, + 0x0C, 0x1B, 0x01, 0xE6, 0x0C, 0x10, 0xBE, 0x94, 0x18, 0x13, 0xC7, 0x9B, 0x13, 0x20, 0xFF, 0xDC, + 0x90, 0x17, 0x22, 0xDE, 0x00, 0xA0, 0x1D, 0x81, 0xFF, 0xD9, 0x39, 0xE5, 0xB2, 0x7E, 0x4B, 0x01, + 0x84, 0x40, 0x34, 0xFF, 0xFF, 0xB8, 0xAB, 0x01, 0x26, 0x0A, 0xF5, 0x2C, 0x07, 0x02, 0x34, 0x4F, + 0x24, 0xFF, 0x32, 0x56, 0x05, 0x13, 0xE3, 0xD0, 0x17, 0x01, 0x1B, 0x00, 0x00, 0x4E, 0x0E, 0x14, + 0xFB, 0x81, 0x2B, 0x01, 0xC3, 0x0E, 0x13, 0x77, 0x0D, 0x00, 0x10, 0x4A, 0xCD, 0x02, 0x13, 0xAD, + 0x03, 0x03, 0x01, 0x27, 0x36, 0x13, 0xC2, 0x06, 0x28, 0x10, 0x22, 0xB9, 0x00, 0x14, 0xC2, 0xE7, + 0x2D, 0x00, 0x20, 0x0E, 0x37, 0xEB, 0x0A, 0x00, 0x0E, 0x00, 0x2F, 0xE0, 0x00, 0x0E, 0x00, 0x03, + 0x5F, 0x1B, 0x8C, 0x8C, 0x8C, 0x7B, 0xAB, 0x03, 0x12, 0x11, 0x57, 0xB7, 0x34, 0x04, 0x0E, 0x00, + 0x17, 0x58, 0xE1, 0x07, 0x0F, 0x0E, 0x00, 0x16, 0x59, 0x1F, 0x1D, 0x21, 0x01, 0xFB, 0x55, 0x00, + 0xCB, 0x06, 0x44, 0x89, 0xBA, 0xDE, 0xF3, 0xFB, 0xF3, 0xD4, 0xAB, 0x72, 0x1E, 0x70, 0x00, 0x36, + 0x0F, 0x81, 0xEA, 0x8B, 0x01, 0x29, 0xFE, 0xA4, 0x88, 0x64, 0x2A, 0x55, 0xEB, 0x6E, 0x0D, 0x16, + 0xF5, 0xB2, 0x0E, 0x12, 0x03, 0xD0, 0x01, 0x80, 0xDF, 0x96, 0x66, 0x4C, 0x47, 0x59, 0x7E, 0xB6, + 0x17, 0x01, 0x24, 0xFE, 0x59, 0x6D, 0x0B, 0x11, 0x9C, 0xA0, 0x02, 0x14, 0x43, 0x92, 0x01, 0x62, + 0x19, 0x99, 0xFE, 0xFF, 0xFF, 0xF6, 0xFD, 0x1C, 0x20, 0x00, 0x71, 0x2A, 0x00, 0x18, 0x7C, 0x72, + 0x24, 0x51, 0x51, 0xFB, 0xFF, 0xFF, 0xCC, 0x6D, 0x01, 0x28, 0x2A, 0xFB, 0x0D, 0x21, 0x03, 0x95, + 0x69, 0x04, 0xF5, 0x05, 0x14, 0xBA, 0x3E, 0x09, 0xD2, 0x0E, 0x7C, 0xCB, 0xF7, 0xD4, 0x3E, 0xB7, + 0xFC, 0xFC, 0xBF, 0x00, 0x01, 0xC9, 0x68, 0x17, 0x00, 0x7E, 0x09, 0x10, 0xE2, 0x5A, 0x03, 0x11, + 0x2E, 0x52, 0x06, 0x21, 0xF8, 0xF9, 0xF3, 0x15, 0x52, 0x58, 0xFF, 0xFF, 0xFC, 0x11, 0x89, 0x08, + 0x00, 0x55, 0x00, 0x25, 0x25, 0xEE, 0xC9, 0x00, 0x21, 0x77, 0x00, 0xD5, 0x08, 0x11, 0x47, 0x77, + 0x15, 0x00, 0xFF, 0x27, 0x10, 0x02, 0xCC, 0x1A, 0x43, 0xF8, 0x8D, 0x4B, 0xB3, 0x5C, 0x09, 0x10, + 0xCE, 0x94, 0x15, 0x13, 0x45, 0x6F, 0x04, 0x00, 0x2D, 0x07, 0x22, 0xF7, 0x3C, 0xE1, 0x08, 0x11, + 0x2C, 0x42, 0x34, 0x42, 0xFF, 0x81, 0x00, 0x84, 0xD8, 0x08, 0x23, 0x01, 0xD7, 0xED, 0x1A, 0x52, + 0xC4, 0xFF, 0xFF, 0xFE, 0x09, 0x06, 0x09, 0x20, 0x8F, 0x00, 0x47, 0x00, 0x12, 0x0C, 0xAF, 0x20, + 0x22, 0xE8, 0x07, 0x6C, 0x23, 0x11, 0xE1, 0x0E, 0x47, 0x52, 0xFF, 0xFF, 0x8B, 0x00, 0xDB, 0x19, + 0x02, 0x13, 0x7D, 0x1E, 0x24, 0x14, 0x0E, 0x6E, 0x08, 0x40, 0xB2, 0xFF, 0xFF, 0x7A, 0x96, 0x1E, + 0x13, 0xB8, 0xFC, 0x09, 0x13, 0x5D, 0x83, 0x1D, 0x01, 0x6E, 0x0A, 0x52, 0xDC, 0xFF, 0xFF, 0x59, + 0x0B, 0xD7, 0x19, 0x23, 0x00, 0xCF, 0x0D, 0x16, 0x13, 0x55, 0xCA, 0x22, 0x10, 0x12, 0x2D, 0x1A, + 0x13, 0x17, 0x2A, 0x00, 0x21, 0xDF, 0xFF, 0x1B, 0x28, 0x23, 0x00, 0x79, 0xA7, 0x0D, 0x10, 0x61, + 0x09, 0x17, 0x13, 0x19, 0xB6, 0x0C, 0x13, 0xD5, 0xDD, 0x0B, 0x12, 0xAE, 0x82, 0x0D, 0x20, 0x05, + 0xD3, 0x5A, 0x09, 0x13, 0x13, 0xF0, 0x06, 0x12, 0xAF, 0x3A, 0x08, 0x10, 0x35, 0x08, 0x0E, 0x11, + 0x0D, 0xDF, 0x08, 0x52, 0xF5, 0x19, 0x00, 0x03, 0xFC, 0x9E, 0x00, 0x00, 0xB7, 0x01, 0x31, 0xFF, + 0xA0, 0x94, 0xBE, 0x08, 0x42, 0x17, 0x05, 0x6F, 0xFD, 0x6F, 0x0B, 0x11, 0xDF, 0x21, 0x1E, 0x32, + 0x00, 0x11, 0xE8, 0x57, 0x01, 0x00, 0x90, 0x11, 0x11, 0xEA, 0x4E, 0x0E, 0x13, 0x02, 0x65, 0x00, + 0x00, 0x12, 0x0B, 0x11, 0x3E, 0x35, 0x00, 0x23, 0xCA, 0x15, 0xF7, 0x21, 0x11, 0x99, 0x02, 0x05, + 0x14, 0x6B, 0xA5, 0x03, 0xD3, 0x2B, 0xA2, 0xD9, 0xD7, 0x8B, 0x10, 0x00, 0x24, 0xA6, 0xEE, 0xFF, + 0xE1, 0xA6, 0xB7, 0x0B, 0x69, 0x19, 0xFB, 0xFF, 0xFF, 0xF3, 0x15, 0x07, 0x02, 0x19, 0x02, 0xDE, + 0x1F, 0x3F, 0xFF, 0xA6, 0x01, 0x3F, 0x03, 0x04, 0x33, 0x21, 0xF7, 0xFF, 0xD9, 0x4B, 0x0F, 0x1E, + 0x00, 0x01, 0x01, 0x1F, 0x08, 0x17, 0xBB, 0xC4, 0x62, 0x27, 0x01, 0x04, 0x1E, 0x00, 0x01, 0x0B, + 0x23, 0xD8, 0xFE, 0xBE, 0x6E, 0x40, 0x18, 0x06, 0x03, 0x15, 0x31, 0x5D, 0x97, 0xDC, 0x5E, 0x3C, + 0x00, 0x1B, 0x6C, 0x30, 0x53, 0x19, 0x91, 0x5A, 0x00, 0x29, 0x2B, 0xB6, 0x1D, 0x00, 0x1B, 0xC4, + 0x79, 0x00, 0x33, 0x2B, 0x87, 0xCC, 0xF3, 0x04, 0x4E, 0xDD, 0xB2, 0x7A, 0x36, 0x99, 0x00, 0x7A, + 0x04, 0x21, 0x36, 0x3F, 0x3A, 0x26, 0x0C, 0x15, 0x00, 0x27, 0x11, 0x11, 0x8E, 0x03, 0x20, 0x0E, + 0xFB, 0x19, 0x04, 0x16, 0x38, 0x11, 0x00, 0x11, 0x3E, 0x4F, 0x00, 0x02, 0x99, 0x4B, 0x06, 0xA1, + 0x14, 0x26, 0xFF, 0x9B, 0x11, 0x00, 0x11, 0xA2, 0x11, 0x00, 0x16, 0xCC, 0x11, 0x00, 0x02, 0x3D, + 0x11, 0x24, 0xF9, 0x05, 0x10, 0x00, 0x13, 0x0A, 0xA9, 0x20, 0x02, 0x98, 0x20, 0x03, 0xC6, 0x0C, + 0x00, 0x14, 0x00, 0x18, 0x60, 0x81, 0x22, 0x18, 0xC0, 0x9A, 0x21, 0x00, 0x90, 0x18, 0x17, 0x6F, + 0xD4, 0x0C, 0x01, 0x10, 0x0D, 0x53, 0x2B, 0xF4, 0xFF, 0xFF, 0xF3, 0x74, 0x01, 0x60, 0x06, 0xF9, + 0xFF, 0xFF, 0xFC, 0x06, 0x16, 0x00, 0x16, 0x26, 0x09, 0x05, 0x36, 0xD9, 0x00, 0xA3, 0x50, 0x11, + 0x10, 0x62, 0xE2, 0x06, 0x01, 0xEA, 0x0C, 0x34, 0x89, 0x00, 0x00, 0xC7, 0x24, 0x36, 0x87, 0x00, + 0x53, 0xEF, 0x0C, 0x00, 0x2C, 0x0C, 0x35, 0x5F, 0x00, 0x2A, 0x78, 0x20, 0x01, 0x93, 0x20, 0x42, + 0x36, 0x00, 0x07, 0xFC, 0x18, 0x3E, 0x00, 0xDD, 0x34, 0x02, 0xE7, 0x09, 0x14, 0xDA, 0x8A, 0x38, + 0x13, 0x5A, 0xCB, 0x1E, 0x23, 0xB1, 0xFF, 0x38, 0x1A, 0x01, 0x87, 0x0A, 0x03, 0x58, 0x12, 0x14, + 0xB2, 0x13, 0x0D, 0x04, 0x9E, 0x01, 0x00, 0xCB, 0x1D, 0x28, 0x01, 0xEF, 0xB0, 0x01, 0x11, 0x15, + 0xC4, 0x38, 0x00, 0xC4, 0x27, 0x33, 0x44, 0x44, 0x49, 0x3B, 0x0C, 0x01, 0x1C, 0x0C, 0x13, 0x18, + 0x73, 0x53, 0x00, 0xD9, 0x1E, 0x15, 0x85, 0x9D, 0x0D, 0x12, 0xB9, 0x12, 0x20, 0x13, 0xB7, 0x87, + 0x1D, 0x01, 0xDA, 0x1A, 0x55, 0xFF, 0xDB, 0x00, 0x01, 0xE9, 0x89, 0x22, 0x01, 0x78, 0x06, 0x35, + 0x0E, 0x1A, 0xFF, 0x98, 0x0E, 0x01, 0xAF, 0x01, 0x24, 0x3E, 0x4C, 0xED, 0x10, 0x01, 0x82, 0x1A, + 0x52, 0xFF, 0xFF, 0x6F, 0x12, 0x10, 0x90, 0x18, 0x03, 0xF4, 0x0E, 0x41, 0xF3, 0xD9, 0xAF, 0x62, + 0x20, 0x03, 0x07, 0x9C, 0x00, 0x2A, 0xE4, 0x3F, 0x10, 0x00, 0x32, 0xFF, 0xF5, 0x26, 0x10, 0x00, + 0x61, 0xE6, 0x45, 0x4C, 0x65, 0xB1, 0xFF, 0x12, 0x21, 0x01, 0x10, 0x00, 0x23, 0xDC, 0x00, 0x57, + 0x04, 0x26, 0xFD, 0x10, 0x10, 0x00, 0x21, 0x0D, 0xFE, 0xA6, 0x43, 0x05, 0x10, 0x00, 0x21, 0x00, + 0xE6, 0xD2, 0x0F, 0x06, 0x10, 0x00, 0x11, 0xE1, 0x5D, 0x26, 0x05, 0x10, 0x00, 0x21, 0x01, 0xF3, + 0x39, 0x04, 0x05, 0x10, 0x00, 0x12, 0x24, 0xA9, 0x19, 0x05, 0x10, 0x00, 0x00, 0x62, 0x20, 0x21, + 0xD1, 0x01, 0x10, 0x00, 0x40, 0xE5, 0x3C, 0x3E, 0x59, 0x2C, 0x0D, 0x29, 0xFD, 0x45, 0xA0, 0x00, + 0x29, 0xD9, 0x4A, 0xB0, 0x00, 0x3B, 0xEE, 0x88, 0x1B, 0xC0, 0x00, 0x22, 0xF3, 0x47, 0x10, 0x00, + 0x50, 0xDD, 0x04, 0x06, 0x20, 0x6F, 0x9F, 0x26, 0x17, 0xF5, 0x60, 0x00, 0x01, 0x0E, 0x0F, 0x17, + 0x92, 0x90, 0x00, 0x11, 0xD4, 0x49, 0x07, 0x06, 0xB0, 0x00, 0x01, 0x05, 0x16, 0x16, 0x0C, 0x10, + 0x00, 0x01, 0xC5, 0x0C, 0x1B, 0x24, 0x10, 0x00, 0x1B, 0x25, 0x30, 0x00, 0x16, 0x0E, 0x10, 0x00, + 0x11, 0xD2, 0xC5, 0x16, 0x05, 0x10, 0x00, 0x01, 0x17, 0x16, 0x13, 0xA2, 0xD0, 0x00, 0x31, 0x3D, + 0x4E, 0x8A, 0x24, 0x13, 0x19, 0x3C, 0xB0, 0x00, 0x2A, 0xFF, 0xA1, 0xC0, 0x00, 0x26, 0x9B, 0x07, + 0x10, 0x00, 0x31, 0xF6, 0xD2, 0x98, 0x03, 0x17, 0x16, 0x12, 0xE0, 0x15, 0x92, 0x01, 0x4E, 0xA8, + 0xD8, 0xF6, 0xFA, 0xE6, 0xBE, 0x78, 0x37, 0x0B, 0x24, 0x18, 0xC3, 0x2C, 0x00, 0x10, 0xE7, 0xC9, + 0x01, 0x26, 0x05, 0xC9, 0x49, 0x00, 0x23, 0xF2, 0x20, 0x9F, 0x18, 0x40, 0xC9, 0x59, 0x48, 0x88, + 0xA8, 0x01, 0x12, 0x9D, 0x50, 0x03, 0x23, 0xED, 0x10, 0x4F, 0x0F, 0x35, 0xF6, 0x08, 0x17, 0x76, + 0x18, 0x01, 0xD8, 0x27, 0x25, 0x34, 0x43, 0x04, 0x0B, 0x01, 0x9F, 0x02, 0x11, 0x53, 0x3C, 0x09, + 0x15, 0x81, 0x1F, 0x0D, 0x34, 0x62, 0x6A, 0xFF, 0x02, 0x03, 0x01, 0x6B, 0x02, 0x2F, 0x64, 0x70, + 0x10, 0x00, 0x06, 0x00, 0xBB, 0x5F, 0x26, 0x14, 0x08, 0x10, 0x00, 0x07, 0x45, 0x04, 0x0F, 0x10, + 0x00, 0x42, 0x6C, 0x22, 0x70, 0x70, 0x70, 0x70, 0x2C, 0x90, 0x00, 0x1B, 0x6B, 0x10, 0x00, 0x01, + 0x10, 0x52, 0x15, 0x83, 0xD0, 0x00, 0x11, 0x5D, 0xF0, 0x00, 0x15, 0x93, 0x21, 0x13, 0x34, 0x4D, + 0x17, 0xFF, 0x27, 0x04, 0x12, 0x6C, 0x24, 0x21, 0x00, 0x30, 0x01, 0x10, 0xF3, 0x30, 0x01, 0x00, + 0x74, 0x07, 0x22, 0xEA, 0x03, 0x27, 0x01, 0x43, 0xC9, 0x54, 0x44, 0x92, 0xA4, 0x05, 0x26, 0x04, + 0xC3, 0x70, 0x01, 0x10, 0xE9, 0xA7, 0x10, 0x24, 0x15, 0xC1, 0x0F, 0x00, 0x12, 0xE8, 0x4F, 0x25, + 0x90, 0x01, 0x52, 0xAE, 0xDC, 0xF9, 0xFE, 0xE9, 0xC3, 0x76, 0xB6, 0x27, 0x28, 0x12, 0x0F, 0x90, + 0x03, 0x6A, 0xFB, 0xEF, 0xD0, 0xA9, 0x62, 0x09, 0xBF, 0x02, 0x2A, 0xDE, 0x40, 0x0E, 0x02, 0x22, + 0xF8, 0x31, 0x8D, 0x03, 0x31, 0x44, 0x48, 0x63, 0x5F, 0x0B, 0x15, 0xBE, 0x5C, 0x02, 0x02, 0x25, + 0x1B, 0x15, 0x2A, 0x6B, 0x02, 0x01, 0x33, 0x0F, 0x15, 0x67, 0x0F, 0x00, 0x01, 0xC1, 0x0E, 0x15, + 0x88, 0x0F, 0x00, 0x01, 0xB2, 0x10, 0x1A, 0xA1, 0x08, 0x03, 0x15, 0xAB, 0x0F, 0x00, 0x00, 0xA3, + 0x22, 0x2F, 0xFF, 0xAC, 0x0F, 0x00, 0x6E, 0x1A, 0x45, 0x0F, 0x00, 0x01, 0x02, 0x19, 0x15, 0xA8, + 0x0F, 0x00, 0x00, 0x00, 0x2D, 0x25, 0xFF, 0x98, 0x0F, 0x00, 0x01, 0xB8, 0x0E, 0x19, 0x7D, 0x9A, + 0x04, 0x24, 0xFF, 0x57, 0x0F, 0x00, 0x10, 0x07, 0xC3, 0x0D, 0x22, 0xFD, 0x17, 0x78, 0x03, 0x21, + 0x40, 0x64, 0xF9, 0x2A, 0x19, 0xA3, 0x59, 0x01, 0x29, 0xEF, 0x21, 0x56, 0x04, 0x15, 0x33, 0x77, + 0x01, 0x51, 0xF4, 0xD5, 0xAE, 0x64, 0x09, 0xC0, 0x22, 0x09, 0x3C, 0x05, 0x00, 0x01, 0x00, 0x17, + 0x30, 0x32, 0x00, 0x0D, 0x0C, 0x00, 0x12, 0xE6, 0x38, 0x14, 0x16, 0x0D, 0x0C, 0x04, 0x2F, 0x00, + 0x00, 0x0C, 0x00, 0x45, 0x01, 0x6E, 0x22, 0x17, 0xD9, 0x2A, 0x02, 0x1E, 0xDC, 0x0C, 0x00, 0x01, + 0x90, 0x00, 0x3F, 0x3B, 0x00, 0x00, 0x90, 0x00, 0x51, 0x12, 0xE5, 0xB8, 0x0E, 0x17, 0x10, 0x14, + 0x01, 0x1F, 0x44, 0x0C, 0x00, 0x05, 0x2C, 0x0E, 0x0B, 0x58, 0x01, 0x17, 0xF5, 0xEF, 0x02, 0x0B, + 0x0B, 0x00, 0x02, 0x55, 0x01, 0x17, 0x42, 0x70, 0x00, 0x0F, 0x0B, 0x00, 0x3E, 0x01, 0x4C, 0x01, + 0x16, 0xBD, 0x3F, 0x01, 0x1C, 0xC0, 0x0B, 0x00, 0x01, 0x84, 0x00, 0x1E, 0x33, 0x79, 0x00, 0x0F, + 0x0B, 0x00, 0x60, 0x07, 0x08, 0x06, 0x92, 0x03, 0x54, 0xA8, 0xD7, 0xF6, 0xFA, 0xE7, 0xC2, 0x7B, + 0x85, 0x2C, 0x25, 0x12, 0xBC, 0xF7, 0x05, 0x00, 0x8D, 0x25, 0x26, 0x03, 0xC5, 0x49, 0x01, 0x23, + 0xFE, 0x3E, 0x81, 0x1C, 0x52, 0xCF, 0x5F, 0x4B, 0x86, 0xFA, 0x9A, 0x28, 0x00, 0xB7, 0x04, 0x23, + 0xF2, 0x12, 0xB2, 0x14, 0x44, 0xFF, 0x23, 0x10, 0xFE, 0xD6, 0x2E, 0x01, 0x7B, 0x17, 0x11, 0x60, + 0xD9, 0x13, 0x15, 0x8E, 0x10, 0x16, 0x25, 0x80, 0x54, 0x38, 0x05, 0x01, 0x34, 0x26, 0x25, 0x91, + 0x68, 0x58, 0x05, 0x01, 0x92, 0x10, 0x16, 0x94, 0x78, 0x05, 0x6F, 0x04, 0x2C, 0x2C, 0x2C, 0x2C, + 0x1A, 0xC8, 0x05, 0x25, 0x12, 0x21, 0x48, 0x02, 0x05, 0xC8, 0x05, 0x12, 0x8C, 0xC2, 0x00, 0x1F, + 0xB8, 0x10, 0x00, 0x15, 0x48, 0x03, 0x04, 0x04, 0xAA, 0x10, 0x00, 0x03, 0xFD, 0x1C, 0x25, 0xB8, + 0x6A, 0xC8, 0x06, 0x01, 0x3F, 0x1E, 0x35, 0xB8, 0x54, 0xFF, 0xC6, 0x0F, 0x10, 0xB2, 0x10, 0x00, + 0x22, 0x39, 0xFF, 0xB3, 0x13, 0x01, 0x65, 0x4C, 0x54, 0xFF, 0xFF, 0xB8, 0x0A, 0xFB, 0x19, 0x10, + 0x21, 0x08, 0xF6, 0xF5, 0x10, 0x00, 0xD6, 0x05, 0x33, 0xFB, 0x1C, 0x00, 0xA9, 0x19, 0x12, 0xB8, + 0x50, 0x01, 0x52, 0xD7, 0x5D, 0x42, 0x7A, 0xF6, 0x10, 0x00, 0x24, 0x04, 0xCC, 0x6E, 0x01, 0x21, + 0xFC, 0xE1, 0x64, 0x0D, 0x14, 0x1A, 0xC3, 0x20, 0x22, 0x6D, 0xA3, 0x74, 0x0D, 0x80, 0x07, 0x60, + 0xB9, 0xE8, 0xFD, 0xEF, 0xB7, 0x44, 0x95, 0x16, 0x23, 0xB8, 0x13, 0x98, 0x09, 0x51, 0xF1, 0xFC, + 0xFC, 0xFC, 0xE5, 0x77, 0x00, 0x10, 0xA6, 0x86, 0x02, 0x10, 0x34, 0xB8, 0x16, 0x15, 0xE8, 0xB7, + 0x00, 0x1F, 0xFF, 0x10, 0x00, 0x92, 0x01, 0x40, 0x03, 0x26, 0xFC, 0xFF, 0x10, 0x00, 0x06, 0x01, + 0x00, 0x0F, 0x10, 0x00, 0x02, 0x11, 0xEF, 0xD3, 0x03, 0x1E, 0xC0, 0xE0, 0x00, 0x0F, 0x10, 0x00, + 0xA0, 0x22, 0x09, 0x05, 0xC8, 0x01, 0x50, 0xD9, 0xFC, 0xFC, 0xFC, 0xED, 0x47, 0x17, 0x1F, 0xF0, + 0x05, 0x00, 0x6F, 0x25, 0x0B, 0x09, 0xD8, 0x0D, 0x00, 0x5C, 0x4C, 0x24, 0xFC, 0xB9, 0x57, 0x1D, + 0x1F, 0xBB, 0x09, 0x00, 0x19, 0x1F, 0xBA, 0x09, 0x00, 0x19, 0x1F, 0xB9, 0x09, 0x00, 0x19, 0x1F, + 0xB8, 0x09, 0x00, 0x14, 0x13, 0x24, 0x7C, 0x0C, 0x24, 0x00, 0x3B, 0x33, 0x17, 0x01, 0xD6, 0x25, + 0x41, 0x8B, 0x2C, 0x54, 0x92, 0xED, 0x0E, 0x13, 0x56, 0xB5, 0x1B, 0x22, 0xE8, 0x08, 0x09, 0x00, + 0x20, 0xF8, 0x4C, 0xD8, 0x10, 0x41, 0xF7, 0xD8, 0x9F, 0x29, 0x10, 0x21, 0x05, 0xF8, 0x0C, 0x01, + 0x79, 0x2A, 0x66, 0x1A, 0xF8, 0xFC, 0xFC, 0xFC, 0x90, 0x4B, 0x05, 0x12, 0x82, 0xBB, 0x17, 0x05, + 0x2F, 0x08, 0x12, 0xE9, 0x6C, 0x0D, 0x04, 0x6B, 0x05, 0x01, 0x5C, 0x08, 0x16, 0x5F, 0x10, 0x00, + 0x13, 0xC8, 0x67, 0x3E, 0x03, 0x10, 0x00, 0x01, 0x8A, 0x1C, 0x16, 0x92, 0x9B, 0x05, 0x14, 0xA1, + 0x09, 0x18, 0x02, 0x10, 0x00, 0x24, 0x16, 0xF9, 0xBA, 0x0D, 0x02, 0xBB, 0x05, 0x01, 0x3A, 0x22, + 0x15, 0x5E, 0x10, 0x00, 0x23, 0x04, 0xE4, 0x4E, 0x00, 0x03, 0x10, 0x00, 0x16, 0x54, 0xF0, 0x0F, + 0x01, 0x10, 0x00, 0x14, 0xC1, 0x4E, 0x00, 0x02, 0x10, 0x00, 0x01, 0x33, 0x0C, 0x17, 0xCA, 0xB0, + 0x06, 0x01, 0xF5, 0x00, 0x1A, 0x04, 0x10, 0x00, 0x26, 0xFF, 0x4B, 0x10, 0x00, 0x10, 0xA4, 0x32, + 0x00, 0x15, 0xAA, 0x10, 0x00, 0x20, 0xF6, 0x18, 0xF3, 0x04, 0x26, 0xF9, 0x11, 0x90, 0x00, 0x01, + 0x90, 0x19, 0x16, 0x68, 0x10, 0x00, 0x24, 0x06, 0xED, 0xEE, 0x04, 0x03, 0x6B, 0x06, 0x01, 0x65, + 0x09, 0x16, 0x26, 0x10, 0x00, 0x14, 0x3D, 0x25, 0x1B, 0x03, 0x10, 0x00, 0x10, 0x02, 0xD6, 0x0D, + 0x26, 0xE1, 0x02, 0x20, 0x01, 0x13, 0x87, 0x09, 0x1A, 0x04, 0x10, 0x00, 0x17, 0x2B, 0xD8, 0x0C, + 0x01, 0x70, 0x01, 0x00, 0xDC, 0x22, 0x26, 0xF4, 0x0C, 0x10, 0x00, 0x12, 0x75, 0x61, 0x01, 0x05, + 0x10, 0x00, 0x29, 0x1C, 0xFE, 0xDC, 0x0A, 0x03, 0x51, 0x0F, 0x18, 0x1F, 0x84, 0x09, 0x1E, 0xD9, + 0xC4, 0x08, 0x0F, 0x0C, 0x00, 0xFA, 0x0F, 0x84, 0x09, 0x19, 0x23, 0x17, 0x14, 0x48, 0x08, 0x10, + 0x9C, 0x5A, 0x01, 0x27, 0x77, 0x00, 0x99, 0x58, 0x12, 0x1E, 0xD9, 0x11, 0x13, 0xAA, 0x71, 0x08, + 0x01, 0x30, 0x00, 0x37, 0x22, 0x00, 0xA6, 0x6E, 0x00, 0x22, 0x45, 0xFF, 0x1F, 0x02, 0x00, 0x57, + 0x02, 0x04, 0x5B, 0x22, 0x22, 0x78, 0xFF, 0x30, 0x0D, 0x00, 0x96, 0x13, 0x04, 0xA6, 0x33, 0x22, + 0xAC, 0xFF, 0xC5, 0x1B, 0x26, 0xB2, 0xFF, 0xA8, 0x10, 0x22, 0xDF, 0xFF, 0x32, 0x17, 0x02, 0xD0, + 0x12, 0x24, 0xA4, 0x00, 0xC6, 0x21, 0x00, 0x81, 0x11, 0x02, 0x06, 0x39, 0x15, 0xD6, 0xFA, 0x0B, + 0x00, 0x99, 0x2B, 0x02, 0x58, 0x11, 0x26, 0xFE, 0x0B, 0xA7, 0x24, 0x10, 0x3F, 0xF1, 0x2F, 0x22, + 0xF6, 0xEC, 0x1C, 0x54, 0x12, 0xAD, 0x28, 0x2E, 0x10, 0x43, 0x0D, 0x30, 0x52, 0xF1, 0xB8, 0xFF, + 0xFF, 0x6C, 0x72, 0x10, 0x11, 0xAD, 0x89, 0x14, 0x51, 0xCA, 0xFF, 0xFF, 0xED, 0x83, 0x8A, 0x1F, + 0x00, 0xA5, 0x08, 0x11, 0x76, 0x25, 0x03, 0x81, 0xCE, 0xFF, 0xFF, 0xE9, 0x4F, 0xFF, 0xFF, 0xD1, + 0x11, 0x0D, 0x21, 0xDC, 0x61, 0xE1, 0x11, 0x40, 0xD2, 0xFF, 0xFF, 0xE5, 0x27, 0x2C, 0x10, 0x08, + 0xA9, 0x03, 0x21, 0xA8, 0x5D, 0x65, 0x21, 0x10, 0xD6, 0xD8, 0x14, 0x10, 0xE7, 0x89, 0x1E, 0x51, + 0xAE, 0xFF, 0xFF, 0x74, 0x58, 0x5F, 0x12, 0x10, 0xDA, 0x38, 0x30, 0x10, 0xB2, 0x59, 0x1E, 0x51, + 0xE2, 0xFF, 0xFF, 0x40, 0x54, 0x3C, 0x38, 0x10, 0xDE, 0x7E, 0x12, 0x40, 0x7E, 0xFF, 0xFF, 0x99, + 0x18, 0x09, 0x21, 0x0E, 0x50, 0xDD, 0x12, 0x40, 0xE2, 0xFF, 0xFF, 0xD5, 0xAD, 0x0C, 0x20, 0xCB, + 0x49, 0x40, 0x34, 0x11, 0x4B, 0x20, 0x16, 0x10, 0xE6, 0x74, 0x00, 0x50, 0x16, 0xFF, 0xFF, 0xF9, + 0x81, 0xF6, 0x00, 0x11, 0x47, 0x80, 0x03, 0x11, 0xEA, 0x66, 0x34, 0x40, 0xE1, 0xFF, 0xFF, 0xDE, + 0xE6, 0x21, 0x00, 0xE4, 0x0A, 0x31, 0x6C, 0x00, 0xEE, 0x5A, 0x3A, 0x22, 0xAD, 0xFF, 0x66, 0x20, + 0x11, 0x3E, 0x00, 0x22, 0x11, 0xF2, 0x4D, 0x04, 0x11, 0x79, 0x09, 0x01, 0x11, 0x0C, 0x41, 0x22, + 0x10, 0x75, 0xE2, 0x2F, 0x13, 0xC1, 0x3F, 0x0D, 0x12, 0xD5, 0x90, 0x04, 0x10, 0x79, 0x71, 0x23, + 0x13, 0xBD, 0xFC, 0x1F, 0x12, 0xA1, 0xDC, 0x15, 0x32, 0x7D, 0x00, 0xFE, 0x79, 0x05, 0x00, 0x19, + 0x06, 0x12, 0x6D, 0xF6, 0x28, 0x21, 0x81, 0x02, 0xEF, 0x35, 0x02, 0x80, 0x31, 0x12, 0x39, 0xD6, + 0x2F, 0x32, 0x85, 0x06, 0xFF, 0xF1, 0x2C, 0x70, 0x73, 0xFF, 0xFF, 0xFC, 0x0A, 0x00, 0x00, 0x98, + 0x21, 0x10, 0x89, 0x26, 0x30, 0x12, 0xAE, 0x00, 0x57, 0x11, 0xD2, 0xAE, 0x5F, 0x55, 0xFF, 0xFF, + 0x8E, 0x12, 0x0E, 0x90, 0x03, 0x14, 0x89, 0x8D, 0x42, 0x10, 0xFC, 0x3C, 0x05, 0x24, 0xEC, 0x08, + 0x2D, 0x0A, 0x00, 0xC4, 0x21, 0x29, 0xFF, 0x5B, 0x0E, 0x00, 0x19, 0xC3, 0x0E, 0x00, 0x29, 0xFF, + 0x2D, 0x0E, 0x00, 0x19, 0x94, 0x0E, 0x00, 0x28, 0xF2, 0x0C, 0x0E, 0x00, 0x29, 0xFF, 0x65, 0x0E, + 0x00, 0x28, 0xCE, 0x01, 0x0E, 0x00, 0x29, 0xFF, 0x35, 0x0E, 0x00, 0x16, 0x9E, 0x0E, 0x00, 0x55, + 0xF9, 0xFF, 0xFF, 0xF6, 0x11, 0x0E, 0x00, 0x00, 0xD1, 0x15, 0x15, 0x6E, 0x0E, 0x00, 0x64, 0x40, + 0xFE, 0xFF, 0xFF, 0xD6, 0x1D, 0x0E, 0x00, 0x10, 0x20, 0x88, 0x02, 0x15, 0x5B, 0x0E, 0x00, 0x00, + 0x19, 0x05, 0x15, 0xC3, 0x0E, 0x00, 0x01, 0xA8, 0x05, 0x05, 0x0E, 0x00, 0x29, 0x00, 0x81, 0x0E, + 0x00, 0x28, 0x1D, 0xFD, 0x0E, 0x00, 0x29, 0x00, 0xB2, 0x0E, 0x00, 0x19, 0x4B, 0x0E, 0x00, 0x28, + 0x03, 0xE1, 0x0E, 0x00, 0x29, 0x00, 0x7D, 0x0E, 0x00, 0x28, 0x1A, 0xFC, 0x0E, 0x00, 0x29, 0x00, + 0xAE, 0x0E, 0x00, 0x19, 0x47, 0x0E, 0x00, 0x28, 0x02, 0xDE, 0x0E, 0x00, 0x00, 0x73, 0x03, 0x26, + 0xEC, 0x13, 0x10, 0x0C, 0x92, 0x02, 0x51, 0xA6, 0xD4, 0xF5, 0xFA, 0xE9, 0xC0, 0x7C, 0x10, 0x0C, + 0x15, 0x17, 0x10, 0x0C, 0x10, 0xF5, 0x8F, 0x78, 0x27, 0x06, 0xCC, 0xFF, 0x03, 0x13, 0x53, 0xEF, + 0x11, 0x40, 0xCC, 0x5E, 0x4A, 0x84, 0xE9, 0x0A, 0x21, 0xE1, 0x05, 0xBB, 0x17, 0x24, 0xF0, 0x0F, + 0x66, 0x03, 0x34, 0x52, 0x1C, 0xFF, 0x10, 0x0C, 0x01, 0xEB, 0x12, 0x25, 0x9A, 0x44, 0x56, 0x2A, + 0x11, 0x06, 0xDA, 0x1B, 0x16, 0x60, 0x2B, 0x29, 0x00, 0x08, 0x01, 0x26, 0xE7, 0x6E, 0x46, 0x21, + 0x00, 0xD0, 0x00, 0x2A, 0xF6, 0x70, 0x10, 0x00, 0x1F, 0xF8, 0x10, 0x00, 0x7D, 0x1A, 0x6D, 0x10, + 0x00, 0x2A, 0xF5, 0x5D, 0xD0, 0x00, 0x33, 0xE4, 0x40, 0xFF, 0x45, 0x34, 0x21, 0x00, 0x07, 0xF0, + 0x00, 0x23, 0x12, 0xFE, 0x0D, 0x03, 0x02, 0x2C, 0x33, 0x32, 0x9B, 0x00, 0xCA, 0xF9, 0x38, 0x02, + 0xCF, 0x26, 0x22, 0xFF, 0x52, 0x1B, 0x25, 0x40, 0xCD, 0x57, 0x43, 0x81, 0x50, 0x01, 0x48, 0xDF, + 0x04, 0x00, 0x04, 0x6A, 0x3D, 0x00, 0x92, 0x28, 0x25, 0x16, 0xBB, 0x90, 0x01, 0x02, 0xD0, 0x26, + 0xA2, 0x02, 0x4C, 0xA7, 0xD7, 0xF8, 0xFD, 0xEC, 0xC2, 0x86, 0x1F, 0x9C, 0x21, 0x08, 0xA8, 0x15, + 0x5A, 0xFC, 0xF1, 0xCC, 0x86, 0x1E, 0x18, 0x12, 0x2A, 0xF3, 0x52, 0x18, 0x12, 0x23, 0xF9, 0x33, + 0x9C, 0x0E, 0x32, 0x45, 0x58, 0x9B, 0x8C, 0x09, 0x05, 0xA2, 0x05, 0x00, 0x3C, 0x1B, 0x25, 0xFE, + 0x16, 0x0F, 0x00, 0x01, 0xAD, 0x08, 0x15, 0x50, 0x0F, 0x00, 0x01, 0x35, 0x16, 0x15, 0x71, 0x0F, + 0x00, 0x01, 0x7E, 0x05, 0x15, 0x81, 0x0F, 0x00, 0x00, 0xCB, 0x19, 0x25, 0xFF, 0x7E, 0x0F, 0x00, + 0x10, 0x38, 0x0A, 0x00, 0x15, 0x62, 0x0F, 0x00, 0x01, 0x84, 0x04, 0x12, 0x37, 0x0F, 0x00, 0x30, + 0x01, 0x15, 0x63, 0xCC, 0x15, 0x22, 0xE4, 0x02, 0xF6, 0x0C, 0x03, 0x39, 0x27, 0x19, 0x63, 0xA5, + 0x00, 0x26, 0x96, 0x01, 0xB2, 0x08, 0x45, 0xFE, 0xBF, 0x4A, 0x00, 0x99, 0x10, 0x3D, 0x43, 0x31, + 0x0D, 0xC4, 0x06, 0x0F, 0x0F, 0x00, 0x95, 0x5F, 0x13, 0x10, 0x22, 0x01, 0xFA, 0x74, 0x03, 0x1E, + 0x1B, 0x52, 0x74, 0x03, 0x1C, 0xE0, 0x74, 0x03, 0x1B, 0x51, 0x74, 0x03, 0x1B, 0x98, 0x74, 0x03, + 0x1B, 0xC7, 0x74, 0x03, 0x1B, 0xE6, 0x74, 0x03, 0x1F, 0xF5, 0x74, 0x03, 0x9C, 0x1B, 0xF6, 0x74, + 0x03, 0x1B, 0xE7, 0x74, 0x03, 0x1B, 0xCE, 0x74, 0x03, 0x1B, 0x9F, 0x74, 0x03, 0x1A, 0x59, 0x74, + 0x03, 0x2A, 0xE9, 0x08, 0x74, 0x03, 0x19, 0x5A, 0x74, 0x03, 0x26, 0xFD, 0x71, 0x74, 0x03, 0x06, + 0x6E, 0x0B, 0x02, 0x01, 0x00, 0x58, 0x07, 0xD2, 0xFF, 0xFF, 0xFE, 0x17, 0x1E, 0x2B, 0x26, 0xF0, + 0x4B, 0x3C, 0x57, 0x48, 0xFB, 0xFF, 0xFF, 0xAB, 0x10, 0x00, 0x32, 0x00, 0x53, 0xFA, 0x41, 0x26, + 0x05, 0x01, 0x00, 0x4C, 0x37, 0xE2, 0x22, 0x00, 0x8D, 0x87, 0x0A, 0x7C, 0x19, 0x6B, 0xFA, 0xED, + 0xD3, 0xA9, 0x5F, 0x07, 0x7C, 0x19, 0x2B, 0xE6, 0x49, 0xBC, 0x18, 0x24, 0xFC, 0x3B, 0x23, 0x03, + 0x21, 0x47, 0x63, 0x4D, 0x02, 0x25, 0xD9, 0x02, 0x7F, 0x02, 0x3A, 0x01, 0xAA, 0xFF, 0x6C, 0x19, + 0x01, 0x31, 0x01, 0x16, 0x6B, 0x10, 0x00, 0x01, 0x45, 0x29, 0x07, 0xE4, 0x0C, 0x11, 0x01, 0xBB, + 0x05, 0x06, 0x10, 0x00, 0x1B, 0x0A, 0xFC, 0x18, 0x11, 0x32, 0x23, 0x1A, 0x06, 0x10, 0x00, 0x12, + 0x92, 0xD9, 0x30, 0x02, 0x10, 0x00, 0x20, 0x04, 0x28, 0xEF, 0x41, 0x33, 0xFF, 0xF1, 0x09, 0x24, + 0x13, 0x03, 0xA1, 0x00, 0x1A, 0x78, 0xB0, 0x00, 0x29, 0x8F, 0x02, 0x10, 0x00, 0x26, 0x89, 0x00, + 0xE3, 0x03, 0x13, 0xE9, 0xF4, 0x0D, 0x04, 0x3F, 0x03, 0x23, 0xA9, 0xFF, 0xFC, 0x3C, 0x03, 0x10, + 0x00, 0x14, 0x69, 0x47, 0x31, 0x03, 0x10, 0x00, 0x01, 0x75, 0x1B, 0x16, 0x88, 0x10, 0x00, 0x01, + 0xEE, 0x1A, 0x17, 0xCD, 0x7F, 0x03, 0x22, 0xA9, 0xFF, 0x55, 0x35, 0x04, 0x10, 0x00, 0x01, 0x41, + 0x00, 0x16, 0x57, 0x10, 0x00, 0x01, 0x41, 0x00, 0x16, 0x9C, 0x10, 0x00, 0x01, 0x41, 0x00, 0x26, + 0xE1, 0x01, 0xE0, 0x00, 0x12, 0xA9, 0xB7, 0x0A, 0x05, 0x10, 0x00, 0x1B, 0x69, 0x40, 0x01, 0x01, + 0x41, 0x00, 0x17, 0xB0, 0x40, 0x01, 0x00, 0x78, 0x1E, 0x37, 0xF1, 0x05, 0x10, 0x08, 0x31, 0x72, + 0x8D, 0xD0, 0xF4, 0xFA, 0xE0, 0xAE, 0x4B, 0x3C, 0x0B, 0x14, 0x70, 0xB3, 0x1D, 0x2A, 0xAC, 0x06, + 0x08, 0x31, 0x22, 0x8A, 0x00, 0x08, 0x31, 0x30, 0xDB, 0x62, 0x4C, 0xF6, 0x1E, 0x43, 0xFB, 0x1B, + 0x00, 0x51, 0xCF, 0x26, 0x21, 0x04, 0xD8, 0x27, 0x41, 0x00, 0xEB, 0x1B, 0x12, 0xEC, 0x3E, 0x60, + 0x00, 0x40, 0x1C, 0x23, 0xA1, 0xFF, 0xE1, 0x1C, 0x11, 0x56, 0x7B, 0x00, 0x23, 0x9E, 0xFF, 0x34, + 0x3D, 0x52, 0x3F, 0xFF, 0xDD, 0xAA, 0x71, 0x97, 0x31, 0x65, 0xBD, 0x04, 0x00, 0x00, 0x0A, 0x11, + 0x27, 0x28, 0x24, 0xFF, 0xA0, 0xE3, 0x20, 0x12, 0x0C, 0xC6, 0x2B, 0x14, 0xAC, 0xF6, 0x83, 0x12, + 0x6E, 0x83, 0x00, 0x13, 0xBD, 0x24, 0x40, 0x22, 0x01, 0xAB, 0x10, 0x00, 0x13, 0xCB, 0xF0, 0x1E, + 0x13, 0x0A, 0x6B, 0x44, 0x13, 0xD6, 0xFB, 0x6B, 0x23, 0x07, 0xAA, 0x43, 0x36, 0x03, 0xD4, 0x4A, + 0x13, 0x03, 0x55, 0x2B, 0x2A, 0x9D, 0x00, 0xEA, 0x72, 0x14, 0x42, 0xD9, 0x02, 0x38, 0x72, 0xFF, + 0xFF, 0xE6, 0x22, 0x02, 0x10, 0x1B, 0x60, 0xFF, 0x15, 0x04, 0x2F, 0x68, 0xA1, 0xA8, 0x20, 0x21, + 0x06, 0xDB, 0xE2, 0x2B, 0x14, 0xA1, 0x42, 0x0C, 0x01, 0x18, 0x0C, 0x10, 0x64, 0x1F, 0x0E, 0x15, + 0xD2, 0xD8, 0x0B, 0x10, 0x69, 0x3D, 0x13, 0x24, 0xFC, 0x14, 0x52, 0x36, 0x33, 0x4B, 0x14, 0xFC, + 0x19, 0x04, 0x00, 0xEA, 0x00, 0x21, 0xFC, 0x17, 0x99, 0x0A, 0x52, 0xFE, 0x89, 0x43, 0x73, 0xF5, + 0x00, 0x04, 0x25, 0x1E, 0xEC, 0x59, 0x01, 0x10, 0xF1, 0xFA, 0x08, 0x23, 0x33, 0xDF, 0x0E, 0x00, + 0x12, 0xE4, 0xAF, 0x40, 0x80, 0x0C, 0x6B, 0xBE, 0xE9, 0xFE, 0xF3, 0xCA, 0x78, 0x89, 0x0C, 0x33, + 0x0E, 0x0E, 0x1C, 0xAA, 0x4E, 0x07, 0x01, 0x00, 0x28, 0xCD, 0xE0, 0xB3, 0x02, 0x1A, 0xD0, 0x0E, + 0x00, 0x41, 0x3C, 0x44, 0x44, 0x44, 0x6D, 0x22, 0x55, 0x9D, 0x44, 0x44, 0x44, 0x38, 0xAC, 0x23, + 0x01, 0x9E, 0x53, 0x0F, 0x0E, 0x00, 0xFF, 0x30, 0x04, 0xA0, 0x0A, 0x01, 0xE8, 0x55, 0x14, 0x82, + 0x6F, 0x47, 0x36, 0xFC, 0xCD, 0x38, 0x0C, 0x06, 0x01, 0x09, 0x2F, 0x0F, 0x10, 0x00, 0xED, 0x1A, + 0x37, 0x10, 0x00, 0x26, 0xCF, 0x31, 0x1C, 0x07, 0x00, 0x57, 0x24, 0x11, 0xC8, 0x29, 0x2F, 0x02, + 0x73, 0x7C, 0x00, 0x75, 0x31, 0x25, 0xBA, 0x0A, 0xB0, 0x16, 0x01, 0x2C, 0x07, 0x20, 0xA0, 0x00, + 0x90, 0x2B, 0x14, 0xC9, 0x56, 0x41, 0x21, 0xFF, 0x74, 0x92, 0x2A, 0x23, 0xFD, 0x28, 0xB8, 0x2D, + 0x22, 0xFF, 0x30, 0xC2, 0x11, 0x30, 0xE1, 0x60, 0x43, 0x72, 0x76, 0x34, 0xFF, 0xD2, 0x01, 0x14, + 0x34, 0x15, 0xFF, 0xAF, 0x0F, 0x24, 0x0C, 0xB2, 0x0E, 0x00, 0x12, 0xF6, 0x74, 0x2E, 0xA7, 0x01, + 0x46, 0xA7, 0xD8, 0xF7, 0xFE, 0xEE, 0xCA, 0x88, 0x1D, 0x2C, 0x22, 0x10, 0x28, 0xC8, 0x01, 0x12, + 0x2A, 0x0E, 0x54, 0x00, 0x0B, 0x00, 0x35, 0x3B, 0x03, 0xF5, 0x7A, 0x21, 0x12, 0x59, 0xA0, 0x0E, + 0x15, 0xC5, 0x5A, 0x17, 0x12, 0x84, 0x40, 0x43, 0x21, 0x94, 0xFF, 0x96, 0x49, 0x03, 0x03, 0x24, + 0x12, 0xA6, 0xA2, 0x21, 0x01, 0xB0, 0x24, 0x22, 0x00, 0xDB, 0x58, 0x3F, 0x14, 0x31, 0x48, 0x10, + 0x22, 0x09, 0xFE, 0x6B, 0x04, 0x23, 0x06, 0xFA, 0x65, 0x2F, 0x14, 0x31, 0x41, 0x35, 0x00, 0x4C, + 0x2B, 0x13, 0x6B, 0x88, 0x2B, 0x05, 0xA3, 0x27, 0x13, 0x99, 0xE0, 0x00, 0x01, 0x35, 0x09, 0x13, + 0x6A, 0xC4, 0x12, 0x13, 0xB3, 0x37, 0x40, 0x23, 0x00, 0x39, 0x56, 0x05, 0x14, 0xDE, 0x14, 0x21, + 0x21, 0x0B, 0xFD, 0xCB, 0x10, 0x14, 0x0B, 0x52, 0x2E, 0x02, 0xB1, 0x24, 0x33, 0x50, 0x00, 0x34, + 0xDE, 0x21, 0x03, 0x56, 0x2E, 0x11, 0x7E, 0x9D, 0x2F, 0x16, 0xB3, 0xEF, 0x04, 0x35, 0xAC, 0x00, + 0x8B, 0x3E, 0x18, 0x01, 0xB3, 0x04, 0x34, 0xDA, 0x00, 0xB6, 0x1A, 0x22, 0x02, 0x48, 0x36, 0x34, + 0xFE, 0x0B, 0xE1, 0xD6, 0x42, 0x21, 0x00, 0x00, 0x8C, 0x01, 0x00, 0x59, 0x1E, 0x27, 0xEB, 0x01, + 0xFE, 0x45, 0x14, 0x9B, 0x0F, 0x07, 0x04, 0x72, 0x35, 0x13, 0xEE, 0xEF, 0x06, 0x02, 0x0B, 0x3F, + 0x03, 0x7C, 0x01, 0x14, 0x56, 0x11, 0x00, 0x01, 0xBA, 0x1C, 0x09, 0x00, 0x44, 0x02, 0x2E, 0x77, + 0x16, 0xF1, 0x7C, 0x24, 0x13, 0xB4, 0xA3, 0x1A, 0x05, 0x01, 0x00, 0x01, 0xD4, 0x14, 0x04, 0x03, + 0x30, 0x05, 0xC4, 0x2C, 0x26, 0xFF, 0x5C, 0x11, 0x00, 0x13, 0x1F, 0xA6, 0x11, 0x05, 0x01, 0x00, + 0x10, 0x01, 0xFA, 0x13, 0x12, 0xF6, 0x4C, 0x06, 0x22, 0x18, 0x16, 0xAC, 0x03, 0x10, 0xD8, 0xD8, + 0x01, 0x03, 0xD5, 0x16, 0x01, 0x4D, 0x00, 0x10, 0x76, 0xEE, 0x0F, 0x13, 0xB9, 0x52, 0x30, 0x23, + 0x08, 0xFD, 0xC8, 0x00, 0x00, 0xB6, 0x30, 0x23, 0x68, 0x96, 0xE9, 0x03, 0x00, 0x59, 0x10, 0x14, + 0xE2, 0x16, 0x46, 0x23, 0x45, 0x73, 0x7A, 0x41, 0x22, 0x55, 0xFF, 0xA9, 0x26, 0x01, 0x1A, 0x24, + 0x23, 0x22, 0x50, 0xCF, 0x15, 0x22, 0x7D, 0xFF, 0xEF, 0x46, 0x00, 0x0B, 0x22, 0x33, 0xFB, 0x04, + 0x2D, 0x6B, 0x2B, 0x13, 0xA5, 0xEA, 0x33, 0x11, 0x11, 0x03, 0x07, 0x22, 0x0B, 0xFF, 0x1B, 0x4A, + 0x13, 0xCD, 0xA8, 0x19, 0x12, 0x30, 0x3E, 0x01, 0x11, 0xE7, 0x40, 0x4A, 0x32, 0x02, 0xF5, 0xFF, + 0x4E, 0x43, 0x12, 0x4F, 0x95, 0x26, 0x11, 0xC4, 0x2F, 0x07, 0x01, 0x99, 0x31, 0x00, 0x70, 0x02, + 0x12, 0x6D, 0x8A, 0x48, 0x11, 0xA1, 0xA3, 0x01, 0x40, 0x46, 0xFF, 0xFF, 0xFA, 0x32, 0x24, 0x22, + 0x00, 0x8C, 0x88, 0x0D, 0x11, 0x7E, 0x0F, 0x3D, 0x50, 0x6E, 0xFF, 0xFF, 0xC0, 0xF6, 0x09, 0x01, + 0x12, 0xAB, 0x8F, 0x10, 0x11, 0x5B, 0x6A, 0x0B, 0x50, 0x96, 0xFF, 0xFF, 0x95, 0xCD, 0x1E, 0x0F, + 0x00, 0x69, 0x0A, 0x12, 0x0B, 0xFD, 0x0C, 0x10, 0xAC, 0x82, 0x12, 0x20, 0x6B, 0xA3, 0xA1, 0x30, + 0x11, 0xE8, 0x58, 0x4B, 0x01, 0x59, 0x23, 0x10, 0xCA, 0xD0, 0x11, 0x63, 0x41, 0x79, 0xFF, 0xFF, + 0xA5, 0x08, 0x8E, 0x25, 0x50, 0x01, 0xF2, 0xFF, 0xFF, 0xE9, 0x81, 0x09, 0x62, 0x17, 0x4F, 0xFF, + 0xFF, 0xCE, 0x26, 0x83, 0x11, 0x02, 0x4C, 0x27, 0xA4, 0x40, 0xFF, 0xFF, 0xEE, 0x01, 0x25, 0xFF, + 0xFF, 0xF6, 0x46, 0x58, 0x48, 0x00, 0x10, 0x02, 0x10, 0x86, 0x38, 0x00, 0x54, 0x04, 0xF8, 0xFF, + 0xFF, 0x82, 0x2F, 0x11, 0x00, 0x42, 0x32, 0x11, 0xCC, 0x4C, 0x46, 0x30, 0xD1, 0xFF, 0xFF, 0x83, + 0x00, 0x15, 0x38, 0x98, 0x21, 0x01, 0x06, 0x34, 0x10, 0xA7, 0x1A, 0x6A, 0x02, 0x02, 0x6B, 0x02, + 0x57, 0x22, 0x01, 0x6D, 0x27, 0x01, 0x4E, 0x01, 0x35, 0xFF, 0xF2, 0x01, 0x3D, 0x35, 0x01, 0x88, + 0x02, 0x02, 0xBD, 0x30, 0x12, 0xCF, 0xD3, 0x07, 0x23, 0xFA, 0xFF, 0x4E, 0x01, 0x25, 0x29, 0xFF, + 0x63, 0x0C, 0x02, 0xDD, 0x24, 0x01, 0x33, 0x04, 0x36, 0x05, 0xFB, 0xFF, 0x2D, 0x25, 0x12, 0xB7, + 0x4F, 0x04, 0x03, 0x1C, 0x03, 0x02, 0x27, 0x31, 0x03, 0xC7, 0x4A, 0x01, 0x12, 0x0B, 0x17, 0xAB, + 0xFD, 0x3A, 0x01, 0x45, 0x0E, 0x01, 0xAA, 0x48, 0x16, 0x81, 0x96, 0x10, 0x02, 0xA0, 0x08, 0x22, + 0x22, 0x00, 0x04, 0x49, 0x36, 0xFF, 0xFA, 0x03, 0xFC, 0x32, 0x11, 0xF7, 0x0C, 0x00, 0x14, 0x2D, + 0x26, 0x7A, 0x13, 0x10, 0x54, 0x04, 0x33, 0x52, 0xFC, 0xFC, 0x9A, 0x59, 0x94, 0x00, 0xAC, 0xFC, + 0xFC, 0xFC, 0x94, 0x00, 0x06, 0xEB, 0x40, 0x33, 0x22, 0x0C, 0xF7, 0x04, 0x68, 0x00, 0xBD, 0x01, + 0x23, 0xF5, 0x0E, 0x53, 0x00, 0x14, 0xDD, 0xCA, 0x00, 0x13, 0x65, 0x4B, 0x01, 0x23, 0x81, 0x00, + 0x36, 0x44, 0x61, 0xC8, 0x00, 0x00, 0x0B, 0xF6, 0xFF, 0xA6, 0x4E, 0x02, 0x62, 0x33, 0x42, 0xFF, + 0x2B, 0x00, 0x56, 0x18, 0x00, 0x00, 0xFF, 0x03, 0x11, 0xF2, 0x1E, 0x03, 0x25, 0xAA, 0xFF, 0xD1, + 0x3F, 0x00, 0xE7, 0x16, 0x10, 0xEB, 0x77, 0x32, 0x13, 0xFB, 0xAC, 0x3F, 0x00, 0x0A, 0x04, 0x25, + 0xFF, 0xA7, 0xDE, 0x32, 0x16, 0x00, 0x94, 0x39, 0x05, 0x93, 0x77, 0x13, 0x6C, 0x8A, 0x08, 0x05, + 0xDA, 0x8A, 0x12, 0x11, 0xB3, 0x1E, 0x07, 0x21, 0x48, 0x02, 0xF1, 0x35, 0x16, 0x3F, 0x11, 0x00, + 0x23, 0x66, 0xFF, 0x2F, 0x17, 0x04, 0x11, 0x00, 0x26, 0xB6, 0xFF, 0x8E, 0x26, 0x01, 0x7B, 0x03, + 0x01, 0x4D, 0x12, 0x3A, 0xFD, 0x1E, 0x00, 0x66, 0x09, 0x25, 0xFF, 0x82, 0x11, 0x00, 0x03, 0x88, + 0x00, 0x23, 0xE6, 0x05, 0x10, 0x00, 0x14, 0x2E, 0x94, 0x0B, 0x03, 0xAB, 0x33, 0x01, 0xA3, 0x04, + 0x26, 0x9B, 0xD9, 0xA1, 0x2D, 0x10, 0x04, 0x2C, 0x03, 0x10, 0x3F, 0x48, 0x00, 0x34, 0xFE, 0x21, + 0x00, 0x4C, 0x12, 0x45, 0xE2, 0x02, 0x12, 0xF8, 0x9F, 0x05, 0x12, 0xA5, 0xF6, 0x01, 0x00, 0x28, + 0x03, 0x10, 0xE8, 0x57, 0x00, 0x22, 0x0D, 0xF6, 0xA4, 0x0A, 0x14, 0x39, 0x18, 0x31, 0x22, 0x60, + 0xFF, 0x91, 0x4D, 0x23, 0x01, 0xD1, 0xAE, 0x00, 0x14, 0xBE, 0xD7, 0x07, 0x12, 0x69, 0x9B, 0x04, + 0x15, 0x1F, 0x12, 0x3B, 0x21, 0x0E, 0xF4, 0x4D, 0x00, 0x00, 0xD8, 0x04, 0x02, 0xA0, 0x6E, 0x10, + 0x00, 0xDF, 0x31, 0x42, 0xEA, 0x07, 0x10, 0x10, 0xE4, 0x01, 0x62, 0x87, 0xFC, 0xFC, 0xFC, 0xF2, + 0x08, 0xCA, 0x00, 0x55, 0xFC, 0xFC, 0xFC, 0xA6, 0x3B, 0xB7, 0x4C, 0x11, 0x1B, 0xAD, 0x0D, 0x01, + 0x38, 0x48, 0x23, 0x90, 0x00, 0x0E, 0x2B, 0x44, 0xFB, 0x10, 0x00, 0x9C, 0xBF, 0x7E, 0x12, 0xA8, + 0x3D, 0x33, 0x22, 0x4C, 0xFF, 0xD8, 0x01, 0x22, 0x03, 0xED, 0xCA, 0x14, 0x01, 0xD1, 0x40, 0x13, + 0x6F, 0xDD, 0x10, 0x22, 0x1E, 0x00, 0x33, 0x15, 0x12, 0xBA, 0x1B, 0x0E, 0x23, 0xCE, 0x00, 0xAC, + 0x36, 0x43, 0xF9, 0x0C, 0x00, 0xC3, 0x2C, 0x36, 0x20, 0x00, 0x13, 0x2E, 0x01, 0x35, 0x4E, 0x0F, + 0xFC, 0x6E, 0x38, 0x00, 0xD6, 0x2D, 0x10, 0x99, 0x22, 0x05, 0x25, 0xE0, 0x01, 0x83, 0x1E, 0x26, + 0xE3, 0x98, 0x1C, 0x0E, 0x01, 0xB1, 0x27, 0x17, 0xF4, 0xFB, 0x0A, 0x03, 0x7D, 0x4D, 0x14, 0xEF, + 0x83, 0x01, 0x12, 0x81, 0x10, 0x00, 0x18, 0xA3, 0x3E, 0x4C, 0x08, 0x52, 0x32, 0x11, 0x01, 0x49, + 0x33, 0x16, 0xF9, 0xAD, 0x4B, 0x14, 0x93, 0xD1, 0x1A, 0x06, 0x59, 0x3B, 0x03, 0xE6, 0x7E, 0x25, + 0x00, 0x00, 0xD0, 0x0D, 0x1F, 0x64, 0x10, 0x00, 0x82, 0x35, 0x0E, 0x0D, 0x1C, 0xE4, 0x43, 0x04, + 0x57, 0x0B, 0x27, 0x3C, 0x7C, 0x43, 0x08, 0x09, 0x0D, 0x00, 0x22, 0x2A, 0x21, 0x0B, 0x23, 0x00, + 0x40, 0x0D, 0x13, 0xDA, 0x05, 0x07, 0x18, 0x29, 0x5D, 0x3D, 0x18, 0x7C, 0xF5, 0x39, 0x00, 0x24, + 0x05, 0x13, 0xDB, 0x26, 0x00, 0x27, 0x23, 0xFF, 0x5E, 0x2F, 0x14, 0x76, 0x08, 0x0D, 0x04, 0x97, + 0x1F, 0x27, 0xDC, 0x01, 0xC7, 0x06, 0x04, 0x56, 0x4B, 0x18, 0x71, 0x83, 0x2F, 0x00, 0x7D, 0x08, + 0x02, 0x35, 0x5F, 0x03, 0x5A, 0x02, 0x18, 0x89, 0xB7, 0x03, 0x16, 0x34, 0x49, 0x44, 0x23, 0xFF, + 0xDF, 0x26, 0x00, 0x24, 0x17, 0xFD, 0xF2, 0x26, 0x04, 0x57, 0x29, 0x03, 0xA2, 0x37, 0x27, 0x00, + 0xBB, 0x26, 0x00, 0x25, 0x13, 0xFC, 0x80, 0x09, 0x02, 0xC0, 0x08, 0x26, 0xFF, 0x36, 0x0E, 0x3D, + 0x04, 0x42, 0x02, 0x34, 0x00, 0x10, 0xFA, 0xC2, 0x10, 0x03, 0x45, 0x47, 0x27, 0xFF, 0x37, 0xC4, + 0x4D, 0x23, 0xF1, 0x3D, 0xDD, 0x31, 0x18, 0xD8, 0x7B, 0x09, 0x0F, 0x0D, 0x00, 0x07, 0x22, 0x0B, + 0x09, 0x68, 0x12, 0x13, 0x19, 0x70, 0x01, 0x23, 0xD5, 0x19, 0x1A, 0x00, 0x10, 0xD8, 0x09, 0x00, + 0x63, 0xE6, 0x14, 0x14, 0x14, 0x11, 0x19, 0x6E, 0x2A, 0x1F, 0x00, 0x09, 0x00, 0x11, 0x1F, 0x1A, + 0x09, 0x00, 0x02, 0x1F, 0xE2, 0x09, 0x00, 0x27, 0x18, 0x1B, 0x09, 0x00, 0x1F, 0xE1, 0x09, 0x00, + 0x27, 0x14, 0x1C, 0xCC, 0x30, 0x0F, 0x09, 0x00, 0x1E, 0x63, 0xE2, 0x10, 0x10, 0x10, 0x0E, 0x1C, + 0x17, 0x01, 0x15, 0xD4, 0x09, 0x00, 0x06, 0x70, 0x46, 0x46, 0xB0, 0xFC, 0xFC, 0x71, 0x19, 0x0F, + 0x04, 0x30, 0x4D, 0x16, 0x29, 0x73, 0x45, 0x00, 0x89, 0x45, 0x16, 0x41, 0x9F, 0x45, 0x04, 0x7B, + 0x02, 0x16, 0x59, 0x92, 0x39, 0x00, 0xCB, 0x45, 0x16, 0x13, 0xE1, 0x45, 0x04, 0xA2, 0x09, 0x16, + 0x89, 0x0C, 0x2D, 0x16, 0x43, 0x02, 0x02, 0x23, 0x08, 0xF7, 0x7E, 0x06, 0x02, 0xC6, 0x2B, 0x16, + 0x6A, 0x3B, 0x50, 0x16, 0xB0, 0xB9, 0x05, 0x26, 0xF1, 0x04, 0x57, 0x3A, 0x25, 0x3A, 0x00, 0xC9, + 0x39, 0x13, 0x7F, 0x0B, 0x00, 0x16, 0x5E, 0xE0, 0x2D, 0x16, 0x1A, 0xBD, 0x46, 0x25, 0x00, 0xD3, + 0x72, 0x0A, 0x00, 0xE1, 0x15, 0x16, 0x94, 0x39, 0x0A, 0x04, 0x18, 0x1D, 0x23, 0x0B, 0xF9, 0xBF, + 0x2C, 0x02, 0xAA, 0x05, 0x13, 0x63, 0x0B, 0x00, 0x11, 0x79, 0x4C, 0x2C, 0x02, 0x31, 0x46, 0x33, + 0xFF, 0xFF, 0xEC, 0x86, 0x06, 0x00, 0x6B, 0x3B, 0x16, 0x33, 0x86, 0x52, 0x04, 0xBB, 0x0D, 0x80, + 0x63, 0xFF, 0xFF, 0xBD, 0x0B, 0x09, 0x22, 0x00, 0x78, 0x02, 0x13, 0x47, 0x78, 0x02, 0x25, 0xAA, + 0x48, 0xE7, 0x10, 0x44, 0x14, 0x14, 0x14, 0x66, 0x42, 0x08, 0x1F, 0x58, 0x09, 0x00, 0x2B, 0x1F, + 0x57, 0x09, 0x00, 0x34, 0x1F, 0x56, 0x09, 0x00, 0x2B, 0x1F, 0x55, 0x09, 0x00, 0x1E, 0x40, 0x05, + 0x10, 0x10, 0x10, 0x1A, 0x07, 0x15, 0xAC, 0x17, 0x01, 0x05, 0x09, 0x00, 0x46, 0x00, 0x00, 0x0F, + 0x0E, 0xF4, 0x4A, 0x54, 0x88, 0xFC, 0xFC, 0xFC, 0xDD, 0xF5, 0x07, 0x28, 0x06, 0xEA, 0xAE, 0x3D, + 0x01, 0x19, 0x0B, 0x26, 0xFF, 0xAE, 0x69, 0x04, 0x00, 0x3E, 0x76, 0x02, 0xD6, 0x41, 0x10, 0x22, + 0xA4, 0x13, 0x04, 0xC3, 0x0C, 0x01, 0x5E, 0x11, 0x62, 0x21, 0xC8, 0xFF, 0xFF, 0xDF, 0x02, 0x18, + 0x66, 0x43, 0xFF, 0xCB, 0x00, 0x73, 0x48, 0x00, 0x11, 0x51, 0x69, 0x32, 0x00, 0x0B, 0x05, 0x13, + 0xAD, 0x52, 0x08, 0x11, 0x23, 0xAA, 0x4B, 0x52, 0xFB, 0x19, 0x00, 0x1F, 0xFE, 0x05, 0x07, 0x11, + 0x74, 0x48, 0x00, 0x13, 0x82, 0x4E, 0x00, 0x00, 0x1E, 0x0A, 0x61, 0xDF, 0x02, 0x6B, 0x84, 0x84, + 0x84, 0x26, 0x02, 0x90, 0x73, 0x84, 0x84, 0x84, 0x18, 0x0C, 0x0C, 0x04, 0x00, 0xCC, 0x33, 0x16, + 0x40, 0x01, 0x00, 0x17, 0x31, 0x84, 0x04, 0x1F, 0xC4, 0x0C, 0x00, 0x05, 0x40, 0x0A, 0x08, 0x08, + 0x01, 0x34, 0x09, 0x63, 0x1B, 0xF2, 0xFC, 0xFC, 0xFC, 0x5E, 0xBB, 0x11, 0x00, 0xA3, 0x21, 0x23, + 0x0B, 0xE5, 0x9D, 0x43, 0x13, 0x5D, 0x4A, 0x05, 0x22, 0x02, 0xCA, 0xCE, 0x4D, 0x24, 0x00, 0x3A, + 0xD7, 0x02, 0x13, 0xA8, 0xD4, 0x02, 0x74, 0x02, 0x04, 0x04, 0x01, 0x0F, 0x0D, 0x14, 0xDC, 0x35, + 0x70, 0x4D, 0xAE, 0xE1, 0xF9, 0xF3, 0xCB, 0x77, 0x58, 0x09, 0x13, 0x05, 0xB5, 0x12, 0x33, 0xFF, + 0xD1, 0x11, 0x2C, 0x06, 0x12, 0xFF, 0x4F, 0x44, 0x10, 0x08, 0x35, 0x0D, 0x20, 0xAE, 0x4C, 0x8C, + 0x0C, 0x32, 0xF5, 0x09, 0x3C, 0x8B, 0x2E, 0x01, 0xB0, 0x00, 0x22, 0x39, 0x68, 0x99, 0x23, 0x01, + 0xFD, 0x1C, 0x62, 0x56, 0x4F, 0xA8, 0xA8, 0xA8, 0x91, 0xC0, 0x51, 0x28, 0xFF, 0x5C, 0x7D, 0x45, + 0x01, 0x0D, 0x00, 0x35, 0x07, 0x61, 0xCC, 0x18, 0x0D, 0x25, 0x4D, 0xE0, 0x06, 0x56, 0x10, 0x04, + 0xFC, 0x07, 0x22, 0xEE, 0x5A, 0x0D, 0x00, 0x00, 0x12, 0x12, 0x22, 0xE3, 0x24, 0x41, 0x00, 0x12, + 0x2A, 0x77, 0x15, 0x02, 0x0D, 0x00, 0x12, 0x78, 0x4F, 0x0A, 0x02, 0x5B, 0x00, 0x12, 0xA5, 0x2C, + 0x0B, 0x02, 0x0D, 0x00, 0x12, 0xB1, 0x0A, 0x0C, 0x01, 0xB6, 0x22, 0x11, 0x5E, 0x4B, 0x15, 0x21, + 0x75, 0x56, 0xAA, 0x12, 0x23, 0x68, 0x3B, 0x58, 0x0F, 0x11, 0xDA, 0x89, 0x01, 0x12, 0xA0, 0x93, + 0x49, 0x11, 0xA3, 0x73, 0x0C, 0x70, 0x04, 0x7B, 0xE1, 0xFC, 0xD1, 0x66, 0x01, 0xA9, 0x01, 0x14, + 0xA9, 0xE8, 0x36, 0x10, 0x3C, 0x75, 0x03, 0x19, 0x47, 0x35, 0x46, 0x1F, 0x48, 0x0E, 0x00, 0x4F, + 0x63, 0x2E, 0xA9, 0xEC, 0xF4, 0xB5, 0x28, 0x0E, 0x00, 0x11, 0xA5, 0x33, 0x0C, 0x47, 0xED, 0x1E, + 0x00, 0x3C, 0xF5, 0x01, 0x12, 0x99, 0x0E, 0x00, 0x30, 0xEB, 0x72, 0x56, 0xE8, 0x36, 0x21, 0xF0, + 0x04, 0x0E, 0x00, 0x13, 0x4F, 0x35, 0x07, 0x14, 0x2D, 0x54, 0x00, 0x01, 0x91, 0x09, 0x14, 0x4E, + 0x0E, 0x00, 0x01, 0xF6, 0x07, 0x14, 0x5B, 0x0E, 0x00, 0x01, 0xC8, 0x17, 0x1F, 0x5C, 0x0E, 0x00, + 0x3B, 0x01, 0x9E, 0x01, 0x14, 0x58, 0x0E, 0x00, 0x01, 0xBE, 0x28, 0x14, 0x44, 0x0E, 0x00, 0x02, + 0x87, 0x3C, 0x01, 0x0E, 0x00, 0x30, 0xBF, 0x5C, 0x4B, 0x7F, 0x01, 0x28, 0xE3, 0x01, 0xD2, 0x00, + 0x12, 0x88, 0xD2, 0x00, 0x02, 0x4E, 0x43, 0x22, 0xDD, 0x13, 0x0E, 0x00, 0x70, 0x49, 0x51, 0xC2, + 0xF8, 0xEE, 0xA6, 0x1D, 0xF4, 0x08, 0x04, 0x9C, 0x02, 0x81, 0x07, 0x6D, 0xC3, 0xED, 0xFB, 0xEB, + 0xC2, 0x6E, 0x6A, 0x45, 0x04, 0xD8, 0x27, 0x23, 0xCD, 0x0E, 0xFD, 0x2F, 0x03, 0xF3, 0x15, 0x10, + 0x16, 0x47, 0x0D, 0x20, 0xAA, 0x4B, 0xEA, 0x07, 0x32, 0xEB, 0x03, 0x59, 0xCE, 0x3C, 0x01, 0x94, + 0x0E, 0x22, 0x21, 0x82, 0xEE, 0x15, 0x10, 0x01, 0x2F, 0x16, 0x23, 0x3C, 0x9B, 0xF6, 0x06, 0x00, + 0x5A, 0x0A, 0x23, 0x40, 0xA0, 0xCD, 0x06, 0x54, 0x8A, 0x90, 0x90, 0x90, 0x24, 0x0D, 0x00, 0x05, + 0x3A, 0x48, 0x0F, 0x0D, 0x00, 0x18, 0x59, 0xD2, 0xDC, 0xDC, 0xDC, 0x37, 0x5B, 0x00, 0x21, 0x83, + 0xFF, 0x81, 0x54, 0x10, 0x01, 0xF0, 0x0B, 0x13, 0x3B, 0x8F, 0x00, 0x01, 0x41, 0x08, 0x11, 0x1E, + 0xA9, 0x00, 0x20, 0xA5, 0x43, 0x0E, 0x17, 0x45, 0xE5, 0x02, 0x00, 0x9F, 0xC3, 0x00, 0x44, 0x7F, + 0x00, 0x00, 0x13, 0xEF, 0x0C, 0x10, 0xC2, 0x87, 0x03, 0xC3, 0x08, 0x71, 0xC6, 0xF1, 0xFE, 0xED, + 0xC1, 0x68, 0x04, 0x00, 0x00, 0x10, 0x00, 0x0A, 0x04, 0x01, 0x00, 0x00, 0x70, 0x68, 0x18, 0xE1, + 0x85, 0x00, 0x1F, 0xE4, 0x0D, 0x00, 0x3D, 0x62, 0x35, 0xB6, 0xF1, 0xEF, 0xAE, 0x2E, 0x0D, 0x00, + 0x11, 0x30, 0xF1, 0x0F, 0x21, 0xFA, 0xDE, 0x0D, 0x00, 0x16, 0xBF, 0xC0, 0x01, 0x11, 0xE4, 0xE3, + 0x09, 0x30, 0xCD, 0x4F, 0x77, 0x5D, 0x05, 0x22, 0xE4, 0x59, 0x35, 0x42, 0x02, 0x41, 0x00, 0x00, + 0x17, 0x0F, 0x23, 0xFB, 0x04, 0x0D, 0x00, 0x13, 0x92, 0x96, 0x47, 0x01, 0x5B, 0x00, 0x00, 0xE7, + 0x03, 0x1F, 0xF0, 0x0D, 0x00, 0x36, 0x00, 0x2F, 0x17, 0x14, 0xF2, 0x0D, 0x00, 0x00, 0xD7, 0x17, + 0x23, 0xFC, 0x02, 0x0D, 0x00, 0x13, 0x69, 0xEB, 0x20, 0x01, 0x0D, 0x00, 0x01, 0x59, 0x0E, 0x41, + 0xC5, 0x47, 0x67, 0xDF, 0x32, 0x1D, 0x17, 0xDB, 0xC3, 0x00, 0x22, 0x00, 0x4C, 0x5B, 0x19, 0x12, + 0xE9, 0xF7, 0x00, 0x61, 0x40, 0xBE, 0xF5, 0xF6, 0xBB, 0x3F, 0x34, 0x00, 0x06, 0x1C, 0x05, 0x80, + 0x05, 0x67, 0xBF, 0xEB, 0xFA, 0xEB, 0xBE, 0x67, 0x58, 0x05, 0x14, 0x0E, 0xD9, 0x2B, 0x28, 0xB3, + 0x05, 0xE5, 0x4D, 0x30, 0x72, 0x00, 0x13, 0x5F, 0x02, 0x11, 0xA9, 0x80, 0x02, 0x32, 0xDD, 0x01, + 0x56, 0xC2, 0x34, 0x01, 0x9D, 0x2B, 0x32, 0x22, 0x81, 0xFF, 0xBA, 0x10, 0x00, 0x57, 0x0F, 0x23, + 0x46, 0x9A, 0x7F, 0x0F, 0x00, 0x4F, 0x12, 0x10, 0x5C, 0x68, 0x00, 0x40, 0xDE, 0x24, 0x24, 0x24, + 0xA9, 0x0B, 0x27, 0x64, 0xA0, 0x1A, 0x03, 0x0E, 0x0D, 0x00, 0x14, 0xD9, 0x51, 0x46, 0x13, 0xA0, + 0x16, 0x57, 0x05, 0xAD, 0x01, 0x11, 0xD8, 0xF8, 0x5E, 0x43, 0x08, 0x08, 0x03, 0x9A, 0x0D, 0x00, + 0x00, 0x37, 0x21, 0x23, 0x60, 0x82, 0x9A, 0x02, 0x00, 0x9B, 0x01, 0x31, 0x57, 0x59, 0xFF, 0xB6, + 0x58, 0x01, 0x4D, 0x24, 0x20, 0x36, 0x17, 0xF1, 0x00, 0x20, 0xA2, 0x43, 0x88, 0x0F, 0x27, 0xF0, + 0x06, 0x80, 0x02, 0x53, 0x83, 0x00, 0x00, 0x13, 0xCF, 0x0C, 0x00, 0x10, 0xBC, 0x2C, 0x0E, 0x90, + 0x07, 0x6F, 0xC4, 0xEF, 0xFE, 0xEE, 0xC0, 0x63, 0x03, 0xD8, 0x61, 0x05, 0x6B, 0x59, 0x73, 0x01, + 0x54, 0xC1, 0xEE, 0xFA, 0xED, 0xB0, 0xE5, 0x37, 0x01, 0xEE, 0x09, 0x24, 0x02, 0xE8, 0x0A, 0x00, + 0x01, 0xD7, 0x4B, 0x33, 0xC5, 0x4E, 0x53, 0x5D, 0x0D, 0x14, 0x44, 0xEC, 0x07, 0x25, 0xFF, 0x29, + 0xC5, 0x3A, 0x10, 0x28, 0x8E, 0x52, 0x01, 0xAE, 0x1E, 0x44, 0xFD, 0xFC, 0xD1, 0x68, 0x7D, 0x00, + 0x16, 0xD4, 0x0A, 0x00, 0x31, 0x1C, 0x44, 0x85, 0xF6, 0x1E, 0x26, 0x44, 0x39, 0x32, 0x00, 0x0F, + 0x0A, 0x00, 0x85, 0x31, 0x0F, 0x10, 0x1B, 0xAC, 0x09, 0x0A, 0xCD, 0x38, 0x01, 0xC2, 0x0C, 0xF2, + 0x02, 0x02, 0x5C, 0xBC, 0xEC, 0xFA, 0xDE, 0x97, 0x1B, 0x00, 0x1A, 0xC2, 0xF6, 0x0F, 0x00, 0x00, + 0x06, 0xB1, 0xDF, 0x00, 0x31, 0xE3, 0x3B, 0xE1, 0x1B, 0x43, 0x14, 0x80, 0xF0, 0x00, 0x50, 0xFE, + 0xFF, 0xFF, 0xCD, 0x52, 0xFD, 0x71, 0x51, 0xFF, 0xFF, 0x8D, 0x4A, 0xA5, 0x13, 0x19, 0x12, 0x01, + 0xE4, 0x25, 0x30, 0xDD, 0x01, 0x00, 0x08, 0x2D, 0x14, 0xC6, 0x1E, 0x0F, 0x00, 0x3F, 0x0B, 0x13, + 0xE0, 0x9E, 0x79, 0x13, 0x8A, 0xBE, 0x25, 0x13, 0xCC, 0xE0, 0x37, 0x13, 0x8E, 0xF2, 0x12, 0x13, + 0xCB, 0xB9, 0x15, 0x13, 0x7E, 0x01, 0x1A, 0x13, 0xD8, 0x77, 0x0D, 0x12, 0x57, 0x2B, 0x38, 0x01, + 0x6B, 0x37, 0x00, 0x5E, 0x43, 0x10, 0x1B, 0x77, 0x0D, 0x35, 0x4C, 0x04, 0x68, 0xA6, 0x8E, 0x06, + 0x75, 0x4F, 0x02, 0xFA, 0x08, 0x14, 0x07, 0x70, 0x08, 0x23, 0xCD, 0x0A, 0x4D, 0x4F, 0x01, 0x09, + 0x29, 0x22, 0xF6, 0x98, 0x10, 0x0B, 0x84, 0x22, 0xF2, 0xFF, 0xD9, 0x06, 0x29, 0x41, 0x31, 0x87, + 0x11, 0x66, 0x85, 0xFF, 0xFF, 0xDD, 0x3C, 0x0A, 0x04, 0x01, 0x11, 0x9A, 0x3C, 0x00, 0x51, 0xEC, + 0xD1, 0xB6, 0x92, 0x52, 0x4C, 0x3E, 0x25, 0x3B, 0xFB, 0x60, 0x00, 0x11, 0xDC, 0x48, 0x45, 0x25, + 0x34, 0xE8, 0x11, 0x00, 0xE2, 0xDB, 0x05, 0x00, 0x00, 0x06, 0xA6, 0xFF, 0xFF, 0x95, 0x4E, 0x66, + 0x7E, 0xA6, 0xF0, 0xE0, 0x12, 0x54, 0x8E, 0xFF, 0xFF, 0xEE, 0x0C, 0x13, 0x12, 0x44, 0x6D, 0x00, + 0x11, 0xFC, 0xEA, 0x38, 0x11, 0x1E, 0x10, 0x00, 0x01, 0x91, 0x30, 0x61, 0x9D, 0x5C, 0x47, 0x43, + 0x61, 0xC6, 0x5E, 0x16, 0x27, 0x28, 0xFF, 0x01, 0x00, 0x22, 0xEB, 0x08, 0xB2, 0x37, 0x03, 0x0F, + 0x00, 0x11, 0xFA, 0xAE, 0x89, 0xB7, 0x3F, 0x9B, 0xD2, 0xEF, 0xFE, 0xFF, 0xFF, 0xF0, 0xD1, 0x91, + 0x26, 0xD4, 0x3E, 0x10, 0x30, 0xEC, 0x07, 0x18, 0x4B, 0xD5, 0x3D, 0x2F, 0xFF, 0x4C, 0x0E, 0x00, + 0x4F, 0x72, 0x05, 0x61, 0xC0, 0xF2, 0xEF, 0x98, 0x08, 0x0E, 0x00, 0x23, 0x71, 0xCC, 0xBB, 0x1D, + 0x08, 0xD1, 0x32, 0x21, 0xEE, 0x02, 0x0E, 0x00, 0x31, 0xFD, 0x92, 0x4E, 0xEF, 0x06, 0x11, 0x1D, + 0x0E, 0x00, 0x13, 0x6C, 0xFE, 0x2E, 0x14, 0x28, 0x54, 0x00, 0x19, 0x55, 0x0E, 0x00, 0x1F, 0x54, + 0x0E, 0x00, 0xA8, 0x45, 0x08, 0x06, 0x1B, 0x01, 0x31, 0x2D, 0x12, 0x63, 0xC9, 0x43, 0x08, 0x06, + 0x00, 0x1D, 0x01, 0x10, 0x43, 0x01, 0x2A, 0x00, 0x11, 0x5F, 0x1E, 0x00, 0x1F, 0x60, 0x06, 0x00, + 0x59, 0x00, 0x6C, 0x05, 0x23, 0x20, 0xFF, 0x80, 0x3F, 0x22, 0xD5, 0xFC, 0xBF, 0x56, 0x12, 0xD8, + 0x19, 0x51, 0x0D, 0x08, 0x00, 0x26, 0x04, 0x04, 0x1B, 0x56, 0x08, 0x01, 0x00, 0x10, 0xD1, 0xD7, + 0x0D, 0x03, 0x98, 0x17, 0x1F, 0xAC, 0x08, 0x00, 0x78, 0x12, 0xD5, 0x08, 0x00, 0x10, 0x03, 0x3D, + 0x3B, 0x31, 0xA5, 0x29, 0x46, 0x85, 0x06, 0x12, 0x7E, 0x5B, 0x2A, 0x33, 0xFE, 0x2A, 0x78, 0xAB, + 0x47, 0xA7, 0x5E, 0xE7, 0xFE, 0xF5, 0xC4, 0x57, 0x01, 0x00, 0x10, 0x0F, 0x30, 0x0B, 0x29, 0x3F, + 0x00, 0xCF, 0x0A, 0x1F, 0x40, 0x0F, 0x00, 0x59, 0x01, 0x29, 0x0F, 0x14, 0x9D, 0x0F, 0x00, 0x10, + 0x07, 0x68, 0x0A, 0x24, 0xF2, 0x19, 0x0F, 0x00, 0x12, 0x78, 0xBA, 0x46, 0x03, 0x0F, 0x00, 0x10, + 0x1C, 0x00, 0x05, 0x24, 0xDA, 0x06, 0x0F, 0x00, 0x13, 0xA9, 0xBA, 0x2D, 0x02, 0x4B, 0x00, 0x14, + 0x42, 0x20, 0x14, 0x01, 0x0F, 0x00, 0x10, 0x45, 0x0D, 0x01, 0x24, 0xFA, 0x27, 0x0F, 0x00, 0x15, + 0xB2, 0x02, 0x1C, 0x15, 0x3C, 0xA6, 0x03, 0x1A, 0x6B, 0x0F, 0x00, 0x16, 0xCC, 0x0F, 0x00, 0x14, + 0xAA, 0x78, 0x3D, 0x01, 0x0F, 0x00, 0x11, 0xCD, 0x4F, 0x54, 0x14, 0x90, 0x0F, 0x00, 0x11, 0x4B, + 0x8B, 0x5B, 0x25, 0xED, 0x07, 0xC3, 0x00, 0x13, 0x27, 0xE2, 0x16, 0x04, 0xD2, 0x00, 0x12, 0xCE, + 0xED, 0x05, 0x04, 0x0F, 0x00, 0x00, 0xAC, 0x2D, 0x25, 0xFE, 0x1D, 0x0F, 0x00, 0x21, 0x1E, 0xFF, + 0xB0, 0x49, 0x05, 0xFF, 0x00, 0x00, 0x63, 0x15, 0x25, 0xDD, 0x02, 0x0F, 0x00, 0x02, 0x6C, 0x55, + 0x05, 0x0F, 0x00, 0x10, 0x15, 0xEE, 0x07, 0x23, 0xA3, 0x08, 0x28, 0x31, 0x00, 0x2A, 0x46, 0x10, + 0x86, 0x12, 0x00, 0x1F, 0x88, 0x05, 0x00, 0x6F, 0x22, 0x18, 0x16, 0x60, 0x09, 0x01, 0xBF, 0x01, + 0xF3, 0x00, 0x04, 0x28, 0x9C, 0xDF, 0xF9, 0xD4, 0x58, 0x00, 0x00, 0x24, 0x99, 0xDE, 0xF9, 0xD5, + 0x54, 0xAE, 0x47, 0x12, 0x68, 0xDC, 0x17, 0x33, 0x42, 0x5A, 0xF8, 0x6F, 0x19, 0x07, 0xC4, 0x47, + 0x14, 0xFF, 0x28, 0x49, 0x12, 0xBF, 0x16, 0x00, 0x31, 0xF2, 0x7E, 0x4E, 0x66, 0x38, 0x30, 0xF1, + 0x7D, 0x4E, 0x88, 0x24, 0x33, 0xF8, 0x02, 0x48, 0x78, 0x08, 0x12, 0x4D, 0x89, 0x18, 0x02, 0x8E, + 0x1B, 0x11, 0x0F, 0x16, 0x00, 0x13, 0x04, 0x66, 0x17, 0x13, 0x0C, 0x5B, 0x2F, 0x14, 0x10, 0x16, + 0x00, 0x13, 0x38, 0x16, 0x00, 0x1F, 0x3C, 0x16, 0x00, 0xFF, 0x11, 0x27, 0x10, 0x0E, 0xC0, 0x01, + 0x82, 0x3C, 0x0A, 0x6F, 0xC8, 0xF5, 0xEA, 0x83, 0x02, 0x8C, 0x01, 0x23, 0x76, 0xDD, 0x8D, 0x28, + 0x08, 0xB0, 0x01, 0x12, 0xBE, 0x0E, 0x00, 0x30, 0xF8, 0x85, 0x54, 0xC0, 0x0E, 0x33, 0xF5, 0x00, + 0x48, 0xAE, 0x17, 0x11, 0x8F, 0x5E, 0x00, 0x12, 0x48, 0x99, 0x3D, 0x29, 0x00, 0x81, 0x0E, 0x00, + 0x1F, 0x80, 0x0E, 0x00, 0xA8, 0x06, 0x40, 0x0C, 0x80, 0x04, 0x64, 0xBE, 0xEB, 0xFA, 0xE9, 0xB9, + 0x5C, 0x83, 0x03, 0x14, 0x0E, 0x58, 0x09, 0x22, 0xB8, 0x09, 0x45, 0x1F, 0x13, 0xFF, 0x36, 0x1E, + 0x10, 0x1A, 0x92, 0x09, 0x20, 0xA6, 0x4C, 0x27, 0x0A, 0x20, 0xFA, 0x12, 0xE3, 0x16, 0x22, 0xFC, + 0x0D, 0x1D, 0x2A, 0x23, 0x58, 0x8A, 0x74, 0x1F, 0x00, 0xCB, 0x0B, 0x22, 0x80, 0x9E, 0x72, 0x2E, + 0x01, 0xD8, 0x3F, 0x23, 0x96, 0xA0, 0xBD, 0x1D, 0x00, 0x46, 0x11, 0x1F, 0x98, 0x0D, 0x00, 0x2E, + 0x13, 0x9F, 0x0D, 0x00, 0x01, 0x5B, 0x00, 0x13, 0x8B, 0x1A, 0x0A, 0x00, 0x18, 0x0D, 0x10, 0x82, + 0x51, 0x22, 0x22, 0xF9, 0x0A, 0x8F, 0x00, 0x11, 0x5A, 0x2B, 0x32, 0x41, 0xA3, 0x44, 0xA5, 0xFF, + 0xB8, 0x1B, 0x17, 0xA2, 0xF8, 0x47, 0x24, 0x00, 0x12, 0x9D, 0x0F, 0x10, 0xC1, 0xBC, 0x09, 0x70, + 0x06, 0x6B, 0xC3, 0xEF, 0xFE, 0xEC, 0xBF, 0x40, 0x0C, 0x55, 0x10, 0x0E, 0x1A, 0x01, 0xFA, 0x2C, + 0x02, 0x63, 0x3D, 0xB2, 0xEE, 0xF2, 0xB0, 0x23, 0xE4, 0x03, 0x02, 0x8A, 0x30, 0x29, 0xE8, 0x17, + 0x2C, 0x02, 0x12, 0x8D, 0x0E, 0x00, 0x30, 0xE8, 0x6E, 0x5A, 0x80, 0x00, 0x33, 0xE6, 0x01, 0x48, + 0x4E, 0x0C, 0x01, 0x64, 0x3D, 0x14, 0x21, 0x68, 0x01, 0x11, 0x3F, 0x1D, 0x04, 0x04, 0x0E, 0x00, + 0x01, 0x89, 0x12, 0x14, 0x4F, 0x0E, 0x00, 0x01, 0x60, 0x08, 0x1F, 0x50, 0x0E, 0x00, 0x3B, 0x01, + 0x1B, 0x4F, 0x14, 0x4C, 0x0E, 0x00, 0x01, 0x2F, 0x06, 0x14, 0x38, 0x0E, 0x00, 0x01, 0x79, 0x67, + 0x11, 0x16, 0x0E, 0x00, 0x41, 0xB9, 0x59, 0x4E, 0xE2, 0xE7, 0x5B, 0x08, 0xD2, 0x00, 0x12, 0x7C, + 0x0E, 0x00, 0x02, 0x86, 0x65, 0x22, 0xD6, 0x0E, 0x0E, 0x00, 0x94, 0x3C, 0x45, 0xBF, 0xF8, 0xEB, + 0xA1, 0x18, 0x00, 0x00, 0x46, 0x00, 0x02, 0x01, 0x00, 0x0F, 0x0E, 0x00, 0x33, 0x22, 0x10, 0x0D, + 0x74, 0x01, 0x90, 0x00, 0x00, 0x2E, 0xB5, 0xF1, 0xF1, 0xB7, 0x40, 0x92, 0x24, 0x37, 0x11, 0x00, + 0x28, 0x99, 0x01, 0xE1, 0x5F, 0x46, 0xFF, 0xF0, 0x00, 0xBD, 0xA0, 0x00, 0x11, 0xF0, 0x57, 0x06, + 0x31, 0xCE, 0x50, 0x74, 0x1A, 0x00, 0x13, 0x5B, 0xCC, 0x0F, 0x00, 0x79, 0x1E, 0x23, 0xF0, 0x7E, + 0xCC, 0x0F, 0x01, 0x0D, 0x00, 0x13, 0x8F, 0xCC, 0x0F, 0x01, 0x0D, 0x00, 0x01, 0x05, 0x00, 0x0F, + 0x0D, 0x00, 0x36, 0x13, 0x91, 0xCC, 0x0F, 0x01, 0x0D, 0x00, 0x13, 0x81, 0xCC, 0x0F, 0x01, 0x0D, + 0x00, 0x13, 0x66, 0xB0, 0x1A, 0x01, 0x0D, 0x00, 0x01, 0xE8, 0x01, 0x31, 0xCA, 0x49, 0x67, 0x6D, + 0x37, 0x27, 0x01, 0xD9, 0xC3, 0x00, 0x03, 0xCC, 0x0F, 0x22, 0xF9, 0xD5, 0x56, 0x00, 0x64, 0x40, + 0xBD, 0xF4, 0xF5, 0xB3, 0x30, 0x63, 0x00, 0x05, 0x49, 0x1F, 0x0F, 0x0D, 0x00, 0x31, 0x36, 0x0B, + 0x0A, 0x14, 0x58, 0x25, 0x51, 0x4B, 0x03, 0x74, 0xDA, 0xF8, 0x1C, 0x05, 0x64, 0x4D, 0x9D, 0xFF, + 0xFF, 0xFC, 0x38, 0xD6, 0x02, 0x02, 0x0A, 0x00, 0x16, 0xFF, 0x0A, 0x00, 0x41, 0xBC, 0x31, 0x0A, + 0x49, 0x0A, 0x00, 0x24, 0xD1, 0x0A, 0xDC, 0x2D, 0x15, 0x55, 0xE6, 0x2D, 0x1F, 0x4C, 0x0A, 0x00, + 0x69, 0x25, 0x0D, 0x0D, 0xB8, 0x9E, 0x73, 0x2D, 0xA2, 0xE2, 0xFA, 0xE7, 0xA8, 0x2E, 0xDF, 0x7D, + 0x01, 0xB8, 0x00, 0x10, 0xFB, 0xF5, 0x54, 0x14, 0x28, 0x6E, 0x29, 0x22, 0xF4, 0x1F, 0x2E, 0x0E, + 0x41, 0xD3, 0x54, 0x80, 0xFE, 0xF6, 0x03, 0x12, 0xC6, 0x45, 0x09, 0x10, 0x90, 0xA9, 0x03, 0x22, + 0x00, 0xCF, 0xFE, 0x21, 0x51, 0x26, 0xFF, 0xB6, 0x49, 0x01, 0x4A, 0x29, 0x55, 0xF7, 0x38, 0x00, + 0x00, 0x21, 0x23, 0x45, 0x26, 0xF3, 0x42, 0x71, 0x19, 0x33, 0xFF, 0xFF, 0xF9, 0xF0, 0x4F, 0x11, + 0x09, 0xC6, 0x41, 0x13, 0xFD, 0x33, 0x19, 0x35, 0x0B, 0xB2, 0xFF, 0x21, 0x37, 0x32, 0x00, 0x00, + 0x03, 0xC4, 0x6B, 0x03, 0xF8, 0x09, 0x11, 0x01, 0x95, 0x1C, 0x10, 0xD7, 0x8F, 0x73, 0x23, 0x41, + 0x17, 0x6A, 0x05, 0x40, 0x35, 0x13, 0x81, 0xE0, 0x94, 0x1E, 0x21, 0x02, 0xD7, 0x9F, 0x04, 0x00, + 0x2D, 0x11, 0x12, 0x06, 0x44, 0x5C, 0x11, 0x54, 0x53, 0x6B, 0x32, 0xBA, 0x49, 0x7C, 0x14, 0x21, + 0x15, 0x36, 0xAE, 0x51, 0x00, 0x80, 0x33, 0x13, 0x63, 0x1F, 0x47, 0x11, 0xD4, 0x05, 0x46, 0xD3, + 0x30, 0xA3, 0xE4, 0xFE, 0xF2, 0xC5, 0x6D, 0x08, 0x00, 0x00, 0x0B, 0x0B, 0x1A, 0xA4, 0x00, 0x66, + 0x3E, 0x7C, 0x7C, 0x7C, 0x7C, 0x04, 0x91, 0x9C, 0x1F, 0x08, 0x0B, 0x00, 0x1C, 0x14, 0x63, 0xE8, + 0x10, 0x34, 0xE9, 0x00, 0x64, 0x7A, 0x00, 0x18, 0xEC, 0x0B, 0x00, 0x21, 0x1B, 0x44, 0x3F, 0x05, + 0x3E, 0x4A, 0x44, 0x3F, 0x63, 0x00, 0x0F, 0x0B, 0x00, 0x4C, 0x14, 0x7F, 0x1D, 0x52, 0x03, 0xB3, + 0x2A, 0x25, 0x1D, 0x00, 0xE3, 0x41, 0x70, 0xAE, 0x45, 0x4A, 0x0C, 0x00, 0x00, 0x0A, 0xBB, 0x45, + 0x03, 0x57, 0x22, 0x16, 0x73, 0x0B, 0x00, 0x80, 0x00, 0x62, 0xCC, 0xF7, 0xFC, 0xF1, 0xDD, 0x1B, + 0x60, 0x04, 0x16, 0x14, 0xE0, 0x70, 0x12, 0x18, 0xDC, 0x55, 0x23, 0xCD, 0x68, 0x56, 0x47, 0x00, + 0x07, 0x13, 0x1F, 0xD0, 0x0D, 0x00, 0x9B, 0x12, 0x26, 0x60, 0x48, 0x11, 0xD0, 0xFC, 0x04, 0x30, + 0x9F, 0x46, 0x99, 0x1F, 0x02, 0x27, 0xD0, 0x25, 0xC3, 0x05, 0x22, 0xD0, 0x01, 0xDF, 0x06, 0x21, + 0xB3, 0xC3, 0x3C, 0x58, 0x71, 0x21, 0xBF, 0xFA, 0xEC, 0xB2, 0x4A, 0x01, 0x41, 0x00, 0x04, 0x40, + 0x03, 0x13, 0x7C, 0x98, 0x15, 0x00, 0x64, 0x71, 0x10, 0xD6, 0x8A, 0x23, 0x22, 0xFE, 0x08, 0x0C, + 0x11, 0x23, 0xAA, 0x1E, 0x17, 0x59, 0x00, 0xD6, 0x1E, 0x32, 0x7B, 0x01, 0xEF, 0x21, 0x17, 0x11, + 0xDC, 0x3A, 0x03, 0x11, 0xBF, 0xE9, 0x49, 0x01, 0x27, 0x24, 0x11, 0x1C, 0x0E, 0x09, 0x11, 0x8B, + 0xE4, 0x0B, 0x21, 0xED, 0x01, 0x02, 0x22, 0x32, 0xAC, 0x00, 0x3F, 0xF2, 0x6C, 0x11, 0x30, 0x90, + 0x2D, 0x12, 0x60, 0x63, 0x26, 0x51, 0x07, 0xFB, 0xFF, 0xFF, 0xEE, 0x2D, 0x09, 0x13, 0x5F, 0x1B, + 0x21, 0x23, 0x10, 0xA2, 0xD4, 0x1F, 0x00, 0x51, 0x22, 0x63, 0x31, 0xC3, 0xFF, 0xFF, 0xFB, 0x07, + 0xC9, 0x22, 0x21, 0x52, 0xE4, 0x71, 0x37, 0x02, 0xB2, 0x06, 0x22, 0x7B, 0xFE, 0x66, 0x4C, 0x01, + 0x79, 0x32, 0x24, 0xBA, 0xFF, 0xE7, 0x62, 0x45, 0xE3, 0xFF, 0xFF, 0xF6, 0xC0, 0x58, 0x15, 0xB3, + 0x36, 0x49, 0x03, 0x81, 0x54, 0x05, 0xA0, 0x27, 0x01, 0xD6, 0x58, 0x04, 0x44, 0x21, 0x01, 0xC1, + 0x50, 0x04, 0x08, 0x20, 0x24, 0x02, 0xF3, 0xB4, 0x5C, 0x22, 0x14, 0x13, 0x0C, 0x01, 0x10, 0x1A, + 0x59, 0x89, 0x02, 0xC7, 0x26, 0x00, 0xF1, 0x59, 0x40, 0xD7, 0xFC, 0xFC, 0xB2, 0x00, 0x4D, 0x12, + 0xBC, 0xC4, 0x26, 0x12, 0xBC, 0x19, 0x25, 0x10, 0x8E, 0x5A, 0x23, 0x12, 0xDC, 0x39, 0x14, 0x12, + 0xE1, 0x24, 0x1B, 0x31, 0x68, 0x00, 0xAA, 0xB8, 0x24, 0x12, 0x54, 0xA2, 0x02, 0x11, 0x43, 0x6C, + 0x67, 0x11, 0x85, 0xA3, 0x02, 0x12, 0x7C, 0xD4, 0x15, 0x11, 0x66, 0x71, 0x5A, 0x11, 0x60, 0xEB, + 0x12, 0x12, 0xA4, 0xDD, 0x31, 0x11, 0x89, 0x62, 0x25, 0x11, 0x3A, 0xE8, 0x3B, 0x12, 0xCD, 0xFF, + 0x2A, 0x11, 0xAC, 0xBF, 0x2E, 0x00, 0x2F, 0x26, 0x30, 0x7E, 0x02, 0xF5, 0xDE, 0x00, 0x10, 0x9E, + 0x9D, 0x04, 0x12, 0xA7, 0x1C, 0x4A, 0xA2, 0x9E, 0x1D, 0xFF, 0xFF, 0xB1, 0xFA, 0xFF, 0xC4, 0x01, + 0xF2, 0xA8, 0x40, 0xC3, 0xCA, 0xFF, 0xFF, 0xBF, 0x45, 0xFF, 0xFF, 0x7F, 0xD4, 0xFF, 0xE9, 0x14, + 0x6A, 0x27, 0xC2, 0xA4, 0xFF, 0xFF, 0xDF, 0x6D, 0xFF, 0xFF, 0x52, 0xA9, 0xFF, 0xFF, 0x46, 0x0E, + 0x07, 0x00, 0x35, 0x03, 0x92, 0xFC, 0x99, 0xFF, 0xFF, 0x25, 0x7E, 0xFF, 0xFF, 0x8E, 0x47, 0x4D, + 0x01, 0x9B, 0x4A, 0xB4, 0xDE, 0xFF, 0xF6, 0x03, 0x53, 0xFF, 0xFF, 0xD7, 0xFF, 0xFF, 0xE6, 0xB3, + 0x12, 0x00, 0x2A, 0x1C, 0x13, 0x28, 0x9F, 0x0C, 0x04, 0x1B, 0x30, 0x31, 0xFF, 0x9F, 0x00, 0xC9, + 0x5C, 0x24, 0xFF, 0x98, 0xEB, 0x5B, 0x01, 0x96, 0x39, 0x16, 0xD2, 0x9E, 0x39, 0x22, 0xC4, 0xFF, + 0x0B, 0x69, 0x16, 0xA7, 0x52, 0x3C, 0x13, 0x9E, 0xA8, 0x02, 0x16, 0x7C, 0x8E, 0x28, 0x13, 0x79, + 0xDC, 0x28, 0x00, 0xD1, 0x0C, 0x25, 0xFA, 0x04, 0x0A, 0x59, 0x11, 0xBE, 0xD7, 0x80, 0x00, 0x78, + 0x08, 0x00, 0x88, 0x2D, 0x02, 0x84, 0x01, 0x10, 0x60, 0xF8, 0x23, 0xB2, 0x11, 0x00, 0x00, 0x02, + 0xDF, 0xFC, 0xFC, 0xF2, 0x0F, 0x09, 0xEC, 0xC6, 0x55, 0x12, 0x43, 0x30, 0x25, 0x12, 0x85, 0x68, + 0x71, 0x12, 0xA4, 0xDD, 0x00, 0x10, 0x1B, 0xA2, 0x13, 0x33, 0x54, 0x0F, 0xF6, 0xEC, 0x3C, 0x00, + 0xF3, 0x60, 0x22, 0xC3, 0x64, 0x6F, 0x73, 0x03, 0x00, 0x59, 0x42, 0xE2, 0xFF, 0xFF, 0xEF, 0xE3, + 0x13, 0x12, 0xC8, 0x21, 0x02, 0x15, 0x8F, 0xAD, 0x1F, 0x03, 0xDD, 0x02, 0x01, 0x2D, 0x17, 0x01, + 0x29, 0x29, 0x14, 0xBD, 0x4F, 0x06, 0x18, 0xAE, 0x94, 0x23, 0x02, 0xAC, 0x25, 0x01, 0x52, 0x00, + 0x05, 0x40, 0x16, 0x25, 0xD0, 0x01, 0xDC, 0x1F, 0x06, 0xB7, 0x25, 0x04, 0x05, 0x1D, 0x15, 0xAE, + 0x75, 0x07, 0x00, 0x8B, 0x6C, 0x10, 0xFD, 0x81, 0x04, 0x20, 0x09, 0xEF, 0x7D, 0xC3, 0x13, 0xE5, + 0xEA, 0x21, 0x11, 0x5A, 0xD6, 0x22, 0x00, 0x12, 0x01, 0x31, 0xF0, 0x0C, 0x00, 0xD0, 0x08, 0x41, + 0x2A, 0x00, 0x12, 0xF6, 0xF4, 0x59, 0x13, 0x22, 0xC0, 0x30, 0x00, 0x3A, 0x00, 0x33, 0xD8, 0x02, + 0x83, 0x65, 0x01, 0x01, 0x6C, 0x0F, 0x41, 0x48, 0x0E, 0x0E, 0x19, 0x78, 0x1D, 0x40, 0xAB, 0xFC, + 0xFC, 0xFC, 0xA9, 0x11, 0x10, 0x05, 0x9F, 0x3E, 0x23, 0x5B, 0x70, 0xE9, 0x02, 0x01, 0x2C, 0x23, + 0x11, 0x24, 0x50, 0x24, 0x12, 0x14, 0x86, 0x59, 0x42, 0xEC, 0x01, 0x03, 0xF1, 0x8B, 0x24, 0x12, + 0x7A, 0xDB, 0x11, 0x12, 0xB4, 0x3B, 0x24, 0x12, 0xA3, 0x3B, 0x59, 0x12, 0x75, 0x0E, 0x2C, 0x12, + 0xCC, 0x42, 0x03, 0x11, 0x36, 0x79, 0x00, 0xF4, 0x00, 0x01, 0xF4, 0xFF, 0xFF, 0xFE, 0x0F, 0x00, + 0x00, 0x04, 0xF3, 0xFF, 0xFF, 0xF8, 0x04, 0x1D, 0xD2, 0x54, 0x00, 0xE1, 0x27, 0x24, 0x2A, 0x46, + 0xB1, 0x26, 0x00, 0x9E, 0x10, 0x24, 0x58, 0x6E, 0xE7, 0x23, 0x00, 0x90, 0x07, 0x24, 0x87, 0x97, + 0x6A, 0x5A, 0xA4, 0x05, 0xF4, 0xFF, 0xFF, 0xB5, 0xBF, 0xFF, 0xFF, 0xF3, 0x03, 0xCF, 0x20, 0x25, + 0xE3, 0xE8, 0x59, 0x01, 0x03, 0x34, 0x60, 0x18, 0x85, 0xD8, 0x72, 0x22, 0xFF, 0x4D, 0x0E, 0x00, + 0x12, 0x07, 0x2E, 0x0F, 0x17, 0x16, 0x4D, 0x63, 0x01, 0x71, 0x6B, 0x06, 0xCF, 0x03, 0x05, 0x74, + 0x71, 0x01, 0x10, 0x30, 0x14, 0x6D, 0x0E, 0x00, 0x18, 0x12, 0x7F, 0x23, 0x01, 0x04, 0x2A, 0x12, + 0xF8, 0x09, 0x54, 0x43, 0x0C, 0x47, 0x65, 0xB6, 0x36, 0x07, 0x04, 0xBC, 0x63, 0x05, 0xB7, 0x21, + 0x01, 0x0E, 0x00, 0x34, 0xFD, 0x72, 0x00, 0x0E, 0x00, 0x36, 0xF1, 0xCF, 0x90, 0x1C, 0xBB, 0x27, + 0x0C, 0x0B, 0x24, 0x06, 0x02, 0x4D, 0x5F, 0x16, 0x68, 0x2B, 0x5F, 0x06, 0x0B, 0x00, 0x20, 0x4E, + 0x1C, 0xB0, 0x24, 0x00, 0x4D, 0x28, 0x24, 0xF1, 0x0A, 0x18, 0x96, 0x01, 0xC3, 0x2A, 0x03, 0xCC, + 0x39, 0x02, 0x3A, 0x24, 0x12, 0xB1, 0x9D, 0x4C, 0x00, 0xBF, 0x16, 0x15, 0xFC, 0xB7, 0x73, 0x00, + 0x19, 0x03, 0x11, 0xF8, 0x8C, 0x4B, 0x25, 0x02, 0xE0, 0x33, 0x5C, 0x16, 0x47, 0x8D, 0x5D, 0x23, + 0xAC, 0xFF, 0xBF, 0x1F, 0x34, 0x00, 0x17, 0xFB, 0x01, 0x2A, 0x01, 0xA6, 0x63, 0x11, 0xFE, 0x87, + 0x1F, 0x25, 0x02, 0xDC, 0xB4, 0x27, 0x16, 0x42, 0x69, 0x28, 0x00, 0xF6, 0x26, 0x20, 0xF8, 0x43, + 0x2E, 0x24, 0x16, 0x12, 0xA8, 0x16, 0x1F, 0x4C, 0x0B, 0x00, 0x03, 0x22, 0x0B, 0x0A, 0x88, 0x6C, + 0x00, 0xFC, 0x02, 0x32, 0x70, 0xC6, 0xF2, 0x50, 0x16, 0x23, 0xA2, 0xFF, 0x5C, 0x09, 0x24, 0x27, + 0xFF, 0x0A, 0x00, 0x01, 0xFC, 0x4A, 0x33, 0xAF, 0x4C, 0x15, 0xCA, 0x62, 0x14, 0x13, 0xD6, 0x5B, + 0x24, 0xF0, 0x00, 0xD2, 0x4E, 0x15, 0xE9, 0x0A, 0x00, 0x1F, 0xE8, 0x0A, 0x00, 0x10, 0x15, 0x8D, + 0x0A, 0x00, 0x15, 0x92, 0xD1, 0x2D, 0x23, 0x9F, 0xFF, 0x30, 0x18, 0x23, 0x00, 0xC3, 0x11, 0x18, + 0x33, 0x24, 0x6C, 0xFE, 0x6D, 0x52, 0x01, 0x13, 0x17, 0x23, 0xBF, 0x05, 0x0A, 0x00, 0x34, 0xDC, + 0x20, 0x00, 0x14, 0x00, 0x10, 0xE4, 0x8B, 0x00, 0x35, 0x04, 0x34, 0xF5, 0x76, 0x35, 0x00, 0xEC, + 0x01, 0x15, 0xAD, 0xC7, 0x17, 0x15, 0xD4, 0x03, 0x4F, 0x1B, 0xE5, 0x78, 0x00, 0x0F, 0xAA, 0x00, + 0x15, 0x14, 0x8A, 0x6F, 0x33, 0x01, 0x23, 0x2D, 0x24, 0xFD, 0x07, 0x46, 0x5D, 0x20, 0xFF, 0x74, + 0x36, 0x95, 0x15, 0x40, 0x22, 0x01, 0x24, 0x04, 0xD5, 0x0A, 0x00, 0x45, 0x00, 0x22, 0xB9, 0xFD, + 0x38, 0x17, 0x50, 0x0E, 0x35, 0x40, 0x40, 0x13, 0x34, 0x59, 0x20, 0x22, 0x02, 0xD0, 0x0C, 0x50, + 0xC6, 0xFC, 0xFC, 0xFC, 0x23, 0x67, 0x4D, 0x07, 0x05, 0x00, 0x1F, 0xCA, 0x05, 0x00, 0x00, 0x14, + 0xCB, 0x05, 0x00, 0x16, 0x22, 0x05, 0x00, 0x1F, 0xCC, 0x05, 0x00, 0x05, 0x14, 0xCD, 0x05, 0x00, + 0x16, 0x21, 0x05, 0x00, 0x1F, 0xCE, 0x05, 0x00, 0x00, 0x14, 0xCF, 0x05, 0x00, 0x16, 0x20, 0x05, + 0x00, 0x1F, 0xD0, 0x05, 0x00, 0x05, 0x33, 0x00, 0x00, 0x0C, 0x1C, 0x02, 0x65, 0x92, 0xFC, 0xFB, + 0xE9, 0xB2, 0x47, 0xCB, 0x2B, 0x25, 0xFF, 0x58, 0x0A, 0x00, 0x00, 0x0C, 0x1C, 0x33, 0x28, 0x58, + 0xDB, 0x6C, 0x04, 0x03, 0xE4, 0x5F, 0x01, 0x4F, 0x27, 0x15, 0x3D, 0xEF, 0x14, 0x15, 0x36, 0xF5, + 0x2B, 0x15, 0x35, 0xD8, 0x02, 0x1F, 0x34, 0x0A, 0x00, 0x14, 0x15, 0x2E, 0xF8, 0x22, 0x16, 0x13, + 0x8A, 0x05, 0x15, 0xED, 0x0E, 0x57, 0x00, 0x02, 0x15, 0x20, 0xE2, 0x51, 0x3F, 0x03, 0x25, 0x24, + 0xEA, 0x96, 0x20, 0x23, 0x50, 0xF7, 0x0A, 0x00, 0x24, 0x44, 0xFD, 0x14, 0x00, 0x00, 0xE5, 0x6F, + 0x20, 0xC8, 0x18, 0xB8, 0x57, 0x14, 0xF8, 0xF9, 0x14, 0x13, 0x20, 0xB5, 0x71, 0x03, 0xAE, 0x05, + 0x1F, 0x46, 0x96, 0x00, 0x19, 0x06, 0xC8, 0x00, 0x15, 0x38, 0xDE, 0x34, 0x14, 0x4F, 0xDA, 0x76, + 0x23, 0x15, 0xB3, 0xC3, 0x2C, 0x02, 0x22, 0x01, 0x24, 0xF1, 0x03, 0x0A, 0x00, 0x13, 0x8E, 0x36, + 0x01, 0x20, 0xF3, 0x91, 0x97, 0x04, 0x44, 0x25, 0x40, 0x3F, 0x2D, 0x0C, 0x2A, 0x43, 0x0F, 0x0E, + 0x07, 0x01, 0x42, 0x35, 0x26, 0x16, 0x32, 0xF5, 0x53, 0xE2, 0x0A, 0x95, 0xFB, 0xFF, 0xEB, 0x7A, + 0x0C, 0x00, 0x00, 0x02, 0x74, 0x16, 0x00, 0x11, 0xB6, 0x06, 0x87, 0xEA, 0x7C, 0x4A, 0xBA, 0xFF, + 0xC8, 0x09, 0x99, 0xD9, 0x09, 0x81, 0xED, 0x1E, 0x1D, 0xEB, 0xC3, 0x31, 0x1A, 0x78, 0x36, 0x59, + 0x50, 0xEF, 0x35, 0x00, 0x00, 0x2E, 0x60, 0x00, 0x6E, 0x0E, 0x79, 0xDB, 0xFB, 0xAD, 0x23, 0xB5, + 0xBB, 0x31, 0x0C, 0x09, 0x17, 0x0A, 0x00, 0x22, 0xA0, 0xB0, 0x01, 0x00, 0x30, 0x98, 0xE8, 0x8B, + 0xFC, 0x4E, 0x42, 0x70, 0x92, 0xDC, 0xE8, 0x53, 0x29, 0x1F, 0x3C, 0x09, 0x00, 0x91, 0x20, 0x47, + 0x1C, 0x01, 0x00, 0x35, 0x52, 0xDC, 0xE8, 0xB5, 0x4C, 0x08, 0xC4, 0x7C, 0x0F, 0x01, 0x00, 0x45, + 0x3F, 0x23, 0x23, 0x23, 0x18, 0x00, 0x02, 0x05, 0xFB, 0xA8, 0x0E, 0x3B, 0x00, 0x0F, 0x23, 0x00, + 0xFF, 0xE0, 0x0F, 0x36, 0x00, 0x03, 0x08, 0x01, 0x00, 0x0F, 0x14, 0x00, 0x01, 0x0F, 0x23, 0x00, + 0x33, 0x0F, 0x8E, 0x00, 0x12, 0x06, 0xF9, 0x5D, 0x14, 0x04, 0xD2, 0x00, 0x0E, 0x54, 0x5E, 0x0F, + 0xBC, 0x02, 0xFF, 0xC5, 0x0F, 0x01, 0x00, 0xFF, 0xFF, 0xA1, 0x08, 0xD8, 0x07, 0x04, 0x0D, 0x33, + 0x31, 0x0C, 0x08, 0x2B, 0x13, 0x0D, 0x12, 0x73, 0x95, 0x0D, 0x13, 0xB0, 0x94, 0x14, 0x13, 0x9F, + 0x75, 0x67, 0x22, 0x8C, 0x42, 0x08, 0x00, 0x13, 0x79, 0x88, 0x0F, 0x13, 0x65, 0xDA, 0x36, 0x23, + 0x52, 0x0F, 0xA5, 0x0F, 0x12, 0x02, 0x3C, 0x15, 0x11, 0x2C, 0x4A, 0x0A, 0x00, 0xA0, 0x10, 0x02, + 0xC3, 0x66, 0x11, 0x06, 0x80, 0x24, 0x00, 0xC5, 0x17, 0x01, 0xE7, 0x3E, 0x13, 0xDF, 0xF4, 0x3F, + 0x13, 0xCB, 0xD2, 0x4C, 0x13, 0xB8, 0xA9, 0x4C, 0x13, 0xA5, 0x5C, 0x32, 0x13, 0x91, 0xB3, 0x5D, + 0x13, 0x7E, 0x59, 0x12, 0x13, 0x6B, 0x59, 0x37, 0x13, 0x58, 0xCD, 0x33, 0x13, 0x44, 0x06, 0x34, + 0x13, 0x31, 0x2E, 0x70, 0x52, 0x1E, 0x00, 0x00, 0x02, 0xFE, 0x1C, 0x38, 0x00, 0x97, 0x3B, 0x22, + 0xF7, 0x01, 0xED, 0x39, 0x13, 0xE4, 0x2C, 0x80, 0x13, 0xD1, 0x44, 0x81, 0x13, 0xBD, 0x29, 0x37, + 0x13, 0xAA, 0xC2, 0x0C, 0x13, 0x97, 0x30, 0x30, 0x13, 0x84, 0x72, 0x0F, 0x04, 0xD9, 0xB2, 0x13, + 0x5D, 0x9E, 0x26, 0x14, 0x4A, 0x0E, 0x2D, 0x0E, 0xBA, 0x05, 0x12, 0x8A, 0x20, 0x01, 0x13, 0x77, + 0xE8, 0x52, 0x1F, 0x78, 0x08, 0x00, 0x15, 0x40, 0x14, 0x10, 0x0F, 0x03, 0x7A, 0x35, 0x11, 0xC9, + 0x3F, 0x00, 0x14, 0x66, 0xB1, 0x96, 0x33, 0x47, 0xCC, 0xFF, 0x96, 0x32, 0x02, 0x36, 0x40, 0x33, + 0x17, 0xCC, 0xFF, 0x05, 0x7B, 0x12, 0xF0, 0x8D, 0x28, 0x23, 0xCC, 0xFF, 0xDF, 0x1B, 0x12, 0xF0, + 0xDA, 0x5C, 0x14, 0xCC, 0xA6, 0x4B, 0x12, 0xF0, 0x41, 0x53, 0x14, 0xCC, 0x2C, 0x12, 0x12, 0xF0, + 0xFD, 0x2B, 0x14, 0xCC, 0x89, 0x0F, 0x12, 0xF0, 0xC4, 0x15, 0x14, 0xCC, 0xB0, 0x3B, 0x12, 0xF0, + 0x5E, 0x5D, 0x12, 0xCC, 0x86, 0x01, 0x02, 0x10, 0x00, 0x12, 0xBA, 0xA2, 0x10, 0x14, 0xAE, 0x10, + 0x00, 0x12, 0x88, 0x10, 0x00, 0x14, 0x7D, 0x10, 0x00, 0x12, 0x56, 0x10, 0x00, 0x14, 0x4C, 0x10, + 0x00, 0x12, 0x25, 0x10, 0x00, 0x13, 0x1A, 0x10, 0x00, 0x21, 0xF2, 0x02, 0x10, 0x00, 0x23, 0xE9, + 0x01, 0x10, 0x00, 0x13, 0xC1, 0x0A, 0x07, 0x04, 0x13, 0x07, 0x01, 0xA4, 0xB5, 0x28, 0x19, 0x2B, + 0x46, 0x01, 0x11, 0xCE, 0xF6, 0x00, 0x13, 0x23, 0x19, 0x15, 0x24, 0xFC, 0xFC, 0x90, 0x31, 0x21, + 0x01, 0xF2, 0xF8, 0x00, 0x13, 0x05, 0xB2, 0x0E, 0x03, 0x83, 0x01, 0x05, 0x8C, 0x4C, 0x14, 0xE0, + 0x25, 0x34, 0x03, 0x66, 0x27, 0x05, 0x54, 0x13, 0x14, 0xBF, 0xAF, 0x5D, 0x04, 0xC6, 0x16, 0x04, + 0xCB, 0x2F, 0x00, 0x2F, 0x41, 0x27, 0x06, 0xFE, 0xA9, 0x14, 0x03, 0x62, 0x02, 0x01, 0xFB, 0x2E, + 0x1A, 0x25, 0xB4, 0x5F, 0x15, 0x96, 0xA0, 0x44, 0x02, 0xE6, 0x4C, 0x01, 0x0E, 0x15, 0x05, 0x7C, + 0x39, 0x24, 0xFF, 0x39, 0x55, 0x74, 0x04, 0x72, 0x3C, 0x02, 0xCF, 0x23, 0x02, 0xB3, 0x3C, 0x00, + 0x24, 0x3A, 0x02, 0x73, 0x15, 0x01, 0x34, 0x02, 0x01, 0x69, 0x11, 0x24, 0xF5, 0x01, 0x98, 0x39, + 0x26, 0xFF, 0x3E, 0x38, 0x32, 0x04, 0x39, 0x0F, 0x28, 0xCC, 0xFF, 0xC8, 0x63, 0x02, 0x8B, 0x2E, + 0x14, 0xB3, 0x58, 0x3E, 0x24, 0xFF, 0xF9, 0xD4, 0x24, 0x23, 0x5C, 0xFF, 0x11, 0x03, 0x03, 0x18, + 0x73, 0x01, 0x55, 0x32, 0x13, 0xEB, 0xDB, 0x7A, 0x01, 0x3C, 0x71, 0x13, 0xFC, 0xAF, 0x18, 0x5F, + 0xFC, 0xFC, 0x1A, 0x00, 0xF2, 0xD1, 0x08, 0x03, 0x3F, 0x17, 0x00, 0xF5, 0x19, 0x00, 0x03, 0x3F, + 0x14, 0x00, 0xF8, 0x19, 0x00, 0x03, 0x3F, 0x11, 0x00, 0xFB, 0x19, 0x00, 0x03, 0x10, 0x0E, 0x93, + 0xBD, 0x02, 0x76, 0x80, 0x52, 0xAB, 0x14, 0x14, 0x14, 0x16, 0xEA, 0x00, 0x46, 0x15, 0x14, 0x14, + 0x01, 0x85, 0x39, 0x15, 0x80, 0xEA, 0x00, 0x01, 0x7A, 0x03, 0x04, 0x1C, 0x10, 0x02, 0x4F, 0x3B, + 0x01, 0xBE, 0x0E, 0x03, 0x46, 0x10, 0x03, 0x7B, 0x3E, 0x02, 0x8F, 0x35, 0x01, 0x18, 0x3A, 0x2A, + 0xFF, 0x8A, 0x59, 0x39, 0x15, 0x13, 0x69, 0x16, 0x01, 0x19, 0x6C, 0x14, 0x02, 0xD1, 0x54, 0x25, + 0xFF, 0xFC, 0x0A, 0x00, 0x00, 0x03, 0x01, 0x2F, 0x06, 0x06, 0xCB, 0x09, 0x04, 0x2F, 0x03, 0x09, + 0x19, 0x00, 0x04, 0x2F, 0x01, 0x0C, 0x18, 0x00, 0x03, 0x3F, 0xFD, 0x00, 0x0F, 0x19, 0x00, 0x03, + 0x52, 0xFA, 0x00, 0x02, 0x14, 0x14, 0xAE, 0x00, 0x52, 0x53, 0x14, 0x14, 0x14, 0x69, 0x93, 0x6F, + 0x00, 0x4D, 0x5D, 0x06, 0xF9, 0x14, 0x24, 0x24, 0x00, 0x17, 0x31, 0x17, 0x71, 0xB8, 0x71, 0x54, + 0xFF, 0xFF, 0xFD, 0x06, 0x00, 0x94, 0x2E, 0x17, 0x4F, 0x45, 0x13, 0x03, 0xD1, 0x02, 0x24, 0xBF, + 0xFF, 0x54, 0x6B, 0x14, 0x00, 0xA2, 0x51, 0x02, 0xC4, 0x97, 0x00, 0x7D, 0x1F, 0x02, 0x4D, 0x16, + 0x05, 0x96, 0x38, 0x01, 0x1E, 0x14, 0x35, 0x05, 0xFD, 0xFF, 0x39, 0x11, 0x04, 0x32, 0x11, 0x23, + 0xFF, 0x7B, 0xA4, 0x32, 0x05, 0x93, 0x52, 0x04, 0x7C, 0x67, 0x14, 0x59, 0xCF, 0x5B, 0x2E, 0xFF, + 0xA9, 0x75, 0x01, 0x01, 0x67, 0x05, 0x2A, 0xFF, 0x88, 0x75, 0x01, 0x15, 0x15, 0x3F, 0x44, 0x14, + 0x67, 0x98, 0x03, 0x01, 0xF4, 0x19, 0x33, 0xF4, 0x01, 0x00, 0x83, 0x16, 0x28, 0xFF, 0x45, 0x1A, + 0x14, 0x02, 0x43, 0x44, 0x15, 0xC9, 0x03, 0x01, 0x23, 0x00, 0x00, 0x13, 0x1F, 0x02, 0x5D, 0x35, + 0x11, 0xEA, 0xA6, 0x01, 0x28, 0x06, 0x00, 0x2A, 0x18, 0x23, 0x8E, 0x00, 0x9F, 0x31, 0x29, 0xFF, + 0xE2, 0xFE, 0x81, 0x25, 0xFF, 0x6D, 0x48, 0x14, 0x14, 0xC1, 0x19, 0x00, 0x3B, 0x1A, 0x18, 0x35, + 0xD8, 0x66, 0x3F, 0x0C, 0x7C, 0x7C, 0xE7, 0xBC, 0x02, 0x16, 0x18, 0x18, 0x04, 0x0F, 0x18, 0x00, + 0x27, 0x99, 0x10, 0x3E, 0x66, 0x85, 0xFF, 0xFF, 0xA5, 0x72, 0x36, 0xA1, 0x27, 0x25, 0x3D, 0xAF, + 0xBC, 0x68, 0x25, 0xE3, 0x70, 0x49, 0x10, 0x29, 0x09, 0x9A, 0x24, 0x02, 0x13, 0xC4, 0x90, 0x36, + 0x2B, 0x07, 0xBD, 0x3D, 0x02, 0x25, 0xC8, 0x07, 0xAC, 0x6F, 0x0A, 0x56, 0x02, 0x01, 0x64, 0x05, + 0x2D, 0x2A, 0xFC, 0x18, 0x00, 0x33, 0xF2, 0x0D, 0x00, 0x01, 0x23, 0x00, 0x5C, 0x2B, 0x43, 0xAA, + 0x86, 0x93, 0xDE, 0x0C, 0x00, 0x15, 0x6C, 0x72, 0x40, 0x20, 0xFF, 0xE4, 0x6C, 0x01, 0x13, 0x08, + 0x3F, 0x2C, 0x13, 0xC5, 0x5A, 0x62, 0x04, 0xD1, 0x54, 0x22, 0x00, 0x16, 0xF6, 0x73, 0x23, 0xFC, + 0x0C, 0x5C, 0x04, 0x02, 0xD7, 0x01, 0x03, 0xF3, 0x38, 0x01, 0x28, 0x39, 0x13, 0x4A, 0x18, 0x00, + 0x03, 0xCE, 0x00, 0x23, 0x75, 0xFF, 0xC4, 0x04, 0x01, 0x24, 0x15, 0x05, 0x8B, 0x41, 0x24, 0x00, + 0x4F, 0xAA, 0x00, 0x03, 0x48, 0x3B, 0x25, 0xFF, 0x4C, 0x35, 0x64, 0x53, 0xF2, 0xC0, 0x8D, 0x5A, + 0x1C, 0x04, 0x02, 0x03, 0xED, 0x01, 0x75, 0x00, 0x00, 0x15, 0x5A, 0x27, 0x02, 0x00, 0x46, 0x42, + 0x0A, 0x28, 0x74, 0x06, 0x13, 0x3D, 0x01, 0x53, 0x03, 0x1A, 0x44, 0x18, 0x00, 0x14, 0x24, 0x08, + 0x01, 0x2A, 0xF6, 0x4B, 0x19, 0x00, 0x15, 0x8C, 0x9E, 0x03, 0x19, 0x68, 0x18, 0x00, 0x25, 0x09, + 0xCF, 0x31, 0x01, 0x19, 0x8A, 0x05, 0x2A, 0x25, 0x1E, 0xE3, 0x19, 0x00, 0x29, 0xAB, 0x09, 0x3C, + 0x87, 0x06, 0x19, 0x00, 0x19, 0xC7, 0x6A, 0x66, 0x25, 0x1C, 0xD1, 0x19, 0x00, 0x19, 0xDD, 0x8B, + 0x10, 0x16, 0x0E, 0x04, 0x8C, 0x29, 0xE6, 0x29, 0x17, 0x6C, 0x06, 0xA5, 0x23, 0x28, 0xE5, 0x21, + 0x19, 0x00, 0x25, 0x01, 0x7A, 0x19, 0x00, 0x29, 0xD7, 0x0D, 0xB0, 0x00, 0x27, 0x5A, 0xF9, 0x5B, + 0x62, 0x08, 0xE1, 0x00, 0x3A, 0x40, 0xF0, 0xFF, 0x5D, 0x01, 0x04, 0x01, 0x00, 0x14, 0x33, 0xAF, + 0x64, 0x2A, 0xD9, 0x02, 0x19, 0x00, 0x29, 0x3F, 0xFB, 0x60, 0x56, 0x57, 0x00, 0x02, 0x26, 0x25, + 0x00, 0xF1, 0x53, 0x00, 0x18, 0x4B, 0x62, 0x01, 0x22, 0x56, 0x8A, 0xBE, 0xF1, 0x1E, 0x5C, 0x03, + 0xFD, 0x6E, 0x01, 0x3E, 0x1C, 0x29, 0x57, 0xFF, 0x32, 0x66, 0x13, 0x82, 0x31, 0x00, 0x39, 0x19, + 0x44, 0xFF, 0x43, 0x48, 0x13, 0x4D, 0x18, 0x00, 0x12, 0x3A, 0x9D, 0x42, 0x03, 0x94, 0x65, 0x05, + 0x4F, 0x3D, 0x22, 0xFF, 0x4A, 0xEF, 0x41, 0x05, 0xBE, 0x3B, 0x13, 0x35, 0x18, 0x00, 0x39, 0x45, + 0x00, 0xC7, 0x61, 0x00, 0x24, 0x62, 0xFF, 0x07, 0x1A, 0x03, 0x18, 0x01, 0x11, 0xFD, 0xCB, 0x19, + 0x22, 0x02, 0xC3, 0x0E, 0x00, 0x25, 0xF9, 0x04, 0xA5, 0x2D, 0x51, 0xF4, 0x70, 0x18, 0x02, 0x28, + 0xD1, 0x54, 0x03, 0xBE, 0x65, 0x1F, 0xB4, 0x88, 0x05, 0x00, 0x00, 0x1A, 0x20, 0x2D, 0x2D, 0xFE, + 0x17, 0x00, 0x25, 0xC2, 0x01, 0x65, 0x7B, 0x08, 0x17, 0x00, 0x12, 0xF1, 0x7D, 0x1A, 0x2A, 0x01, + 0x8B, 0x17, 0x00, 0x24, 0xEC, 0x3B, 0x48, 0x01, 0x18, 0x52, 0x76, 0x48, 0x27, 0xBC, 0x1D, 0xDF, + 0x01, 0x40, 0x4B, 0x98, 0xC5, 0xEE, 0x69, 0x05, 0x3D, 0xE8, 0xA2, 0x3E, 0x24, 0x04, 0x00, 0x9B, + 0x94, 0x0F, 0x6D, 0x68, 0x01, 0x15, 0x30, 0x4E, 0x03, 0x0F, 0x18, 0x00, 0x2B, 0x36, 0x18, 0x80, + 0x80, 0x5F, 0x00, 0x44, 0x33, 0x30, 0x2B, 0x02, 0x0C, 0x00, 0xA8, 0x12, 0x69, 0xAF, 0xD7, 0xF4, + 0xFB, 0xF2, 0xD2, 0xAB, 0x61, 0xDE, 0xD3, 0x20, 0x09, 0xF4, 0x0F, 0x07, 0x1D, 0x19, 0x47, 0x00, + 0x26, 0x02, 0x6F, 0xFB, 0x77, 0x49, 0xF1, 0x64, 0x01, 0x00, 0x10, 0x24, 0x1D, 0xD1, 0x2F, 0x00, + 0x29, 0x01, 0x9B, 0x25, 0x01, 0x06, 0x4A, 0xC3, 0x19, 0x90, 0x25, 0x06, 0x05, 0x30, 0x00, 0x1B, + 0x52, 0x6D, 0x01, 0x19, 0x44, 0x18, 0x09, 0x1D, 0x40, 0x8E, 0x00, 0x1B, 0xD1, 0x30, 0x00, 0x27, + 0xC6, 0x00, 0xD2, 0x3F, 0x1C, 0xF3, 0x9E, 0xC8, 0x04, 0x69, 0x02, 0x43, 0xB5, 0x37, 0x18, 0x3E, + 0x5C, 0x33, 0x17, 0x23, 0xDB, 0x7D, 0x1D, 0xB0, 0x8F, 0x00, 0x02, 0xD9, 0x09, 0x10, 0xE0, 0x3D, + 0x0A, 0x37, 0x0E, 0xF1, 0xFF, 0x9A, 0x7D, 0x17, 0xB0, 0x36, 0x22, 0x2B, 0x00, 0x00, 0x7E, 0x7B, + 0x17, 0x96, 0x15, 0x05, 0x02, 0x59, 0x1A, 0x24, 0x06, 0xF3, 0xA5, 0x80, 0x0A, 0x30, 0x00, 0x17, + 0xC5, 0xDA, 0x07, 0x14, 0x8B, 0xF4, 0x7E, 0x04, 0x8F, 0x3F, 0x1E, 0xD8, 0xC5, 0x01, 0x26, 0xDE, + 0xFF, 0xD5, 0x1C, 0x17, 0x7B, 0x94, 0x69, 0x01, 0x2C, 0x0A, 0x1E, 0x90, 0x30, 0x00, 0x17, 0xE7, + 0x2D, 0x05, 0x02, 0x8D, 0x05, 0x16, 0xD3, 0xE0, 0x40, 0x1E, 0x47, 0x30, 0x00, 0x17, 0xE8, 0x46, + 0x46, 0x16, 0x74, 0x59, 0x0A, 0x01, 0x7A, 0x09, 0x2F, 0xF7, 0x09, 0x30, 0x00, 0x16, 0x1B, 0x61, + 0xB2, 0x8A, 0x08, 0x82, 0x7A, 0x05, 0x4E, 0x06, 0x16, 0x76, 0xE8, 0x07, 0x01, 0xBA, 0x0D, 0x1F, + 0x6F, 0x30, 0x00, 0x00, 0x02, 0xEF, 0x05, 0x16, 0x65, 0x46, 0x22, 0x01, 0xC6, 0x44, 0x27, 0x04, + 0xEE, 0x04, 0x1E, 0x09, 0x30, 0x00, 0x17, 0xBE, 0x56, 0x32, 0x15, 0x95, 0x16, 0x0A, 0x27, 0x39, + 0xFF, 0xDF, 0x3F, 0x09, 0x30, 0x00, 0x02, 0x12, 0x0C, 0x16, 0xAB, 0x11, 0x1F, 0x01, 0x45, 0x01, + 0x16, 0x81, 0xB9, 0x01, 0x0F, 0xF6, 0x6B, 0x01, 0x02, 0x99, 0x50, 0x25, 0x21, 0xFD, 0x0B, 0x09, + 0x18, 0xCA, 0x86, 0x09, 0x09, 0x30, 0x00, 0x03, 0xE8, 0x04, 0x42, 0xBE, 0x34, 0x11, 0x41, 0x32, + 0x6B, 0x50, 0xFE, 0x15, 0x00, 0x00, 0x15, 0x6B, 0x04, 0x3F, 0xFA, 0x0D, 0x00, 0x01, 0x00, 0x01, + 0x0C, 0x9F, 0x04, 0x14, 0xAB, 0x51, 0x7E, 0x12, 0xBE, 0xFB, 0x0C, 0x93, 0x4A, 0x9E, 0xCA, 0xEE, + 0xFA, 0xF7, 0xDF, 0xB9, 0x80, 0x13, 0x6B, 0x29, 0x34, 0xFD, 0x2F, 0x00, 0x24, 0xFC, 0x2D, 0x10, + 0x1C, 0x01, 0xC2, 0x45, 0x17, 0x38, 0xB2, 0x26, 0x12, 0xA0, 0x26, 0x73, 0x19, 0x73, 0x30, 0x00, + 0x13, 0x6C, 0x16, 0x85, 0x02, 0x2C, 0x0A, 0x19, 0x48, 0xA1, 0x0B, 0x12, 0xD6, 0x31, 0x00, 0x25, + 0x52, 0xED, 0x12, 0x00, 0x25, 0xEA, 0x4E, 0x44, 0x03, 0x6A, 0xE6, 0x01, 0x00, 0x00, 0x0F, 0xEC, + 0xAC, 0x00, 0x03, 0x07, 0x79, 0xB6, 0x0B, 0x60, 0xAF, 0xD9, 0xFA, 0xFF, 0xF8, 0xD6, 0xAC, 0x5B, + 0x0A, 0x3F, 0x1E, 0x16, 0x9E, 0x48, 0x1E, 0x06, 0x18, 0x0B, 0x1F, 0x25, 0x95, 0x6D, 0x02, 0x14, + 0xC2, 0x1D, 0x49, 0x12, 0xDA, 0x1B, 0x09, 0x4A, 0x53, 0x1B, 0x29, 0x8C, 0x0C, 0x91, 0x0A, 0x76, + 0x70, 0x00, 0xE2, 0x07, 0x25, 0xFD, 0x12, 0x6C, 0x01, 0x16, 0x3D, 0x88, 0x03, 0x1F, 0xC3, 0x30, + 0x00, 0x01, 0x14, 0x53, 0x27, 0x04, 0x12, 0x50, 0xFE, 0x32, 0x16, 0x01, 0x57, 0x20, 0x1F, 0xEF, + 0x30, 0x00, 0x01, 0x14, 0x9B, 0x7A, 0x00, 0x15, 0x6D, 0x80, 0x02, 0x04, 0x23, 0x0E, 0x2E, 0xFF, + 0x0E, 0x2F, 0x00, 0x24, 0x01, 0xE3, 0xD9, 0x1E, 0x02, 0xEF, 0x0A, 0x02, 0x08, 0x4A, 0x02, 0x17, + 0x0E, 0x2E, 0xFF, 0x25, 0x30, 0x00, 0x01, 0x9C, 0x0B, 0x25, 0xEB, 0x02, 0x9B, 0x09, 0x16, 0xB5, + 0xBF, 0x04, 0x02, 0x7E, 0x6F, 0x0B, 0x30, 0x00, 0x15, 0x73, 0x54, 0x1F, 0x17, 0x90, 0x30, 0x04, + 0x03, 0x34, 0x11, 0x1E, 0x2C, 0x30, 0x00, 0x15, 0xBB, 0x01, 0x04, 0x0F, 0x30, 0x00, 0x12, 0x25, + 0x0B, 0xF9, 0xA7, 0x09, 0x17, 0x8E, 0x80, 0x23, 0x2C, 0x22, 0xFF, 0x4E, 0x4A, 0x26, 0x00, 0x00, + 0x32, 0x1F, 0x17, 0xCD, 0xBD, 0x23, 0x25, 0xBD, 0x00, 0xC6, 0x53, 0x0F, 0xF1, 0x04, 0x01, 0x16, + 0x94, 0x4A, 0x20, 0x17, 0x66, 0xCF, 0x0D, 0x03, 0x55, 0x20, 0x1D, 0x07, 0x30, 0x00, 0x16, 0xDC, + 0x67, 0x2A, 0x02, 0x44, 0x0A, 0x25, 0xF9, 0x0A, 0xAF, 0x05, 0x2D, 0xFF, 0xE8, 0x2F, 0x00, 0x01, + 0x27, 0x24, 0x12, 0xF0, 0x00, 0x07, 0x25, 0x11, 0xFD, 0x7D, 0x0F, 0x12, 0x01, 0xE1, 0x0F, 0x1D, + 0xB1, 0x30, 0x00, 0x17, 0x6C, 0x25, 0x49, 0x03, 0x64, 0x08, 0x43, 0xEC, 0x53, 0x14, 0x25, 0xB5, + 0x06, 0x1F, 0x6A, 0x9F, 0x03, 0x03, 0x19, 0x64, 0x48, 0x0F, 0x07, 0x61, 0x0B, 0x1C, 0x12, 0x2F, + 0x00, 0x37, 0x08, 0xF5, 0xFF, 0x2C, 0x4C, 0x2A, 0x04, 0xD6, 0x30, 0x00, 0x1D, 0x80, 0x5F, 0x00, + 0x27, 0x44, 0xFF, 0x5A, 0x7C, 0x48, 0x00, 0x00, 0x2C, 0xEE, 0x2F, 0x00, 0x1D, 0xBE, 0xCE, 0x06, + 0x02, 0xC5, 0x0A, 0x16, 0x8C, 0x10, 0x00, 0x16, 0x21, 0xB9, 0x3F, 0x2E, 0xFE, 0x88, 0x4D, 0x01, + 0x2A, 0x00, 0xD4, 0x38, 0x7E, 0xC2, 0x00, 0x00, 0x01, 0x3B, 0x97, 0xC7, 0xEE, 0xFD, 0xF9, 0xDF, + 0xB8, 0x7A, 0xA5, 0x00, 0x48, 0x1F, 0x1B, 0x2D, 0x02, 0x78, 0x16, 0x7E, 0x15, 0x47, 0x70, 0x7A, + 0x6E, 0x48, 0x16, 0x4A, 0x00, 0x22, 0x31, 0xAF, 0x59, 0x0B, 0x2B, 0xFD, 0xBA, 0x94, 0x07, 0x27, + 0x01, 0x73, 0x45, 0x04, 0x19, 0xA0, 0x33, 0x06, 0x19, 0x78, 0xFE, 0x00, 0x17, 0xBB, 0xA6, 0x08, + 0x1A, 0x31, 0xC6, 0x04, 0x06, 0x0E, 0x11, 0x04, 0x9B, 0x11, 0x33, 0xFF, 0xD9, 0x9A, 0xDC, 0x09, + 0x29, 0xF7, 0x13, 0xEC, 0x01, 0x43, 0xFF, 0xFF, 0xBA, 0x06, 0x25, 0x39, 0x02, 0xCE, 0x04, 0x05, + 0xEA, 0x73, 0x04, 0x46, 0x0A, 0x25, 0xD1, 0xFF, 0xE7, 0x4A, 0x04, 0xAC, 0x48, 0x46, 0xFF, 0xFF, + 0xEF, 0x02, 0xBD, 0x49, 0x19, 0xC4, 0xAA, 0x49, 0x27, 0xFF, 0xD4, 0xCF, 0x0E, 0x17, 0xC8, 0x90, + 0x91, 0x03, 0xEE, 0x24, 0x04, 0xD1, 0x0E, 0x1A, 0xB3, 0x43, 0x06, 0x10, 0xF4, 0x51, 0x00, 0x2A, + 0x0C, 0xFC, 0xFB, 0x0E, 0x02, 0xE2, 0x06, 0x06, 0x9C, 0x88, 0x07, 0x74, 0x7A, 0x01, 0x67, 0x1F, + 0x02, 0x25, 0x81, 0x12, 0x98, 0x41, 0x00, 0x05, 0xB2, 0x71, 0x24, 0x02, 0xE3, 0x67, 0x12, 0x2C, + 0x09, 0xEF, 0x1F, 0x72, 0x12, 0x85, 0x51, 0x2D, 0x12, 0x02, 0x62, 0x07, 0x27, 0xFF, 0xF7, 0xA0, + 0x09, 0x12, 0x1C, 0x09, 0x0C, 0x22, 0x39, 0x03, 0x37, 0x05, 0x18, 0x7B, 0x7A, 0x01, 0x02, 0x0B, + 0x07, 0x12, 0x91, 0x64, 0x11, 0x19, 0xC6, 0x1F, 0x0A, 0x11, 0x19, 0xD5, 0x66, 0x11, 0xE8, 0xFF, + 0x5C, 0x1B, 0xED, 0xCF, 0xD8, 0x06, 0x5C, 0x0E, 0x1B, 0xFC, 0x57, 0x0D, 0x25, 0x00, 0x11, 0xF4, + 0x70, 0x1D, 0x62, 0x1C, 0x02, 0x04, 0xA2, 0x7B, 0x1D, 0x78, 0x1A, 0x00, 0x2F, 0x15, 0xD5, 0xF1, + 0x72, 0x01, 0x01, 0x78, 0x04, 0x04, 0xCC, 0x6E, 0x03, 0x51, 0x10, 0x10, 0x45, 0x0F, 0x2B, 0x10, + 0x7C, 0xD6, 0x0B, 0x15, 0x01, 0xFC, 0x77, 0x26, 0xFF, 0x3F, 0x69, 0x87, 0x01, 0xE0, 0x00, 0x16, + 0x5D, 0x32, 0x02, 0x11, 0xD1, 0xD5, 0x00, 0x14, 0xBD, 0xB7, 0x03, 0x18, 0x15, 0x9B, 0x06, 0x16, + 0x69, 0x3A, 0x09, 0x14, 0x47, 0xDF, 0x1F, 0x12, 0xFE, 0x6A, 0x0D, 0x31, 0xED, 0x12, 0x00, 0x7D, + 0x98, 0x01, 0x66, 0x10, 0x12, 0x17, 0x42, 0x01, 0x13, 0xAB, 0xCA, 0x91, 0x14, 0x93, 0x36, 0x10, + 0x24, 0xF8, 0x05, 0x36, 0x07, 0x13, 0x34, 0xBA, 0x0E, 0x44, 0xFD, 0x2D, 0x00, 0x5E, 0xDE, 0x05, + 0x14, 0xC8, 0x57, 0x09, 0x03, 0x69, 0x98, 0x33, 0xBE, 0x01, 0x9E, 0xD5, 0x09, 0x25, 0x0B, 0xFB, + 0x29, 0x57, 0x12, 0x2F, 0xE1, 0x02, 0x12, 0x57, 0x30, 0x09, 0x37, 0x29, 0x00, 0x31, 0x77, 0x85, + 0x02, 0x92, 0x02, 0x14, 0xF6, 0xBF, 0x0A, 0x02, 0xF4, 0x55, 0x02, 0x0C, 0x49, 0x29, 0x16, 0xF1, + 0xED, 0x83, 0x03, 0x77, 0x56, 0x17, 0x1F, 0x6F, 0x09, 0x01, 0x2B, 0x0E, 0x14, 0x05, 0x03, 0x11, + 0x03, 0xC3, 0x14, 0x02, 0x99, 0x55, 0x04, 0xFB, 0x10, 0x19, 0x33, 0x7B, 0x02, 0x13, 0x50, 0x1A, + 0x00, 0x24, 0xF7, 0x0D, 0x26, 0x51, 0x04, 0x0D, 0x69, 0x15, 0x04, 0x9F, 0x3D, 0x21, 0xC4, 0x1F, + 0x20, 0xA0, 0x00, 0x01, 0x00, 0x10, 0xFB, 0x4F, 0x07, 0x26, 0x22, 0xB7, 0x87, 0x00, 0x34, 0xF9, + 0xB0, 0x52, 0x6D, 0x00, 0x4A, 0xFB, 0xA8, 0x93, 0xC1, 0xD3, 0x13, 0x4B, 0xA0, 0x00, 0x01, 0xBF, + 0x15, 0x05, 0x24, 0xD8, 0xFA, 0x1B, 0x00, 0x39, 0x00, 0x20, 0xE8, 0x1A, 0x00, 0x45, 0xD4, 0x16, + 0x4B, 0xF8, 0x9C, 0x03, 0x18, 0x27, 0xF6, 0x84, 0x65, 0xA8, 0x0E, 0x00, 0x00, 0x3E, 0xEA, 0xB7, + 0x03, 0x23, 0x07, 0x78, 0x51, 0x0D, 0x22, 0xFB, 0xB6, 0x8E, 0x4E, 0x26, 0x1A, 0xB4, 0xD2, 0x03, + 0x76, 0x03, 0x30, 0x5D, 0x7A, 0x7D, 0x6A, 0x45, 0xF5, 0x84, 0x72, 0x24, 0x62, 0x7D, 0x4B, 0x00, + 0x11, 0x07, 0x14, 0x17, 0x11, 0x6B, 0x0B, 0x16, 0x12, 0xA3, 0x44, 0x14, 0x12, 0x79, 0x07, 0x00, + 0x12, 0x4C, 0x07, 0x00, 0x11, 0x1F, 0x07, 0x00, 0x32, 0xF1, 0x01, 0x6C, 0x04, 0x04, 0x12, 0x6C, + 0xF4, 0x09, 0x12, 0x6C, 0x41, 0x02, 0x12, 0x6C, 0x4A, 0x08, 0x12, 0x6C, 0xB8, 0x14, 0x12, 0x6C, + 0x45, 0x49, 0x12, 0x6C, 0x9F, 0x07, 0x12, 0x6C, 0xE3, 0x03, 0x12, 0x6C, 0x7D, 0x14, 0x15, 0x02, + 0x2D, 0x3A, 0x58, 0x11, 0x0D, 0x37, 0x03, 0xF5, 0x0A, 0x05, 0x33, 0x20, 0x53, 0x75, 0x8C, 0xC3, + 0x35, 0x02, 0x61, 0xD5, 0x05, 0x4B, 0x35, 0x1D, 0xBE, 0xFF, 0x12, 0x4B, 0x35, 0x1F, 0xE3, 0xFF, + 0x0D, 0x00, 0x36, 0x02, 0xC6, 0xFF, 0x0D, 0x00, 0x13, 0x61, 0xF1, 0x00, 0x52, 0xB2, 0x1D, 0x00, + 0x00, 0x03, 0xBB, 0x02, 0x36, 0xF6, 0x39, 0x00, 0x48, 0x04, 0x16, 0x79, 0x9B, 0x08, 0x21, 0xFF, + 0xF5, 0xB7, 0x0D, 0x01, 0x56, 0x4D, 0x03, 0x6E, 0x7E, 0x04, 0xF3, 0x01, 0x18, 0x63, 0x26, 0x58, + 0x16, 0x2F, 0xC3, 0x72, 0x36, 0xFF, 0xFF, 0x0A, 0xAE, 0x27, 0x04, 0x46, 0x07, 0x02, 0x01, 0x61, + 0x02, 0x9C, 0x82, 0x25, 0x03, 0xFD, 0x30, 0x0F, 0x03, 0x06, 0x6C, 0x04, 0xDE, 0x09, 0x18, 0x27, + 0x8E, 0x29, 0x15, 0x38, 0xCD, 0x3F, 0x06, 0xC7, 0x63, 0x17, 0x7A, 0x8E, 0x52, 0x03, 0xF0, 0x2B, + 0x16, 0x5B, 0x8C, 0x02, 0x05, 0xDA, 0x00, 0x17, 0x67, 0x4F, 0x0B, 0x03, 0x51, 0x07, 0x18, 0x69, + 0x50, 0x04, 0x27, 0x6A, 0xFF, 0xEA, 0x0C, 0x03, 0x88, 0x4F, 0x1E, 0x60, 0x0D, 0x00, 0x18, 0x6B, + 0x0D, 0x00, 0x09, 0x34, 0x00, 0x18, 0x68, 0x4E, 0x00, 0x18, 0x64, 0x68, 0x00, 0x27, 0x60, 0xFF, + 0xF3, 0x2F, 0x18, 0x58, 0x96, 0x9B, 0x03, 0x7B, 0x03, 0x16, 0x75, 0xA2, 0x27, 0x04, 0xC4, 0x27, + 0x03, 0x38, 0x0E, 0x18, 0x88, 0x9D, 0x09, 0x02, 0x80, 0x90, 0x27, 0x0E, 0xFF, 0x78, 0x01, 0x37, + 0x01, 0xF6, 0xFF, 0xEE, 0x4F, 0x16, 0xD6, 0xE4, 0x64, 0x02, 0x50, 0x28, 0x03, 0xC0, 0x17, 0x02, + 0xA5, 0x26, 0x02, 0x8F, 0x93, 0x04, 0xB4, 0x40, 0x04, 0xD9, 0x9B, 0x19, 0x17, 0x1B, 0x08, 0x02, + 0x92, 0x08, 0x19, 0xCD, 0x4E, 0x06, 0x02, 0xCA, 0x49, 0x03, 0x93, 0x62, 0x27, 0xB8, 0x02, 0x7E, + 0x65, 0x30, 0xFF, 0x9C, 0x1E, 0x5F, 0x00, 0x27, 0x24, 0xF9, 0x49, 0x02, 0x28, 0x00, 0x79, 0x0D, + 0x00, 0x27, 0x01, 0x90, 0x0D, 0x00, 0x48, 0x00, 0x00, 0x52, 0xE9, 0x9C, 0x4D, 0x68, 0x0C, 0x69, + 0xB4, 0xE6, 0xFF, 0x30, 0xBE, 0x08, 0x60, 0x03, 0x00, 0x0F, 0x0D, 0x37, 0x01, 0xD4, 0x02, 0x34, + 0x27, 0x73, 0x4D, 0xA9, 0x30, 0x02, 0x43, 0x04, 0x38, 0xC9, 0x51, 0x01, 0x50, 0x04, 0x28, 0xAC, + 0x12, 0x5D, 0x04, 0x28, 0xD4, 0x11, 0x6A, 0x04, 0x01, 0xD2, 0x05, 0x38, 0x2F, 0xB8, 0xFE, 0x5D, + 0x5A, 0x12, 0x4F, 0x0E, 0x00, 0x18, 0xBE, 0x26, 0x19, 0x28, 0xFF, 0x25, 0xDA, 0x00, 0x18, 0x7B, + 0x02, 0x01, 0x19, 0xCC, 0x90, 0x06, 0x17, 0x16, 0xF5, 0x15, 0x28, 0xFF, 0x50, 0x97, 0x02, 0x02, + 0x21, 0x0C, 0x28, 0x05, 0xFE, 0xF3, 0x07, 0x18, 0xE8, 0xE5, 0x07, 0x27, 0xD3, 0xFF, 0xA1, 0x2A, + 0x02, 0xFF, 0x02, 0x18, 0xF3, 0xA0, 0x01, 0x01, 0xA5, 0x82, 0x04, 0x19, 0x08, 0x03, 0x69, 0x00, + 0x18, 0x9C, 0x9E, 0x00, 0x18, 0x95, 0x41, 0x01, 0x14, 0x8F, 0xBA, 0x66, 0x07, 0xD4, 0x01, 0x17, + 0x40, 0x2A, 0x5B, 0x27, 0xFF, 0x45, 0x19, 0x0B, 0x28, 0xFF, 0x49, 0x1B, 0x13, 0x18, 0x4A, 0x57, + 0x50, 0x18, 0x4B, 0x0D, 0x00, 0x18, 0x4C, 0x0D, 0x00, 0x18, 0x4A, 0x34, 0x00, 0x15, 0x49, 0x6A, + 0x57, 0x05, 0xD3, 0x47, 0x03, 0x12, 0x01, 0x17, 0x43, 0x11, 0x19, 0x26, 0xFF, 0x3E, 0x69, 0x0B, + 0x04, 0x95, 0x4E, 0x18, 0x9C, 0x4F, 0x0C, 0x17, 0xA5, 0x61, 0x31, 0x28, 0x00, 0xB0, 0xC9, 0x0C, + 0x02, 0x3F, 0x07, 0x33, 0xFB, 0x01, 0x00, 0xE5, 0x1C, 0x05, 0x27, 0x2A, 0x01, 0xA7, 0x37, 0x03, + 0xAC, 0x0F, 0x02, 0xDC, 0x46, 0x04, 0x1D, 0x04, 0x18, 0x18, 0x10, 0x04, 0x18, 0x42, 0x5A, 0x03, + 0x18, 0x74, 0xCA, 0x13, 0x02, 0x4F, 0x09, 0x11, 0xEF, 0xA5, 0x07, 0x27, 0x05, 0xEF, 0x4C, 0x51, + 0x03, 0xC6, 0x01, 0x01, 0xDA, 0x52, 0x12, 0x0A, 0x78, 0x07, 0x63, 0xEC, 0x07, 0x00, 0x00, 0x01, + 0x27, 0x5F, 0x61, 0x17, 0x86, 0x49, 0x02, 0x27, 0xE9, 0x0F, 0x0D, 0x00, 0x16, 0x58, 0x63, 0x02, + 0x26, 0xFE, 0x73, 0x7D, 0x02, 0x24, 0xDE, 0x3E, 0x97, 0x02, 0x34, 0xE0, 0xAD, 0x5C, 0x31, 0x0B, + 0x19, 0x05, 0x0B, 0x0B, 0x46, 0x16, 0x13, 0x13, 0x02, 0x24, 0xC9, 0x11, 0x0C, 0x22, 0x06, 0x1B, + 0x42, 0xC2, 0xE3, 0x0D, 0xEC, 0x0C, 0x27, 0xD9, 0xFF, 0x5A, 0x8B, 0x24, 0x03, 0x14, 0x64, 0x19, + 0x01, 0x17, 0x1E, 0x82, 0x07, 0x10, 0x00, 0x00, 0x48, 0xF2, 0x7B, 0x0B, 0xC9, 0x2E, 0x71, 0xDD, + 0x00, 0x00, 0x02, 0x5B, 0xE0, 0x80, 0x84, 0x0E, 0x41, 0xE7, 0x67, 0x05, 0x8C, 0x7D, 0x02, 0x62, + 0x44, 0xCE, 0xFF, 0xFF, 0xE0, 0x02, 0x93, 0x2E, 0x10, 0xD9, 0xBE, 0x06, 0x12, 0xCC, 0x52, 0x0A, + 0x3C, 0x43, 0x68, 0xFF, 0x01, 0x00, 0x3A, 0xA4, 0x28, 0x90, 0x58, 0x0F, 0x85, 0xFC, 0xB0, 0x4A, + 0x00, 0x00, 0x07, 0x54, 0xB6, 0x24, 0x0B, 0x14, 0xD7, 0x57, 0x06, 0x22, 0x00, 0x1E, 0x71, 0x7F, + 0x3D, 0xFE, 0x4A, 0x01, 0x65, 0x0B, 0x15, 0xAA, 0x13, 0x00, 0x23, 0x34, 0xFB, 0x50, 0x7D, 0x05, + 0xB9, 0x0C, 0x21, 0x0C, 0xDA, 0x2B, 0x6C, 0x00, 0xD4, 0x00, 0x27, 0xF6, 0x29, 0xE6, 0x0E, 0x12, + 0x8E, 0x38, 0x2C, 0x25, 0xD1, 0x08, 0x8A, 0x13, 0x55, 0xF9, 0x1A, 0x00, 0x05, 0xDF, 0x38, 0x77, + 0x23, 0x23, 0xB3, 0xDD, 0x12, 0x00, 0x07, 0x4A, 0x13, 0xD4, 0x34, 0x01, 0x30, 0x4C, 0xDD, 0xFB, + 0x2F, 0x08, 0x45, 0x07, 0xE4, 0xEF, 0x6D, 0x59, 0x0A, 0x12, 0x08, 0xD2, 0x02, 0x15, 0x3F, 0x0F, + 0x17, 0x5B, 0x17, 0x15, 0x17, 0x01, 0x0A, 0x51, 0x41, 0x2A, 0xF5, 0x00, 0x01, 0x00, 0x01, 0x94, + 0x0E, 0x1F, 0xF8, 0x15, 0x00, 0x5E, 0x21, 0x08, 0x0C, 0x01, 0x00, 0x01, 0x88, 0x0F, 0x12, 0xF9, + 0x0C, 0x00, 0x4E, 0x0C, 0x09, 0xA0, 0xFF, 0x01, 0x00, 0x1F, 0xB0, 0x15, 0x00, 0x41, 0x12, 0x03, + 0xC9, 0x25, 0x12, 0x24, 0xB7, 0x16, 0x02, 0x01, 0x00, 0x1F, 0x03, 0x11, 0x01, 0x02, 0x0F, 0x15, + 0x00, 0x87, 0x25, 0x01, 0x04, 0x9B, 0x1F, 0x01, 0xCB, 0x0B, 0x30, 0x08, 0x0F, 0x02, 0x23, 0x00, + 0x12, 0xE5, 0xD0, 0x20, 0x13, 0x38, 0xF6, 0x09, 0x0F, 0x08, 0x00, 0x16, 0x03, 0x62, 0x07, 0x13, + 0x2B, 0x47, 0x08, 0x00, 0x52, 0x2B, 0x11, 0xC1, 0x05, 0x07, 0x21, 0x0B, 0x9C, 0x46, 0x08, 0x10, + 0x48, 0x0E, 0x0A, 0x21, 0xD0, 0x08, 0xBD, 0x1C, 0x20, 0xD3, 0x1D, 0xB3, 0x10, 0x21, 0xE1, 0x78, + 0x68, 0x0E, 0x12, 0x23, 0x0D, 0x07, 0x54, 0x13, 0x0E, 0x07, 0x02, 0x0D, 0x3A, 0x8D, 0x04, 0x01, + 0x00, 0x28, 0x0A, 0x08, 0x77, 0x01, 0x1F, 0xC4, 0x0E, 0x00, 0x25, 0x07, 0x88, 0x85, 0x01, 0x91, + 0x27, 0x31, 0x0B, 0x08, 0x07, 0x75, 0x00, 0x13, 0x8E, 0xBC, 0x21, 0x03, 0x60, 0x07, 0x1F, 0x78, + 0x08, 0x00, 0x15, 0x29, 0x15, 0x13, 0xC4, 0x20, 0x05, 0x67, 0x6B, 0x29, 0xFC, 0xEA, 0x2A, 0x1C, + 0x19, 0x64, 0x31, 0x94, 0x06, 0xF3, 0x07, 0x18, 0x60, 0x12, 0x00, 0x26, 0x05, 0xF1, 0x54, 0x08, + 0x03, 0x13, 0x00, 0x16, 0x3D, 0x1A, 0x5A, 0x09, 0x42, 0x0E, 0x19, 0x87, 0x13, 0x00, 0x1B, 0xCE, + 0xC3, 0x58, 0x03, 0xD6, 0x05, 0x28, 0xF2, 0x05, 0x13, 0x00, 0x18, 0x5E, 0xC6, 0x50, 0x07, 0xAA, + 0x94, 0x09, 0x1C, 0x65, 0x24, 0x03, 0xED, 0xA3, 0x57, 0x18, 0x00, 0x08, 0x80, 0x29, 0xFF, 0xD5, + 0x38, 0x00, 0x19, 0x7F, 0xB7, 0x94, 0x06, 0xE5, 0x33, 0x18, 0x45, 0x12, 0x00, 0x10, 0x13, 0xC5, + 0x07, 0x28, 0xF5, 0x08, 0x13, 0x00, 0x16, 0x58, 0xC0, 0x12, 0x05, 0x14, 0xCA, 0x09, 0xF7, 0x0F, + 0x01, 0x6B, 0x0B, 0x17, 0xE8, 0xD6, 0x17, 0x16, 0x00, 0xE1, 0x33, 0x19, 0xDB, 0x38, 0x00, 0x15, + 0x79, 0xD4, 0x04, 0x0A, 0x77, 0x14, 0x1D, 0x4B, 0x5A, 0x14, 0x2D, 0xF8, 0x0B, 0x9F, 0x18, 0x1E, + 0xBA, 0x20, 0x14, 0x1E, 0x72, 0x03, 0x14, 0x1D, 0x29, 0xE6, 0x13, 0x04, 0x46, 0x9A, 0x07, 0x9A, + 0xA0, 0x19, 0x99, 0x4B, 0x00, 0x16, 0xBC, 0xD1, 0x08, 0x04, 0xAA, 0x05, 0x00, 0x6C, 0x07, 0x02, + 0xC9, 0xCA, 0x09, 0xBC, 0x8A, 0x2D, 0xC0, 0x00, 0xDF, 0x0F, 0x19, 0x77, 0x83, 0x00, 0x19, 0xDE, + 0x8D, 0x81, 0x05, 0x83, 0x14, 0x19, 0xE7, 0x83, 0x00, 0x17, 0x6E, 0xB6, 0x15, 0x08, 0x04, 0x11, + 0x18, 0x56, 0x12, 0x00, 0x23, 0x09, 0xF6, 0x60, 0x15, 0x06, 0x13, 0x00, 0x18, 0x47, 0x6A, 0x19, + 0x16, 0x00, 0x0B, 0x09, 0x0A, 0xA0, 0x15, 0x19, 0xD7, 0xE2, 0x33, 0x05, 0x3E, 0x04, 0x01, 0xEC, + 0x14, 0x19, 0x00, 0x53, 0x97, 0x01, 0x1B, 0x70, 0x09, 0x04, 0xA5, 0x08, 0xC9, 0x5E, 0x04, 0x3E, + 0x19, 0x1B, 0x16, 0x28, 0x03, 0x29, 0x1B, 0x17, 0xAC, 0x12, 0x89, 0x03, 0x2F, 0x56, 0x72, 0x7A, + 0x73, 0x57, 0x2F, 0x39, 0x03, 0x24, 0x1D, 0x92, 0x4C, 0x07, 0x26, 0xED, 0x94, 0x97, 0x02, 0x27, + 0x66, 0xF6, 0xD4, 0x03, 0x14, 0xF7, 0xF8, 0x82, 0x2F, 0x7C, 0xFF, 0x9F, 0x13, 0x01, 0x1D, 0x4C, + 0xB4, 0x05, 0x00, 0xAC, 0x08, 0x2D, 0x05, 0xDD, 0x17, 0x00, 0x25, 0xE1, 0x07, 0xD0, 0x0C, 0x75, + 0xFF, 0xFB, 0xAF, 0x88, 0xA6, 0xF6, 0xFF, 0x5B, 0x0C, 0x03, 0xBB, 0x12, 0x11, 0xF3, 0x4F, 0xCB, + 0x03, 0x50, 0x23, 0x45, 0xCE, 0x00, 0x13, 0xFD, 0x8C, 0x4F, 0x06, 0x2B, 0x1F, 0x48, 0xFF, 0x1D, + 0x4A, 0xFF, 0x6C, 0x15, 0x03, 0x60, 0x09, 0x23, 0xFF, 0x59, 0xF7, 0x0C, 0x27, 0xF7, 0x02, 0x04, + 0x22, 0x58, 0xFF, 0xFF, 0x7B, 0x8D, 0xFF, 0xD2, 0x0A, 0x04, 0xD9, 0x36, 0x37, 0x9D, 0x9C, 0xFF, + 0xED, 0x19, 0x05, 0x45, 0x13, 0x13, 0xAB, 0x83, 0x06, 0x04, 0x48, 0xA9, 0x1A, 0xBD, 0x9A, 0x06, + 0x18, 0xD0, 0x87, 0x02, 0x0F, 0x17, 0x00, 0xFF, 0x78, 0x0B, 0xCC, 0x01, 0x03, 0x61, 0x11, 0x13, + 0xAC, 0x7D, 0x0C, 0x1A, 0xE1, 0xFA, 0x01, 0x38, 0x9F, 0x6C, 0xFF, 0x9A, 0x85, 0x22, 0x01, 0xEB, + 0x0F, 0x00, 0x38, 0x7C, 0x48, 0xFF, 0x8F, 0x0B, 0x14, 0x21, 0x56, 0x02, 0x13, 0x11, 0xC0, 0x11, + 0x19, 0x90, 0xB9, 0x13, 0x33, 0x1D, 0x00, 0xBB, 0x46, 0x00, 0x00, 0x16, 0x06, 0x13, 0x33, 0xFB, + 0x95, 0x16, 0xCB, 0x9D, 0x9B, 0x56, 0xFD, 0xAB, 0x80, 0xA5, 0xFA, 0x5E, 0x13, 0x2D, 0x02, 0xCF, + 0x0E, 0x03, 0x00, 0x68, 0x4D, 0x04, 0x6D, 0xA5, 0x0A, 0x2B, 0x96, 0x03, 0xD7, 0xDB, 0x08, 0x16, + 0x00, 0x04, 0xDA, 0x24, 0x18, 0x50, 0xF0, 0x16, 0x16, 0xF3, 0x03, 0x04, 0x34, 0x14, 0x84, 0xE4, + 0x0B, 0x77, 0x19, 0x8B, 0xDE, 0xD4, 0x85, 0x02, 0x24, 0x51, 0x75, 0x7E, 0x76, 0x54, 0x27, 0xF4, + 0x03, 0x39, 0x1B, 0x0F, 0x2B, 0xDE, 0x14, 0x21, 0x46, 0xF6, 0x4E, 0x5B, 0x03, 0x15, 0x05, 0x36, + 0x72, 0xFC, 0xFF, 0x58, 0x1D, 0x14, 0x39, 0x26, 0xAC, 0x10, 0xD8, 0x00, 0x65, 0x16, 0xB5, 0xB1, + 0x12, 0x28, 0x15, 0x73, 0xA8, 0x17, 0x13, 0xD8, 0x51, 0x01, 0x0F, 0x0F, 0x00, 0x18, 0x35, 0xFE, + 0xCA, 0xCE, 0x0F, 0x00, 0x44, 0xD9, 0x95, 0x52, 0x12, 0xB3, 0x0D, 0x38, 0xD8, 0x21, 0x1E, 0xC2, + 0x0D, 0x04, 0xDF, 0x1D, 0x0F, 0x0F, 0x00, 0xFF, 0xCA, 0x39, 0x1B, 0x17, 0x2C, 0xEF, 0x06, 0x79, + 0x1F, 0x4A, 0x6C, 0x79, 0x77, 0x63, 0x3C, 0x4E, 0x07, 0x24, 0x0C, 0x78, 0xA6, 0x1D, 0x35, 0xFE, + 0xBB, 0x5A, 0x2E, 0x00, 0x28, 0x3F, 0xE4, 0x59, 0x02, 0x13, 0xC2, 0x04, 0x27, 0x2A, 0x48, 0xFA, + 0x3A, 0x03, 0x11, 0xEB, 0x26, 0x06, 0x2C, 0x1B, 0xF0, 0x68, 0x03, 0x38, 0xD9, 0x07, 0x00, 0xB2, + 0x56, 0x08, 0xAE, 0x8C, 0x14, 0x1C, 0x43, 0x00, 0x34, 0xD0, 0x8E, 0x95, 0x5E, 0x6B, 0x25, 0xEA, + 0x04, 0xFE, 0x06, 0x10, 0x83, 0xB2, 0xB2, 0x24, 0xAC, 0xFF, 0xAD, 0x11, 0x03, 0x95, 0x14, 0x11, + 0xCD, 0x98, 0x00, 0x13, 0x14, 0xDA, 0x29, 0x39, 0x84, 0x02, 0xF9, 0x21, 0x1B, 0x13, 0xB8, 0xE9, + 0x11, 0x01, 0xA3, 0x55, 0x06, 0xBD, 0x96, 0x12, 0x90, 0x0E, 0x00, 0x38, 0xCA, 0x39, 0xFF, 0x75, + 0x14, 0x03, 0xC8, 0x1F, 0x33, 0xFF, 0xD6, 0x4B, 0xD2, 0x06, 0x09, 0x5D, 0x6C, 0x23, 0xFF, 0xD3, + 0xE1, 0x0F, 0x18, 0xF1, 0xE2, 0x09, 0x33, 0xFF, 0xFF, 0xBE, 0x17, 0x00, 0x04, 0x1D, 0x45, 0x12, + 0xD2, 0x0F, 0x00, 0x31, 0xA1, 0x0F, 0x30, 0x01, 0x00, 0x03, 0x72, 0x00, 0x1B, 0x28, 0x51, 0x04, + 0x19, 0x00, 0x60, 0x12, 0x0A, 0x93, 0x09, 0x23, 0x00, 0x1D, 0xC5, 0x00, 0x2E, 0xD1, 0x00, 0x53, + 0x0A, 0x0D, 0xD8, 0x18, 0x14, 0x40, 0xC9, 0x25, 0x09, 0x15, 0x0B, 0x3B, 0x0B, 0xDC, 0xFF, 0x09, + 0x62, 0x08, 0xF9, 0x00, 0x29, 0xFF, 0xBA, 0x6E, 0x09, 0x04, 0x70, 0x9A, 0x19, 0xF4, 0x3F, 0x70, + 0x14, 0x06, 0x87, 0x9C, 0x09, 0xC6, 0x0A, 0x05, 0x8B, 0x05, 0x19, 0xBE, 0x3F, 0x02, 0x04, 0x18, + 0x45, 0x19, 0xF5, 0x59, 0x1D, 0x04, 0xF7, 0x24, 0x2D, 0xFF, 0x6D, 0xE4, 0xDF, 0x01, 0xB5, 0x0C, + 0x09, 0x43, 0x00, 0x13, 0x1A, 0x53, 0x18, 0x29, 0xF7, 0x26, 0x2D, 0x00, 0x28, 0xAD, 0xFF, 0xFC, + 0x14, 0x0A, 0x55, 0x68, 0x39, 0xFF, 0xFF, 0xCA, 0x55, 0x05, 0x23, 0x0F, 0xE6, 0x6C, 0x27, 0x0A, + 0x3F, 0x1E, 0x13, 0x97, 0x2D, 0x00, 0x09, 0x77, 0xAE, 0x03, 0x9C, 0x2B, 0x39, 0xFF, 0xFF, 0xD1, + 0xBE, 0x1C, 0x22, 0x07, 0xD7, 0x16, 0x00, 0x14, 0xFC, 0x98, 0x5E, 0x09, 0x67, 0x63, 0x29, 0xFF, + 0x86, 0x16, 0x00, 0x13, 0x2B, 0xB2, 0x02, 0x19, 0xD7, 0x0E, 0x0C, 0x04, 0x30, 0x17, 0x2F, 0xFE, + 0x39, 0xF6, 0x00, 0x02, 0x18, 0xFF, 0x16, 0x6E, 0x13, 0xBA, 0x65, 0x1B, 0x0B, 0x01, 0x00, 0x1F, + 0xBC, 0x17, 0x00, 0x4A, 0x0B, 0xA0, 0x0A, 0x89, 0x0A, 0x33, 0x5B, 0x75, 0x7A, 0x70, 0x50, 0x29, + 0xA0, 0x0A, 0x24, 0x40, 0xA8, 0x4E, 0x25, 0x25, 0xE7, 0x90, 0xFF, 0x69, 0x28, 0x12, 0xA3, 0x49, + 0x00, 0x22, 0xF8, 0x7E, 0x7D, 0x01, 0x2B, 0x17, 0xD7, 0x62, 0x00, 0x32, 0xAD, 0x04, 0x00, 0x1B, + 0x0F, 0x0B, 0x7A, 0x00, 0x16, 0x85, 0x66, 0x17, 0x08, 0x91, 0x00, 0x44, 0xFB, 0x2C, 0x00, 0x01, + 0xF0, 0x03, 0x55, 0xE5, 0x9B, 0x88, 0xAA, 0xF6, 0xB6, 0x21, 0x04, 0xA0, 0x03, 0x10, 0xBA, 0x83, + 0x1C, 0x13, 0x1E, 0xDA, 0x0A, 0x48, 0xF2, 0x09, 0x80, 0xFF, 0x22, 0x25, 0x04, 0x37, 0x9C, 0x24, + 0x3B, 0xA7, 0xC0, 0x0A, 0x03, 0x6D, 0xBE, 0x03, 0x2E, 0x03, 0x29, 0xCB, 0xFF, 0x68, 0x1D, 0x03, + 0xDE, 0x62, 0x2A, 0x83, 0xD9, 0xF8, 0x25, 0x03, 0xAA, 0x02, 0x2A, 0x8E, 0xDC, 0xE8, 0x1D, 0x03, + 0xD4, 0x08, 0x31, 0x88, 0xBE, 0xDC, 0x01, 0x00, 0x04, 0x24, 0xB3, 0x1F, 0xD3, 0xD7, 0x02, 0x01, + 0x3B, 0x00, 0x05, 0xF5, 0xA7, 0x70, 0x07, 0x3C, 0x1F, 0x0C, 0x33, 0x0E, 0x23, 0x00, 0x07, 0xE6, + 0x07, 0x08, 0xCE, 0x23, 0x46, 0x02, 0x1B, 0x58, 0xD1, 0x5F, 0x48, 0x04, 0x01, 0x00, 0x06, 0x68, + 0x9F, 0x18, 0xFD, 0xCE, 0x03, 0x14, 0xD8, 0x16, 0x00, 0x3E, 0xF1, 0x52, 0x00, 0x17, 0x00, 0x4F, + 0xFC, 0x8A, 0x16, 0x00, 0x17, 0x00, 0x00, 0x3F, 0xFF, 0xE3, 0x5A, 0x17, 0x00, 0x02, 0x4F, 0xFF, + 0xFF, 0x90, 0x01, 0x17, 0x00, 0x02, 0x27, 0xFF, 0x74, 0x17, 0x00, 0x43, 0x04, 0x08, 0x29, 0x7A, + 0x74, 0x09, 0x1B, 0xFA, 0xC3, 0x3A, 0x13, 0x37, 0x01, 0x04, 0x2A, 0x92, 0x00, 0x01, 0x00, 0x13, + 0x93, 0x0F, 0x06, 0x0B, 0x01, 0x54, 0x2F, 0x36, 0xFF, 0xE8, 0x21, 0x02, 0x2F, 0x05, 0xF7, 0x45, + 0x2B, 0x03, 0x03, 0x90, 0x00, 0x31, 0x77, 0x5A, 0x68, 0x01, 0x00, 0x1A, 0x34, 0xB5, 0x01, 0x1B, + 0x8B, 0xB5, 0x01, 0x03, 0x07, 0x8F, 0x12, 0x8E, 0x70, 0x1E, 0x28, 0xFF, 0x87, 0x48, 0x0F, 0x4A, + 0xFF, 0xFF, 0x87, 0xD0, 0x79, 0x01, 0x13, 0xCD, 0xDC, 0x6A, 0x27, 0xB3, 0xFF, 0x17, 0x23, 0x04, + 0xA1, 0x26, 0x23, 0xFF, 0x51, 0x13, 0x58, 0x27, 0xE6, 0x01, 0x9B, 0x31, 0x49, 0xFF, 0xFF, 0x2F, + 0x62, 0xB7, 0x0A, 0x03, 0xE2, 0xDD, 0x24, 0xEC, 0x03, 0x16, 0x0D, 0x10, 0xC8, 0x1A, 0x0F, 0x13, + 0x21, 0x9D, 0x51, 0x15, 0xA7, 0xE8, 0x0C, 0x66, 0xFF, 0xE9, 0x9A, 0x80, 0xA3, 0xF4, 0x73, 0x0A, + 0x1E, 0x40, 0x0E, 0x03, 0x25, 0xCA, 0x01, 0x96, 0x16, 0x08, 0x93, 0xE4, 0x01, 0x6A, 0x22, 0x1B, + 0x12, 0x1A, 0xA2, 0x04, 0xDE, 0x0F, 0x19, 0x12, 0x9D, 0x25, 0x15, 0xF6, 0xDE, 0xE4, 0x34, 0x01, + 0x4A, 0xB3, 0x07, 0x1D, 0x39, 0xED, 0x92, 0x1D, 0xDB, 0x07, 0x66, 0x35, 0x5F, 0x78, 0x7E, 0x74, + 0x56, 0x94, 0x0E, 0x0B, 0xB4, 0x32, 0x00, 0x01, 0x00, 0x14, 0x6D, 0xA5, 0x04, 0x1A, 0x6B, 0x18, + 0x00, 0x06, 0x3A, 0x5C, 0x0A, 0x1A, 0x06, 0x05, 0x64, 0x2D, 0x0D, 0x19, 0x00, 0x1F, 0xB8, 0x19, + 0x00, 0x04, 0x2F, 0x28, 0xFF, 0x19, 0x00, 0x04, 0x1F, 0x94, 0x19, 0x00, 0x04, 0x2F, 0x0F, 0xF4, + 0x19, 0x00, 0x04, 0x2F, 0x70, 0xFF, 0x19, 0x00, 0x03, 0x11, 0x03, 0x35, 0x04, 0x1E, 0xE1, 0x19, + 0x00, 0x01, 0x3E, 0x0F, 0x2E, 0xF9, 0x90, 0x19, 0x00, 0x01, 0x02, 0x2D, 0x2D, 0xAF, 0x80, 0x19, + 0x00, 0x12, 0x2A, 0x82, 0x6B, 0x0E, 0x19, 0x00, 0x01, 0xC4, 0x07, 0x2D, 0xF3, 0x09, 0x19, 0x00, + 0x22, 0x10, 0xF5, 0x58, 0x33, 0x0D, 0x19, 0x00, 0x13, 0x72, 0x27, 0x19, 0x0C, 0x19, 0x00, 0x02, + 0x4F, 0x1D, 0x2D, 0xEB, 0x05, 0x19, 0x00, 0x14, 0x4E, 0xD6, 0x1B, 0x0C, 0x19, 0x00, 0x14, 0xBC, + 0xE6, 0x19, 0x0B, 0x19, 0x00, 0x24, 0x2B, 0xFF, 0xEC, 0x6B, 0x0B, 0x19, 0x00, 0x15, 0x98, 0x2D, + 0x1C, 0x0A, 0x19, 0x00, 0x25, 0x11, 0xF6, 0x97, 0x31, 0x0A, 0x19, 0x00, 0x02, 0x2C, 0x19, 0x2C, + 0xD5, 0x01, 0x19, 0x00, 0x26, 0x03, 0xE0, 0x0C, 0x1B, 0x09, 0x19, 0x00, 0x03, 0x0E, 0x09, 0x1D, + 0x22, 0x19, 0x00, 0x17, 0xBE, 0xB8, 0x22, 0x08, 0x19, 0x00, 0x18, 0x16, 0xE8, 0x1C, 0x08, 0x19, + 0x00, 0x16, 0x1C, 0xF2, 0x32, 0x04, 0x01, 0x34, 0x01, 0x0D, 0x00, 0x3F, 0xDD, 0x1C, 0xFF, 0x01, + 0x00, 0x03, 0x1F, 0xE0, 0x19, 0x00, 0x51, 0x09, 0x68, 0x15, 0x03, 0xFF, 0x1A, 0x19, 0x6F, 0x66, + 0x16, 0x0D, 0xFA, 0x00, 0x0F, 0x19, 0x00, 0xCE, 0x00, 0x4C, 0x0C, 0x01, 0x50, 0x08, 0x2E, 0x75, + 0xFC, 0x01, 0x00, 0x1E, 0x08, 0x5F, 0x29, 0x03, 0xBA, 0x36, 0x1F, 0x7E, 0x17, 0x00, 0x03, 0x1F, + 0x81, 0x17, 0x00, 0x03, 0x1F, 0x85, 0x17, 0x00, 0x03, 0x1F, 0x89, 0x17, 0x00, 0x03, 0x1F, 0x8D, + 0x17, 0x00, 0x03, 0x02, 0xF0, 0x03, 0x19, 0xCF, 0x2C, 0x17, 0x14, 0x01, 0x6F, 0x04, 0x0D, 0x95, + 0x29, 0x02, 0x2E, 0x03, 0x1F, 0xB8, 0x78, 0x29, 0x02, 0x2F, 0xFF, 0xAD, 0xB2, 0x2B, 0x03, 0x1C, + 0xA1, 0x17, 0x00, 0x17, 0xA3, 0x79, 0x2D, 0x0C, 0xA3, 0x16, 0x2C, 0xFF, 0x8B, 0x17, 0x00, 0x16, + 0xAA, 0xE1, 0x13, 0x49, 0x06, 0x08, 0x01, 0x00, 0x40, 0x4A, 0xC8, 0xFF, 0x74, 0x05, 0x5F, 0xB4, + 0xE5, 0xFF, 0xFF, 0xF5, 0xCB, 0x8C, 0x2A, 0x1B, 0x1E, 0x15, 0x98, 0x21, 0x08, 0x39, 0xFE, 0x94, + 0x07, 0x15, 0xB9, 0x05, 0xFB, 0x00, 0x25, 0xB7, 0x04, 0x2B, 0x26, 0x09, 0x13, 0x01, 0x16, 0x7F, + 0xCE, 0x11, 0x09, 0xDA, 0x09, 0x16, 0x17, 0xB2, 0x06, 0x65, 0xB3, 0x33, 0x08, 0x25, 0x8B, 0xFF, + 0xDD, 0x21, 0x03, 0xC8, 0x27, 0x27, 0xB0, 0x02, 0x06, 0x02, 0x14, 0xDB, 0x6C, 0x24, 0x12, 0xF9, + 0xB6, 0x08, 0x24, 0x11, 0xFA, 0xC9, 0x1D, 0x20, 0xB5, 0xE4, 0x01, 0x00, 0x17, 0x9A, 0x3E, 0x6D, + 0x0D, 0x93, 0x0C, 0x04, 0x37, 0x25, 0x2B, 0xFF, 0x74, 0x17, 0x00, 0x2C, 0x86, 0xFF, 0x4A, 0x74, + 0x17, 0x00, 0xF6, 0x30, 0x02, 0xD7, 0x20, 0x0D, 0x01, 0x06, 0x1C, 0xAE, 0xC4, 0x06, 0x0F, 0x17, + 0x00, 0x03, 0x03, 0x7A, 0x22, 0x22, 0xA9, 0x15, 0xA5, 0x0D, 0x1A, 0x26, 0x45, 0x00, 0x37, 0x9A, + 0x6D, 0xFF, 0x73, 0x22, 0x05, 0x02, 0x15, 0x37, 0x8C, 0x63, 0xFF, 0x6D, 0x1E, 0x05, 0x04, 0x03, + 0x26, 0x75, 0x4B, 0x71, 0x97, 0x05, 0x71, 0x16, 0x33, 0xFF, 0xFF, 0x53, 0xEB, 0x22, 0x28, 0xFD, + 0x08, 0xC3, 0x01, 0x24, 0xFF, 0x23, 0x72, 0x37, 0x17, 0x3C, 0x15, 0x18, 0x00, 0x5E, 0x08, 0x18, + 0xD3, 0x81, 0x26, 0x15, 0x40, 0xD6, 0x6F, 0x03, 0x25, 0x03, 0x10, 0xFC, 0x83, 0x18, 0x25, 0x1B, + 0xD3, 0x6F, 0x1F, 0x03, 0x12, 0x26, 0x53, 0xFF, 0xFF, 0xC1, 0x91, 0xA6, 0x14, 0x07, 0x10, 0xD0, + 0x93, 0x01, 0x1D, 0x90, 0xCC, 0x01, 0x01, 0x77, 0x1E, 0x2B, 0x0C, 0xD0, 0x16, 0x00, 0x12, 0x7C, + 0x95, 0x00, 0x19, 0x15, 0xE5, 0xBF, 0x15, 0xF1, 0x39, 0x08, 0x34, 0x02, 0x59, 0xC6, 0x0A, 0x13, + 0x29, 0xED, 0x93, 0x2F, 0x9D, 0x84, 0x12, 0x3F, 0x63, 0x77, 0x7E, 0x76, 0x55, 0x2B, 0x6E, 0x0E, + 0x2A, 0x1B, 0x18, 0x98, 0x29, 0x8A, 0x10, 0x3D, 0x67, 0x78, 0x78, 0x65, 0x3F, 0x15, 0x70, 0x01, + 0x24, 0x4B, 0xBD, 0xC1, 0x05, 0x26, 0xC1, 0x60, 0xF5, 0x0D, 0x28, 0x14, 0xAB, 0x7E, 0x00, 0x14, + 0xC8, 0x84, 0x2C, 0x1B, 0x13, 0x50, 0x0C, 0x13, 0xE5, 0x6B, 0x0A, 0x0D, 0x15, 0x09, 0x02, 0x5B, + 0x27, 0x1E, 0x4B, 0xC0, 0x02, 0x23, 0x6A, 0x00, 0x05, 0x62, 0x01, 0x72, 0x10, 0x36, 0x90, 0x90, + 0xCB, 0x94, 0x6D, 0x04, 0xB8, 0x4B, 0x01, 0x10, 0xE7, 0x26, 0x01, 0x77, 0xD3, 0x16, 0x03, 0xC5, + 0x22, 0x11, 0xF0, 0xD3, 0x18, 0x25, 0x02, 0xE1, 0xA8, 0x24, 0x19, 0xB8, 0x70, 0x02, 0x14, 0xA0, + 0x36, 0x0C, 0x29, 0x01, 0xEC, 0x1B, 0x05, 0x14, 0x7B, 0x7D, 0x6B, 0x19, 0x11, 0x50, 0x14, 0x04, + 0xED, 0x23, 0x13, 0xB9, 0x93, 0x07, 0x05, 0x82, 0x10, 0x21, 0x1F, 0x50, 0x01, 0x00, 0x15, 0x3B, + 0xB0, 0x36, 0x2F, 0x1E, 0x00, 0x4C, 0x09, 0x03, 0x0C, 0xFB, 0x37, 0x15, 0x4F, 0xB4, 0x3A, 0x0A, + 0x01, 0x00, 0x04, 0x7E, 0x20, 0x1F, 0x10, 0x18, 0x00, 0x08, 0x3E, 0x01, 0x09, 0x06, 0x18, 0x00, + 0xA9, 0x0A, 0x6D, 0xBE, 0xEF, 0xFF, 0xFF, 0xE7, 0xB6, 0x64, 0x09, 0x18, 0x00, 0x15, 0x34, 0x03, + 0x0C, 0x28, 0xE8, 0x42, 0x18, 0x00, 0x07, 0x26, 0xF2, 0x27, 0xFD, 0x52, 0x18, 0x00, 0x09, 0x48, + 0x02, 0x1F, 0x23, 0x18, 0x00, 0x03, 0x27, 0xFF, 0xA0, 0x18, 0x00, 0x62, 0xD4, 0x4D, 0x0E, 0x13, + 0x5B, 0xE7, 0x0C, 0x00, 0x25, 0xFA, 0x19, 0x18, 0x00, 0x28, 0xCE, 0x0B, 0x1F, 0x0C, 0x3A, 0x60, + 0x00, 0x50, 0x38, 0x01, 0x14, 0xC8, 0x52, 0x36, 0x0B, 0xF0, 0x00, 0x03, 0x8A, 0x07, 0x1C, 0xCF, + 0x18, 0x00, 0x03, 0xA7, 0x0B, 0x1C, 0xEB, 0x18, 0x00, 0x04, 0x40, 0x10, 0x1B, 0x07, 0x18, 0x00, + 0x04, 0x8E, 0x16, 0x2A, 0x10, 0x4F, 0x18, 0x00, 0x04, 0x07, 0xAF, 0x2A, 0x12, 0x47, 0x18, 0x00, + 0x04, 0x0F, 0x00, 0x2A, 0x0B, 0x33, 0xB0, 0x01, 0x03, 0xB1, 0x25, 0x3A, 0xF5, 0x01, 0x1B, 0x43, + 0x79, 0x14, 0x60, 0xA1, 0xF0, 0x04, 0x50, 0x36, 0x19, 0x43, 0x4C, 0x04, 0x15, 0xBE, 0xA6, 0x0C, + 0x17, 0x7C, 0x8E, 0x0A, 0x01, 0x05, 0x05, 0x03, 0x3F, 0x21, 0x11, 0xDA, 0x79, 0x03, 0x25, 0x18, + 0xFA, 0xEC, 0x4E, 0x04, 0x9C, 0x53, 0x00, 0x10, 0x9E, 0x13, 0x05, 0x08, 0x0C, 0x27, 0xEE, 0x0A, + 0xD8, 0x05, 0x24, 0xCF, 0x89, 0x09, 0x0D, 0x02, 0xDB, 0x1C, 0x1D, 0x38, 0x50, 0x36, 0x28, 0xF9, + 0x21, 0x28, 0x24, 0x0D, 0xED, 0x2C, 0x1A, 0x06, 0x19, 0xC4, 0x24, 0xFF, 0xB3, 0xEC, 0x08, 0x28, + 0x08, 0x95, 0x4B, 0x00, 0x17, 0x97, 0x48, 0x11, 0x23, 0x39, 0xB5, 0x7E, 0x0F, 0x3A, 0xFA, 0xB3, + 0x3D, 0x90, 0x02, 0x75, 0x11, 0x3F, 0x69, 0x7C, 0x7C, 0x67, 0x43, 0x39, 0x1C, 0x22, 0x1B, 0x13, + 0xF0, 0x35, 0x1D, 0xE5, 0x39, 0x08, 0x2D, 0xA6, 0xE8, 0x40, 0x02, 0x1F, 0xA8, 0x13, 0x00, 0x25, + 0x35, 0x87, 0x13, 0x14, 0x01, 0x00, 0x03, 0x63, 0x7C, 0x08, 0x16, 0x33, 0x03, 0xEE, 0x03, 0x01, + 0x08, 0x9D, 0x08, 0xBC, 0x3E, 0x2E, 0xFF, 0xE0, 0x01, 0x36, 0x05, 0x58, 0x3C, 0x06, 0x32, 0x01, + 0x08, 0x64, 0x1D, 0x03, 0x93, 0x0E, 0x1D, 0x3A, 0xD4, 0x0E, 0x02, 0x13, 0xE4, 0x08, 0xC8, 0x3F, + 0x2C, 0xFF, 0xCB, 0xF0, 0x2F, 0x06, 0x52, 0x71, 0x07, 0xEC, 0x25, 0x08, 0x71, 0x1C, 0x1D, 0xDD, + 0xAE, 0x31, 0x14, 0x16, 0xE9, 0x38, 0x2A, 0x00, 0x00, 0x2F, 0x0C, 0x2E, 0xFF, 0xB6, 0x4C, 0x07, + 0x08, 0x01, 0x13, 0x03, 0xDA, 0x10, 0x07, 0x6B, 0x35, 0x2D, 0x04, 0xF4, 0x5B, 0x04, 0x3C, 0x2F, + 0xFF, 0xFF, 0xF0, 0x35, 0x1E, 0x68, 0xD4, 0x39, 0x2C, 0xA0, 0xFF, 0xA7, 0x9F, 0x04, 0x0D, 0xB0, + 0x04, 0x12, 0x75, 0x05, 0xD5, 0x40, 0x3D, 0xFF, 0xF6, 0x05, 0xE4, 0x04, 0x2C, 0xC3, 0x00, 0x3E, + 0x7C, 0x09, 0x18, 0x09, 0x1D, 0xBA, 0x36, 0x08, 0x01, 0x2C, 0xC4, 0x07, 0x50, 0x40, 0x05, 0xF2, + 0x0C, 0x2C, 0xFF, 0xE5, 0x9B, 0x20, 0x0A, 0xFB, 0x07, 0x03, 0xB1, 0x1A, 0x2D, 0x76, 0x00, 0x5D, + 0x11, 0x07, 0x65, 0x20, 0x03, 0x93, 0xB3, 0x02, 0xFF, 0xE1, 0x08, 0x6C, 0x8E, 0x27, 0xFF, 0xD0, + 0x38, 0x00, 0x03, 0x98, 0x07, 0x1C, 0x98, 0xA2, 0x1E, 0x06, 0xD9, 0x53, 0x00, 0xA9, 0x00, 0x1D, + 0xEE, 0xDF, 0x15, 0x03, 0x10, 0x28, 0x17, 0xF0, 0xFB, 0x14, 0x03, 0x14, 0x04, 0x1D, 0xBA, 0x7A, + 0x0A, 0x04, 0xCE, 0x3A, 0x08, 0x7C, 0x79, 0x1F, 0x4C, 0x68, 0x1E, 0x07, 0x8A, 0x08, 0x31, 0x5B, + 0x75, 0x7A, 0x6E, 0x48, 0x1C, 0x63, 0x0F, 0x14, 0x97, 0xAA, 0x2D, 0x25, 0xCC, 0x67, 0x7B, 0x01, + 0x28, 0x01, 0x71, 0x0A, 0x41, 0x2C, 0xCF, 0x26, 0x7A, 0x3C, 0x02, 0x01, 0x00, 0x12, 0xEA, 0xB4, + 0x04, 0x1C, 0x53, 0x4D, 0x03, 0x01, 0xC8, 0xA4, 0x24, 0x07, 0xDE, 0x09, 0x2C, 0x14, 0x9C, 0x6B, + 0x16, 0x16, 0x5B, 0x7A, 0x32, 0x66, 0xF2, 0x32, 0x00, 0x00, 0x05, 0xAA, 0x1F, 0x1C, 0x17, 0xAD, + 0x83, 0x2B, 0x24, 0x13, 0xF6, 0x23, 0x0E, 0x02, 0x01, 0x43, 0x0B, 0xF1, 0x27, 0x1B, 0x66, 0xD3, + 0x02, 0x14, 0x7E, 0xD5, 0x85, 0x28, 0x36, 0xFF, 0x72, 0x29, 0x03, 0x62, 0x2F, 0x14, 0xAA, 0x9C, + 0x01, 0x28, 0xC2, 0x00, 0xAD, 0x00, 0x14, 0xB8, 0x17, 0x00, 0x28, 0xC7, 0x00, 0x4D, 0x2B, 0x14, + 0xB9, 0x2F, 0x2B, 0x27, 0xD6, 0x00, 0xE9, 0x33, 0x43, 0xFF, 0xA7, 0x00, 0x14, 0xB9, 0x06, 0x17, + 0x01, 0xCC, 0x30, 0x24, 0xFF, 0x8A, 0x66, 0x43, 0x03, 0x28, 0x33, 0x02, 0xDE, 0x42, 0x24, 0xFF, + 0x59, 0xD8, 0x69, 0x02, 0xFE, 0x37, 0x12, 0x05, 0xC9, 0x1C, 0x24, 0xFD, 0x16, 0xD8, 0x42, 0x36, + 0xFF, 0xD5, 0x07, 0xE8, 0x14, 0x26, 0xB7, 0x00, 0xE8, 0xC7, 0x57, 0xAF, 0x20, 0x06, 0x55, 0xF2, + 0x95, 0x09, 0x3F, 0x28, 0xF5, 0xFF, 0xA7, 0x36, 0x02, 0x1A, 0x52, 0x9D, 0x1C, 0x14, 0xC8, 0x9F, + 0x26, 0x18, 0x54, 0x6E, 0x05, 0x14, 0xC5, 0x42, 0x05, 0x19, 0x20, 0x4E, 0xC9, 0x22, 0xF7, 0x67, + 0xC3, 0x00, 0x1C, 0x27, 0x04, 0x05, 0x01, 0x4B, 0x02, 0x2D, 0x0C, 0xDB, 0x1A, 0x05, 0x16, 0x5A, + 0x1E, 0x04, 0x53, 0xFE, 0x82, 0x1F, 0x0A, 0x42, 0x67, 0x02, 0x22, 0xEF, 0x10, 0xBF, 0xAE, 0x04, + 0x79, 0x17, 0x24, 0x12, 0xE5, 0xC2, 0x01, 0x19, 0x58, 0x04, 0x7C, 0x03, 0xD0, 0x32, 0x39, 0xD5, + 0x00, 0x97, 0x55, 0x13, 0x13, 0x1D, 0x5E, 0x00, 0x28, 0x15, 0xC3, 0xE0, 0x2C, 0x05, 0xF5, 0x1D, + 0x2A, 0x45, 0xDD, 0x33, 0xC8, 0x03, 0x96, 0x1C, 0x13, 0x60, 0xA6, 0xA7, 0x1A, 0x35, 0x06, 0x20, + 0x2A, 0x6E, 0xE8, 0x4D, 0x04, 0x03, 0x11, 0x04, 0x26, 0x6C, 0xDD, 0x97, 0x25, 0x07, 0xD1, 0x04, + 0x29, 0x62, 0xBF, 0x2B, 0x3E, 0x23, 0x00, 0xCF, 0x73, 0x00, 0x03, 0x44, 0x30, 0x03, 0xEA, 0x7A, + 0x13, 0x02, 0x89, 0x01, 0x38, 0x26, 0x6E, 0xFF, 0x8F, 0x7E, 0x13, 0x2E, 0xBF, 0x02, 0x13, 0x06, + 0xC3, 0x33, 0x28, 0xF9, 0x19, 0x37, 0x19, 0x15, 0xAE, 0xF9, 0x15, 0x10, 0xC3, 0x28, 0x1B, 0x24, + 0x55, 0xFC, 0x45, 0x40, 0x05, 0x77, 0x87, 0x47, 0xEE, 0xA6, 0x92, 0xC5, 0x43, 0xC6, 0x2D, 0x03, + 0xC3, 0x70, 0x01, 0x11, 0x53, 0xDB, 0x32, 0x1F, 0xDE, 0x1A, 0x17, 0x00, 0x00, 0xD7, 0x07, 0x09, + 0x4B, 0x41, 0x25, 0xF8, 0x6D, 0x6E, 0xA1, 0x24, 0x51, 0xB8, 0x14, 0x02, 0x38, 0xE8, 0x91, 0x1F, + 0xDF, 0x03, 0x9F, 0x0F, 0x38, 0x62, 0x78, 0x7E, 0x73, 0x4F, 0x26, 0x03, 0x7C, 0x22, 0x05, 0x7A, + 0x2E, 0x5B, 0x73, 0x7B, 0x6F, 0x52, 0x1F, 0xED, 0x32, 0x14, 0x8A, 0xC6, 0x09, 0x26, 0xD1, 0x69, + 0x8F, 0x05, 0x27, 0x4F, 0xED, 0x7C, 0x00, 0x14, 0xD1, 0xC4, 0x3A, 0x1A, 0x5D, 0x2E, 0x08, 0x12, + 0xEE, 0x88, 0x09, 0x2C, 0x32, 0xFA, 0x64, 0x22, 0x00, 0x8F, 0x02, 0x2D, 0x01, 0xC7, 0xEF, 0x00, + 0x17, 0x8D, 0x69, 0x19, 0x34, 0xF8, 0xAB, 0x89, 0x09, 0x14, 0x24, 0xF5, 0x12, 0xEB, 0x0E, 0x20, + 0xFF, 0xF4, 0x75, 0x12, 0x24, 0x50, 0xFE, 0x99, 0x33, 0x13, 0x0A, 0x02, 0x16, 0x17, 0x77, 0x54, + 0x0F, 0x22, 0xFF, 0xD0, 0xA4, 0x87, 0x05, 0x2B, 0x04, 0x13, 0x3F, 0x0E, 0x00, 0x13, 0x14, 0xA2, + 0x7E, 0x1A, 0xE6, 0xEB, 0xA5, 0x2A, 0x45, 0x8F, 0x73, 0x3D, 0x03, 0x16, 0x1A, 0x13, 0x64, 0xC1, + 0x03, 0x1A, 0xB2, 0xFB, 0x05, 0x37, 0x82, 0xC0, 0xFF, 0x6C, 0x3B, 0x05, 0x62, 0x7D, 0x13, 0x95, + 0xCD, 0x00, 0x1A, 0xA8, 0x80, 0x05, 0x2A, 0x9B, 0xC5, 0x07, 0x08, 0x03, 0x17, 0x00, 0x29, 0x9C, + 0xB6, 0x17, 0x42, 0x05, 0x17, 0x00, 0x03, 0xC4, 0x07, 0x1B, 0xC1, 0x17, 0x00, 0x03, 0x72, 0x03, + 0x1B, 0xE4, 0x17, 0x00, 0x28, 0x55, 0xFF, 0x70, 0x04, 0x13, 0x02, 0xE1, 0x02, 0x38, 0x9C, 0x13, + 0xFD, 0x0C, 0x21, 0x04, 0x38, 0x2F, 0x15, 0x9C, 0xA3, 0x0F, 0x65, 0x83, 0x1D, 0x02, 0x29, 0x97, + 0xFF, 0x17, 0x00, 0x2F, 0x53, 0xFF, 0x01, 0x00, 0x00, 0x1E, 0x9C, 0x01, 0x33, 0x03, 0x62, 0x45, + 0x08, 0xFD, 0x32, 0x25, 0xFE, 0xF2, 0x17, 0x00, 0x25, 0x00, 0x22, 0xC1, 0x19, 0x36, 0xFA, 0x5E, + 0xD0, 0x17, 0x00, 0xB5, 0x00, 0x02, 0x50, 0xAB, 0xDF, 0xFF, 0xFF, 0xFE, 0xDA, 0x97, 0x28, 0xB8, + 0x00, 0x05, 0x82, 0x06, 0x11, 0x12, 0x80, 0x10, 0x0C, 0x17, 0x00, 0x0A, 0xC2, 0x06, 0x0C, 0x17, + 0x00, 0x2C, 0xD1, 0xFF, 0xD4, 0xA7, 0x07, 0xA4, 0x30, 0x2F, 0xFF, 0x96, 0x77, 0x39, 0x01, 0x51, + 0xFF, 0xFF, 0x87, 0x19, 0x38, 0x01, 0x00, 0x04, 0xBB, 0x06, 0x03, 0xF5, 0x35, 0x29, 0x77, 0x6E, + 0xE3, 0x01, 0x14, 0x0A, 0x25, 0x44, 0x15, 0x61, 0x38, 0x44, 0x07, 0x84, 0x07, 0x23, 0xFF, 0x39, + 0x56, 0x02, 0x28, 0xEB, 0x01, 0x53, 0x06, 0x39, 0xFA, 0x0B, 0x1A, 0x74, 0x0C, 0x14, 0xB0, 0x86, + 0x9F, 0x22, 0x01, 0xE1, 0x0A, 0x00, 0x25, 0xB8, 0x08, 0x72, 0x49, 0x01, 0xB6, 0x10, 0x04, 0x6C, + 0x12, 0x44, 0xE1, 0x96, 0x80, 0xB1, 0x32, 0x01, 0x5D, 0x18, 0x00, 0x00, 0x29, 0xFC, 0x6E, 0x01, + 0x2F, 0x94, 0x00, 0xA3, 0x0F, 0x01, 0x11, 0xE9, 0x4C, 0x0C, 0x1B, 0x09, 0x47, 0x45, 0x13, 0xF7, + 0x30, 0x2E, 0x28, 0x0B, 0xA2, 0x16, 0x00, 0x16, 0xDA, 0x1D, 0xA9, 0x24, 0x40, 0xAC, 0xC5, 0x07, + 0x38, 0xE0, 0x7A, 0x0A, 0x23, 0x01, 0x85, 0x0C, 0x38, 0x5E, 0x79, 0x7E, 0x73, 0x4F, 0x24, 0x13, + 0x0A, 0x40, 0x0C, 0x08, 0x19, 0x03, 0x21, 0x04, 0x12, 0xBA, 0x59, 0x0B, 0x13, 0x3F, 0x1A, 0x0C, + 0x1F, 0x40, 0x08, 0x00, 0x15, 0x1E, 0x03, 0xD4, 0x51, 0x0F, 0x01, 0x00, 0x27, 0x0F, 0x88, 0x00, + 0x30, 0x55, 0x0D, 0x08, 0x23, 0x03, 0xFC, 0x58, 0x4C, 0x23, 0xFC, 0x38, 0xE2, 0x90, 0x0F, 0x08, + 0x00, 0x16, 0x0E, 0xA4, 0x52, 0x0F, 0x01, 0x00, 0x4B, 0x12, 0xC1, 0xA8, 0x00, 0x13, 0x5B, 0x3C, + 0x13, 0x1F, 0x5C, 0x08, 0x00, 0x14, 0x53, 0x5B, 0x04, 0x04, 0x04, 0x0A, 0x78, 0x29, 0x12, 0x37, + 0x00, 0x07, 0x20, 0x02, 0xB1, 0x3C, 0x42, 0x31, 0x17, 0x5B, 0xC2, 0x31, 0x03, 0x01, 0x27, 0x4E, + 0x80, 0xE7, 0x1B, 0x00, 0x06, 0xF2, 0xFF, 0xFF, 0xC9, 0x61, 0x37, 0x30, 0x5E, 0x67, 0x31, 0xD5, + 0x00, 0x4F, 0x14, 0x11, 0x1D, 0x01, 0x71, 0x6F, 0x00, 0x1B, 0x0D, 0xFF, 0x47, 0x29, 0x3A, 0xDD, + 0x87, 0xAE, 0x39, 0x05, 0x84, 0xFD, 0x98, 0xAE, 0x29, 0x28, 0xCC, 0x89, 0x81, 0x39, 0x01, 0x6B, + 0xF6, 0x9A, 0x81, 0x29, 0x19, 0xB7, 0xDB, 0x07, 0x48, 0x00, 0x52, 0xEC, 0xFF, 0x11, 0x00, 0x15, + 0x0E, 0xB4, 0x37, 0x11, 0xD2, 0x47, 0x0A, 0x25, 0x3D, 0xDF, 0xAE, 0x8F, 0x00, 0x3F, 0x03, 0x33, + 0x06, 0x87, 0xFE, 0x0F, 0x00, 0x11, 0xE7, 0x05, 0x08, 0x13, 0x2A, 0x03, 0x08, 0x04, 0x18, 0xB2, + 0x14, 0x40, 0x7E, 0x1E, 0x38, 0xF5, 0x65, 0x01, 0xCE, 0x0B, 0x39, 0xFF, 0xCC, 0x26, 0xDF, 0x0B, + 0x3A, 0xFE, 0x86, 0x06, 0xF0, 0x0B, 0x1C, 0x4C, 0x01, 0x0C, 0x2C, 0xDE, 0x39, 0x12, 0x0C, 0x36, + 0xFC, 0x7D, 0x03, 0x69, 0x7E, 0x03, 0xD0, 0x07, 0x03, 0x21, 0x07, 0x06, 0x97, 0x00, 0x14, 0xF0, + 0x19, 0xBD, 0x15, 0x3C, 0xB9, 0x00, 0x13, 0xA1, 0x19, 0x41, 0x15, 0x0E, 0xBF, 0x22, 0x14, 0xDD, + 0x5A, 0x81, 0x14, 0x51, 0x45, 0xB0, 0x14, 0xFC, 0xF6, 0xAF, 0x15, 0x18, 0x93, 0x1B, 0x04, 0x0B, + 0x2D, 0x3A, 0x01, 0x66, 0xF5, 0x32, 0x01, 0x4B, 0x00, 0x00, 0x24, 0xC7, 0x11, 0x00, 0x4C, 0x00, + 0x04, 0x7D, 0xFC, 0x1F, 0xB0, 0x2C, 0x35, 0xD8, 0x30, 0xB0, 0x2C, 0x0A, 0x93, 0x41, 0xB0, 0x20, + 0x00, 0x47, 0xF8, 0x00, 0x53, 0x17, 0x11, 0x10, 0x03, 0x0D, 0xDD, 0x8C, 0x08, 0x4A, 0x0F, 0x1B, + 0xAA, 0x0F, 0x41, 0x2F, 0xFF, 0xAC, 0x11, 0x00, 0x20, 0x2A, 0x13, 0x14, 0x01, 0x00, 0x1F, 0x0E, + 0x09, 0x03, 0x20, 0x1B, 0x0C, 0x01, 0x00, 0x1F, 0x09, 0x99, 0x00, 0x31, 0x0D, 0x11, 0x00, 0x1B, + 0x04, 0x01, 0x00, 0x41, 0x03, 0x14, 0x11, 0x1D, 0xC3, 0xF1, 0x2B, 0x05, 0x30, 0x90, 0x00, 0x3A, + 0x08, 0xFA, 0x77, 0x28, 0x03, 0x5B, 0x08, 0xFF, 0xFF, 0xC3, 0x21, 0x11, 0x00, 0x4A, 0xFF, 0xF3, + 0x61, 0x01, 0x11, 0x00, 0x4B, 0xFF, 0xFF, 0xAE, 0x15, 0x11, 0x00, 0x3B, 0xFF, 0xE8, 0x4B, 0x11, + 0x00, 0x33, 0xFF, 0xFF, 0x97, 0x42, 0x0E, 0x15, 0x02, 0x87, 0x21, 0x14, 0xDB, 0x30, 0x02, 0x15, + 0x4F, 0x30, 0x02, 0x13, 0x81, 0x81, 0x09, 0x15, 0x18, 0xCA, 0x3A, 0x13, 0xCA, 0x7B, 0x09, 0x24, + 0x01, 0x6D, 0xE0, 0x05, 0x23, 0xF6, 0x6A, 0x81, 0x00, 0x15, 0x2B, 0x55, 0x46, 0x04, 0xAF, 0x4F, + 0x3C, 0x07, 0x8C, 0xFF, 0x9C, 0x0E, 0x2C, 0x43, 0xE4, 0xAD, 0x0E, 0x2A, 0x12, 0xD6, 0x11, 0x00, + 0x2A, 0x0F, 0xA5, 0x22, 0x00, 0x29, 0x3C, 0xE0, 0x44, 0x00, 0x24, 0x04, 0x82, 0xD1, 0x33, 0x02, + 0xBB, 0x89, 0x15, 0x23, 0xD7, 0x09, 0x10, 0xCC, 0xC9, 0x0E, 0x24, 0x01, 0x5E, 0x72, 0xBF, 0x20, + 0xFC, 0x82, 0xBD, 0x00, 0x15, 0x10, 0xC5, 0x8D, 0x11, 0xDB, 0x9D, 0x06, 0x25, 0x3D, 0xE1, 0x79, + 0x97, 0x01, 0x01, 0x01, 0x14, 0x07, 0x4E, 0x00, 0x2A, 0xE7, 0x49, 0x21, 0x01, 0x29, 0xAB, 0x14, + 0x32, 0x01, 0x39, 0xF1, 0x5C, 0x01, 0x43, 0x01, 0x29, 0xBE, 0x1E, 0x76, 0x01, 0x39, 0xF8, 0x71, + 0x02, 0x98, 0x01, 0x1A, 0xCF, 0x83, 0x42, 0x2E, 0x08, 0x85, 0x85, 0x40, 0x28, 0x1A, 0x16, 0xE4, + 0x26, 0x88, 0x03, 0x27, 0x50, 0x71, 0x7A, 0x75, 0x5C, 0x35, 0x81, 0xB0, 0x24, 0x19, 0x85, 0x23, + 0x4B, 0x25, 0xF8, 0xAE, 0xAB, 0x34, 0x19, 0x5B, 0xB5, 0x26, 0x28, 0xB4, 0x1C, 0xC3, 0x39, 0x06, + 0x95, 0x16, 0x11, 0x25, 0x39, 0x77, 0x0C, 0xCC, 0x07, 0x2F, 0xD7, 0x07, 0x7F, 0x19, 0x01, 0x25, + 0xFF, 0x81, 0xD9, 0x2A, 0x44, 0xFE, 0xB6, 0x89, 0x9C, 0x71, 0x09, 0x37, 0xF0, 0x08, 0x61, 0x1C, + 0x4C, 0x24, 0x0B, 0xAA, 0xE6, 0x89, 0x18, 0x8C, 0x5C, 0x10, 0x13, 0x08, 0x2C, 0x0C, 0x29, 0x93, + 0x94, 0x08, 0x11, 0x03, 0x16, 0x27, 0x29, 0xBB, 0x96, 0xC7, 0x11, 0x03, 0x14, 0x2E, 0x29, 0xDA, + 0x80, 0x30, 0x8A, 0x03, 0x81, 0x22, 0x29, 0xE2, 0x62, 0xAD, 0x44, 0x03, 0x1A, 0x4B, 0x10, 0xD9, + 0xCB, 0x4A, 0x49, 0xE0, 0xAC, 0x78, 0x32, 0x04, 0x27, 0x5B, 0xB7, 0x06, 0x7B, 0x47, 0x14, 0xFA, + 0x2E, 0x0C, 0x8C, 0x19, 0x26, 0x0B, 0xF4, 0x2B, 0x40, 0x06, 0x16, 0x00, 0x03, 0x54, 0x05, 0x19, + 0xF8, 0x89, 0x16, 0x2B, 0x05, 0xDE, 0xA7, 0x88, 0x08, 0x54, 0x01, 0x19, 0xFD, 0x30, 0x47, 0x2A, + 0x1E, 0xF1, 0xB0, 0x23, 0x02, 0x98, 0x05, 0x03, 0x13, 0x07, 0x2F, 0xEB, 0x15, 0x5C, 0x22, 0x00, + 0x2F, 0xFF, 0x4C, 0x67, 0x25, 0x01, 0x19, 0x83, 0xA1, 0x31, 0x03, 0x84, 0x02, 0x18, 0xB3, 0xEF, + 0x03, 0x22, 0x54, 0xFC, 0x15, 0x00, 0x18, 0xC5, 0x49, 0x31, 0x27, 0x5F, 0xFD, 0xC1, 0x21, 0x2A, + 0x00, 0x00, 0xEE, 0x4B, 0x2F, 0xC4, 0x0F, 0xD8, 0x23, 0x00, 0x2F, 0xB9, 0x0B, 0xEE, 0x23, 0x01, + 0x2F, 0x44, 0x00, 0x16, 0x00, 0x52, 0x12, 0x04, 0x49, 0x05, 0x1F, 0x04, 0xB3, 0x08, 0x3D, 0x12, + 0x82, 0x3A, 0x06, 0x1A, 0x9E, 0x16, 0x00, 0x1E, 0x84, 0x9B, 0x01, 0x0F, 0x16, 0x00, 0x59, 0x5F, + 0x32, 0x2D, 0x33, 0x03, 0xF8, 0xAE, 0x00, 0x01, 0xFF, 0x00, 0x06, 0x3E, 0x71, 0x9E, 0xC3, 0xD9, + 0xEE, 0xF9, 0xFB, 0xF2, 0xDF, 0xC4, 0x9C, 0x67, 0x27, 0xD9, 0x09, 0x08, 0x4A, 0x09, 0x5A, 0xB1, + 0xF3, 0x9B, 0x03, 0x3F, 0xD8, 0x78, 0x12, 0x2B, 0x00, 0x03, 0x4E, 0x0F, 0x7E, 0xED, 0xFF, 0x01, + 0x00, 0x3E, 0xF5, 0x81, 0x0B, 0x2B, 0x00, 0x4F, 0x02, 0x69, 0xEE, 0xFF, 0x01, 0x00, 0x03, 0x1D, + 0xDC, 0x08, 0xB5, 0x3F, 0x1E, 0xC1, 0xFF, 0x01, 0x00, 0x06, 0x2A, 0xF9, 0x56, 0x2C, 0x00, 0x15, + 0x3D, 0xB7, 0xB8, 0xC4, 0xFE, 0xC3, 0x87, 0x55, 0x37, 0x1F, 0x16, 0x1B, 0x2C, 0x50, 0x76, 0xA8, + 0x6C, 0x00, 0x28, 0xFD, 0x53, 0x2C, 0x00, 0x14, 0x50, 0x93, 0x0F, 0x38, 0xDF, 0x70, 0x17, 0x1B, + 0x01, 0x13, 0x53, 0xE0, 0x24, 0x17, 0xF8, 0xF1, 0x32, 0x13, 0x45, 0x2C, 0x00, 0x3B, 0xF1, 0x6F, + 0x05, 0x9E, 0x00, 0x22, 0x01, 0x5B, 0x4A, 0x0D, 0x15, 0xDF, 0x05, 0x4A, 0x13, 0x21, 0x6F, 0x00, + 0x2F, 0xC5, 0x1C, 0x24, 0x01, 0x00, 0x29, 0x24, 0xE0, 0xF5, 0x25, 0x26, 0x05, 0xCD, 0x5C, 0x1B, + 0x0F, 0x52, 0x01, 0x00, 0x11, 0x25, 0xDB, 0x03, 0x29, 0xFC, 0x24, 0x36, 0x3E, 0x17, 0xA8, 0x93, + 0x03, 0x2D, 0x07, 0x04, 0xE3, 0x29, 0x02, 0x2E, 0x0E, 0x12, 0x1D, 0x3B, 0x09, 0x15, 0xCC, 0x54, + 0xDA, 0x80, 0x58, 0xB0, 0xEA, 0xFF, 0xF8, 0xA8, 0x1D, 0x07, 0xBB, 0xAA, 0x24, 0xFC, 0x97, 0x39, + 0x1F, 0x26, 0xF3, 0x0A, 0x0A, 0x3D, 0x14, 0xF8, 0x56, 0x04, 0x13, 0x40, 0x8C, 0x16, 0x25, 0xE8, + 0x6E, 0x67, 0x1E, 0x24, 0x29, 0xFE, 0x21, 0x4B, 0x28, 0x19, 0xF8, 0xD4, 0x3D, 0x2B, 0x01, 0x71, + 0xEF, 0x45, 0x15, 0x4E, 0xA4, 0x32, 0x15, 0xAF, 0x05, 0x2A, 0x29, 0xE5, 0x0A, 0xB3, 0x19, 0x06, + 0xBE, 0x01, 0x15, 0x29, 0xF8, 0x3F, 0x58, 0xEC, 0x01, 0x00, 0x02, 0xE2, 0x6F, 0x12, 0x1C, 0x51, + 0x2C, 0x00, 0x26, 0xFD, 0x07, 0x85, 0x4B, 0x13, 0x1D, 0x39, 0x14, 0x12, 0xF3, 0x5E, 0x04, 0x13, + 0x12, 0x42, 0x33, 0x57, 0xEB, 0x71, 0x22, 0x09, 0x73, 0x44, 0x33, 0x22, 0x01, 0xED, 0x00, 0x04, + 0x17, 0x83, 0x1A, 0x43, 0x03, 0x35, 0x46, 0x35, 0xFF, 0xCB, 0x18, 0x73, 0x40, 0x17, 0xB8, 0x29, + 0x1B, 0x37, 0x58, 0x00, 0xC9, 0xA0, 0x3D, 0x12, 0x26, 0xDD, 0x00, 0x26, 0xE0, 0x14, 0x86, 0x0E, + 0x17, 0x92, 0x3D, 0x48, 0x36, 0x6A, 0x0B, 0xFD, 0xC7, 0x48, 0x28, 0x00, 0x98, 0xB3, 0x3D, 0x18, + 0xB4, 0xEE, 0x28, 0x01, 0xBA, 0x20, 0x27, 0x7C, 0x38, 0xBB, 0x17, 0x28, 0x09, 0xF2, 0x6A, 0x17, + 0x18, 0xD8, 0x91, 0x06, 0x01, 0x72, 0x44, 0x26, 0x7C, 0x68, 0x7E, 0x1A, 0x28, 0x00, 0x54, 0x21, + 0x19, 0x28, 0x04, 0xFA, 0x8E, 0x49, 0x01, 0x2D, 0x11, 0x27, 0x76, 0x8F, 0x46, 0x17, 0x27, 0xA4, + 0xFF, 0x9F, 0x36, 0x02, 0x43, 0x07, 0x36, 0xF9, 0x03, 0x00, 0x9F, 0x6D, 0x26, 0x67, 0xAA, 0x5A, + 0x4B, 0x28, 0x00, 0xE2, 0x34, 0x9A, 0x18, 0x45, 0xE8, 0x15, 0x02, 0x0C, 0x1E, 0x26, 0x48, 0xC6, + 0x9B, 0x24, 0x19, 0x10, 0x8F, 0x2D, 0x18, 0x6A, 0x85, 0x49, 0x11, 0x01, 0xD7, 0x06, 0x03, 0x8F, + 0xC2, 0x15, 0x0B, 0xB0, 0x7E, 0x05, 0xAE, 0x14, 0x18, 0x8E, 0xA2, 0x18, 0x01, 0x94, 0x00, 0x21, + 0xF6, 0x04, 0xA8, 0x03, 0x27, 0xFD, 0x01, 0x4A, 0x52, 0x25, 0x2B, 0x00, 0xD8, 0xAD, 0x05, 0x5E, + 0xD9, 0x12, 0x63, 0xBE, 0x59, 0x01, 0x81, 0x04, 0x18, 0xF4, 0xD2, 0xD8, 0x17, 0x23, 0x98, 0x36, + 0x27, 0xFF, 0x40, 0x3A, 0x00, 0x12, 0x75, 0xCC, 0x58, 0x18, 0xF3, 0x2D, 0x00, 0x02, 0x3C, 0x57, + 0x12, 0x05, 0x01, 0x20, 0x01, 0x97, 0x5A, 0x02, 0xB6, 0x6C, 0x22, 0xFD, 0x1A, 0x06, 0x11, 0x18, + 0xF7, 0x5C, 0x19, 0x17, 0x58, 0xFF, 0x3E, 0x26, 0xF5, 0x01, 0xCD, 0x14, 0x14, 0xB6, 0xE1, 0x28, + 0x23, 0x09, 0x00, 0x31, 0x6D, 0x04, 0xEE, 0x36, 0x27, 0x01, 0xBD, 0x52, 0x48, 0x23, 0x2B, 0xFB, + 0x92, 0x00, 0x16, 0xD1, 0xA8, 0x01, 0x12, 0x03, 0x11, 0x04, 0x00, 0x2D, 0x93, 0x02, 0x59, 0xBF, + 0x03, 0x7B, 0x4C, 0x24, 0x0D, 0xD5, 0x26, 0x4C, 0x17, 0xB5, 0x75, 0x02, 0x03, 0xC5, 0x1A, 0x34, + 0xF8, 0xA6, 0x90, 0x99, 0x36, 0x00, 0x35, 0x42, 0x11, 0x18, 0xD0, 0x07, 0x25, 0xEF, 0x1C, 0x73, + 0x81, 0x18, 0x79, 0xB7, 0x43, 0x24, 0xFF, 0xFF, 0xF6, 0x90, 0x66, 0xFF, 0xFC, 0x63, 0x4A, 0x85, + 0xEE, 0x95, 0x96, 0x17, 0x5D, 0xCA, 0x4B, 0x26, 0x00, 0xA3, 0x2C, 0x00, 0x29, 0xB6, 0xA4, 0x5E, + 0x03, 0x26, 0x78, 0x00, 0xD6, 0x00, 0x02, 0xBB, 0xF0, 0x25, 0x00, 0x0C, 0xCD, 0xCF, 0x37, 0xF6, + 0x24, 0x2D, 0x1C, 0x46, 0x13, 0xF4, 0x4E, 0x2F, 0x28, 0x01, 0xD9, 0xCB, 0x1B, 0x13, 0x0E, 0x2B, + 0x14, 0x55, 0xF0, 0x48, 0x00, 0x00, 0x51, 0xA7, 0x17, 0x29, 0xB9, 0x25, 0x46, 0xBB, 0x05, 0x0A, + 0x04, 0x71, 0x00, 0x36, 0x90, 0xC0, 0xCE, 0xBC, 0x7E, 0x2C, 0x16, 0x87, 0x1C, 0x8B, 0xD6, 0xFA, + 0xFF, 0xEE, 0xC3, 0x89, 0xFA, 0x1A, 0x03, 0x90, 0x4F, 0x1F, 0x82, 0x14, 0x05, 0x02, 0x2B, 0x01, + 0x02, 0x11, 0x00, 0x02, 0x7A, 0x00, 0x2F, 0xFC, 0x39, 0xA7, 0x07, 0x12, 0x03, 0x52, 0x43, 0x2F, + 0xE8, 0x26, 0x2E, 0x00, 0x12, 0x03, 0xB2, 0x04, 0x2F, 0xEB, 0x3B, 0x2D, 0x00, 0x11, 0x13, 0x04, + 0x5E, 0x14, 0x3F, 0xFC, 0x85, 0x0B, 0x2E, 0x00, 0x10, 0x14, 0x17, 0x05, 0x1A, 0x3B, 0xEA, 0x7B, + 0x1D, 0x48, 0x00, 0x2D, 0x34, 0x5C, 0x2E, 0x00, 0x15, 0x1E, 0xFE, 0x4F, 0xF4, 0x01, 0xFE, 0xCB, + 0x8A, 0x5B, 0x33, 0x1C, 0x0A, 0x02, 0x05, 0x11, 0x25, 0x3D, 0x63, 0x8A, 0xBD, 0xF4, 0xE8, 0x6D, + 0x09, 0x33, 0x1E, 0x1F, 0xBA, 0x31, 0x07, 0x06, 0x1E, 0x2D, 0x8A, 0x00, 0x2F, 0x03, 0x71, 0xFF, + 0x5B, 0x04, 0x2F, 0xFF, 0x64, 0xB9, 0x00, 0x01, 0x2F, 0x1F, 0x9A, 0xFC, 0x5B, 0x03, 0x1F, 0x9B, + 0xE8, 0x00, 0x03, 0x3D, 0x1C, 0x78, 0xD5, 0x2B, 0x00, 0x3F, 0xDF, 0xA5, 0x50, 0x18, 0x01, 0x06, + 0x51, 0x1E, 0x5F, 0x91, 0xBA, 0xDE, 0xF7, 0x06, 0x7F, 0xF3, 0xDF, 0xC5, 0x9F, 0x79, 0x4D, 0x16, + 0x4B, 0x01, 0x0F, 0x4F, 0x06, 0x0D, 0x0E, 0x07, 0x7D, 0x00, 0x04, 0x1B, 0x1B, 0x77, 0x4F, 0x13, + 0x65, 0xE1, 0x0F, 0x2D, 0xF0, 0x02, 0x2C, 0x00, 0x05, 0xAC, 0x59, 0x0E, 0xF4, 0x59, 0x05, 0x6B, + 0x11, 0x2D, 0x5C, 0x00, 0x10, 0x0F, 0x04, 0x1B, 0x00, 0x0D, 0xB2, 0x53, 0x1F, 0x35, 0xF7, 0xBD, + 0x06, 0x25, 0x00, 0x69, 0x1B, 0x00, 0x1C, 0xF5, 0xBD, 0x01, 0x07, 0xE9, 0x33, 0x1F, 0x2B, 0xF7, + 0x15, 0x03, 0x08, 0x4A, 0x5E, 0x04, 0xDF, 0x10, 0x07, 0x56, 0x0D, 0x0A, 0x0A, 0x3D, 0x2F, 0x00, + 0x39, 0x51, 0x55, 0x00, 0x09, 0xEA, 0x25, 0x02, 0x93, 0x0C, 0x2F, 0xF7, 0x04, 0x39, 0x33, 0x00, + 0x29, 0xAD, 0xFD, 0x7B, 0x5C, 0x08, 0x04, 0x18, 0x2E, 0x7A, 0xDB, 0x59, 0x33, 0x12, 0x0C, 0x0A, + 0x12, 0x27, 0x51, 0xB1, 0x53, 0x47, 0x0A, 0x3A, 0x32, 0x27, 0x27, 0x87, 0x78, 0x51, 0x08, 0x08, + 0x94, 0x32, 0xFF, 0xFA, 0x04, 0xA9, 0x04, 0x03, 0x39, 0x70, 0x06, 0xD3, 0xBF, 0x00, 0x83, 0x24, + 0x03, 0x2A, 0x22, 0x1D, 0x31, 0xDF, 0x2E, 0x3D, 0xAA, 0x00, 0x0B, 0xA9, 0x02, 0x15, 0x0E, 0xF2, + 0x3B, 0x1C, 0xDF, 0x70, 0x1E, 0x15, 0x40, 0x7E, 0x0D, 0x1C, 0xB5, 0x04, 0xBF, 0x15, 0x74, 0x1E, + 0x03, 0x02, 0x4B, 0x0E, 0x2B, 0xFA, 0x07, 0x08, 0x56, 0x00, 0x7F, 0x08, 0x18, 0x62, 0xB6, 0x47, + 0x06, 0x5B, 0x17, 0x16, 0xDA, 0x88, 0x05, 0x19, 0x67, 0xF2, 0xCE, 0x02, 0xDD, 0x18, 0x1B, 0x0F, + 0x1F, 0x03, 0x17, 0x44, 0x18, 0x33, 0x18, 0xE4, 0x80, 0x31, 0x05, 0xB2, 0x22, 0x16, 0x5D, 0xB4, + 0x1B, 0x28, 0xFB, 0x08, 0x24, 0x40, 0x03, 0x7C, 0x00, 0x03, 0x10, 0x17, 0x04, 0xCB, 0x94, 0x26, + 0xE0, 0xFF, 0x79, 0x07, 0x19, 0x66, 0xCD, 0x35, 0x18, 0x15, 0x40, 0x33, 0x19, 0xFE, 0x22, 0xA2, + 0x1F, 0x48, 0xC2, 0x03, 0x00, 0x19, 0xD1, 0x9A, 0x25, 0x0A, 0xB9, 0x44, 0x1F, 0x0A, 0x51, 0x26, + 0x03, 0x04, 0xFA, 0x60, 0x02, 0xA0, 0xD0, 0x0D, 0x1B, 0x00, 0x18, 0x6C, 0xF8, 0x3C, 0x12, 0x20, + 0x07, 0x13, 0x17, 0x6D, 0xA5, 0x0C, 0x03, 0x8A, 0x26, 0x1A, 0xDF, 0x33, 0x03, 0x17, 0xD4, 0x57, + 0x0F, 0x04, 0xE8, 0x51, 0x26, 0x0B, 0xFE, 0x64, 0x20, 0x03, 0x78, 0x30, 0x1B, 0x84, 0xE2, 0x18, + 0x13, 0x3B, 0x12, 0xCD, 0x04, 0xFB, 0x06, 0x07, 0xB1, 0x00, 0x13, 0x6F, 0x57, 0x96, 0x08, 0x5A, + 0x20, 0x15, 0x82, 0x61, 0x0F, 0x03, 0xBA, 0x24, 0x39, 0xF8, 0x04, 0x00, 0x1D, 0x62, 0x25, 0xFF, + 0xD7, 0xF0, 0x47, 0x05, 0xA2, 0x01, 0x03, 0x8C, 0x9B, 0x5C, 0xFF, 0xFE, 0x0D, 0x00, 0xB7, 0x6D, + 0x0D, 0x22, 0x04, 0xF8, 0x12, 0x00, 0x38, 0x3E, 0x01, 0xEB, 0x33, 0x4B, 0x08, 0x54, 0x1D, 0x00, + 0x2D, 0x07, 0x56, 0x1D, 0x19, 0x2B, 0x03, 0x00, 0x8C, 0x17, 0x00, 0x01, 0x00, 0x77, 0xF8, 0xEA, + 0xD0, 0xB4, 0x86, 0x45, 0x05, 0x3C, 0xC1, 0x09, 0x46, 0x01, 0x3F, 0xE2, 0x72, 0x09, 0x19, 0x00, + 0x03, 0x4F, 0xFF, 0xFF, 0xD9, 0x2C, 0x19, 0x00, 0x04, 0x3F, 0xFF, 0xEC, 0x25, 0x19, 0x00, 0x04, + 0x36, 0xFF, 0xC9, 0x02, 0x19, 0x00, 0x76, 0x1C, 0x15, 0x1E, 0x2E, 0x50, 0x96, 0xF1, 0xF1, 0xAA, + 0x04, 0x19, 0x00, 0x02, 0x28, 0x63, 0x25, 0x16, 0xCF, 0xC8, 0x1D, 0x0A, 0x19, 0x00, 0x22, 0x00, + 0x24, 0x1C, 0x04, 0x2C, 0xF0, 0x01, 0x19, 0x00, 0x24, 0x00, 0xC9, 0x11, 0x4B, 0x0C, 0x19, 0x00, + 0x14, 0xA1, 0xC8, 0x0A, 0x0C, 0x19, 0x00, 0x14, 0x89, 0x92, 0x11, 0x0C, 0x19, 0x00, 0x14, 0x87, + 0xBE, 0x29, 0x0C, 0x19, 0x00, 0x14, 0x98, 0x7A, 0x02, 0x0C, 0x19, 0x00, 0x14, 0xB6, 0xE8, 0x22, + 0x0B, 0x19, 0x00, 0x12, 0x02, 0x9A, 0x0E, 0x1D, 0xE8, 0xAF, 0x00, 0x15, 0x4F, 0x9D, 0x23, 0x0A, + 0xE1, 0x00, 0x25, 0x1C, 0xDD, 0x5A, 0x1F, 0x04, 0x19, 0x00, 0x76, 0x14, 0x0C, 0x0E, 0x1C, 0x3F, + 0x87, 0xF1, 0x66, 0x1B, 0x0F, 0x5E, 0x01, 0x01, 0x2F, 0xA1, 0x05, 0x19, 0x00, 0x01, 0x3F, 0xFB, + 0xB7, 0x4A, 0xC2, 0x01, 0x03, 0x3F, 0xCF, 0x79, 0x1E, 0xDB, 0x01, 0x05, 0x3F, 0xFB, 0x8C, 0x09, + 0xC2, 0x01, 0x05, 0x26, 0xC4, 0x10, 0x19, 0x00, 0x64, 0x0C, 0x04, 0x06, 0x13, 0x38, 0x7F, 0x9F, + 0x1E, 0x1C, 0xB4, 0xE1, 0x00, 0x05, 0x60, 0xBA, 0x1C, 0x4A, 0xFA, 0x00, 0x13, 0x12, 0xCA, 0x00, + 0x1D, 0xBB, 0x45, 0x01, 0x03, 0x4E, 0x13, 0x2C, 0xFC, 0x0E, 0x19, 0x00, 0x03, 0x15, 0x4A, 0x2C, + 0xFF, 0x46, 0x19, 0x00, 0x04, 0xE0, 0xCA, 0x1C, 0x68, 0x19, 0x00, 0x03, 0x61, 0x4A, 0x2C, 0xFF, + 0x84, 0x19, 0x00, 0x04, 0x80, 0x1C, 0x1D, 0x8E, 0x19, 0x00, 0x03, 0x6E, 0x10, 0x1C, 0x8A, 0x19, + 0x00, 0x04, 0xAB, 0x63, 0x1C, 0x78, 0x19, 0x00, 0x04, 0xA0, 0x2A, 0x1C, 0x54, 0x19, 0x00, 0x04, + 0x82, 0x14, 0x1C, 0x30, 0x0D, 0x02, 0x14, 0xD1, 0x7D, 0x34, 0x0A, 0x19, 0x00, 0x34, 0x02, 0x86, + 0xFF, 0x24, 0x05, 0x06, 0xF4, 0x01, 0x44, 0x0D, 0x13, 0x30, 0x65, 0xD1, 0x52, 0x2F, 0xFE, 0x2E, + 0x90, 0x01, 0x03, 0x2F, 0xFF, 0x97, 0xA9, 0x01, 0x04, 0x2F, 0xCB, 0x0A, 0x19, 0x00, 0x03, 0x2F, + 0xBA, 0x11, 0xDB, 0x01, 0x02, 0x3D, 0xE2, 0x65, 0x02, 0x0D, 0x02, 0x54, 0xF7, 0xDE, 0xB7, 0x8D, + 0x42, 0x9A, 0x04, 0x2A, 0x1D, 0x19, 0x3C, 0x2C, 0x8A, 0x08, 0x30, 0x53, 0x71, 0x7A, 0x76, 0x66, + 0x44, 0x6A, 0x10, 0x35, 0x01, 0x46, 0xB2, 0xD9, 0x5D, 0x36, 0xDB, 0x80, 0x13, 0x46, 0x71, 0x0A, + 0x31, 0x1D, 0x14, 0xF0, 0xD0, 0xEA, 0x1D, 0x30, 0xB7, 0x11, 0x02, 0xC6, 0x3F, 0x2D, 0x0F, 0xDE, + 0xA2, 0x00, 0x29, 0xFE, 0x3D, 0x2B, 0x09, 0x08, 0x75, 0x23, 0x13, 0x01, 0x5F, 0x77, 0x02, 0xD6, + 0x21, 0x25, 0x88, 0x8B, 0x26, 0x2F, 0x16, 0x45, 0xAA, 0x5A, 0x11, 0xC8, 0x3A, 0x12, 0x25, 0x4B, + 0xFE, 0x75, 0x03, 0x03, 0x33, 0x0B, 0x29, 0xFD, 0x23, 0xA1, 0x0C, 0x4A, 0xE2, 0x00, 0x07, 0xFA, + 0xEA, 0x26, 0x04, 0x5C, 0x4B, 0x3A, 0x0C, 0x2E, 0xFF, 0xF7, 0x27, 0x04, 0x65, 0x5E, 0x14, 0x29, + 0x90, 0x60, 0x1A, 0x79, 0xED, 0x07, 0x23, 0xFF, 0x44, 0x2D, 0x26, 0x05, 0x94, 0x5C, 0x13, 0x3A, + 0x10, 0x00, 0x2B, 0x4E, 0x72, 0x6B, 0x3B, 0x04, 0x4C, 0x0D, 0x2B, 0x50, 0x7A, 0x17, 0x35, 0x05, + 0x19, 0x00, 0x1F, 0x7C, 0x19, 0x00, 0x15, 0x22, 0x24, 0xA4, 0x01, 0x00, 0x1C, 0x34, 0x19, 0x00, + 0x05, 0x01, 0x00, 0x0F, 0x19, 0x00, 0xDE, 0x12, 0x0D, 0x7F, 0x20, 0x3F, 0x38, 0x12, 0x7C, 0x5E, + 0x01, 0x1E, 0x1F, 0x7B, 0x19, 0x00, 0x05, 0x1B, 0x73, 0xC2, 0x01, 0x04, 0xED, 0x0A, 0x14, 0x4F, + 0x6C, 0x38, 0x1B, 0x72, 0xF4, 0x01, 0x3A, 0x4A, 0x4E, 0xFF, 0xA2, 0xA1, 0x04, 0x18, 0x23, 0x14, + 0x37, 0x46, 0x8F, 0x1B, 0xA0, 0x36, 0x2E, 0x3A, 0x22, 0x08, 0xFB, 0xB4, 0x43, 0x03, 0x36, 0x02, + 0x49, 0xFA, 0x05, 0x00, 0xBF, 0xDE, 0x45, 0x25, 0x00, 0xC5, 0xA3, 0x2A, 0x13, 0x71, 0x19, 0x00, + 0x10, 0xCA, 0x49, 0x0F, 0x26, 0x01, 0x68, 0x84, 0x46, 0x23, 0x16, 0xF9, 0x0C, 0x00, 0x45, 0xF2, + 0xA4, 0x80, 0x8D, 0x5F, 0x0F, 0x1E, 0x2C, 0x49, 0x28, 0x06, 0x58, 0x39, 0x2D, 0x09, 0xD3, 0x18, + 0x00, 0x12, 0xF4, 0xA1, 0x0C, 0x2C, 0x25, 0xE6, 0x9C, 0x03, 0x04, 0xF6, 0x08, 0x29, 0x1B, 0xB2, + 0x18, 0x00, 0x17, 0xE5, 0xEE, 0x17, 0x25, 0x40, 0xB0, 0x1A, 0x04, 0x39, 0xD5, 0x72, 0x09, 0xB1, + 0x01, 0x98, 0x09, 0x31, 0x55, 0x74, 0x7E, 0x7A, 0x66, 0x43, 0x1B, 0x58, 0x3F, 0x1C, 0x18, 0xAC, + 0x08, 0x8F, 0xFB, 0xF4, 0xE5, 0xCB, 0xAD, 0x7E, 0x41, 0x04, 0xAB, 0x08, 0x04, 0x3F, 0xE7, 0x7A, + 0x09, 0xCF, 0x06, 0x04, 0x2F, 0xDB, 0x2C, 0xCE, 0x06, 0x04, 0x2F, 0xEE, 0x29, 0x3D, 0x05, 0x04, + 0x26, 0xD2, 0x05, 0xA7, 0x08, 0x56, 0x14, 0x17, 0x24, 0x48, 0x9F, 0x05, 0x58, 0x0A, 0xB8, 0x05, + 0x04, 0x4C, 0x26, 0x2B, 0xD5, 0x01, 0xE9, 0x05, 0x04, 0x07, 0x0F, 0x1B, 0x25, 0x18, 0x00, 0x04, + 0x70, 0x57, 0x1B, 0x5E, 0x18, 0x00, 0x04, 0x21, 0x48, 0x1B, 0x80, 0x18, 0x00, 0x13, 0x37, 0x0F, + 0x00, 0x1B, 0x9C, 0x18, 0x00, 0x13, 0x2D, 0x0F, 0x00, 0x1B, 0xB8, 0x18, 0x00, 0x13, 0x2A, 0x0F, + 0x00, 0x1B, 0xC2, 0x18, 0x00, 0x04, 0xBE, 0x39, 0x1F, 0xC8, 0x18, 0x00, 0xFF, 0x65, 0x14, 0x29, + 0x40, 0x09, 0x0B, 0x18, 0x00, 0x04, 0x42, 0x08, 0x1B, 0xBE, 0x18, 0x00, 0x04, 0xA3, 0x30, 0x1B, + 0xA7, 0x18, 0x00, 0x14, 0x43, 0x03, 0x65, 0x0B, 0x18, 0x00, 0x04, 0x6F, 0xED, 0x1B, 0x70, 0x18, + 0x00, 0x04, 0xF9, 0x16, 0x1B, 0x42, 0x70, 0x08, 0x03, 0x9D, 0x3C, 0x2A, 0xF9, 0x0C, 0x18, 0x00, + 0x15, 0x6F, 0x99, 0x9E, 0x06, 0x87, 0x08, 0x34, 0x10, 0x22, 0x52, 0xEE, 0x1C, 0x2F, 0xFF, 0x3B, + 0x30, 0x03, 0x03, 0x1F, 0xA8, 0x48, 0x03, 0x03, 0x2F, 0xDA, 0x12, 0x18, 0x00, 0x02, 0x2F, 0xC8, + 0x18, 0x90, 0x03, 0x01, 0x3B, 0xE3, 0x6D, 0x04, 0xC0, 0x03, 0x54, 0xF9, 0xED, 0xD0, 0xB2, 0x81, + 0x81, 0x08, 0x2D, 0x17, 0x13, 0xBC, 0x0C, 0x03, 0x01, 0x00, 0x1E, 0x2C, 0x63, 0x00, 0x0F, 0x13, + 0x00, 0x2F, 0x15, 0x1C, 0x3C, 0x21, 0x1D, 0x04, 0x27, 0x0A, 0x2F, 0x00, 0x00, 0x13, 0x00, 0xC6, + 0x13, 0xFD, 0x54, 0x01, 0x1E, 0x0C, 0xA1, 0x01, 0x0F, 0x13, 0x00, 0x31, 0x04, 0x56, 0x01, 0x1F, + 0x01, 0x43, 0x01, 0x00, 0x0F, 0x13, 0x00, 0xDB, 0x15, 0x14, 0x58, 0x23, 0x1E, 0x04, 0x86, 0x02, + 0x1F, 0x4C, 0x13, 0x00, 0x39, 0x00, 0x4C, 0x0F, 0x1F, 0x12, 0x3C, 0x03, 0x04, 0x1D, 0xD1, 0x30, + 0x00, 0x1F, 0xD4, 0x12, 0x00, 0x2B, 0x05, 0x37, 0x03, 0x1E, 0x11, 0xFC, 0x00, 0x0F, 0x12, 0x00, + 0xBB, 0x03, 0x2A, 0x03, 0x1D, 0xD9, 0xF0, 0x02, 0x1F, 0xDC, 0x12, 0x00, 0x2D, 0x03, 0x44, 0x01, + 0x07, 0x3C, 0x05, 0x0E, 0x44, 0x01, 0x0F, 0x12, 0x00, 0xFF, 0x2A, 0x3B, 0x00, 0x00, 0x1E, 0xCC, + 0x0E, 0x99, 0x0A, 0x36, 0x5C, 0x71, 0x7B, 0x77, 0x67, 0x43, 0x1F, 0x8D, 0x20, 0x35, 0x01, 0x51, + 0xB7, 0x7A, 0x33, 0x26, 0xE3, 0x93, 0xF8, 0x22, 0x29, 0x20, 0xC4, 0xBA, 0x01, 0x23, 0xFD, 0x8A, + 0x3E, 0x13, 0x17, 0x28, 0xB8, 0xD8, 0x08, 0x7D, 0x37, 0x14, 0x0C, 0x6F, 0x19, 0x0C, 0xE2, 0x31, + 0x1F, 0x84, 0x33, 0x07, 0x00, 0x54, 0xFA, 0x1D, 0x00, 0x00, 0x0D, 0x39, 0x43, 0x66, 0xF8, 0xB1, + 0x8A, 0x90, 0xBF, 0xFE, 0xF5, 0x6C, 0x04, 0x58, 0x29, 0x11, 0xCD, 0x29, 0x0B, 0x13, 0x35, 0xEC, + 0x13, 0x15, 0xDA, 0x7C, 0x12, 0x29, 0xFF, 0x2C, 0x49, 0x3D, 0x4A, 0xFF, 0x24, 0x02, 0xF2, 0xBD, + 0x36, 0x14, 0x1F, 0xAB, 0x6E, 0x04, 0xE2, 0x24, 0x04, 0x87, 0xF6, 0x03, 0x73, 0x5E, 0x3C, 0xFF, + 0x72, 0x3D, 0x3C, 0x65, 0x03, 0x56, 0x33, 0x3B, 0x90, 0x55, 0xFF, 0x5A, 0x14, 0x03, 0x9F, 0x32, + 0x3A, 0x9B, 0x6B, 0xFF, 0x93, 0xFA, 0x04, 0x4F, 0x36, 0x2C, 0xA0, 0x77, 0xA0, 0x0D, 0x03, 0xA6, + 0x3A, 0x1D, 0xA0, 0xB9, 0x0D, 0x12, 0x33, 0xE7, 0xAA, 0x1F, 0x26, 0x4F, 0x0E, 0x90, 0x17, 0xCD, + 0x0F, 0xE4, 0x09, 0x19, 0x00, 0x07, 0xB5, 0x3D, 0x1F, 0xDC, 0x19, 0x00, 0x45, 0x5F, 0x11, 0x14, + 0x14, 0x14, 0x3D, 0x19, 0x00, 0x01, 0x07, 0x4A, 0x0A, 0x0F, 0x19, 0x00, 0x07, 0x0D, 0x90, 0x01, + 0x03, 0x44, 0x0C, 0x2C, 0xDC, 0x6D, 0xC2, 0x01, 0x03, 0x58, 0x64, 0x2B, 0xDC, 0x54, 0xD9, 0x10, + 0x04, 0xDA, 0x10, 0x14, 0xDC, 0xD5, 0x0E, 0x05, 0x35, 0x68, 0x03, 0x7E, 0x60, 0x3A, 0xDC, 0x1C, + 0xFF, 0x5B, 0x31, 0x04, 0xC6, 0x16, 0x32, 0xDC, 0x01, 0xE5, 0x09, 0x00, 0x2A, 0xE9, 0x03, 0x98, + 0x03, 0x13, 0xDC, 0xB7, 0x75, 0x05, 0x85, 0x20, 0x15, 0x39, 0x11, 0x05, 0x04, 0x4A, 0x0F, 0x11, + 0xE1, 0x7B, 0x03, 0x25, 0x26, 0xE4, 0x19, 0x00, 0x14, 0x0C, 0x4D, 0x78, 0x67, 0xFB, 0xB3, 0x86, + 0x85, 0xB4, 0xFA, 0x43, 0x05, 0x0D, 0x16, 0x3B, 0x13, 0xF1, 0x19, 0x00, 0x2A, 0x10, 0xE5, 0x18, + 0x00, 0x24, 0xC3, 0xA9, 0xB4, 0xBB, 0x19, 0x36, 0x63, 0x24, 0x26, 0xF9, 0x30, 0x00, 0xD3, 0x17, + 0x31, 0xB8, 0x03, 0x46, 0xFB, 0x55, 0x00, 0x67, 0xD5, 0xBF, 0x24, 0x08, 0x70, 0xDC, 0x51, 0x23, + 0xC4, 0x34, 0xBE, 0x20, 0x05, 0xEE, 0xBF, 0x79, 0x1F, 0x50, 0x6D, 0x7E, 0x7A, 0x5E, 0x24, 0x42, + 0x02, 0x13, 0x1F, 0x78, 0x17, 0x13, 0xB6, 0x3A, 0x02, 0x04, 0x4E, 0xDD, 0x13, 0x2C, 0x10, 0x00, + 0x14, 0xA2, 0x6B, 0x33, 0x1B, 0x1C, 0x58, 0x14, 0x1F, 0xA4, 0x19, 0x00, 0xFF, 0x86, 0x04, 0x28, + 0x0B, 0x1C, 0xFD, 0x19, 0x00, 0x0C, 0x01, 0x00, 0x0F, 0x19, 0x00, 0x41, 0x13, 0x2E, 0x64, 0x09, + 0x1F, 0x3D, 0x26, 0x02, 0x06, 0x0F, 0x19, 0x00, 0xFF, 0xB8, 0x57, 0x00, 0x0F, 0x09, 0x2B, 0x03, + 0x1C, 0x5E, 0x24, 0xFC, 0x28, 0x93, 0x34, 0x0F, 0x09, 0x00, 0xFF, 0x60, 0x56, 0x00, 0x11, 0x0F, + 0x2C, 0x00, 0x38, 0x0A, 0x16, 0xC5, 0x35, 0x49, 0x07, 0xEE, 0x42, 0x2F, 0xFF, 0x07, 0x0F, 0x00, + 0x28, 0x1F, 0x06, 0x0F, 0x00, 0x28, 0x1F, 0x05, 0x0F, 0x00, 0x28, 0x1F, 0x04, 0x0F, 0x00, 0x28, + 0x1F, 0x03, 0x0F, 0x00, 0x28, 0x1F, 0x02, 0x0F, 0x00, 0x28, 0x1F, 0x01, 0x0F, 0x00, 0x28, 0x1F, + 0x00, 0x0F, 0x00, 0x20, 0x14, 0xCC, 0x6E, 0x7F, 0x09, 0xFB, 0x20, 0x12, 0xED, 0x0E, 0x00, 0x29, + 0x0D, 0xFC, 0xAB, 0x17, 0x26, 0x5C, 0xFF, 0x52, 0x3E, 0x34, 0x00, 0x01, 0x41, 0x23, 0x1D, 0x66, + 0x87, 0x00, 0x49, 0x96, 0xAE, 0xDF, 0x02, 0xB7, 0x09, 0x02, 0x0C, 0x4A, 0xC9, 0x01, 0x00, 0x84, + 0x82, 0xD7, 0x06, 0x0F, 0x00, 0x27, 0xFB, 0x60, 0x2F, 0x0C, 0x21, 0xFA, 0xAE, 0x17, 0x23, 0x83, + 0x42, 0x80, 0x80, 0x80, 0x7E, 0x75, 0x58, 0x37, 0xF2, 0x25, 0x1B, 0x1C, 0xDC, 0x1F, 0x04, 0xF0, + 0x0C, 0x12, 0xBE, 0x0F, 0x00, 0x1C, 0xB4, 0x09, 0x0D, 0x15, 0x34, 0xA6, 0x7B, 0x0B, 0x19, 0x00, + 0x03, 0xE7, 0x7A, 0x2B, 0xDC, 0x02, 0x19, 0x00, 0x25, 0x1E, 0xFC, 0xA1, 0x1B, 0x0A, 0x54, 0x0D, + 0x03, 0x41, 0x18, 0x2B, 0xF5, 0x10, 0x19, 0x00, 0x26, 0x0E, 0xF1, 0x1B, 0x31, 0x09, 0x86, 0x0D, + 0x17, 0x72, 0x11, 0x26, 0x08, 0x19, 0x00, 0x13, 0x04, 0x8D, 0x32, 0x1C, 0xBF, 0xB8, 0x0D, 0x27, + 0x58, 0xFF, 0x7D, 0x6E, 0x07, 0x19, 0x00, 0x03, 0xDE, 0x98, 0x3B, 0xFF, 0xE2, 0x04, 0x19, 0x00, + 0x19, 0x3E, 0xB9, 0x0A, 0x07, 0x03, 0x0E, 0x03, 0xF4, 0x39, 0x2B, 0xF8, 0x15, 0x19, 0x00, 0x29, + 0x26, 0xFE, 0x84, 0x19, 0x06, 0x35, 0x0E, 0x04, 0xF5, 0x57, 0x1B, 0x33, 0x19, 0x00, 0x04, 0x19, + 0x41, 0x1C, 0xC7, 0x67, 0x0E, 0x17, 0x7C, 0xAC, 0x3F, 0x08, 0x19, 0x00, 0x13, 0x10, 0x49, 0x32, + 0x2B, 0xE8, 0x06, 0x19, 0x00, 0x1C, 0x6A, 0x72, 0x0D, 0x04, 0x19, 0x00, 0x03, 0x61, 0x0D, 0x3F, + 0xFB, 0x1A, 0x00, 0x9E, 0x21, 0x03, 0x2F, 0xCF, 0x00, 0x19, 0x00, 0x04, 0x2F, 0xFF, 0x23, 0x19, + 0x00, 0x05, 0x1F, 0x83, 0x19, 0x00, 0x05, 0x1B, 0xE3, 0x97, 0x0B, 0x03, 0xF0, 0xCB, 0x07, 0x74, + 0x44, 0x04, 0x19, 0x00, 0x23, 0xAF, 0x01, 0x55, 0x27, 0x1B, 0xAA, 0x19, 0x00, 0x14, 0x28, 0xEE, + 0x4B, 0x2C, 0xFA, 0x14, 0x45, 0x01, 0x29, 0x1B, 0xFE, 0x61, 0x0C, 0x07, 0x93, 0x0F, 0x03, 0x27, + 0x19, 0x2C, 0xD1, 0x01, 0x19, 0x00, 0x19, 0x5C, 0x78, 0x01, 0x07, 0x19, 0x00, 0x28, 0x0B, 0xF3, + 0x38, 0x6D, 0x08, 0xDE, 0x0F, 0x03, 0xA5, 0x19, 0x2C, 0xEF, 0x09, 0x19, 0x00, 0x18, 0x41, 0x93, + 0x01, 0x08, 0x19, 0x00, 0x04, 0x3A, 0x4A, 0x1D, 0xBC, 0x29, 0x10, 0x17, 0x84, 0xC3, 0x3E, 0x09, + 0x19, 0x00, 0x17, 0x27, 0xD7, 0x61, 0x0A, 0x5B, 0x10, 0x03, 0x2F, 0x04, 0x2C, 0xE1, 0x03, 0x19, + 0x00, 0x16, 0x69, 0x8D, 0x1E, 0x0B, 0x21, 0x21, 0x15, 0xFA, 0x73, 0x54, 0x0B, 0xA6, 0x10, 0x03, + 0x83, 0x43, 0x2F, 0xF8, 0x12, 0x34, 0x22, 0x04, 0x2C, 0xFF, 0x6C, 0x19, 0x00, 0x24, 0x06, 0xEB, + 0x2F, 0x24, 0x0C, 0xF1, 0x10, 0x13, 0x92, 0x10, 0x00, 0x1C, 0x31, 0x19, 0x00, 0x15, 0x34, 0xB7, + 0x27, 0x2F, 0x16, 0x13, 0x3C, 0x04, 0x03, 0x0E, 0x94, 0x15, 0x0F, 0x13, 0x00, 0xFF, 0xFF, 0x94, + 0x0F, 0x5C, 0x17, 0x5A, 0x22, 0x24, 0x1F, 0x3C, 0x03, 0x14, 0x2E, 0xDF, 0x2B, 0x08, 0x57, 0x2B, + 0x13, 0xA5, 0x15, 0x00, 0x15, 0x4D, 0xD0, 0x1B, 0x2E, 0xFF, 0x2A, 0x22, 0x4A, 0x25, 0xFF, 0x52, + 0xE7, 0x1D, 0x03, 0x23, 0x85, 0x09, 0xDA, 0x24, 0x4F, 0xFF, 0x56, 0x00, 0x3B, 0x63, 0x2B, 0x00, + 0x25, 0x49, 0xFF, 0xCB, 0x47, 0x04, 0x4B, 0x20, 0x2B, 0xFF, 0xC7, 0x1F, 0x69, 0x02, 0xB1, 0x2B, + 0x05, 0xC8, 0xD7, 0x16, 0xF7, 0xEB, 0x33, 0x05, 0x77, 0x52, 0x08, 0xF2, 0xA8, 0x03, 0xD1, 0x71, + 0x06, 0xFC, 0x45, 0x00, 0x57, 0x2A, 0x1E, 0x4C, 0x94, 0x2D, 0x17, 0x21, 0x66, 0x29, 0x06, 0x3C, + 0x4E, 0x05, 0x86, 0x68, 0x15, 0x57, 0x13, 0x00, 0x17, 0x70, 0x28, 0xF8, 0x1A, 0xCD, 0x72, 0x89, + 0x02, 0xDF, 0x33, 0x04, 0xDA, 0x07, 0x07, 0x6F, 0x2A, 0x15, 0xC3, 0x13, 0x00, 0x18, 0x79, 0x9B, + 0x77, 0x03, 0x73, 0x2A, 0x27, 0x04, 0xF6, 0xA2, 0x86, 0x2A, 0x61, 0xFF, 0xD9, 0xAC, 0x05, 0x04, + 0x4B, 0x02, 0x50, 0x07, 0x16, 0x65, 0x15, 0xE2, 0x17, 0x9F, 0x79, 0x7F, 0x13, 0xFB, 0xC6, 0x45, + 0x02, 0x98, 0x05, 0x17, 0xC3, 0x2D, 0x7B, 0x01, 0x2D, 0x54, 0x13, 0xCA, 0x50, 0x48, 0x02, 0x16, + 0x13, 0x26, 0x91, 0xF8, 0xB2, 0xF7, 0x01, 0x2E, 0x60, 0x13, 0x8F, 0x5D, 0x39, 0x02, 0xC5, 0x08, + 0x25, 0x87, 0xC7, 0xD3, 0x32, 0x10, 0x0C, 0x0C, 0x10, 0x23, 0xF9, 0x5D, 0xAB, 0x33, 0x02, 0x31, + 0x35, 0x25, 0x83, 0x91, 0xD3, 0x24, 0x01, 0x93, 0x08, 0x23, 0xC8, 0x53, 0xC2, 0x27, 0x02, 0xE8, + 0x23, 0x25, 0x7F, 0x5B, 0xAE, 0x50, 0x01, 0x18, 0x20, 0x23, 0x92, 0x4F, 0xB0, 0x2B, 0x02, 0x48, + 0x49, 0x24, 0x7B, 0x24, 0xE4, 0x2B, 0x02, 0x6B, 0x54, 0x23, 0x5C, 0x4A, 0x7A, 0x48, 0x02, 0x40, + 0x2A, 0x34, 0x77, 0x01, 0xEE, 0xDD, 0x4E, 0x01, 0x8D, 0x0A, 0x23, 0x26, 0x46, 0x56, 0x2A, 0x13, + 0x87, 0xA9, 0x15, 0x13, 0xB8, 0xB4, 0x4E, 0x12, 0x17, 0xAC, 0x7A, 0x13, 0x41, 0xAB, 0x1D, 0x13, + 0x8B, 0x94, 0x24, 0x13, 0x82, 0xBB, 0x45, 0x12, 0x4C, 0x8B, 0x27, 0x13, 0x3D, 0xF9, 0x1D, 0x13, + 0x8F, 0x50, 0x01, 0x13, 0x4B, 0x6B, 0x47, 0x12, 0x82, 0x2E, 0x01, 0x13, 0x38, 0xD8, 0x13, 0x13, + 0x93, 0x17, 0x02, 0x13, 0x16, 0x73, 0x4D, 0x12, 0xB8, 0xA0, 0x4D, 0x13, 0x34, 0x17, 0x7E, 0x14, + 0x97, 0x8B, 0x51, 0x01, 0xE7, 0x0A, 0x12, 0x15, 0xA3, 0x00, 0x13, 0x19, 0x98, 0x01, 0x34, 0xB9, + 0x00, 0x9B, 0x44, 0x2E, 0x01, 0xDB, 0x2C, 0x23, 0x49, 0x24, 0x8C, 0x53, 0x13, 0x2B, 0x2B, 0x32, + 0x14, 0xA0, 0xA8, 0x07, 0x01, 0x5E, 0x01, 0x23, 0x7E, 0x5A, 0x01, 0x2A, 0x13, 0x26, 0x98, 0x45, + 0x14, 0xA4, 0x62, 0x2B, 0x02, 0xE0, 0xAE, 0x13, 0x90, 0x3F, 0x32, 0x13, 0x22, 0x63, 0x2E, 0x14, + 0xA8, 0x25, 0x0A, 0x01, 0x95, 0x2E, 0x23, 0xE7, 0xC7, 0xDF, 0x5D, 0x13, 0x1D, 0x7C, 0x8A, 0x15, + 0xAC, 0x26, 0x36, 0x14, 0xCF, 0xA0, 0xD0, 0x23, 0xFE, 0x0F, 0xC0, 0xD4, 0x23, 0xFF, 0xCE, 0x37, + 0x3B, 0x16, 0x4A, 0xA8, 0x35, 0x02, 0x92, 0x34, 0x13, 0x14, 0x47, 0x54, 0x15, 0xB5, 0x57, 0x34, + 0x18, 0x63, 0x2B, 0x87, 0x13, 0x10, 0xAF, 0x2B, 0x15, 0xB9, 0x4D, 0x5E, 0x18, 0x2C, 0x93, 0x02, + 0x13, 0x0B, 0x74, 0x55, 0x15, 0xBD, 0xA1, 0x35, 0x36, 0x03, 0xF4, 0xFF, 0x39, 0x49, 0x13, 0x07, + 0x84, 0x2C, 0x16, 0xC1, 0x67, 0x35, 0x03, 0x65, 0x69, 0x10, 0xF9, 0x1A, 0x0E, 0x13, 0x02, 0x79, + 0x46, 0x16, 0xC5, 0x02, 0x03, 0x27, 0x8A, 0xFF, 0xC8, 0x2E, 0x12, 0xFE, 0x79, 0x77, 0x16, 0xCA, + 0x72, 0x49, 0x18, 0x53, 0xA3, 0x26, 0x12, 0xF9, 0x8D, 0x8B, 0x16, 0xCE, 0x4B, 0x2F, 0x18, 0x1D, + 0x65, 0x04, 0x12, 0xF5, 0x0A, 0x63, 0x16, 0xD2, 0x97, 0x04, 0x27, 0x01, 0xE7, 0x86, 0x30, 0x01, + 0x59, 0x3D, 0x13, 0xF5, 0xDB, 0x45, 0x16, 0x26, 0x5A, 0x3C, 0x25, 0xF1, 0x02, 0x75, 0xCC, 0x46, + 0xFF, 0xF9, 0x00, 0xDA, 0xA7, 0x35, 0x25, 0x00, 0x7A, 0x4C, 0x09, 0x03, 0xB1, 0x34, 0x37, 0xFD, + 0x00, 0xDE, 0x30, 0x53, 0x17, 0x44, 0xE0, 0x5D, 0x15, 0xE3, 0xD2, 0x0D, 0x27, 0x1D, 0x17, 0x7C, + 0x08, 0x16, 0xCB, 0x81, 0x19, 0x02, 0x64, 0x50, 0x27, 0x8E, 0xCC, 0x1C, 0x75, 0x06, 0x88, 0x75, + 0x2B, 0x90, 0xCC, 0xDF, 0x4F, 0x09, 0x17, 0x00, 0x2F, 0xFC, 0x1C, 0x17, 0x00, 0x02, 0x2F, 0xFF, + 0x84, 0x17, 0x00, 0x03, 0x2F, 0xEB, 0x08, 0x17, 0x00, 0x02, 0x2F, 0xFF, 0x60, 0x17, 0x00, 0x03, + 0x2F, 0xCE, 0x01, 0x17, 0x00, 0x02, 0x2F, 0xFF, 0x3C, 0x17, 0x00, 0x03, 0x1F, 0xAA, 0x17, 0x00, + 0x03, 0x2F, 0xFC, 0x1D, 0x17, 0x00, 0x02, 0x2F, 0xFF, 0x86, 0x17, 0x00, 0x03, 0x2F, 0xEC, 0x09, + 0x17, 0x00, 0x02, 0x2F, 0xFF, 0x62, 0x17, 0x00, 0x03, 0x2F, 0xD0, 0x01, 0x17, 0x00, 0x02, 0x2F, + 0xFF, 0x3E, 0x17, 0x00, 0x03, 0x1C, 0xAC, 0x17, 0x00, 0x24, 0xF6, 0xFF, 0x5E, 0xC8, 0x09, 0x17, + 0x00, 0x24, 0xD4, 0xC7, 0xA4, 0x5F, 0x0A, 0x17, 0x00, 0x02, 0xAD, 0x0B, 0x2B, 0xED, 0x09, 0x17, + 0x00, 0x23, 0x08, 0xEB, 0x0D, 0x04, 0x0A, 0x17, 0x00, 0x03, 0xA0, 0x04, 0x2B, 0xD1, 0x01, 0x17, + 0x00, 0x21, 0x1F, 0xFE, 0x09, 0x00, 0x1B, 0x3F, 0x17, 0x00, 0x03, 0x97, 0x37, 0x1C, 0xAD, 0x17, + 0x00, 0x02, 0xCE, 0x53, 0x2B, 0xFD, 0xF8, 0x17, 0x00, 0x08, 0x2B, 0xBB, 0x07, 0x17, 0x00, 0x2F, + 0x00, 0x72, 0x17, 0x00, 0x03, 0x2F, 0x11, 0xF6, 0x17, 0x00, 0x02, 0x2F, 0x00, 0x9C, 0x17, 0x00, + 0x03, 0x1F, 0x32, 0x17, 0x00, 0x03, 0x2F, 0x00, 0xC7, 0x17, 0x00, 0x03, 0x1F, 0x5C, 0x17, 0x00, + 0x03, 0x2F, 0x07, 0xEB, 0x17, 0x00, 0x02, 0x2F, 0x00, 0x87, 0x17, 0x00, 0x03, 0x2F, 0x1F, 0xFD, + 0x17, 0x00, 0x02, 0x2F, 0x00, 0xB1, 0x17, 0x00, 0x03, 0x1F, 0x46, 0x17, 0x00, 0x03, 0x2F, 0x02, + 0xDB, 0x17, 0x00, 0x02, 0x2F, 0x00, 0x71, 0x17, 0x00, 0x03, 0x2F, 0x11, 0xF6, 0x17, 0x00, 0x02, + 0x2F, 0x00, 0x9C, 0x17, 0x00, 0x03, 0x1F, 0x31, 0x17, 0x00, 0x03, 0x24, 0x00, 0xC6, 0xA1, 0x34, + 0x2B, 0x1E, 0x1A, 0x40, 0x2C, 0x74, 0x31, 0x54, 0x6F, 0x79, 0x77, 0x6B, 0x4B, 0x93, 0x8D, 0x04, + 0x7A, 0x08, 0x25, 0x4F, 0xB5, 0x27, 0x28, 0x27, 0xEA, 0x98, 0x72, 0x62, 0x38, 0x24, 0xC6, 0xFF, + 0x01, 0x00, 0x24, 0xFE, 0x97, 0xD0, 0x37, 0x1D, 0x32, 0x43, 0x2C, 0x12, 0xC4, 0x10, 0x3D, 0x3D, + 0x15, 0xE7, 0xFF, 0x01, 0x00, 0x25, 0xAC, 0x01, 0xE9, 0x3A, 0x2E, 0xFF, 0xFF, 0x3F, 0x3C, 0x14, + 0x1F, 0x46, 0x2C, 0x54, 0xF3, 0xAF, 0x89, 0x8F, 0xBD, 0x77, 0x01, 0x26, 0xCB, 0x01, 0xD2, 0x5C, + 0x02, 0x16, 0xD5, 0x26, 0x34, 0xED, 0x9F, 0x0E, 0x04, 0x26, 0x29, 0x02, 0x23, 0x05, 0x05, 0xA4, + 0x1D, 0x59, 0x7B, 0x00, 0x0F, 0xFE, 0xFF, 0xF6, 0x90, 0x24, 0x0E, 0xFA, 0xFE, 0x50, 0x2B, 0x32, + 0xFF, 0x4F, 0x64, 0x14, 0xD3, 0x4D, 0x12, 0x28, 0x4E, 0xFF, 0xCE, 0x6F, 0x07, 0x19, 0x56, 0x14, + 0x0C, 0x27, 0x10, 0x05, 0xA1, 0x71, 0x03, 0xF3, 0xA8, 0x3C, 0xFF, 0x2A, 0x77, 0xFD, 0x63, 0x14, + 0xB0, 0x1E, 0x33, 0x1F, 0x7C, 0x1A, 0x00, 0x05, 0x1F, 0x40, 0x1A, 0x00, 0xFF, 0x74, 0x1F, 0x7B, + 0x1A, 0x00, 0x05, 0x2F, 0x3F, 0x75, 0xD4, 0x01, 0x06, 0x04, 0x60, 0x02, 0x1C, 0x76, 0x08, 0x02, + 0x2C, 0x27, 0x46, 0x11, 0x86, 0x05, 0x3C, 0x02, 0x1B, 0x28, 0xEE, 0x1F, 0x03, 0xBD, 0x3C, 0x5A, + 0xFF, 0xEF, 0x00, 0x06, 0xF5, 0x66, 0x34, 0x25, 0x10, 0xFD, 0x38, 0x38, 0x1A, 0xB5, 0xB1, 0x0C, + 0x25, 0x69, 0xFF, 0xBD, 0x7E, 0x14, 0x6E, 0x0C, 0x03, 0x01, 0x45, 0x3B, 0x35, 0x39, 0xEE, 0xFF, + 0x25, 0x7C, 0x14, 0x13, 0xCF, 0x39, 0x66, 0xF3, 0xA8, 0x82, 0x88, 0xB9, 0xFE, 0xDA, 0x14, 0x0F, + 0xE5, 0x5F, 0x03, 0x02, 0xF8, 0x51, 0x2E, 0x0E, 0xE0, 0x19, 0x00, 0x13, 0xA7, 0xA2, 0x1E, 0x0D, + 0x53, 0x21, 0x14, 0xBF, 0xE1, 0x3A, 0x1A, 0x21, 0xAF, 0x51, 0x26, 0xFD, 0x91, 0x09, 0x0E, 0x35, + 0x01, 0x4D, 0xB4, 0xB9, 0x21, 0x2B, 0xEB, 0x9D, 0xB6, 0x66, 0x97, 0x08, 0x35, 0x57, 0x73, 0x7D, + 0x7D, 0x6D, 0x54, 0x2A, 0x78, 0x04, 0x1D, 0x1B, 0x6C, 0x2C, 0x8F, 0xFC, 0xFC, 0xFC, 0xF4, 0xD7, + 0xAE, 0x77, 0x1C, 0x6C, 0x2C, 0x04, 0x3F, 0xFE, 0xAB, 0x1C, 0x6C, 0x2C, 0x04, 0x2F, 0xEF, 0x3D, + 0x6C, 0x2C, 0x04, 0x2F, 0xF1, 0x28, 0x6C, 0x2C, 0x04, 0x27, 0xC6, 0x01, 0xFA, 0x23, 0x6F, 0x15, + 0x1E, 0x3B, 0x71, 0xE3, 0xFF, 0x7C, 0x34, 0x03, 0x24, 0x15, 0xDD, 0x1C, 0x01, 0x0B, 0xFC, 0x0E, + 0x14, 0x62, 0x67, 0xCE, 0x0B, 0x18, 0x00, 0x1F, 0x13, 0x85, 0x32, 0x04, 0x13, 0x00, 0x99, 0x15, + 0x1C, 0x51, 0x18, 0x00, 0x03, 0x9B, 0x16, 0x1C, 0x72, 0x18, 0x00, 0x03, 0xD2, 0x21, 0x1C, 0x82, + 0x18, 0x00, 0x03, 0x06, 0x1F, 0x1C, 0x86, 0x18, 0x00, 0x03, 0x57, 0x13, 0x1B, 0x7E, 0x18, 0x00, + 0x13, 0x01, 0xDA, 0x05, 0x1B, 0x62, 0x18, 0x00, 0x03, 0xD2, 0x3E, 0x2F, 0xFF, 0x3D, 0x2C, 0x2D, + 0x03, 0x2A, 0xFE, 0x14, 0x18, 0x00, 0x24, 0x1D, 0xE8, 0x21, 0x50, 0x06, 0xF1, 0x0F, 0x55, 0x0D, + 0x1A, 0x3B, 0x81, 0xF0, 0xB3, 0x0E, 0x0F, 0x68, 0x01, 0x02, 0x2F, 0xD9, 0x07, 0x18, 0x00, 0x02, + 0x2F, 0xF6, 0x33, 0x98, 0x01, 0x02, 0x1F, 0xEB, 0xC8, 0x01, 0x02, 0x3D, 0xFC, 0x94, 0x12, 0xF8, + 0x01, 0x4B, 0xF3, 0xD0, 0xAA, 0x64, 0xF2, 0x14, 0x1B, 0x0C, 0xFB, 0xBD, 0x0E, 0xAC, 0x10, 0x0F, + 0x18, 0x00, 0xFF, 0x8C, 0x5F, 0x1E, 0x1A, 0x35, 0x02, 0xF7, 0xAC, 0x08, 0x1C, 0x2F, 0x9A, 0x2E, + 0xAC, 0x08, 0x06, 0x3F, 0xFF, 0x99, 0x0B, 0xAC, 0x08, 0x06, 0x2F, 0xC7, 0x0E, 0xAC, 0x08, 0x06, + 0x1F, 0xAF, 0xAC, 0x08, 0x07, 0x1F, 0x51, 0xAC, 0x08, 0x06, 0x1F, 0xCD, 0xAC, 0x08, 0x07, 0x1F, + 0x34, 0xAC, 0x08, 0x06, 0x1F, 0x7C, 0xAC, 0x08, 0xFF, 0xFF, 0x5F, 0x03, 0xAB, 0x12, 0x0F, 0xAC, + 0x08, 0x00, 0x1F, 0x11, 0xAC, 0x08, 0x05, 0x2F, 0xEB, 0x01, 0xAC, 0x08, 0x05, 0x1F, 0xBD, 0xAC, + 0x08, 0x06, 0x1F, 0x7A, 0xAC, 0x08, 0x06, 0x1F, 0x2B, 0xAC, 0x08, 0x05, 0x2F, 0xBF, 0x00, 0xAC, + 0x08, 0x05, 0x1F, 0x3F, 0xAC, 0x08, 0x05, 0x1F, 0x91, 0xAC, 0x08, 0x05, 0x2F, 0xAA, 0x04, 0xAC, + 0x08, 0x03, 0x3F, 0xF9, 0x78, 0x02, 0xAC, 0x08, 0x02, 0x06, 0x44, 0xE1, 0x08, 0xAC, 0x08, 0x2F, + 0x86, 0xFD, 0x8D, 0x74, 0x01, 0x08, 0x75, 0x4B, 0x0F, 0x1B, 0x00, 0x00, 0x13, 0x03, 0x23, 0x3E, + 0x1E, 0x7D, 0x6D, 0x42, 0x25, 0x10, 0xD8, 0x1B, 0x5D, 0x0C, 0x36, 0x00, 0x2F, 0x22, 0xE5, 0x70, + 0x91, 0x04, 0x4D, 0x00, 0x00, 0x28, 0xE5, 0xFE, 0x7E, 0x05, 0x36, 0x00, 0x1A, 0xD5, 0x0B, 0x61, + 0x08, 0xC6, 0x54, 0x12, 0xA8, 0x96, 0x49, 0x0F, 0x01, 0x00, 0x01, 0x12, 0x49, 0xFA, 0x04, 0x0E, + 0x94, 0x3E, 0x7C, 0xFA, 0xF4, 0xE0, 0xC8, 0xAE, 0x82, 0x44, 0x28, 0x1D, 0x06, 0xED, 0x9A, 0x2F, + 0x7C, 0x11, 0xB9, 0x3C, 0x05, 0x2F, 0xE9, 0x48, 0x94, 0x3E, 0x05, 0x2F, 0xFB, 0x4D, 0xD2, 0x3C, + 0x05, 0x28, 0xF1, 0x1A, 0x7B, 0x2D, 0x44, 0x16, 0x25, 0x49, 0x93, 0xD5, 0x05, 0x1C, 0x98, 0x22, + 0x06, 0x13, 0x28, 0xB8, 0x0F, 0x2C, 0xF5, 0x09, 0x3B, 0x06, 0x04, 0x72, 0x02, 0x1C, 0x46, 0x19, + 0x00, 0x04, 0xA5, 0x02, 0x1D, 0x73, 0x6D, 0x06, 0x14, 0xD7, 0x65, 0x00, 0x0C, 0x19, 0x00, 0x14, + 0xBC, 0xB5, 0x5A, 0x0C, 0x19, 0x00, 0x03, 0x5C, 0x37, 0x1D, 0xAF, 0x19, 0x00, 0x14, 0xBD, 0xF7, + 0x66, 0x0C, 0x19, 0x00, 0x14, 0xDA, 0xE8, 0x71, 0x0B, 0x19, 0x00, 0x15, 0x17, 0xA5, 0x38, 0x0B, + 0x19, 0x00, 0x15, 0x77, 0xB3, 0x77, 0x0A, 0x19, 0x00, 0x04, 0x26, 0x29, 0x27, 0xF3, 0x08, 0x19, + 0x00, 0x56, 0x02, 0x1B, 0x48, 0x9C, 0xFC, 0xBD, 0x38, 0x05, 0x1A, 0x2F, 0x08, 0x98, 0x4B, 0x2F, + 0xF5, 0x24, 0x77, 0x01, 0x03, 0x2F, 0xFD, 0x59, 0x90, 0x01, 0x03, 0x2F, 0xEA, 0x4F, 0xC2, 0x01, + 0x03, 0x2F, 0xBA, 0x12, 0xF4, 0x01, 0x04, 0x1A, 0xC7, 0x26, 0x02, 0x33, 0x1C, 0x14, 0x14, 0xC4, + 0x34, 0x2C, 0xFD, 0x11, 0xE4, 0x07, 0x19, 0x23, 0x9A, 0xDB, 0x08, 0x48, 0x20, 0x18, 0xE2, 0x29, + 0x43, 0x08, 0x16, 0x08, 0x03, 0x2E, 0x63, 0x2C, 0xE2, 0x01, 0x19, 0x00, 0x18, 0x5E, 0xD4, 0x41, + 0x08, 0x19, 0x00, 0x04, 0x4E, 0x5F, 0x1D, 0x70, 0x61, 0x08, 0x17, 0xDB, 0x14, 0x22, 0x09, 0x19, + 0x00, 0x03, 0x70, 0x16, 0x2C, 0xF6, 0x08, 0x19, 0x00, 0x16, 0x58, 0x3A, 0x1E, 0x0A, 0x19, 0x00, + 0x17, 0x17, 0x80, 0x2B, 0x0A, 0xC5, 0x08, 0x16, 0xD4, 0x88, 0x22, 0x0A, 0x19, 0x00, 0x04, 0x80, + 0x51, 0x1C, 0x1A, 0x19, 0x00, 0x16, 0x51, 0xEF, 0x14, 0x0B, 0x9F, 0x1E, 0x1F, 0xFE, 0x9F, 0x1E, + 0x05, 0x14, 0xCE, 0xC5, 0x3E, 0x0C, 0x19, 0x00, 0x15, 0x8C, 0xDC, 0x16, 0x0B, 0x19, 0x00, 0x15, + 0x4A, 0x6A, 0x08, 0x0B, 0x19, 0x00, 0x04, 0x39, 0x23, 0x1D, 0xC3, 0xBC, 0x02, 0x03, 0x53, 0x13, + 0x2C, 0xFC, 0x0F, 0x19, 0x00, 0x15, 0x85, 0x05, 0x09, 0x1A, 0x1A, 0x40, 0x5F, 0x79, 0x0F, 0x3B, + 0x61, 0x77, 0x7A, 0x6A, 0x45, 0xBC, 0x84, 0x34, 0x01, 0x50, 0xB4, 0x34, 0x48, 0x25, 0xCC, 0x5E, + 0x9B, 0x1B, 0x28, 0x20, 0xBB, 0x43, 0x02, 0x13, 0xCD, 0xAE, 0x2B, 0x2A, 0x2A, 0xE9, 0x5B, 0x02, + 0x11, 0xE7, 0x67, 0x2F, 0x1D, 0x0A, 0x88, 0x61, 0x2F, 0xC2, 0x02, 0x81, 0x67, 0x01, 0x01, 0xC0, + 0x4B, 0x23, 0x0B, 0xF2, 0x0C, 0x00, 0x5D, 0xD0, 0x90, 0x87, 0xB6, 0xFF, 0xF2, 0x7E, 0x10, 0x7F, + 0x48, 0x02, 0x24, 0x49, 0xFB, 0x3B, 0x02, 0x03, 0xFB, 0x5E, 0x28, 0xD5, 0x02, 0x48, 0x73, 0x14, + 0x73, 0xFC, 0x6D, 0x02, 0x83, 0x4D, 0x04, 0x1B, 0x1C, 0x39, 0xA8, 0x00, 0xCF, 0x6D, 0x68, 0x03, + 0xF3, 0x43, 0x39, 0xCF, 0x00, 0xD2, 0xDA, 0xB8, 0x03, 0x25, 0x47, 0x39, 0xF1, 0x00, 0xC2, 0x6B, + 0x63, 0x00, 0x8B, 0x7F, 0x53, 0xF5, 0xC4, 0x91, 0x5E, 0x01, 0x00, 0x56, 0x13, 0xFE, 0x02, 0x0A, + 0x48, 0x5C, 0x5D, 0x2A, 0x03, 0xF0, 0x89, 0x1A, 0xC6, 0x0B, 0x0B, 0x05, 0xB6, 0x1C, 0x19, 0xAB, + 0x2D, 0x48, 0x15, 0x01, 0xDB, 0x74, 0x2F, 0xA8, 0x07, 0xC0, 0x6A, 0x01, 0x4E, 0xFF, 0xFF, 0xBF, + 0x11, 0xD0, 0x9C, 0x00, 0x01, 0x00, 0x18, 0xD6, 0xDD, 0x60, 0x16, 0x0D, 0x61, 0x3C, 0x18, 0xE7, + 0xC2, 0x79, 0x16, 0x1A, 0x72, 0x01, 0x27, 0xF4, 0x4A, 0x18, 0x00, 0x16, 0x19, 0x21, 0x80, 0x28, + 0xFD, 0x65, 0x48, 0x00, 0x04, 0x6A, 0x01, 0x0B, 0xDF, 0x67, 0x01, 0xA0, 0xD5, 0x1E, 0xFF, 0xF0, + 0x66, 0x25, 0x01, 0x76, 0x17, 0x00, 0x19, 0xFE, 0xAB, 0x85, 0x15, 0x57, 0x06, 0xA1, 0x29, 0xEC, + 0x1B, 0x44, 0x48, 0x05, 0x65, 0x56, 0x19, 0xB2, 0x1F, 0x01, 0x15, 0x2F, 0x31, 0x02, 0x0A, 0xEA, + 0x53, 0x14, 0x2D, 0x67, 0x08, 0x1F, 0xB5, 0xE7, 0x98, 0x00, 0x03, 0x85, 0x03, 0x5B, 0x10, 0x44, + 0x79, 0xAE, 0xD5, 0xC9, 0x15, 0x38, 0x5E, 0x90, 0xDA, 0x16, 0x28, 0x14, 0x3C, 0xE6, 0x03, 0x03, + 0xAA, 0x51, 0x1A, 0x22, 0x0F, 0x63, 0x2A, 0xAD, 0xAF, 0x52, 0x55, 0x03, 0x65, 0x08, 0x13, 0xC1, + 0x20, 0x03, 0x1A, 0x88, 0x0C, 0x9C, 0x13, 0xBE, 0x84, 0x02, 0x27, 0xDD, 0x02, 0x66, 0x4F, 0x58, + 0xFF, 0xFF, 0xA7, 0x18, 0xFD, 0xD8, 0x49, 0x24, 0x15, 0xFC, 0x3A, 0x09, 0x03, 0x63, 0x3E, 0x10, + 0xF4, 0xE2, 0x4E, 0x25, 0x05, 0xA8, 0x40, 0x18, 0x04, 0xF8, 0x04, 0x44, 0xFF, 0xB8, 0x83, 0x8E, + 0x76, 0x6C, 0x2D, 0xDB, 0x01, 0x95, 0x98, 0x04, 0x66, 0x1A, 0x1D, 0x39, 0xB1, 0x4B, 0x11, 0xB5, + 0x4B, 0x05, 0x1B, 0x5B, 0x8D, 0x57, 0x13, 0xCE, 0x82, 0x56, 0x19, 0x44, 0xB0, 0x7E, 0x15, 0x9D, + 0xD9, 0x52, 0x24, 0x0B, 0x72, 0x15, 0x31, 0x2A, 0xF9, 0xAB, 0xF5, 0xA0, 0x75, 0x18, 0x42, 0x6B, + 0x7B, 0x7C, 0x67, 0x3D, 0xED, 0x55, 0x4E, 0x16, 0x17, 0x2B, 0x00, 0x28, 0x3A, 0x0F, 0x2C, 0x3A, + 0x08, 0x0E, 0x0A, 0x3A, 0x0F, 0x17, 0x00, 0x3C, 0x03, 0xDA, 0x5A, 0x04, 0xBA, 0x42, 0x1A, 0x3C, + 0xD1, 0x5E, 0x2A, 0x98, 0xFF, 0x1A, 0x65, 0x0F, 0x17, 0x00, 0xFF, 0xFF, 0xFF, 0x18, 0x22, 0x1E, + 0x19, 0xC8, 0x76, 0x13, 0x20, 0xDA, 0x03, 0x05, 0x98, 0x36, 0x12, 0x96, 0x10, 0x00, 0x2C, 0xF9, + 0x20, 0x97, 0x0E, 0x03, 0x45, 0x00, 0x1F, 0xFC, 0x19, 0x00, 0xFF, 0xFF, 0x92, 0x1C, 0x1D, 0x48, + 0x83, 0x03, 0x3D, 0x06, 0x2C, 0xF9, 0x14, 0x92, 0x37, 0x03, 0xB5, 0x51, 0x3B, 0xEE, 0x05, 0xFF, + 0xE4, 0x20, 0x03, 0xC7, 0x2D, 0x3B, 0xDE, 0x00, 0xF3, 0xCA, 0x67, 0x14, 0xBC, 0x8F, 0x25, 0x1B, + 0xD6, 0xD2, 0x6F, 0x14, 0xE6, 0x71, 0x4D, 0x03, 0xF1, 0x4F, 0x27, 0xF6, 0x0A, 0x62, 0xE5, 0x01, + 0x5B, 0x00, 0x1A, 0x6D, 0x09, 0x26, 0x15, 0x86, 0xF5, 0x0E, 0x04, 0xC2, 0x17, 0x11, 0xF1, 0x22, + 0x73, 0x13, 0x55, 0x3D, 0x14, 0x25, 0xF8, 0x09, 0xB1, 0x7F, 0x67, 0xFF, 0xFF, 0xBD, 0x86, 0x89, + 0xC4, 0x2F, 0x42, 0x2F, 0x00, 0x56, 0x2C, 0x07, 0x01, 0x00, 0x14, 0x23, 0x2E, 0x01, 0xB1, 0x18, + 0x00, 0x02, 0xDD, 0x0A, 0x1C, 0x15, 0xBC, 0x82, 0x23, 0xFF, 0xC3, 0x48, 0x46, 0x29, 0x13, 0xAA, + 0x17, 0x00, 0x15, 0xFD, 0x1D, 0x1E, 0x45, 0x00, 0x00, 0x39, 0xAB, 0xE2, 0x1F, 0x2A, 0xF0, 0xA0, + 0x8E, 0x95, 0x94, 0x07, 0x31, 0x52, 0x72, 0x7D, 0x7C, 0x6F, 0x4E, 0x2C, 0xA8, 0x11, 0x22, 0x1B, + 0x1A, 0x58, 0x7F, 0x3A, 0xAD, 0xFC, 0xFC, 0x22, 0xD4, 0x22, 0x02, 0xF1, 0x12, 0x00, 0x2A, 0x1E, + 0x7C, 0xD1, 0x49, 0x05, 0x3F, 0xA0, 0x12, 0xEA, 0xF0, 0xCD, 0x08, 0x08, 0x8F, 0x14, 0x52, 0xDA, + 0x71, 0x1C, 0x15, 0xAF, 0x2D, 0x15, 0x7F, 0x09, 0x48, 0x02, 0x29, 0x19, 0x2B, 0xFA, 0x06, 0x40, + 0x85, 0x15, 0x4E, 0x0A, 0x00, 0x2A, 0x30, 0x00, 0xCA, 0x0F, 0x15, 0x1A, 0x53, 0x6A, 0x1A, 0x60, + 0x9E, 0x50, 0x16, 0xE6, 0xFA, 0x70, 0x1A, 0x90, 0xD3, 0x50, 0x16, 0xB2, 0x0A, 0x1A, 0x1A, 0xC0, + 0xF7, 0x5F, 0x16, 0x7D, 0xD2, 0x9E, 0x29, 0xF0, 0x01, 0x74, 0x86, 0x16, 0x49, 0xDF, 0x7A, 0x03, + 0xC6, 0x6B, 0x27, 0x00, 0xBE, 0xCD, 0x98, 0x17, 0x76, 0x6F, 0x97, 0x04, 0x5D, 0x77, 0x18, 0xE1, + 0x9F, 0x44, 0x25, 0x81, 0x00, 0x1A, 0xFA, 0x04, 0x7D, 0x7B, 0x18, 0x11, 0x55, 0x51, 0x19, 0x46, + 0xC6, 0x02, 0x17, 0xDB, 0x41, 0x00, 0x18, 0x74, 0xF3, 0x98, 0x04, 0x1C, 0x3A, 0x17, 0x12, 0xC4, + 0x4F, 0x19, 0x12, 0x1C, 0x1A, 0x16, 0x41, 0xE2, 0x50, 0x1A, 0xDD, 0xA4, 0x3A, 0x00, 0x09, 0x0C, + 0x29, 0x04, 0xF9, 0x16, 0x6C, 0x16, 0x0E, 0x8F, 0x63, 0x1B, 0x2A, 0x79, 0x03, 0x15, 0xD9, 0x2D, + 0x7A, 0x03, 0xBD, 0x28, 0x1A, 0x40, 0x0A, 0x54, 0x16, 0xFB, 0xD5, 0x7C, 0x1B, 0x0E, 0x39, 0x21, + 0x14, 0x32, 0x99, 0x11, 0x1C, 0xD8, 0x74, 0x54, 0x14, 0x62, 0x26, 0x32, 0x1C, 0xA4, 0xA9, 0x54, + 0x14, 0x93, 0x9B, 0x53, 0x1C, 0x70, 0x44, 0x6B, 0x39, 0xC3, 0x00, 0x3B, 0x4F, 0x24, 0x15, 0x00, + 0x9A, 0xC3, 0x3D, 0xF2, 0x02, 0x68, 0xEC, 0x72, 0x03, 0xDE, 0x14, 0x29, 0x23, 0x96, 0x28, 0x4A, + 0x06, 0xB7, 0xB3, 0x4C, 0xFF, 0x53, 0xC3, 0xFF, 0x9E, 0x91, 0x03, 0xAE, 0x9F, 0x28, 0x84, 0xF0, + 0x38, 0x29, 0x08, 0xDB, 0x17, 0x18, 0xD1, 0xF4, 0x99, 0x09, 0x30, 0x7D, 0x1D, 0xFF, 0x1D, 0x75, + 0x05, 0x0C, 0x75, 0x1E, 0xFF, 0x24, 0x94, 0x1F, 0x38, 0xA2, 0x57, 0x06, 0x17, 0x09, 0xFE, 0x0B, + 0x1F, 0x67, 0x78, 0x6C, 0x02, 0x0A, 0xED, 0x54, 0x08, 0xEA, 0x04, 0x00, 0x06, 0x05, 0x1F, 0x06, + 0xD4, 0x56, 0x05, 0x2F, 0xCA, 0x00, 0x09, 0x57, 0x05, 0x0C, 0x9B, 0x6C, 0x04, 0xE6, 0x4D, 0x0E, + 0x7A, 0xA2, 0x06, 0x73, 0x57, 0x1F, 0x2E, 0xA8, 0x57, 0x05, 0x2C, 0xF7, 0x04, 0x1A, 0x00, 0x1F, + 0x66, 0xE8, 0x56, 0x03, 0x07, 0x32, 0x24, 0x08, 0x6C, 0x85, 0x22, 0x26, 0x24, 0x68, 0x04, 0x12, + 0x32, 0x56, 0x04, 0x04, 0x53, 0x57, 0x00, 0xDB, 0xC7, 0x14, 0xFC, 0xE4, 0xED, 0x12, 0x34, 0x1C, + 0x00, 0x2A, 0x3E, 0x0F, 0x29, 0x17, 0x18, 0xD7, 0xB2, 0xA6, 0x14, 0x55, 0x15, 0x04, 0x18, 0xEA, + 0xBD, 0x32, 0x25, 0x06, 0xFC, 0xA1, 0xB4, 0x05, 0x10, 0x7D, 0x23, 0xF4, 0x01, 0x45, 0x28, 0x19, + 0xC1, 0x83, 0x75, 0x18, 0x3E, 0xD9, 0xA3, 0x14, 0xD0, 0x64, 0x03, 0x19, 0xE1, 0xD4, 0x3D, 0x18, + 0x69, 0xDF, 0x52, 0x14, 0xAC, 0x0F, 0x3F, 0x01, 0x0A, 0xB7, 0x05, 0x5F, 0x48, 0x18, 0x94, 0xC3, + 0x02, 0x15, 0x87, 0xB9, 0x12, 0x02, 0xB1, 0x0E, 0x18, 0xAA, 0x7D, 0x04, 0x03, 0x69, 0x40, 0x15, + 0x63, 0x5C, 0x10, 0x18, 0x42, 0xB7, 0x12, 0x18, 0xEB, 0x9E, 0x14, 0x15, 0x3E, 0xC1, 0x56, 0x01, + 0xA3, 0x01, 0x37, 0x05, 0xFA, 0xFF, 0x83, 0x04, 0x15, 0x37, 0x10, 0x05, 0x03, 0xFD, 0x00, 0x19, + 0x83, 0xA4, 0x84, 0x16, 0x41, 0x88, 0x2C, 0x01, 0x1C, 0xB4, 0x16, 0xC5, 0xD2, 0x64, 0x19, 0x53, + 0x22, 0x56, 0x14, 0x78, 0xFB, 0x00, 0x04, 0x61, 0x04, 0x18, 0xC4, 0x38, 0x8B, 0x26, 0xFF, 0x97, + 0x96, 0x07, 0x16, 0xAC, 0x0C, 0x40, 0x17, 0xE4, 0x9C, 0x04, 0x03, 0x63, 0x11, 0x16, 0xB8, 0xBE, + 0x86, 0x02, 0xFD, 0x00, 0x28, 0xFE, 0x07, 0x38, 0x59, 0x01, 0x20, 0x75, 0x16, 0xD9, 0x4F, 0xA1, + 0x15, 0x33, 0x1C, 0x78, 0x25, 0x04, 0xF8, 0x0B, 0x59, 0x14, 0x19, 0xA0, 0xB7, 0x02, 0x98, 0x01, + 0x15, 0x0F, 0x0B, 0x05, 0x01, 0x37, 0x7A, 0x23, 0xEB, 0xBC, 0x69, 0x10, 0x27, 0x19, 0xFF, 0x4E, + 0x5E, 0x14, 0xEA, 0xB4, 0x5E, 0x01, 0x7C, 0x11, 0x23, 0xC0, 0x90, 0x9E, 0x06, 0x16, 0x3A, 0xFB, + 0x00, 0x04, 0xFD, 0x00, 0x13, 0x86, 0xA1, 0x29, 0x23, 0x95, 0x65, 0x5F, 0x19, 0x18, 0x5A, 0x48, + 0x68, 0x14, 0xA1, 0x39, 0x7D, 0x01, 0x64, 0x2B, 0x23, 0x6A, 0x3A, 0x82, 0x6F, 0x18, 0x7A, 0x71, + 0x73, 0x14, 0x7C, 0x71, 0x15, 0x02, 0xEB, 0x97, 0x13, 0x0F, 0x39, 0x06, 0x18, 0x9B, 0xB9, 0x87, + 0x02, 0xFD, 0x00, 0x42, 0xE7, 0x00, 0x03, 0xF7, 0x61, 0x7B, 0x01, 0xCD, 0x20, 0x13, 0x1B, 0x0A, + 0x92, 0x19, 0x63, 0x56, 0x12, 0x23, 0x09, 0x22, 0xCC, 0x02, 0x12, 0xB7, 0x45, 0x08, 0x18, 0xDC, + 0x93, 0x02, 0x03, 0xFD, 0x00, 0x23, 0x28, 0x4D, 0xE2, 0x19, 0x01, 0x5A, 0x14, 0x37, 0x72, 0x03, + 0xFA, 0xFB, 0x00, 0x04, 0xFD, 0x00, 0x23, 0x48, 0x77, 0x60, 0x03, 0x01, 0x6F, 0x51, 0x28, 0x9D, + 0x1C, 0xFB, 0x00, 0x04, 0xFD, 0x00, 0x23, 0x68, 0xA1, 0x6C, 0x04, 0x01, 0x12, 0x04, 0x28, 0xC8, + 0x3D, 0xFB, 0x00, 0x04, 0xFD, 0x00, 0x23, 0x89, 0xCB, 0x78, 0x05, 0x01, 0xB5, 0x2B, 0x28, 0xF2, + 0x5E, 0xFB, 0x00, 0x04, 0xFD, 0x00, 0x24, 0xAB, 0xF4, 0x75, 0x79, 0x01, 0x38, 0x07, 0x09, 0xFB, + 0x00, 0x04, 0xFD, 0x00, 0x15, 0xE8, 0xDD, 0x78, 0x01, 0x18, 0x06, 0x18, 0xE5, 0xFB, 0x00, 0x05, + 0xFD, 0x00, 0x05, 0x45, 0x78, 0x05, 0xF4, 0x27, 0x05, 0x8E, 0x03, 0x05, 0xFD, 0x00, 0x05, 0xFA, + 0x08, 0x07, 0x29, 0xFC, 0x04, 0xFB, 0x00, 0x04, 0xFD, 0x00, 0x05, 0x8F, 0x09, 0x03, 0xF8, 0x60, + 0x08, 0xFB, 0x00, 0x04, 0xFD, 0x00, 0x05, 0x3A, 0x0D, 0x00, 0xC6, 0xCE, 0x1A, 0xFF, 0xFB, 0x00, + 0x06, 0xAA, 0x8E, 0x04, 0xDA, 0x06, 0x03, 0xED, 0x21, 0x07, 0xFB, 0x00, 0x04, 0xFD, 0x00, 0x06, + 0x14, 0xB7, 0x03, 0x20, 0x81, 0x07, 0xFB, 0x00, 0x05, 0xF4, 0x03, 0x05, 0xB2, 0xAF, 0x04, 0xBE, + 0xB3, 0x06, 0xFB, 0x00, 0x07, 0xFD, 0x00, 0x1B, 0x8C, 0x2A, 0x30, 0x05, 0xFB, 0x00, 0x07, 0xFD, + 0x00, 0x19, 0x61, 0xAB, 0x04, 0x08, 0xFB, 0x00, 0x06, 0xFD, 0x00, 0x03, 0x7E, 0x76, 0x2D, 0x06, + 0xFB, 0xFB, 0x00, 0x06, 0xFD, 0x00, 0x04, 0x44, 0x6A, 0x1E, 0xD4, 0x19, 0x7A, 0x2A, 0x00, 0xA1, + 0x06, 0x5A, 0x2D, 0x00, 0xA9, 0xFB, 0x00, 0x05, 0xFD, 0x00, 0x1B, 0xB4, 0x55, 0x8F, 0x07, 0xFB, + 0x00, 0x05, 0xFD, 0x00, 0x1B, 0x89, 0xFD, 0x09, 0x07, 0xFB, 0x00, 0x05, 0xFD, 0x00, 0x05, 0xE2, + 0x31, 0x19, 0x26, 0xFB, 0x00, 0x22, 0x1A, 0x1A, 0xB8, 0x12, 0x10, 0x0F, 0x20, 0xEB, 0x08, 0xE3, + 0xE1, 0x22, 0x00, 0xB7, 0xFE, 0x50, 0x3B, 0x21, 0x00, 0x9C, 0x55, 0x14, 0x03, 0xBB, 0x13, 0x15, + 0xBE, 0x65, 0x06, 0x2A, 0xFE, 0x22, 0x18, 0x08, 0x16, 0x5C, 0x14, 0x59, 0x19, 0x89, 0x23, 0x59, + 0x01, 0xB3, 0xCC, 0x19, 0x5F, 0xFF, 0x2C, 0x17, 0x25, 0xC5, 0x31, 0x28, 0x09, 0xED, 0x74, 0x5E, + 0x18, 0x7F, 0x10, 0x08, 0x17, 0x8C, 0xE8, 0x06, 0x26, 0x01, 0xD9, 0x71, 0x88, 0x05, 0x0A, 0x0B, + 0x01, 0x2C, 0x5D, 0x1A, 0x34, 0x2C, 0x46, 0x16, 0xB8, 0xD3, 0x1D, 0x02, 0xF3, 0x16, 0x2A, 0xFB, + 0x17, 0xEC, 0x52, 0x64, 0xF5, 0x10, 0x00, 0x03, 0xE7, 0xFF, 0xBB, 0x65, 0x01, 0x01, 0x00, 0x24, + 0x04, 0xE2, 0x34, 0x38, 0x19, 0x45, 0x2B, 0xCE, 0x06, 0x91, 0x01, 0x22, 0xD8, 0x01, 0x96, 0x08, + 0x16, 0xE7, 0x8E, 0x07, 0x13, 0x18, 0x08, 0x02, 0x2A, 0x4B, 0xF2, 0x8F, 0x01, 0x06, 0x84, 0x16, + 0x1E, 0xE8, 0x69, 0x5F, 0x2F, 0x3F, 0xFF, 0xA9, 0x5E, 0x05, 0x04, 0xEB, 0x38, 0x06, 0x66, 0x03, + 0x29, 0x00, 0x00, 0x0A, 0xD0, 0x02, 0xBD, 0x00, 0x19, 0x0E, 0x1A, 0x00, 0x01, 0xD9, 0xF4, 0x0F, + 0x24, 0x69, 0x02, 0x07, 0xE3, 0x8F, 0x07, 0xF0, 0x02, 0x08, 0xBC, 0x7D, 0x06, 0xD7, 0xF2, 0x06, + 0xC5, 0x16, 0x19, 0xF1, 0xE5, 0xE4, 0x0C, 0x16, 0x8B, 0x0A, 0xF2, 0xF9, 0x0B, 0x87, 0x91, 0x2B, + 0xFF, 0x60, 0x19, 0x00, 0x15, 0x15, 0x8F, 0x15, 0x08, 0xCF, 0x7E, 0x0B, 0x94, 0x8B, 0x19, 0x36, + 0x19, 0x00, 0x01, 0xCB, 0xF5, 0x0F, 0x1C, 0xB8, 0x02, 0x18, 0x32, 0xFF, 0x78, 0x1F, 0x14, 0xEC, + 0x6B, 0x01, 0x1C, 0xFF, 0x52, 0x9C, 0x27, 0x07, 0xED, 0x5F, 0x2E, 0x27, 0xFF, 0xE0, 0x55, 0x18, + 0x03, 0xF8, 0x5C, 0x2C, 0x63, 0xF7, 0xED, 0x01, 0x03, 0xED, 0x5C, 0x4B, 0xED, 0x07, 0x9C, 0xFF, + 0xE2, 0x87, 0x23, 0x1B, 0xFD, 0x09, 0x3A, 0x2B, 0x31, 0xFF, 0x6A, 0x7F, 0x15, 0x79, 0xC9, 0x00, + 0x19, 0xC5, 0x4B, 0x19, 0x33, 0x00, 0x01, 0xDA, 0x3A, 0x02, 0x05, 0x31, 0x51, 0x29, 0xEF, 0x0A, + 0x30, 0x0B, 0x00, 0x65, 0x01, 0x29, 0x06, 0xE8, 0xBD, 0x03, 0x02, 0x78, 0x00, 0x02, 0x7B, 0xCF, + 0x18, 0x83, 0x03, 0x30, 0x27, 0x0B, 0xF3, 0xE1, 0x64, 0x27, 0x1C, 0xFC, 0x92, 0x5E, 0x19, 0x5F, + 0x2B, 0x61, 0x17, 0xAC, 0xB1, 0x65, 0x02, 0xDE, 0x31, 0x29, 0xF5, 0x0C, 0xAB, 0x0C, 0x25, 0xF9, + 0x16, 0x1B, 0xB1, 0x1B, 0xA2, 0x62, 0x19, 0x15, 0x7A, 0x48, 0x05, 0x1B, 0x44, 0xEE, 0x0A, 0x4A, + 0xE2, 0x04, 0x02, 0xE1, 0xBB, 0x3B, 0x23, 0x00, 0x0D, 0x19, 0x18, 0x2D, 0x50, 0x44, 0xA2, 0x04, + 0x14, 0x92, 0x71, 0x5B, 0x05, 0x68, 0x04, 0x12, 0x5A, 0x67, 0x04, 0x15, 0xEB, 0x13, 0x36, 0x22, + 0x07, 0xF0, 0x12, 0x00, 0x3B, 0x3A, 0x0F, 0xFA, 0x03, 0x0D, 0x03, 0x81, 0x03, 0x24, 0xE6, 0x02, + 0x4C, 0x18, 0x1B, 0x8F, 0xA3, 0x94, 0x15, 0x95, 0x18, 0x7F, 0x04, 0x4A, 0xF5, 0x25, 0x01, 0xDC, + 0x88, 0x09, 0x29, 0x12, 0xFB, 0x9C, 0x4A, 0x03, 0x41, 0x3B, 0x17, 0xEB, 0xE5, 0x88, 0x19, 0x7B, + 0xDF, 0x56, 0x17, 0x9A, 0xD3, 0xA9, 0x19, 0xCA, 0xE0, 0x1E, 0x01, 0x8B, 0x3C, 0x27, 0x15, 0xFD, + 0x0E, 0x06, 0x12, 0x0F, 0x5C, 0x00, 0x28, 0xEF, 0x06, 0x27, 0x00, 0x17, 0x67, 0xBA, 0x68, 0x19, + 0xA0, 0x34, 0x01, 0x17, 0xB5, 0x01, 0x81, 0x03, 0x62, 0x02, 0x12, 0x18, 0x91, 0x0D, 0x24, 0xF8, + 0x0C, 0xC2, 0xB4, 0x00, 0xE3, 0x1E, 0x09, 0x83, 0x90, 0x15, 0x53, 0xE2, 0x84, 0x1B, 0xA6, 0x77, + 0x0D, 0x15, 0xA1, 0x9D, 0x01, 0x01, 0x29, 0x7C, 0x07, 0x08, 0x8D, 0x23, 0xED, 0x04, 0xF9, 0x10, + 0x2A, 0xF5, 0x0A, 0x0A, 0x2F, 0x4D, 0xFF, 0xFF, 0x3E, 0x1A, 0x63, 0x06, 0x03, 0xF9, 0x00, 0x2D, + 0x8D, 0x64, 0x99, 0x21, 0x03, 0x21, 0x12, 0x12, 0xDC, 0xEA, 0x19, 0x18, 0xF8, 0x69, 0x04, 0x03, + 0xC0, 0x19, 0x1E, 0xFB, 0x97, 0x1A, 0x03, 0x75, 0x89, 0x0D, 0x50, 0x38, 0x06, 0xA3, 0x05, 0x01, + 0x39, 0x00, 0x0A, 0x95, 0x86, 0x03, 0x26, 0x60, 0x0F, 0x44, 0x8B, 0x00, 0x1F, 0x7B, 0x95, 0x65, + 0x06, 0x06, 0x12, 0x90, 0x2F, 0xFD, 0x15, 0x23, 0xB2, 0x01, 0x03, 0x9D, 0x06, 0x0F, 0xD8, 0x66, + 0x02, 0x0F, 0x17, 0xB3, 0x00, 0x04, 0x39, 0x35, 0x1D, 0xFE, 0x2F, 0xBA, 0x2D, 0x01, 0xDB, 0xDF, + 0x38, 0x04, 0x01, 0x00, 0x02, 0x6F, 0xB7, 0x2F, 0xFF, 0xB0, 0x1A, 0x00, 0xFF, 0x7F, 0x23, 0x17, + 0x15, 0xA4, 0x92, 0x1E, 0x8E, 0x86, 0x1B, 0x1F, 0x3F, 0xFB, 0x8A, 0x00, 0x2F, 0xFF, 0x40, 0x15, + 0x00, 0x16, 0x1F, 0x3A, 0x15, 0x00, 0x00, 0x45, 0xED, 0x06, 0x00, 0x0C, 0xB3, 0x55, 0x13, 0x16, + 0x98, 0x1D, 0x09, 0x18, 0xA3, 0x04, 0x14, 0x42, 0x1F, 0x40, 0xD4, 0x99, 0x00, 0x18, 0xE5, 0xDF, + 0x1E, 0x2F, 0x04, 0xEB, 0x41, 0x73, 0x00, 0x04, 0xB1, 0x26, 0x09, 0x8A, 0xA2, 0x03, 0x9C, 0x29, + 0x28, 0xDC, 0x01, 0xE3, 0x06, 0x1F, 0xF0, 0xD3, 0x72, 0x00, 0x1F, 0x4E, 0xFD, 0x3B, 0x00, 0x2F, + 0x00, 0xA6, 0x39, 0x9A, 0x00, 0x2F, 0x0B, 0xF5, 0xF5, 0xB2, 0x00, 0x29, 0x56, 0xFF, 0x8A, 0x13, + 0x09, 0x83, 0x0B, 0x09, 0xB0, 0x08, 0x2F, 0x0E, 0xF8, 0xEB, 0x96, 0x00, 0x03, 0x44, 0x3B, 0x18, + 0xFD, 0x69, 0x70, 0x04, 0xFF, 0x3B, 0x18, 0xBB, 0x14, 0x00, 0x2F, 0x13, 0xFB, 0x11, 0x11, 0x00, + 0x03, 0x89, 0x05, 0x19, 0xF9, 0x22, 0x74, 0x1F, 0xBD, 0x09, 0x02, 0x00, 0x2F, 0x19, 0xFE, 0x61, + 0x74, 0x00, 0x03, 0x31, 0x16, 0x3E, 0xF4, 0x0A, 0x00, 0x98, 0x0B, 0x1E, 0xA5, 0xE2, 0xBA, 0x0B, + 0x1E, 0x74, 0x03, 0x59, 0x28, 0x19, 0xEE, 0xEF, 0x11, 0x1B, 0xCD, 0x1F, 0x28, 0x07, 0x4A, 0x0B, + 0x2F, 0xFF, 0x41, 0xFC, 0x9A, 0x00, 0x09, 0xDB, 0x01, 0x2F, 0x01, 0xD6, 0xDB, 0x01, 0x00, 0x1F, + 0x2D, 0xDB, 0x01, 0x01, 0x1F, 0x85, 0xDB, 0x01, 0x00, 0x2F, 0x01, 0xDD, 0xDB, 0x01, 0x00, 0x1F, + 0x35, 0xDB, 0x01, 0x01, 0x1F, 0x8D, 0xDB, 0x01, 0x00, 0x13, 0x02, 0xDB, 0x1E, 0x17, 0x81, 0x54, + 0x79, 0x3E, 0x04, 0x22, 0xFF, 0x01, 0x00, 0x2F, 0x44, 0x24, 0x15, 0x00, 0x40, 0x50, 0x00, 0x12, + 0x0D, 0x34, 0x03, 0xD4, 0x2C, 0x17, 0xF1, 0x88, 0x03, 0x18, 0xCD, 0x7E, 0x6B, 0x1F, 0xD0, 0x0D, + 0x00, 0x00, 0x12, 0x7A, 0xAC, 0x1E, 0x18, 0xF5, 0xC9, 0x09, 0x0F, 0x0D, 0x00, 0x55, 0x1F, 0xF6, + 0x0D, 0x00, 0x0C, 0x1F, 0x76, 0x0D, 0x00, 0x75, 0x1E, 0xF7, 0x0D, 0x00, 0x1F, 0x75, 0x0D, 0x00, + 0x7B, 0x03, 0xE7, 0x16, 0x1F, 0xF8, 0x0D, 0x00, 0x74, 0x02, 0x01, 0x00, 0x1F, 0xC8, 0x0D, 0x00, + 0x07, 0x04, 0xD0, 0xAA, 0x10, 0x06, 0x93, 0x0A, 0x1A, 0xFB, 0x87, 0x6D, 0x14, 0xB1, 0xBE, 0x88, + 0x0B, 0x00, 0x16, 0x0A, 0xAE, 0x78, 0x01, 0xA2, 0x40, 0x2E, 0xEA, 0x02, 0x98, 0x9A, 0x1E, 0x34, + 0x63, 0x9F, 0x2D, 0x7C, 0x00, 0x96, 0xA8, 0x19, 0xC5, 0x13, 0x00, 0x26, 0x09, 0xF7, 0x4F, 0x28, + 0x09, 0x40, 0x8A, 0x1E, 0x55, 0xA8, 0x92, 0x2D, 0x9D, 0x00, 0x99, 0x04, 0x1A, 0xE5, 0x56, 0x56, + 0x1E, 0xDD, 0x5B, 0x16, 0x1C, 0x95, 0xE9, 0x8A, 0x03, 0xDD, 0x0D, 0x2E, 0xBF, 0x00, 0xC6, 0xA9, + 0x1E, 0x0D, 0xEC, 0xA9, 0x1E, 0x4F, 0xDB, 0xBD, 0x1E, 0x98, 0x1E, 0xBE, 0x1A, 0xE0, 0x87, 0x00, + 0x1E, 0xE2, 0x70, 0x6E, 0x1B, 0x9A, 0x92, 0x18, 0x04, 0xC8, 0x10, 0x19, 0xB9, 0x13, 0x00, 0x01, + 0x74, 0x0B, 0x2A, 0xF8, 0x0A, 0x35, 0x81, 0x06, 0x44, 0x72, 0x09, 0x51, 0x6C, 0x1C, 0x92, 0x54, + 0xC4, 0x03, 0xCF, 0x40, 0x06, 0x87, 0x00, 0x1D, 0xE7, 0x68, 0xAB, 0x2D, 0x00, 0x9F, 0x98, 0x18, + 0x29, 0x00, 0x57, 0x2C, 0xBB, 0x01, 0x01, 0x00, 0x10, 0x12, 0x08, 0x0C, 0x1A, 0xF5, 0x7D, 0x6F, + 0x1E, 0xC6, 0x8B, 0x25, 0x1B, 0x7E, 0xDC, 0xBC, 0x04, 0xB2, 0x05, 0x19, 0xD4, 0x13, 0x00, 0x28, + 0x02, 0xEB, 0x62, 0xBD, 0x07, 0xE1, 0x74, 0x19, 0x65, 0x13, 0x00, 0x1E, 0x5C, 0x4C, 0x96, 0x01, + 0x07, 0x41, 0x1A, 0xF1, 0x43, 0x77, 0x1E, 0xCB, 0xE2, 0x0F, 0x1E, 0x83, 0x90, 0xA0, 0x1A, 0x3A, + 0xDE, 0x6B, 0x01, 0x7A, 0x08, 0x1B, 0xEF, 0xDA, 0x8E, 0x04, 0x3E, 0x17, 0x0A, 0x75, 0x6F, 0x17, + 0x61, 0x22, 0x37, 0x08, 0x03, 0x8F, 0x21, 0xED, 0x03, 0x40, 0xB8, 0x33, 0x34, 0x01, 0xF7, 0xB1, + 0xF1, 0x04, 0xE8, 0x05, 0x18, 0xE9, 0x8B, 0x9C, 0x19, 0xEC, 0x0D, 0x00, 0x02, 0xE1, 0x05, 0x02, + 0xCA, 0x1D, 0x18, 0xEC, 0x56, 0x2E, 0x0F, 0x0D, 0x00, 0x76, 0x1F, 0x83, 0x0D, 0x00, 0x88, 0x1F, + 0x82, 0x0D, 0x00, 0x7B, 0x1F, 0x81, 0x0D, 0x00, 0x75, 0x0E, 0x70, 0x02, 0x0F, 0x0D, 0x00, 0x02, + 0x47, 0x19, 0x16, 0x12, 0x01, 0xED, 0x0D, 0x21, 0x23, 0xFB, 0xAE, 0x02, 0x1F, 0xBE, 0x63, 0xCB, + 0x03, 0x09, 0x3F, 0x74, 0x3E, 0x0A, 0xEE, 0xFF, 0xD4, 0x8F, 0x05, 0x32, 0x58, 0x27, 0xFF, 0xF5, + 0xAF, 0x0A, 0x15, 0x01, 0x83, 0x20, 0x07, 0xB7, 0x1F, 0x08, 0x9D, 0x1C, 0x2B, 0xDA, 0x02, 0x00, + 0x9A, 0x1A, 0xA6, 0x6D, 0x91, 0x02, 0x3B, 0x67, 0x2A, 0xC8, 0x28, 0xB1, 0xBF, 0x13, 0x79, 0x9E, + 0x14, 0x18, 0xCD, 0x79, 0x15, 0x11, 0x03, 0x93, 0x11, 0x48, 0xFD, 0x18, 0x00, 0x72, 0x78, 0x78, + 0x14, 0x4F, 0x54, 0x67, 0x25, 0x1A, 0xFE, 0xF1, 0x93, 0x04, 0xFD, 0x10, 0x15, 0x5F, 0x92, 0x21, + 0x16, 0x63, 0xCA, 0x0A, 0x25, 0xF7, 0x0E, 0x95, 0x8E, 0x25, 0xCF, 0x01, 0x35, 0x15, 0x01, 0x4A, + 0x42, 0x24, 0x0F, 0xF8, 0x2B, 0x44, 0x27, 0x0B, 0xF0, 0xBA, 0xB8, 0x14, 0xAB, 0xA1, 0x10, 0x02, + 0xB0, 0x0B, 0x27, 0xEF, 0x07, 0x90, 0x2B, 0x48, 0xFB, 0x19, 0x01, 0xD0, 0x85, 0x1D, 0x12, 0x07, + 0x00, 0x6D, 0x31, 0x7E, 0x11, 0x84, 0x01, 0x00, 0x04, 0x58, 0x01, 0x11, 0x5B, 0x0E, 0x00, 0x50, + 0x6C, 0x13, 0x13, 0x06, 0x00, 0xB8, 0x7D, 0x1D, 0x10, 0x01, 0x00, 0x0F, 0x7F, 0xD0, 0x00, 0x1F, + 0xE4, 0x13, 0x00, 0x39, 0x60, 0x00, 0x00, 0x10, 0x0C, 0x0C, 0x02, 0x21, 0x2C, 0x22, 0x18, 0xEF, + 0xB8, 0x04, 0x17, 0x27, 0x9B, 0x2C, 0x01, 0x98, 0x06, 0x27, 0x07, 0xDC, 0xF7, 0xA1, 0x02, 0x57, + 0x01, 0x02, 0x8A, 0x06, 0x27, 0x01, 0xBA, 0xE9, 0xB8, 0x27, 0x2A, 0xFC, 0x2B, 0x49, 0x17, 0x90, + 0xB7, 0xB1, 0x27, 0x11, 0xEC, 0x2F, 0x15, 0x17, 0x67, 0x2A, 0x0D, 0x27, 0x03, 0xD0, 0x84, 0x93, + 0x00, 0x29, 0x0E, 0x27, 0xF6, 0x09, 0x39, 0xDB, 0x46, 0x01, 0x18, 0x15, 0x1F, 0x24, 0x02, 0xA5, + 0x19, 0x6A, 0xAF, 0xD4, 0xF2, 0xFA, 0xF2, 0xD1, 0xA6, 0x52, 0x7D, 0x06, 0x36, 0x0C, 0x8B, 0xF9, + 0x6D, 0x68, 0x03, 0xB9, 0x1F, 0x19, 0x15, 0x54, 0xCA, 0x11, 0xFB, 0x9A, 0x00, 0x1B, 0x01, 0x6E, + 0x82, 0x2F, 0xED, 0x11, 0xB3, 0x91, 0x01, 0x16, 0x87, 0x20, 0x8F, 0x54, 0x99, 0x25, 0x24, 0x9A, + 0xFF, 0x57, 0x7B, 0x03, 0x42, 0x21, 0x55, 0xDB, 0x03, 0x00, 0x00, 0x05, 0xAC, 0x92, 0x17, 0x47, + 0x07, 0x03, 0x14, 0xBF, 0x3E, 0x22, 0x17, 0x71, 0x99, 0x37, 0x14, 0xA3, 0x8D, 0x46, 0x17, 0x86, + 0x48, 0x01, 0x14, 0x9D, 0xFF, 0x20, 0x12, 0x2C, 0xDB, 0x98, 0x17, 0x20, 0xF3, 0x42, 0x09, 0xDB, + 0x9B, 0x2D, 0x04, 0xAE, 0x15, 0x00, 0x3B, 0x21, 0x84, 0xE5, 0xB7, 0x24, 0x4C, 0x01, 0x43, 0xB5, + 0xFE, 0x83, 0xA4, 0x19, 0x2F, 0x25, 0x5F, 0x01, 0x98, 0xA4, 0x22, 0x08, 0x89, 0xBB, 0x13, 0x26, + 0xF2, 0xDA, 0x15, 0x00, 0x13, 0x19, 0x9D, 0x03, 0x26, 0xBB, 0x1A, 0x7E, 0x00, 0x13, 0x10, 0xE7, + 0x23, 0x27, 0x89, 0x03, 0x93, 0x00, 0x16, 0x9F, 0xB9, 0x0D, 0x05, 0xA8, 0x00, 0x12, 0x24, 0x76, + 0x00, 0x28, 0xD2, 0x04, 0x15, 0x00, 0x16, 0x79, 0xE0, 0x92, 0x06, 0xD2, 0x00, 0x17, 0xB1, 0x38, + 0xD0, 0x05, 0x15, 0x00, 0x17, 0xD9, 0xCF, 0x54, 0x05, 0x15, 0x00, 0x17, 0xE9, 0x73, 0xC6, 0x14, + 0x9C, 0x85, 0x25, 0x16, 0xE2, 0xB2, 0x12, 0x24, 0x24, 0xE7, 0x99, 0x15, 0x03, 0xBB, 0x50, 0x5D, + 0xED, 0x4A, 0x13, 0x5A, 0xEA, 0x22, 0x25, 0x07, 0xE6, 0x16, 0x37, 0x96, 0x00, 0x0F, 0x58, 0x30, + 0x15, 0x7A, 0x92, 0x8E, 0x15, 0x54, 0x14, 0x00, 0x35, 0xB5, 0x06, 0xFB, 0x87, 0x50, 0x13, 0x66, + 0x7D, 0x15, 0x23, 0xC4, 0x0E, 0x3D, 0x1E, 0x01, 0xF5, 0xB4, 0x84, 0x2B, 0x9E, 0xDF, 0xFD, 0xF1, + 0xC3, 0x66, 0x05, 0xB1, 0x1A, 0x52, 0xF4, 0x01, 0x00, 0x19, 0x16, 0x8C, 0x97, 0x13, 0x28, 0xE4, + 0x07, 0x1F, 0x18, 0x9B, 0x13, 0x02, 0x0F, 0x16, 0x00, 0xE1, 0x89, 0x0C, 0x6F, 0xBC, 0xEE, 0xF8, + 0xD6, 0x8F, 0x1B, 0x16, 0x00, 0x13, 0x51, 0x7A, 0x88, 0x27, 0xF0, 0x41, 0x16, 0x00, 0x06, 0x56, + 0xCE, 0x29, 0xF5, 0x27, 0xE1, 0xA4, 0x05, 0x83, 0x3B, 0x0F, 0x16, 0x00, 0x02, 0x25, 0xFF, 0x22, + 0x16, 0x00, 0x55, 0xF7, 0x81, 0x2A, 0x22, 0x8B, 0xF2, 0x33, 0x17, 0x28, 0x6D, 0x1D, 0x24, 0x01, + 0xC2, 0xF1, 0x24, 0x09, 0xB0, 0x00, 0x14, 0x6E, 0xAC, 0x98, 0x09, 0x16, 0x00, 0x03, 0x62, 0x17, + 0x29, 0xFB, 0x02, 0x16, 0x00, 0x04, 0x5B, 0x10, 0x19, 0x0A, 0x16, 0x00, 0x04, 0xEE, 0x18, 0x19, + 0x10, 0x16, 0x00, 0x1F, 0x30, 0x16, 0x00, 0xB2, 0x04, 0x53, 0x1A, 0x19, 0x0E, 0x16, 0x00, 0x03, + 0xEC, 0x21, 0x29, 0xFE, 0x04, 0x16, 0x00, 0x03, 0xFA, 0x04, 0x1A, 0xE9, 0x4A, 0x01, 0x14, 0x6D, + 0x79, 0x96, 0x09, 0x16, 0x00, 0x14, 0xB5, 0x86, 0x24, 0x04, 0x16, 0x00, 0x55, 0xC4, 0x63, 0x21, + 0x15, 0x6E, 0x76, 0xAD, 0x0F, 0xE4, 0x01, 0x00, 0x2F, 0xF2, 0x09, 0x16, 0x00, 0x01, 0x16, 0x8C, + 0x10, 0x02, 0x06, 0x03, 0x6F, 0x26, 0xDB, 0x10, 0x16, 0x00, 0x14, 0x27, 0xE3, 0x1B, 0x29, 0xDD, + 0x20, 0x94, 0x02, 0x73, 0x2C, 0x95, 0xD6, 0xFB, 0xF4, 0xC1, 0x76, 0xBD, 0x0D, 0x26, 0x17, 0x14, + 0x50, 0x06, 0xB4, 0x01, 0x39, 0x92, 0xC1, 0xE8, 0xF9, 0xF9, 0xE7, 0xC4, 0x94, 0x44, 0xAA, 0x12, + 0x26, 0x2E, 0xCB, 0x72, 0x00, 0x12, 0xCE, 0x8E, 0x1B, 0x19, 0x3E, 0x28, 0x7D, 0x10, 0xF8, 0x35, + 0x23, 0x1B, 0x11, 0x36, 0x96, 0x27, 0xE2, 0x0A, 0xF5, 0x4F, 0x06, 0x4E, 0x73, 0x13, 0x04, 0xCC, + 0x1D, 0x44, 0x93, 0x24, 0x22, 0x8D, 0x38, 0x41, 0x16, 0x3A, 0x6C, 0x1C, 0x12, 0x01, 0xC5, 0x31, + 0x37, 0xFD, 0x06, 0x79, 0xE4, 0x18, 0x03, 0x16, 0x1F, 0x27, 0x24, 0x9B, 0x94, 0x4A, 0x03, 0xFB, + 0x1A, 0x27, 0x3E, 0xB9, 0xD6, 0x1B, 0x03, 0x63, 0x13, 0x27, 0x44, 0xC9, 0xE6, 0x05, 0x03, 0x9D, + 0x1D, 0x27, 0x44, 0xCC, 0x14, 0x00, 0x21, 0x5C, 0xBC, 0x01, 0x00, 0x2F, 0x32, 0xCC, 0x62, 0x06, + 0x00, 0x0F, 0x14, 0x00, 0x5D, 0x12, 0x1C, 0x0C, 0x72, 0x2F, 0x0F, 0xCC, 0xB4, 0x00, 0x00, 0x1F, + 0xC8, 0x14, 0x00, 0x00, 0x08, 0xF0, 0x00, 0x04, 0x14, 0x00, 0x17, 0x9B, 0x08, 0x14, 0x03, 0x02, + 0xA5, 0x27, 0x3D, 0x79, 0x23, 0x1D, 0x03, 0x5F, 0x07, 0x13, 0x20, 0xCC, 0x62, 0x10, 0xDA, 0x68, + 0x01, 0x13, 0xD3, 0x11, 0x83, 0x04, 0x90, 0x01, 0x45, 0x90, 0x1D, 0x1A, 0x82, 0x70, 0x19, 0x0D, + 0x9F, 0x84, 0x16, 0x60, 0x5B, 0x84, 0x04, 0x13, 0x00, 0x10, 0xD3, 0xA9, 0x06, 0x29, 0x40, 0xF6, + 0x47, 0x75, 0x02, 0x9B, 0xB9, 0x26, 0x30, 0xCE, 0x13, 0x00, 0x14, 0xC0, 0xD3, 0x0F, 0xB1, 0x01, + 0x3D, 0x96, 0xC4, 0xEC, 0xFC, 0xFB, 0xE9, 0xC4, 0x91, 0x3D, 0xF9, 0x0F, 0x26, 0x19, 0x15, 0xAC, + 0xD3, 0x05, 0x01, 0x00, 0x02, 0xE4, 0xDD, 0x1A, 0xFC, 0x41, 0x10, 0x03, 0xC1, 0x16, 0x1F, 0x50, + 0x15, 0x00, 0xC2, 0x97, 0x01, 0x4D, 0xAE, 0xE4, 0xF9, 0xE8, 0xB3, 0x53, 0x03, 0x15, 0x00, 0x14, + 0x03, 0x91, 0x82, 0x26, 0xC7, 0x24, 0x15, 0x00, 0x15, 0x95, 0x53, 0x01, 0x24, 0xEE, 0xFA, 0x15, + 0x00, 0x1E, 0x38, 0x12, 0x04, 0x3F, 0x50, 0x00, 0xA6, 0x15, 0x00, 0x00, 0x13, 0x09, 0x04, 0x20, + 0x6A, 0xCE, 0x37, 0x1D, 0x5D, 0xD8, 0xFF, 0x96, 0x1D, 0x01, 0x2C, 0x0C, 0x04, 0x21, 0x00, 0x28, + 0x50, 0x75, 0x1D, 0x53, 0x04, 0xA8, 0x00, 0x03, 0x7C, 0x00, 0x19, 0x9E, 0x15, 0x00, 0x03, 0xE6, + 0x82, 0x19, 0x8A, 0x15, 0x00, 0x18, 0xBC, 0xEC, 0x35, 0x04, 0x15, 0x00, 0x1F, 0xC0, 0x15, 0x00, + 0xA9, 0x18, 0xBF, 0xB0, 0x22, 0x04, 0x15, 0x00, 0x18, 0xB7, 0xB7, 0x17, 0x04, 0x15, 0x00, 0x18, + 0xA1, 0x34, 0x3F, 0x04, 0x15, 0x00, 0x18, 0x88, 0x6D, 0x28, 0x04, 0x15, 0x00, 0x04, 0x03, 0x19, + 0x18, 0x21, 0x15, 0x00, 0x04, 0x27, 0x17, 0x53, 0xCB, 0x37, 0x13, 0x43, 0x97, 0xC0, 0x0A, 0x3F, + 0x50, 0x01, 0xD3, 0xE3, 0x01, 0x01, 0x1F, 0x68, 0x15, 0x00, 0x01, 0x25, 0x05, 0xC9, 0x0D, 0x00, + 0x25, 0xFB, 0xFD, 0x37, 0x02, 0x14, 0x12, 0xE9, 0x78, 0x27, 0xDE, 0x3E, 0x76, 0x02, 0x96, 0x03, + 0x52, 0xB2, 0xE5, 0xFD, 0xF1, 0xC0, 0x68, 0x0B, 0x76, 0x02, 0x17, 0x18, 0x04, 0x06, 0xB4, 0x00, + 0x31, 0x8C, 0xBE, 0xE6, 0xF8, 0xF8, 0xE8, 0xC4, 0x91, 0x3F, 0xA5, 0x13, 0x26, 0x24, 0xC0, 0x6C, + 0x00, 0x2A, 0xBE, 0x1D, 0x72, 0xD9, 0x01, 0x01, 0x00, 0x10, 0xE4, 0x15, 0x00, 0x1B, 0x0C, 0x8F, + 0x40, 0x26, 0xBB, 0x01, 0x03, 0xBC, 0x07, 0x67, 0x5E, 0x13, 0x02, 0xB5, 0x0A, 0x44, 0x8E, 0x22, + 0x23, 0x89, 0x68, 0x20, 0x03, 0xA3, 0x23, 0x10, 0xD3, 0x9C, 0x04, 0x02, 0xF8, 0x04, 0x37, 0xF0, + 0x03, 0x75, 0xAD, 0x2B, 0x03, 0xE0, 0x3A, 0x27, 0x28, 0x98, 0x91, 0x1A, 0x03, 0xAF, 0x8D, 0x27, + 0x4B, 0xB7, 0xA2, 0xC5, 0x03, 0x84, 0x55, 0x27, 0x60, 0xC8, 0x23, 0x1E, 0x03, 0x0D, 0x20, 0x2E, + 0x75, 0xCC, 0x14, 0x00, 0x27, 0x7D, 0xCC, 0x2A, 0xAC, 0x1B, 0xFE, 0xF4, 0x74, 0x07, 0x60, 0x01, + 0x0F, 0x14, 0x00, 0x1D, 0x17, 0x67, 0x44, 0x92, 0x18, 0x02, 0x78, 0x00, 0x0B, 0x04, 0x06, 0x0F, + 0x14, 0x00, 0x0E, 0x08, 0xC8, 0x00, 0x21, 0x41, 0xAC, 0x01, 0x00, 0x13, 0x54, 0xC0, 0x24, 0x17, + 0x66, 0xC8, 0x00, 0x27, 0x7B, 0x9A, 0x7C, 0x41, 0x03, 0x25, 0x1B, 0x27, 0x72, 0x77, 0xDD, 0x26, + 0x03, 0x6F, 0x0D, 0x13, 0x52, 0xBD, 0x08, 0x26, 0xD1, 0x02, 0xFA, 0x1A, 0x23, 0x2B, 0x03, 0x8D, + 0x0A, 0x33, 0x8B, 0x1B, 0x1A, 0xFA, 0x05, 0x4F, 0xDF, 0x01, 0x00, 0x7E, 0xF0, 0xA9, 0x00, 0x1B, + 0x10, 0x17, 0x46, 0x10, 0xE2, 0xFC, 0x2D, 0x28, 0x3D, 0xF4, 0x13, 0x00, 0x12, 0xF2, 0x98, 0x25, + 0x2F, 0x2C, 0xC8, 0x04, 0x06, 0x01, 0xA1, 0x36, 0x91, 0xC0, 0xE8, 0xFB, 0xFC, 0xEA, 0xC5, 0x92, + 0x3B, 0x58, 0x02, 0x2C, 0x10, 0x10, 0x7B, 0xD3, 0x27, 0x02, 0x0A, 0x42, 0x15, 0x40, 0x3E, 0xA1, + 0xDA, 0xF9, 0x9F, 0x0D, 0x02, 0x5B, 0x5D, 0x14, 0x08, 0xBF, 0xB7, 0x27, 0xFF, 0xC8, 0x4B, 0x89, + 0x05, 0x10, 0x00, 0x2A, 0x14, 0xFA, 0x10, 0x00, 0x2A, 0x5A, 0xFF, 0x10, 0x00, 0x03, 0xDC, 0x3C, + 0x57, 0xFC, 0x5D, 0x0D, 0x14, 0x27, 0x5A, 0x27, 0x1B, 0xB2, 0x81, 0xA1, 0x1B, 0x83, 0x97, 0x32, + 0x1F, 0x7C, 0x10, 0x00, 0x01, 0x15, 0x0C, 0x53, 0xE1, 0x01, 0x38, 0x02, 0x1B, 0xC5, 0x22, 0xE1, + 0x1F, 0xC8, 0x10, 0x00, 0x1D, 0x44, 0x01, 0x14, 0x14, 0x14, 0x61, 0xB2, 0x4E, 0x14, 0x14, 0x14, + 0x10, 0x80, 0x00, 0x0F, 0x10, 0x00, 0xFF, 0x6C, 0x31, 0x19, 0x19, 0x29, 0xC4, 0x16, 0x0F, 0x01, + 0x00, 0x02, 0x15, 0x28, 0xA0, 0x1E, 0xA1, 0x26, 0x86, 0xBD, 0xE7, 0xF9, 0xF5, 0xD8, 0xA7, 0x4E, + 0x02, 0x0E, 0x98, 0x13, 0xFC, 0x89, 0x27, 0x16, 0x11, 0x60, 0x8A, 0x54, 0xC2, 0x17, 0x00, 0x12, + 0xC5, 0x13, 0x24, 0x18, 0x1D, 0x6E, 0xC1, 0x34, 0xD1, 0x19, 0xD0, 0x88, 0x85, 0x29, 0x02, 0xCA, + 0x1E, 0x02, 0x02, 0x5B, 0x11, 0x29, 0xEE, 0x1A, 0xD3, 0x02, 0x05, 0xD8, 0x3E, 0x25, 0x55, 0x06, + 0xA5, 0x30, 0x43, 0xFC, 0x6F, 0x20, 0x23, 0xC3, 0x09, 0x28, 0xB0, 0x30, 0x4A, 0xA1, 0x16, 0x93, + 0xE0, 0x02, 0x02, 0x23, 0x33, 0x27, 0x00, 0x5E, 0x96, 0x08, 0x18, 0x77, 0x94, 0x32, 0x17, 0x80, + 0xE7, 0x33, 0x13, 0x5A, 0x4A, 0x34, 0x08, 0x71, 0x31, 0x17, 0x15, 0x27, 0x26, 0x18, 0x17, 0x5D, + 0x47, 0x17, 0x0B, 0xC5, 0x14, 0x18, 0x33, 0x1E, 0x44, 0x17, 0x09, 0x32, 0x0D, 0x18, 0x42, 0xD4, + 0x2A, 0x17, 0x0E, 0x05, 0x21, 0x18, 0x3E, 0xD2, 0x03, 0x17, 0x1E, 0xC1, 0x2A, 0x18, 0x29, 0xBE, + 0x80, 0x17, 0x44, 0xEC, 0x33, 0x18, 0x0A, 0xA7, 0x28, 0x16, 0x91, 0xB5, 0x3E, 0x19, 0xDC, 0xB0, + 0x26, 0x5A, 0xFA, 0x60, 0x09, 0x0E, 0x6F, 0x9D, 0xD3, 0x0D, 0xFA, 0xC2, 0x1B, 0x33, 0x94, 0x26, + 0x2C, 0xFF, 0xFF, 0xAC, 0xA7, 0x19, 0x02, 0x21, 0x8C, 0x16, 0xD3, 0xCC, 0x15, 0x18, 0x3A, 0x3F, + 0x4B, 0x16, 0xAD, 0x74, 0x24, 0x10, 0x3B, 0x8A, 0x27, 0x96, 0x97, 0xBD, 0xEB, 0xFF, 0xFF, 0xFA, + 0xD4, 0x99, 0x3A, 0xE8, 0x1A, 0x23, 0x1D, 0xEE, 0x0B, 0x08, 0x2A, 0x0A, 0x10, 0xB2, 0x31, 0x1F, + 0x8D, 0x36, 0x8A, 0x05, 0x02, 0xA2, 0x05, 0x6F, 0xBC, 0x7B, 0x58, 0x3B, 0x21, 0x08, 0x19, 0x00, + 0x00, 0x03, 0x22, 0x02, 0x44, 0xD4, 0xB4, 0x81, 0x3F, 0xBD, 0x07, 0x0D, 0x6F, 0x07, 0x13, 0xDD, + 0x0D, 0x26, 0x14, 0x06, 0x07, 0x49, 0x0D, 0x3A, 0xA2, 0x4F, 0x01, 0x55, 0xE3, 0xFF, 0xA1, 0xDE, + 0x02, 0x11, 0x06, 0xF9, 0x09, 0x36, 0xAE, 0xBE, 0xD5, 0x27, 0x99, 0x01, 0xA2, 0x21, 0x25, 0x0B, + 0xC0, 0xCF, 0x27, 0x45, 0x05, 0x1D, 0x4F, 0xA2, 0xAB, 0xAE, 0x11, 0x01, 0x1D, 0x1A, 0x2A, 0xEC, + 0x0A, 0x29, 0x34, 0x14, 0x2B, 0x32, 0x02, 0x1B, 0xAE, 0xAE, 0x2A, 0x14, 0x36, 0x9A, 0x0C, 0x2A, + 0xCB, 0x01, 0xC2, 0x22, 0x15, 0x26, 0x4F, 0x26, 0x94, 0xBD, 0x61, 0x36, 0x22, 0x14, 0x13, 0x21, + 0x49, 0x9B, 0x02, 0xE1, 0x05, 0x06, 0x67, 0x0A, 0xC5, 0x3F, 0x0A, 0xB9, 0x2E, 0x0A, 0xC8, 0x00, + 0x1E, 0x11, 0xB9, 0xA4, 0x03, 0xBA, 0x09, 0x2C, 0x16, 0x9D, 0x79, 0xBE, 0x14, 0x70, 0x8A, 0x00, + 0x61, 0x11, 0x5B, 0x9A, 0xC5, 0xE1, 0xF3, 0x43, 0x5D, 0x46, 0xE2, 0xC8, 0x98, 0x58, 0x5F, 0x1C, + 0x04, 0xB8, 0x0C, 0x13, 0x18, 0xE8, 0x12, 0x1D, 0x20, 0x62, 0xC8, 0x0C, 0x1A, 0x23, 0x0F, 0x15, + 0x00, 0xCA, 0x87, 0x0B, 0x66, 0xAD, 0xE1, 0xF9, 0xEA, 0xAD, 0x2C, 0x15, 0x00, 0x23, 0x04, 0x76, + 0x19, 0x0A, 0x25, 0xF7, 0x39, 0x15, 0x00, 0x16, 0x42, 0xD4, 0x04, 0x3A, 0xD8, 0x04, 0x18, 0x91, + 0x14, 0x01, 0x01, 0x00, 0x2F, 0x48, 0x18, 0xBE, 0x01, 0x00, 0x15, 0x8C, 0x15, 0x00, 0x43, 0xCC, + 0x4D, 0x1A, 0x52, 0x8B, 0x2B, 0x14, 0xB1, 0x15, 0x00, 0x26, 0x93, 0x05, 0x47, 0x2D, 0x19, 0xBE, + 0xA8, 0x00, 0x03, 0x77, 0x10, 0x19, 0xC0, 0x15, 0x00, 0x1F, 0x78, 0x15, 0x00, 0xFF, 0xC3, 0x32, + 0x00, 0x0D, 0x08, 0x7C, 0xBE, 0x03, 0x8F, 0x03, 0x04, 0x54, 0xAF, 0x1F, 0x48, 0x08, 0x00, 0x0D, + 0x04, 0x9C, 0x0B, 0x0F, 0xD7, 0x07, 0x05, 0x04, 0x1B, 0x28, 0x03, 0x30, 0x00, 0x1F, 0x40, 0x08, + 0x00, 0xD5, 0x35, 0x0D, 0x0C, 0x32, 0x0B, 0xCF, 0x12, 0x86, 0x04, 0x01, 0x17, 0xC1, 0x94, 0xD3, + 0x1F, 0xC4, 0x0C, 0x00, 0x21, 0x03, 0x7C, 0xA3, 0x2F, 0x04, 0x00, 0x01, 0x00, 0x20, 0x12, 0x7E, + 0x84, 0x00, 0x17, 0xB6, 0x9E, 0x08, 0x1F, 0xB8, 0x0C, 0x00, 0xFF, 0x42, 0x17, 0x81, 0x0C, 0x00, + 0x16, 0x92, 0x56, 0x07, 0x13, 0x03, 0xFD, 0x1A, 0x44, 0xA0, 0x25, 0x16, 0x2B, 0x75, 0x3B, 0x17, + 0x75, 0x4C, 0x1B, 0x16, 0x26, 0x0C, 0x00, 0x14, 0xB1, 0x77, 0x2B, 0x45, 0xFF, 0xFF, 0xE9, 0x1E, + 0x0C, 0x00, 0xD1, 0xCE, 0x28, 0x00, 0x00, 0x79, 0xCA, 0xEB, 0xFD, 0xFB, 0xDE, 0xAF, 0x58, 0x04, + 0xA4, 0xEC, 0x0A, 0x28, 0x1A, 0x2F, 0x0C, 0x00, 0xC5, 0x2D, 0x03, 0x0F, 0x18, 0x00, 0xFC, 0x13, + 0x97, 0x2F, 0x01, 0x1A, 0x41, 0x18, 0x00, 0x24, 0x35, 0xFE, 0x80, 0xAA, 0x09, 0x18, 0x00, 0x04, + 0xCE, 0x8B, 0x2A, 0xF6, 0x1E, 0x18, 0x00, 0x04, 0x9A, 0x3C, 0x1A, 0x7B, 0x60, 0x00, 0x13, 0x15, + 0xB1, 0x07, 0x2A, 0xDD, 0x08, 0x18, 0x00, 0x17, 0x9E, 0x06, 0x2B, 0x07, 0x90, 0x00, 0x04, 0xFE, + 0x67, 0x1A, 0xB4, 0xA8, 0x00, 0x13, 0x04, 0x62, 0x1E, 0x2A, 0xF9, 0x24, 0x18, 0x00, 0x19, 0x6F, + 0x6E, 0x0A, 0x05, 0xD8, 0x00, 0x13, 0x19, 0x1E, 0x32, 0x2A, 0xE3, 0x0B, 0x18, 0x00, 0x29, 0xA5, + 0xFF, 0xB9, 0x90, 0x04, 0x08, 0x01, 0x04, 0xB8, 0x0B, 0x2A, 0xBE, 0x01, 0x18, 0x00, 0x2A, 0xDE, + 0xFF, 0xE1, 0xAD, 0x1E, 0x28, 0xA4, 0xAE, 0x0F, 0x18, 0x00, 0x02, 0x1F, 0xC1, 0x18, 0x00, 0x04, + 0x2B, 0xFF, 0x2A, 0x18, 0x00, 0x29, 0xEC, 0x8B, 0xC7, 0x40, 0x05, 0x18, 0x00, 0x37, 0x51, 0x19, + 0xFD, 0xE0, 0x6D, 0x26, 0x00, 0x28, 0x15, 0xAB, 0x18, 0xB8, 0xEB, 0x30, 0x16, 0x28, 0xDC, 0xB5, + 0x18, 0x5B, 0x49, 0xAA, 0x07, 0xE0, 0x01, 0x04, 0x0C, 0xA1, 0x1C, 0x2D, 0xF8, 0x01, 0x17, 0xA1, + 0xCE, 0x3C, 0x08, 0x18, 0x00, 0x03, 0xBA, 0x15, 0x2B, 0xF1, 0x0B, 0x18, 0x00, 0x26, 0x03, 0xE5, + 0x32, 0x2D, 0x09, 0x40, 0x02, 0x07, 0xA6, 0x65, 0x09, 0x18, 0x00, 0x16, 0x2D, 0x24, 0x37, 0x0A, + 0x70, 0x02, 0x15, 0xD0, 0xC7, 0x1F, 0x0A, 0x18, 0x00, 0x03, 0x67, 0x8A, 0x2B, 0xF3, 0x0D, 0x18, + 0x00, 0x24, 0x19, 0xFD, 0x93, 0x12, 0x0B, 0xB8, 0x02, 0x14, 0xB9, 0x50, 0x16, 0x0B, 0x18, 0x00, + 0x04, 0x43, 0x3A, 0x57, 0x34, 0x0D, 0x08, 0x2B, 0x03, 0xE8, 0xA8, 0x13, 0x7B, 0x38, 0x04, 0x1F, + 0x7C, 0x08, 0x00, 0xFF, 0x36, 0x22, 0x26, 0x22, 0xD8, 0x15, 0x13, 0x3C, 0x19, 0xB7, 0x92, 0x00, + 0x00, 0x06, 0x5A, 0xA8, 0xDB, 0xF7, 0xF3, 0xC7, 0x61, 0x8F, 0x86, 0x09, 0x66, 0xAB, 0xE2, 0xF8, + 0xED, 0xB5, 0x44, 0xDF, 0x4D, 0x34, 0xA8, 0x00, 0x50, 0x51, 0x21, 0x66, 0xAB, 0x02, 0x00, 0x01, + 0x63, 0xE7, 0xFF, 0x13, 0x03, 0x22, 0x00, 0x17, 0xAB, 0x62, 0xC3, 0x38, 0x68, 0x07, 0x9D, 0x80, + 0x6C, 0x03, 0x22, 0x00, 0x17, 0xFC, 0x50, 0x03, 0x18, 0xE3, 0x40, 0x45, 0x15, 0xCB, 0x45, 0x4E, + 0x0F, 0x01, 0x00, 0x06, 0x15, 0x1C, 0x22, 0x00, 0x44, 0xA2, 0x3D, 0x19, 0x56, 0x6E, 0x38, 0x53, + 0xF7, 0x8A, 0x33, 0x1B, 0x6C, 0x65, 0x02, 0x13, 0x49, 0x22, 0x00, 0x27, 0xEE, 0x44, 0x24, 0xF1, + 0x27, 0xDE, 0x2C, 0xD1, 0x57, 0x28, 0x65, 0x3C, 0x80, 0xAF, 0x18, 0x57, 0x26, 0x36, 0x03, 0x1C, + 0x0C, 0x19, 0x6C, 0x22, 0x00, 0x18, 0x4D, 0xE3, 0x03, 0x1F, 0x75, 0x22, 0x00, 0x01, 0x18, 0x4C, + 0x22, 0x00, 0x1F, 0x74, 0x22, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0xD8, 0x10, 0x09, 0x28, 0x04, 0xC6, + 0xFC, 0x04, 0x00, 0x00, 0x18, 0x78, 0xB9, 0xEA, 0xF9, 0xE0, 0x96, 0x18, 0xFA, 0x51, 0x33, 0x04, + 0x10, 0x96, 0x32, 0x11, 0x25, 0xDF, 0x18, 0x15, 0x00, 0x16, 0x4C, 0xF9, 0x1F, 0x1F, 0x9E, 0xDF, + 0x03, 0x01, 0x2F, 0xF9, 0x10, 0xF4, 0x03, 0x01, 0x15, 0x4D, 0x15, 0x00, 0x34, 0xB0, 0x3B, 0x1C, + 0xE0, 0x42, 0x14, 0x72, 0x15, 0x00, 0x10, 0x66, 0x07, 0x1A, 0x03, 0xC7, 0x24, 0x28, 0x83, 0x3C, + 0xE9, 0x79, 0x03, 0x56, 0x52, 0x19, 0x84, 0x15, 0x00, 0x1F, 0xBC, 0x15, 0x00, 0xFF, 0xC3, 0x0A, + 0x94, 0x1C, 0x95, 0x2F, 0x8A, 0xBE, 0xE5, 0xF8, 0xF8, 0xE5, 0xBD, 0x8A, 0x00, 0xDA, 0x17, 0x1D, + 0xC1, 0xE7, 0x12, 0xB8, 0x94, 0x1C, 0x19, 0x31, 0x4C, 0xA7, 0x10, 0xEF, 0xDC, 0x15, 0x1B, 0x0E, + 0xDD, 0x14, 0x25, 0xE6, 0x10, 0x3D, 0x22, 0x06, 0x8E, 0x02, 0x33, 0x8A, 0x00, 0x07, 0x8F, 0x0A, + 0x33, 0x94, 0x25, 0x26, 0x00, 0x59, 0x23, 0xF7, 0x0B, 0x2D, 0x10, 0x43, 0xD7, 0x02, 0x00, 0x00, + 0xB3, 0x2A, 0x37, 0xFF, 0x52, 0x84, 0x54, 0x17, 0x03, 0x57, 0x09, 0x27, 0x8F, 0xA7, 0xCF, 0x2B, + 0x03, 0x89, 0x3F, 0x27, 0xB2, 0xC3, 0xB5, 0x3D, 0x03, 0x80, 0x3D, 0x27, 0xCE, 0xCB, 0x06, 0x3F, + 0x03, 0x04, 0x1E, 0x27, 0xD7, 0xCC, 0x14, 0x00, 0x03, 0x9F, 0x6B, 0x1F, 0xD8, 0x14, 0x00, 0x8D, + 0x0F, 0xC8, 0x00, 0x01, 0x17, 0xC3, 0xAD, 0x37, 0x03, 0xF0, 0x00, 0x27, 0xCF, 0xA8, 0x0C, 0x73, + 0x03, 0xC4, 0x17, 0x27, 0xB3, 0x86, 0xA5, 0xBD, 0x03, 0x40, 0x01, 0x35, 0x90, 0x4B, 0xFF, 0x5C, + 0x2C, 0x13, 0x01, 0x3C, 0x22, 0x23, 0x55, 0x08, 0x15, 0x0B, 0x33, 0x92, 0x1E, 0x1C, 0x4B, 0x10, + 0x2E, 0xF8, 0x0D, 0xB1, 0xC7, 0x1E, 0x90, 0x94, 0x1C, 0x10, 0xEA, 0x69, 0x48, 0x19, 0x38, 0xE0, + 0xFD, 0x12, 0xF2, 0x31, 0xA6, 0x17, 0x22, 0xB1, 0xC4, 0x14, 0xBF, 0x9B, 0x42, 0xB3, 0x01, 0x34, + 0x8F, 0xC1, 0xE9, 0xFC, 0xFB, 0xE8, 0xC1, 0x8E, 0x34, 0x98, 0x22, 0x39, 0x29, 0x02, 0xF6, 0x08, + 0x05, 0x87, 0x19, 0x7F, 0xC4, 0xF1, 0xF8, 0xD1, 0x87, 0x15, 0x02, 0x57, 0x23, 0x08, 0x7A, 0x61, + 0x2B, 0x26, 0xE9, 0x34, 0x15, 0x00, 0x06, 0x22, 0x1F, 0x2F, 0xEE, 0x1B, 0x08, 0x05, 0x01, 0x1F, + 0x9B, 0x15, 0x00, 0x01, 0x24, 0xFA, 0x13, 0x15, 0x00, 0x44, 0xF4, 0x7A, 0x26, 0x26, 0x4C, 0x09, + 0x25, 0x5C, 0x3C, 0x0B, 0xF8, 0x33, 0x00, 0x00, 0x03, 0xA4, 0x2E, 0x19, 0x9D, 0x25, 0x03, 0x03, + 0xB0, 0x0F, 0x19, 0xCC, 0x15, 0x00, 0x03, 0xC4, 0x29, 0x19, 0xE9, 0x15, 0x00, 0x03, 0x6F, 0x7A, + 0x19, 0xF6, 0x15, 0x00, 0x03, 0x13, 0x4C, 0x19, 0xFC, 0x15, 0x00, 0x1F, 0x3C, 0x15, 0x00, 0xA9, + 0x03, 0x4B, 0x1A, 0x19, 0xFA, 0x15, 0x00, 0x03, 0x2A, 0x0D, 0x19, 0xED, 0x15, 0x00, 0x03, 0x5C, + 0x1A, 0x1F, 0xD5, 0x50, 0x01, 0x01, 0x18, 0xB8, 0x15, 0x00, 0x04, 0xD0, 0x7D, 0x14, 0x87, 0x15, + 0x00, 0x44, 0xBD, 0x5F, 0x1E, 0x18, 0x3C, 0x04, 0x1F, 0x40, 0xCE, 0x01, 0x00, 0x2F, 0xE5, 0x03, + 0x15, 0x00, 0x00, 0x15, 0x78, 0xF8, 0x01, 0x06, 0xBE, 0xAB, 0x25, 0xCF, 0x08, 0x15, 0x00, 0x24, + 0x09, 0x7F, 0xAC, 0x7F, 0x17, 0x17, 0x69, 0x07, 0xA8, 0x00, 0x22, 0x90, 0xD5, 0xFC, 0xF2, 0xBC, + 0x6E, 0x09, 0x00, 0x15, 0x00, 0x07, 0x01, 0xF9, 0x0F, 0x15, 0x00, 0xAA, 0x07, 0x68, 0x03, 0x00, + 0x01, 0x00, 0xA2, 0x45, 0xAA, 0xE1, 0xFA, 0xEB, 0xBC, 0x68, 0x0C, 0x00, 0xD9, 0x74, 0x03, 0x44, + 0x63, 0x00, 0x00, 0x05, 0xDC, 0x4C, 0x35, 0xE3, 0x4D, 0xDC, 0x02, 0x21, 0x07, 0xDA, 0xCF, 0x14, + 0xFC, 0x15, 0x00, 0x2F, 0x31, 0xFE, 0xAC, 0xA5, 0x00, 0x2E, 0xA8, 0xFF, 0x15, 0x00, 0x22, 0x09, + 0xF6, 0x09, 0x00, 0x44, 0xD0, 0x3A, 0x1B, 0x58, 0x56, 0x23, 0x13, 0x64, 0xDF, 0x15, 0x10, 0xFE, + 0xB3, 0x10, 0x13, 0x07, 0xF7, 0x0C, 0x28, 0x64, 0x73, 0xD8, 0x63, 0x04, 0x7E, 0x00, 0x18, 0x92, + 0x04, 0x25, 0x04, 0x15, 0x00, 0x18, 0xA8, 0x04, 0x25, 0x04, 0x15, 0x00, 0x18, 0xB2, 0x47, 0x24, + 0x04, 0x15, 0x00, 0x1F, 0xB8, 0x15, 0x00, 0xA9, 0x18, 0xB7, 0x04, 0x25, 0x04, 0x15, 0x00, 0x18, + 0xAF, 0x56, 0x0D, 0x04, 0x15, 0x00, 0x18, 0x99, 0xE7, 0x42, 0x04, 0x15, 0x00, 0x18, 0x81, 0xF8, + 0x10, 0x04, 0x15, 0x00, 0x18, 0x57, 0xF9, 0x5D, 0x04, 0x15, 0x00, 0x14, 0x1E, 0x1F, 0x03, 0x43, + 0x3B, 0x12, 0x41, 0x93, 0x6A, 0x0A, 0x3F, 0x64, 0x01, 0xCD, 0xCE, 0x01, 0x00, 0x2F, 0x00, 0x63, + 0x15, 0x00, 0x01, 0x16, 0x04, 0xE9, 0x68, 0x25, 0xE9, 0xEF, 0x37, 0x02, 0x14, 0x11, 0x5E, 0x5F, + 0x26, 0xC5, 0x1F, 0x4C, 0x02, 0xCF, 0x00, 0x03, 0x51, 0xB1, 0xE5, 0xFD, 0xEF, 0xB9, 0x56, 0x03, + 0x00, 0xDC, 0x4E, 0x42, 0x01, 0x0F, 0x15, 0x00, 0xB5, 0x22, 0x12, 0x10, 0x44, 0x09, 0x16, 0x20, + 0xB0, 0x1C, 0x65, 0x14, 0x89, 0xDB, 0xFA, 0xA6, 0x20, 0x4E, 0x19, 0x10, 0x38, 0x68, 0x0B, 0x15, + 0xA8, 0x10, 0x00, 0x38, 0x28, 0xF1, 0xFF, 0x10, 0x00, 0x39, 0x29, 0xD3, 0xFF, 0x10, 0x00, 0x2A, + 0xA3, 0xFF, 0x10, 0x00, 0x1F, 0xFF, 0x10, 0x00, 0x0E, 0x65, 0xC2, 0x51, 0x13, 0x0C, 0x43, 0x5F, + 0x10, 0x00, 0x28, 0x9C, 0x03, 0x4B, 0x44, 0x23, 0xFF, 0xBC, 0x19, 0x04, 0x1B, 0x20, 0x57, 0x35, + 0x06, 0xA0, 0x00, 0x0F, 0x10, 0x00, 0xFF, 0x24, 0x27, 0x15, 0x13, 0x3E, 0x92, 0x85, 0x2D, 0x89, + 0xC6, 0xEC, 0xFA, 0xEE, 0xC6, 0x84, 0xA4, 0xDB, 0x15, 0x12, 0x66, 0x4D, 0x22, 0xFA, 0x81, 0x90, + 0x01, 0x28, 0x19, 0xDA, 0xBE, 0x01, 0x00, 0x33, 0x02, 0x29, 0x03, 0xC0, 0xD2, 0x01, 0x17, 0x75, + 0xB9, 0xBE, 0x04, 0xDA, 0x0D, 0x15, 0x1D, 0x32, 0x83, 0x43, 0x80, 0x21, 0x2D, 0xAA, 0x68, 0x21, + 0x25, 0x02, 0xF2, 0x60, 0x48, 0x11, 0x02, 0x72, 0x09, 0x37, 0xE8, 0x03, 0x16, 0xE2, 0x50, 0x02, + 0x25, 0x22, 0x27, 0x33, 0x17, 0x69, 0xC8, 0x00, 0xF5, 0x2D, 0x57, 0xD3, 0x6D, 0x0E, 0x02, 0xF4, + 0x34, 0x0B, 0x46, 0x85, 0xA0, 0x39, 0x01, 0x8B, 0x60, 0x2E, 0xFD, 0x59, 0xFB, 0x42, 0x17, 0xFE, + 0x1B, 0x3C, 0x14, 0xB2, 0x93, 0x00, 0x15, 0x8B, 0x31, 0x0C, 0x04, 0x9F, 0x70, 0x35, 0xFF, 0xFF, + 0xA5, 0xB1, 0x41, 0x15, 0x27, 0xC9, 0x20, 0x15, 0xBC, 0xBC, 0x46, 0x24, 0x29, 0xE2, 0x14, 0x00, + 0x15, 0xD0, 0xC2, 0x31, 0x26, 0x18, 0xC8, 0x38, 0xE1, 0x04, 0x14, 0x00, 0x25, 0x08, 0xA5, 0x94, + 0x4B, 0x05, 0x50, 0x00, 0x15, 0x01, 0x89, 0x4E, 0x07, 0x75, 0xC8, 0x13, 0x56, 0x1C, 0x0A, 0x17, + 0xFB, 0x34, 0x1F, 0x25, 0x4C, 0xFA, 0x89, 0x56, 0x48, 0x03, 0x42, 0x9C, 0xB1, 0x8D, 0x42, 0x44, + 0xBB, 0x33, 0x8F, 0xE6, 0x24, 0x7A, 0x12, 0x02, 0x85, 0x01, 0x27, 0xDA, 0xB6, 0x7C, 0x79, 0x02, + 0xD0, 0x2B, 0x12, 0xDB, 0xD8, 0x28, 0x10, 0xF3, 0xA9, 0x06, 0x12, 0x05, 0xD2, 0x0C, 0x13, 0xBB, + 0x60, 0x49, 0x54, 0xE6, 0x58, 0x16, 0x2D, 0xAD, 0x1A, 0x2F, 0x1B, 0x79, 0x14, 0x05, 0x5E, 0xFE, + 0x24, 0x00, 0x08, 0xCB, 0x20, 0x6A, 0x19, 0x1D, 0xD0, 0xA2, 0x11, 0xB7, 0xD1, 0x00, 0x26, 0x14, + 0xA5, 0x84, 0x68, 0x14, 0x77, 0xAF, 0x07, 0x94, 0x2D, 0x87, 0xC7, 0xEC, 0xFE, 0xF8, 0xDA, 0xB1, + 0x66, 0xE9, 0xB4, 0x26, 0x12, 0x11, 0xA5, 0x3D, 0x13, 0xF9, 0x74, 0x1D, 0x05, 0x11, 0x00, 0x18, + 0xFC, 0xC6, 0xEF, 0x0F, 0x11, 0x00, 0x64, 0x1A, 0x04, 0x9D, 0x27, 0x3A, 0xED, 0x00, 0x04, 0xFF, + 0x00, 0x1F, 0xF0, 0x11, 0x00, 0x21, 0x00, 0xA2, 0x27, 0x03, 0x7E, 0x14, 0x5E, 0x57, 0x14, 0x14, + 0x14, 0x13, 0xEE, 0x00, 0x0F, 0x11, 0x00, 0xF0, 0x06, 0x58, 0xCE, 0x26, 0x00, 0x00, 0x94, 0x7D, + 0x07, 0x91, 0x6F, 0x04, 0x87, 0x49, 0x67, 0xEC, 0x51, 0x0A, 0x02, 0x11, 0x09, 0x8C, 0x4C, 0x06, + 0x09, 0x47, 0x1C, 0x66, 0x11, 0x00, 0x2B, 0x0E, 0xF3, 0x11, 0x00, 0x2C, 0x00, 0x76, 0x11, 0x00, + 0x2B, 0x02, 0x84, 0x11, 0x00, 0xC4, 0x00, 0x00, 0x39, 0x9D, 0xD0, 0xF6, 0xFE, 0xF6, 0xE3, 0xD0, + 0xB5, 0x29, 0xD8, 0x12, 0x12, 0x6F, 0xAC, 0x02, 0x16, 0xC5, 0x1E, 0xF1, 0x47, 0xFC, 0xFC, 0x2C, + 0x70, 0x21, 0x2A, 0x04, 0x95, 0x29, 0x0F, 0x15, 0x00, 0xFF, 0xAF, 0x19, 0xCD, 0x15, 0x00, 0x03, + 0x7E, 0x1C, 0x27, 0xF3, 0x03, 0x98, 0x47, 0x14, 0x2C, 0x09, 0xA7, 0x44, 0x85, 0x17, 0x26, 0x85, + 0x60, 0x02, 0x3E, 0x2C, 0x3B, 0xFF, 0x01, 0x00, 0x3F, 0x2C, 0x07, 0xF2, 0x15, 0x00, 0x00, 0x25, + 0x00, 0x8F, 0x0C, 0x00, 0x25, 0xF1, 0x66, 0x15, 0x00, 0x13, 0x11, 0xC1, 0x39, 0x46, 0xFE, 0xA5, + 0x19, 0x0C, 0x00, 0x99, 0x87, 0x14, 0x92, 0xE0, 0xFD, 0xF0, 0xC0, 0x83, 0x20, 0x93, 0x00, 0x57, + 0x00, 0x15, 0x15, 0x1F, 0x00, 0x6C, 0x15, 0x02, 0x14, 0xD6, 0x12, 0x44, 0x0D, 0x00, 0x22, 0xAD, + 0x0D, 0x26, 0x00, 0x27, 0xF6, 0x01, 0xE2, 0x2E, 0x37, 0x7F, 0x00, 0xDA, 0x5C, 0xF7, 0x14, 0x89, + 0x58, 0x3B, 0x17, 0xA8, 0xAA, 0xF5, 0x14, 0xAB, 0xFE, 0xC7, 0x17, 0x77, 0x7E, 0x1C, 0x14, 0xCD, + 0xED, 0x57, 0x17, 0x46, 0xB6, 0x59, 0x14, 0xEF, 0xDD, 0x39, 0x16, 0x15, 0xE4, 0x4F, 0x16, 0x11, + 0xC6, 0x06, 0x15, 0xE3, 0xAD, 0x0B, 0x16, 0x33, 0x42, 0x1D, 0x13, 0xB1, 0x47, 0x57, 0x05, 0x03, + 0x08, 0x16, 0x29, 0x3F, 0x20, 0x14, 0x0A, 0x44, 0x2A, 0x26, 0xF5, 0x03, 0x5B, 0x4A, 0x14, 0x2C, + 0x47, 0x6C, 0x17, 0xC7, 0x89, 0x2A, 0x11, 0x4E, 0xF8, 0x69, 0x04, 0xFE, 0x5A, 0x24, 0x01, 0xEB, + 0x01, 0x3C, 0x17, 0xDD, 0xE9, 0xB6, 0x13, 0xBA, 0x9E, 0x5A, 0x27, 0x04, 0xFC, 0x23, 0xDF, 0x13, + 0x89, 0x90, 0x20, 0x02, 0xE9, 0x85, 0x27, 0xFC, 0x08, 0xD7, 0x19, 0x38, 0xD7, 0x00, 0x42, 0x59, + 0xD7, 0x02, 0xE3, 0x01, 0x38, 0xF8, 0x02, 0x64, 0x21, 0x52, 0x12, 0x02, 0xE4, 0x01, 0x29, 0x1C, + 0x86, 0xE4, 0x5C, 0x02, 0xB2, 0x12, 0x29, 0x3E, 0xA8, 0x39, 0x04, 0x02, 0x52, 0xB6, 0x29, 0x60, + 0xCA, 0x10, 0xD5, 0x02, 0x2F, 0x02, 0x22, 0x83, 0xEC, 0xC1, 0x60, 0x18, 0x00, 0xEF, 0xCB, 0x1A, + 0xB4, 0xD0, 0xD9, 0x11, 0x05, 0x0F, 0x3F, 0x1A, 0xF3, 0x4B, 0x2C, 0x2B, 0x00, 0xCC, 0x62, 0x7A, + 0x1B, 0x00, 0x3A, 0xAA, 0x1F, 0x1A, 0x3B, 0x5C, 0x00, 0x16, 0xE9, 0xBE, 0x09, 0x1F, 0x37, 0x0B, + 0x4F, 0x01, 0x04, 0xB0, 0xCA, 0x0A, 0xF9, 0x55, 0x05, 0xE8, 0x4E, 0x1D, 0x56, 0x46, 0xDA, 0x0A, + 0xFB, 0xD1, 0x03, 0x6D, 0xB2, 0x33, 0xFF, 0xFF, 0xF3, 0x31, 0x09, 0x22, 0x20, 0x1E, 0x30, 0x0A, + 0x12, 0x9B, 0x6F, 0xC6, 0x01, 0x14, 0x00, 0x10, 0xDD, 0x0B, 0x00, 0x02, 0x39, 0x2B, 0x12, 0xA0, + 0xD5, 0x3B, 0x16, 0x77, 0xA9, 0x5F, 0x17, 0x0C, 0xFB, 0x3E, 0x12, 0xC6, 0x7B, 0x59, 0x16, 0x50, + 0xDD, 0x5D, 0x17, 0x33, 0x03, 0xD3, 0x12, 0xEA, 0xAB, 0x03, 0x16, 0x29, 0x0A, 0x33, 0x02, 0x35, + 0x14, 0x25, 0xFE, 0x09, 0x5F, 0x57, 0x13, 0xA0, 0x26, 0x5C, 0x17, 0xE2, 0xAB, 0x30, 0x15, 0x2D, + 0x81, 0x39, 0x13, 0x78, 0x94, 0x5F, 0x26, 0xFE, 0x06, 0xC8, 0xB0, 0x15, 0x54, 0x89, 0x4C, 0x14, + 0x4F, 0x54, 0x6A, 0x16, 0x24, 0x2E, 0x58, 0x15, 0x7B, 0x12, 0x41, 0x14, 0x27, 0xFE, 0x4A, 0x15, + 0x46, 0x8A, 0x5C, 0x24, 0xFF, 0xA1, 0x14, 0x37, 0x24, 0xFB, 0x05, 0x72, 0x06, 0x16, 0x67, 0xD9, + 0x57, 0x14, 0xC8, 0x41, 0x46, 0x15, 0xD7, 0x8D, 0x55, 0x16, 0x89, 0xFB, 0x0A, 0x54, 0xEF, 0x01, + 0x00, 0x00, 0xE5, 0x1A, 0x56, 0x14, 0x18, 0x09, 0x41, 0x05, 0x8F, 0xDC, 0x35, 0x15, 0x00, 0x0B, + 0x95, 0x01, 0x23, 0x01, 0xF1, 0xDA, 0x54, 0x16, 0xA7, 0xFB, 0x32, 0x16, 0x2D, 0x9D, 0x03, 0x13, + 0xCA, 0xB0, 0x91, 0x00, 0x37, 0x21, 0x12, 0xC9, 0xF8, 0x0A, 0x16, 0x51, 0xF1, 0x54, 0x02, 0xB5, + 0x01, 0x20, 0x0F, 0x03, 0x51, 0x02, 0x21, 0x85, 0xE9, 0x84, 0x00, 0x02, 0x99, 0x1C, 0x16, 0x0F, + 0xFA, 0x37, 0x11, 0x30, 0x0B, 0x63, 0x21, 0x56, 0xBC, 0xFC, 0x4C, 0x16, 0x99, 0xCD, 0xCC, 0x02, + 0xBD, 0x54, 0x11, 0x51, 0xD6, 0x1C, 0x21, 0x27, 0x8F, 0xCA, 0x00, 0x16, 0xBD, 0xFD, 0x50, 0x02, + 0xB9, 0x02, 0x21, 0x73, 0x76, 0xB2, 0x03, 0x11, 0x62, 0x72, 0xB4, 0x16, 0xE1, 0x93, 0x5E, 0x11, + 0x09, 0x50, 0x11, 0x21, 0x94, 0x9F, 0x09, 0x01, 0x01, 0xF2, 0x3B, 0x27, 0x2B, 0xFE, 0x2C, 0x8F, + 0x01, 0xE1, 0x33, 0x21, 0xB5, 0xC9, 0xCD, 0x4E, 0x10, 0x0A, 0x19, 0x00, 0x18, 0x74, 0x20, 0x61, + 0x01, 0xEE, 0x1F, 0x22, 0xD7, 0xF2, 0x9C, 0x3E, 0x00, 0xB3, 0x01, 0x27, 0xBE, 0xFF, 0xC9, 0x46, + 0x01, 0x43, 0x11, 0x13, 0xFE, 0xB2, 0x04, 0x14, 0xAE, 0x2D, 0x52, 0x2C, 0xF4, 0x02, 0xC2, 0x56, + 0x17, 0x0D, 0xC8, 0xDD, 0x1A, 0xCD, 0x2B, 0xB4, 0x02, 0x57, 0x61, 0x05, 0xAB, 0x3E, 0x2A, 0xA5, + 0x00, 0x33, 0xD0, 0x27, 0xFF, 0xAD, 0x13, 0x8F, 0x04, 0xAC, 0xC2, 0x05, 0x2F, 0xD7, 0x01, 0xC4, + 0xE7, 0x02, 0x09, 0x5C, 0x08, 0x2D, 0x49, 0x27, 0xCF, 0xFF, 0xD5, 0xD5, 0x1C, 0xCD, 0x5C, 0xE4, + 0x18, 0xA8, 0x58, 0x0D, 0x1A, 0xA0, 0x97, 0xDB, 0x05, 0xA8, 0x00, 0x27, 0xF0, 0x01, 0x1D, 0x21, + 0x05, 0x7B, 0x9B, 0x28, 0x00, 0x5A, 0xF4, 0x6E, 0x1B, 0x46, 0xB7, 0x59, 0x28, 0x00, 0x33, 0x43, + 0x8B, 0x1B, 0x19, 0xC1, 0x9C, 0x28, 0x00, 0x0D, 0xD8, 0x0F, 0x29, 0x01, 0xEB, 0xE5, 0x0F, 0x22, + 0x16, 0x16, 0x40, 0x06, 0x12, 0x26, 0xA1, 0x44, 0x12, 0xE8, 0x8F, 0x00, 0x11, 0x3F, 0x0D, 0x00, + 0x48, 0xF1, 0x0F, 0x00, 0xB5, 0xB0, 0x5A, 0x14, 0xA0, 0x7A, 0x50, 0x17, 0x44, 0x8B, 0x85, 0x24, + 0x0C, 0xF4, 0x51, 0x60, 0x26, 0x01, 0xD2, 0x4E, 0x76, 0x16, 0x60, 0xAE, 0x00, 0x16, 0x62, 0x00, + 0xD5, 0x16, 0xC0, 0x47, 0x4F, 0x24, 0x08, 0xE9, 0xB8, 0x36, 0x02, 0x28, 0x4E, 0x28, 0xE7, 0x06, + 0x53, 0x1F, 0x38, 0x8D, 0x00, 0x81, 0x1B, 0x60, 0x23, 0x16, 0xF8, 0x14, 0xDB, 0x19, 0xE0, 0x36, + 0x92, 0x03, 0x37, 0x61, 0x19, 0xAB, 0xB4, 0x91, 0x05, 0xF4, 0x4E, 0x0B, 0x50, 0xD5, 0x07, 0x17, + 0x71, 0x2F, 0xD3, 0x01, 0x2B, 0xE4, 0x00, 0x26, 0xFF, 0x68, 0xD1, 0x04, 0x16, 0x02, 0xD4, 0xE6, + 0x1E, 0x0C, 0x73, 0xD6, 0x06, 0x01, 0x30, 0x02, 0x3E, 0x05, 0x17, 0xF9, 0x61, 0x17, 0x0D, 0xAC, + 0x14, 0x1E, 0xCA, 0x79, 0x49, 0x00, 0xEE, 0x0E, 0x08, 0xE1, 0x3F, 0x2B, 0x14, 0xF9, 0x45, 0x2F, + 0x09, 0x4E, 0xAB, 0x4F, 0xFF, 0xFF, 0xEE, 0x0C, 0xF3, 0xE4, 0x00, 0x08, 0xF2, 0x45, 0x17, 0x44, + 0xF1, 0x00, 0x39, 0xE0, 0x04, 0x00, 0xDC, 0xB6, 0x1A, 0xFB, 0x79, 0x55, 0x11, 0x1A, 0xB7, 0x04, + 0x2A, 0xFA, 0x6C, 0xF0, 0x87, 0x02, 0x03, 0x04, 0x38, 0xAE, 0x04, 0xDF, 0x0C, 0xDA, 0x23, 0x03, + 0xE2, 0x69, 0x07, 0x18, 0x6D, 0x31, 0x06, 0x02, 0xF3, 0x1D, 0x57, 0xE9, 0x05, 0x00, 0x0B, 0xED, + 0x4A, 0x62, 0x15, 0xB4, 0x8B, 0x58, 0x16, 0x82, 0x09, 0x08, 0x25, 0x1F, 0xFE, 0x7C, 0x05, 0x13, + 0x16, 0x7C, 0xD8, 0x14, 0x1D, 0x01, 0x49, 0x18, 0xCC, 0x11, 0xEB, 0x47, 0x8C, 0x00, 0x05, 0xE8, + 0xBF, 0x9F, 0x03, 0xFC, 0x42, 0x33, 0xF2, 0x0F, 0x54, 0xD7, 0x18, 0x08, 0x91, 0xBC, 0x00, 0x4C, + 0x4C, 0x31, 0x16, 0x16, 0x27, 0xC8, 0x45, 0x12, 0x87, 0xE7, 0x08, 0x03, 0x5E, 0x94, 0x12, 0x83, + 0x0E, 0x00, 0x29, 0x86, 0x4A, 0x8E, 0x35, 0x03, 0xE5, 0x43, 0x38, 0x4E, 0x0E, 0xFD, 0xE5, 0x5D, + 0x14, 0xD8, 0x6F, 0x61, 0x17, 0xCB, 0x7A, 0x65, 0x03, 0xD3, 0x05, 0x15, 0xDB, 0x08, 0x22, 0x17, + 0x41, 0xA4, 0x5D, 0x15, 0xA1, 0xE3, 0x70, 0x17, 0x71, 0xD4, 0x59, 0x56, 0x68, 0x00, 0x00, 0x0E, + 0xFC, 0xA7, 0x14, 0x16, 0x7E, 0x13, 0x01, 0x16, 0xC9, 0x91, 0x5D, 0x02, 0xF7, 0x03, 0x25, 0xF2, + 0x03, 0xCA, 0x2A, 0x01, 0x15, 0x67, 0x16, 0xD1, 0x04, 0x31, 0x03, 0xEF, 0x3F, 0x56, 0x2F, 0x00, + 0x00, 0x03, 0xF8, 0x64, 0x66, 0x24, 0x0C, 0xFB, 0x46, 0x47, 0x18, 0x24, 0xAF, 0x94, 0x14, 0xC4, + 0x75, 0x30, 0x18, 0x4E, 0x01, 0xDC, 0x14, 0x83, 0x92, 0x56, 0x18, 0x78, 0xA6, 0x86, 0x02, 0xCF, + 0x08, 0x48, 0xEE, 0x01, 0x00, 0xA1, 0x25, 0x47, 0x23, 0x09, 0xF9, 0x4A, 0x05, 0x19, 0xCB, 0x28, + 0xD8, 0x02, 0x9E, 0x3A, 0x39, 0x4D, 0x01, 0xF4, 0xCD, 0x02, 0x02, 0xD3, 0x00, 0x2A, 0x7D, 0x1E, + 0xDE, 0xD9, 0x03, 0x51, 0x8D, 0x1A, 0x47, 0x87, 0x04, 0x11, 0x06, 0x17, 0x17, 0x2B, 0xDC, 0x71, + 0xD4, 0x5B, 0x02, 0x87, 0x09, 0x1B, 0xA8, 0xC7, 0x52, 0x02, 0x53, 0x07, 0x01, 0x4F, 0x05, 0x2F, + 0xFC, 0x0C, 0xBC, 0x48, 0x01, 0x07, 0x40, 0x4C, 0x16, 0x05, 0x17, 0x38, 0x1E, 0x94, 0x92, 0xD9, + 0x07, 0x9A, 0x27, 0x0A, 0xD5, 0x57, 0x1F, 0x21, 0x90, 0x03, 0x00, 0x0A, 0xE1, 0xF7, 0x14, 0x07, + 0x38, 0x30, 0x1E, 0xAD, 0x7B, 0x4E, 0x0D, 0x0B, 0xE2, 0x2D, 0x7C, 0xFF, 0x54, 0xDB, 0x06, 0x7D, + 0x03, 0x1A, 0xF9, 0x54, 0x33, 0x1F, 0x10, 0xD6, 0x57, 0x03, 0x2E, 0xF7, 0xFF, 0xDA, 0xF9, 0x27, + 0x00, 0x24, 0x02, 0x98, 0x02, 0xE6, 0x03, 0x42, 0x15, 0x1F, 0x3C, 0x6A, 0xA3, 0x02, 0x2E, 0xF6, + 0x0F, 0x34, 0x91, 0x09, 0xDF, 0x33, 0x06, 0x16, 0x00, 0x2F, 0xEB, 0x17, 0x16, 0x00, 0x00, 0x3D, + 0xEE, 0x38, 0x00, 0x16, 0x00, 0x29, 0xFD, 0xAD, 0x06, 0x7B, 0x8A, 0x14, 0xFF, 0xFC, 0xEA, 0xD2, + 0xA6, 0x6D, 0x1A, 0x95, 0x00, 0x23, 0x14, 0x12, 0xF4, 0x13, 0x1B, 0x6F, 0xE1, 0x56, 0x19, 0x38, + 0xE4, 0xE8, 0x02, 0x13, 0x44, 0x0F, 0x12, 0x00, 0x20, 0x43, 0xF4, 0x0E, 0x00, 0x09, 0xD3, 0x56, + 0x1C, 0xA5, 0xF7, 0x54, 0x04, 0x67, 0x5E, 0x1C, 0x34, 0x93, 0x5E, 0x1D, 0xCD, 0xA7, 0x75, 0x1C, + 0x66, 0x99, 0x68, 0x2C, 0xF3, 0x0D, 0x85, 0x56, 0x06, 0x47, 0x4B, 0x2C, 0x16, 0xFA, 0x0E, 0xDC, + 0x1C, 0x78, 0x32, 0x5E, 0x2C, 0x03, 0xDF, 0x04, 0x17, 0x03, 0x4F, 0x04, 0x16, 0xF2, 0xA4, 0x02, + 0x1C, 0xB3, 0x77, 0x67, 0x2B, 0x1F, 0xFE, 0xD2, 0x6A, 0x04, 0x63, 0x55, 0x06, 0x93, 0xBD, 0x2C, + 0x06, 0xE9, 0x81, 0x56, 0x17, 0x57, 0x79, 0x29, 0x09, 0x84, 0xF8, 0x1B, 0x94, 0xEB, 0xE9, 0x08, + 0x52, 0x51, 0x1C, 0x92, 0x57, 0x02, 0x2C, 0x0B, 0xF1, 0x0E, 0x5F, 0x03, 0x6A, 0x5B, 0x2C, 0xF0, + 0x0A, 0x25, 0x4C, 0x14, 0x9A, 0x9A, 0x55, 0x3B, 0x02, 0x2C, 0xFF, 0x01, 0x00, 0x2F, 0x24, 0x3C, + 0x12, 0x00, 0x34, 0x76, 0x00, 0x00, 0x12, 0x0F, 0x37, 0x02, 0xF5, 0x47, 0x02, 0x72, 0x01, 0x2D, + 0x5C, 0x76, 0x7C, 0x7C, 0x7C, 0xAE, 0x37, 0x37, 0x07, 0x7E, 0xE4, 0x13, 0x1A, 0x15, 0x04, 0x38, + 0xB7, 0x18, 0x88, 0x45, 0x0C, 0x03, 0x0F, 0x00, 0x19, 0xDB, 0x0F, 0x00, 0x15, 0x1A, 0x01, 0x18, + 0x27, 0x9C, 0x50, 0x32, 0xB9, 0x19, 0x60, 0x07, 0x58, 0x04, 0xB3, 0xC1, 0x1A, 0x6E, 0x40, 0x04, + 0x03, 0x49, 0x07, 0x03, 0xBD, 0x8F, 0x2A, 0x00, 0x77, 0x96, 0xDE, 0x1A, 0x78, 0x4B, 0x09, 0x0F, + 0x0F, 0x00, 0x38, 0x1A, 0x79, 0x0F, 0x00, 0x1A, 0x7A, 0x0F, 0x00, 0x03, 0x2B, 0x06, 0x1A, 0xAF, + 0x19, 0xDF, 0x18, 0xA0, 0x36, 0x53, 0x06, 0xC3, 0x09, 0x19, 0xB2, 0xED, 0x02, 0x27, 0x04, 0xE8, + 0xDF, 0x18, 0x23, 0x0B, 0x24, 0x5A, 0x2D, 0x27, 0xDD, 0x01, 0x12, 0x77, 0x04, 0x12, 0x05, 0x1A, + 0xB4, 0x81, 0x9B, 0x02, 0x0F, 0x00, 0x2A, 0xF6, 0x5C, 0x3F, 0x77, 0x39, 0xFF, 0x8C, 0x01, 0x0F, + 0x00, 0x03, 0x0C, 0x5D, 0x23, 0x05, 0x1C, 0x9F, 0x07, 0x13, 0xE3, 0x56, 0x0B, 0x2A, 0x03, 0xE5, + 0x97, 0x03, 0x1A, 0xB0, 0xED, 0x5C, 0x1A, 0x93, 0xA3, 0x6D, 0x1A, 0x85, 0x6A, 0xCD, 0x1A, 0x7D, + 0x79, 0xBE, 0x1F, 0x7A, 0x2C, 0x01, 0x03, 0x0F, 0x95, 0x01, 0x46, 0x1A, 0xB5, 0xFE, 0x01, 0x04, + 0xFD, 0x0E, 0x1A, 0x73, 0x3D, 0x6E, 0x03, 0x59, 0x22, 0x1A, 0xDA, 0x9D, 0x5A, 0x2A, 0xFE, 0x13, + 0x2C, 0xF0, 0x21, 0xB9, 0x2E, 0x12, 0xE9, 0x2A, 0x0B, 0xFC, 0xB2, 0x02, 0x1A, 0xBB, 0x0F, 0x00, + 0x29, 0x3A, 0xFD, 0x0F, 0x00, 0x39, 0x00, 0x63, 0xFA, 0x0F, 0x00, 0x58, 0x00, 0x20, 0x7E, 0xC5, + 0xF3, 0xCC, 0x78, 0x00, 0x52, 0x00, 0x30, 0x10, 0x10, 0x10, 0xC8, 0x0E, 0x22, 0x0D, 0x07, 0x60, + 0xCC, 0x12, 0x6B, 0x8C, 0xA9, 0x02, 0x80, 0x09, 0x13, 0xDB, 0x07, 0x00, 0x1F, 0x6E, 0x07, 0x00, + 0x01, 0x18, 0x6F, 0x07, 0x00, 0x13, 0xDA, 0x07, 0x00, 0x1F, 0x70, 0x07, 0x00, 0x01, 0x18, 0x71, + 0x07, 0x00, 0x13, 0xD9, 0x07, 0x00, 0x1F, 0x72, 0x07, 0x00, 0x08, 0x18, 0x73, 0x07, 0x00, 0x13, + 0xD8, 0x07, 0x00, 0x1F, 0x74, 0x07, 0x00, 0x01, 0x18, 0x75, 0x07, 0x00, 0x13, 0xD7, 0x07, 0x00, + 0x1F, 0x76, 0x07, 0x00, 0x01, 0x18, 0x77, 0x07, 0x00, 0x1A, 0xD6, 0x07, 0x00, 0x1F, 0x78, 0x07, + 0x00, 0x01, 0x18, 0x79, 0x07, 0x00, 0x13, 0xD5, 0x07, 0x00, 0x1F, 0x7A, 0x07, 0x00, 0x01, 0x18, + 0x7B, 0x07, 0x00, 0x13, 0xD4, 0x07, 0x00, 0x1F, 0x7C, 0x07, 0x00, 0x08, 0x00, 0x1E, 0x5C, 0x03, + 0xB4, 0x04, 0x7B, 0x5A, 0x7C, 0x7C, 0x7C, 0x72, 0x56, 0x20, 0x2E, 0xF0, 0x3A, 0xD4, 0x64, 0x01, + 0x3D, 0xF0, 0x1B, 0x90, 0x4C, 0xF0, 0x1A, 0x41, 0x0F, 0x00, 0x01, 0xED, 0x3B, 0x49, 0x6C, 0x9F, + 0xD2, 0xFF, 0x14, 0xDC, 0x29, 0x01, 0x90, 0x8A, 0x68, 0x2A, 0x00, 0x25, 0x23, 0x30, 0x2A, 0x03, + 0xFB, 0x5C, 0x08, 0x1A, 0xEC, 0xC2, 0xF3, 0x1A, 0xE6, 0xA8, 0xDE, 0x1A, 0xE5, 0x2F, 0x17, 0x1F, + 0xE4, 0x0F, 0x00, 0x4D, 0x1A, 0x49, 0x19, 0xA2, 0x1A, 0x4C, 0x3B, 0xC5, 0x1A, 0x52, 0x36, 0x09, + 0x1A, 0x63, 0x80, 0x5E, 0x04, 0xFC, 0x9F, 0x1A, 0x5E, 0xD7, 0xF2, 0x13, 0x15, 0x0F, 0x03, 0x3A, + 0x79, 0x1C, 0x08, 0xF5, 0xE5, 0x02, 0xE6, 0x73, 0x2A, 0x06, 0xA8, 0xF5, 0x73, 0x37, 0x01, 0x81, + 0xFD, 0x0F, 0x00, 0x29, 0x09, 0xB2, 0x1E, 0x00, 0x19, 0x93, 0x3C, 0x00, 0x14, 0x19, 0xCD, 0xA1, + 0x27, 0x13, 0x03, 0xC1, 0x42, 0x19, 0xB6, 0x35, 0xED, 0x2A, 0xFF, 0x7F, 0x74, 0x07, 0x1A, 0x61, + 0xF4, 0x12, 0x1A, 0x51, 0xED, 0x8B, 0x1E, 0x4B, 0x0E, 0x01, 0x0F, 0x77, 0x01, 0x4B, 0x0B, 0xE0, + 0x01, 0x19, 0xE8, 0x39, 0x72, 0x04, 0xF3, 0x47, 0x1A, 0x40, 0x5C, 0xDC, 0x1A, 0x36, 0xA1, 0xBD, + 0x00, 0x78, 0x58, 0x33, 0x02, 0x0B, 0x3E, 0xE6, 0x67, 0x29, 0xFD, 0x06, 0xA3, 0x02, 0x1A, 0xD4, + 0xB2, 0x02, 0x19, 0x8A, 0x0F, 0x00, 0x28, 0xEE, 0x19, 0x0F, 0x00, 0x26, 0xED, 0x3F, 0xEE, 0x02, + 0x33, 0xEC, 0xB8, 0x6D, 0xBB, 0x1B, 0x4A, 0x0C, 0x10, 0x10, 0x10, 0xF1, 0x0A, 0x46, 0x19, 0x17, + 0x0A, 0x01, 0x47, 0x5A, 0x17, 0x01, 0x34, 0xEE, 0x06, 0xD7, 0x58, 0x55, 0x86, 0xE8, 0xFF, 0xDF, + 0x95, 0xA7, 0x43, 0x03, 0xCA, 0x11, 0x13, 0x48, 0xDE, 0x00, 0x11, 0xB2, 0xED, 0x43, 0x31, 0x05, + 0x87, 0xF8, 0xC1, 0x3F, 0x16, 0x6C, 0x8B, 0x23, 0x96, 0xBB, 0x55, 0x16, 0x41, 0xCE, 0xFF, 0xFF, + 0xF0, 0x2D, 0xCB, 0x7F, 0x09, 0x44, 0x3F, 0x3E, 0x01, 0x02, 0xC4, 0x16, 0x00, 0x00, 0x95, 0x52, + 0x86, 0x19, 0xE5, 0xFF, 0xFD, 0x96, 0x2A, 0x10, 0x52, 0xE9, 0x00, 0x11, 0xFC, 0xC0, 0x3E, 0x22, + 0x38, 0xE4, 0x86, 0x0C, 0x22, 0x33, 0xAD, 0x65, 0x00, 0x13, 0xE9, 0x66, 0x03, 0x05, 0x32, 0x09, + 0x8E, 0x27, 0x8F, 0xD8, 0xFF, 0xE2, 0x88, 0x11, 0x00, 0x01, 0x00, 0x06, 0xD6, 0x00, 0x22, 0x13, + 0x0F, 0xD8, 0xDC, 0x28, 0x0D, 0x34, 0x01, 0x00, 0x1A, 0x2C, 0x13, 0x09, 0x55, 0xD8, 0x3C, 0xFF, + 0xCA, 0x90, 0x01, 0x00, 0x36, 0xF8, 0xD8, 0x3C, 0xC4, 0x76, 0x3F, 0x00, 0x00, 0xEC, 0x0F, 0x00, + 0xFF, 0xB3, 0x25, 0xE1, 0xC0, 0x01, 0x00, 0x2B, 0xFB, 0xD8, 0xFE, 0x01, 0x04, 0x4A, 0x06, 0x00, + 0xA7, 0x0A, 0x04, 0xE8, 0x1F, 0x52, 0x06, 0x04, 0x13, 0x01, 0x00, 0xC4, 0x5A, 0xF0, 0x1F, 0x5E, + 0xC4, 0xFF, 0xFF, 0x4B, 0xB3, 0xFF, 0xFF, 0x38, 0xA1, 0xFF, 0xFF, 0x25, 0x90, 0xFF, 0xFF, 0x12, + 0x7F, 0xFF, 0xFD, 0x02, 0x6E, 0xFF, 0xEB, 0x00, 0x5D, 0xFF, 0xD8, 0x00, 0x4C, 0xFF, 0xC5, 0x00, + 0x3B, 0xFF, 0xB2, 0x00, 0x2A, 0xFF, 0x9F, 0x00, 0x19, 0xFF, 0x8B, 0x00, 0x08, 0xBA, 0x16, 0xF0, + 0x04, 0xF7, 0x65, 0x00, 0x00, 0xE6, 0x52, 0x00, 0x00, 0x04, 0x02, 0x00, 0xE1, 0xFC, 0xFC, 0x4B, + 0xE4, 0xFF, 0xFF, 0x4C, 0x04, 0x00, 0x40, 0x09, 0x08, 0x08, 0x01, 0x47, 0x0C, 0xF1, 0x2C, 0x8A, + 0xFC, 0xFC, 0x36, 0x86, 0xFC, 0xFC, 0x3D, 0x8C, 0xFF, 0xFF, 0x0C, 0x88, 0xFF, 0xFF, 0x11, 0x8C, + 0xFF, 0xDD, 0x00, 0x88, 0xFF, 0xE4, 0x00, 0x8C, 0xFF, 0xB0, 0x00, 0x88, 0xFF, 0xB7, 0x00, 0x8C, + 0xFF, 0x84, 0x00, 0x88, 0xFF, 0x89, 0x00, 0x8C, 0xFF, 0x57, 0x00, 0x88, 0xFF, 0x5C, 0x00, 0x8C, + 0xFF, 0x2B, 0x00, 0x88, 0xFF, 0x2F, 0x00, 0x03, 0x04, 0x01, 0x04, 0x00, 0x25, 0x0C, 0x0C, 0xD6, + 0xC2, 0x10, 0x56, 0xB8, 0x17, 0x42, 0xA6, 0xFC, 0xF9, 0x08, 0xAB, 0x0A, 0x53, 0x34, 0x00, 0xD0, + 0xFF, 0xDC, 0xC1, 0x12, 0x32, 0x0D, 0x02, 0xF7, 0x5E, 0x09, 0x52, 0xCA, 0xFF, 0xE4, 0x00, 0x20, + 0xA5, 0x0A, 0x40, 0x01, 0xF1, 0xFF, 0xBC, 0x6D, 0x9F, 0x31, 0x64, 0x00, 0x11, 0x38, 0xAE, 0x00, + 0xFF, 0x48, 0x36, 0xFE, 0x5D, 0x13, 0x0C, 0x01, 0xD1, 0x5B, 0x07, 0x50, 0x9C, 0xFF, 0xFF, 0x7E, + 0x50, 0xD3, 0xFF, 0xF4, 0x50, 0x1C, 0x05, 0x12, 0x53, 0x29, 0x00, 0xD8, 0xFF, 0xD5, 0x0F, 0x44, + 0x53, 0x0C, 0x01, 0xF5, 0xFF, 0xB7, 0x9D, 0x12, 0x02, 0x40, 0x00, 0x26, 0x52, 0x1E, 0x3C, 0x00, + 0x30, 0x51, 0x0A, 0x59, 0xDF, 0xFE, 0x60, 0x95, 0xFF, 0xFF, 0x85, 0x50, 0x19, 0xFB, 0x17, 0x32, + 0x83, 0x00, 0x81, 0x6D, 0x0D, 0x10, 0x4A, 0xBA, 0x05, 0x12, 0xA2, 0xC8, 0x16, 0x10, 0x6C, 0xED, + 0x13, 0x33, 0xC4, 0xFF, 0xED, 0x04, 0x43, 0x32, 0x1D, 0x00, 0xE5, 0xD7, 0x0D, 0x53, 0xAF, 0xFF, + 0xF9, 0x03, 0x09, 0x1F, 0x14, 0x52, 0xD0, 0xFF, 0xD9, 0x00, 0x28, 0x7D, 0x26, 0x54, 0x0C, 0x0B, + 0x18, 0x00, 0xFE, 0xEE, 0x00, 0x16, 0x4C, 0x90, 0x75, 0x16, 0x9C, 0x07, 0x14, 0x13, 0x9C, 0x42, + 0x57, 0xC4, 0x2B, 0xA9, 0xE8, 0xFE, 0xFF, 0xDF, 0x7A, 0x03, 0x00, 0x00, 0x39, 0xF7, 0x3B, 0x73, + 0xC2, 0x01, 0xCF, 0xFF, 0xFF, 0xC6, 0x5A, 0x7D, 0xFE, 0xFF, 0xFE, 0x25, 0x1C, 0xE3, 0x15, 0x52, + 0xAC, 0xFF, 0xFF, 0x72, 0x36, 0x19, 0x74, 0x52, 0x74, 0xFF, 0xFF, 0x96, 0x24, 0xAB, 0x12, 0xA6, + 0x2A, 0x4A, 0x1B, 0x01, 0x02, 0xEC, 0xFF, 0xFF, 0xFB, 0x52, 0xE9, 0x0A, 0x21, 0xFD, 0x6F, 0x02, + 0x02, 0x11, 0x02, 0x69, 0x21, 0x11, 0x95, 0xB0, 0x13, 0x11, 0x05, 0xC5, 0x0B, 0x11, 0xAC, 0x6C, + 0x5D, 0x27, 0x01, 0x78, 0x5E, 0x0E, 0x23, 0x55, 0xFA, 0x90, 0x13, 0x12, 0x0A, 0xCE, 0x86, 0x52, + 0xB3, 0x21, 0xA6, 0xDB, 0xDE, 0x3B, 0x5D, 0x21, 0xEC, 0x29, 0x31, 0xC9, 0x00, 0xB5, 0x0A, 0x31, + 0xFD, 0x04, 0xF1, 0x57, 0x15, 0x10, 0x77, 0xE1, 0x74, 0x70, 0x96, 0xFF, 0xFF, 0xEA, 0x65, 0x61, + 0xE7, 0x67, 0x10, 0x13, 0x15, 0x46, 0x0D, 0xB3, 0xD9, 0x11, 0x00, 0x00, 0x12, 0x8E, 0xDD, 0xFD, + 0xFF, 0xEE, 0x96, 0xC1, 0x05, 0x25, 0x34, 0xCF, 0xDD, 0x22, 0x11, 0x34, 0x8C, 0x13, 0x24, 0x17, + 0x17, 0xFC, 0x01, 0x61, 0x52, 0xC4, 0xF2, 0xF9, 0xDB, 0x88, 0x04, 0x38, 0x3B, 0xEA, 0xFC, 0x5B, + 0x00, 0x85, 0x11, 0xB4, 0xDE, 0x5D, 0x27, 0xFE, 0x15, 0x67, 0xEC, 0x31, 0x81, 0x5E, 0xE3, 0xC7, + 0x08, 0x35, 0x84, 0xFF, 0xC8, 0x27, 0x05, 0x31, 0xF7, 0xFF, 0xDC, 0xF3, 0x0B, 0x10, 0x5D, 0x51, + 0x73, 0x05, 0xEE, 0xEB, 0x11, 0x0B, 0x12, 0x0F, 0x10, 0x6A, 0xBB, 0x14, 0x17, 0x1A, 0xDE, 0x0F, + 0x11, 0x0C, 0x17, 0x00, 0x10, 0x69, 0x4E, 0x1B, 0x35, 0x62, 0xFF, 0xE9, 0x98, 0x00, 0x41, 0x03, + 0xFC, 0xFF, 0xD6, 0xA2, 0x1F, 0x38, 0x63, 0x00, 0xAC, 0x6F, 0x6E, 0xDD, 0xD2, 0xFF, 0xFE, 0x35, + 0x0E, 0xC7, 0xFF, 0xFF, 0x38, 0x05, 0xF2, 0xFF, 0x56, 0xE6, 0x6D, 0xF0, 0x03, 0xD5, 0x03, 0x40, + 0xFF, 0xFC, 0x11, 0x01, 0x62, 0xCC, 0xF5, 0xF5, 0xCE, 0x68, 0x01, 0x00, 0x00, 0x04, 0x94, 0x55, + 0x02, 0x87, 0xD2, 0x29, 0x00, 0x8A, 0xFF, 0xC2, 0x00, 0x6C, 0xF1, 0x4B, 0x30, 0x15, 0x44, 0x4C, + 0x8A, 0x61, 0xD8, 0xD4, 0xFF, 0x78, 0x01, 0xE2, 0xFF, 0xFA, 0x70, 0x6D, 0xF8, 0xFF, 0xEE, 0x04, + 0xB4, 0x65, 0x21, 0x2E, 0x1C, 0x27, 0x0C, 0x18, 0xAF, 0xFF, 0x64, 0x51, 0x68, 0xFF, 0xE4, 0x01, + 0x34, 0xDD, 0x14, 0x18, 0x97, 0xCB, 0x12, 0x51, 0xB2, 0xFF, 0x9A, 0x00, 0x38, 0xBD, 0x0D, 0x17, + 0x95, 0xA4, 0x5F, 0x61, 0x08, 0xF5, 0xFF, 0x50, 0x00, 0x34, 0xBD, 0x24, 0x17, 0x98, 0x9B, 0x67, + 0x61, 0x46, 0xFF, 0xFA, 0x0D, 0x00, 0x19, 0x35, 0x3A, 0x17, 0xB6, 0x47, 0x1B, 0x11, 0x90, 0xA1, + 0x0E, 0x96, 0xDA, 0xFF, 0xFE, 0x6D, 0x6A, 0xFB, 0xFF, 0xE7, 0x02, 0x1C, 0x7B, 0x16, 0x72, 0x05, + 0x2F, 0x17, 0x6D, 0x32, 0x12, 0x01, 0xCE, 0x46, 0x61, 0x59, 0xCB, 0xF8, 0xF9, 0xCF, 0x63, 0x4E, + 0x02, 0x43, 0x0E, 0x0C, 0x13, 0x01, 0xD0, 0x01, 0x51, 0xB6, 0xF0, 0xF5, 0xCA, 0x62, 0x0D, 0x00, + 0x26, 0x38, 0xF9, 0x58, 0x29, 0x61, 0xC3, 0xFF, 0xFF, 0x9C, 0x65, 0xEF, 0x15, 0x13, 0x71, 0x06, + 0xFC, 0xFF, 0xF7, 0x06, 0x00, 0x9D, 0xB5, 0x47, 0x10, 0x09, 0x93, 0x22, 0x22, 0x00, 0xB6, 0xE9, + 0xA1, 0x62, 0xD7, 0xFF, 0xFF, 0x1D, 0x09, 0xF2, 0x87, 0x3A, 0x53, 0x7C, 0xFF, 0xFF, 0x6A, 0x68, + 0x1D, 0x52, 0x85, 0x0F, 0xEA, 0xFF, 0xCE, 0xE6, 0xFF, 0xBB, 0x04, 0x5D, 0x5A, 0x25, 0xCE, 0x0F, + 0x98, 0x11, 0xA2, 0xFE, 0x1F, 0x00, 0x00, 0x29, 0x30, 0x2D, 0x00, 0x43, 0xFD, 0xB1, 0x0E, 0xF0, + 0x0D, 0xE9, 0xFF, 0xE3, 0x0B, 0xE5, 0xFF, 0xF5, 0xC7, 0xFF, 0xFC, 0x2F, 0x12, 0xFF, 0xFF, 0xC1, + 0x62, 0xFF, 0xFF, 0x91, 0x2A, 0xFB, 0xFF, 0xC7, 0x48, 0xFF, 0xFF, 0x83, 0xA6, 0x1E, 0x01, 0x80, + 0x88, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0x2D, 0xC8, 0x2E, 0x10, 0x21, 0x0B, 0xE0, 0x9A, 0x09, 0x11, + 0xBA, 0xE9, 0x0A, 0x00, 0x31, 0x0E, 0x81, 0x8D, 0x04, 0x78, 0xFF, 0xFF, 0xCB, 0x52, 0x8B, 0xED, + 0x09, 0x22, 0xE9, 0x0C, 0x82, 0x1B, 0xF2, 0x04, 0xEE, 0x7B, 0xFA, 0xFF, 0xF8, 0x00, 0x14, 0x96, + 0xE6, 0xFD, 0xE4, 0xA1, 0x20, 0x00, 0x3B, 0xD0, 0xF6, 0x08, 0x04, 0xF0, 0x04, 0x51, 0x5F, 0xFC, + 0xFC, 0x53, 0x60, 0x83, 0x1F, 0xF2, 0x0C, 0xFD, 0x07, 0x60, 0xFF, 0xDA, 0x00, 0x60, 0xFF, 0xB2, + 0x00, 0x60, 0xFF, 0x89, 0x00, 0x60, 0xFF, 0x61, 0x00, 0x02, 0x04, 0x02, 0x00, 0x08, 0x06, 0x17, + 0x01, 0xFC, 0x91, 0x02, 0x31, 0x5A, 0xC7, 0xD6, 0xFB, 0x1D, 0x91, 0xE0, 0x00, 0x2E, 0xFE, 0xFF, + 0xF3, 0x5F, 0x00, 0x92, 0xA2, 0x7B, 0x10, 0xDE, 0x85, 0x00, 0x11, 0x10, 0x21, 0x1F, 0x41, 0x30, + 0xFF, 0xFF, 0xD9, 0x8A, 0x15, 0x11, 0xC7, 0xF8, 0x0D, 0x11, 0xBD, 0xB1, 0x0A, 0x11, 0xB6, 0xC9, + 0x18, 0x1A, 0xB4, 0x06, 0x00, 0x11, 0x5E, 0x4E, 0x0E, 0x11, 0x56, 0x52, 0x10, 0x11, 0x48, 0x30, + 0x00, 0x11, 0x32, 0x3C, 0x00, 0x12, 0x12, 0xDA, 0xD4, 0x11, 0xE0, 0x03, 0x04, 0x11, 0x93, 0xFE, + 0x03, 0x51, 0x30, 0xFF, 0xFF, 0xF2, 0x5D, 0x8F, 0x04, 0xD0, 0xE0, 0x00, 0x00, 0x01, 0x5D, 0xCB, + 0xD9, 0x00, 0x00, 0x07, 0x07, 0x17, 0x00, 0x94, 0x00, 0x42, 0x3B, 0xEA, 0xAA, 0x2A, 0x97, 0x14, + 0xE2, 0xF7, 0x39, 0x00, 0x00, 0x14, 0x9C, 0xFF, 0xFF, 0xD2, 0x01, 0x00, 0x00, 0x02, 0xD2, 0x67, + 0x6F, 0x12, 0x83, 0xCC, 0x0A, 0x12, 0x53, 0xB8, 0x0A, 0x12, 0x35, 0xAF, 0xA1, 0x12, 0x23, 0x45, + 0x78, 0x10, 0x1A, 0x9C, 0xA0, 0x02, 0xF8, 0x7C, 0x12, 0x03, 0x6E, 0x1F, 0x12, 0x07, 0x70, 0x14, + 0x12, 0x08, 0x07, 0x00, 0x11, 0x07, 0x8B, 0x00, 0x00, 0x1C, 0x00, 0x03, 0x2A, 0x00, 0x12, 0x25, + 0x38, 0x00, 0x12, 0x37, 0x71, 0x59, 0x12, 0x52, 0x0D, 0x0F, 0x11, 0x83, 0xA0, 0x4C, 0x00, 0x2C, + 0xC1, 0x41, 0x37, 0x00, 0x13, 0x9A, 0xCC, 0x19, 0x00, 0x8C, 0x00, 0x63, 0x38, 0x00, 0x00, 0x3C, + 0xEE, 0xAE, 0xB2, 0x1A, 0x43, 0x0A, 0x09, 0x09, 0x01, 0x15, 0x09, 0x20, 0xE8, 0xFC, 0xB5, 0x1B, + 0xF4, 0x04, 0x12, 0x0B, 0x00, 0xD1, 0xFF, 0x55, 0x00, 0x1C, 0x00, 0x7F, 0xE8, 0x6B, 0xBC, 0xFF, + 0x60, 0xAB, 0xF5, 0x0E, 0xB7, 0x39, 0xDE, 0xE1, 0x01, 0x38, 0xB2, 0xFF, 0xFF, 0xF3, 0x71, 0x15, + 0x00, 0x00, 0x05, 0xCA, 0xFF, 0xEA, 0x0F, 0x4A, 0xF0, 0x00, 0x86, 0xFF, 0xCD, 0x4F, 0xFF, 0xEE, + 0x1D, 0x00, 0x01, 0x8D, 0xFC, 0x51, 0x01, 0xD1, 0xD7, 0xE0, 0x09, 0x42, 0x27, 0x02, 0x00, 0x23, + 0x51, 0x62, 0x55, 0x0A, 0x0A, 0x0B, 0x00, 0x04, 0xFC, 0x25, 0x15, 0x53, 0x08, 0x24, 0x1F, 0x54, + 0x0A, 0x00, 0x04, 0x11, 0x5F, 0x8B, 0x25, 0x55, 0xFE, 0xFC, 0xFC, 0xD1, 0x60, 0xC6, 0x0A, 0xAF, + 0x1E, 0x50, 0x50, 0x50, 0xFE, 0xFF, 0x8A, 0x50, 0x50, 0x43, 0x3C, 0x00, 0x0B, 0x01, 0x35, 0x11, + 0x03, 0x9F, 0x43, 0x53, 0x05, 0x05, 0x07, 0x00, 0xFC, 0xB8, 0x23, 0x10, 0x2C, 0x78, 0x1E, 0x02, + 0x05, 0x00, 0x00, 0x97, 0x04, 0xD0, 0x1D, 0x00, 0x22, 0xDA, 0xD5, 0x00, 0x00, 0xC4, 0xDF, 0x31, + 0x00, 0x00, 0x21, 0x3C, 0x4E, 0x40, 0x08, 0x07, 0x04, 0x01, 0xAE, 0x00, 0x20, 0x30, 0x48, 0x01, + 0x00, 0x12, 0x0B, 0x93, 0x0C, 0x13, 0x24, 0x07, 0x00, 0x02, 0x89, 0x42, 0x41, 0x01, 0x05, 0x04, + 0x03, 0x6B, 0x03, 0x08, 0x90, 0x07, 0x37, 0x0A, 0x09, 0x13, 0x34, 0x0A, 0x22, 0xC6, 0xFC, 0x01, + 0x05, 0x23, 0x16, 0xFE, 0x87, 0x69, 0x14, 0x5D, 0xBE, 0x65, 0x13, 0xA7, 0x55, 0x20, 0x23, 0x04, + 0xEE, 0x5B, 0x6A, 0x14, 0x3B, 0x8B, 0x65, 0x14, 0x86, 0xBB, 0x80, 0x13, 0xD0, 0x2F, 0x6B, 0x14, + 0x1B, 0x06, 0x14, 0x43, 0x64, 0xFF, 0xE4, 0x01, 0xD9, 0x18, 0x02, 0x31, 0x15, 0x23, 0x06, 0xF3, + 0x12, 0x54, 0x10, 0x43, 0x59, 0x04, 0x02, 0x02, 0x4A, 0x14, 0xBB, 0x51, 0x7B, 0x02, 0x3F, 0x91, + 0x14, 0x22, 0xCF, 0x17, 0x13, 0x6B, 0x26, 0x12, 0x44, 0x00, 0xB5, 0xFF, 0x93, 0xFF, 0x65, 0x03, + 0xCE, 0x0C, 0x23, 0x0C, 0x0B, 0x40, 0x04, 0xB3, 0x02, 0x66, 0xC7, 0xF2, 0xF8, 0xD5, 0x84, 0x0D, + 0x00, 0x00, 0x01, 0x6C, 0x1E, 0x20, 0xD5, 0x10, 0x6C, 0x18, 0x40, 0xFD, 0x7D, 0x63, 0xE8, 0x78, + 0x18, 0x11, 0xAC, 0xE2, 0x0E, 0x40, 0x66, 0xFF, 0xFF, 0xEC, 0x8D, 0x1A, 0x12, 0x79, 0xED, 0x63, + 0x21, 0x1E, 0xEC, 0x18, 0x19, 0x00, 0xC0, 0x59, 0x21, 0x30, 0xEC, 0x17, 0x21, 0x1F, 0x30, 0x0B, + 0x00, 0x36, 0x04, 0x58, 0x00, 0x11, 0xDC, 0x07, 0x21, 0x00, 0xC8, 0x17, 0x21, 0x1F, 0xAC, 0x49, + 0x12, 0x10, 0x72, 0x17, 0x64, 0x00, 0x95, 0x19, 0x30, 0x7C, 0x62, 0xEB, 0xEE, 0x06, 0x13, 0x01, + 0xA2, 0xE8, 0xB2, 0xD4, 0x0F, 0x00, 0x00, 0x02, 0x63, 0xC8, 0xF5, 0xFB, 0xD8, 0x84, 0xB5, 0x15, + 0x33, 0x0C, 0x07, 0x13, 0x51, 0x05, 0x70, 0x02, 0x84, 0xFC, 0xFC, 0x86, 0x01, 0x47, 0xA7, 0x1D, + 0x12, 0x88, 0xFE, 0x18, 0x21, 0x88, 0xEC, 0x48, 0x1E, 0x52, 0x88, 0x8E, 0x5B, 0x1A, 0xCC, 0x8D, + 0x11, 0x0F, 0x07, 0x00, 0x4F, 0x05, 0x6C, 0x01, 0x85, 0x01, 0x5D, 0xC2, 0xEF, 0xFA, 0xDF, 0x9B, + 0x20, 0x2D, 0x22, 0x31, 0xFF, 0xF0, 0x2C, 0xED, 0x00, 0x30, 0x9A, 0x5D, 0xD3, 0xCE, 0x19, 0x11, + 0x8D, 0xC9, 0x34, 0x00, 0x38, 0x20, 0x21, 0x15, 0xB7, 0xDE, 0x1D, 0x00, 0xC2, 0x17, 0x21, 0x39, + 0xC7, 0x55, 0x0F, 0x00, 0x41, 0x10, 0x52, 0x3A, 0x39, 0x48, 0x48, 0x24, 0xFE, 0x29, 0x01, 0xCE, + 0x23, 0x01, 0x0E, 0xF1, 0x16, 0xD0, 0x4F, 0x1E, 0x02, 0x76, 0xD9, 0x51, 0x2C, 0xFB, 0xFF, 0xFF, + 0xBF, 0x71, 0x00, 0x65, 0x03, 0xC7, 0xFF, 0xFF, 0xF4, 0x22, 0x52, 0x17, 0x02, 0xFF, 0x7C, 0x73, + 0x1C, 0xF2, 0xFF, 0xFF, 0xBD, 0x02, 0x00, 0x9F, 0x82, 0x25, 0xF3, 0x20, 0xC0, 0xF0, 0x02, 0x0A, + 0x09, 0x22, 0x10, 0xE6, 0x7C, 0x53, 0x03, 0xAF, 0x1B, 0x10, 0x67, 0x0B, 0x03, 0x14, 0x36, 0x93, + 0x0E, 0x00, 0x3B, 0x13, 0x07, 0x0B, 0x00, 0x27, 0x00, 0x00, 0x44, 0x0A, 0x70, 0x0B, 0x7B, 0xD0, + 0xF5, 0xF7, 0xD6, 0x89, 0x0F, 0x00, 0x13, 0x0D, 0x2A, 0x10, 0x21, 0xE2, 0x1B, 0x5C, 0x4B, 0x41, + 0xF1, 0x6B, 0x67, 0xE4, 0x71, 0x1F, 0x11, 0xDE, 0xCA, 0x00, 0x62, 0x64, 0xFF, 0xFF, 0xF7, 0x03, + 0x04, 0x88, 0x21, 0x00, 0xA0, 0x22, 0x62, 0x1C, 0x07, 0xC8, 0xC8, 0xC8, 0x3C, 0x1C, 0x42, 0x03, + 0x13, 0x81, 0x25, 0x00, 0x73, 0x03, 0x80, 0x35, 0x47, 0x78, 0xF0, 0x95, 0x72, 0x65, 0xF4, 0xFF, + 0xFF, 0xE9, 0x44, 0x00, 0x0C, 0x00, 0x24, 0xFF, 0xA9, 0x32, 0xAE, 0x27, 0x37, 0xE1, 0x7F, 0x51, + 0x10, 0x6F, 0x6A, 0x23, 0x52, 0x02, 0x28, 0x28, 0x28, 0x0C, 0x3F, 0x02, 0x22, 0x12, 0x08, 0xA2, + 0x1F, 0x00, 0x11, 0x22, 0x10, 0x1E, 0xB9, 0x9B, 0x12, 0x6A, 0xC6, 0x19, 0x10, 0x0A, 0xB2, 0x1F, + 0x20, 0xB6, 0x03, 0x1C, 0x06, 0x12, 0xDB, 0x37, 0x16, 0x22, 0xDF, 0xD3, 0x84, 0x1E, 0x13, 0x09, + 0x76, 0x23, 0x10, 0xD6, 0xBD, 0x11, 0x88, 0x0A, 0x7E, 0xD3, 0xF8, 0xFB, 0xD8, 0x87, 0x0E, 0xEC, + 0x00, 0x00, 0x80, 0x0A, 0x33, 0xFC, 0xFC, 0xFC, 0x74, 0x1C, 0x26, 0x03, 0xDD, 0x81, 0x14, 0x17, + 0x53, 0x8D, 0x14, 0x34, 0xC6, 0xFF, 0xF9, 0x0C, 0x00, 0x44, 0x3A, 0xFF, 0xFF, 0xAA, 0x0C, 0x00, + 0x43, 0xAD, 0xFF, 0xDB, 0x71, 0x0C, 0x00, 0x53, 0x23, 0xFE, 0xFF, 0x7D, 0x70, 0x0C, 0x00, 0x43, + 0x93, 0xFF, 0xFF, 0x21, 0x0C, 0x00, 0x53, 0x12, 0xF5, 0xFF, 0xC1, 0x00, 0x0C, 0x00, 0x10, 0x7A, + 0x45, 0x18, 0x02, 0x0C, 0x00, 0x20, 0x07, 0xE7, 0x4F, 0x63, 0x02, 0x0C, 0x00, 0xC7, 0x24, 0xFF, + 0xFF, 0xF2, 0xBC, 0xBC, 0xDA, 0xFF, 0xFF, 0xEC, 0xBC, 0x88, 0x26, 0x6D, 0x18, 0xB8, 0x0C, 0x00, + 0x11, 0x01, 0xB3, 0x04, 0x65, 0x73, 0xFF, 0xFF, 0xB6, 0x04, 0x03, 0x35, 0x09, 0x05, 0xBE, 0x1B, + 0x0F, 0x0C, 0x00, 0x0B, 0x04, 0xB4, 0x02, 0x04, 0xEB, 0xD7, 0x26, 0xFC, 0x6F, 0x8B, 0xE4, 0x36, + 0x70, 0x00, 0x6E, 0x0B, 0x00, 0x43, 0x72, 0xFF, 0xFF, 0x70, 0x0F, 0x49, 0x16, 0x76, 0x98, 0x18, + 0x16, 0x7A, 0x49, 0x74, 0x96, 0x7E, 0xFF, 0xFF, 0x87, 0xC4, 0xF6, 0xEE, 0xB3, 0x2C, 0x48, 0x7B, + 0x20, 0xF1, 0x23, 0x01, 0x17, 0x40, 0xFC, 0x80, 0x61, 0xE0, 0xF4, 0x56, 0x11, 0x8A, 0x22, 0x1B, + 0x10, 0x51, 0xD8, 0xA9, 0x75, 0x0B, 0x14, 0x14, 0x07, 0x00, 0x00, 0x1E, 0xE0, 0x02, 0x26, 0x00, + 0x10, 0xD7, 0x2F, 0x00, 0xD6, 0x20, 0x52, 0x2C, 0xA1, 0xC0, 0xC0, 0x55, 0xFE, 0x82, 0x21, 0x20, + 0xC7, 0xA6, 0x21, 0x61, 0x1B, 0xFF, 0xFF, 0xFB, 0x07, 0xA3, 0x6F, 0x20, 0x10, 0x4E, 0x58, 0x0A, + 0x70, 0x52, 0xFF, 0xFF, 0xFE, 0x77, 0x56, 0xD8, 0x74, 0x0A, 0x13, 0x03, 0x34, 0x35, 0xCA, 0xCE, + 0x07, 0x00, 0x00, 0x09, 0x85, 0xD5, 0xF8, 0xFB, 0xD8, 0x85, 0x0B, 0xFC, 0x04, 0x86, 0x00, 0x42, + 0xB8, 0xED, 0xFA, 0xE3, 0xA8, 0x32, 0x47, 0x19, 0xF1, 0x00, 0xFA, 0x44, 0x00, 0x15, 0xF5, 0xFF, + 0xFF, 0x9F, 0x59, 0xC1, 0xFF, 0xFF, 0xD6, 0x01, 0x68, 0x59, 0x5C, 0x00, 0x7D, 0x24, 0x21, 0x1A, + 0xA0, 0xA9, 0xEF, 0x66, 0x06, 0xB0, 0xB0, 0xB0, 0x23, 0xBD, 0xB4, 0x19, 0x16, 0xC7, 0x00, 0x17, + 0x91, 0xC8, 0xFF, 0xFF, 0x9D, 0x9C, 0xEB, 0xF7, 0xCB, 0x55, 0x0B, 0x00, 0x13, 0xFE, 0x75, 0x7A, + 0x00, 0x0D, 0x2E, 0x81, 0x8C, 0x5B, 0xCE, 0xFF, 0xFF, 0xE1, 0x02, 0xC8, 0x92, 0x5C, 0x00, 0x09, + 0x5F, 0x21, 0x2B, 0xC8, 0x37, 0x00, 0x00, 0x32, 0xA9, 0x12, 0x4E, 0x0B, 0x00, 0x62, 0x00, 0xFB, + 0xFF, 0xFF, 0x5B, 0xC2, 0x69, 0x20, 0x51, 0xFB, 0xFF, 0xFF, 0x50, 0xA8, 0x49, 0x17, 0x00, 0xF2, + 0x00, 0x21, 0x31, 0x6C, 0x27, 0x63, 0x10, 0x41, 0x9A, 0x69, 0x71, 0x13, 0xF3, 0xFF, 0xFF, 0x9B, + 0x54, 0xD2, 0x27, 0x00, 0x12, 0x5A, 0x62, 0x00, 0x10, 0xDC, 0xAD, 0x78, 0x62, 0x3E, 0xBA, 0xEF, + 0xFD, 0xDD, 0x96, 0x5C, 0x6C, 0x48, 0x0C, 0x0A, 0x13, 0x00, 0xA8, 0x2A, 0x25, 0xFC, 0x5B, 0x32, + 0x54, 0x20, 0x5B, 0x04, 0x20, 0x63, 0x24, 0x54, 0xFD, 0xB8, 0x50, 0x15, 0x31, 0x16, 0xF7, 0x15, + 0x6B, 0xD4, 0x44, 0x15, 0xA5, 0x14, 0x26, 0x13, 0xDF, 0x86, 0xE0, 0x24, 0x00, 0x1A, 0xA8, 0x80, + 0x25, 0x00, 0x53, 0xA1, 0x22, 0x15, 0x8D, 0xE9, 0x17, 0x14, 0xC7, 0x11, 0x18, 0x00, 0xC4, 0xD9, + 0x14, 0x31, 0x80, 0x78, 0x24, 0xF4, 0x04, 0x0F, 0x41, 0x15, 0xBE, 0x42, 0xD6, 0x02, 0xED, 0x20, + 0x24, 0x01, 0xE9, 0x50, 0x14, 0x15, 0x23, 0xB6, 0xFA, 0x15, 0x5D, 0x83, 0x17, 0x15, 0x97, 0x78, + 0x27, 0x06, 0x58, 0x04, 0x70, 0x07, 0x75, 0xCF, 0xF5, 0xF6, 0xCF, 0x75, 0xA1, 0x07, 0x13, 0x03, + 0x73, 0x14, 0x21, 0xB8, 0x02, 0x88, 0x92, 0x41, 0xF8, 0x74, 0x75, 0xFA, 0x8F, 0x14, 0x11, 0xA5, + 0x3C, 0x45, 0x11, 0xA2, 0x40, 0x26, 0x11, 0xC2, 0x4D, 0x06, 0x11, 0x75, 0xD3, 0x09, 0x11, 0xB4, + 0xB1, 0x06, 0x11, 0x7D, 0xDF, 0x71, 0x11, 0x79, 0xF5, 0x1D, 0x11, 0xB0, 0xE2, 0x0A, 0x90, 0x14, + 0xEB, 0xFF, 0xFD, 0x74, 0x72, 0xFE, 0xFF, 0xEC, 0x64, 0x00, 0x11, 0x37, 0x84, 0x1F, 0x10, 0xF8, + 0xAF, 0x08, 0x13, 0x04, 0x43, 0x1C, 0x21, 0xA2, 0x03, 0x14, 0x01, 0x41, 0xDD, 0x28, 0x27, 0xDE, + 0x86, 0x19, 0x11, 0xD0, 0x1D, 0x05, 0x10, 0x6B, 0x64, 0x1A, 0x21, 0x06, 0xFD, 0x3F, 0x7C, 0x62, + 0x3B, 0xFF, 0xFF, 0xFC, 0x05, 0x0E, 0xD0, 0x15, 0x00, 0x15, 0x25, 0x31, 0x0F, 0x02, 0xF9, 0x2C, + 0x61, 0x71, 0x3B, 0xFF, 0xFF, 0xFA, 0x02, 0x00, 0xCE, 0xB4, 0x85, 0x11, 0x73, 0x36, 0x71, 0x71, + 0x75, 0xFF, 0xFF, 0xEE, 0x66, 0x64, 0xEF, 0x58, 0x26, 0x13, 0x09, 0x1C, 0x30, 0x10, 0xCD, 0x88, + 0x02, 0x88, 0x09, 0x7D, 0xD3, 0xF9, 0xF9, 0xD5, 0x81, 0x0B, 0x20, 0x06, 0xA3, 0x65, 0xC7, 0xF3, + 0xF6, 0xCC, 0x70, 0x04, 0x00, 0x00, 0x01, 0xB1, 0x63, 0x20, 0xB2, 0x03, 0x88, 0x86, 0x40, 0xFB, + 0x76, 0x6C, 0xF1, 0xFB, 0x0E, 0x11, 0xA8, 0x75, 0x0C, 0x10, 0x7C, 0xE8, 0x02, 0x11, 0xDC, 0x1F, + 0x0C, 0x10, 0x45, 0xBE, 0x82, 0x11, 0xF7, 0xD0, 0x14, 0x00, 0x6D, 0xC0, 0x21, 0x1E, 0xF8, 0x8F, + 0x15, 0x00, 0x55, 0x1F, 0x21, 0x24, 0xE3, 0x3F, 0x07, 0x00, 0x16, 0x00, 0x70, 0x24, 0xAC, 0xFF, + 0xFF, 0xD9, 0x1B, 0x10, 0x64, 0x31, 0x27, 0x24, 0x42, 0xBC, 0x1B, 0x62, 0x6D, 0xF6, 0xFF, 0xFF, + 0xFE, 0xAE, 0xC7, 0x1B, 0x56, 0x0F, 0x41, 0x4A, 0x1C, 0x38, 0x51, 0x66, 0x00, 0xE4, 0x07, 0x52, + 0x23, 0x1F, 0x24, 0x24, 0x0F, 0x07, 0x87, 0x21, 0x19, 0xD2, 0x7F, 0x22, 0x10, 0x62, 0x47, 0x51, + 0x11, 0xB0, 0xFB, 0x01, 0x10, 0xA5, 0x9F, 0x4B, 0x00, 0xEA, 0x23, 0x21, 0xB4, 0xAE, 0xA9, 0x1A, + 0x13, 0x05, 0xC4, 0x3B, 0xC3, 0xC4, 0x04, 0x00, 0x00, 0x0A, 0x7C, 0xD3, 0xF8, 0xFA, 0xD6, 0x7E, + 0x09, 0x00, 0x11, 0x32, 0x0C, 0x01, 0x01, 0xD9, 0xE5, 0x50, 0xA2, 0x84, 0xFF, 0xFF, 0xA4, 0x04, + 0x00, 0x24, 0x03, 0x04, 0x90, 0x04, 0x06, 0x01, 0x00, 0x0C, 0x20, 0x00, 0x52, 0x06, 0x04, 0x10, + 0x01, 0xFE, 0xE4, 0x10, 0x50, 0x9E, 0x8C, 0xFF, 0xFF, 0xA0, 0x04, 0x00, 0x0F, 0x38, 0x00, 0x01, + 0x03, 0x6C, 0x4C, 0x50, 0xAE, 0x88, 0xFF, 0xFF, 0xB0, 0x04, 0x00, 0xF7, 0x04, 0x03, 0x04, 0xE3, + 0xAB, 0x00, 0x53, 0xFF, 0x7D, 0x46, 0xFF, 0xF1, 0x21, 0x0E, 0x70, 0x1E, 0x00, 0x09, 0x08, 0x0E, + 0xC6, 0x13, 0x13, 0x00, 0x0C, 0x67, 0x11, 0x45, 0xCC, 0x2D, 0x21, 0x0A, 0x92, 0x66, 0x28, 0x20, + 0x33, 0xD7, 0x01, 0x06, 0xE0, 0x04, 0x7C, 0xFB, 0xFF, 0xFF, 0xC8, 0x24, 0x18, 0xC6, 0xFF, 0xFF, + 0xFC, 0x7F, 0x04, 0x21, 0x06, 0x22, 0xDC, 0x39, 0xEF, 0x1F, 0x10, 0x99, 0x66, 0x06, 0x50, 0x32, + 0xFB, 0xFF, 0xFF, 0xD1, 0x6F, 0x7A, 0xB4, 0x32, 0xD6, 0xFF, 0xFF, 0xF7, 0x6C, 0x01, 0x00, 0x00, + 0x09, 0x8F, 0x18, 0x41, 0x23, 0x43, 0xE3, 0xAE, 0x28, 0x24, 0x10, 0xA4, 0xB9, 0xFB, 0x41, 0x42, + 0x0A, 0x08, 0x08, 0x4C, 0x0A, 0x11, 0x2C, 0x4C, 0x0A, 0x23, 0x48, 0x42, 0xD0, 0x01, 0x14, 0xE8, + 0x08, 0x00, 0x04, 0xD8, 0x4C, 0x0F, 0x20, 0x00, 0x0D, 0x56, 0x09, 0x08, 0x0E, 0x01, 0x01, 0xB9, + 0x00, 0x43, 0x00, 0x9E, 0x6B, 0x01, 0x5C, 0x26, 0x23, 0xB9, 0x1B, 0xEC, 0x27, 0x21, 0xEE, 0x57, + 0x7B, 0x00, 0x00, 0xF2, 0x60, 0x00, 0x4E, 0x0A, 0x50, 0x58, 0xEF, 0xFF, 0xFF, 0xE4, 0xBB, 0x00, + 0x22, 0x1D, 0xBD, 0x56, 0x0C, 0x30, 0x01, 0x68, 0xFE, 0x08, 0x00, 0x21, 0x14, 0xAF, 0x72, 0x23, + 0x21, 0x45, 0xE6, 0x32, 0x00, 0x00, 0x0A, 0x1A, 0x20, 0xB8, 0x1B, 0x48, 0x00, 0x20, 0xF5, 0x69, + 0x52, 0x00, 0x22, 0xA8, 0xC8, 0x9B, 0x0E, 0x34, 0x3E, 0x04, 0x00, 0x48, 0x04, 0x02, 0x69, 0x00, + 0xB4, 0x22, 0x9D, 0xE0, 0xFA, 0xEF, 0xC3, 0x63, 0x03, 0x00, 0x2C, 0xF2, 0x78, 0xA8, 0xB1, 0xB0, + 0xFF, 0xFF, 0xD3, 0x5E, 0x85, 0xFD, 0xFF, 0xFF, 0x56, 0xE5, 0xA4, 0x18, 0x51, 0x9B, 0xFF, 0xFF, + 0xAB, 0xDE, 0x6F, 0x82, 0x81, 0x6F, 0xFF, 0xFF, 0xCD, 0x9A, 0xA9, 0x76, 0x1E, 0xE0, 0x17, 0x02, + 0x53, 0x04, 0x00, 0x3A, 0x11, 0x15, 0x91, 0x33, 0x94, 0x01, 0x8B, 0x1F, 0x23, 0x14, 0xE3, 0xE7, + 0x03, 0x50, 0x07, 0xBF, 0xFF, 0xFF, 0xD5, 0xB4, 0x09, 0x63, 0x09, 0xB5, 0xFF, 0xFF, 0xDF, 0x1E, + 0x39, 0x06, 0x24, 0xD6, 0x1D, 0x50, 0x56, 0x2B, 0x74, 0x00, 0x0A, 0x00, 0x3D, 0x1E, 0x3C, 0x3C, + 0x0F, 0xE6, 0x15, 0x9A, 0x2F, 0xE8, 0x15, 0x9C, 0x51, 0x1D, 0x06, 0x0A, 0x00, 0x24, 0x16, 0x15, + 0x14, 0x0E, 0x01, 0x7A, 0x0B, 0x96, 0x4B, 0x95, 0xC2, 0xEB, 0xFA, 0xF5, 0xD4, 0xA5, 0x51, 0x1D, + 0x40, 0x16, 0x4E, 0xC6, 0xBA, 0x13, 0xCF, 0x2A, 0x20, 0x10, 0x08, 0x42, 0x29, 0xA1, 0xD7, 0x93, + 0x64, 0x53, 0x61, 0x89, 0xD6, 0xFF, 0xFF, 0xF5, 0x54, 0x21, 0x20, 0x03, 0xB1, 0x04, 0xD2, 0x03, + 0x34, 0x0B, 0x52, 0x5B, 0xF3, 0xFF, 0xE6, 0x13, 0x39, 0x05, 0x16, 0xCC, 0xD4, 0x71, 0x20, 0x42, + 0xFD, 0xC9, 0x06, 0xF0, 0x02, 0x18, 0xF1, 0xFF, 0xEC, 0x19, 0x00, 0x00, 0x18, 0x99, 0xE5, 0xE9, + 0x5F, 0xF6, 0xFC, 0x87, 0x00, 0x97, 0xD1, 0x77, 0x11, 0x83, 0x06, 0x29, 0x24, 0x2A, 0xE7, 0x71, + 0x1D, 0xF0, 0x02, 0x32, 0xFF, 0xFF, 0x3D, 0x01, 0xE0, 0xFF, 0xEC, 0x07, 0x00, 0x07, 0xD6, 0xFF, + 0xFF, 0xCE, 0x62, 0xBB, 0xC9, 0x56, 0x51, 0x01, 0xF1, 0xFF, 0x68, 0x21, 0x19, 0x21, 0x71, 0x6C, + 0xFF, 0xFF, 0xCB, 0x08, 0x00, 0xAD, 0xF3, 0x63, 0x41, 0xD6, 0xFF, 0x7D, 0x51, 0x17, 0x24, 0x11, + 0xD5, 0xF5, 0x17, 0x40, 0xD1, 0xFF, 0xF2, 0x01, 0x79, 0x28, 0x20, 0x7F, 0x7E, 0xC8, 0x05, 0x11, + 0x1F, 0xAC, 0x89, 0x21, 0x01, 0xF5, 0x61, 0x25, 0x40, 0xE0, 0xFF, 0x6A, 0x95, 0x5C, 0x57, 0x11, + 0x4B, 0x53, 0x6F, 0x11, 0x19, 0x06, 0x00, 0x50, 0x0E, 0xFF, 0xFF, 0x3E, 0x9E, 0x86, 0x1A, 0x11, + 0x5B, 0x51, 0x0A, 0x11, 0x3D, 0x82, 0x09, 0x50, 0x51, 0xFF, 0xF0, 0x08, 0x94, 0xA2, 0xBF, 0x11, + 0x48, 0xEC, 0x07, 0x10, 0x7C, 0xB9, 0x11, 0x40, 0x02, 0xC7, 0xFF, 0x91, 0x71, 0x17, 0x10, 0x39, + 0x39, 0x95, 0xC0, 0xFB, 0x68, 0x6A, 0xF5, 0xFF, 0xFF, 0x4F, 0x01, 0x80, 0xFF, 0xE7, 0x15, 0x58, + 0x07, 0x13, 0x7B, 0x48, 0x2D, 0xF3, 0x0D, 0xA5, 0xFB, 0xFF, 0xD8, 0xD8, 0xFF, 0xEF, 0x3A, 0x00, + 0x00, 0x0A, 0xF6, 0xFF, 0xDD, 0x06, 0x00, 0x04, 0x81, 0xDC, 0xEC, 0x9A, 0x08, 0x5B, 0xDB, 0xFF, + 0xE5, 0x9D, 0x1D, 0x16, 0x80, 0x06, 0xBB, 0x2C, 0x04, 0x63, 0x01, 0x5D, 0x14, 0xED, 0xFF, 0xFF, + 0x80, 0x26, 0xED, 0xD5, 0x40, 0xF5, 0xFF, 0xFF, 0xDA, 0x7A, 0x39, 0x13, 0x03, 0x09, 0x26, 0x4B, + 0x7D, 0xA5, 0xDF, 0x08, 0x00, 0x62, 0x06, 0x51, 0x8A, 0x32, 0x04, 0x5B, 0xB9, 0x3F, 0x1A, 0x29, + 0xF5, 0xC8, 0x2F, 0x73, 0x66, 0x04, 0x25, 0x44, 0x4A, 0x3E, 0x1C, 0x70, 0xF4, 0x16, 0x0D, 0xA0, + 0x09, 0x44, 0xB4, 0xFC, 0xFC, 0xFC, 0xF8, 0x21, 0x01, 0xD7, 0x8B, 0x18, 0x67, 0x4F, 0x73, 0x18, + 0x9C, 0xF2, 0x1D, 0x04, 0xDB, 0x76, 0x10, 0x8B, 0x9F, 0x24, 0x25, 0xFC, 0x0A, 0x29, 0x1A, 0x14, + 0xA6, 0xAD, 0xAF, 0x54, 0x03, 0xF3, 0xFF, 0xEA, 0x64, 0x90, 0x00, 0x54, 0x2A, 0xFF, 0xFF, 0xBD, + 0x38, 0x3F, 0x2A, 0x54, 0x5F, 0xFF, 0xFF, 0x91, 0x0D, 0xBE, 0x06, 0x10, 0x95, 0xD9, 0x01, 0x13, + 0xDF, 0xC8, 0xFE, 0x10, 0xCA, 0x27, 0x06, 0x12, 0xB3, 0xC5, 0x19, 0x20, 0x06, 0xF9, 0x99, 0x2A, + 0x12, 0x87, 0x24, 0x25, 0x11, 0x34, 0x4A, 0xDE, 0x12, 0xFE, 0x0B, 0x20, 0x17, 0x69, 0x32, 0x6C, + 0x00, 0x33, 0x4D, 0x51, 0xAC, 0x50, 0x50, 0x52, 0xFD, 0xFD, 0x08, 0x12, 0xD3, 0x4C, 0x09, 0x10, + 0xDA, 0x86, 0x07, 0x22, 0x0B, 0xFD, 0xD2, 0x77, 0x10, 0xAF, 0xE5, 0x0A, 0x13, 0x3D, 0x32, 0x59, + 0x10, 0x85, 0xAF, 0x12, 0x13, 0x72, 0x55, 0x2E, 0x11, 0x5A, 0xAC, 0x25, 0x13, 0x0D, 0x14, 0x12, + 0x11, 0x8A, 0x7B, 0x9E, 0x47, 0xE9, 0xC2, 0x6B, 0x08, 0x13, 0xD5, 0x21, 0xCA, 0x0A, 0x0C, 0x00, + 0x40, 0x51, 0x5B, 0x8B, 0xF5, 0xCE, 0x2A, 0x12, 0x8C, 0x0E, 0xBE, 0x10, 0x6A, 0x77, 0x79, 0x03, + 0x0C, 0x00, 0x10, 0x33, 0xEB, 0x85, 0x03, 0x0C, 0x00, 0x10, 0x3B, 0x13, 0x05, 0x03, 0x0C, 0x00, + 0x10, 0x7C, 0xAE, 0x03, 0x00, 0x0C, 0x00, 0x75, 0x48, 0x50, 0x85, 0xF6, 0xFF, 0xF7, 0x2F, 0x54, + 0x00, 0x27, 0xC5, 0x2B, 0x60, 0x00, 0x21, 0xC3, 0x1B, 0x0C, 0x00, 0x83, 0x04, 0x0C, 0x44, 0xD8, + 0xFF, 0xFF, 0xCA, 0x01, 0x3C, 0x00, 0x00, 0xAE, 0x00, 0x13, 0x34, 0x0C, 0x00, 0x00, 0x3B, 0xE6, + 0x13, 0x6A, 0x0C, 0x00, 0x00, 0xF1, 0x1C, 0x13, 0x7A, 0x0C, 0x00, 0x53, 0x09, 0xFB, 0xFF, 0xFF, + 0x69, 0x0C, 0x00, 0x00, 0x7E, 0x23, 0x11, 0x3A, 0x6C, 0x00, 0x30, 0x4D, 0x78, 0xEA, 0x3F, 0x43, + 0x05, 0x60, 0x00, 0x23, 0xF2, 0x38, 0x6C, 0x00, 0x75, 0xFB, 0xDB, 0x95, 0x1E, 0x00, 0x00, 0x0D, + 0xC4, 0x09, 0x86, 0x48, 0xB2, 0xE4, 0xFA, 0xF0, 0xC8, 0x74, 0x07, 0xFA, 0x2B, 0x20, 0xC4, 0x06, + 0x14, 0x2A, 0xC1, 0xAC, 0x56, 0x72, 0xF7, 0xFF, 0xFF, 0x67, 0x89, 0xFF, 0xFF, 0xEC, 0x05, 0x5D, + 0x01, 0x22, 0xBC, 0xBE, 0xA2, 0x2A, 0x52, 0x83, 0xFF, 0xFF, 0xE1, 0xD5, 0x9A, 0x1C, 0x52, 0x7D, + 0xFF, 0xFF, 0xEC, 0xDC, 0x1F, 0x20, 0x43, 0x6B, 0xDC, 0xDC, 0xCB, 0x0B, 0x00, 0x03, 0x07, 0x3B, + 0x0F, 0x0B, 0x00, 0x12, 0x43, 0x10, 0x20, 0x20, 0x1E, 0x0B, 0x00, 0x55, 0x7C, 0xFF, 0xFF, 0xEC, + 0xD6, 0x58, 0x00, 0x22, 0xEA, 0xBF, 0xB8, 0x23, 0x91, 0x83, 0xFF, 0xFF, 0xDC, 0x8A, 0xFF, 0xFF, + 0xF1, 0x06, 0xBE, 0x5A, 0x20, 0xB2, 0x2D, 0xFA, 0x01, 0x30, 0x50, 0x74, 0xFB, 0x1D, 0x0A, 0x04, + 0x61, 0x26, 0x00, 0x69, 0x13, 0x71, 0x48, 0xB8, 0xE8, 0xFE, 0xF4, 0xCF, 0x75, 0xD1, 0x0C, 0x09, + 0xC8, 0x01, 0x57, 0xF9, 0xE3, 0xBD, 0x6A, 0x05, 0x68, 0x01, 0x21, 0xC8, 0x0B, 0x0C, 0x00, 0x31, + 0x50, 0x58, 0x98, 0x6D, 0x1D, 0x03, 0x38, 0x01, 0x10, 0xB3, 0x73, 0x12, 0x03, 0x0C, 0x00, 0x00, + 0x72, 0x29, 0x13, 0x08, 0x0C, 0x00, 0x00, 0x80, 0x16, 0x13, 0x1D, 0x0C, 0x00, 0x00, 0x68, 0x16, + 0x1F, 0x20, 0x0C, 0x00, 0x30, 0x17, 0x79, 0x0C, 0x00, 0x00, 0x71, 0x1F, 0x13, 0x1A, 0x0C, 0x00, + 0x10, 0x86, 0x99, 0x16, 0x03, 0x0C, 0x00, 0x10, 0xB9, 0x56, 0x31, 0x01, 0xC8, 0x01, 0x21, 0x52, + 0x99, 0xBC, 0x2A, 0x05, 0xC0, 0x00, 0x22, 0xBD, 0x06, 0x0C, 0x00, 0x40, 0xFE, 0xE7, 0xC1, 0x68, + 0x2D, 0x08, 0x17, 0x09, 0xEC, 0x00, 0x44, 0xFC, 0xFC, 0xFC, 0x96, 0x29, 0x00, 0x11, 0x98, 0xE6, + 0x00, 0x44, 0x50, 0x50, 0x50, 0x30, 0x33, 0x02, 0x1F, 0x00, 0x09, 0x00, 0x0C, 0x44, 0x48, 0x48, + 0x48, 0x2D, 0x68, 0x00, 0x1A, 0xA0, 0x09, 0x00, 0x00, 0x8E, 0xF3, 0x0E, 0x3F, 0x00, 0x0F, 0x51, + 0x00, 0x10, 0x24, 0x48, 0x2F, 0x90, 0x00, 0x15, 0xA4, 0x09, 0x00, 0x0D, 0xB4, 0x00, 0x14, 0x6F, + 0x1B, 0x00, 0x14, 0x70, 0xB4, 0x00, 0x1F, 0x23, 0x63, 0x00, 0x18, 0x14, 0x28, 0xAB, 0x00, 0x1A, + 0x8C, 0x09, 0x00, 0x0E, 0xB4, 0x00, 0x0F, 0x09, 0x00, 0x28, 0x05, 0x54, 0x02, 0xA7, 0x00, 0x00, + 0x48, 0xB3, 0xE4, 0xFA, 0xF1, 0xCE, 0x83, 0x11, 0x5F, 0x81, 0xB0, 0xDE, 0x14, 0x00, 0x23, 0xFD, + 0xFF, 0xFF, 0xB3, 0x58, 0x72, 0xEF, 0x3E, 0x16, 0x51, 0x82, 0xFF, 0xFF, 0xEE, 0x07, 0xC5, 0x02, + 0x32, 0xE1, 0x00, 0xB7, 0x88, 0x55, 0x00, 0x72, 0x9B, 0x22, 0x08, 0xD1, 0xDD, 0x02, 0x00, 0x0C, + 0x2B, 0x13, 0x10, 0xF4, 0x02, 0x57, 0x06, 0x10, 0x10, 0x10, 0x01, 0x16, 0x03, 0x1D, 0x00, 0x0C, + 0x00, 0x02, 0x3D, 0x3E, 0x12, 0x2C, 0x0C, 0x00, 0x02, 0x20, 0x2F, 0x01, 0x0C, 0x00, 0x35, 0x0A, + 0x50, 0x53, 0x0C, 0x00, 0x20, 0x00, 0x00, 0xF4, 0x93, 0x22, 0x2C, 0xD2, 0x48, 0x8A, 0x00, 0xA3, + 0xDE, 0x22, 0x2C, 0xB7, 0xFE, 0x27, 0x00, 0xAE, 0x05, 0x62, 0x2C, 0x80, 0xFF, 0xFF, 0xF7, 0x0C, + 0xDA, 0x1F, 0x71, 0x2C, 0x25, 0xFE, 0xFF, 0xFF, 0xB8, 0x53, 0xF8, 0xEE, 0x14, 0x2C, 0x46, 0x25, + 0x10, 0xB7, 0x0C, 0x00, 0xB4, 0x01, 0x56, 0xC0, 0xF1, 0xFD, 0xD5, 0x63, 0x33, 0xFF, 0xFF, 0x2C, + 0x1C, 0x17, 0x12, 0x82, 0x00, 0xBE, 0x00, 0xD6, 0x39, 0x22, 0x82, 0x84, 0x31, 0x15, 0x00, 0x77, + 0x10, 0x1F, 0x84, 0x0C, 0x00, 0x2D, 0x44, 0x4E, 0x48, 0x48, 0x4B, 0x0C, 0x00, 0x03, 0xAC, 0x06, + 0x0D, 0x0C, 0x00, 0x4E, 0x0C, 0x04, 0x04, 0x08, 0x6C, 0x00, 0x0F, 0x0C, 0x00, 0x3F, 0x44, 0x07, + 0x05, 0x13, 0x01, 0xB7, 0x29, 0x10, 0x0C, 0x14, 0x19, 0x0F, 0x05, 0x00, 0x43, 0x34, 0x00, 0x08, + 0x07, 0x5C, 0x07, 0x12, 0x30, 0xE4, 0x33, 0x00, 0xAF, 0x13, 0x0F, 0x07, 0x00, 0x02, 0x1F, 0x5A, + 0x07, 0x00, 0x08, 0x1F, 0x59, 0x07, 0x00, 0x01, 0x1C, 0x58, 0x07, 0x00, 0x12, 0x35, 0x85, 0x34, + 0x00, 0x7F, 0x2F, 0x30, 0x45, 0x5E, 0x9B, 0x77, 0x0A, 0x22, 0x19, 0xC8, 0x85, 0x4C, 0x6C, 0xC8, + 0xFF, 0xFA, 0xDD, 0x8B, 0x0B, 0x24, 0x05, 0x00, 0xAA, 0x19, 0x42, 0xFC, 0xFC, 0xEC, 0x0B, 0xEE, + 0x02, 0x24, 0x03, 0xDB, 0x42, 0x03, 0x01, 0x55, 0x10, 0x23, 0xFE, 0x21, 0x0C, 0x00, 0x11, 0xC5, + 0x07, 0x0E, 0x01, 0x12, 0x03, 0x12, 0x3A, 0x6B, 0x23, 0x01, 0x0C, 0x00, 0x52, 0xAD, 0xFF, 0xFF, + 0xD4, 0x01, 0x0C, 0x00, 0x00, 0x89, 0x2E, 0x13, 0x66, 0x36, 0x03, 0x53, 0x96, 0xFF, 0xFF, 0xEE, + 0x0B, 0x0C, 0x00, 0x13, 0xF6, 0x9F, 0x1B, 0x26, 0x8C, 0xFF, 0xCC, 0x2E, 0x00, 0x0C, 0x00, 0x13, + 0xB3, 0x03, 0x60, 0x00, 0x0C, 0x00, 0x22, 0x0E, 0xCF, 0x7A, 0x2A, 0x01, 0x72, 0x03, 0x12, 0x6D, + 0x40, 0x2A, 0x01, 0x0C, 0x00, 0x21, 0x13, 0xF9, 0x94, 0x0D, 0x02, 0x8A, 0x03, 0x11, 0xAB, 0xFB, + 0x1A, 0x02, 0x0C, 0x00, 0x11, 0x49, 0x42, 0x2A, 0x03, 0xB4, 0x00, 0x10, 0xE5, 0x7A, 0x86, 0x03, + 0xAE, 0x03, 0x00, 0x32, 0x13, 0x03, 0xCC, 0x00, 0x01, 0x94, 0x36, 0x18, 0x61, 0x70, 0x04, 0x0E, + 0x0D, 0x04, 0x0F, 0x09, 0x00, 0x6B, 0x5F, 0x6C, 0x6C, 0x6C, 0x6C, 0x46, 0x24, 0x05, 0x00, 0x22, + 0x10, 0x0E, 0xB4, 0x00, 0x52, 0x46, 0xFC, 0xFC, 0xFC, 0x79, 0xF3, 0x7B, 0x44, 0xFC, 0xFC, 0xA0, + 0x4B, 0x03, 0x29, 0x00, 0xE4, 0x14, 0x24, 0xA6, 0x4F, 0x5D, 0x8E, 0x00, 0x27, 0x26, 0x22, 0xAB, + 0x53, 0x5F, 0x8F, 0x02, 0xF3, 0x89, 0x24, 0xAF, 0x58, 0x65, 0x62, 0x00, 0x2B, 0x23, 0x23, 0xB4, + 0x5C, 0xD4, 0x3E, 0x01, 0x7F, 0xE6, 0x50, 0xB8, 0x60, 0xFF, 0xFF, 0xE7, 0x8E, 0x19, 0x70, 0x52, + 0xFF, 0xF4, 0xF6, 0xFF, 0xBC, 0x64, 0x12, 0x32, 0xD0, 0xF0, 0x02, 0x00, 0x8A, 0xFF, 0xBF, 0xEE, + 0xFF, 0xC1, 0x68, 0xFF, 0xFF, 0x6E, 0xFF, 0x16, 0xF0, 0x3E, 0xC1, 0xFF, 0x88, 0xEA, 0xFF, 0xC5, + 0x6D, 0xFF, 0xFF, 0x4A, 0xE9, 0xFF, 0x5C, 0x04, 0xF5, 0xFF, 0x50, 0xE5, 0xFF, 0xCA, 0x71, 0xFF, + 0xFF, 0x45, 0xB1, 0xFF, 0x92, 0x2F, 0xFF, 0xFF, 0x19, 0xE0, 0xFF, 0xCE, 0x75, 0xFF, 0xFF, 0x40, + 0x79, 0xFF, 0xC8, 0x66, 0xFF, 0xE1, 0x00, 0xDC, 0xFF, 0xD3, 0x79, 0xFF, 0xFF, 0x3C, 0x41, 0xFF, + 0xF8, 0xA2, 0xFF, 0xA9, 0x00, 0xD7, 0xFF, 0xD7, 0x7D, 0xFF, 0xFF, 0x38, 0x0D, 0xFD, 0xFF, 0xF6, + 0xFF, 0x72, 0x00, 0xD2, 0xFF, 0xDB, 0x82, 0xE7, 0x01, 0x11, 0xD1, 0xAE, 0x25, 0x40, 0xCE, 0xFF, + 0xE0, 0x86, 0xBA, 0x2F, 0xA0, 0x99, 0xFF, 0xFF, 0xFA, 0x09, 0x00, 0xC9, 0xFF, 0xE4, 0x8A, 0xA5, + 0x60, 0x11, 0x61, 0x53, 0x2C, 0x40, 0xC4, 0xFF, 0xE9, 0x8E, 0x81, 0x60, 0x11, 0x29, 0x6A, 0x0B, + 0x40, 0xC0, 0xFF, 0xED, 0x92, 0x1B, 0x1A, 0x20, 0x02, 0xEF, 0x7C, 0x8C, 0x36, 0xBB, 0xFF, 0xF2, + 0xB4, 0x08, 0x30, 0x8A, 0xFC, 0xF9, 0x85, 0x33, 0x52, 0x57, 0xFC, 0xFC, 0x92, 0x8C, 0x8E, 0x23, + 0x95, 0x58, 0xFF, 0xFF, 0x94, 0x8C, 0xFF, 0xFF, 0xEF, 0x0C, 0x0B, 0x00, 0x26, 0xFF, 0x6A, 0x0B, + 0x00, 0x25, 0xD9, 0x02, 0x0B, 0x00, 0x26, 0xFF, 0x4A, 0x0B, 0x00, 0x16, 0xBA, 0x0B, 0x00, 0x23, + 0xFF, 0x2B, 0x0B, 0x00, 0x43, 0xBC, 0xFF, 0xFF, 0x9A, 0x0B, 0x00, 0x52, 0x76, 0xD8, 0xFF, 0xF7, + 0x6C, 0x0B, 0x00, 0x53, 0x74, 0x6A, 0xFF, 0xFF, 0xD2, 0x0B, 0x00, 0x11, 0x0C, 0x4F, 0x24, 0x01, + 0x0B, 0x00, 0x26, 0x00, 0x8D, 0x0B, 0x00, 0x25, 0x21, 0xFD, 0x0B, 0x00, 0x26, 0x00, 0xAF, 0x0B, + 0x00, 0x16, 0x40, 0x0B, 0x00, 0x25, 0x01, 0xD1, 0x0B, 0x00, 0x26, 0x00, 0x63, 0x0B, 0x00, 0x49, + 0x09, 0xEC, 0xFF, 0x94, 0x60, 0x06, 0x87, 0x47, 0xB2, 0xE3, 0xFA, 0xF2, 0xCD, 0x80, 0x0E, 0xB9, + 0xBF, 0x21, 0xDD, 0x18, 0xA6, 0x33, 0x40, 0xAF, 0x58, 0x71, 0xF2, 0x92, 0x07, 0x11, 0x91, 0xE4, + 0x84, 0x00, 0x48, 0x08, 0x10, 0xF8, 0x0F, 0x62, 0x13, 0xC3, 0x02, 0xC0, 0x22, 0x39, 0xD8, 0xB6, + 0x2B, 0x00, 0x75, 0x4A, 0x22, 0x53, 0xDC, 0x0C, 0x00, 0x00, 0xDF, 0x24, 0x1F, 0x58, 0x0C, 0x00, + 0x35, 0x16, 0xD7, 0x60, 0x00, 0x22, 0x52, 0xBC, 0x0C, 0x0A, 0x01, 0x78, 0x00, 0x12, 0x86, 0x23, + 0x0A, 0x50, 0x79, 0xFF, 0xFF, 0xFA, 0x0D, 0xA3, 0xF3, 0x41, 0xAA, 0x50, 0x6B, 0xEF, 0x41, 0x0E, + 0x04, 0xCC, 0x6E, 0x10, 0xDC, 0x6B, 0x2F, 0x81, 0x4A, 0xB3, 0xE6, 0xFE, 0xF6, 0xD2, 0x87, 0x0F, + 0x9C, 0x12, 0x06, 0xA0, 0x09, 0x57, 0xFC, 0xF7, 0xD4, 0x84, 0x0E, 0xA0, 0x09, 0x22, 0xD3, 0x0D, + 0xA0, 0x09, 0x30, 0x55, 0x7F, 0xF6, 0x77, 0x26, 0x06, 0x94, 0x09, 0x14, 0xD1, 0x0C, 0x00, 0x44, + 0x58, 0xFF, 0xFF, 0xF8, 0x20, 0x0B, 0x00, 0xF3, 0x32, 0x16, 0x02, 0x64, 0x09, 0x12, 0xE8, 0x24, + 0x00, 0x30, 0x04, 0x39, 0xDD, 0xC2, 0x20, 0x14, 0x8C, 0xAD, 0x48, 0x16, 0xF9, 0x74, 0x0B, 0x22, + 0xCE, 0x3D, 0x6C, 0x00, 0x4A, 0x50, 0x50, 0x46, 0x21, 0xE2, 0x07, 0x0F, 0x0C, 0x00, 0x43, 0x24, + 0x0D, 0x0C, 0x40, 0x0F, 0x01, 0xD8, 0x01, 0x37, 0xCC, 0x7E, 0x0D, 0xD8, 0x01, 0x27, 0xDB, 0x17, + 0xD8, 0x01, 0x17, 0x9E, 0xD8, 0x01, 0x27, 0xF7, 0x0A, 0xD8, 0x01, 0x1F, 0x38, 0xD8, 0x01, 0x64, + 0x16, 0x33, 0xD8, 0x01, 0x26, 0xF9, 0x08, 0xD8, 0x01, 0x16, 0x99, 0xD8, 0x01, 0x23, 0xDE, 0x18, + 0xD8, 0x01, 0x47, 0xFF, 0xFF, 0xE6, 0x15, 0xD3, 0x9A, 0x14, 0x9C, 0xAA, 0x1C, 0x27, 0x02, 0xAD, + 0x6F, 0xA5, 0x27, 0x07, 0xAD, 0xF2, 0x2F, 0x3A, 0x01, 0x63, 0x02, 0xA8, 0x0B, 0x57, 0xF8, 0xE4, + 0xBC, 0x6B, 0x09, 0x08, 0x02, 0x23, 0xD4, 0x11, 0xA8, 0x0B, 0x20, 0x92, 0xFB, 0x1A, 0x06, 0x03, + 0x54, 0x01, 0x15, 0x90, 0xE4, 0x01, 0x02, 0xD1, 0x33, 0x13, 0x0D, 0x0C, 0x00, 0x00, 0x5A, 0x33, + 0x13, 0x10, 0x0C, 0x00, 0x10, 0x76, 0xC3, 0x33, 0x01, 0x0C, 0x00, 0x30, 0x0A, 0x4B, 0xEA, 0xA1, + 0x0F, 0x00, 0x0C, 0x00, 0x01, 0x22, 0x1F, 0x25, 0xF3, 0x34, 0x60, 0x00, 0x23, 0xE7, 0x2E, 0x08, + 0x02, 0x12, 0x8D, 0x6E, 0xA9, 0x01, 0xB4, 0x01, 0x12, 0x1F, 0x36, 0x34, 0x02, 0xC0, 0x01, 0x11, + 0xDB, 0x78, 0x11, 0x02, 0x0C, 0x00, 0x11, 0x96, 0xA4, 0x0E, 0x02, 0x0C, 0x00, 0x11, 0x52, 0xCE, + 0x3B, 0x02, 0x0C, 0x00, 0x00, 0xD3, 0xAB, 0x14, 0x6E, 0x90, 0x00, 0x10, 0xC8, 0xF0, 0x92, 0x06, + 0xB0, 0x02, 0x23, 0xF8, 0x0A, 0x0C, 0x00, 0x00, 0xAC, 0x05, 0x16, 0x4B, 0x90, 0x15, 0x70, 0x0E, + 0x81, 0xD3, 0xF6, 0xF5, 0xCE, 0x72, 0xD1, 0x0F, 0x13, 0x12, 0x58, 0x35, 0x21, 0xB3, 0x02, 0xAB, + 0x30, 0x41, 0xE2, 0x64, 0x68, 0xEE, 0xB5, 0x05, 0x11, 0xE4, 0x54, 0x2E, 0x10, 0x74, 0xF1, 0x16, + 0x12, 0x02, 0xFD, 0x07, 0x11, 0x3C, 0xA0, 0x2F, 0xA2, 0xF3, 0xFF, 0xFF, 0xB0, 0x01, 0x00, 0x12, + 0x56, 0x27, 0x03, 0x85, 0x9B, 0x27, 0x8A, 0x01, 0x54, 0x88, 0x27, 0xA6, 0x08, 0x49, 0x2E, 0x12, + 0xC7, 0xDD, 0x32, 0x22, 0x01, 0x79, 0x8B, 0xD5, 0x02, 0x1A, 0x00, 0x10, 0x54, 0x8F, 0x23, 0x13, + 0xD2, 0x0A, 0x13, 0x24, 0x36, 0xEA, 0x6D, 0x2A, 0x50, 0x09, 0x02, 0x00, 0x2B, 0xF2, 0x23, 0x83, + 0x52, 0x02, 0x99, 0xCE, 0xFB, 0x18, 0x6C, 0x2E, 0x31, 0x24, 0x00, 0xED, 0xB2, 0x21, 0x11, 0x35, + 0x0D, 0x87, 0x11, 0xB7, 0x14, 0x21, 0x11, 0x3E, 0xC9, 0x16, 0x71, 0x53, 0xFF, 0xFF, 0xFC, 0x7B, + 0x55, 0xCA, 0x20, 0x16, 0x04, 0x42, 0x1C, 0x10, 0xEB, 0x2F, 0x1D, 0xD7, 0x02, 0x5E, 0xC2, 0xF1, + 0xFE, 0xE1, 0x96, 0x1A, 0x00, 0x00, 0x0A, 0x0B, 0x13, 0xB8, 0xBF, 0x01, 0x6A, 0x5E, 0x06, 0xA8, + 0x54, 0xC2, 0x0C, 0x49, 0x50, 0x50, 0xC1, 0xFF, 0xFF, 0xED, 0x50, 0x50, 0x50, 0x04, 0x21, 0x25, + 0x01, 0x43, 0x97, 0x0F, 0x0B, 0x00, 0x95, 0x04, 0x1C, 0x0B, 0x43, 0xB2, 0xFC, 0xFC, 0xBA, 0x9B, + 0x99, 0x22, 0x38, 0xB4, 0x40, 0x03, 0x00, 0x9A, 0x10, 0x0F, 0x0C, 0x00, 0x71, 0x22, 0x37, 0xAC, + 0x2F, 0x84, 0x00, 0x80, 0x2F, 0x22, 0x30, 0x95, 0xE1, 0x1C, 0x00, 0x20, 0x03, 0x61, 0x19, 0x63, + 0xFF, 0xFF, 0xFA, 0x11, 0x46, 0x1A, 0xA1, 0xE8, 0x01, 0x14, 0xF7, 0xFF, 0xFF, 0xC0, 0x53, 0x72, + 0xF5, 0x3F, 0x19, 0x04, 0x47, 0x11, 0x10, 0xDB, 0xD5, 0x0C, 0x86, 0x42, 0xB3, 0xE7, 0xFE, 0xF6, + 0xD4, 0x86, 0x11, 0x44, 0x18, 0x13, 0x59, 0xBC, 0x43, 0x92, 0x6E, 0xFC, 0xFC, 0xC3, 0x26, 0xFF, + 0xFF, 0xF6, 0x03, 0x4C, 0x3A, 0x32, 0x90, 0x02, 0xF0, 0xED, 0x23, 0x10, 0xCC, 0xBC, 0x0A, 0x11, + 0xBC, 0x24, 0x94, 0x20, 0x04, 0xF7, 0x1D, 0x03, 0x11, 0x87, 0x92, 0x1A, 0x11, 0x28, 0xB2, 0x3D, + 0x11, 0x52, 0xC4, 0x18, 0x11, 0x56, 0x9B, 0x0C, 0x11, 0x1D, 0x12, 0x00, 0x11, 0x85, 0xCC, 0x18, + 0x00, 0xF3, 0xBF, 0x32, 0x21, 0x00, 0xB3, 0xFC, 0x3B, 0x10, 0xB2, 0x87, 0x18, 0x12, 0xE1, 0x8E, + 0x3F, 0x53, 0x7D, 0xFF, 0xFF, 0x83, 0x10, 0x71, 0x01, 0x53, 0x48, 0xFF, 0xFF, 0xB5, 0x3E, 0xF3, + 0x08, 0x54, 0x14, 0xFF, 0xFF, 0xE6, 0x6C, 0x29, 0x9E, 0x44, 0xDE, 0xFF, 0xFF, 0xB1, 0x3C, 0x24, + 0x11, 0xA9, 0xB6, 0x39, 0x16, 0x10, 0xBD, 0x32, 0x17, 0xD9, 0xCD, 0x93, 0x03, 0x67, 0x19, 0x27, + 0x0D, 0xFE, 0xD5, 0xD8, 0x17, 0xD5, 0x3F, 0xA4, 0x13, 0x9F, 0x6F, 0xC6, 0x22, 0x11, 0x11, 0xEC, + 0x00, 0x30, 0x26, 0xFC, 0xFC, 0xD0, 0x12, 0x32, 0xA3, 0xFC, 0xE2, 0x31, 0x39, 0x31, 0x5D, 0x06, + 0xFC, 0xA7, 0x22, 0x11, 0xD1, 0x5C, 0x1D, 0x10, 0xAA, 0x39, 0x00, 0x10, 0xDC, 0x07, 0x03, 0x21, + 0x04, 0xF9, 0x03, 0x24, 0x10, 0xCB, 0x5D, 0x9B, 0x10, 0xB6, 0xAC, 0x12, 0x12, 0x27, 0x21, 0x1E, + 0x31, 0xEC, 0xFF, 0xEE, 0x9D, 0x1E, 0x11, 0x58, 0x28, 0x04, 0x31, 0x95, 0x00, 0x0D, 0xB2, 0x0A, + 0x10, 0x6B, 0xB8, 0x00, 0x11, 0x7D, 0xFB, 0x5E, 0x11, 0x2E, 0x94, 0x00, 0x10, 0x46, 0xA7, 0x14, + 0x71, 0xA8, 0xFF, 0xF6, 0xFF, 0xED, 0x01, 0x4F, 0x1D, 0x3D, 0x10, 0x20, 0xDC, 0x38, 0x71, 0xD4, + 0xFF, 0xA9, 0xFF, 0xFF, 0x19, 0x70, 0xDA, 0x0B, 0xC2, 0x03, 0xF9, 0xFF, 0xDC, 0x05, 0xFA, 0xFF, + 0x56, 0xFB, 0xFF, 0x45, 0x91, 0x27, 0x0B, 0xB2, 0xD5, 0xFF, 0xFB, 0x2D, 0xFF, 0xFF, 0x23, 0xD4, + 0xFF, 0x71, 0xB2, 0x17, 0x2F, 0xD3, 0xB0, 0xFF, 0xFF, 0x73, 0xFF, 0xF4, 0x02, 0xA7, 0xFF, 0x9D, + 0xD3, 0xFF, 0xE9, 0x15, 0x2E, 0xA3, 0xBF, 0xFF, 0xC9, 0x00, 0x7A, 0xFF, 0xCA, 0xF4, 0xFF, 0xC4, + 0xCD, 0x2D, 0x50, 0xFC, 0xFF, 0x9C, 0x00, 0x4D, 0x21, 0x01, 0x15, 0x9E, 0x14, 0x01, 0x35, 0x6F, + 0x00, 0x20, 0x73, 0x9F, 0x12, 0x1A, 0x37, 0x2F, 0x23, 0x01, 0xF2, 0xD8, 0x3F, 0x02, 0x47, 0xF9, + 0x12, 0x15, 0x58, 0x40, 0x14, 0x2E, 0xA5, 0x3D, 0x13, 0xE8, 0x9B, 0xAE, 0x14, 0x0A, 0x71, 0x01, + 0x12, 0xBB, 0x42, 0x28, 0x15, 0xE4, 0x09, 0x83, 0x12, 0x8E, 0x5D, 0x00, 0x18, 0xBF, 0x7C, 0x1A, + 0x40, 0x6E, 0xFC, 0xFC, 0xDB, 0xC5, 0x14, 0x61, 0xCE, 0xFC, 0xFC, 0x46, 0x11, 0xF6, 0x09, 0x2E, + 0x71, 0x2D, 0xFF, 0xFF, 0xE2, 0x03, 0x00, 0x9A, 0x6F, 0x3A, 0x11, 0x88, 0x80, 0x04, 0xA2, 0x2F, + 0xFF, 0xFF, 0xFE, 0x20, 0x02, 0xE2, 0xFF, 0xFE, 0x20, 0xAD, 0x39, 0x23, 0x86, 0x3E, 0xE6, 0x39, + 0x53, 0x59, 0xFF, 0xFF, 0xE9, 0xA0, 0x94, 0x1F, 0x02, 0x88, 0x93, 0x26, 0xED, 0x08, 0xE8, 0x82, + 0x03, 0x53, 0x3C, 0x26, 0x1B, 0xFC, 0xF0, 0x35, 0x23, 0x0E, 0xF6, 0x23, 0x7D, 0x03, 0x7B, 0x3C, + 0x27, 0xFA, 0x19, 0x27, 0x8C, 0x14, 0x81, 0xA8, 0x94, 0x53, 0xF9, 0xFF, 0xFF, 0xE9, 0x07, 0x2C, + 0x1B, 0x22, 0x76, 0xEC, 0x10, 0x40, 0x62, 0x0B, 0xF1, 0xFF, 0xF9, 0x13, 0x85, 0x32, 0xB7, 0x10, + 0x60, 0x3A, 0x08, 0x21, 0x1B, 0xFB, 0x8F, 0x17, 0x11, 0xC5, 0x54, 0x2E, 0x10, 0xA7, 0xBB, 0x1C, + 0x51, 0x2B, 0xFF, 0xFF, 0xE4, 0x03, 0x1B, 0x1A, 0x33, 0xFC, 0x1E, 0x8E, 0x8D, 0x1B, 0x44, 0xC8, + 0xFF, 0xFF, 0x89, 0xEC, 0x00, 0x30, 0x9C, 0xFC, 0xFC, 0x14, 0x39, 0x62, 0x02, 0xE5, 0xFC, 0xFC, + 0x55, 0x4A, 0x31, 0xA3, 0x10, 0x36, 0x77, 0x0F, 0x21, 0x06, 0xEF, 0x08, 0x1C, 0x11, 0x82, 0x3E, + 0x1B, 0x11, 0x9F, 0x86, 0x01, 0x11, 0xCE, 0xE0, 0x01, 0x61, 0x4A, 0xFF, 0xFF, 0xEB, 0x03, 0x1B, + 0x5B, 0x55, 0x10, 0x00, 0x25, 0x00, 0x23, 0x3D, 0x66, 0xE8, 0x02, 0x53, 0x9F, 0xFF, 0xFF, 0x8D, + 0xB3, 0x91, 0x34, 0x53, 0x49, 0xFF, 0xFF, 0xE1, 0xF6, 0xED, 0x91, 0x00, 0x25, 0x00, 0x05, 0x11, + 0x34, 0x17, 0x9E, 0x08, 0xF6, 0x00, 0xAC, 0x07, 0x13, 0xF9, 0x61, 0x26, 0x00, 0x25, 0x00, 0x17, + 0xB3, 0x41, 0x9F, 0x1F, 0x90, 0x0C, 0x00, 0x39, 0x13, 0x0A, 0x1C, 0x1D, 0x23, 0x00, 0xE1, 0xD7, + 0x05, 0x35, 0x9E, 0x00, 0xE4, 0x62, 0x39, 0x55, 0x48, 0x50, 0x50, 0x50, 0x66, 0xDE, 0x30, 0x45, + 0x6D, 0xFF, 0xFF, 0xEF, 0x0C, 0xCF, 0x15, 0x9A, 0xB7, 0x39, 0x14, 0x3E, 0xD2, 0x1E, 0x24, 0xE1, + 0x02, 0x36, 0x98, 0x15, 0x87, 0x81, 0xCE, 0x02, 0xC5, 0x16, 0x14, 0x8F, 0x3C, 0xA0, 0x24, 0x03, + 0xE7, 0x36, 0x98, 0x54, 0x44, 0xFF, 0xFF, 0xFE, 0x1A, 0xAE, 0x03, 0x15, 0xBB, 0xBB, 0xFC, 0x14, + 0x5F, 0x71, 0x41, 0x24, 0xF6, 0x0E, 0x60, 0x35, 0x02, 0x67, 0x5B, 0x51, 0x10, 0xFA, 0xFF, 0xFF, + 0x88, 0x7D, 0x12, 0x05, 0x32, 0x62, 0x16, 0xA4, 0x0A, 0x00, 0x00, 0xA8, 0x24, 0x02, 0x94, 0x09, + 0x02, 0x70, 0x43, 0x92, 0x28, 0x9D, 0xFF, 0xFF, 0x6B, 0x2C, 0x2C, 0x07, 0x9D, 0xB9, 0x30, 0x0A, + 0x07, 0x00, 0x1C, 0x9E, 0x07, 0x00, 0x1F, 0x4A, 0x07, 0x00, 0x05, 0x15, 0x9F, 0x07, 0x00, 0x1F, + 0x49, 0x07, 0x00, 0x0C, 0x12, 0xA0, 0xAA, 0x30, 0x0F, 0x07, 0x00, 0x05, 0x55, 0x65, 0x28, 0x28, + 0x07, 0xA0, 0x9A, 0x98, 0x04, 0x1C, 0x25, 0x44, 0x09, 0xF3, 0xFC, 0x48, 0x2E, 0x73, 0x14, 0x92, + 0x6F, 0xA1, 0x03, 0x9E, 0x24, 0x15, 0x22, 0xC6, 0xB9, 0x14, 0xD8, 0xF5, 0x17, 0x12, 0x8E, 0x52, + 0x9C, 0x00, 0x3C, 0x01, 0x12, 0xF9, 0xD5, 0x23, 0x24, 0x07, 0xF3, 0x1D, 0x8A, 0x14, 0xAF, 0x0D, + 0x91, 0x44, 0x65, 0xFF, 0xE3, 0x01, 0xAB, 0x94, 0x14, 0x2D, 0xA3, 0x32, 0x14, 0x77, 0x80, 0xC4, + 0x14, 0xC2, 0x09, 0x3C, 0x24, 0xFC, 0x11, 0x92, 0x88, 0x14, 0x56, 0x98, 0x41, 0x14, 0xA0, 0xA4, + 0x32, 0x03, 0x7F, 0x2A, 0x15, 0x16, 0x9F, 0x2A, 0x53, 0xCA, 0xFF, 0x7F, 0x00, 0x08, 0xB4, 0x27, + 0x12, 0x77, 0x52, 0x7A, 0x42, 0x15, 0x2C, 0x2C, 0xAE, 0x8C, 0x0E, 0x1F, 0x9C, 0x07, 0x00, 0x0F, + 0x1F, 0x9B, 0x07, 0x00, 0x0F, 0x1F, 0x9A, 0x07, 0x00, 0x0F, 0x1F, 0x99, 0x07, 0x00, 0x05, 0x85, + 0x13, 0x28, 0x28, 0xA9, 0xFF, 0xFF, 0x50, 0x78, 0x84, 0x71, 0x34, 0x0B, 0x0B, 0x09, 0xC9, 0x30, + 0x56, 0x1C, 0xF9, 0xFC, 0xFC, 0x40, 0x4B, 0x87, 0x12, 0xAB, 0x51, 0x03, 0x63, 0xE7, 0xFF, 0xFA, + 0xFF, 0xFC, 0x1B, 0xED, 0x18, 0x13, 0x77, 0x49, 0x04, 0x51, 0xC0, 0xFF, 0xEF, 0x07, 0xCD, 0x84, + 0x41, 0x10, 0x2B, 0x82, 0x21, 0x11, 0x73, 0x4E, 0x2C, 0x10, 0x94, 0x7A, 0x2C, 0x40, 0x1C, 0xFE, + 0xFF, 0xC2, 0x7E, 0x97, 0x21, 0xE7, 0x03, 0x22, 0x3E, 0x22, 0x2D, 0x01, 0x74, 0x1D, 0x10, 0x03, + 0xE0, 0x21, 0x31, 0x09, 0x09, 0x03, 0x18, 0x01, 0x13, 0x4C, 0x01, 0x00, 0x05, 0xCF, 0x9C, 0x16, + 0x90, 0x2B, 0x35, 0x40, 0x07, 0x05, 0x06, 0x01, 0x23, 0x0C, 0xA0, 0x81, 0xFC, 0xFC, 0xA9, 0x00, + 0x0C, 0xE5, 0xFF, 0xF0, 0x04, 0x7A, 0x1A, 0x40, 0x3D, 0x00, 0x01, 0xC5, 0xC0, 0x0F, 0x31, 0x34, + 0xFE, 0xCE, 0x9C, 0x27, 0x44, 0x00, 0x00, 0x0B, 0x0A, 0x46, 0x4F, 0xA2, 0x1C, 0x98, 0xE0, 0xFA, + 0xEB, 0xAB, 0x25, 0x00, 0x00, 0x15, 0x07, 0x33, 0x20, 0xE9, 0x12, 0x62, 0x07, 0x30, 0xCA, 0x5C, + 0xDD, 0x53, 0x29, 0x10, 0xC8, 0x9A, 0x00, 0x10, 0x89, 0xD3, 0x04, 0x63, 0x9B, 0xB0, 0xB0, 0x30, + 0x00, 0x7D, 0x5E, 0x14, 0x31, 0x03, 0x48, 0xC8, 0x0A, 0x00, 0x32, 0x01, 0x57, 0xDB, 0xDF, 0x37, + 0x00, 0xD7, 0xAF, 0x20, 0xB2, 0x91, 0x0A, 0x00, 0x60, 0x87, 0xFF, 0xFF, 0xB2, 0x02, 0x7C, 0x0A, + 0x00, 0x10, 0xE7, 0x6F, 0x1C, 0x00, 0x0A, 0x00, 0x11, 0x0C, 0x1C, 0x3E, 0xB0, 0x7E, 0xFF, 0xFF, + 0xB9, 0x03, 0xF1, 0xFF, 0xFF, 0xA3, 0x62, 0xEC, 0xC8, 0x06, 0x01, 0x81, 0x25, 0x10, 0xAD, 0x5E, + 0x08, 0xB5, 0x0A, 0x9B, 0xF4, 0xEC, 0x88, 0x17, 0xFF, 0xFF, 0xEB, 0x0B, 0x0A, 0x1C, 0x09, 0x15, + 0x92, 0x32, 0x39, 0x1F, 0x94, 0x0A, 0x00, 0x14, 0x83, 0x96, 0x6A, 0xDA, 0xF7, 0xB8, 0x1C, 0x00, + 0xB4, 0xE4, 0x3E, 0x10, 0xC2, 0x0A, 0x00, 0x20, 0xE7, 0x6D, 0x62, 0x0F, 0x11, 0x27, 0x28, 0x00, + 0x00, 0x6D, 0x08, 0x12, 0x5B, 0x32, 0x00, 0x42, 0xDA, 0xFF, 0xFF, 0x6F, 0x0A, 0x00, 0x4F, 0xD8, + 0xFF, 0xFF, 0x70, 0x0A, 0x00, 0x11, 0x41, 0xDA, 0xFF, 0xFF, 0x6B, 0x0A, 0x00, 0x00, 0x85, 0xCC, + 0x60, 0x55, 0xB4, 0xFF, 0xFF, 0xD2, 0x5C, 0x8E, 0x07, 0x23, 0x1E, 0xB4, 0xF1, 0x41, 0x10, 0xB4, + 0x6E, 0x00, 0x50, 0x98, 0x79, 0xE6, 0xF7, 0xB1, 0x52, 0x21, 0x32, 0x0B, 0x09, 0x0E, 0x18, 0x03, + 0x92, 0x2C, 0xAD, 0xE9, 0xFB, 0xE6, 0xA5, 0x23, 0x00, 0x24, 0x61, 0x3D, 0xC0, 0xE8, 0x11, 0x9A, + 0xFF, 0xFF, 0xC8, 0x5A, 0xD7, 0xFF, 0xFF, 0x6A, 0xDE, 0x7E, 0x05, 0x50, 0x7A, 0xFF, 0xFF, 0x99, + 0xFB, 0xD4, 0x03, 0x41, 0x6D, 0xFF, 0xFF, 0xA4, 0x80, 0x34, 0x45, 0x1F, 0x48, 0x48, 0x2F, 0x89, + 0x34, 0x0A, 0x09, 0x00, 0x45, 0x3A, 0x88, 0x88, 0x58, 0x2D, 0x00, 0x10, 0xDE, 0x32, 0x1C, 0xE2, + 0x7A, 0xFF, 0xFF, 0x97, 0x9B, 0xFF, 0xFF, 0xCC, 0x5F, 0xD9, 0xFF, 0xFF, 0x65, 0x26, 0x29, 0x45, + 0x90, 0xE3, 0x0D, 0x00, 0x2F, 0xB1, 0xED, 0xFE, 0xE8, 0xA3, 0x0E, 0x07, 0x04, 0x50, 0x01, 0x05, + 0x21, 0xE0, 0x15, 0x1C, 0x1D, 0x97, 0x0F, 0x0A, 0x00, 0x0D, 0x59, 0x5D, 0xDB, 0xF7, 0xBB, 0x5E, + 0xD2, 0x63, 0x60, 0x1C, 0xA3, 0xFF, 0xFF, 0xDC, 0x5C, 0x01, 0x74, 0x11, 0x1C, 0xFC, 0x20, 0x01, + 0x28, 0x00, 0x10, 0xF6, 0xBC, 0x35, 0x01, 0x0A, 0x00, 0x10, 0xFC, 0x0F, 0x03, 0x0F, 0x0A, 0x00, + 0x10, 0x10, 0xF8, 0xE2, 0x05, 0x01, 0x0A, 0x00, 0x10, 0xE3, 0xF0, 0x08, 0x01, 0x0A, 0x00, 0x50, + 0xB3, 0xFF, 0xFF, 0xD9, 0x53, 0xCE, 0x1F, 0x24, 0x1C, 0x53, 0x67, 0x46, 0x72, 0x1C, 0x01, 0x6D, + 0xE1, 0xFB, 0xC2, 0x5D, 0x96, 0x00, 0x05, 0x50, 0x01, 0x92, 0x29, 0xAA, 0xE8, 0xFA, 0xE3, 0x9F, + 0x18, 0x00, 0x22, 0x0B, 0x1F, 0xC0, 0xDB, 0x09, 0x98, 0xFF, 0xFF, 0xC2, 0x5A, 0xD2, 0xFF, 0xFF, + 0x5D, 0xDC, 0x57, 0x00, 0x50, 0x6D, 0xFF, 0xFF, 0x9A, 0xFA, 0x77, 0x0C, 0x12, 0x61, 0xDD, 0x49, + 0x31, 0xDF, 0xD4, 0xE5, 0x92, 0x11, 0x03, 0x91, 0x3C, 0x00, 0xDA, 0x2F, 0x00, 0xD3, 0x1F, 0x15, + 0x03, 0xCD, 0x35, 0x10, 0xFB, 0x2D, 0x00, 0x50, 0x5C, 0xF4, 0xF4, 0xB3, 0xDE, 0x54, 0x46, 0x80, + 0x73, 0xFF, 0xFF, 0xAA, 0x9C, 0xFF, 0xFF, 0xCF, 0x9D, 0x01, 0x22, 0x70, 0x28, 0xAA, 0x40, 0x90, + 0xE1, 0x0D, 0x00, 0x2F, 0xB0, 0xEB, 0xFE, 0xE7, 0x9F, 0xC2, 0x03, 0x24, 0x07, 0x08, 0x84, 0x0D, + 0x63, 0x12, 0x9E, 0xE9, 0xF9, 0xEA, 0x23, 0xE6, 0x67, 0xB3, 0x28, 0x00, 0x01, 0xF0, 0xFF, 0xFF, + 0xB2, 0x5A, 0x12, 0x00, 0x0B, 0xA3, 0x06, 0x12, 0x10, 0xB6, 0x3B, 0x21, 0x8E, 0xFD, 0xDF, 0xDF, + 0x04, 0xF6, 0xDB, 0x20, 0x28, 0x2D, 0x3A, 0x67, 0x34, 0x74, 0x50, 0x0D, 0x20, 0x00, 0x0F, 0x08, + 0x00, 0x3D, 0x31, 0x0B, 0x0C, 0x13, 0x20, 0x04, 0x07, 0xCC, 0x8D, 0x00, 0xB4, 0x1F, 0xB2, 0xA3, + 0xE8, 0xF9, 0xD5, 0x5F, 0x06, 0x99, 0xF0, 0x0A, 0x00, 0x17, 0x00, 0x1F, 0x40, 0xCE, 0xFF, 0xF4, + 0x3D, 0x3E, 0x09, 0x71, 0xB8, 0x5A, 0xD5, 0xFF, 0xFF, 0x79, 0x0C, 0x52, 0x08, 0x32, 0x36, 0x00, + 0x6A, 0x89, 0x3C, 0x10, 0xEE, 0xCC, 0x31, 0x12, 0x51, 0x15, 0xD7, 0x10, 0xF1, 0x52, 0x0B, 0x12, + 0x50, 0x5E, 0x44, 0x10, 0xD3, 0x5F, 0x24, 0x12, 0x69, 0x2F, 0x13, 0x62, 0x8D, 0xFF, 0xFF, 0xB3, + 0x52, 0xD1, 0x7B, 0x0B, 0x12, 0x0E, 0x79, 0x39, 0x10, 0xCC, 0xA6, 0x04, 0x82, 0x23, 0xDE, 0xEC, + 0xE5, 0xFF, 0xE9, 0x99, 0x13, 0xFB, 0xA6, 0x36, 0x84, 0x00, 0x02, 0xAD, 0xC3, 0x50, 0xE2, 0xC2, + 0xAA, 0x8B, 0x4B, 0x24, 0x00, 0x13, 0x60, 0xDD, 0x57, 0xB0, 0xC0, 0x06, 0x00, 0x00, 0x50, 0xF3, + 0xEC, 0x61, 0x73, 0x8D, 0xD0, 0x6E, 0x16, 0x42, 0x24, 0xF9, 0xFF, 0x87, 0xEC, 0xFB, 0x10, 0x80, + 0xDE, 0x26, 0x50, 0xD8, 0x6C, 0x51, 0x55, 0xA1, 0x85, 0x13, 0x14, 0x45, 0xBF, 0x01, 0xD6, 0xEF, + 0x18, 0x00, 0x00, 0x50, 0xB4, 0xE8, 0xFD, 0xFF, 0xFB, 0xE1, 0xA7, 0x2E, 0xDC, 0x02, 0x15, 0xAE, + 0x2C, 0x04, 0x15, 0xB0, 0x0E, 0x04, 0x0F, 0x0A, 0x00, 0x0F, 0x50, 0x34, 0xAF, 0xEF, 0xEB, 0x62, + 0x0A, 0x00, 0x11, 0xDF, 0x27, 0x74, 0x60, 0x12, 0xB0, 0xFF, 0xFF, 0xF9, 0x85, 0xEC, 0x0E, 0x20, + 0x43, 0xB0, 0x6E, 0x32, 0x52, 0x02, 0xFB, 0xFF, 0xFF, 0x4C, 0x32, 0x00, 0x1F, 0xF8, 0x0A, 0x00, + 0x4A, 0x06, 0xA0, 0x34, 0xB5, 0xA2, 0xFC, 0xFC, 0xA6, 0xA4, 0xFF, 0xFF, 0xA8, 0x34, 0x50, 0x50, + 0x3D, 0x96, 0x8F, 0xA2, 0xFC, 0xFC, 0xA2, 0xA4, 0xFF, 0xFF, 0xA4, 0x04, 0x00, 0x1D, 0x42, 0x06, + 0x06, 0x17, 0xFF, 0x08, 0x02, 0x41, 0x6B, 0xFC, 0xFC, 0xDD, 0x69, 0x0B, 0x89, 0xE0, 0x00, 0x00, + 0x22, 0x50, 0x50, 0x46, 0x00, 0x01, 0x00, 0x11, 0x6B, 0x74, 0xEA, 0x11, 0x6C, 0x56, 0x26, 0x0F, + 0x06, 0x00, 0x35, 0xA2, 0x7C, 0xFF, 0xFF, 0xDA, 0x2F, 0x84, 0xEC, 0xFF, 0xFF, 0xB8, 0x42, 0x16, + 0x57, 0x48, 0xEF, 0xFD, 0xD6, 0x5F, 0xF4, 0x27, 0x55, 0xB2, 0xFC, 0xFC, 0x8A, 0x00, 0xB5, 0x05, + 0x1F, 0x8C, 0x0B, 0x00, 0x1B, 0x51, 0x4A, 0xFC, 0xFC, 0xFC, 0x43, 0x0B, 0x00, 0x20, 0x0A, 0xDF, + 0x94, 0x06, 0x01, 0x0B, 0x00, 0x51, 0x87, 0xFF, 0xFF, 0xF3, 0x1B, 0x0B, 0x00, 0x21, 0x2C, 0xFB, + 0xF2, 0x09, 0x91, 0xB4, 0xFF, 0xFF, 0x8E, 0xC4, 0xFF, 0xFF, 0xD4, 0x05, 0x0B, 0x00, 0x13, 0xE3, + 0x60, 0x3A, 0x16, 0xB4, 0x81, 0x84, 0x00, 0x0B, 0x00, 0x42, 0x95, 0xFF, 0xFF, 0xE8, 0x21, 0x00, + 0x31, 0xB1, 0x02, 0xE3, 0x76, 0x0A, 0x01, 0x63, 0x00, 0x11, 0x89, 0xD7, 0x06, 0x01, 0x0B, 0x00, + 0x11, 0x2E, 0xBC, 0x18, 0x02, 0x79, 0x00, 0x10, 0xD2, 0xCA, 0x23, 0x02, 0x0B, 0x00, 0x52, 0x76, + 0xFF, 0xFF, 0xE6, 0x05, 0x0B, 0x00, 0x22, 0x1D, 0xFE, 0x5B, 0x00, 0x04, 0x64, 0x36, 0x8F, 0x86, + 0xFC, 0xFC, 0xBD, 0x88, 0xFF, 0xFF, 0xC0, 0x04, 0x00, 0x31, 0x22, 0x11, 0x10, 0xF4, 0x04, 0xF3, + 0x02, 0xBD, 0xFC, 0xFC, 0x60, 0x65, 0xCF, 0xF8, 0xD4, 0x37, 0x07, 0x7D, 0xDA, 0xF8, 0xB9, 0x1E, + 0x00, 0xC0, 0xF1, 0x8C, 0x22, 0xDD, 0xC4, 0x37, 0x99, 0x50, 0xC0, 0xFF, 0xFF, 0xED, 0x79, 0x26, + 0x3E, 0x81, 0xDB, 0x69, 0x94, 0xFF, 0xFF, 0xF6, 0x02, 0xC0, 0xC6, 0x03, 0x10, 0xEA, 0x2C, 0x17, + 0x00, 0x9B, 0x0D, 0x21, 0x0C, 0xC0, 0xC8, 0x20, 0x10, 0xE4, 0x78, 0x0E, 0x1F, 0x14, 0x10, 0x00, + 0x81, 0x25, 0x0B, 0x0A, 0xE8, 0x00, 0x65, 0x86, 0x40, 0xB7, 0xF2, 0xE3, 0x51, 0xE2, 0x00, 0x10, + 0xEB, 0xC5, 0x58, 0x20, 0xF2, 0x79, 0x1C, 0x48, 0x20, 0x29, 0xC0, 0x45, 0x36, 0x00, 0xB2, 0x4D, + 0x20, 0x34, 0xC0, 0xD3, 0x2D, 0x1F, 0x14, 0x0A, 0x00, 0x4B, 0x05, 0x70, 0x06, 0x92, 0x28, 0xAA, + 0xE8, 0xFA, 0xE2, 0x9B, 0x1A, 0x00, 0x24, 0xF6, 0x43, 0xC0, 0xE3, 0x12, 0x9E, 0xFF, 0xFF, 0xC7, + 0x5B, 0xD9, 0xFF, 0xFF, 0x80, 0xE3, 0xEE, 0x0E, 0x50, 0x72, 0xFF, 0xFF, 0xC6, 0xFE, 0x43, 0x06, + 0x41, 0x5E, 0xFF, 0xFF, 0xE2, 0x55, 0x06, 0x12, 0x5C, 0xBC, 0x00, 0x0F, 0x09, 0x00, 0x05, 0x01, + 0x2D, 0x00, 0x50, 0x5D, 0xFF, 0xFF, 0xE2, 0xE4, 0x10, 0x07, 0xE2, 0x72, 0xFF, 0xFF, 0xC7, 0xA2, + 0xFF, 0xFF, 0xC2, 0x52, 0xD4, 0xFF, 0xFF, 0x83, 0x27, 0x23, 0x08, 0xA1, 0xE6, 0x14, 0x00, 0x2B, + 0xAE, 0xEC, 0xFE, 0xE6, 0xA0, 0x1D, 0xC0, 0x07, 0x32, 0x12, 0x01, 0xFC, 0x1C, 0x01, 0x60, 0x8C, + 0x79, 0xDE, 0xF7, 0xB4, 0x18, 0x1C, 0x01, 0x12, 0xFA, 0x7B, 0x18, 0x00, 0x26, 0x01, 0x10, 0x6B, + 0x89, 0x3D, 0x11, 0x20, 0xB8, 0x00, 0x51, 0x05, 0xF6, 0xFF, 0xFF, 0x53, 0x0A, 0x00, 0x00, 0xDB, + 0x10, 0x12, 0x67, 0x0A, 0x00, 0x4F, 0xDC, 0xFF, 0xFF, 0x68, 0x0A, 0x00, 0x11, 0x41, 0xDF, 0xFF, + 0xFF, 0x63, 0x0A, 0x00, 0xF4, 0x00, 0x03, 0xF5, 0xFF, 0xFF, 0x4D, 0xC0, 0xFF, 0xFF, 0xCC, 0x5A, + 0x85, 0xFF, 0xFF, 0xFE, 0x17, 0x6E, 0x00, 0x10, 0xAC, 0x6E, 0x00, 0x85, 0x8D, 0x7C, 0xE8, 0xF6, + 0xAD, 0x10, 0x00, 0xC0, 0x42, 0x41, 0x0F, 0x0A, 0x00, 0x0B, 0x04, 0xBC, 0x00, 0xC3, 0x00, 0x5B, + 0xDC, 0xF8, 0xC0, 0x57, 0xFC, 0xFC, 0xFC, 0x24, 0x37, 0xFE, 0xDC, 0x07, 0x60, 0x24, 0xA2, 0xFF, + 0xFF, 0xDE, 0x5C, 0xEB, 0x29, 0x20, 0x24, 0xDC, 0x55, 0x11, 0x00, 0xD9, 0x0D, 0x20, 0x24, 0xF3, + 0x4B, 0x03, 0x01, 0x0A, 0x00, 0x10, 0xF8, 0x1C, 0x01, 0x0F, 0x0A, 0x00, 0x10, 0x10, 0xF4, 0xB6, + 0x03, 0x01, 0x0A, 0x00, 0x10, 0xE0, 0x4A, 0x08, 0x01, 0x0A, 0x00, 0x51, 0xB0, 0xFF, 0xFF, 0xDB, + 0x54, 0x4B, 0x1C, 0x24, 0x52, 0xFF, 0x6E, 0x00, 0x65, 0x01, 0x6D, 0xE0, 0xFB, 0xC4, 0x57, 0x5C, + 0x29, 0x1F, 0x24, 0x0A, 0x00, 0x0F, 0x37, 0x08, 0x07, 0x0F, 0xB3, 0x28, 0x10, 0x05, 0x8F, 0x0A, + 0x83, 0x26, 0xBE, 0xFB, 0xB4, 0xFF, 0xFF, 0xAA, 0xE2, 0x36, 0x52, 0xA2, 0xF9, 0xFD, 0xB4, 0xFF, + 0xFF, 0xFE, 0x6A, 0x05, 0x0B, 0xB4, 0x2D, 0x5B, 0x03, 0x8A, 0x0A, 0x0F, 0x07, 0x00, 0x25, 0x01, + 0xA8, 0x0D, 0x03, 0x90, 0x0B, 0x74, 0x01, 0x5F, 0xCE, 0xF7, 0xEA, 0x9A, 0x12, 0x48, 0x45, 0xC1, + 0xCC, 0x04, 0x05, 0xF1, 0xFF, 0xFD, 0x72, 0x89, 0xFF, 0xFF, 0x5D, 0x21, 0x75, 0x44, 0x50, 0xBC, + 0xFF, 0x90, 0x09, 0xF8, 0xFB, 0x19, 0x22, 0x3A, 0x2E, 0xA0, 0x46, 0x11, 0x81, 0x9F, 0x28, 0x00, + 0x00, 0x2A, 0x10, 0x9D, 0xF1, 0x28, 0x10, 0x0A, 0x88, 0x4C, 0x10, 0xB0, 0x6A, 0x07, 0x21, 0x02, + 0x85, 0x6D, 0x88, 0x30, 0x09, 0x53, 0x09, 0x54, 0x17, 0x50, 0xE1, 0x4A, 0xF1, 0xFF, 0x5E, 0xFA, + 0xAC, 0x70, 0xFC, 0x1D, 0xFA, 0xFF, 0xEB, 0x64, 0x83, 0xEC, 0x10, 0x14, 0x80, 0x6D, 0xBE, 0x60, + 0x01, 0x65, 0xD0, 0xFA, 0xF4, 0xC1, 0x80, 0x0E, 0x36, 0x08, 0x08, 0x12, 0x67, 0x1E, 0x13, 0x1C, + 0x5E, 0x8B, 0x0F, 0x08, 0x00, 0x00, 0x12, 0x8A, 0xDC, 0x08, 0x13, 0x38, 0x10, 0x17, 0x20, 0x38, + 0x2C, 0xD1, 0x28, 0x3E, 0x64, 0x50, 0x12, 0x30, 0x00, 0x0F, 0x08, 0x00, 0x14, 0x13, 0x2A, 0x9D, + 0x41, 0x73, 0x0D, 0xFD, 0xFF, 0xFF, 0xD2, 0x94, 0x3A, 0xB8, 0x54, 0x94, 0x5C, 0x00, 0x00, 0x17, + 0xB0, 0xF2, 0xFC, 0xEF, 0x51, 0x28, 0x04, 0x10, 0xD5, 0x0A, 0x2F, 0x10, 0x38, 0x13, 0x16, 0x00, + 0x9E, 0x0B, 0x01, 0x6B, 0x2B, 0x0F, 0x0A, 0x00, 0x41, 0x12, 0x75, 0x0A, 0x00, 0x50, 0xCE, 0xFF, + 0xFF, 0xD2, 0x70, 0xB9, 0x32, 0x11, 0x0C, 0xC0, 0x62, 0x00, 0xCA, 0x55, 0x60, 0x0C, 0x1C, 0xC8, + 0xFB, 0xD3, 0x68, 0xC2, 0x1E, 0x44, 0x0C, 0x0A, 0x0A, 0x0E, 0x27, 0xB8, 0x11, 0x93, 0xA6, 0x12, + 0x20, 0x4F, 0x67, 0xC3, 0x17, 0x60, 0x01, 0xF3, 0xFF, 0xFF, 0x1F, 0x36, 0x47, 0x14, 0x10, 0x15, + 0x4A, 0x18, 0x61, 0x09, 0xFC, 0xFF, 0xFA, 0x03, 0x37, 0xC6, 0x14, 0x51, 0xD3, 0xFF, 0xFF, 0x1E, + 0x5A, 0xDC, 0x14, 0x51, 0xA1, 0xFF, 0xFF, 0x41, 0x7C, 0xDF, 0x00, 0x51, 0x70, 0xFF, 0xFF, 0x63, + 0x9E, 0xBD, 0x10, 0x51, 0x3E, 0xFF, 0xFF, 0x86, 0xC0, 0x11, 0xB0, 0x52, 0x0E, 0xFF, 0xFF, 0xA8, + 0xE2, 0xCE, 0x48, 0x65, 0xDB, 0xFF, 0xD2, 0xFE, 0xFF, 0x98, 0xBE, 0x97, 0x15, 0x67, 0x64, 0x45, + 0x14, 0x36, 0xCA, 0x4C, 0x24, 0xFC, 0x09, 0x3D, 0x98, 0x00, 0x67, 0x40, 0x22, 0x0E, 0x0E, 0x94, + 0x00, 0x10, 0x54, 0x0C, 0xB0, 0xA0, 0x19, 0xFC, 0xFC, 0x72, 0x00, 0x06, 0xF9, 0xFC, 0x96, 0x2F, + 0x78, 0x0E, 0x10, 0x42, 0x4A, 0x11, 0x50, 0x26, 0xFF, 0xFF, 0x70, 0x0A, 0xD2, 0x09, 0x10, 0x6C, + 0x85, 0x0D, 0x10, 0x49, 0xB0, 0x18, 0x30, 0xE0, 0xFF, 0xC4, 0xA1, 0x18, 0x10, 0xE8, 0x40, 0x0B, + 0x51, 0x1F, 0x00, 0xB9, 0xFF, 0xE5, 0x9B, 0x4C, 0x50, 0x0F, 0x91, 0xFF, 0xF5, 0x02, 0x61, 0x02, + 0x91, 0x08, 0xE9, 0xFF, 0xEE, 0xFF, 0x36, 0xB4, 0xFF, 0xCE, 0x87, 0x14, 0x91, 0x3A, 0xFF, 0xF2, + 0xA7, 0xFF, 0x5E, 0xD8, 0xFF, 0xA6, 0x57, 0x11, 0x91, 0x84, 0xFF, 0xC3, 0x78, 0xFF, 0x87, 0xF9, + 0xFF, 0x7E, 0x04, 0x10, 0x61, 0xCF, 0xFF, 0x94, 0x4B, 0xFF, 0xCB, 0x9F, 0x51, 0x01, 0x06, 0x14, + 0x24, 0x65, 0x1D, 0x37, 0x47, 0x00, 0x56, 0x28, 0x33, 0x35, 0x01, 0xF0, 0x7F, 0x51, 0x73, 0xA7, + 0xFF, 0xFF, 0xFD, 0x09, 0x00, 0xC2, 0xCE, 0x2E, 0x11, 0x80, 0xAE, 0x53, 0x13, 0x95, 0x02, 0x31, + 0x11, 0x58, 0x85, 0x11, 0x11, 0x67, 0x60, 0x07, 0x04, 0x60, 0x01, 0x10, 0x7B, 0x74, 0xE4, 0x00, + 0xAE, 0x08, 0x10, 0x65, 0x99, 0x50, 0x60, 0x27, 0x00, 0xCC, 0xFF, 0xF0, 0x0C, 0xF0, 0x0F, 0x21, + 0x95, 0x2D, 0x59, 0x12, 0x52, 0x2C, 0xFF, 0xFF, 0xF5, 0x9E, 0xC3, 0x10, 0x15, 0xB9, 0x6D, 0x46, + 0x15, 0x48, 0x39, 0x43, 0x00, 0x2F, 0xEE, 0x24, 0xDE, 0x03, 0x61, 0x56, 0x25, 0xD7, 0x02, 0x4A, + 0x20, 0x00, 0xED, 0x5A, 0x42, 0x08, 0xED, 0xFF, 0xFD, 0xB2, 0x1A, 0x51, 0x5C, 0xFF, 0xFF, 0x7D, + 0xF4, 0x0E, 0x38, 0x50, 0xC4, 0xFF, 0xF9, 0x13, 0x8F, 0xD2, 0x30, 0x10, 0x2D, 0xC5, 0x0F, 0x61, + 0x1E, 0xFC, 0xFF, 0xFE, 0x26, 0x94, 0x4C, 0x00, 0x92, 0xA3, 0xFF, 0xFF, 0x99, 0x0A, 0x0A, 0x12, + 0x00, 0xFC, 0x4A, 0xAB, 0x11, 0x72, 0x9A, 0x00, 0x21, 0xAE, 0x7C, 0x20, 0x0B, 0x51, 0xA6, 0xFF, + 0xFF, 0x78, 0x3D, 0xCC, 0x28, 0xE0, 0xCF, 0xFF, 0xFF, 0x3F, 0x07, 0xF7, 0xFF, 0xFB, 0x07, 0x02, + 0xF6, 0xFF, 0xFC, 0x0B, 0xBE, 0x53, 0x21, 0x30, 0x21, 0x7E, 0x19, 0x51, 0x7D, 0xFF, 0xFF, 0x60, + 0x4A, 0xCB, 0x20, 0x51, 0x3D, 0xFF, 0xFF, 0x8F, 0x73, 0xAE, 0x3B, 0x52, 0x07, 0xF7, 0xFF, 0xBE, + 0x9C, 0x7D, 0x04, 0x72, 0xBD, 0xFF, 0xEE, 0xC5, 0xFF, 0xEB, 0x01, 0xC2, 0x16, 0x35, 0xFA, 0xFF, + 0xB3, 0x19, 0x67, 0x01, 0xD4, 0xA6, 0x25, 0x08, 0xF9, 0x9F, 0x44, 0x54, 0xC2, 0xFF, 0xFF, 0xFD, + 0x0D, 0xAB, 0x19, 0x15, 0xD1, 0x86, 0x4A, 0x01, 0x95, 0x11, 0x33, 0x40, 0x74, 0xD4, 0xFA, 0x31, + 0x00, 0x8F, 0x50, 0x11, 0xC5, 0x48, 0x1B, 0x41, 0xAC, 0xF5, 0xC6, 0x7D, 0xC4, 0x11, 0x14, 0x09, + 0x64, 0x04, 0x14, 0xD5, 0x3C, 0xA3, 0x14, 0xD8, 0xB6, 0x51, 0x20, 0x44, 0x50, 0xC9, 0x1A, 0x23, + 0xF0, 0x0B, 0xFE, 0x48, 0x01, 0xAE, 0x36, 0x23, 0x20, 0xFE, 0x4C, 0x53, 0x13, 0x86, 0x0C, 0x7A, + 0x23, 0x07, 0xE9, 0x34, 0x14, 0x14, 0x59, 0x4C, 0x15, 0x13, 0xC3, 0x5D, 0x4D, 0x14, 0x2D, 0xC2, + 0x4E, 0x13, 0x96, 0x72, 0x30, 0x94, 0x0D, 0xF3, 0xFF, 0xFF, 0x91, 0x48, 0x48, 0x48, 0x10, 0x1A, + 0xE2, 0x26, 0x38, 0x34, 0xD1, 0x90, 0x04, 0x40, 0x13, 0xA1, 0x00, 0x00, 0x5A, 0xCB, 0xF5, 0xFC, + 0x7B, 0x00, 0x2A, 0xFE, 0x73, 0x57, 0x82, 0x68, 0xFF, 0xFF, 0xFB, 0x70, 0x28, 0x00, 0x7A, 0x7A, + 0x24, 0x12, 0x7C, 0xC1, 0x2C, 0x12, 0x7C, 0xE8, 0x34, 0x12, 0x7D, 0x07, 0x00, 0x12, 0x80, 0x22, + 0x16, 0x11, 0x93, 0x14, 0x37, 0x21, 0x50, 0xE1, 0x16, 0x2F, 0x51, 0xF4, 0xFF, 0xFF, 0xA2, 0x09, + 0x07, 0x00, 0x52, 0xCB, 0x0F, 0x00, 0x00, 0x12, 0xFC, 0x2F, 0x22, 0x00, 0x90, 0x99, 0x05, 0x12, + 0x80, 0x55, 0xA9, 0x03, 0x3F, 0x00, 0x1C, 0x7C, 0x07, 0x00, 0x12, 0xC2, 0x85, 0x25, 0x12, 0xD1, + 0x05, 0x31, 0x62, 0xFD, 0x70, 0x26, 0x00, 0x1D, 0xF9, 0xFF, 0x57, 0x31, 0x4C, 0xC8, 0xF8, 0x4B, + 0x2B, 0x22, 0x06, 0x04, 0xAC, 0x00, 0x97, 0x5F, 0xFC, 0xFC, 0x76, 0x61, 0xFF, 0xFF, 0x77, 0x62, + 0x04, 0x00, 0x12, 0x63, 0x04, 0x00, 0x10, 0x76, 0x04, 0x00, 0x17, 0x64, 0x04, 0x00, 0x12, 0x65, + 0x04, 0x00, 0x10, 0x75, 0x04, 0x00, 0x17, 0x66, 0x04, 0x00, 0x12, 0x67, 0x04, 0x00, 0x10, 0x74, + 0x04, 0x00, 0x17, 0x68, 0x04, 0x00, 0x13, 0x09, 0x10, 0x01, 0x52, 0xF5, 0xFB, 0xE6, 0xA5, 0x19, + 0xDA, 0x9E, 0x52, 0xAF, 0x00, 0x00, 0x53, 0xBB, 0x13, 0xE8, 0x12, 0x49, 0xDE, 0xDA, 0x12, 0x3D, + 0x89, 0x67, 0x19, 0x3C, 0x07, 0x00, 0x12, 0x3B, 0xBC, 0xE9, 0x12, 0x26, 0xD3, 0x83, 0x00, 0x0C, + 0x88, 0x21, 0x92, 0x24, 0x10, 0x2F, 0x00, 0x7C, 0x30, 0x20, 0x5C, 0xFB, 0x07, 0x00, 0x82, 0x03, + 0xEE, 0xFF, 0xFF, 0x62, 0x04, 0x00, 0x21, 0xC7, 0xB3, 0x12, 0x39, 0x31, 0x00, 0x0A, 0x46, 0x00, + 0x03, 0x5B, 0x00, 0x12, 0x3E, 0xC6, 0x3A, 0x81, 0x4D, 0xFF, 0xFF, 0xFB, 0x00, 0x00, 0x50, 0xBE, + 0x4E, 0xDD, 0x12, 0xF8, 0x16, 0x8B, 0x42, 0xF8, 0xFF, 0xE7, 0x9D, 0x21, 0x19, 0x41, 0x0B, 0x0B, + 0x05, 0x00, 0xFF, 0x16, 0x93, 0x02, 0x75, 0xEA, 0xCF, 0x4D, 0x00, 0x00, 0x0A, 0x3C, 0x2C, 0x31, + 0xA0, 0xB5, 0x59, 0xCD, 0xF3, 0x2A, 0x05, 0xC8, 0xE5, 0x66, 0x97, 0x53, 0x17, 0xC9, 0xDB, 0x16, + 0x00, 0x1F, 0x20, 0x00, 0x00, 0x2D, 0xB7, 0xFB, 0xB1, 0x1A, 0xCD, 0x43, 0x22, 0x09, 0x08, 0x48, + 0x00, 0x91, 0x2F, 0xDB, 0xCC, 0xCC, 0xCC, 0xCC, 0xDB, 0x28, 0x34, 0xDC, 0x04, 0x2F, 0xA0, 0x2C, + 0x08, 0x00, 0x56, 0xF0, 0x1E, 0xEA, 0xC8, 0xC8, 0xC8, 0xC8, 0xEB, 0x2C, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6C, 0x74, 0x00, 0x28, 0x42, 0xFF, 0xFF, 0x18, 0xC6, 0x04, 0x21, 0xC7, 0x39, 0x10, 0x84, + 0x9D, 0xC4, 0xFF, 0xFF, 0x04, 0x21, 0xEB, 0x5A, 0x10, 0x84, 0x08, 0x42, 0x04, 0x21, 0x10, 0x84, + 0x14, 0xFD, 0xF6, 0x15, 0xE0, 0x1F, 0x04, 0x10, 0x84, 0x18, 0xC6, 0x1F, 0x04, 0xFF, 0xFF, 0x08, + 0x42, 0x10, 0x84, 0x06, 0x00, 0x22, 0x18, 0xC6, 0x0A, 0x00, 0x00, 0x08, 0x00, 0xF0, 0xA6, 0xE8, + 0xD2, 0x2B, 0x00, 0x0C, 0xD3, 0x2B, 0x00, 0x2C, 0xD3, 0x2B, 0x00, 0x4C, 0xD3, 0x2B, 0x00, 0x6C, + 0xD3, 0x2B, 0x00, 0x8C, 0xD3, 0x2B, 0x00, 0xAC, 0xD3, 0x2B, 0x00, 0xD0, 0xD3, 0x2B, 0x00, 0xF0, + 0xD3, 0x2B, 0x00, 0x10, 0xD4, 0x2B, 0x00, 0x34, 0xD4, 0x2B, 0x00, 0x38, 0xD4, 0x2B, 0x00, 0x3C, + 0xD4, 0x2B, 0x00, 0x40, 0xD4, 0x2B, 0x00, 0x44, 0xD4, 0x2B, 0x00, 0x48, 0xD4, 0x2B, 0x00, 0x68, + 0xD4, 0x2B, 0x00, 0x88, 0xD4, 0x2B, 0x00, 0xA8, 0xD4, 0x2B, 0x00, 0xC8, 0xD4, 0x2B, 0x00, 0xE8, + 0xD4, 0x2B, 0x00, 0x08, 0xD5, 0x2B, 0x00, 0x28, 0xD5, 0x2B, 0x00, 0x48, 0xD5, 0x2B, 0x00, 0x68, + 0xD5, 0x2B, 0x00, 0x88, 0xD5, 0x2B, 0x00, 0x8C, 0xD5, 0x2B, 0x00, 0x90, 0xD5, 0x2B, 0x00, 0x94, + 0xD5, 0x2B, 0x00, 0x98, 0xD5, 0x2B, 0x00, 0x9C, 0xD5, 0x2B, 0x00, 0xA0, 0xD5, 0x2B, 0x00, 0xA4, + 0xD5, 0x2B, 0x00, 0xC4, 0xD5, 0x2B, 0x00, 0xE4, 0xD5, 0x2B, 0x00, 0x04, 0xD6, 0x2B, 0x00, 0x08, + 0xD6, 0x2B, 0x00, 0x0C, 0xD6, 0x2B, 0x00, 0x10, 0xD6, 0x2B, 0x00, 0x30, 0xD6, 0x2B, 0x00, 0x50, + 0xD6, 0x2B, 0x00, 0x70, 0xD6, 0x2B, 0x00, 0x90, 0xD6, 0x2B, 0x00, 0xB0, 0xD6, 0x2B, 0x00, 0xD0, + 0xD6, 0x2B, 0x00, 0xF0, 0x20, 0x00, 0xF0, 0x65, 0xD7, 0x2B, 0x00, 0x30, 0xD7, 0x2B, 0x00, 0x50, + 0xD7, 0x2B, 0x00, 0x70, 0xD7, 0x2B, 0x00, 0x90, 0xD7, 0x2B, 0x00, 0xB0, 0xD7, 0x2B, 0x00, 0xD0, + 0xD7, 0x2B, 0x00, 0xF0, 0xD7, 0x2B, 0x00, 0xF4, 0xD7, 0x2B, 0x00, 0xF8, 0xD7, 0x2B, 0x00, 0xFC, + 0xD7, 0x2B, 0x00, 0x00, 0xD8, 0x2B, 0x00, 0x04, 0xD8, 0x2B, 0x00, 0x08, 0xD8, 0x2B, 0x00, 0x0C, + 0xD8, 0x2B, 0x00, 0x10, 0xD8, 0x2B, 0x00, 0x14, 0xD8, 0x2B, 0x00, 0x18, 0xD8, 0x2B, 0x00, 0x1C, + 0xD8, 0x2B, 0x00, 0x20, 0xD8, 0x2B, 0x00, 0x24, 0xD8, 0x2B, 0x00, 0x28, 0xD8, 0x2B, 0x00, 0x2C, + 0xD8, 0x2B, 0x00, 0x30, 0xD8, 0x2B, 0x00, 0x50, 0xD8, 0x2B, 0x00, 0x70, 0xD8, 0x2B, 0x00, 0x90, + 0xD8, 0x2B, 0x00, 0xB0, 0xD8, 0x2B, 0x00, 0xD0, 0xD8, 0x2B, 0x00, 0xF0, 0x3C, 0x00, 0xF0, 0xFF, + 0xFF, 0xFF, 0x74, 0xD9, 0x2B, 0x00, 0x30, 0xD9, 0x2B, 0x00, 0x50, 0xD9, 0x2B, 0x00, 0x70, 0xD9, + 0x2B, 0x00, 0x90, 0xD9, 0x2B, 0x00, 0xB0, 0xD9, 0x2B, 0x00, 0xD0, 0xD9, 0x2B, 0x00, 0xF0, 0xD9, + 0x2B, 0x00, 0x10, 0xDA, 0x2B, 0x00, 0x30, 0xDA, 0x2B, 0x00, 0x50, 0xDA, 0x2B, 0x00, 0x70, 0xDA, + 0x2B, 0x00, 0x90, 0xDA, 0x2B, 0x00, 0xB0, 0xDA, 0x2B, 0x00, 0xD0, 0xDA, 0x2B, 0x00, 0xF0, 0xDA, + 0x2B, 0x00, 0x10, 0xDB, 0x2B, 0x00, 0x30, 0xDB, 0x2B, 0x00, 0x50, 0xDB, 0x2B, 0x00, 0x70, 0xDB, + 0x2B, 0x00, 0x90, 0xDB, 0x2B, 0x00, 0xB0, 0xDB, 0x2B, 0x00, 0xD0, 0xDB, 0x2B, 0x00, 0xF0, 0xDB, + 0x2B, 0x00, 0x10, 0xDC, 0x2B, 0x00, 0x30, 0xDC, 0x2B, 0x00, 0x50, 0xDC, 0x2B, 0x00, 0x70, 0xDC, + 0x2B, 0x00, 0x90, 0xDC, 0x2B, 0x00, 0xB0, 0xDC, 0x2B, 0x00, 0xD0, 0xDC, 0x2B, 0x00, 0xF0, 0xDC, + 0x2B, 0x00, 0x10, 0xDD, 0x2B, 0x00, 0x30, 0xDD, 0x2B, 0x00, 0x50, 0xDD, 0x2B, 0x00, 0x70, 0xDD, + 0x2B, 0x00, 0x90, 0xDD, 0x2B, 0x00, 0xB0, 0xDD, 0x2B, 0x00, 0xD0, 0xDD, 0x2B, 0x00, 0xF0, 0xDD, + 0x2B, 0x00, 0x10, 0xDE, 0x2B, 0x00, 0x30, 0xDE, 0x2B, 0x00, 0x50, 0xDE, 0x2B, 0x00, 0x70, 0xDE, + 0x2B, 0x00, 0x90, 0xDE, 0x2B, 0x00, 0xB0, 0xDE, 0x2B, 0x00, 0xD0, 0xDE, 0x2B, 0x00, 0xF0, 0xDE, + 0x2B, 0x00, 0x10, 0xDF, 0x2B, 0x00, 0x30, 0xDF, 0x2B, 0x00, 0x50, 0xDF, 0x2B, 0x00, 0x70, 0xDF, + 0x2B, 0x00, 0x90, 0xDF, 0x2B, 0x00, 0xB0, 0xDF, 0x2B, 0x00, 0xD0, 0xDF, 0x2B, 0x00, 0xF0, 0xDF, + 0x2B, 0x00, 0x10, 0xE0, 0x2B, 0x00, 0x30, 0xE0, 0x2B, 0x00, 0x50, 0xE0, 0x2B, 0x00, 0x70, 0xE0, + 0x2B, 0x00, 0x90, 0xE0, 0x2B, 0x00, 0xB0, 0xE0, 0x2B, 0x00, 0xD0, 0xE0, 0x2B, 0x00, 0xF0, 0xE0, + 0x2B, 0x00, 0x10, 0xE1, 0x2B, 0x00, 0x30, 0xE1, 0x2B, 0x00, 0x50, 0xE1, 0x2B, 0x00, 0x70, 0xE1, + 0x2B, 0x00, 0x90, 0xE1, 0x2B, 0x00, 0xB0, 0xE1, 0x2B, 0x00, 0xD0, 0xE1, 0x2B, 0x00, 0xF0, 0xE1, + 0x2B, 0x00, 0x10, 0xE2, 0x2B, 0x00, 0x30, 0xE2, 0x2B, 0x00, 0x50, 0xE2, 0x2B, 0x00, 0x70, 0xE2, + 0x2B, 0x00, 0x90, 0xE2, 0x2B, 0x00, 0xB0, 0xE2, 0x2B, 0x00, 0xD0, 0xE2, 0x2B, 0x00, 0xF0, 0xE2, + 0x2B, 0x00, 0x10, 0xE3, 0x2B, 0x00, 0x30, 0xE3, 0x2B, 0x00, 0x50, 0xE3, 0x2B, 0x00, 0x70, 0xE3, + 0x2B, 0x00, 0x90, 0xE3, 0x2B, 0x00, 0xB0, 0xE3, 0x2B, 0x00, 0xD0, 0xE3, 0x2B, 0x00, 0xF0, 0xE3, + 0x2B, 0x00, 0x10, 0xE4, 0x2B, 0x00, 0x30, 0xE4, 0x2B, 0x00, 0x50, 0xE4, 0x2B, 0x00, 0x70, 0xE4, + 0x2B, 0x00, 0x90, 0xE4, 0x2B, 0x00, 0xB0, 0xE4, 0x2B, 0x00, 0xD0, 0xE4, 0x2B, 0x00, 0xF0, 0xE4, + 0x2B, 0x00, 0x10, 0xE5, 0x2B, 0x00, 0x30, 0xE5, 0x2B, 0x00, 0x50, 0xE5, 0x2B, 0x00, 0x70, 0xE5, + 0x2B, 0x00, 0x90, 0xE5, 0x2B, 0x00, 0xB0, 0xE5, 0x2B, 0x00, 0xD0, 0xE5, 0x2B, 0x00, 0xF0, 0xE5, + 0x2B, 0x00, 0x10, 0xE6, 0x2B, 0x00, 0x30, 0xE6, 0x2B, 0x00, 0x50, 0xE6, 0x2B, 0x00, 0x70, 0xE6, + 0x2B, 0x00, 0x74, 0xE6, 0x2B, 0x00, 0x78, 0xE6, 0x2B, 0x00, 0x7C, 0xE6, 0x2B, 0x00, 0x80, 0xE6, + 0x2B, 0x00, 0x84, 0xE6, 0x2B, 0x00, 0x88, 0xE6, 0x2B, 0x00, 0x8C, 0xE6, 0x2B, 0x00, 0x90, 0xE6, + 0x2B, 0x00, 0x94, 0xE6, 0x2B, 0x00, 0x98, 0xE6, 0x2B, 0x00, 0x9C, 0xE6, 0x2B, 0x00, 0xA0, 0xE6, + 0x2B, 0x00, 0xA4, 0xE6, 0x2B, 0x00, 0xA8, 0xE6, 0x2B, 0x00, 0xAC, 0xE6, 0x2B, 0x00, 0xB0, 0xE6, + 0x2B, 0x00, 0xB4, 0xE6, 0x2B, 0x00, 0xB8, 0xE6, 0x2B, 0x00, 0xBC, 0xE6, 0x2B, 0x00, 0xC0, 0xE6, + 0x2B, 0x00, 0xC4, 0xE6, 0x2B, 0x00, 0xC8, 0xE6, 0x2B, 0x00, 0xCC, 0xE6, 0x2B, 0x00, 0xD0, 0xE6, + 0x2B, 0x00, 0xD4, 0xE6, 0x2B, 0x00, 0xD8, 0xE6, 0x2B, 0x00, 0xDC, 0xE6, 0x2B, 0x00, 0xE0, 0xE6, + 0x2B, 0x00, 0xE4, 0xE6, 0x2B, 0x00, 0xE8, 0xE6, 0x2B, 0x00, 0xEC, 0xE6, 0x2B, 0x00, 0xF0, 0xE6, + 0x2B, 0x00, 0xF4, 0xE6, 0x2B, 0x00, 0xF8, 0xE6, 0x2B, 0x00, 0xFC, 0xE6, 0x2B, 0x00, 0x00, 0xE7, + 0x2B, 0x00, 0x04, 0xE7, 0x2B, 0x00, 0x08, 0xE7, 0x2B, 0x00, 0x0C, 0xE7, 0x2B, 0x00, 0x10, 0xE7, + 0x2B, 0x00, 0x14, 0xE7, 0x2B, 0x00, 0x18, 0xE7, 0x2B, 0x00, 0x1C, 0xE7, 0x2B, 0x00, 0x20, 0xE7, + 0x2B, 0x00, 0x24, 0xE7, 0x2B, 0x00, 0x28, 0xE7, 0x2B, 0x00, 0x2C, 0xE7, 0x2B, 0x00, 0x30, 0xE7, + 0x2B, 0x00, 0x34, 0xE7, 0x2B, 0x00, 0x38, 0xE7, 0x2B, 0x00, 0x3C, 0xE7, 0x2B, 0x00, 0x40, 0xE7, + 0x2B, 0x00, 0x44, 0xE7, 0x2B, 0x00, 0x48, 0xE7, 0x2B, 0x00, 0x4C, 0xE7, 0x2B, 0x00, 0x50, 0xE7, + 0x2B, 0x00, 0x54, 0xE7, 0x2B, 0x00, 0x58, 0xE7, 0x2B, 0x00, 0x5C, 0xE7, 0x2B, 0x00, 0x60, 0xE7, + 0x2B, 0x00, 0x64, 0xE7, 0x2B, 0x00, 0x68, 0xE7, 0x2B, 0x00, 0x6C, 0xE7, 0x2B, 0x00, 0x70, 0xE7, + 0x2B, 0x00, 0x74, 0xE7, 0x2B, 0x00, 0x78, 0xE7, 0x2B, 0x00, 0x7C, 0xE7, 0x2B, 0x00, 0x80, 0xE7, + 0x2B, 0x00, 0x84, 0xE7, 0x2B, 0x00, 0x88, 0xE7, 0x2B, 0x00, 0x8C, 0xE7, 0x2B, 0x00, 0x90, 0xE7, + 0x2B, 0x00, 0x94, 0xE7, 0x2B, 0x00, 0x98, 0xE7, 0x2B, 0x00, 0x9C, 0xE7, 0x2B, 0x00, 0xA0, 0xE7, + 0x2B, 0x00, 0xA4, 0xE7, 0x2B, 0x00, 0xA8, 0xE7, 0x2B, 0x00, 0xAC, 0xE7, 0x2B, 0x00, 0xB0, 0xE7, + 0x2B, 0x00, 0xB4, 0xE7, 0x2B, 0x00, 0xB8, 0xE7, 0x2B, 0x00, 0xBC, 0xE7, 0x2B, 0x00, 0xC0, 0xE7, + 0x2B, 0x00, 0xC4, 0xE7, 0x2B, 0x00, 0xC8, 0xE7, 0x2B, 0x00, 0xCC, 0xE7, 0x2B, 0x00, 0xD0, 0xE7, + 0x2B, 0x00, 0xD4, 0xE7, 0x2B, 0x00, 0xD8, 0xE7, 0x2B, 0x00, 0xDC, 0xE7, 0x2B, 0x00, 0xE0, 0xE7, + 0x2B, 0x00, 0xE4, 0xE7, 0x2B, 0x00, 0xE8, 0xE7, 0x2B, 0x00, 0xEC, 0xE7, 0x2B, 0x00, 0xF0, 0xE7, + 0x2B, 0x00, 0xF4, 0xE7, 0x2B, 0x00, 0xF8, 0xE7, 0x2B, 0x00, 0xFC, 0xE7, 0x2B, 0x00, 0x00, 0xE8, + 0x2B, 0x00, 0x04, 0xE8, 0x2B, 0x00, 0x08, 0xE8, 0x2B, 0x00, 0x0C, 0xE8, 0x2B, 0x00, 0x10, 0xE8, + 0x2B, 0x00, 0x14, 0xE8, 0x2B, 0x00, 0x18, 0xE8, 0x2B, 0x00, 0x1C, 0xE8, 0x2B, 0x00, 0x20, 0xE8, + 0x2B, 0x00, 0x24, 0xE8, 0x2B, 0x00, 0x28, 0xE8, 0x2B, 0x00, 0x2C, 0xE8, 0x2B, 0x00, 0x50, 0xE8, + 0x2B, 0x00, 0x70, 0xE8, 0x2B, 0x00, 0x90, 0xE8, 0x2B, 0x00, 0xB0, 0xE8, 0x2B, 0x00, 0xD0, 0xE8, + 0x2B, 0x00, 0xF0, 0x38, 0x00, 0xF0, 0x89, 0xE9, 0x2B, 0x00, 0x30, 0xE9, 0x2B, 0x00, 0x50, 0xE9, + 0x2B, 0x00, 0x70, 0xE9, 0x2B, 0x00, 0x90, 0xE9, 0x2B, 0x00, 0xB0, 0xE9, 0x2B, 0x00, 0xD0, 0xE9, + 0x2B, 0x00, 0xF0, 0xE9, 0x2B, 0x00, 0x10, 0xEA, 0x2B, 0x00, 0x30, 0xEA, 0x2B, 0x00, 0x50, 0xEA, + 0x2B, 0x00, 0x70, 0xEA, 0x2B, 0x00, 0x90, 0xEA, 0x2B, 0x00, 0xB0, 0xEA, 0x2B, 0x00, 0xD4, 0xEA, + 0x2B, 0x00, 0xD8, 0xEA, 0x2B, 0x00, 0xDC, 0xEA, 0x2B, 0x00, 0xE0, 0xEA, 0x2B, 0x00, 0xE4, 0xEA, + 0x2B, 0x00, 0xE8, 0xEA, 0x2B, 0x00, 0xEC, 0xEA, 0x2B, 0x00, 0xF0, 0xEA, 0x2B, 0x00, 0xF4, 0xEA, + 0x2B, 0x00, 0xF8, 0xEA, 0x2B, 0x00, 0xFC, 0xEA, 0x2B, 0x00, 0x00, 0xEB, 0x2B, 0x00, 0x04, 0xEB, + 0x2B, 0x00, 0x08, 0xEB, 0x2B, 0x00, 0x0C, 0xEB, 0x2B, 0x00, 0x10, 0xEB, 0x2B, 0x00, 0x14, 0xEB, + 0x2B, 0x00, 0x18, 0xEB, 0x2B, 0x00, 0x38, 0xEB, 0x2B, 0x00, 0x58, 0xEB, 0x2B, 0x00, 0x78, 0xEB, + 0x2B, 0x00, 0x98, 0xEB, 0x2B, 0x00, 0xB8, 0xEB, 0x2B, 0x00, 0xD8, 0xEB, 0x2B, 0x00, 0xF8, 0x20, + 0x00, 0xF0, 0x45, 0xEC, 0x2B, 0x00, 0x38, 0xEC, 0x2B, 0x00, 0x5C, 0xEC, 0x2B, 0x00, 0x80, 0xEC, + 0x2B, 0x00, 0xA4, 0xEC, 0x2B, 0x00, 0xC4, 0xEC, 0x2B, 0x00, 0xE4, 0xEC, 0x2B, 0x00, 0x04, 0xED, + 0x2B, 0x00, 0x08, 0xED, 0x2B, 0x00, 0x0C, 0xED, 0x2B, 0x00, 0x10, 0xED, 0x2B, 0x00, 0x14, 0xED, + 0x2B, 0x00, 0x18, 0xED, 0x2B, 0x00, 0x1C, 0xED, 0x2B, 0x00, 0x20, 0xED, 0x2B, 0x00, 0x24, 0xED, + 0x2B, 0x00, 0x44, 0xED, 0x2B, 0x00, 0x64, 0xED, 0x2B, 0x00, 0x84, 0xED, 0x2B, 0x00, 0xA4, 0xED, + 0x2B, 0x00, 0xC8, 0xED, 0x2B, 0x00, 0xE8, 0x38, 0x00, 0xF3, 0xFF, 0x72, 0xEE, 0x2B, 0x00, 0x28, + 0xEE, 0x2B, 0x00, 0x48, 0xEE, 0x2B, 0x00, 0x68, 0xEE, 0x2B, 0x00, 0x88, 0xEE, 0x2B, 0x00, 0xB0, + 0xEE, 0x2B, 0x00, 0xD8, 0xEE, 0x2B, 0x00, 0x00, 0xEF, 0x2B, 0x00, 0x28, 0xEF, 0x2B, 0x00, 0x38, + 0xEF, 0x2B, 0x00, 0x48, 0xEF, 0x2B, 0x00, 0x58, 0xEF, 0x2B, 0x00, 0x68, 0xEF, 0x2B, 0x00, 0x6C, + 0xEF, 0x2B, 0x00, 0x70, 0xEF, 0x2B, 0x00, 0x74, 0xEF, 0x2B, 0x00, 0x78, 0xEF, 0x2B, 0x00, 0x7C, + 0xEF, 0x2B, 0x00, 0x80, 0xEF, 0x2B, 0x00, 0x84, 0xEF, 0x2B, 0x00, 0x88, 0xEF, 0x2B, 0x00, 0x8C, + 0xEF, 0x2B, 0x00, 0x90, 0xEF, 0x2B, 0x00, 0x94, 0xEF, 0x2B, 0x00, 0x98, 0xEF, 0x2B, 0x00, 0x9C, + 0xEF, 0x2B, 0x00, 0xA0, 0xEF, 0x2B, 0x00, 0xA4, 0xEF, 0x2B, 0x00, 0xA8, 0xEF, 0x2B, 0x00, 0xAC, + 0xEF, 0x2B, 0x00, 0xB0, 0xEF, 0x2B, 0x00, 0xB4, 0xEF, 0x2B, 0x00, 0xB8, 0xEF, 0x2B, 0x00, 0xBC, + 0xEF, 0x2B, 0x00, 0xDC, 0xEF, 0x2B, 0x00, 0xFC, 0xEF, 0x2B, 0x00, 0x00, 0xF0, 0x2B, 0x00, 0x2C, + 0xF0, 0x2B, 0x00, 0x58, 0xF0, 0x2B, 0x00, 0x84, 0xF0, 0x2B, 0x00, 0xA8, 0xF0, 0x2B, 0x00, 0xCC, + 0xF0, 0x2B, 0x00, 0xF0, 0xF0, 0x2B, 0x00, 0x14, 0xF1, 0x2B, 0x00, 0x38, 0xF1, 0x2B, 0x00, 0x5C, + 0xF1, 0x2B, 0x00, 0x80, 0xF1, 0x2B, 0x00, 0xA4, 0xF1, 0x2B, 0x00, 0xC8, 0xF1, 0x2B, 0x00, 0xEC, + 0xF1, 0x2B, 0x00, 0x10, 0xF2, 0x2B, 0x00, 0x34, 0xF2, 0x2B, 0x00, 0x58, 0xF2, 0x2B, 0x00, 0x7C, + 0xF2, 0x2B, 0x00, 0xA0, 0xF2, 0x2B, 0x00, 0xC4, 0xF2, 0x2B, 0x00, 0xE4, 0xF2, 0x2B, 0x00, 0x04, + 0xF3, 0x2B, 0x00, 0x24, 0xF3, 0x2B, 0x00, 0x44, 0xF3, 0x2B, 0x00, 0x64, 0xF3, 0x2B, 0x00, 0x84, + 0xF3, 0x2B, 0x00, 0xA4, 0xF3, 0x2B, 0x00, 0xC4, 0xF3, 0x2B, 0x00, 0xE4, 0xF3, 0x2B, 0x00, 0x04, + 0xF4, 0x2B, 0x00, 0x24, 0xF4, 0x2B, 0x00, 0x44, 0xF4, 0x2B, 0x00, 0x64, 0xF4, 0x2B, 0x00, 0x84, + 0xF4, 0x2B, 0x00, 0xA4, 0xF4, 0x2B, 0x00, 0xC4, 0xF4, 0x2B, 0x00, 0xE4, 0xF4, 0x2B, 0x00, 0x04, + 0xF5, 0x2B, 0x00, 0x24, 0xF5, 0x2B, 0x00, 0x44, 0xF5, 0x2B, 0x00, 0x64, 0xF5, 0x2B, 0x00, 0x84, + 0xF5, 0x2B, 0x00, 0xA4, 0xF5, 0x2B, 0x00, 0xC4, 0xF5, 0x2B, 0x00, 0xE4, 0xF5, 0x2B, 0x00, 0x04, + 0xF6, 0x2B, 0x00, 0x24, 0xF6, 0x2B, 0x00, 0x44, 0xF6, 0x2B, 0x00, 0x64, 0xF6, 0x2B, 0x00, 0x84, + 0xF6, 0x2B, 0x00, 0xA4, 0xF6, 0x2B, 0x00, 0xC4, 0xF6, 0x2B, 0x00, 0xE4, 0xF6, 0x2B, 0x00, 0x04, + 0xF7, 0x2B, 0x00, 0x24, 0xF7, 0x2B, 0x00, 0x44, 0xF7, 0x2B, 0x00, 0x64, 0xF7, 0x2B, 0x00, 0x84, + 0xF7, 0x2B, 0x00, 0xA4, 0xF7, 0x2B, 0x00, 0xC4, 0xF7, 0x2B, 0x00, 0x0F, 0x01, 0x08, 0x40, 0xE4, + 0xF7, 0x2B, 0x00, 0x8D, 0x0B, 0x31, 0xE8, 0xF7, 0x2B, 0x10, 0x00, 0x62, 0xF4, 0xF7, 0x2B, 0x00, + 0xFF, 0xFF, 0xB0, 0x49, 0x08, 0xE2, 0x4C, 0x00, 0xBD, 0x34, 0x13, 0xF8, 0x24, 0x00, 0x22, 0x00, + 0xF8, 0x24, 0x00, 0x0C, 0x20, 0x00, 0x22, 0x04, 0xF8, 0x20, 0x00, 0x1F, 0x0C, 0x20, 0x00, 0x04, + 0x13, 0x10, 0x20, 0x00, 0x26, 0x18, 0xF8, 0x64, 0x00, 0x08, 0x20, 0x00, 0x13, 0x1C, 0x20, 0x00, + 0x13, 0x24, 0x20, 0x00, 0x17, 0x0A, 0x20, 0x00, 0x00, 0xA4, 0x00, 0x13, 0x28, 0x20, 0x00, 0x13, + 0x34, 0x20, 0x00, 0x22, 0xFB, 0x03, 0xC4, 0x00, 0x39, 0x38, 0xF8, 0x2B, 0xA2, 0x4C, 0x17, 0x3C, + 0x60, 0x00, 0x05, 0x95, 0xFA, 0x0B, 0xC6, 0x4C, 0x1F, 0x40, 0x64, 0x00, 0x04, 0x13, 0x44, 0x64, + 0x00, 0x1B, 0x50, 0x64, 0x00, 0x1B, 0x54, 0x64, 0x00, 0x17, 0x58, 0xE4, 0x00, 0x00, 0xD6, 0x0B, + 0x13, 0x05, 0x30, 0x01, 0x04, 0x08, 0x00, 0x1B, 0x01, 0x58, 0x00, 0x13, 0x5C, 0x58, 0x00, 0x13, + 0x68, 0x38, 0x00, 0x1B, 0x04, 0xFC, 0x00, 0x13, 0x6C, 0x20, 0x00, 0x13, 0x74, 0x20, 0x00, 0x1B, + 0x07, 0x20, 0x00, 0x13, 0x78, 0x20, 0x00, 0x1F, 0x80, 0x3C, 0x01, 0x04, 0x13, 0x84, 0x20, 0x00, + 0x13, 0x8C, 0x20, 0x00, 0x0C, 0x80, 0x00, 0x13, 0x90, 0x20, 0x00, 0x1F, 0x9C, 0x60, 0x00, 0x04, + 0x13, 0xA0, 0x20, 0x00, 0x1F, 0xA8, 0x60, 0x00, 0x04, 0x13, 0xAC, 0x20, 0x00, 0x1F, 0xB4, 0x60, + 0x00, 0x04, 0x13, 0xB8, 0x20, 0x00, 0x1F, 0xC4, 0x60, 0x00, 0x04, 0x13, 0xC8, 0x20, 0x00, 0x1F, + 0xD0, 0x60, 0x00, 0x04, 0x13, 0xD4, 0x20, 0x00, 0x17, 0xDC, 0x60, 0x00, 0x13, 0x02, 0x5C, 0x00, + 0x26, 0x05, 0x00, 0x90, 0x02, 0x2E, 0x09, 0x00, 0x3C, 0x00, 0x13, 0xE0, 0x3C, 0x00, 0x13, 0xE8, + 0x3C, 0x00, 0x1B, 0x05, 0x20, 0x00, 0x13, 0xEC, 0x20, 0x00, 0x1F, 0xF4, 0x7C, 0x00, 0x04, 0x13, + 0xF8, 0x20, 0x00, 0x2A, 0x00, 0xF9, 0xDC, 0x00, 0x1F, 0x02, 0x6C, 0x00, 0x00, 0x23, 0x04, 0xF9, + 0xE4, 0x02, 0x1F, 0xF9, 0x6C, 0x00, 0x03, 0x13, 0x10, 0x20, 0x00, 0x2F, 0x18, 0xF9, 0xE4, 0x02, + 0x04, 0x03, 0x20, 0x00, 0x1F, 0x24, 0x20, 0x00, 0x04, 0x13, 0x28, 0x20, 0x00, 0x1F, 0x30, 0x20, + 0x00, 0x04, 0x13, 0x34, 0x20, 0x00, 0x1F, 0x3C, 0x20, 0x00, 0x04, 0x13, 0x40, 0x20, 0x00, 0x1F, + 0x48, 0x20, 0x00, 0x04, 0x13, 0x4C, 0x20, 0x00, 0x1F, 0x54, 0x20, 0x00, 0x04, 0x13, 0x58, 0x20, + 0x00, 0x1F, 0x60, 0x20, 0x00, 0x04, 0x13, 0x64, 0x20, 0x00, 0x1F, 0x6C, 0x20, 0x00, 0x04, 0x13, + 0x70, 0x20, 0x00, 0x1F, 0x78, 0x20, 0x00, 0x04, 0x13, 0x7C, 0x20, 0x00, 0x2F, 0x84, 0xF9, 0x80, + 0x03, 0x03, 0x13, 0x88, 0x20, 0x00, 0x1F, 0x94, 0x40, 0x00, 0x04, 0x13, 0x98, 0x20, 0x00, 0x1F, + 0xA0, 0x20, 0x00, 0x04, 0x13, 0xA4, 0x20, 0x00, 0x1F, 0xAC, 0x20, 0x00, 0x04, 0x13, 0xB0, 0x20, + 0x00, 0x1F, 0xB8, 0xEC, 0x01, 0x00, 0x17, 0x03, 0xCC, 0x03, 0x00, 0x38, 0x00, 0x17, 0x07, 0x74, + 0x02, 0x00, 0xA8, 0x00, 0x11, 0x0B, 0x04, 0x00, 0x20, 0x02, 0x00, 0xBD, 0x0F, 0x00, 0xF1, 0x0F, + 0x1F, 0x0E, 0xE8, 0x03, 0x00, 0x13, 0xBC, 0x60, 0x00, 0x1F, 0xC8, 0x20, 0x02, 0x04, 0x13, 0xCC, + 0x20, 0x00, 0x1F, 0xD4, 0xA0, 0x00, 0x04, 0x13, 0xD8, 0x20, 0x00, 0x1F, 0xE0, 0x20, 0x00, 0x04, + 0x13, 0xE4, 0x20, 0x00, 0x1F, 0xEC, 0x20, 0x00, 0x04, 0x13, 0xF0, 0x20, 0x00, 0x1F, 0xF8, 0x20, + 0x00, 0x04, 0x13, 0xFC, 0x20, 0x00, 0x2F, 0x04, 0xFA, 0x20, 0x00, 0x03, 0x22, 0x08, 0xFA, 0x20, + 0x00, 0x1F, 0x10, 0x20, 0x00, 0x04, 0x13, 0x14, 0x20, 0x00, 0x1F, 0x1C, 0x20, 0x00, 0x04, 0x13, + 0x20, 0x20, 0x00, 0x1F, 0x28, 0x20, 0x00, 0x04, 0x13, 0x2C, 0x20, 0x00, 0x1F, 0x34, 0x20, 0x00, + 0x04, 0x13, 0x38, 0x20, 0x00, 0x1F, 0x40, 0x20, 0x00, 0x04, 0x13, 0x44, 0x20, 0x00, 0x2F, 0x4C, + 0xFA, 0x48, 0x05, 0x03, 0x13, 0x50, 0x20, 0x00, 0x2F, 0x58, 0xFA, 0xA8, 0x04, 0x03, 0x13, 0x5C, + 0x20, 0x00, 0x1F, 0x68, 0x60, 0x00, 0x04, 0x13, 0x6C, 0x20, 0x00, 0x1F, 0x74, 0x20, 0x00, 0x04, + 0x13, 0x78, 0x20, 0x00, 0x1F, 0x80, 0x20, 0x00, 0x04, 0x13, 0x84, 0x20, 0x00, 0x1F, 0x8C, 0x20, + 0x00, 0x04, 0x13, 0x90, 0x20, 0x00, 0x1F, 0x98, 0x20, 0x00, 0x04, 0x13, 0x9C, 0x20, 0x00, 0x1F, + 0xA4, 0x20, 0x00, 0x04, 0x13, 0xA8, 0x20, 0x00, 0x1F, 0xB0, 0x20, 0x00, 0x04, 0x13, 0xB4, 0x20, + 0x00, 0x1F, 0xBC, 0x20, 0x00, 0x04, 0x13, 0xC0, 0x20, 0x00, 0x1F, 0xC8, 0x20, 0x00, 0x04, 0x13, + 0xCC, 0x20, 0x00, 0x1F, 0xD4, 0x20, 0x00, 0x04, 0x13, 0xD8, 0x20, 0x00, 0x1F, 0xE0, 0x20, 0x00, + 0x04, 0x13, 0xE4, 0x20, 0x00, 0x1F, 0xEC, 0x20, 0x00, 0x04, 0x13, 0xF0, 0x20, 0x00, 0x1F, 0xF8, + 0x20, 0x00, 0x04, 0x13, 0xFC, 0x20, 0x00, 0x2F, 0x04, 0xFB, 0xA0, 0x02, 0x04, 0x13, 0xFB, 0xA0, + 0x02, 0x0F, 0x20, 0x00, 0x04, 0x13, 0x14, 0x20, 0x00, 0x1F, 0x1C, 0x20, 0x00, 0x04, 0x13, 0x20, + 0x20, 0x00, 0x1F, 0x28, 0x20, 0x00, 0x04, 0x13, 0x2C, 0x20, 0x00, 0x1F, 0x34, 0x20, 0x00, 0x04, + 0x13, 0x38, 0x20, 0x00, 0x1F, 0x40, 0x20, 0x00, 0x04, 0x13, 0x44, 0x20, 0x00, 0x1F, 0x4C, 0x20, + 0x00, 0x04, 0x13, 0x50, 0x20, 0x00, 0x1F, 0x58, 0x20, 0x00, 0x04, 0x13, 0x5C, 0x20, 0x00, 0x1F, + 0x64, 0x20, 0x00, 0x04, 0x13, 0x68, 0x20, 0x00, 0x1F, 0x70, 0x20, 0x00, 0x04, 0x13, 0x74, 0x20, + 0x00, 0x1F, 0x7C, 0x20, 0x00, 0x04, 0x13, 0x80, 0x20, 0x00, 0x1F, 0x88, 0x20, 0x00, 0x04, 0x13, + 0x8C, 0x20, 0x00, 0x1F, 0x94, 0x20, 0x00, 0x04, 0x13, 0x98, 0x20, 0x00, 0x1F, 0xA0, 0x20, 0x00, + 0x04, 0x13, 0xA4, 0x20, 0x00, 0x1F, 0xAC, 0x20, 0x00, 0x04, 0x13, 0xB0, 0x20, 0x00, 0x1F, 0xB8, + 0x20, 0x00, 0x04, 0x13, 0xBC, 0x20, 0x00, 0x1F, 0xC4, 0x20, 0x00, 0x04, 0x13, 0xC8, 0x20, 0x00, + 0x2F, 0xD0, 0xFB, 0xE0, 0x03, 0x03, 0x13, 0xD4, 0x20, 0x00, 0x1F, 0xE0, 0x40, 0x00, 0x04, 0x13, + 0xE4, 0x20, 0x00, 0x1F, 0xEC, 0x20, 0x00, 0x04, 0x13, 0xF0, 0x20, 0x00, 0x1F, 0xF8, 0x20, 0x00, + 0x04, 0x13, 0xFC, 0x20, 0x00, 0x2F, 0x04, 0xFC, 0xA0, 0x02, 0x04, 0x13, 0xFC, 0xA0, 0x02, 0x0F, + 0x20, 0x00, 0x04, 0x13, 0x14, 0x20, 0x00, 0x1F, 0x1C, 0x20, 0x00, 0x04, 0x13, 0x20, 0x20, 0x00, + 0x1F, 0x28, 0x20, 0x00, 0x04, 0x13, 0x2C, 0x20, 0x00, 0x1F, 0x34, 0x20, 0x00, 0x04, 0x13, 0x38, + 0x20, 0x00, 0x1F, 0x40, 0x20, 0x00, 0x04, 0x13, 0x44, 0x20, 0x00, 0x1F, 0x4C, 0x20, 0x00, 0x04, + 0x13, 0x50, 0x20, 0x00, 0x1F, 0x58, 0x20, 0x00, 0x04, 0x13, 0x5C, 0x20, 0x00, 0x1F, 0x64, 0x20, + 0x00, 0x04, 0x13, 0x68, 0x20, 0x00, 0x1F, 0x70, 0x20, 0x00, 0x04, 0x13, 0x74, 0x20, 0x00, 0x1F, + 0x7C, 0x20, 0x00, 0x04, 0x13, 0x80, 0x20, 0x00, 0x1F, 0x88, 0x20, 0x00, 0x04, 0x13, 0x8C, 0x20, + 0x00, 0x1F, 0x94, 0x20, 0x00, 0x04, 0x13, 0x98, 0x20, 0x00, 0x1F, 0xA0, 0x20, 0x00, 0x04, 0x13, + 0xA4, 0x20, 0x00, 0x1F, 0xAC, 0x20, 0x00, 0x04, 0x13, 0xB0, 0x20, 0x00, 0x1F, 0xB8, 0x20, 0x00, + 0x04, 0x13, 0xBC, 0x20, 0x00, 0x1F, 0xC4, 0x20, 0x00, 0x04, 0x13, 0xC8, 0x20, 0x00, 0x1F, 0xD0, + 0x20, 0x00, 0x04, 0x13, 0xD4, 0x20, 0x00, 0x1F, 0xDC, 0x20, 0x00, 0x04, 0x13, 0xE0, 0x20, 0x00, + 0x1F, 0xE8, 0x20, 0x00, 0x04, 0x13, 0xEC, 0x20, 0x00, 0x1F, 0xF4, 0x20, 0x00, 0x04, 0x13, 0xF8, + 0x20, 0x00, 0x2F, 0x00, 0xFD, 0x20, 0x00, 0x03, 0x23, 0x04, 0xFD, 0xC0, 0x0A, 0x0F, 0x20, 0x00, + 0x04, 0x13, 0x10, 0x20, 0x00, 0x1F, 0x18, 0x20, 0x00, 0x04, 0x13, 0x1C, 0x20, 0x00, 0x1F, 0x24, + 0x20, 0x00, 0x04, 0x13, 0x28, 0x20, 0x00, 0x1F, 0x30, 0x20, 0x00, 0x04, 0x13, 0x34, 0x20, 0x00, + 0x1F, 0x3C, 0x20, 0x00, 0x04, 0x13, 0x40, 0x20, 0x00, 0x2F, 0x48, 0xFD, 0xE0, 0x03, 0x03, 0x13, + 0x4C, 0x20, 0x00, 0x1F, 0x58, 0x40, 0x00, 0x04, 0x13, 0x5C, 0x20, 0x00, 0x1F, 0x64, 0x20, 0x00, + 0x04, 0x13, 0x68, 0x20, 0x00, 0x1F, 0x70, 0x20, 0x00, 0x04, 0x13, 0x74, 0x20, 0x00, 0x1F, 0x7C, + 0x20, 0x00, 0x04, 0x13, 0x80, 0x20, 0x00, 0x1F, 0x88, 0x20, 0x00, 0x04, 0x13, 0x8C, 0x20, 0x00, + 0x1F, 0x94, 0x20, 0x00, 0x04, 0x13, 0x98, 0x20, 0x00, 0x1F, 0xA0, 0x20, 0x00, 0x04, 0x13, 0xA4, + 0x20, 0x00, 0x1F, 0xAC, 0x20, 0x00, 0x04, 0x13, 0xB0, 0x20, 0x00, 0x1F, 0xB8, 0x20, 0x00, 0x04, + 0x13, 0xBC, 0x20, 0x00, 0x1F, 0xC4, 0x20, 0x00, 0x04, 0x13, 0xC8, 0x20, 0x00, 0x1F, 0xD0, 0x20, + 0x00, 0x04, 0x13, 0xD4, 0x20, 0x00, 0x1F, 0xDC, 0x20, 0x00, 0x04, 0x13, 0xE0, 0x20, 0x00, 0x1F, + 0xE8, 0x20, 0x00, 0x04, 0x13, 0xEC, 0x20, 0x00, 0x1F, 0xF4, 0x20, 0x00, 0x04, 0x13, 0xF8, 0x20, + 0x00, 0x2F, 0x00, 0xFE, 0xA0, 0x02, 0x04, 0x13, 0xFE, 0xA0, 0x02, 0x0F, 0x20, 0x00, 0x04, 0x13, + 0x10, 0x20, 0x00, 0x1F, 0x18, 0x20, 0x00, 0x04, 0x13, 0x1C, 0x20, 0x00, 0x1F, 0x24, 0x20, 0x00, + 0x04, 0x13, 0x28, 0x20, 0x00, 0x1F, 0x30, 0x20, 0x00, 0x04, 0x13, 0x34, 0x20, 0x00, 0x1F, 0x3C, + 0x20, 0x00, 0x04, 0x13, 0x40, 0x20, 0x00, 0x1F, 0x48, 0x20, 0x00, 0x04, 0x13, 0x4C, 0x20, 0x00, + 0x1F, 0x54, 0x20, 0x00, 0x04, 0x13, 0x58, 0x20, 0x00, 0x1F, 0x60, 0x20, 0x00, 0x04, 0x13, 0x64, + 0x20, 0x00, 0x1F, 0x6C, 0x20, 0x00, 0x04, 0x13, 0x70, 0x20, 0x00, 0x1F, 0x78, 0x20, 0x00, 0x04, + 0x13, 0x7C, 0x20, 0x00, 0x1F, 0x84, 0x20, 0x00, 0x04, 0x13, 0x88, 0x20, 0x00, 0x1F, 0x90, 0x20, + 0x00, 0x04, 0x13, 0x94, 0x20, 0x00, 0x1F, 0x9C, 0x20, 0x00, 0x04, 0x13, 0xA0, 0x20, 0x00, 0x1F, + 0xA8, 0x20, 0x00, 0x04, 0x13, 0xAC, 0x20, 0x00, 0x1F, 0xB4, 0x20, 0x00, 0x04, 0x13, 0xB8, 0x20, + 0x00, 0x1F, 0xC0, 0x20, 0x00, 0x04, 0x13, 0xC4, 0x20, 0x00, 0x2F, 0xCC, 0xFE, 0xE0, 0x0B, 0x03, + 0x13, 0xD0, 0x20, 0x00, 0x1F, 0xD8, 0x40, 0x00, 0x04, 0x13, 0xDC, 0x20, 0x00, 0x1F, 0xE4, 0x20, + 0x00, 0x04, 0x13, 0xE8, 0x20, 0x00, 0x1F, 0xF0, 0x20, 0x00, 0x04, 0x13, 0xF4, 0x20, 0x00, 0x1F, + 0xFC, 0x20, 0x00, 0x04, 0x22, 0x00, 0xFF, 0x20, 0x00, 0x2F, 0x08, 0xFF, 0xC0, 0x0E, 0x03, 0x13, + 0x0C, 0x20, 0x00, 0x2F, 0x18, 0xFF, 0xA0, 0x02, 0x04, 0x03, 0x20, 0x00, 0x2E, 0x24, 0xFF, 0xE8, + 0x10, 0x0F, 0x7C, 0x0E, 0x0D, 0x13, 0x0C, 0x74, 0x0E, 0x00, 0xBC, 0x13, 0x00, 0xB6, 0x1B, 0x00, + 0xC8, 0x2F, 0x00, 0x1E, 0x22, 0x00, 0xE0, 0x29, 0x00, 0xE8, 0x2C, 0x00, 0xB3, 0x39, 0x00, 0x7E, + 0x49, 0x00, 0x2C, 0x38, 0x00, 0xCA, 0x39, 0x13, 0x19, 0x72, 0x2A, 0x00, 0x2C, 0x2B, 0x13, 0x1C, + 0x72, 0x60, 0x00, 0x55, 0x4A, 0x00, 0x6D, 0x3D, 0x00, 0x90, 0x2C, 0x00, 0x31, 0x3B, 0x00, 0x0E, + 0x53, 0x00, 0x2C, 0x61, 0x00, 0xF2, 0x1E, 0x00, 0xF2, 0x4A, 0x00, 0xB6, 0x1F, 0x00, 0x3A, 0x1E, + 0x00, 0xAC, 0x30, 0x00, 0x64, 0x59, 0x00, 0x03, 0x22, 0x00, 0xFA, 0x12, 0x00, 0x36, 0x20, 0x00, + 0x98, 0x33, 0x00, 0x32, 0x8A, 0x00, 0xF6, 0x39, 0x00, 0xDB, 0x4E, 0x00, 0x50, 0x48, 0x00, 0xC9, + 0x34, 0x00, 0xF3, 0x2A, 0x00, 0x25, 0x29, 0x00, 0x03, 0x21, 0x00, 0x37, 0x4E, 0x00, 0x8C, 0x35, + 0x00, 0xC9, 0x63, 0x00, 0x75, 0x4B, 0x00, 0x32, 0x48, 0x00, 0x37, 0xB3, 0x00, 0x5F, 0x59, 0x00, + 0x8B, 0x2B, 0x00, 0x4F, 0x61, 0x00, 0xED, 0x2B, 0x00, 0x3E, 0x5A, 0x00, 0x3F, 0x1F, 0x00, 0xBB, + 0x56, 0x00, 0xF7, 0x35, 0x00, 0x18, 0x48, 0x00, 0x0F, 0x29, 0x00, 0xE5, 0x6D, 0x00, 0x66, 0x2D, + 0x00, 0x59, 0x31, 0x00, 0x00, 0x23, 0x00, 0x33, 0x20, 0x00, 0x19, 0x20, 0x00, 0x7C, 0x4F, 0x00, + 0xDF, 0x2A, 0x00, 0xE4, 0x2F, 0x00, 0xE4, 0x27, 0x00, 0x97, 0x32, 0x00, 0x58, 0x1F, 0x00, 0xE4, + 0x34, 0x00, 0x7F, 0x72, 0x00, 0xCB, 0x30, 0x00, 0xF8, 0x4B, 0x00, 0x5F, 0x34, 0x00, 0xED, 0x6F, + 0x00, 0x6F, 0x33, 0x00, 0x1C, 0x49, 0x00, 0x20, 0x1F, 0x10, 0x5D, 0xDB, 0x30, 0x00, 0x34, 0x1E, + 0x03, 0x8C, 0x5E, 0x00, 0xEE, 0x62, 0x00, 0x89, 0x6A, 0x00, 0xAA, 0x63, 0x00, 0x63, 0x2B, 0x00, + 0x2E, 0x77, 0x00, 0xE8, 0x40, 0x00, 0xCD, 0x21, 0x00, 0xF5, 0x53, 0x00, 0xE2, 0x3A, 0x00, 0xC5, + 0x4F, 0x00, 0x6D, 0x89, 0x00, 0x93, 0x6F, 0x00, 0x78, 0x5A, 0x00, 0x6C, 0x36, 0x00, 0x72, 0x70, + 0x11, 0x70, 0x04, 0x00, 0x20, 0x02, 0x00, 0x5A, 0x56, 0x04, 0x44, 0x15, 0x22, 0x28, 0xFF, 0x44, + 0x15, 0x13, 0x2C, 0xDC, 0x01, 0x17, 0x38, 0xFC, 0x01, 0x0C, 0x08, 0x13, 0x13, 0x3C, 0x24, 0x00, + 0x1F, 0x44, 0x20, 0x02, 0x04, 0x13, 0x48, 0x20, 0x00, 0x1F, 0x50, 0x20, 0x00, 0x04, 0x13, 0x54, + 0x20, 0x00, 0x2F, 0x5C, 0xFF, 0x68, 0x13, 0x03, 0x13, 0x60, 0x20, 0x00, 0x1F, 0x68, 0x40, 0x00, + 0x04, 0x13, 0x6C, 0x20, 0x00, 0x1F, 0x74, 0x40, 0x00, 0x04, 0x13, 0x78, 0x20, 0x00, 0x1F, 0x80, + 0x40, 0x00, 0x04, 0x13, 0x84, 0x20, 0x00, 0x1F, 0x8C, 0x40, 0x00, 0x04, 0x13, 0x90, 0x20, 0x00, + 0x1F, 0x98, 0x40, 0x00, 0x04, 0x13, 0x9C, 0x20, 0x00, 0x1F, 0xA4, 0x40, 0x00, 0x04, 0x13, 0xA8, + 0x20, 0x00, 0x2F, 0xB0, 0xFF, 0x00, 0x08, 0x03, 0x13, 0xB4, 0x20, 0x00, 0x13, 0xC0, 0x20, 0x00, + 0x22, 0x04, 0x04, 0x24, 0x00, 0x13, 0xC4, 0x84, 0x01, 0x13, 0xC8, 0x20, 0x00, 0x1B, 0xD4, 0x20, + 0x00, 0x13, 0xD8, 0x20, 0x00, 0x13, 0xDC, 0x20, 0x00, 0x1B, 0xE8, 0x20, 0x00, 0x13, 0xEC, 0x20, + 0x00, 0x13, 0xF0, 0x20, 0x00, 0x1B, 0xFC, 0x20, 0x00, 0x33, 0x00, 0x00, 0x2C, 0xA4, 0x03, 0x12, + 0x2C, 0xE0, 0x0B, 0x29, 0x00, 0x2C, 0x20, 0x00, 0x13, 0x14, 0x20, 0x00, 0x13, 0x18, 0x20, 0x00, + 0x13, 0x24, 0x20, 0x00, 0x0F, 0x80, 0x16, 0x05, 0x3F, 0x28, 0x00, 0x2C, 0x24, 0x17, 0x02, 0x13, + 0x2C, 0x40, 0x00, 0x3F, 0x34, 0x00, 0x2C, 0x60, 0x04, 0x02, 0x13, 0x38, 0x20, 0x00, 0x39, 0x44, + 0x00, 0x2C, 0xA0, 0x16, 0x39, 0x48, 0x00, 0x2C, 0x60, 0x00, 0x39, 0x4C, 0x00, 0x2C, 0x60, 0x04, + 0x1F, 0x01, 0x64, 0x04, 0x10, 0x1B, 0x13, 0x74, 0x15, 0x13, 0x07, 0x1C, 0x00, 0x1F, 0x13, 0x0C, + 0x18, 0x00, 0x13, 0x50, 0x88, 0x00, 0x1F, 0x58, 0xC8, 0x00, 0x04, 0x13, 0x5C, 0x20, 0x00, 0x1F, + 0x64, 0x20, 0x00, 0x04, 0x13, 0x68, 0x20, 0x00, 0x1B, 0x70, 0x48, 0x01, 0x13, 0x74, 0x48, 0x01, + 0x13, 0x78, 0x20, 0x00, 0x1F, 0x84, 0x48, 0x01, 0x0C, 0x1F, 0x88, 0x28, 0x01, 0x04, 0x13, 0x8C, + 0x40, 0x00, 0x1F, 0x98, 0x20, 0x00, 0x04, 0x13, 0x9C, 0x20, 0x00, 0x1F, 0xA8, 0x20, 0x00, 0x04, + 0x13, 0xAC, 0x20, 0x00, 0x1F, 0xB8, 0x20, 0x00, 0x04, 0x13, 0xBC, 0x20, 0x00, 0x1B, 0xC8, 0x88, + 0x01, 0x1B, 0xCC, 0x88, 0x01, 0x17, 0xD0, 0x88, 0x01, 0x04, 0x24, 0x00, 0x1B, 0xD4, 0x24, 0x00, + 0x13, 0xD8, 0x24, 0x00, 0x00, 0x6C, 0x01, 0x13, 0xFE, 0x24, 0x00, 0x31, 0xDC, 0x00, 0x2C, 0xAC, + 0x01, 0x32, 0xE0, 0x00, 0x2C, 0x98, 0x0E, 0x03, 0x24, 0x00, 0x01, 0x83, 0x06, 0x03, 0x24, 0x00, + 0x31, 0xF8, 0x00, 0x2C, 0xC8, 0x01, 0x13, 0xFC, 0x24, 0x00, 0x22, 0x14, 0x01, 0x24, 0x00, 0x13, + 0xF4, 0x20, 0x00, 0x22, 0x1C, 0x01, 0xA4, 0x00, 0x13, 0x20, 0x08, 0x00, 0x1B, 0x24, 0x20, 0x00, + 0x13, 0x28, 0x18, 0x00, 0x13, 0x2C, 0x08, 0x00, 0x3F, 0x30, 0x01, 0x2C, 0x14, 0x15, 0x02, 0x0C, + 0x10, 0x00, 0x13, 0x19, 0x14, 0x00, 0x31, 0x34, 0x01, 0x2C, 0x28, 0x02, 0x13, 0x38, 0x40, 0x00, + 0x13, 0x4C, 0x40, 0x00, 0x04, 0x20, 0x00, 0x13, 0x50, 0x20, 0x00, 0x13, 0x54, 0x20, 0x00, 0x1B, + 0x68, 0x20, 0x00, 0x13, 0x6C, 0x20, 0x00, 0x13, 0x70, 0x20, 0x00, 0x3F, 0x84, 0x01, 0x2C, 0xB4, + 0x08, 0x03, 0x03, 0x20, 0x00, 0x2A, 0x90, 0x01, 0x6C, 0x01, 0x2A, 0x94, 0x01, 0x48, 0x01, 0x26, + 0x98, 0x01, 0x6C, 0x02, 0x0D, 0x78, 0x04, 0x03, 0x44, 0x00, 0x1F, 0xA4, 0x64, 0x00, 0x04, 0x13, + 0xA8, 0x20, 0x00, 0x1F, 0xB0, 0x20, 0x00, 0x04, 0x13, 0xB4, 0x20, 0x00, 0x1F, 0xBC, 0x20, 0x00, + 0x04, 0x13, 0xC0, 0x20, 0x00, 0x1F, 0xC8, 0x20, 0x00, 0x04, 0x13, 0xCC, 0x20, 0x00, 0x2F, 0xD4, + 0x01, 0xD0, 0x02, 0x0B, 0x13, 0xD8, 0x20, 0x00, 0x14, 0xEF, 0x08, 0x02, 0x0B, 0xE4, 0x00, 0x17, + 0xE0, 0xA4, 0x01, 0x35, 0xE4, 0x01, 0x2C, 0x28, 0x00, 0x1B, 0xE8, 0x28, 0x00, 0x17, 0xEC, 0x28, + 0x00, 0x17, 0xF0, 0x28, 0x00, 0x1B, 0xF4, 0x28, 0x00, 0x17, 0xF8, 0x28, 0x00, 0x17, 0xFC, 0x28, + 0x00, 0x2A, 0x00, 0x02, 0x28, 0x00, 0x26, 0x04, 0x02, 0x28, 0x00, 0x5B, 0x08, 0x02, 0x2C, 0x00, + 0x0B, 0xBC, 0x00, 0x1F, 0x07, 0x10, 0x00, 0x1C, 0x0C, 0x76, 0x17, 0x04, 0x68, 0x02, 0xD3, 0x01, + 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x05, 0x22, 0x00, 0x11, 0x02, + 0x02, 0x00, 0x5D, 0x03, 0x00, 0x02, 0x00, 0x04, 0xB8, 0x04, 0x08, 0x0C, 0x00, 0x1B, 0x13, 0x5A, + 0x00, 0x22, 0x0C, 0x02, 0x74, 0x01, 0x26, 0x14, 0x02, 0x60, 0x03, 0x08, 0x20, 0x00, 0x13, 0x18, + 0x20, 0x00, 0x13, 0x20, 0x20, 0x00, 0x2A, 0x00, 0x00, 0x70, 0x06, 0x5B, 0x20, 0x03, 0xE0, 0x01, + 0x16, 0x34, 0x00, 0x1B, 0x24, 0x18, 0x01, 0x0F, 0x2C, 0x00, 0x09, 0x1F, 0x2C, 0x2C, 0x00, 0x18, + 0x17, 0x34, 0x2C, 0x00, 0x35, 0x06, 0x00, 0xFE, 0x1A, 0x07, 0x5F, 0x2E, 0x00, 0x2C, 0x00, 0x1D, + 0x3A, 0x01, 0x00, 0x31, 0x06, 0x00, 0xFD, 0x24, 0x00, 0x1F, 0x30, 0x24, 0x00, 0x0A, 0x11, 0xFC, + 0x24, 0x00, 0x1F, 0x60, 0x24, 0x00, 0x0A, 0x11, 0xFB, 0x24, 0x00, 0x1F, 0x90, 0x24, 0x00, 0x0A, + 0x11, 0xFA, 0x24, 0x00, 0x1F, 0xC0, 0x24, 0x00, 0x0A, 0x11, 0xF9, 0x24, 0x00, 0x1F, 0xF0, 0x24, + 0x00, 0x0A, 0x11, 0xF8, 0x24, 0x00, 0x2F, 0x20, 0x01, 0x24, 0x00, 0x09, 0x11, 0xF7, 0x24, 0x00, + 0x1F, 0x50, 0x24, 0x00, 0x0A, 0x11, 0xF6, 0x24, 0x00, 0x1F, 0x80, 0x24, 0x00, 0x0A, 0x11, 0xF5, + 0x24, 0x00, 0x1F, 0xB0, 0x24, 0x00, 0x08, 0x33, 0x04, 0x00, 0xF4, 0xF6, 0x01, 0x5D, 0x2E, 0x00, + 0xDF, 0x01, 0x8A, 0x6C, 0x08, 0x20, 0x3C, 0x02, 0x60, 0x05, 0x13, 0x99, 0x52, 0x04, 0x7F, 0xB8, + 0x00, 0x46, 0x00, 0x2C, 0x00, 0x1E, 0x48, 0x00, 0x02, 0x10, 0x98, 0x3C, 0x44, 0x23, 0x00, 0x48, + 0x24, 0x00, 0x0C, 0x48, 0x00, 0x11, 0x48, 0x48, 0x00, 0x20, 0x94, 0xFF, 0xB2, 0x0B, 0x5F, 0x90, + 0x00, 0xB8, 0x00, 0xBE, 0x90, 0x00, 0x04, 0x40, 0x0A, 0x00, 0x93, 0xFF, 0xE2, 0x0B, 0x5F, 0x50, + 0x01, 0xB8, 0x00, 0x5E, 0x6C, 0x00, 0x00, 0x80, 0x92, 0xFF, 0x1F, 0x00, 0x06, 0x00, 0x91, 0xFF, + 0x7A, 0x0A, 0x5E, 0xB0, 0x01, 0xB8, 0x00, 0x2E, 0x90, 0x00, 0x09, 0x01, 0x00, 0x02, 0xDA, 0x7C, + 0x40, 0x34, 0x00, 0x58, 0x02, 0xCB, 0x2B, 0x2B, 0x80, 0x3F, 0x1F, 0x00, 0x2F, 0x3F, 0x10, 0x3B, + 0x00, 0x07, 0x10, 0x3F, 0x30, 0x00, 0x0F, 0x20, 0x00, 0x07, 0x00, 0x4C, 0x00, 0x1F, 0xC0, 0x20, + 0x00, 0x08, 0x11, 0xC0, 0xE7, 0x0B, 0x0E, 0x60, 0x00, 0x0F, 0xA0, 0x00, 0x09, 0x2F, 0x00, 0x00, + 0xA0, 0x00, 0x0B, 0x2F, 0x80, 0x3F, 0xA0, 0x00, 0x8B, 0x0F, 0x40, 0x01, 0x0D, 0x2F, 0x80, 0x3F, + 0xA0, 0x00, 0x8B, 0x0F, 0x40, 0x01, 0x0D, 0x2F, 0x80, 0x3F, 0xA0, 0x00, 0x8B, 0x0F, 0x40, 0x01, + 0x0D, 0x0D, 0x00, 0x03, 0x01, 0xC0, 0x0D, 0x00, 0xCE, 0x0E, 0x3F, 0x78, 0x00, 0x04, 0x84, 0x00, + 0x02, 0x11, 0x0F, 0x88, 0x0A, 0x0F, 0x20, 0x00, 0x02, 0x01, 0xA0, 0x00, 0x11, 0x0F, 0x98, 0x09, + 0x0E, 0x20, 0x00, 0x04, 0xA0, 0x00, 0x11, 0x0F, 0xF4, 0x08, 0x0E, 0x20, 0x00, 0x04, 0xA0, 0x00, + 0x11, 0x0F, 0xD0, 0x07, 0x0F, 0x80, 0x00, 0x06, 0x2F, 0x00, 0x04, 0x5F, 0x01, 0x0B, 0x01, 0x40, + 0x00, 0x7F, 0x3A, 0x00, 0xF8, 0x00, 0xA6, 0x01, 0x14, 0x21, 0x00, 0x02, 0x02, 0xB4, 0x0A, 0x1F, + 0x14, 0x64, 0x01, 0x06, 0x06, 0xD4, 0x0A, 0x0C, 0x24, 0x00, 0x6E, 0x20, 0x40, 0x00, 0x00, 0x40, + 0x40, 0x40, 0x00, 0x0F, 0x60, 0x00, 0x16, 0x01, 0x20, 0x01, 0x0F, 0x60, 0x00, 0x07, 0x00, 0x03, + 0x10, 0x1F, 0x20, 0x60, 0x00, 0x28, 0x06, 0x60, 0x01, 0x11, 0x16, 0x00, 0x08, 0x1F, 0x14, 0x60, + 0x01, 0x02, 0x0F, 0x60, 0x00, 0x09, 0xF3, 0x3E, 0x54, 0x02, 0x2C, 0x00, 0x58, 0x02, 0x2C, 0x00, + 0x5C, 0x02, 0x2C, 0x00, 0x60, 0x02, 0x2C, 0x00, 0x6C, 0x02, 0x2C, 0x00, 0x70, 0x02, 0x2C, 0x00, + 0x74, 0x02, 0x2C, 0x00, 0x80, 0x02, 0x2C, 0x00, 0x84, 0x02, 0x2C, 0x00, 0x88, 0x02, 0x2C, 0x00, + 0x94, 0x02, 0x2C, 0x00, 0x98, 0x02, 0x2C, 0x00, 0x9C, 0x02, 0x2C, 0x00, 0xA8, 0x02, 0x2C, 0x00, + 0xAC, 0x02, 0x2C, 0x00, 0xB0, 0x02, 0x2C, 0x00, 0xBC, 0x02, 0x2C, 0x00, 0xC0, 0x02, 0x2C, 0x00, + 0xC4, 0x02, 0x2C, 0x00, 0xC8, 0x48, 0x08, 0xF2, 0x07, 0xD4, 0x02, 0x2C, 0x00, 0xE0, 0x02, 0x2C, + 0x00, 0xEC, 0x02, 0x2C, 0x00, 0xF0, 0x02, 0x2C, 0x00, 0xF4, 0x02, 0x2C, 0x00, 0xF8, 0x02, 0x9C, + 0x0B, 0xF0, 0xFF, 0xC3, 0x04, 0x03, 0x2C, 0x00, 0x10, 0x03, 0x2C, 0x00, 0x14, 0x03, 0x2C, 0x00, + 0x18, 0x03, 0x2C, 0x00, 0x1C, 0x03, 0x2C, 0x00, 0x28, 0x03, 0x2C, 0x00, 0x2C, 0x03, 0x2C, 0x00, + 0x30, 0x03, 0x2C, 0x00, 0x3C, 0x03, 0x2C, 0x00, 0x40, 0x03, 0x2C, 0x00, 0x44, 0x03, 0x2C, 0x00, + 0x50, 0x03, 0x2C, 0x00, 0x54, 0x03, 0x2C, 0x00, 0x58, 0x03, 0x2C, 0x00, 0x64, 0x03, 0x2C, 0x00, + 0x68, 0x03, 0x2C, 0x00, 0x6C, 0x03, 0x2C, 0x00, 0x70, 0x03, 0x2C, 0x00, 0x7C, 0x03, 0x2C, 0x00, + 0x80, 0x03, 0x2C, 0x00, 0x84, 0x03, 0x2C, 0x00, 0x90, 0x03, 0x2C, 0x00, 0x94, 0x03, 0x2C, 0x00, + 0x98, 0x03, 0x2C, 0x00, 0xA4, 0x03, 0x2C, 0x00, 0xA8, 0x03, 0x2C, 0x00, 0xAC, 0x03, 0x2C, 0x00, + 0xB0, 0x03, 0x2C, 0x00, 0xBC, 0x03, 0x2C, 0x00, 0xC0, 0x03, 0x2C, 0x00, 0xC4, 0x03, 0x2C, 0x00, + 0xD0, 0x03, 0x2C, 0x00, 0xD4, 0x03, 0x2C, 0x00, 0xD8, 0x03, 0x2C, 0x00, 0xE4, 0x03, 0x2C, 0x00, + 0xE8, 0x03, 0x2C, 0x00, 0xEC, 0x03, 0x2C, 0x00, 0xF8, 0x03, 0x2C, 0x00, 0xFC, 0x03, 0x2C, 0x00, + 0x00, 0x04, 0x2C, 0x00, 0x0C, 0x04, 0x2C, 0x00, 0x10, 0x04, 0x2C, 0x00, 0x14, 0x04, 0x2C, 0x00, + 0x20, 0x04, 0x2C, 0x00, 0x24, 0x04, 0x2C, 0x00, 0x28, 0x04, 0x2C, 0x00, 0x34, 0x04, 0x2C, 0x00, + 0x38, 0x04, 0x2C, 0x00, 0x3C, 0x04, 0x2C, 0x00, 0x48, 0x04, 0x2C, 0x00, 0x4C, 0x04, 0x2C, 0x00, + 0x50, 0x04, 0x2C, 0x00, 0x5C, 0x04, 0x2C, 0x00, 0x60, 0x04, 0x2C, 0x00, 0x64, 0x04, 0x2C, 0x00, + 0x70, 0x04, 0x2C, 0x00, 0x74, 0x04, 0x2C, 0x00, 0x78, 0x04, 0x2C, 0x00, 0x84, 0x04, 0x2C, 0x00, + 0x88, 0x04, 0x2C, 0x00, 0x8C, 0x04, 0x2C, 0x00, 0x98, 0x04, 0x2C, 0x00, 0x9C, 0x04, 0x2C, 0x00, + 0xA0, 0x04, 0x2C, 0x00, 0xAC, 0x04, 0x2C, 0x00, 0xB0, 0x04, 0x2C, 0x00, 0xB4, 0x04, 0x2C, 0x00, + 0xC0, 0x04, 0x2C, 0x00, 0xC4, 0x04, 0x2C, 0x00, 0xC8, 0x04, 0x2C, 0x00, 0xD4, 0x04, 0x2C, 0x00, + 0xD8, 0x04, 0x2C, 0x00, 0xDC, 0x04, 0x2C, 0x00, 0xE8, 0x04, 0x2C, 0x00, 0xEC, 0x04, 0x2C, 0x00, + 0xF0, 0x04, 0x2C, 0x00, 0xFC, 0x04, 0x2C, 0x00, 0x00, 0x05, 0x2C, 0x00, 0x04, 0x05, 0x2C, 0x00, + 0x08, 0x05, 0x2C, 0x00, 0x14, 0x05, 0x2C, 0x00, 0x18, 0x05, 0x2C, 0x00, 0x1C, 0x05, 0x2C, 0x00, + 0x28, 0x05, 0x2C, 0x00, 0x2C, 0x05, 0x2C, 0x00, 0x30, 0x05, 0x2C, 0x00, 0x3C, 0x05, 0x2C, 0x00, + 0x40, 0x05, 0x2C, 0x00, 0x44, 0x05, 0x2C, 0x00, 0x50, 0x05, 0x2C, 0x00, 0x54, 0x05, 0x2C, 0x00, + 0x58, 0x05, 0x2C, 0x00, 0x5C, 0x05, 0x2C, 0x00, 0x68, 0x05, 0x2C, 0x00, 0x6C, 0x05, 0x2C, 0x00, + 0x70, 0x05, 0x2C, 0x00, 0x7C, 0x05, 0x2C, 0x00, 0x80, 0x05, 0x2C, 0x00, 0x84, 0x05, 0x2C, 0x00, + 0x90, 0x05, 0x2C, 0x00, 0x94, 0x05, 0x2C, 0x00, 0x98, 0x05, 0x2C, 0x00, 0xA4, 0x05, 0x2C, 0x00, + 0xA8, 0x05, 0x2C, 0x00, 0xAC, 0x05, 0x2C, 0x00, 0xB8, 0x05, 0x2C, 0x00, 0xBC, 0x05, 0x2C, 0x00, + 0xC0, 0x05, 0x2C, 0x00, 0xCC, 0x05, 0x2C, 0x00, 0xD0, 0x05, 0x2C, 0x00, 0xD4, 0x05, 0x2C, 0x00, + 0xE0, 0x05, 0x2C, 0x00, 0xE4, 0x05, 0x2C, 0x00, 0xE8, 0x05, 0x2C, 0x00, 0xF4, 0x05, 0x2C, 0x00, + 0xF8, 0x05, 0x2C, 0x00, 0xFC, 0x98, 0x00, 0xF0, 0xFF, 0xBE, 0x06, 0x2C, 0x00, 0x0C, 0x06, 0x2C, + 0x00, 0x10, 0x06, 0x2C, 0x00, 0x1C, 0x06, 0x2C, 0x00, 0x20, 0x06, 0x2C, 0x00, 0x24, 0x06, 0x2C, + 0x00, 0x30, 0x06, 0x2C, 0x00, 0x34, 0x06, 0x2C, 0x00, 0x38, 0x06, 0x2C, 0x00, 0x44, 0x06, 0x2C, + 0x00, 0x48, 0x06, 0x2C, 0x00, 0x4C, 0x06, 0x2C, 0x00, 0x58, 0x06, 0x2C, 0x00, 0x5C, 0x06, 0x2C, + 0x00, 0x60, 0x06, 0x2C, 0x00, 0x64, 0x06, 0x2C, 0x00, 0x70, 0x06, 0x2C, 0x00, 0x74, 0x06, 0x2C, + 0x00, 0x78, 0x06, 0x2C, 0x00, 0x84, 0x06, 0x2C, 0x00, 0x88, 0x06, 0x2C, 0x00, 0x8C, 0x06, 0x2C, + 0x00, 0x98, 0x06, 0x2C, 0x00, 0x9C, 0x06, 0x2C, 0x00, 0xA0, 0x06, 0x2C, 0x00, 0xAC, 0x06, 0x2C, + 0x00, 0xB0, 0x06, 0x2C, 0x00, 0xB4, 0x06, 0x2C, 0x00, 0xC0, 0x06, 0x2C, 0x00, 0xC4, 0x06, 0x2C, + 0x00, 0xC8, 0x06, 0x2C, 0x00, 0xD4, 0x06, 0x2C, 0x00, 0xD8, 0x06, 0x2C, 0x00, 0xDC, 0x06, 0x2C, + 0x00, 0xE8, 0x06, 0x2C, 0x00, 0xEC, 0x06, 0x2C, 0x00, 0xF0, 0x06, 0x2C, 0x00, 0xFC, 0x06, 0x2C, + 0x00, 0x00, 0x07, 0x2C, 0x00, 0x04, 0x07, 0x2C, 0x00, 0x10, 0x07, 0x2C, 0x00, 0x14, 0x07, 0x2C, + 0x00, 0x18, 0x07, 0x2C, 0x00, 0x24, 0x07, 0x2C, 0x00, 0x28, 0x07, 0x2C, 0x00, 0x2C, 0x07, 0x2C, + 0x00, 0x38, 0x07, 0x2C, 0x00, 0x3C, 0x07, 0x2C, 0x00, 0x40, 0x07, 0x2C, 0x00, 0x4C, 0x07, 0x2C, + 0x00, 0x50, 0x07, 0x2C, 0x00, 0x54, 0x07, 0x2C, 0x00, 0x60, 0x07, 0x2C, 0x00, 0x64, 0x07, 0x2C, + 0x00, 0x68, 0x07, 0x2C, 0x00, 0x74, 0x07, 0x2C, 0x00, 0x78, 0x07, 0x2C, 0x00, 0x7C, 0x07, 0x2C, + 0x00, 0x88, 0x07, 0x2C, 0x00, 0x8C, 0x07, 0x2C, 0x00, 0x90, 0x07, 0x2C, 0x00, 0x9C, 0x07, 0x2C, + 0x00, 0xA0, 0x07, 0x2C, 0x00, 0xA4, 0x07, 0x2C, 0x00, 0xB0, 0x07, 0x2C, 0x00, 0xB4, 0x07, 0x2C, + 0x00, 0xB8, 0x07, 0x2C, 0x00, 0xC4, 0x07, 0x2C, 0x00, 0xC8, 0x07, 0x2C, 0x00, 0xCC, 0x07, 0x2C, + 0x00, 0xD8, 0x07, 0x2C, 0x00, 0xDC, 0x07, 0x2C, 0x00, 0xE0, 0x07, 0x2C, 0x00, 0xEC, 0x07, 0x2C, + 0x00, 0xF0, 0x07, 0x2C, 0x00, 0xF4, 0x07, 0x2C, 0x00, 0x00, 0x08, 0x2C, 0x00, 0x04, 0x08, 0x2C, + 0x00, 0x08, 0x08, 0x2C, 0x00, 0x14, 0x08, 0x2C, 0x00, 0x18, 0x08, 0x2C, 0x00, 0x1C, 0x08, 0x2C, + 0x00, 0x28, 0x08, 0x2C, 0x00, 0x2C, 0x08, 0x2C, 0x00, 0x30, 0x08, 0x2C, 0x00, 0x3C, 0x08, 0x2C, + 0x00, 0x40, 0x08, 0x2C, 0x00, 0x44, 0x08, 0x2C, 0x00, 0x50, 0x08, 0x2C, 0x00, 0x54, 0x08, 0x2C, + 0x00, 0x58, 0x08, 0x2C, 0x00, 0x64, 0x08, 0x2C, 0x00, 0x68, 0x08, 0x2C, 0x00, 0x6C, 0x08, 0x2C, + 0x00, 0x78, 0x08, 0x2C, 0x00, 0x7C, 0x08, 0x2C, 0x00, 0x80, 0x08, 0x2C, 0x00, 0x8C, 0x08, 0x2C, + 0x00, 0x90, 0x08, 0x2C, 0x00, 0x94, 0x08, 0x2C, 0x00, 0xA0, 0x08, 0x2C, 0x00, 0xA4, 0x08, 0x2C, + 0x00, 0xA8, 0x08, 0x2C, 0x00, 0xB4, 0x08, 0x2C, 0x00, 0xB8, 0x08, 0x2C, 0x00, 0xBC, 0x08, 0x2C, + 0x00, 0xC8, 0x08, 0x2C, 0x00, 0xCC, 0x08, 0x2C, 0x00, 0xD0, 0x08, 0x2C, 0x00, 0xD4, 0x08, 0x2C, + 0x00, 0xE0, 0x08, 0x2C, 0x00, 0xE4, 0x08, 0x2C, 0x00, 0xE8, 0x08, 0x2C, 0x00, 0xF4, 0x08, 0x2C, + 0x00, 0xF8, 0x08, 0x2C, 0x00, 0xFC, 0x98, 0x00, 0xF0, 0xFF, 0xBA, 0x09, 0x2C, 0x00, 0x0C, 0x09, + 0x2C, 0x00, 0x10, 0x09, 0x2C, 0x00, 0x1C, 0x09, 0x2C, 0x00, 0x20, 0x09, 0x2C, 0x00, 0x24, 0x09, + 0x2C, 0x00, 0x30, 0x09, 0x2C, 0x00, 0x34, 0x09, 0x2C, 0x00, 0x38, 0x09, 0x2C, 0x00, 0x44, 0x09, + 0x2C, 0x00, 0x48, 0x09, 0x2C, 0x00, 0x4C, 0x09, 0x2C, 0x00, 0x58, 0x09, 0x2C, 0x00, 0x5C, 0x09, + 0x2C, 0x00, 0x60, 0x09, 0x2C, 0x00, 0x6C, 0x09, 0x2C, 0x00, 0x70, 0x09, 0x2C, 0x00, 0x74, 0x09, + 0x2C, 0x00, 0x80, 0x09, 0x2C, 0x00, 0x84, 0x09, 0x2C, 0x00, 0x88, 0x09, 0x2C, 0x00, 0x94, 0x09, + 0x2C, 0x00, 0x98, 0x09, 0x2C, 0x00, 0x9C, 0x09, 0x2C, 0x00, 0xA8, 0x09, 0x2C, 0x00, 0xAC, 0x09, + 0x2C, 0x00, 0xB0, 0x09, 0x2C, 0x00, 0xBC, 0x09, 0x2C, 0x00, 0xC0, 0x09, 0x2C, 0x00, 0xC4, 0x09, + 0x2C, 0x00, 0xD0, 0x09, 0x2C, 0x00, 0xD4, 0x09, 0x2C, 0x00, 0xD8, 0x09, 0x2C, 0x00, 0xE4, 0x09, + 0x2C, 0x00, 0xE8, 0x09, 0x2C, 0x00, 0xEC, 0x09, 0x2C, 0x00, 0xF8, 0x09, 0x2C, 0x00, 0xFC, 0x09, + 0x2C, 0x00, 0x00, 0x0A, 0x2C, 0x00, 0x0C, 0x0A, 0x2C, 0x00, 0x10, 0x0A, 0x2C, 0x00, 0x14, 0x0A, + 0x2C, 0x00, 0x20, 0x0A, 0x2C, 0x00, 0x24, 0x0A, 0x2C, 0x00, 0x28, 0x0A, 0x2C, 0x00, 0x34, 0x0A, + 0x2C, 0x00, 0x38, 0x0A, 0x2C, 0x00, 0x3C, 0x0A, 0x2C, 0x00, 0x48, 0x0A, 0x2C, 0x00, 0x4C, 0x0A, + 0x2C, 0x00, 0x50, 0x0A, 0x2C, 0x00, 0x5C, 0x0A, 0x2C, 0x00, 0x60, 0x0A, 0x2C, 0x00, 0x64, 0x0A, + 0x2C, 0x00, 0x70, 0x0A, 0x2C, 0x00, 0x74, 0x0A, 0x2C, 0x00, 0x78, 0x0A, 0x2C, 0x00, 0x84, 0x0A, + 0x2C, 0x00, 0x88, 0x0A, 0x2C, 0x00, 0x8C, 0x0A, 0x2C, 0x00, 0x98, 0x0A, 0x2C, 0x00, 0x9C, 0x0A, + 0x2C, 0x00, 0xA0, 0x0A, 0x2C, 0x00, 0xAC, 0x0A, 0x2C, 0x00, 0xB0, 0x0A, 0x2C, 0x00, 0xB4, 0x0A, + 0x2C, 0x00, 0xC0, 0x0A, 0x2C, 0x00, 0xC4, 0x0A, 0x2C, 0x00, 0xC8, 0x0A, 0x2C, 0x00, 0xD4, 0x0A, + 0x2C, 0x00, 0xD8, 0x0A, 0x2C, 0x00, 0xDC, 0x0A, 0x2C, 0x00, 0xE8, 0x0A, 0x2C, 0x00, 0xEC, 0x0A, + 0x2C, 0x00, 0xF0, 0x0A, 0x2C, 0x00, 0xFC, 0x0A, 0x2C, 0x00, 0x00, 0x0B, 0x2C, 0x00, 0x04, 0x0B, + 0x2C, 0x00, 0x10, 0x0B, 0x2C, 0x00, 0x14, 0x0B, 0x2C, 0x00, 0x18, 0x0B, 0x2C, 0x00, 0x24, 0x0B, + 0x2C, 0x00, 0x28, 0x0B, 0x2C, 0x00, 0x2C, 0x0B, 0x2C, 0x00, 0x38, 0x0B, 0x2C, 0x00, 0x3C, 0x0B, + 0x2C, 0x00, 0x40, 0x0B, 0x2C, 0x00, 0x44, 0x0B, 0x2C, 0x00, 0x50, 0x0B, 0x2C, 0x00, 0x54, 0x0B, + 0x2C, 0x00, 0x58, 0x0B, 0x2C, 0x00, 0x64, 0x0B, 0x2C, 0x00, 0x68, 0x0B, 0x2C, 0x00, 0x6C, 0x0B, + 0x2C, 0x00, 0x78, 0x0B, 0x2C, 0x00, 0x7C, 0x0B, 0x2C, 0x00, 0x80, 0x0B, 0x2C, 0x00, 0x8C, 0x0B, + 0x2C, 0x00, 0x90, 0x0B, 0x2C, 0x00, 0x94, 0x0B, 0x2C, 0x00, 0xA0, 0x0B, 0x2C, 0x00, 0xA4, 0x0B, + 0x2C, 0x00, 0xA8, 0x0B, 0x2C, 0x00, 0xB4, 0x0B, 0x2C, 0x00, 0xB8, 0x0B, 0x2C, 0x00, 0xBC, 0x0B, + 0x2C, 0x00, 0xC8, 0x0B, 0x2C, 0x00, 0xCC, 0x0B, 0x2C, 0x00, 0xD0, 0x0B, 0x2C, 0x00, 0xDC, 0x0B, + 0x2C, 0x00, 0xE0, 0x0B, 0x2C, 0x00, 0xE4, 0x0B, 0x2C, 0x00, 0xF0, 0x0B, 0x2C, 0x00, 0xF4, 0x0B, + 0x2C, 0x00, 0xF8, 0x98, 0x00, 0xF0, 0x89, 0x0C, 0x2C, 0x00, 0x08, 0x0C, 0x2C, 0x00, 0x0C, 0x0C, + 0x2C, 0x00, 0x18, 0x0C, 0x2C, 0x00, 0x1C, 0x0C, 0x2C, 0x00, 0x20, 0x0C, 0x2C, 0x00, 0x2C, 0x0C, + 0x2C, 0x00, 0x30, 0x0C, 0x2C, 0x00, 0x34, 0x0C, 0x2C, 0x00, 0x40, 0x0C, 0x2C, 0x00, 0x44, 0x0C, + 0x2C, 0x00, 0x48, 0x0C, 0x2C, 0x00, 0x54, 0x0C, 0x2C, 0x00, 0x58, 0x0C, 0x2C, 0x00, 0x5C, 0x0C, + 0x2C, 0x00, 0x68, 0x0C, 0x2C, 0x00, 0x6C, 0x0C, 0x2C, 0x00, 0x70, 0x0C, 0x2C, 0x00, 0x7C, 0x0C, + 0x2C, 0x00, 0x80, 0x0C, 0x2C, 0x00, 0x84, 0x0C, 0x2C, 0x00, 0x90, 0x0C, 0x2C, 0x00, 0x94, 0x0C, + 0x2C, 0x00, 0x98, 0x0C, 0x2C, 0x00, 0xA4, 0x0C, 0x2C, 0x00, 0xA8, 0x0C, 0x2C, 0x00, 0xAC, 0x0C, + 0x2C, 0x00, 0xB8, 0x0C, 0x2C, 0x00, 0xBC, 0x0C, 0x2C, 0x00, 0xC0, 0x0C, 0x2C, 0x00, 0xCC, 0x0C, + 0x2C, 0x00, 0xD0, 0x0C, 0x2C, 0x00, 0xD4, 0x0C, 0x2C, 0x00, 0xE0, 0x0C, 0x2C, 0x00, 0xE4, 0x0C, + 0x2C, 0x00, 0xE8, 0x0C, 0x2C, 0x00, 0xF4, 0x0C, 0x2C, 0x00, 0xF8, 0x0C, 0x2C, 0x00, 0xFC, 0x98, + 0x00, 0xF2, 0xB2, 0x0D, 0x2C, 0x00, 0x0C, 0x0D, 0x2C, 0x00, 0x10, 0x0D, 0x2C, 0x00, 0x1C, 0x0D, + 0x2C, 0x00, 0x20, 0x0D, 0x2C, 0x00, 0x24, 0x0D, 0x2C, 0x00, 0x30, 0x0D, 0x2C, 0x00, 0x34, 0x0D, + 0x2C, 0x00, 0x38, 0x0D, 0x2C, 0x00, 0x44, 0x0D, 0x2C, 0x00, 0x48, 0x0D, 0x2C, 0x00, 0x4C, 0x0D, + 0x2C, 0x00, 0x58, 0x0D, 0x2C, 0x00, 0x5C, 0x0D, 0x2C, 0x00, 0x60, 0x0D, 0x2C, 0x00, 0x6C, 0x0D, + 0x2C, 0x00, 0x70, 0x0D, 0x2C, 0x00, 0x74, 0x0D, 0x2C, 0x00, 0x80, 0x0D, 0x2C, 0x00, 0x84, 0x0D, + 0x2C, 0x00, 0x88, 0x0D, 0x2C, 0x00, 0x94, 0x0D, 0x2C, 0x00, 0x98, 0x0D, 0x2C, 0x00, 0x9C, 0x0D, + 0x2C, 0x00, 0xA8, 0x0D, 0x2C, 0x00, 0xAC, 0x0D, 0x2C, 0x00, 0xB0, 0x0D, 0x2C, 0x00, 0xBC, 0x0D, + 0x2C, 0x00, 0xC0, 0x0D, 0x2C, 0x00, 0xC4, 0x0D, 0x2C, 0x00, 0xD0, 0x0D, 0x2C, 0x00, 0xD4, 0x0D, + 0x2C, 0x00, 0xD8, 0x0D, 0x2C, 0x00, 0xE4, 0x0D, 0x2C, 0x00, 0xE8, 0x0D, 0x2C, 0x00, 0xEC, 0x0D, + 0x2C, 0x00, 0xF8, 0x0D, 0x2C, 0x00, 0xFC, 0x0D, 0x2C, 0x00, 0x00, 0x0E, 0x2C, 0x00, 0x0C, 0x0E, + 0x2C, 0x00, 0x10, 0x0E, 0x2C, 0x00, 0x14, 0x0E, 0x2C, 0x00, 0x20, 0x0E, 0x2C, 0x00, 0x24, 0x0E, + 0x2C, 0x00, 0x28, 0x0E, 0x2C, 0x00, 0x2C, 0x0E, 0x2C, 0x00, 0x38, 0x0E, 0x2C, 0x00, 0x3C, 0x0E, + 0x2C, 0x00, 0x40, 0x0E, 0xAC, 0x0E, 0xF3, 0x87, 0x4C, 0x0E, 0x2C, 0x00, 0x50, 0x0E, 0x2C, 0x00, + 0x54, 0x0E, 0x2C, 0x00, 0x58, 0x0E, 0x2C, 0x00, 0x64, 0x0E, 0x2C, 0x00, 0x68, 0x0E, 0x2C, 0x00, + 0x6C, 0x0E, 0x2C, 0x00, 0x78, 0x0E, 0x2C, 0x00, 0x7C, 0x0E, 0x2C, 0x00, 0x80, 0x0E, 0x2C, 0x00, + 0x8C, 0x0E, 0x2C, 0x00, 0x90, 0x0E, 0x2C, 0x00, 0x94, 0x0E, 0x2C, 0x00, 0xA0, 0x0E, 0x2C, 0x00, + 0xA4, 0x0E, 0x2C, 0x00, 0xA8, 0x0E, 0x2C, 0x00, 0xB4, 0x0E, 0x2C, 0x00, 0xB8, 0x0E, 0x2C, 0x00, + 0xBC, 0x0E, 0x2C, 0x00, 0xC8, 0x0E, 0x2C, 0x00, 0xCC, 0x0E, 0x2C, 0x00, 0xD0, 0x0E, 0x2C, 0x00, + 0xDC, 0x0E, 0x2C, 0x00, 0xE0, 0x0E, 0x2C, 0x00, 0xE4, 0x0E, 0x2C, 0x00, 0xF0, 0x0E, 0x2C, 0x00, + 0xF4, 0x0E, 0x2C, 0x00, 0xF8, 0x0E, 0x2C, 0x00, 0x04, 0x0F, 0x2C, 0x00, 0x08, 0x0F, 0x2C, 0x00, + 0x0C, 0x0F, 0x2C, 0x00, 0x18, 0x0F, 0x2C, 0x00, 0x1C, 0x0F, 0x2C, 0x00, 0x20, 0x0F, 0x2C, 0x00, + 0x2C, 0x0F, 0x2C, 0x00, 0x30, 0x0F, 0x2C, 0x00, 0x34, 0x0F, 0x2C, 0x00, 0x38, 0x0F, 0x20, 0x15, + 0xD2, 0x0F, 0x2C, 0x00, 0x48, 0x0F, 0x2C, 0x00, 0x4C, 0x0F, 0x2C, 0x00, 0x5C, 0x0F, 0x84, 0x07, + 0xE2, 0x68, 0x0F, 0x2C, 0x00, 0x6C, 0x0F, 0x2C, 0x00, 0x70, 0x0F, 0x2C, 0x00, 0x80, 0x0F, 0x68, + 0x14, 0xE2, 0x8C, 0x0F, 0x2C, 0x00, 0x90, 0x0F, 0x2C, 0x00, 0x94, 0x0F, 0x2C, 0x00, 0xA4, 0x0F, + 0x74, 0x13, 0xE2, 0xB0, 0x0F, 0x2C, 0x00, 0xB4, 0x0F, 0x2C, 0x00, 0xB8, 0x0F, 0x2C, 0x00, 0xC8, + 0x0F, 0xA4, 0x12, 0xF0, 0x02, 0xD4, 0x0F, 0x2C, 0x00, 0xD8, 0x0F, 0x2C, 0x00, 0xDC, 0x0F, 0x2C, + 0x00, 0xEC, 0x0F, 0x2C, 0x00, 0xF8, 0x2C, 0x00, 0xF2, 0x0A, 0x10, 0x2C, 0x00, 0x08, 0x10, 0x2C, + 0x00, 0x0C, 0x10, 0x2C, 0x00, 0x18, 0x10, 0x2C, 0x00, 0x1C, 0x10, 0x2C, 0x00, 0x20, 0x10, 0x2C, + 0x00, 0x24, 0x10, 0x98, 0x13, 0xF2, 0x17, 0x30, 0x10, 0x2C, 0x00, 0x3C, 0x10, 0x2C, 0x00, 0x40, + 0x10, 0x2C, 0x00, 0x44, 0x10, 0x2C, 0x00, 0x50, 0x10, 0x2C, 0x00, 0x54, 0x10, 0x2C, 0x00, 0x58, + 0x10, 0x2C, 0x00, 0x64, 0x10, 0x2C, 0x00, 0x68, 0x10, 0x2C, 0x00, 0x6C, 0x10, 0x4C, 0x01, 0xF3, + 0x42, 0x78, 0x10, 0x2C, 0x00, 0x7C, 0x10, 0x2C, 0x00, 0x80, 0x10, 0x2C, 0x00, 0x84, 0x10, 0x2C, + 0x00, 0x90, 0x10, 0x2C, 0x00, 0x9C, 0x10, 0x2C, 0x00, 0xA0, 0x10, 0x2C, 0x00, 0xA4, 0x10, 0x2C, + 0x00, 0xA8, 0x10, 0x2C, 0x00, 0xB4, 0x10, 0x2C, 0x00, 0xB8, 0x10, 0x2C, 0x00, 0xBC, 0x10, 0x2C, + 0x00, 0xC0, 0x10, 0x2C, 0x00, 0xCC, 0x10, 0x2C, 0x00, 0xD0, 0x10, 0x2C, 0x00, 0xD4, 0x10, 0x2C, + 0x00, 0xD8, 0x10, 0x2C, 0x00, 0xE4, 0x10, 0x2C, 0x00, 0xE8, 0x10, 0x2C, 0x00, 0xEC, 0x10, 0x2C, + 0x00, 0xF0, 0x58, 0x00, 0x22, 0xFC, 0x10, 0x10, 0x01, 0x23, 0x08, 0x11, 0x24, 0x14, 0xF2, 0x06, + 0x11, 0x2C, 0x00, 0x18, 0x11, 0x2C, 0x00, 0x1C, 0x11, 0x2C, 0x00, 0x20, 0x11, 0x2C, 0x00, 0x24, + 0x11, 0x2C, 0x00, 0x30, 0x11, 0x0C, 0x01, 0xF2, 0x0F, 0x3C, 0x11, 0x2C, 0x00, 0x40, 0x11, 0x2C, + 0x00, 0x44, 0x11, 0x2C, 0x00, 0x48, 0x11, 0x2C, 0x00, 0x4C, 0x11, 0x2C, 0x00, 0x50, 0x11, 0x2C, + 0x00, 0x54, 0x11, 0x2C, 0x00, 0x60, 0x11, 0x1C, 0x01, 0x62, 0x6C, 0x11, 0x2C, 0x00, 0x70, 0x11, + 0x14, 0x01, 0x62, 0x7C, 0x11, 0x2C, 0x00, 0x80, 0x11, 0x68, 0x00, 0xF2, 0x07, 0x8C, 0x11, 0x2C, + 0x00, 0x90, 0x11, 0x2C, 0x00, 0x94, 0x11, 0x2C, 0x00, 0x98, 0x11, 0x2C, 0x00, 0x9C, 0x11, 0x2C, + 0x00, 0xA8, 0x11, 0x7C, 0x00, 0xF3, 0x06, 0xB4, 0x11, 0x2C, 0x00, 0xB8, 0x11, 0x2C, 0x00, 0xBC, + 0x11, 0x2C, 0x00, 0xC0, 0x11, 0x2C, 0x00, 0xC4, 0x11, 0x2C, 0x00, 0xD0, 0x90, 0x00, 0xF0, 0x06, + 0xDC, 0x11, 0x2C, 0x00, 0xE0, 0x11, 0x2C, 0x00, 0xE4, 0x11, 0x2C, 0x00, 0xE8, 0x11, 0x2C, 0x00, + 0xEC, 0x11, 0x2C, 0x00, 0xF8, 0x6C, 0x00, 0x93, 0x12, 0x2C, 0x00, 0x08, 0x12, 0x2C, 0x00, 0x0C, + 0x12, 0x58, 0x17, 0xF2, 0x32, 0x12, 0x2C, 0x00, 0x24, 0x12, 0x2C, 0x00, 0x28, 0x12, 0x2C, 0x00, + 0x2C, 0x12, 0x2C, 0x00, 0x38, 0x12, 0x2C, 0x00, 0x3C, 0x12, 0x2C, 0x00, 0x40, 0x12, 0x2C, 0x00, + 0x4C, 0x12, 0x2C, 0x00, 0x50, 0x12, 0x2C, 0x00, 0x54, 0x12, 0x2C, 0x00, 0x60, 0x12, 0x2C, 0x00, + 0x64, 0x12, 0x2C, 0x00, 0x68, 0x12, 0x2C, 0x00, 0x74, 0x12, 0x2C, 0x00, 0x78, 0x12, 0x2C, 0x00, + 0x7C, 0x12, 0x2C, 0x00, 0x88, 0x12, 0xC0, 0x00, 0x62, 0x94, 0x12, 0x2C, 0x00, 0xA0, 0x12, 0xC0, + 0x00, 0x62, 0xA8, 0x12, 0x2C, 0x00, 0xB4, 0x12, 0xAC, 0x01, 0x71, 0xBC, 0x12, 0x2C, 0x00, 0xC8, + 0x12, 0x2C, 0x76, 0x11, 0xF1, 0x3F, 0xD0, 0x12, 0x2C, 0x00, 0xDC, 0x12, 0x2C, 0x00, 0xE4, 0x12, + 0x2C, 0x00, 0xE8, 0x12, 0x2C, 0x00, 0xEC, 0x12, 0x2C, 0x00, 0xF8, 0x12, 0x2C, 0x00, 0xFC, 0x12, + 0x2C, 0x00, 0x00, 0x13, 0x2C, 0x00, 0x0C, 0x13, 0x2C, 0x00, 0x30, 0x13, 0x2C, 0x00, 0x54, 0x13, + 0x2C, 0x00, 0x78, 0x13, 0x2C, 0x00, 0x9C, 0x13, 0x2C, 0x00, 0xC0, 0x13, 0x2C, 0x00, 0xE4, 0x13, + 0x2C, 0x00, 0x10, 0x14, 0x2C, 0x00, 0x3C, 0x14, 0x2C, 0x00, 0x68, 0x14, 0x2C, 0x00, 0x8C, 0x14, + 0x2C, 0x00, 0xB0, 0x14, 0x20, 0x01, 0x17, 0xE0, 0x04, 0x00, 0x08, 0x87, 0x0A, 0x0F, 0x14, 0x00, + 0x26, 0x1F, 0x02, 0x14, 0x00, 0x00, 0x17, 0x03, 0x68, 0x00, 0x01, 0x90, 0x0A, 0x2D, 0x14, 0x2C, + 0x60, 0x14, 0x01, 0x64, 0x14, 0x12, 0x14, 0x98, 0x01, 0x1B, 0x04, 0x30, 0x00, 0x1F, 0xDC, 0x30, + 0x00, 0x00, 0x0F, 0xBC, 0x00, 0x05, 0x2E, 0x01, 0x60, 0x14, 0x00, 0x1F, 0x05, 0x28, 0x00, 0x00, + 0x1F, 0x06, 0xD0, 0x00, 0x0B, 0x1B, 0xE0, 0x24, 0x14, 0x0F, 0x40, 0x00, 0x2A, 0x1F, 0x08, 0x40, + 0x00, 0x14, 0x1F, 0x09, 0x54, 0x00, 0x01, 0x0F, 0xD0, 0x00, 0x00, 0x1F, 0x0A, 0x28, 0x00, 0x00, + 0x1F, 0x0B, 0x8C, 0x01, 0x01, 0x0F, 0x3C, 0x00, 0x00, 0x1F, 0x0C, 0x28, 0x00, 0x00, 0x1F, 0x0D, + 0x14, 0x00, 0x00, 0x1F, 0x0E, 0x14, 0x00, 0x00, 0x1F, 0x0F, 0x14, 0x00, 0x00, 0x1F, 0x10, 0x14, + 0x00, 0x00, 0x1F, 0x11, 0x14, 0x00, 0x00, 0x1F, 0x12, 0x14, 0x00, 0x00, 0x1F, 0x13, 0x14, 0x00, + 0x00, 0x1F, 0x14, 0x14, 0x00, 0x00, 0x13, 0x15, 0x14, 0x00, 0x2A, 0x06, 0x60, 0x18, 0x00, 0x1F, + 0x16, 0x2C, 0x00, 0x00, 0x1F, 0x17, 0x14, 0x00, 0x00, 0x1F, 0x18, 0xAC, 0x01, 0x09, 0x0B, 0x16, + 0x00, 0x2F, 0x02, 0x60, 0x5C, 0x01, 0x01, 0x0F, 0x48, 0x01, 0xB3, 0x2F, 0x0D, 0x60, 0x08, 0x01, + 0x17, 0x1F, 0x19, 0x40, 0x00, 0x00, 0x1F, 0x1A, 0x14, 0x00, 0x00, 0x1F, 0x1B, 0x14, 0x00, 0x00, + 0x1F, 0x1C, 0x14, 0x00, 0x00, 0x1F, 0x1D, 0x14, 0x00, 0x00, 0x1F, 0x1E, 0x14, 0x00, 0x00, 0x1F, + 0x1F, 0x14, 0x00, 0x00, 0x1F, 0x20, 0x14, 0x00, 0x00, 0x1F, 0x21, 0x14, 0x00, 0x00, 0x1F, 0x22, + 0x14, 0x00, 0x00, 0x1F, 0x23, 0x14, 0x00, 0x00, 0x1F, 0x24, 0x14, 0x00, 0x00, 0x1F, 0x25, 0x14, + 0x00, 0x00, 0x1F, 0x26, 0x14, 0x00, 0x00, 0x1F, 0x27, 0x14, 0x00, 0x00, 0x1F, 0x28, 0x14, 0x00, + 0x00, 0x1F, 0x29, 0x14, 0x00, 0x00, 0x1F, 0x2A, 0x14, 0x00, 0x00, 0x1F, 0x2B, 0x14, 0x00, 0x00, + 0x1F, 0x2C, 0x14, 0x00, 0x00, 0x1F, 0x2D, 0x14, 0x00, 0x00, 0x1F, 0x2E, 0x14, 0x00, 0x00, 0x1F, + 0x2F, 0x14, 0x00, 0x00, 0x1F, 0x30, 0x14, 0x00, 0x00, 0x1F, 0x31, 0x14, 0x00, 0x00, 0x1F, 0x32, + 0x14, 0x00, 0x00, 0x1F, 0x33, 0x14, 0x00, 0x00, 0x1F, 0x34, 0xA4, 0x03, 0x08, 0x08, 0x14, 0x00, + 0x1F, 0x35, 0x78, 0x03, 0x18, 0x1F, 0x36, 0x2C, 0x00, 0x00, 0x1F, 0x37, 0x14, 0x00, 0x00, 0x1F, + 0x38, 0x14, 0x00, 0x00, 0x1F, 0x39, 0x14, 0x00, 0x00, 0x1F, 0x3A, 0x14, 0x00, 0x00, 0x1F, 0x3B, + 0x14, 0x00, 0x00, 0x1F, 0x3C, 0x14, 0x00, 0x00, 0x1F, 0x3D, 0x14, 0x00, 0x00, 0x1F, 0x3E, 0x14, + 0x00, 0x00, 0x1F, 0x3F, 0x14, 0x00, 0x00, 0x1F, 0x40, 0x14, 0x00, 0x00, 0x1F, 0x41, 0x14, 0x00, + 0x00, 0x1F, 0x42, 0x14, 0x00, 0x00, 0x1F, 0x43, 0x14, 0x00, 0x00, 0x1F, 0x44, 0x14, 0x00, 0x00, + 0x1F, 0x45, 0x14, 0x00, 0x00, 0x1F, 0x46, 0x14, 0x00, 0x00, 0x1F, 0x47, 0x14, 0x00, 0x00, 0x1F, + 0x48, 0x70, 0x02, 0x14, 0x1F, 0x49, 0x14, 0x00, 0x00, 0x1F, 0x4A, 0x14, 0x00, 0x00, 0x1F, 0x4B, + 0x14, 0x00, 0x00, 0x1F, 0x4C, 0x14, 0x00, 0x00, 0x1F, 0x4D, 0x14, 0x00, 0x00, 0x1F, 0x4E, 0x14, + 0x00, 0x00, 0x1F, 0x4F, 0x70, 0x02, 0x54, 0x0F, 0x14, 0x06, 0x01, 0x1F, 0x50, 0x1C, 0x01, 0x14, + 0x1F, 0x51, 0x14, 0x00, 0x00, 0x1F, 0x52, 0x14, 0x00, 0x00, 0x1F, 0x53, 0x14, 0x00, 0x00, 0x1F, + 0x54, 0x14, 0x00, 0x00, 0x1F, 0x55, 0x14, 0x00, 0x00, 0x1F, 0x56, 0x14, 0x00, 0x00, 0x1F, 0x57, + 0x48, 0x08, 0x14, 0x1F, 0x58, 0x14, 0x00, 0x00, 0x1F, 0x59, 0x14, 0x00, 0x00, 0x1F, 0x5A, 0x14, + 0x00, 0x00, 0x1F, 0x5B, 0x14, 0x00, 0x00, 0x1F, 0x5C, 0x14, 0x00, 0x00, 0x1F, 0x5D, 0x14, 0x00, + 0x00, 0x1F, 0x5E, 0x14, 0x00, 0x00, 0x1F, 0x5F, 0x14, 0x00, 0x00, 0x1F, 0x60, 0x14, 0x00, 0x00, + 0x1F, 0x61, 0x14, 0x00, 0x00, 0x1F, 0x62, 0x14, 0x00, 0x00, 0x1F, 0x63, 0x14, 0x00, 0x00, 0x1F, + 0x64, 0x14, 0x00, 0x00, 0x1F, 0x65, 0x14, 0x00, 0x00, 0x1F, 0x66, 0x30, 0x08, 0x14, 0x1F, 0x67, + 0x14, 0x00, 0x00, 0x1F, 0x68, 0x70, 0x02, 0x14, 0x1F, 0x16, 0x78, 0x07, 0x14, 0x1F, 0x69, 0x28, + 0x00, 0x00, 0x1F, 0x6A, 0x14, 0x00, 0x00, 0x1F, 0x6B, 0x14, 0x00, 0x00, 0x1F, 0x6C, 0xE4, 0x08, + 0x08, 0x2F, 0x0E, 0x60, 0xE0, 0x00, 0x0F, 0x0F, 0xA8, 0x0A, 0x05, 0x1F, 0x6D, 0x14, 0x00, 0x00, + 0x17, 0x6E, 0x88, 0x0B, 0x13, 0xE0, 0x88, 0x0B, 0x17, 0x6F, 0x14, 0x00, 0x13, 0xE4, 0x14, 0x00, + 0x1F, 0x70, 0x3C, 0x00, 0x00, 0x17, 0x71, 0x28, 0x00, 0x13, 0xE8, 0x28, 0x00, 0x1F, 0x72, 0x28, + 0x00, 0x00, 0x17, 0x73, 0x28, 0x00, 0x13, 0xEC, 0x28, 0x00, 0x1F, 0x74, 0x28, 0x00, 0x00, 0x17, + 0x75, 0x28, 0x00, 0x13, 0xF0, 0x28, 0x00, 0x1F, 0x76, 0xF4, 0x03, 0x18, 0xFA, 0x07, 0x1A, 0xC0, + 0x00, 0xE0, 0x77, 0x00, 0x00, 0xE0, 0x1A, 0xC0, 0x77, 0x00, 0x01, 0xC0, 0x29, 0xC0, 0x78, 0x00, + 0x03, 0xC0, 0x00, 0xE0, 0x58, 0x0C, 0x00, 0x24, 0x00, 0x11, 0x79, 0x24, 0x00, 0x1F, 0x79, 0x24, + 0x00, 0x0A, 0x11, 0x7A, 0x24, 0x00, 0x1F, 0x7A, 0x24, 0x00, 0x0A, 0x11, 0x7B, 0x24, 0x00, 0x1F, + 0x7B, 0x24, 0x00, 0x0A, 0x11, 0x7C, 0x24, 0x00, 0x1F, 0x7C, 0x24, 0x00, 0x06, 0x01, 0xFC, 0x29, + 0x03, 0x18, 0x0D, 0x0F, 0xB4, 0x01, 0x01, 0x1B, 0x7D, 0x2C, 0x0D, 0x1F, 0xFC, 0x2C, 0x0D, 0x0B, + 0x0E, 0x04, 0x02, 0x0F, 0x14, 0x00, 0x0C, 0x00, 0x30, 0x01, 0x22, 0x7E, 0x00, 0xA8, 0x00, 0x01, + 0x4C, 0x00, 0x25, 0x15, 0x2C, 0xB0, 0x0D, 0x13, 0x04, 0x0C, 0x00, 0x1B, 0x7F, 0x84, 0x00, 0x22, + 0x08, 0x15, 0x84, 0x00, 0x1B, 0x80, 0x18, 0x00, 0x13, 0x0C, 0x18, 0x00, 0x1B, 0x81, 0x18, 0x00, + 0x3F, 0x10, 0x15, 0x2C, 0xCC, 0x00, 0x02, 0x2F, 0x14, 0x15, 0xCC, 0x00, 0x02, 0x05, 0x0C, 0x00, + 0x62, 0x82, 0x00, 0x00, 0xE0, 0x82, 0x00, 0x8C, 0x01, 0x13, 0x83, 0x34, 0x00, 0x1B, 0x18, 0x34, + 0x00, 0x13, 0x00, 0x28, 0x00, 0x13, 0x77, 0x04, 0x00, 0x53, 0x84, 0x00, 0x00, 0xE0, 0x85, 0x38, + 0x00, 0x01, 0x8C, 0x24, 0x0F, 0x30, 0x00, 0x00, 0x48, 0x04, 0x20, 0x00, 0xE0, 0x68, 0x00, 0x1B, + 0x05, 0x10, 0x00, 0x22, 0x01, 0x40, 0xA4, 0x00, 0x00, 0x50, 0x00, 0x10, 0x86, 0x17, 0x03, 0x7C, + 0x00, 0x7C, 0x00, 0x01, 0x40, 0x30, 0xC0, 0x70, 0x02, 0x17, 0x02, 0x28, 0x00, 0x13, 0x87, 0x28, + 0x00, 0x1F, 0x02, 0x28, 0x00, 0x00, 0x1F, 0x03, 0x28, 0x00, 0x00, 0x1F, 0x03, 0x28, 0x00, 0x00, + 0x1F, 0x88, 0xB4, 0x01, 0x03, 0x05, 0x98, 0x00, 0x1F, 0x89, 0x20, 0x00, 0x00, 0x1F, 0x8A, 0xB4, + 0x07, 0x08, 0x00, 0xC0, 0x10, 0x39, 0x20, 0x15, 0x2C, 0x28, 0x04, 0x01, 0x20, 0x22, 0x29, 0x15, + 0x2C, 0x54, 0x04, 0x01, 0x54, 0x25, 0x25, 0x15, 0x2C, 0x68, 0x00, 0x17, 0x38, 0x04, 0x02, 0x13, + 0x3C, 0x0C, 0x00, 0x53, 0x40, 0x15, 0x2C, 0x00, 0x44, 0x0C, 0x00, 0x13, 0x50, 0x08, 0x00, 0x6A, + 0x54, 0x15, 0x2C, 0x00, 0x58, 0x15, 0x6C, 0x22, 0x53, 0x68, 0x15, 0x2C, 0x00, 0x6C, 0x20, 0x00, + 0x13, 0x74, 0x08, 0x00, 0xAF, 0x78, 0x15, 0x2C, 0x00, 0x7C, 0x15, 0x2C, 0x00, 0x0F, 0x60, 0x94, + 0x02, 0x13, 0x11, 0x07, 0x88, 0x22, 0xBF, 0x00, 0x00, 0xFF, 0x00, 0xCA, 0x00, 0x22, 0x01, 0x4C, + 0x00, 0x17, 0x88, 0x22, 0x06, 0x04, 0x04, 0x0C, 0x3F, 0x23, 0x00, 0x18, 0x24, 0x00, 0x00, 0x3F, + 0x07, 0x00, 0xFC, 0x48, 0x00, 0x10, 0x11, 0xFB, 0x24, 0x00, 0x4F, 0xFD, 0x02, 0xBD, 0x01, 0x48, + 0x00, 0x07, 0x1F, 0xFA, 0x48, 0x00, 0x10, 0x13, 0xF9, 0x48, 0x00, 0x0E, 0x90, 0x00, 0x0F, 0xE0, + 0x02, 0x01, 0x0C, 0xF8, 0x21, 0x00, 0x50, 0x21, 0x3F, 0x90, 0x15, 0x2C, 0x2C, 0x00, 0x16, 0x2F, + 0x08, 0x16, 0x2C, 0x00, 0x17, 0x28, 0x80, 0x16, 0xE4, 0x23, 0x26, 0x97, 0xFF, 0x54, 0x0A, 0x0F, + 0xC4, 0x22, 0x05, 0x1F, 0x96, 0x24, 0x00, 0x10, 0x1F, 0x95, 0x24, 0x00, 0x0E, 0x50, 0xF8, 0x16, + 0x2C, 0x00, 0xFC, 0x7C, 0x00, 0xF2, 0x53, 0x17, 0x2C, 0x00, 0x04, 0x17, 0x2C, 0x00, 0x08, 0x17, + 0x2C, 0x00, 0x0C, 0x17, 0x2C, 0x00, 0x10, 0x17, 0x2C, 0x00, 0x14, 0x17, 0x2C, 0x00, 0x18, 0x17, + 0x2C, 0x00, 0x1C, 0x17, 0x2C, 0x00, 0x20, 0x17, 0x2C, 0x00, 0x24, 0x17, 0x2C, 0x00, 0x28, 0x17, + 0x2C, 0x00, 0x2C, 0x17, 0x2C, 0x00, 0x30, 0x17, 0x2C, 0x00, 0x34, 0x17, 0x2C, 0x00, 0x38, 0x17, + 0x2C, 0x00, 0x3C, 0x17, 0x2C, 0x00, 0x40, 0x17, 0x2C, 0x00, 0x44, 0x17, 0x2C, 0x00, 0x48, 0x17, + 0x2C, 0x00, 0x4C, 0x17, 0x2C, 0x00, 0x50, 0x17, 0x2C, 0x00, 0x54, 0x17, 0x2C, 0x00, 0x58, 0x17, + 0x2C, 0x00, 0x5C, 0x17, 0x2C, 0x00, 0x60, 0x17, 0x2C, 0xB4, 0x03, 0x61, 0x40, 0x8B, 0x00, 0x03, + 0xC0, 0x2A, 0x58, 0x03, 0x53, 0x64, 0x17, 0x2C, 0x00, 0x02, 0x14, 0x00, 0x35, 0x04, 0xC0, 0x8C, + 0x18, 0x00, 0x01, 0x8C, 0x03, 0xA0, 0x40, 0x8C, 0x00, 0x04, 0xC0, 0x00, 0xE0, 0x68, 0x17, 0x2C, + 0xD1, 0x0B, 0xF0, 0x17, 0xE0, 0x01, 0x40, 0x8B, 0x00, 0x02, 0xC0, 0x02, 0x40, 0x8C, 0x00, 0x02, + 0xC0, 0x00, 0xC0, 0x03, 0x40, 0x00, 0xC0, 0x00, 0xE0, 0x6C, 0x17, 0x2C, 0x00, 0x90, 0x17, 0x2C, + 0x00, 0xB4, 0x17, 0x2C, 0x00, 0xD8, 0x17, 0x2C, 0x00, 0xFC, 0xA8, 0x00, 0xF0, 0xFF, 0x43, 0x18, + 0x2C, 0x00, 0x44, 0x18, 0x2C, 0x00, 0x68, 0x18, 0x2C, 0x00, 0x8C, 0x18, 0x2C, 0x00, 0xB0, 0x18, + 0x2C, 0x00, 0xD4, 0x18, 0x2C, 0x00, 0xF8, 0x18, 0x2C, 0x00, 0x1C, 0x19, 0x2C, 0x00, 0x40, 0x19, + 0x2C, 0x00, 0x64, 0x19, 0x2C, 0x00, 0x88, 0x19, 0x2C, 0x00, 0xAC, 0x19, 0x2C, 0x00, 0xD0, 0x19, + 0x2C, 0x00, 0xF4, 0x19, 0x2C, 0x00, 0x18, 0x1A, 0x2C, 0x00, 0x3C, 0x1A, 0x2C, 0x00, 0x60, 0x1A, + 0x2C, 0x00, 0x84, 0x1A, 0x2C, 0x00, 0xA8, 0x1A, 0x2C, 0x00, 0xCC, 0x1A, 0x2C, 0x00, 0xF0, 0x1A, + 0x2C, 0x00, 0x14, 0x1B, 0x2C, 0x00, 0x38, 0x1B, 0x2C, 0x00, 0x5C, 0x1B, 0x2C, 0x00, 0x80, 0x1B, + 0x2C, 0x00, 0xA4, 0x1B, 0x2C, 0x00, 0xC8, 0x1B, 0x2C, 0x00, 0xEC, 0x1B, 0x2C, 0x00, 0x10, 0x1C, + 0x2C, 0x00, 0x34, 0x1C, 0x2C, 0x00, 0x58, 0x1C, 0x2C, 0x00, 0x7C, 0x1C, 0x2C, 0x00, 0xA0, 0x1C, + 0x2C, 0x00, 0xC4, 0x1C, 0x2C, 0x00, 0xE8, 0x1C, 0x2C, 0x00, 0x0C, 0x1D, 0x2C, 0x00, 0x30, 0x1D, + 0x2C, 0x00, 0x54, 0x1D, 0x2C, 0x00, 0x78, 0x1D, 0x2C, 0x00, 0x9C, 0x1D, 0x2C, 0x00, 0xC0, 0x1D, + 0x2C, 0x00, 0xE4, 0x1D, 0x2C, 0x00, 0x08, 0x1E, 0x2C, 0x00, 0x2C, 0x1E, 0x2C, 0x00, 0x50, 0x1E, + 0x2C, 0x00, 0x74, 0x1E, 0x2C, 0x00, 0x98, 0x1E, 0x2C, 0x00, 0xBC, 0x1E, 0x2C, 0x00, 0xE0, 0x1E, + 0x2C, 0x00, 0x04, 0x1F, 0x2C, 0x00, 0x28, 0x1F, 0x2C, 0x00, 0x4C, 0x1F, 0x2C, 0x00, 0x70, 0x1F, + 0x2C, 0x00, 0x94, 0x1F, 0x2C, 0x00, 0xB8, 0x1F, 0x2C, 0x00, 0xDC, 0x1F, 0x2C, 0x00, 0x00, 0x20, + 0x2C, 0x00, 0x24, 0x20, 0x2C, 0x00, 0x48, 0x20, 0x2C, 0x00, 0x6C, 0x20, 0x2C, 0x00, 0x90, 0x20, + 0x2C, 0x00, 0xB4, 0x20, 0x2C, 0x00, 0xD8, 0x20, 0x2C, 0x00, 0xFC, 0x20, 0x2C, 0x00, 0x20, 0x21, + 0x2C, 0x00, 0x44, 0x21, 0x2C, 0x00, 0x68, 0x21, 0x2C, 0x00, 0x8C, 0x21, 0x2C, 0x00, 0xB0, 0x21, + 0x2C, 0x00, 0xD4, 0x21, 0x2C, 0x00, 0xF8, 0x21, 0x2C, 0x00, 0x1C, 0x22, 0x2C, 0x00, 0x40, 0x22, + 0x2C, 0x00, 0x64, 0x22, 0x2C, 0x00, 0x88, 0x22, 0x2C, 0x00, 0xAC, 0x22, 0x2C, 0x00, 0xD0, 0x22, + 0x2C, 0x00, 0xF4, 0x22, 0x2C, 0x00, 0x18, 0x23, 0x2C, 0x00, 0x3C, 0x23, 0x2C, 0x00, 0x60, 0x23, + 0x2C, 0x00, 0x84, 0x23, 0x2C, 0x00, 0xA8, 0x23, 0x2C, 0x00, 0xCC, 0x23, 0x2C, 0x00, 0xF0, 0x23, + 0x04, 0x15, 0x13, 0x01, 0x1C, 0x13, 0x00, 0xE0, 0x3E, 0xF3, 0x04, 0x01, 0x00, 0x0D, 0x00, 0x02, + 0x00, 0x0E, 0x00, 0x03, 0x00, 0x0F, 0x00, 0x04, 0x00, 0x10, 0x00, 0x05, 0x00, 0x0C, 0x20, 0x00, + 0x53, 0x14, 0x00, 0x06, 0x00, 0x03, 0xD8, 0x24, 0x91, 0x07, 0x00, 0x03, 0x00, 0x06, 0x00, 0x02, + 0x00, 0x05, 0xAE, 0x27, 0x00, 0x80, 0x13, 0x33, 0x04, 0x00, 0x09, 0xF2, 0x3E, 0x11, 0x01, 0xCA, + 0x27, 0x11, 0x02, 0xDA, 0x27, 0x00, 0xEA, 0x86, 0x31, 0x0E, 0x00, 0x07, 0x08, 0x00, 0x71, 0x0C, + 0x00, 0x05, 0x00, 0x0D, 0x00, 0x06, 0x18, 0x00, 0x3F, 0x06, 0x00, 0xF3, 0xE8, 0x26, 0x10, 0x1F, + 0xF2, 0xE8, 0x26, 0x10, 0x1F, 0xF1, 0xE8, 0x26, 0x10, 0x1F, 0xF0, 0xE8, 0x26, 0x10, 0x1F, 0xEF, + 0xE8, 0x26, 0x10, 0x1F, 0xEE, 0xE8, 0x26, 0x10, 0x1F, 0xED, 0xE8, 0x26, 0x10, 0x1F, 0xEC, 0xE8, + 0x26, 0x10, 0x1F, 0xEB, 0xE8, 0x26, 0x10, 0x1F, 0xEA, 0xE8, 0x26, 0x0E, 0x33, 0x06, 0x00, 0xE9, + 0x68, 0x01, 0x1F, 0x2E, 0x24, 0x00, 0x08, 0x13, 0xE8, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, + 0xE7, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xE6, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, + 0xE5, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xE4, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, + 0xE3, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xE2, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, + 0xE1, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xE0, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, + 0xDF, 0x68, 0x01, 0x1F, 0x5C, 0x24, 0x00, 0x08, 0x13, 0xDE, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, + 0x13, 0xDD, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xDC, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, + 0x13, 0xDB, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xDA, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, + 0x13, 0xD9, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xD8, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, + 0x13, 0xD7, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, 0x13, 0xD6, 0x68, 0x01, 0x0F, 0x24, 0x00, 0x09, + 0x1F, 0xD5, 0x38, 0x04, 0x10, 0x1F, 0xD4, 0x38, 0x04, 0x10, 0x1F, 0xD3, 0x38, 0x04, 0x10, 0x1F, + 0xD2, 0x38, 0x04, 0x10, 0x1F, 0xD1, 0x38, 0x04, 0x10, 0x1F, 0xD0, 0x38, 0x04, 0x10, 0x1F, 0xCF, + 0x38, 0x04, 0x10, 0x1F, 0xCE, 0x38, 0x04, 0x10, 0x1F, 0xCD, 0x38, 0x04, 0x10, 0x1F, 0xCC, 0x38, + 0x04, 0x10, 0x1F, 0xCB, 0x38, 0x04, 0x10, 0x1F, 0xCA, 0x38, 0x04, 0x10, 0x1F, 0xC9, 0x38, 0x04, + 0x10, 0x1F, 0xC8, 0x38, 0x04, 0x10, 0x1F, 0xC7, 0x38, 0x04, 0x10, 0x1F, 0xC6, 0x38, 0x04, 0x10, + 0x1F, 0xC5, 0x38, 0x04, 0x10, 0x1F, 0xC4, 0x38, 0x04, 0x10, 0x1F, 0xC3, 0x38, 0x04, 0x10, 0x1F, + 0xC2, 0x38, 0x04, 0x10, 0x1F, 0xC1, 0x38, 0x04, 0x10, 0x1F, 0xC0, 0x38, 0x04, 0x10, 0x1F, 0xBF, + 0x38, 0x04, 0x10, 0x1F, 0xBE, 0x38, 0x04, 0x10, 0x1F, 0xBD, 0x38, 0x04, 0x10, 0x1F, 0xBC, 0x38, + 0x04, 0x10, 0x1F, 0xBB, 0x38, 0x04, 0x10, 0x1F, 0xBA, 0x38, 0x04, 0x10, 0x1F, 0xB9, 0x38, 0x04, + 0x10, 0x1F, 0xB8, 0x38, 0x04, 0x10, 0x1F, 0xB7, 0x38, 0x04, 0x10, 0x1F, 0xB6, 0x38, 0x04, 0x10, + 0x1F, 0xB5, 0x38, 0x04, 0x10, 0x1F, 0xB4, 0x38, 0x04, 0x10, 0x1F, 0xB3, 0x38, 0x04, 0x10, 0x1F, + 0xB2, 0x38, 0x04, 0x10, 0x1F, 0xB1, 0x38, 0x04, 0x10, 0x1F, 0xB0, 0x38, 0x04, 0x10, 0x1F, 0xAF, + 0x38, 0x04, 0x10, 0x1F, 0xAE, 0x38, 0x04, 0x10, 0x1F, 0xAD, 0x38, 0x04, 0x10, 0x1F, 0xAC, 0x38, + 0x04, 0x10, 0x1F, 0xAB, 0x38, 0x04, 0x10, 0x1F, 0xAA, 0x38, 0x04, 0x10, 0x1F, 0xA9, 0x38, 0x04, + 0x10, 0x1F, 0xA8, 0x38, 0x04, 0x10, 0x1F, 0xA7, 0x38, 0x04, 0x10, 0x1F, 0xA6, 0x38, 0x04, 0x10, + 0x1F, 0xA5, 0x38, 0x04, 0x10, 0x1F, 0xA4, 0x38, 0x04, 0x10, 0x1F, 0xA3, 0x38, 0x04, 0x10, 0x1F, + 0xA2, 0x38, 0x04, 0x10, 0x1F, 0xA1, 0x38, 0x04, 0x10, 0x1F, 0xA0, 0x38, 0x04, 0x10, 0x1F, 0x9F, + 0x38, 0x04, 0x10, 0x1F, 0x9E, 0x38, 0x04, 0x10, 0x1F, 0x9D, 0x38, 0x04, 0x10, 0x1F, 0x9C, 0x38, + 0x04, 0x10, 0x1F, 0x9B, 0x38, 0x04, 0x10, 0x1F, 0x9A, 0x38, 0x04, 0x0E, 0xF1, 0xFF, 0xFF, 0x2C, + 0x68, 0x26, 0x2C, 0x00, 0x78, 0x26, 0x2C, 0x00, 0x88, 0x26, 0x2C, 0x00, 0x98, 0x26, 0x2C, 0x00, + 0xA8, 0x26, 0x2C, 0x00, 0xB8, 0x26, 0x2C, 0x00, 0xC8, 0x26, 0x2C, 0x00, 0xD8, 0x26, 0x2C, 0x00, + 0xE8, 0x26, 0x2C, 0x00, 0xF8, 0x26, 0x2C, 0x00, 0x08, 0x27, 0x2C, 0x00, 0x18, 0x27, 0x2C, 0x00, + 0x28, 0x27, 0x2C, 0x00, 0x38, 0x27, 0x2C, 0x00, 0x48, 0x27, 0x2C, 0x00, 0x58, 0x27, 0x2C, 0x00, + 0x68, 0x27, 0x2C, 0x00, 0x78, 0x27, 0x2C, 0x00, 0x88, 0x27, 0x2C, 0x00, 0x98, 0x27, 0x2C, 0x00, + 0xA8, 0x27, 0x2C, 0x00, 0xB8, 0x27, 0x2C, 0x00, 0xC8, 0x27, 0x2C, 0x00, 0xD8, 0x27, 0x2C, 0x00, + 0xE8, 0x27, 0x2C, 0x00, 0xF8, 0x27, 0x2C, 0x00, 0x08, 0x28, 0x2C, 0x00, 0x18, 0x28, 0x2C, 0x00, + 0x28, 0x28, 0x2C, 0x00, 0x38, 0x28, 0x2C, 0x00, 0x48, 0x28, 0x2C, 0x00, 0x58, 0x28, 0x2C, 0x00, + 0x68, 0x28, 0x2C, 0x00, 0x78, 0x28, 0x2C, 0x00, 0x88, 0x28, 0x2C, 0x00, 0x98, 0x28, 0x2C, 0x00, + 0xA8, 0x28, 0x2C, 0x00, 0xB8, 0x28, 0x2C, 0x00, 0xC8, 0x28, 0x2C, 0x00, 0xD8, 0x28, 0x2C, 0x00, + 0xE8, 0x28, 0x2C, 0x00, 0xF8, 0x28, 0x2C, 0x00, 0x08, 0x29, 0x2C, 0x00, 0x18, 0x29, 0x2C, 0x00, + 0x28, 0x29, 0x2C, 0x00, 0x38, 0x29, 0x2C, 0x00, 0x48, 0x29, 0x2C, 0x00, 0x58, 0x29, 0x2C, 0x00, + 0x68, 0x29, 0x2C, 0x00, 0x78, 0x29, 0x2C, 0x00, 0x88, 0x29, 0x2C, 0x00, 0x98, 0x29, 0x2C, 0x00, + 0xA8, 0x29, 0x2C, 0x00, 0xB8, 0x29, 0x2C, 0x00, 0xC8, 0x29, 0x2C, 0x00, 0xD8, 0x29, 0x2C, 0x00, + 0xE8, 0x29, 0x2C, 0x00, 0xF8, 0x29, 0x2C, 0x00, 0x08, 0x2A, 0x2C, 0x00, 0x18, 0x2A, 0x2C, 0x00, + 0x28, 0x2A, 0x2C, 0x00, 0x38, 0x2A, 0x2C, 0x00, 0x48, 0x2A, 0x2C, 0x00, 0x58, 0x2A, 0x2C, 0x00, + 0x68, 0x2A, 0x2C, 0x00, 0x78, 0x2A, 0x2C, 0x00, 0x88, 0x2A, 0x2C, 0x00, 0x98, 0x2A, 0x2C, 0x00, + 0xA8, 0x2A, 0x2C, 0x00, 0xB8, 0x2A, 0x2C, 0x00, 0xC8, 0x2A, 0x2C, 0x00, 0xD8, 0x2A, 0x2C, 0x00, + 0xE8, 0x2A, 0x2C, 0x00, 0xF8, 0x2A, 0x2C, 0x00, 0x08, 0x2B, 0x2C, 0x00, 0x18, 0x2B, 0x2C, 0x00, + 0x28, 0x2B, 0x2C, 0x00, 0x38, 0x2B, 0x2C, 0x00, 0x48, 0x2B, 0x2C, 0x00, 0x58, 0x2B, 0x2C, 0x00, + 0x68, 0x2B, 0x2C, 0x00, 0x78, 0x2B, 0x2C, 0x00, 0x88, 0x2B, 0x2C, 0x00, 0x98, 0x2B, 0x2C, 0x00, + 0xA8, 0x2B, 0x2C, 0x00, 0xB8, 0x2B, 0x2C, 0x00, 0xC8, 0x2B, 0x2C, 0x00, 0xD8, 0x2B, 0x2C, 0x00, + 0xE8, 0x2B, 0x2C, 0x00, 0xF8, 0x2B, 0x2C, 0x00, 0x08, 0x2C, 0x2C, 0x00, 0x18, 0x2C, 0x2C, 0x00, + 0x28, 0x2C, 0x2C, 0x00, 0x38, 0x2C, 0x2C, 0x00, 0x48, 0x2C, 0x2C, 0x00, 0x58, 0x2C, 0x2C, 0x00, + 0x68, 0x2C, 0x2C, 0x00, 0x78, 0x2C, 0x2C, 0x00, 0x88, 0x2C, 0x2C, 0x00, 0x98, 0x2C, 0x2C, 0x00, + 0xA8, 0x2C, 0x2C, 0x00, 0xB8, 0x2C, 0x2C, 0x00, 0xC8, 0x2C, 0x2C, 0x00, 0xD8, 0x2C, 0x2C, 0x00, + 0xE8, 0x2C, 0x2C, 0x00, 0xF8, 0x2C, 0x2C, 0x00, 0x08, 0x2D, 0x2C, 0x00, 0x18, 0x2D, 0x2C, 0x00, + 0x28, 0x2D, 0x2C, 0x00, 0x38, 0x2D, 0x2C, 0x00, 0x48, 0x2D, 0x2C, 0x00, 0x58, 0x2D, 0x2C, 0x00, + 0x68, 0x2D, 0x2C, 0x00, 0x78, 0x2D, 0x2C, 0x00, 0x88, 0x2D, 0x2C, 0x00, 0x98, 0x2D, 0x2C, 0x00, + 0xA8, 0x2D, 0x2C, 0x00, 0xB8, 0x2D, 0x2C, 0x00, 0xC8, 0x2D, 0x2C, 0x00, 0xD8, 0x2D, 0x2C, 0x00, + 0xE8, 0x2D, 0x2C, 0x00, 0xF8, 0x2D, 0x2C, 0x00, 0x08, 0x2E, 0x2C, 0x00, 0x18, 0x2E, 0x2C, 0x00, + 0x28, 0x2E, 0x2C, 0x00, 0x38, 0x2E, 0x2C, 0x00, 0x48, 0x2E, 0x2C, 0x00, 0x58, 0x2E, 0x2C, 0x00, + 0x68, 0x2E, 0x2C, 0x00, 0x78, 0x2E, 0x2C, 0x00, 0x88, 0x2E, 0x2C, 0x00, 0x98, 0x2E, 0x2C, 0x00, + 0xA8, 0x2E, 0x2C, 0x00, 0xB8, 0x2E, 0x2C, 0x00, 0xC8, 0x2E, 0x2C, 0x00, 0xD8, 0x2E, 0x2C, 0x00, + 0xE8, 0x2E, 0x2C, 0x00, 0xF8, 0x2E, 0x2C, 0x00, 0x08, 0x2F, 0x2C, 0x00, 0x18, 0x2F, 0x2C, 0x00, + 0x28, 0x2F, 0x2C, 0x00, 0x03, 0x01, 0x01, 0x00, 0x03, 0x01, 0x00, 0x12, 0x01, 0xDC, 0x36, 0x22, + 0x01, 0x01, 0x83, 0x92, 0x30, 0x03, 0x03, 0x01, 0x16, 0x00, 0x0F, 0x94, 0x12, 0x09, 0x03, 0xE4, + 0x20, 0x01, 0x01, 0x00, 0x39, 0x38, 0x2F, 0x2C, 0x10, 0x00, 0x1B, 0x48, 0x10, 0x00, 0x1B, 0x58, + 0x10, 0x00, 0x1B, 0x64, 0x10, 0x00, 0x1B, 0x9C, 0x10, 0x00, 0x1B, 0xA0, 0x10, 0x00, 0x1B, 0xDC, + 0x10, 0x00, 0x2A, 0x14, 0x30, 0x10, 0x00, 0x1B, 0x18, 0x10, 0x00, 0x1B, 0x24, 0x10, 0x00, 0x1B, + 0x28, 0x10, 0x00, 0x1B, 0x2C, 0x10, 0x00, 0x1B, 0x30, 0x10, 0x00, 0x1B, 0x34, 0x10, 0x00, 0x1B, + 0x38, 0x10, 0x00, 0x1B, 0x3C, 0x10, 0x00, 0x1B, 0x40, 0x10, 0x00, 0x1B, 0x44, 0x10, 0x00, 0x1B, + 0x48, 0x10, 0x00, 0x1B, 0x4C, 0x10, 0x00, 0x1B, 0x50, 0x10, 0x00, 0x1B, 0x54, 0x10, 0x00, 0x1B, + 0x58, 0x10, 0x00, 0x1B, 0x5C, 0x10, 0x00, 0x1B, 0x60, 0x10, 0x00, 0x1B, 0x64, 0x10, 0x00, 0x1B, + 0x68, 0x10, 0x00, 0x1B, 0x6C, 0x10, 0x00, 0x1B, 0x70, 0x10, 0x00, 0x1B, 0x74, 0x10, 0x00, 0x1B, + 0x78, 0x10, 0x00, 0x1B, 0x7C, 0x10, 0x00, 0x1B, 0x80, 0x10, 0x00, 0x1B, 0x84, 0x10, 0x00, 0x1B, + 0x88, 0x10, 0x00, 0x1B, 0x8C, 0x10, 0x00, 0x1B, 0x90, 0x10, 0x00, 0x1B, 0x94, 0x10, 0x00, 0x1B, + 0x98, 0x10, 0x00, 0x1B, 0x9C, 0x10, 0x00, 0x1B, 0xA0, 0x10, 0x00, 0x1B, 0xA4, 0x10, 0x00, 0x1B, + 0xA8, 0x10, 0x00, 0x1B, 0xAC, 0x10, 0x00, 0x1B, 0xB0, 0x10, 0x00, 0x1B, 0xB4, 0x10, 0x00, 0x1B, + 0xB8, 0x10, 0x00, 0x1B, 0xBC, 0x10, 0x00, 0x1B, 0xC0, 0x10, 0x00, 0x1B, 0xC4, 0x10, 0x00, 0x1B, + 0xC8, 0x10, 0x00, 0x1B, 0xCC, 0x10, 0x00, 0x1B, 0xD0, 0x10, 0x00, 0x1B, 0xD4, 0x10, 0x00, 0x1B, + 0xD8, 0x10, 0x00, 0x1B, 0xDC, 0x10, 0x00, 0x1B, 0xE0, 0x10, 0x00, 0x1B, 0xE4, 0x10, 0x00, 0x1B, + 0xE8, 0x10, 0x00, 0x1B, 0xEC, 0x10, 0x00, 0x1B, 0xF0, 0x10, 0x00, 0x1B, 0xF4, 0x10, 0x00, 0x1B, + 0xF8, 0x10, 0x00, 0x1B, 0xFC, 0x10, 0x00, 0x2A, 0x00, 0x31, 0x10, 0x00, 0x1B, 0x04, 0x10, 0x00, + 0x1B, 0x08, 0x10, 0x00, 0x1B, 0x0C, 0x10, 0x00, 0x1B, 0x10, 0x10, 0x00, 0x1B, 0x14, 0x10, 0x00, + 0x1B, 0x18, 0x10, 0x00, 0x1B, 0x1C, 0x10, 0x00, 0x1B, 0x20, 0x10, 0x00, 0x1B, 0x24, 0x10, 0x00, + 0x1B, 0x28, 0x10, 0x00, 0x1B, 0x2C, 0x10, 0x00, 0x1B, 0x30, 0x10, 0x00, 0x1B, 0x34, 0x10, 0x00, + 0x1B, 0x38, 0x10, 0x00, 0x1B, 0x3C, 0x10, 0x00, 0x1B, 0x40, 0x10, 0x00, 0x1B, 0x44, 0x10, 0x00, + 0x1B, 0x48, 0x10, 0x00, 0x1B, 0x4C, 0x10, 0x00, 0x1B, 0x50, 0x10, 0x00, 0x1B, 0x54, 0x10, 0x00, + 0x1B, 0x58, 0x10, 0x00, 0x1B, 0x5C, 0x10, 0x00, 0x1B, 0x60, 0x10, 0x00, 0x1B, 0x64, 0x10, 0x00, + 0x1B, 0x68, 0x10, 0x00, 0x1B, 0x6C, 0x10, 0x00, 0x1B, 0x70, 0x10, 0x00, 0x1B, 0x74, 0x10, 0x00, + 0x1B, 0x78, 0x10, 0x00, 0x1B, 0x7C, 0x10, 0x00, 0x1B, 0x80, 0x10, 0x00, 0x1B, 0x84, 0x10, 0x00, + 0x1B, 0x88, 0x10, 0x00, 0x1B, 0x8C, 0x10, 0x00, 0x1B, 0x90, 0x10, 0x00, 0x1B, 0x94, 0x10, 0x00, + 0x1B, 0x98, 0x10, 0x00, 0x1B, 0x9C, 0x10, 0x00, 0x1B, 0xA0, 0x10, 0x00, 0x1B, 0xA4, 0x10, 0x00, + 0x1B, 0xA8, 0x10, 0x00, 0x1C, 0xB0, 0x80, 0x02, 0x1B, 0x32, 0x50, 0x02, 0x0B, 0x10, 0x00, 0x1B, + 0x30, 0x10, 0x00, 0x1B, 0xFC, 0x10, 0x00, 0x2B, 0x0C, 0x33, 0xE0, 0x00, 0x0B, 0x10, 0x00, 0x1B, + 0x98, 0x10, 0x00, 0x1B, 0xEC, 0x10, 0x00, 0x3F, 0xF8, 0x33, 0x2C, 0x80, 0x3E, 0x02, 0x0A, 0x24, + 0xDC, 0x2A, 0xD0, 0x3F, 0x10, 0x00, 0x3B, 0xE0, 0x3F, 0x07, 0x98, 0x07, 0x0A, 0x30, 0x00, 0x3B, + 0xF8, 0x3F, 0x07, 0xD5, 0x8F, 0x05, 0xE0, 0x02, 0x1A, 0x34, 0x70, 0x00, 0x1B, 0x03, 0x20, 0x00, + 0x2B, 0x3C, 0x34, 0xA0, 0x02, 0x0B, 0x10, 0x00, 0x1B, 0x60, 0x10, 0x00, 0x1B, 0x74, 0x50, 0x00, + 0x1B, 0x32, 0x50, 0x3F, 0x1B, 0x64, 0xA0, 0x00, 0x75, 0x7B, 0x14, 0xAE, 0x47, 0xE1, 0x7A, 0x84, + 0xA0, 0x00, 0x1B, 0x63, 0x30, 0x00, 0x1B, 0x3B, 0x90, 0x00, 0x1B, 0x78, 0x70, 0x00, 0x1B, 0x80, + 0x10, 0x00, 0x1B, 0x84, 0x80, 0x00, 0x2A, 0x10, 0x0E, 0x50, 0x00, 0x14, 0x3C, 0x88, 0x03, 0xB0, + 0x65, 0x6C, 0x6C, 0x6F, 0x2C, 0x20, 0x77, 0x6F, 0x72, 0x6C, 0x64, 0x58, 0x48, 0xF3, 0x06, 0x41, + 0x4E, 0x49, 0x4D, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x20, 0x44, 0x45, 0x4D, 0x4F, 0x00, 0x00, 0x49, + 0x4E, 0x50, 0x55, 0x54, 0x0C, 0x00, 0xF3, 0x26, 0x54, 0x6F, 0x75, 0x63, 0x68, 0x20, 0x74, 0x6F, + 0x70, 0x2D, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x63, 0x72, 0x6F, 0x73, 0x73, 0x20, 0x69, 0x6E, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, + 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x88, 0x48, 0x02, + 0x3C, 0x00, 0xBF, 0x62, 0x6F, 0x74, 0x74, 0x6F, 0x6D, 0x2D, 0x72, 0x69, 0x67, 0x68, 0x40, 0x00, + 0x18, 0x06, 0x78, 0x00, 0x0F, 0x39, 0x00, 0x1B, 0xFF, 0x00, 0x59, 0x65, 0x73, 0x00, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 0xFC, 0x48, 0x0E, 0x13, 0x39, 0x24, 0x49, + 0x13, 0x2E, 0x68, 0x49, 0x13, 0x22, 0x6C, 0x49, 0x12, 0x71, 0xE8, 0x1F, 0x22, 0x00, 0x65, 0xA0, + 0x21, 0x00, 0x7C, 0x21, 0x22, 0x00, 0x79, 0x70, 0x21, 0x27, 0x00, 0x69, 0x60, 0x48, 0x12, 0x61, + 0xAC, 0x21, 0x2B, 0x00, 0x64, 0x98, 0x48, 0x08, 0x94, 0x48, 0x00, 0xB4, 0x49, 0x11, 0x7A, 0xA0, + 0x3A, 0x02, 0xE4, 0x01, 0x13, 0x76, 0xD4, 0x48, 0x13, 0x6E, 0xB0, 0x48, 0x13, 0x2C, 0xAC, 0x49, + 0x13, 0x51, 0x18, 0x49, 0x13, 0x45, 0x34, 0x49, 0x13, 0x54, 0x20, 0x49, 0x13, 0x55, 0x64, 0x49, + 0x04, 0x54, 0x49, 0x13, 0x41, 0x50, 0x49, 0x13, 0x46, 0x90, 0x49, 0x04, 0x88, 0x49, 0x12, 0x4A, + 0xC8, 0x1E, 0x23, 0x00, 0x4C, 0x54, 0x49, 0x13, 0x58, 0xB4, 0x49, 0x13, 0x56, 0xC0, 0x49, 0x13, + 0x4E, 0xA0, 0x49, 0x17, 0x40, 0x44, 0x4A, 0x13, 0x5E, 0x48, 0x4A, 0x17, 0x2A, 0x48, 0x4A, 0x13, + 0x2D, 0x04, 0x4A, 0x13, 0x5F, 0x98, 0x49, 0x00, 0x94, 0x49, 0x12, 0x7B, 0x8C, 0x20, 0x01, 0xA4, + 0x49, 0x13, 0x7C, 0x1C, 0x4A, 0x00, 0x54, 0x11, 0x13, 0x7E, 0xA8, 0x02, 0x13, 0x3A, 0x8C, 0x4A, + 0x13, 0x3C, 0x3C, 0x4A, 0xF0, 0x01, 0x41, 0x42, 0x43, 0x00, 0x73, 0x79, 0x6D, 0x00, 0x61, 0x62, + 0x63, 0x00, 0x53, 0x70, 0x61, 0x63, 0x48, 0x01, 0xF1, 0x09, 0x54, 0x77, 0x6F, 0x20, 0x74, 0x68, + 0x69, 0x6E, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x69, 0x6E, 0x66, 0x69, 0x6E, 0x69, 0x74, + 0x65, 0x3A, 0xD4, 0x01, 0xF1, 0x0E, 0x75, 0x6E, 0x69, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x61, + 0x6E, 0x64, 0x20, 0x68, 0x75, 0x6D, 0x61, 0x6E, 0x20, 0x73, 0x74, 0x75, 0x70, 0x69, 0x64, 0x69, + 0x74, 0x79, 0x3B, 0x15, 0x00, 0xF9, 0x03, 0x49, 0x27, 0x6D, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, + 0x75, 0x72, 0x65, 0x20, 0x61, 0x62, 0x6F, 0x75, 0x74, 0x39, 0x00, 0xF0, 0x13, 0x2E, 0x00, 0x41, + 0x6C, 0x62, 0x65, 0x72, 0x74, 0x20, 0x45, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x69, 0x6E, 0x00, 0x4D, + 0x61, 0x72, 0x69, 0x6C, 0x79, 0x6E, 0x20, 0x4D, 0x6F, 0x6E, 0x72, 0x6F, 0x65, 0x00, 0x00, 0x41, + 0x00, 0xF1, 0x03, 0x73, 0x65, 0x6C, 0x66, 0x69, 0x73, 0x68, 0x2C, 0x20, 0x69, 0x6D, 0x70, 0x61, + 0x74, 0x69, 0x65, 0x6E, 0x74, 0x5C, 0x00, 0x70, 0x61, 0x20, 0x6C, 0x69, 0x74, 0x74, 0x6C, 0x95, + 0x00, 0xF0, 0x0F, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x49, 0x20, 0x6D, 0x61, 0x6B, + 0x65, 0x20, 0x6D, 0x69, 0x73, 0x74, 0x61, 0x6B, 0x65, 0x73, 0x2C, 0x20, 0x49, 0x20, 0x61, 0x6D, + 0x20, 0x76, 0x00, 0xA2, 0x6F, 0x66, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x3C, 0x00, + 0xF3, 0x19, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 0x20, 0x68, 0x61, 0x72, 0x64, 0x20, 0x74, + 0x6F, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x2E, 0x20, 0x42, 0x75, 0x74, 0x20, 0x69, 0x66, + 0x20, 0x79, 0x6F, 0x75, 0x20, 0x63, 0x61, 0x6E, 0x27, 0x74, 0x19, 0x00, 0x30, 0x20, 0x6D, 0x65, + 0x34, 0x00, 0x20, 0x6D, 0x79, 0x82, 0x03, 0x30, 0x73, 0x74, 0x2C, 0xC6, 0x00, 0x11, 0x6E, 0x26, + 0x00, 0x02, 0xDA, 0x00, 0x90, 0x73, 0x20, 0x68, 0x65, 0x6C, 0x6C, 0x20, 0x64, 0x6F, 0x33, 0x00, + 0x67, 0x64, 0x65, 0x73, 0x65, 0x72, 0x76, 0x34, 0x00, 0x64, 0x62, 0x65, 0x73, 0x74, 0x2E, 0x00, + 0xEC, 0x00, 0x41, 0x43, 0x61, 0x6D, 0x75, 0xA9, 0x7D, 0xC0, 0x44, 0x6F, 0x6E, 0xE2, 0x80, 0x99, + 0x74, 0x20, 0x77, 0x61, 0x6C, 0x6B, 0x27, 0x03, 0x41, 0x66, 0x72, 0x6F, 0x6E, 0xAA, 0x00, 0x51, + 0x6D, 0x65, 0xE2, 0x80, 0xA6, 0xCD, 0x00, 0x11, 0x79, 0x3E, 0x01, 0x79, 0x66, 0x6F, 0x6C, 0x6C, + 0x6F, 0x77, 0x20, 0x30, 0x00, 0xC7, 0x62, 0x65, 0x68, 0x69, 0x6E, 0x64, 0x20, 0x6D, 0x65, 0x2E, + 0x2E, 0x2E, 0x2B, 0x00, 0x62, 0x6C, 0x65, 0x61, 0x64, 0x20, 0x57, 0x21, 0x00, 0x43, 0x73, 0x69, + 0x64, 0x65, 0x21, 0x00, 0x70, 0x6A, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x8D, 0x00, 0x51, 0x66, + 0x72, 0x69, 0x65, 0x6E, 0xD7, 0x04, 0xC1, 0x4F, 0x73, 0x63, 0x61, 0x72, 0x20, 0x57, 0x69, 0x6C, + 0x64, 0x65, 0x00, 0x29, 0x01, 0xF2, 0x04, 0x73, 0x6F, 0x20, 0x63, 0x6C, 0x65, 0x76, 0x65, 0x72, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x26, 0x01, 0x13, 0x49, 0xDA, 0x00, + 0x72, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x73, 0x74, 0x7E, 0x01, 0x60, 0x73, 0x69, 0x6E, 0x67, 0x6C, + 0x65, 0x11, 0x01, 0x10, 0x64, 0xB5, 0x00, 0x10, 0x77, 0x33, 0x00, 0x02, 0x47, 0x00, 0x60, 0x61, + 0x79, 0x69, 0x6E, 0x67, 0x2E, 0xCC, 0x01, 0x40, 0x6B, 0x20, 0x54, 0x77, 0xD3, 0x03, 0x22, 0x00, + 0x49, 0x54, 0x01, 0x10, 0x74, 0x26, 0x01, 0x00, 0x02, 0x02, 0x61, 0x74, 0x72, 0x75, 0x74, 0x68, + 0x2C, 0x14, 0x00, 0x02, 0x5B, 0x00, 0x40, 0x68, 0x61, 0x76, 0x65, 0x89, 0x01, 0xC1, 0x72, 0x65, + 0x6D, 0x65, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x79, 0x79, 0x02, 0x51, 0x2E, 0x00, 0x42, + 0x41, 0x43, 0x23, 0xAF, 0x78, 0x4E, 0x55, 0x4D, 0x42, 0x45, 0x52, 0x20, 0xEB, 0x04, 0x58, 0x00, + 0x54, 0x45, 0x58, 0x54, 0x12, 0x00, 0x4C, 0x52, 0x4F, 0x4C, 0x4C, 0x24, 0x00, 0x01, 0x48, 0x08, + 0x30, 0x6F, 0x75, 0x72, 0x75, 0x01, 0x80, 0x6D, 0x69, 0x6E, 0x00, 0x73, 0x65, 0x63, 0x00 }; +#endif + } // namespace gui } // namespace eez diff --git a/Src/gui/document.h b/Src/gui/document.h index 2313162..cb917da 100644 --- a/Src/gui/document.h +++ b/Src/gui/document.h @@ -6,6 +6,8 @@ namespace eez { namespace gui { +#if defined(EEZ_PLATFORM_STM32) + enum DataEnum { DATA_ID_NONE = 0, DATA_ID_ALERT_MESSAGE = 1, @@ -90,8 +92,12 @@ extern ActionExecFunc g_actionExecFunctions[]; enum FontsEnum { FONT_ID_NONE = 0, FONT_ID_SHADOW = 1, - FONT_ID_MEDIUM = 2, - FONT_ID_GUI_ICONS = 3 + FONT_ID_ICONS = 2, + FONT_ID_MEDIUM = 3, + FONT_ID_OSWALD_24 = 4, + FONT_ID_GUI_ICONS = 5, + FONT_ID_OSWALD_38 = 6, + FONT_ID_OSWALD_17 = 7 }; enum BitmapsEnum { @@ -115,10 +121,31 @@ enum StylesEnum { STYLE_ID_MENU_WITH_BUTTONS_BUTTON = 13, STYLE_ID_FPS_GRAPH = 14, STYLE_ID_BACKGROUND = 15, - STYLE_ID_TOUCH_CALIBRATION = 16, - STYLE_ID_NOTE_M = 17, - STYLE_ID_TOUCH_CALIBRATION_POINT = 18, - STYLE_ID_BUTTON = 19 + STYLE_ID_INLINE15 = 16, + STYLE_ID_INLINE16 = 17, + STYLE_ID_INLINE17 = 18, + STYLE_ID_DEFAULT_24 = 19, + STYLE_ID_BUTTON = 20, + STYLE_ID_BUTTON_DISABLED = 21, + STYLE_ID_TOUCH_CALIBRATION = 22, + STYLE_ID_NOTE_M = 23, + STYLE_ID_TOUCH_CALIBRATION_POINT = 24, + STYLE_ID_DEFAULT_38 = 25, + STYLE_ID_DISABLED_BUTTON = 26, + STYLE_ID_BUTTON_ICON = 27, + STYLE_ID_TEXT_INPUT = 28, + STYLE_ID_TEXT_BUTTON = 29, + STYLE_ID_TEXT_BUTTON_ICON = 30, + STYLE_ID_TEXT_BUTTON_ICON_DISABLED = 31, + STYLE_ID_TAB = 32, + STYLE_ID_QUOTE = 33, + STYLE_ID_INLINE33 = 34, + STYLE_ID_INLINE34 = 35, + STYLE_ID_BLOCK = 36, + STYLE_ID_INLINE36 = 37, + STYLE_ID_INLINE37 = 38, + STYLE_ID_LABEL_LEFT_ALIGNED = 39, + STYLE_ID_BUTTON_LARGE = 40 }; enum ThemesEnum { @@ -162,8 +189,16 @@ enum ColorsEnum { COLOR_ID_CUSTOM_UNDEFINED = 32, COLOR_ID_CUSTOM_000000 = 33, COLOR_ID_CUSTOM_00FF1E = 34, - COLOR_ID_CUSTOM_FFFFFF = 35, - COLOR_ID_CUSTOM_00FF00 = 36 + COLOR_ID_CUSTOM_3510E6 = 35, + COLOR_ID_CUSTOM_14D224 = 36, + COLOR_ID_CUSTOM_EC2A15 = 37, + COLOR_ID_CUSTOM_FFFFFF = 38, + COLOR_ID_CUSTOM_00FF00 = 39, + COLOR_ID_CUSTOM_B9F3F0 = 40, + COLOR_ID_CUSTOM_EEE30F = 41, + COLOR_ID_CUSTOM_C8C8C8 = 42, + COLOR_ID_CUSTOM_C0C0C0 = 43, + COLOR_ID_CUSTOM_808080 = 44 }; enum PagesEnum { @@ -171,10 +206,232 @@ enum PagesEnum { PAGE_ID_MAIN = 1, PAGE_ID_TOUCH_CALIBRATION = 2, PAGE_ID_TOUCH_CALIBRATION_YES_NO = 3, - PAGE_ID_NUMERIC_KEYPAD = 4 + PAGE_ID_NUMERIC_KEYPAD = 4, + PAGE_ID_KEYBOARD = 5, + PAGE_ID_ANIM_DEMO = 6, + PAGE_ID_ANIM1 = 7, + PAGE_ID_INPUT_DEMO = 8, + PAGE_ID_ROLLER_INPUT_DEMO = 9 +}; + +extern const uint8_t assets[68251]; + +#elif defined(EEZ_PLATFORM_SIMULATOR) + +enum DataEnum { + DATA_ID_NONE = 0, + DATA_ID_ALERT_MESSAGE = 1, + DATA_ID_TOUCH_CALIBRATION_POINT = 2, + DATA_ID_KEYPAD_TEXT = 3, + DATA_ID_KEYPAD_EDIT_UNIT = 4, + DATA_ID_KEYPAD_SIGN_ENABLED = 5, + DATA_ID_KEYPAD_UNIT_ENABLED = 6, + DATA_ID_KEYPAD_DOT_ENABLED = 7, + DATA_ID_KEYPAD_OPTION1_ENABLED = 8, + DATA_ID_KEYPAD_OPTION1_TEXT = 9, + DATA_ID_KEYPAD_OPTION2_ENABLED = 10, + DATA_ID_KEYPAD_OPTION2_TEXT = 11, + DATA_ID_KEYPAD_OPTION3_ENABLED = 12, + DATA_ID_KEYPAD_OPTION3_TEXT = 13, + DATA_ID_KEYPAD_MODE = 14, + DATA_ID_KEYPAD_OK_ENABLED = 15, + DATA_ID_MAIN_APP_VIEW = 16 }; -extern const uint8_t assets[9804]; +void data_none(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_alert_message(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_touch_calibration_point(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_keypad_text(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_keypad_edit_unit(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_keypad_sign_enabled(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_keypad_unit_enabled(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_keypad_dot_enabled(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_keypad_option1_enabled(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_keypad_option1_text(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_keypad_option2_enabled(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_keypad_option2_text(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_keypad_option3_enabled(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_keypad_option3_text(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_keypad_mode(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_keypad_ok_enabled(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); +void data_main_app_view(DataOperationEnum operation, const WidgetCursor &cursor, Value &value); + +typedef void (*DataOperationsFunction)(DataOperationEnum operation, const WidgetCursor &widgetCursor, Value &value); + +extern DataOperationsFunction g_dataOperationsFunctions[]; + +enum ActionsEnum { + ACTION_ID_NONE = 0, + ACTION_ID_YES = 1, + ACTION_ID_NO = 2, + ACTION_ID_CANCEL = 3, + ACTION_ID_EDIT = 4, + ACTION_ID_DRAG_OVERLAY = 5, + ACTION_ID_SCROLL = 6, + ACTION_ID_KEYPAD_KEY = 7, + ACTION_ID_KEYPAD_BACK = 8, + ACTION_ID_KEYPAD_UNIT = 9, + ACTION_ID_KEYPAD_OPTION1 = 10, + ACTION_ID_KEYPAD_OPTION2 = 11, + ACTION_ID_KEYPAD_OPTION3 = 12, + ACTION_ID_KEYPAD_SIGN = 13, + ACTION_ID_KEYPAD_OK = 14, + ACTION_ID_KEYPAD_CANCEL = 15, + ACTION_ID_TOGGLE_KEYPAD_MODE = 16, + ACTION_ID_KEYPAD_SPACE = 17 +}; + +void action_yes(); +void action_no(); +void action_cancel(); +void action_edit(); +void action_drag_overlay(); +void action_scroll(); +void action_keypad_key(); +void action_keypad_back(); +void action_keypad_unit(); +void action_keypad_option1(); +void action_keypad_option2(); +void action_keypad_option3(); +void action_keypad_sign(); +void action_keypad_ok(); +void action_keypad_cancel(); +void action_toggle_keypad_mode(); +void action_keypad_space(); + +extern ActionExecFunc g_actionExecFunctions[]; + +enum FontsEnum { + FONT_ID_NONE = 0, + FONT_ID_SHADOW = 1, + FONT_ID_ICONS = 2, + FONT_ID_MEDIUM = 3, + FONT_ID_OSWALD_24 = 4, + FONT_ID_GUI_ICONS = 5, + FONT_ID_OSWALD_38 = 6, + FONT_ID_OSWALD_17 = 7 +}; + +enum BitmapsEnum { + BITMAP_ID_NONE = 0, + BITMAP_ID_FRONT_PANEL = 1 +}; + +enum StylesEnum { + STYLE_ID_NONE = 0, + STYLE_ID_DEFAULT = 1, + STYLE_ID_INFO_ALERT = 2, + STYLE_ID_ERROR_ALERT = 3, + STYLE_ID_ERROR_ALERT_BUTTON = 4, + STYLE_ID_SELECT_ENUM_ITEM_POPUP_CONTAINER = 5, + STYLE_ID_SELECT_ENUM_ITEM_POPUP_CONTAINER_S = 6, + STYLE_ID_SELECT_ENUM_ITEM_POPUP_ITEM = 7, + STYLE_ID_SELECT_ENUM_ITEM_POPUP_ITEM_S = 8, + STYLE_ID_SELECT_ENUM_ITEM_POPUP_DISABLED_ITEM = 9, + STYLE_ID_SELECT_ENUM_ITEM_POPUP_DISABLED_ITEM_S = 10, + STYLE_ID_MENU_WITH_BUTTONS_MESSAGE = 11, + STYLE_ID_MENU_WITH_BUTTONS_CONTAINER = 12, + STYLE_ID_MENU_WITH_BUTTONS_BUTTON = 13, + STYLE_ID_FPS_GRAPH = 14, + STYLE_ID_BACKGROUND = 15, + STYLE_ID_INLINE15 = 16, + STYLE_ID_INLINE16 = 17, + STYLE_ID_INLINE17 = 18, + STYLE_ID_DEFAULT_24 = 19, + STYLE_ID_BUTTON = 20, + STYLE_ID_BUTTON_DISABLED = 21, + STYLE_ID_TOUCH_CALIBRATION = 22, + STYLE_ID_NOTE_M = 23, + STYLE_ID_TOUCH_CALIBRATION_POINT = 24, + STYLE_ID_DEFAULT_38 = 25, + STYLE_ID_DISABLED_BUTTON = 26, + STYLE_ID_BUTTON_ICON = 27, + STYLE_ID_TEXT_INPUT = 28, + STYLE_ID_TEXT_BUTTON = 29, + STYLE_ID_TEXT_BUTTON_ICON = 30, + STYLE_ID_TEXT_BUTTON_ICON_DISABLED = 31, + STYLE_ID_TAB = 32, + STYLE_ID_QUOTE = 33, + STYLE_ID_INLINE33 = 34, + STYLE_ID_INLINE34 = 35, + STYLE_ID_BLOCK = 36, + STYLE_ID_INLINE36 = 37, + STYLE_ID_INLINE37 = 38, + STYLE_ID_LABEL_LEFT_ALIGNED = 39, + STYLE_ID_BUTTON_LARGE = 40, + STYLE_ID_INLINE40 = 41 +}; + +enum ThemesEnum { + THEME_ID_DEFAULT = 0 +}; + +enum ColorsEnum { + COLOR_ID_TRANSPARENT = 65535, + COLOR_ID_BACKGROUND = 0, + COLOR_ID_BACKDROP = 1, + COLOR_ID_TEXT = 2, + COLOR_ID_TEXT_INACTIVE = 3, + COLOR_ID_DARK_TEXT = 4, + COLOR_ID_BORDER = 5, + COLOR_ID_ACTIVE_BACKGROUND = 6, + COLOR_ID_BUTTON_TEXT = 7, + COLOR_ID_BUTTON_BACKGROUND = 8, + COLOR_ID_BUTTON_ACTIVE_BACKGROUND = 9, + COLOR_ID_BUTTON_BORDER = 10, + COLOR_ID_BUTTON_DISABLED_TEXT = 11, + COLOR_ID_BUTTON_DISABLED_BACKGROUND = 12, + COLOR_ID_BUTTON_DISABLED_BORDER = 13, + COLOR_ID_ERROR = 14, + COLOR_ID_NOTE = 15, + COLOR_ID_SWITCH_WIDGET_COLOR = 16, + COLOR_ID_SWITCH_WIDGET_BACKGROUND_ON = 17, + COLOR_ID_SWITCH_WIDGET_BACKGROUND_OFF = 18, + COLOR_ID_SWITCH_WIDGET_BORDER = 19, + COLOR_ID_SLIDER_WIDGET_COLOR = 20, + COLOR_ID_SLIDER_WIDGET_BACKGROUND = 21, + COLOR_ID_DROP_DOWN_LIST_COLOR = 22, + COLOR_ID_DROP_DOWN_LIST_COLOR_DISABLED = 23, + COLOR_ID_DROP_DOWN_LIST_BACKGROUND = 24, + COLOR_ID_DROP_DOWN_LIST_BORDER = 25, + COLOR_ID_DROP_DOWN_LIST_ACTIVE_BACKGROUND = 26, + COLOR_ID_TEXT_INPUT_COLOR = 27, + COLOR_ID_TEXT_INPUT_COLOR_DISABLED = 28, + COLOR_ID_TEXT_INPUT_BACKGROUND = 29, + COLOR_ID_TEXT_INPUT_ACTIVE_BACKGROUND = 30, + COLOR_ID_TEXT_INPUT_BORDER = 31, + COLOR_ID_CUSTOM_UNDEFINED = 32, + COLOR_ID_CUSTOM_000000 = 33, + COLOR_ID_CUSTOM_00FF1E = 34, + COLOR_ID_CUSTOM_3510E6 = 35, + COLOR_ID_CUSTOM_14D224 = 36, + COLOR_ID_CUSTOM_EC2A15 = 37, + COLOR_ID_CUSTOM_FFFFFF = 38, + COLOR_ID_CUSTOM_00FF00 = 39, + COLOR_ID_CUSTOM_B9F3F0 = 40, + COLOR_ID_CUSTOM_EEE30F = 41, + COLOR_ID_CUSTOM_C8C8C8 = 42, + COLOR_ID_CUSTOM_C0C0C0 = 43, + COLOR_ID_CUSTOM_808080 = 44 +}; + +enum PagesEnum { + PAGE_ID_NONE = 0, + PAGE_ID_MAIN = 1, + PAGE_ID_TOUCH_CALIBRATION = 2, + PAGE_ID_TOUCH_CALIBRATION_YES_NO = 3, + PAGE_ID_NUMERIC_KEYPAD = 4, + PAGE_ID_KEYBOARD = 5, + PAGE_ID_ANIM_DEMO = 6, + PAGE_ID_ANIM1 = 7, + PAGE_ID_INPUT_DEMO = 8, + PAGE_ID_ROLLER_INPUT_DEMO = 9, + PAGE_ID_FRONT_PANEL = 10 +}; + +extern const uint8_t assets[84703]; + +#endif } // namespace gui } // namespace eez diff --git a/Src/gui/hooks.cpp b/Src/gui/hooks.cpp new file mode 100644 index 0000000..30b7701 --- /dev/null +++ b/Src/gui/hooks.cpp @@ -0,0 +1,124 @@ +#include +#include + +#include +#include +#include +#include + +#include "../firmware.h" + +#include "app_context.h" +#include "keypad.h" + +#if defined(EEZ_PLATFORM_SIMULATOR) +#include "../platform/simulator/front_panel.h" +#endif + +#if defined(EEZ_PLATFORM_SIMULATOR) + +// for home directory (see getConfFilePath) +#ifdef _WIN32 +#undef INPUT +#undef OUTPUT +#include +#include +#include +#else +#include +#include +#include +#include +#include +#endif + +#endif + +namespace eez { + +#if defined(EEZ_PLATFORM_SIMULATOR) + +char *getConfFilePath(const char *file_name) { + static char file_path[1024]; + + *file_path = 0; + +#ifdef _WIN32 + if (SUCCEEDED(SHGetFolderPathA(NULL, CSIDL_PROFILE, NULL, 0, file_path))) { + stringAppendString(file_path, sizeof(file_path), "\\.eez-flow-template-stm32f469i-disco"); + _mkdir(file_path); + stringAppendString(file_path, sizeof(file_path), "\\"); + } +#elif defined(__EMSCRIPTEN__) + stringAppendString(file_path, sizeof(file_path), "/eez-flow-template-stm32f469i-disco/"); +#else + const char *home_dir = 0; + if ((home_dir = getenv("HOME")) == NULL) { + home_dir = getpwuid(getuid())->pw_dir; + } + if (home_dir) { + stringAppendString(file_path, sizeof(file_path), home_dir); + stringAppendString(file_path, sizeof(file_path), "/.eez-flow-template-stm32f469i-disco"); + mkdir(file_path, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + stringAppendString(file_path, sizeof(file_path), "/"); + } +#endif + + char *q = file_path + strlen(file_path); + const char *p = file_name; + while (*p) { + char ch = *p++; +#ifdef _WIN32 + if (ch == '/') + *q++ = '\\'; +#else + if (ch == '\\') + *q++ = '/'; +#endif + else + *q++ = ch; + } + *q = 0; + + return file_path; +} + +#endif + + +namespace gui { + +AppContext *getAppContextFromId(int16_t id) { + if (id == APP_CONTEXT_ID_DEVICE) { + return &g_deviceAppContext; + } + +#if defined(EEZ_PLATFORM_SIMULATOR) + if (id == APP_CONTEXT_ID_SIMULATOR_FRONT_PANEL) { + return &g_frontPanelAppContext; + } +#endif + + return nullptr; +} + +static int overrideStyleHook(const WidgetCursor &widgetCursor, int styleId) { + return styleId; +} + +static bool styleGetSmallerFontHook(font::Font &font) { + return true; +} + +static int getExtraLongTouchActionHook() { + return ACTION_ID_NONE; +} + +void initHooks() { + g_hooks.overrideStyle = overrideStyleHook; + g_hooks.getExtraLongTouchAction = getExtraLongTouchActionHook; + g_hooks.styleGetSmallerFont = styleGetSmallerFontHook; +} + +} // namespace gui +} // namespace eez diff --git a/Src/gui/hooks.h b/Src/gui/hooks.h new file mode 100644 index 0000000..5395256 --- /dev/null +++ b/Src/gui/hooks.h @@ -0,0 +1,9 @@ +#pragma once + +namespace eez { +namespace gui { + +void initHooks(); + +} // namespace gui +} // namespace eez diff --git a/Src/gui/keypad.cpp b/Src/gui/keypad.cpp new file mode 100644 index 0000000..94674e7 --- /dev/null +++ b/Src/gui/keypad.cpp @@ -0,0 +1,103 @@ +#include + +#include +#include +#include + +#include + +#include "app_context.h" +#include "keypad.h" + +namespace eez { +namespace gui { + +static NumericKeypad g_numericKeypad; +static Keypad g_textKeyboard; + +static Keypad *g_activeKeypad; + +NumericKeypad *startNumericKeypad( + AppContext *appContext, + const char *label, + const Value &value, + NumericKeypadOptions &options, + void(*okFloat)(float), + void(*okUint32)(uint32_t), + void(*cancel)() +) { + g_activeKeypad = &g_numericKeypad; + g_numericKeypad.init(appContext, label, value, options, okFloat, okUint32, cancel); + appContext->pushPage(options.pageId, &g_numericKeypad); + return &g_numericKeypad; +} + +void startTextKeyboard(const char *label, const char *text, int minChars_, int maxChars_, bool isPassword_, void(*ok)(char *), void(*cancel)(), void(*setDefault)()) { + g_activeKeypad = &g_textKeyboard; + g_textKeyboard.start(&g_deviceAppContext, label, text, minChars_, maxChars_, isPassword_, ok, cancel, setDefault); + g_deviceAppContext.pushPage(PAGE_ID_KEYBOARD, &g_textKeyboard); +} + +void executeNumericKeypadOptionHook(int optionActionIndex) { +} + +Keypad *getActiveKeypad() { + return g_activeKeypad; +} + +NumericKeypad *getActiveNumericKeypad() { + if (g_deviceAppContext.getActivePageId() == PAGE_ID_NUMERIC_KEYPAD) { + return &g_numericKeypad; + } + return nullptr; +} + +WidgetCursor g_editWidgetCursor; + +void keypadSetFloatValue(float value) { + //auto &widgetCursor = g_editWidgetCursor; + g_deviceAppContext.popPage(); +} + +void textKeyboardSet(char *value) { + auto &widgetCursor = g_editWidgetCursor; + set(widgetCursor, widgetCursor.widget->data, value); + g_deviceAppContext.popPage(); +} + +void action_edit() { + auto widgetCursor = getFoundWidgetAtDown(); + auto widget = (const InputWidget*)widgetCursor.widget; + + auto data = widgetCursor.widget->data; + + auto value = eez::gui::get(widgetCursor, data); + auto minValue = eez::gui::getMin(widgetCursor, data); + auto maxValue = eez::gui::getMax(widgetCursor, data); + + g_editWidgetCursor = widgetCursor; + + if (widget->flags & INPUT_WIDGET_TYPE_NUMBER) { + auto defValue = eez::gui::getDef(widgetCursor, data); + + NumericKeypadOptions options; + + options.pageId = PAGE_ID_NUMERIC_KEYPAD; + + options.min = minValue.getFloat(); + options.max = maxValue.getFloat(); + +// auto dataId = flow::getNativeVariableId(widgetCursor); +// if (dataId == DATA_ID_INTENSITY) { +// options.editValueUnit = value.getUnit(); +// options.flags.dotButtonEnabled = true; +// } + + startNumericKeypad(&g_deviceAppContext, nullptr, value, options, keypadSetFloatValue, nullptr, nullptr); + } else { + startTextKeyboard(nullptr, value.getString(), minValue.toInt32(), maxValue.toInt32(), widget->flags & INPUT_WIDGET_PASSWORD_FLAG, textKeyboardSet, nullptr, nullptr); + } +} + +} // gui +} // eez diff --git a/Src/gui/keypad.h b/Src/gui/keypad.h new file mode 100644 index 0000000..b096ae4 --- /dev/null +++ b/Src/gui/keypad.h @@ -0,0 +1,30 @@ +#pragma once + +#include + +namespace eez { +namespace gui { + +NumericKeypad *startNumericKeypad( + AppContext *appContext, + const char *label, + const Value &value, + NumericKeypadOptions &options, + void(*okFloat)(float), + void(*okUint32)(uint32_t), + void(*cancel)() +); + +void startTextKeyboard( + const char *label, + const char *text, + int minChars_, + int maxChars_, + bool isPassword_, + void(*ok)(char *), + void(*cancel)(), + void(*setDefault)() +); + +} // namespace gui +} // namespace eez diff --git a/Src/images/front_panel.pdn b/Src/images/front_panel.pdn new file mode 100644 index 0000000000000000000000000000000000000000..a6926f38f7f360b5b0bc3b32a829c8ba16df887d GIT binary patch literal 58744 zcmeHQ2S8I-_XndvDroCQR48g~MOgs?$_hh9fUpCo>=0H6WDpWYpxU}|)de!Ft4;(| zL`JagML<+!7;q7hZGf;s{`UoxgzEq6(8~7-;^QUny>st9<9E(IcRUAkdjxx;ltDy5 zxHZ8Sk5i@v2T+0xRWvm;G*py>aKZQ>ilK_G9{3REOUIGOhAP@B%4FXtTmUwh666NH z2_}YvFVzs5nreEQNPRVJEiElg6(a+GDw#qg7#UE4s02Udh;Y22O0b(L#)+nZw!{-r z;K$zCHORsh56&E+k7iUelpXkMPGvaTt3uzP-0hv6G^|l1vbMjj=pLtVM^{Z#aBp-7 zElSVB(G}c;wsp0Lc6IVFL*cERErNV8p^>Cu-Dq2!PBa=rAQ7pyAw*qFC|WCuLWM8W~{gim+G5>-ZxbHTC^G5J*c6nvE8oWNm4RC!)>pBqWL+K=Rk7 zm^*9v``Kvt(E;6HGS$Y?g@DBA()8Wk5oC2IEz1B(AQ597ri&v{Z84fOPpu#lG1w-= znr;`O7l_u-M+WNnT85FWoOFVTSTw;8ryCs^Nu@^Md?QF$1dYsa(9{p~L?9y6L#@Kp zLy*qeG+o{3C{IE_q&Chv#99jz>ThMv2(WcS*jZUHETg0G+FH&;KZ0JgE@)^3#v=l4 z84`)qQl~?0N23X3Bvv~bjg6q_Iuj{2X!i(+PyXQ9NN~R{XoD{`imI*UNI;@BX@1UH zv`AHYR3y09)7LlBBho%B!q+n#iP54(sD_YjEU^*RSj%7!0y-pu9vG>k8%)xP#F4DQ zeI9^Uo@iHsj&2Ys0_PV=RCOhK_*w;Pqs@aX+*Ud{Yg26rZegCzdQrACAm){xST{f% z8|LKdW)%clr)3{%t?Cd;#I6h?syc>h)9pia&_HH>)*2*rQ-&?5pAEr}7>Nxh*|}J0 z*hcEp(LlC#;kKIg;eOfy44jU=m5Y|1xf#QkPK&a^x`$K1XHqaSIuf+sBiJTbmrkWb z0-pH0STZ81QBjaC*du^UfDF)D;2CFk5icnYZU~Hdunxio5rnYU2_|86qHXASkt{uQ z9YQHl0or;FmJEVZM4)vrCfpB!qDK-aRKT-{NY&^lt1#6NZK@LyO$D;`^^5etSqE!J z+J=zm>hwroP!~(fFrtN*1&;5yKSaH6Fdo~Y_Xu)%sncw*cmtm%#f zqO)bNHIRiT#w}b2>lqPY=|=P**oB#?W9`u*L$vX?2=ep?axo`EHj6Yz`3FQrT0+HxQw&p`%LDuwv+0=_B0T?JZ0#Jh4dk zNP8>^OC#Hv`BHEZSY3Tp6oYQ&htf26Bs-WPJrFcEw0?A`zL{e%+RvUqwU2PIreZ^V zHGPAS0TEg>ohTirXeXqvT?hu@Le?}5i}FB{ECMhHtb>am#?nI-;UA*mjEnM%MEK*} zv`hn{Jk*I{`c8T@JM*wG4NEhr$`TXhOViO9?}jQVd;+4 zTWRY+L6|xDt6MlbXzI8HuGCRC57DMr`v*o*{22}|u1*%vKf6$>JKE3MpGbGYl2$r} zu5|UZu|t_s-LNQBh>Z;%WlxU;V)6h2Ls3^^O;IkUXgq!;Es|z!?qTC-fl@WanmYQS z(5O&L8d?KwZf)vhfv2Oe(XJjSv|Xqr$_#-HL7|*NLun{W9XAh@nO!IWg+ic7D3mEa zjOJ*j?dD-&YG)B?hH^I}q44(jFqEUY_DYYHreqY+4A3Sy67BFSEt~;uzm-mS6p`-e zfwJ|F1ogCZc0r;1!rbsEYr3-s%G^Jaj6zwOxtpSFgWT|r7Bpv~wW&XvY=+V@b2UXd z;N9@9mNYZGjValTVg~Bz>SPUQliff)Lu^d(C<>iOLs|Tn@xTqQO2ZH}gCiL$(Pq}c z&_807p0+|l>~&Qb|lW9WNSw9C5O1Wk#x=d{rp|S zv=D)0gf%uCN5le8Kr(kGM`>wWhT9<`LWqGlccg<`s8*DXyDbJ`PIGk#3kp-$uttzQ z{2ko=^rG#;Tuglf9kkI1f33i1h7MidKg!BQ$Bcrsbhps5rdoOE+lQNn*ievYgkNMp z049(c6-ailqS{axXa_47O`02$NDp5b73!{Uu0=vyY2nnVHevSQc{f{Kx~ZnFI^CUa z8-XB2(eY>-Btu_M-P$SK72^&7SyesIKhPW%j?`0ka7Qv2>d0XK;NTF4P+Q*+2NxUt zaJ(iCKnwVBc6Gxzp>@nWtgQ`Il+}$4)ZYdg>TiP>BPnU{PfAJ%exSe5kK8zLaB%Pq z4yTwCDfT#unz=8K7L5kH*nmh@rS} z!*FU?*aV3DbP1|Ne<}eNPJx39Uj>uRgUJy@GA;l<7(Go8g;(&wxJve281)U6j3e3M zD82!pPSzA0fh;v%N(u&(o*_=!77D;@gUJ-ADHA77cBYfTt!hIpsFxo4Y(@+V!}(J{ zSVmT}#D(KX!TxHX(r&(CR2(2j^3htgYUoyH3Mn`ozf>7GI3g)5*iW1t8fxI*f98T8 z66vesucND}kI=?x=;^On`YDO8S+xdgyp${q9A1ILZ{VXW;FXl@1aO!Def@r(LHEET zd`UnwU!zDQUpmA{RqtSk*;B;6AO|yWQ^h_<4Mw=*0r~gJc~BP6Q5Mn#Ss8GE$`bvD z4kN@Qs)x6oZwQeD_qGcThyIvSgTn%3y`6AT!B8{}9s=T>I1#!P35fEPq@k!V@vaaQeu&_kw*;q15Y&YT zeht1tiV@TUghbWWdrJ_sW2n|1BAB;;j)OIAeM@+%1YsmZc-lz9pkjZP@Yio`Rdza{ zB0B>*%!CfJz(H;{I7s*lGa?Bm4v>-^-v5l0B7XsuG)o-RO@k=}-v|-3i(Ezo2?X{e zN-&NrL#C1fef@D?i!Q1T`;tk6Ux-|Z+~E13Lm9ern8bJpD8?`QKzXWSWjnkp7Sh6L z;!ijaRs-UP^u&qZieDNmTy&HqAi_fh@PzCfa2Q5vMTiK*Xc5Qff)m+!;4pl{eDFaU z5`yRk0DMxi%HS}3!?)mrG$bI=4JzP7b^$mH->?vTm;e?1*P0E1w~QZ9od8V4`0vCU z=?Z+a>EH#jsy&fJ@C_UK2(?nw(nV02P)py(I7kK(ejiQ-ZZ`lof$Z-at^qEN2Ustm z6LvTPkwiBQBl?FzT!;R@^>rD*xMaVBC_=3K&%%IoYJ9ja0r$rcLk99Tpv7{*WK&=N zP|#VWh6l(HBYgdXDRfy8E9{5?IBCeIj{j1k3u)limX;Pyr~pv)|2!{JG7-#qdrM7(s6ju{kR6DOWeM~NG6+bQBt)(XU4e`P5<7e; zILL^qrmQtswv4s-=FKoLn@a56+v`yI)fVk9R(cJn7~4csZRwF!{&f5=)ORhRnXrrB&w2zG!5du zG^AJ%ONSXE4XKRi8l)j3u0gUFU4uj|d2JGa3Gk)pXM&Q_=81!+Up3!Hfp|i0okpV` zYf*Wb4BYDEqA9a|5~Sf{hriB)M0%YxOirU%YLp(vs`pQXGs?NgD~633?cWEkUKyGC zGTDS7oCLwZ7)*XD7cd5s|Hwa#avU1v)fek!~9>*=kJ|Ab^T2{M#pF!`y(J=WvaDk4*YfO z9)4mhn*4~->eE$oiLl0;$)pqoqy+E;)=CUK#B}*kjOAg;H%bK!I zOd+0l5L0k7i`#p~-GwLTJ%wp3aPy@n7?esLPdA!Paonk4tMuN1Qj}&b7*y%^%L!G5|L~g~4y5hnGx6(Qf-7+ui z;U3>%&hI?fVz1D&>5dPL+j%)HI#93jp$5G`Si5=ue(&05?lT28B!P8v9ANLHQQX@h zQ^7uT{Kcg*&N|{LWTd~r?q62#tI$er+VM0^O`lWwtze#`wMF%!O3rt2SzYSur>5S^ zS$th7Ag+Xo?`O@F6l(Fdc0s$aueZa#B6>NM9r0`5t7z}md$*nk@1N7O_xQoY*nO?H zaHI^(cfAb4G7|OG=ARZROtzwBSTIaadv9Hszik=LUU2t#&$I_4)FlBScQG!mcTGim zOG#~V+ST6=-|BgBGvmM<#XWbsH{7+~QdOGXS-8LKVAwMFeJ#%3Uv`-1o<=R7d8rkJ)mo;kfMnbfa&1 zix=|_w%)T#s`d=pdd_WHgVzdYpT6m3XHyrw3JKj4vw>?P{5=?URaFp61q(~4o!Uc z&)o3!WGbQ;5nmUErlauibLt1$x2u1tAxh_7C?e6?Q8 z^#?vBT|b-)zqHr{FCZIkqAXp(t*xvIz)$?~yld65?&S#0-tE(d8)fpF^bjanLam~l zM?Ni&c@$GYk84JrT3S*)e_j1?eda*>jGm@LcaDBH=}pgKrE30})r{IlmNB!J^D+y! zZt0OrMeVaX*0jH?w?4_f8HOp57;ns)SgS>N3_&OY57Sg(LpA{|6D z#lt9WCNbY6x4Q0PHWVRoeL0xh*$tNcwDa(){EHW3-Ri$ve05c<)$g1+DZ-73O>&7X zS6a8OdxNiB|2p*W`4crA-=83=-Lkv-=sQ*kQY(kXzG~P}1qGO_okh=~`%% zPx9ErZ~Db<+ki)!@J8*6PCG?AV-Q|FXYqW2mxh1zlF#@#i zKptgFOTu}ww`{nR;dlo znsPB>pfzY@B^q^Ioxw~??L+(!_Gxx&q422jLBzNUBf-@IFD;$N%4~x- zi|J3ZEMM%tp|lH`MmOa!e0LQHUe8Qnwzo7tQ#A~WnYIhou&QqwN=OiFJajZF?d1mx zI(|zyDOG8oC!#hprh$qnOk*D7K3h}xX2}!E5i3V;F9Z$2~ol`faIU zw&<(eS4rJAw_}ZT6gAaM_u{g`a z=P#{3;FItNy!(m>@XlEf&RkeVNUuy|7Og&GnRRh{W@1TiBfWFSbq2k2W9OUR@@;og z*v1QDyyLyPh%p{XO;v%Uu-+u@9gCvQ*t|WPw1PFr@PQNAKaP;hK{!C}B#~&A%v3(5Wy(v_4y08a{E1#}n@w)u4)Fo;Xa zFZt$`S8UwOf;7CbvEdKvY2mw?Q*>{i;im0*@*V97jak=;4I`@1qT*Ij_aDcpRHwYs zDBO5H2X-=|G(f=mKeu5XI(&6{?p z3aya?Q-7S(c7jvAcrlipUqOeZu9*19?FA1rJ~^jwW7maMjA?|2Gw!>1E#*90>lE{9 zUW2?0a>fU(*m*}+-zC^G<9n4^QTtzqNPb`Ks2wP7ZaC z30H6)dysmTO*T%uz~#IY>TlPj9}6hRtayZOJX%KVomv=5$|b|nUK8tku`$yEqm)mv z@=HGyES$h%&QjOZ)J8kw+o^k$=S`~SUI?8BOei`1ktw^h90Ux8r+3t!>f@geKOU5y zs&Mn=8T^y=ud~UpJVd*JWmig1qM7%$qdTXp`1V6sN8X!P>-S`FCjX3nP^M{P20b`_ zj_0=3uR>4nXnE3FUT_6fHh+Byue!$0TO~clA~=d&xL>i9V}9z^s$G4B?~6ySexn1q zTH2B4Wih|naei_quZ?rd?^-hT=;Y;-GR~KB*4FRe>~i=?m)6c^>6F|@c8$kkny<*u zmwn`#*|jJ;4;XQBOenSI_Jg`&_0*llA5h=WO!v*LiDxrgPQS{us5ALM-?O6cf1dFV*{ z!Kh4bNPh04meh*)we?34(xGOxIr=G{KauG%*@m))G8p!8;`cp)ff-q+UU?Gry8Eh` z-XEr!f94{qA+f8sYCQfHd*@(nxUn7F*urxo$*>QCeA zf-%37yVt~(^kH|vG1sD*uer2d!}p18FpN~XwDW1*^78dD|%LyI}`JS%3w*3NAc3|y(FAHGB^bH!C8FWGdj zz$ELO%P+A{Gnd{w_s}KU|DL?!&$|p+m#W#zDDRCrPGKeqTmR?;M2I#V2fgbKj0j&x z#NeN~BR5g!56)}^GLHyHK67`oCv8su6voQyw}#jLkKZ8H7q7^YFE){bWi_$RAy6T* z-%RPAAU88JKc<8{w&B9x%~I7x!jOOW*}uQX!=F#g*VPou|M|QBjT%Xop@)q4x0P=o zz+~q_>yRY^O6lv-pfO zI6r>8L--i7mb2_d;A3Bn?m2md$2!X3Txa)yQcO75F{dkUq4myy^y;54d<)BmgY&~j z?+g9eKnlf1d%?#ha&@V0fKNpNIDg>M%WTR6TkSmNf^v7pg)3J5EY~z=J2+3a5pFYt zRI6__xRlK%m{o62Tmu8=PR(39JCWMqYP>J$6P5XAIORh!lS@OZwcRtlzvWWLfm92DUr^H_~d?} z54d;0Obi_fLuLi+0Ol%gR#_smLh)-m;-;iqWhg|zZonVKn4HY#L8h`V3>Z}MVF==a zOkiF5Qc{m0g!?V=37BY}VGRLNB3#=i9VV3^!lOBlK|!PGfi%U7m&3-4|4T!>5_zD# zB6XbrFhN_R8fc}qHRL2q6Mz$!k^*TgvuX!eK5!l;yF`9kKB(9TObZsdX`Qow>Vdj= zP91E9%xub#ae+}Sn3IHY$zL(~8iwku?f8LqB0*aZ77JT1pGM=?tOq6874;KD^%=LFvd8?@XYX)Chu6VBm41Az_~^qL z_`g>|+r3F^6Y|rCYzl;TFgJ0Vdau8Fj-hd({*y-KCkapgRrW`W`K!^CZNRo!igI06 z(DvwdO)B|TusQCZq;Fm#FX~TC3R?g?!>7v1*#9mQ7w}YT$hyF?BpCYx)-_E=*ZoKB zvv(K7Pm#*F^Mnqihiu2PeE(mTudZ_Cg&m))lRS(W!feioz|Kn7YKB+Wn; z^4~f=pm-5@lYhO~zuU;Vfx^o&R~|k+KV;Tm8IAmYF|&TsNZiAx%d`!^szm!&oK*f~@v{JK`|RbMnF7L%U-^&AW(OH} z-ElTdU9XlpPgreprgnr8JLtnt(3!osif$iadTL8Um4Q(yE%eO`p96{to5;t0-s@Jj ze#5P&iTh^1Qq6I{>zh%yh_PzUp_Ap_jKad3fhT$Le!t&)?FX$oW3-tJ`w$ z>Q#HSf{ZE3y;aGXagLdOd9_S57@`#;Zi1WrTRmXIrJpf#h1VaOwBF!i(wBx7P@Zdj;-Lz`0FZ8~4%{Re3BZ^as4G{anN81ewt1=FgvEHWv&W z-1++bRUc?^jqMV4o-%B_Wn}(HZv|DY{;2xZlZaW*t6nycURGqTPTq8K7JF~r-RTOu z3ped}N=j4in|@_pb6M@9xliom%gP*-mQnkD&3Rh4xO|#F6Z=EwDlJKgF1cZ%(~2Ro zuK(OC?57Yb!nzjSuG)MlyXX}EdeiP`LQ6B}K*XyK9mM?%4b`Qp8`+*o6Y67$cFTl|_s2o#gq-eN#R9 zI#u`HzEpcLei?_+ys{vUcOEpUC+F_7-raX_nJS2zHQBk5Q9(YzNg1q8_sT%lkn0NQ&bx7CNl>HV%p2{Tc_{8 zd!20@&FZg=Ar?8-?=swSpoh)5PHA63g8TZNWf_zkrLU-f7P+8|O$ zd*)fTt-JOoxolc{?|H0$AW0=8H*CwEDnpzAzn+Vq_{ONe=u!QVoTe0h>&6B7xw8y6 zC9leH=CUr-w6YdS&gIC^l5^n=XlHWvT+ip(=EvUKoCDLZ5Hd7pZ9k90JUhhaY+M#v zarJiofd2gMZOqL#u$)yL3y$6q?h$ORJU%I_F|V`z{w1BPzC3D~7mIj&phrPi-N?-Q zjcNIS$keo_($09c@JDKng8~E&p7HSN8sxRvO|)S2JYlKYIq6x?v9 zRL244YY1xQ!96qTuV}4OaHOxwiMcR zGkz>0KDIXZ`LQWyw&3S`t$DG-nReTAz_ zzJ6iYy&qNb%?ky3&z6fy96@XQt3uk1T_=mCg)$?U{Y_=Uq^%gEIjQoUxSzeFjJ$Zi z_e4{xb+7G6Zg!M~pBmx2eJbUFuAGa#u)1u8UU|8zQBGV#4{5XErjt2ng%_uoY1mp% zmht?7u1(SXG5o8T`4`n630@^ecV#JEJ9=!sYKTF%OqzN{Zw!0yiURVgx!>2z&50uB z81sq6*+NAhaSKemEfN=r$+_RZIX1P2!Cq$I-}2@~^y<{**tA5Nf0s?q7Jlrbnwk!m zQ_LW$M_+OuYej8}`@VTMD+j9XDc;UYyh{qcz&fpeDP_*H?x&ZsbIUH`v2&}kbV72& zw;YOz+DFVxV8JBSBx5RM4d-HuJju@~MJ3smSrPVLMmG$(6W@6C$IgsR!!uv@2NayG z&x-bYS=j!7&zgmqb)Fl?XB!SURHnEat%q~9{a0jUUsLh#VN6a8i^=1a zoulpLJzY}QnjmR{zm12G=HAJZ#}DcnKUdN(b1dn>GkrDJ?*A3Dga4dun{@306|D+o z1 z0J^`V^SPmHj~@^4*=FfXd0Db>v!k9oU^2NYFzF^FOXX~ z-P62UXiEHb-@Kq(LjDI0{MyO?GW*XyVL5OjidjUTg7~3iJoSTS_LC^Pn zXh|O*kvnj~|K;6czh?TQI9^dtUg9-GdsjH)!ak+P-Hl}f9OBYJ$Dlkg1<@@(w+QY! z)IkFac*oxq>!8(Chxp^B%S3qlm`soTIZvU@rl8$pyppBmv2uHc4ddoW=26up~Ut~QiJ%_Y+O9#?J<+zV{d#{Qb?x%KpIr?90n{R#2QL&~Q)rWGii|NW{G zCTYFW(U{u$oJ*Io*{g0cwllkad3rH-H~-t0Ha$*9;#a#dQW=!{t=IPcK+B!CepO>u zZdTNexFc_t$3%Yj8ZqUNRwsQaCU%ZsC86O>(W&0JYwx;5qJS=fx@~z`d=_ zi`25QN^v{z-rfiL8uEELw3Xko?n}B(ABx---atq1Yb3TM3cG||UMp}`a!S)CT2(q3 zPtHE@LueF7nVEX#SnIKLv~fCn;fXtCUS1nIf9mPKTl}zTYu@p6j7)W_cOjQx%pB&v zs2#;YvuAS!4aTQa>tD;HdiKzdU6|{k{)TRLdr!&u)u$=T*atdK#O%+H)!Y>{6Q6VH zr{6FvBgEO|D>|S3Rz2{lR}kLUqiQG_6Rx~ctk;UEJqJI1{fRxb$0HeWP8ChR@L-#L zlv-WpZ7-th-Zyts?i?|oo&4oxN#In~oL!E~3^v?;Aux!^(dIp`3>Ol~8y#cG4Q7vuLZAH4ZPV{br>72a8{&{5lb+Rd1=RNdv#EN&547*`ZDeNrVo(NueL zIqRGa!Z>W{j8MV(-o@M2%d|e}h$Fs_a|wcmW@Fe0AxUbSSU=+5ys&Qmt5KajIVjU^ z+*OBZi)tIW2wnPHF;Kg#2}U=ie$VK{G!tYp!08wK!;w;XJ^9%X`UAGWG{qQInI&7S zAt!}uWt}TO=5TzQqY+d2Qu zeu>0s!p3>NaPiwp6NKE-oXz(nDMqB5vDI|Jh`89-#c`7j^B>EJvaof@i3*}?#ZIt< zzM7Qh_sYa_!6vm*bw-)|?d-vuhiFLIHcdoGri}ZI*Qc!s8&RLWxs0f+LF(^lwvb;{ zUJI1W|6XJt#Lr5RXq|SQktD&oeW0E`$EAzoTJE*ii?=3&2zXWza}zI7y3}`3>qZnk z@E=(5jzfI?jwZhm4XpW-yscBa2dYDCR!o;D9k6^LJ!VqD1aXOVlVCt*pGva-p*d}D zq#i^bWDFS&n94puL)>sK%NCnVltT3pd+#S=X8peOu(X1~LIl?^T|qntRJ=plx`j+k zLara)p(>G+u#itLTpt@K2J#7qm#z3+q9b1{Bp-(~Q+zX#h;(!u&=~O&68cuZ21+gA zL~FQC=|I`Uvr%#5mjm zUzo>kG<<;&7uZ5VC|~YzM?nQd0d2FHD4JJSP~5xN~?x) z1Ff^QT*8Wq{DBw>IA&?$vUwlNM;)GhLRI}Q^8z>CBD)B+6VVV_#*t&+2T~HUe-DCw z8j#Wp^m*$rBW?i)okvW1pYx%M!}M_4FIQZ=C=Wv$$BswD9pC*19j^qB#Zq2)v{y!1xY{YN?If$Zv zv)A~E9MBepw*nfaW}@evb{TeJi`<1F{DfXMr!I+~<58f;&ciU&e&hvTagt9-m_9ih z!Gn}`wZire_>>llHFjpl-7qVj6_zX zO=&3b-!JakcU}O=aWTM1kQRR8oS58a&T76N-2LIAuH1zyzGYU|5eDnz#8ZsKvy5dnO=tNDJ2r1MQ{(egP)22MQ1o)I6 z;FpgMfhSlpI6+qeJU7Bn06br&cj*0Ce&;uNEC@Qk*WQr2A8CZ>PLsA~;w#>U)q|ZR z5QvUt@5Q{s2O`~8$w46as2hYl8uhSYk&4z~6Uul)rIwlvi);O@IFguD}aXNxaUt8({*3p74VhW>=OG6dk`F zkD74ZYWCy>zDMzTFeYKjsSuxO(O6x*Ql5eFHlD;}g8!)O?=yfe^}FJ2$hJ|z%(~g=!Jd^Jl>R?5BE!*TMen!TK!MelJ`?Vy$1XQ7bF4ItIox245fR zr6oetB5=h<_b|0~>i!-<< zeDCWu5phHJh_-@v@-CcohCNh(Xb1S$Cux^EE4cz>L=16oX&aW+QE=&~dUEldIzpl55H=ua25GmTS{%{dv*6Q>)4ilEkhl_Tq|F5e| zE#j=a+UR3V%s`L)fYh4QT}y|017L~3c=06y6_>Y;Ljk~)yE66e<*5cwc)#Wx-n{+w zHbxi9h|Ob6?&^t6Aj#bO$_Zd!NU90hVsaOhjCoDagU&rVzV8W{N z6T!a530_YoRFrcCijO(+9bg;pj@N1z(~Meci@U-zz~;~ySfDT+bRql#4F>I*UU+HJ znPcoe>SS75KcR}a@j7{+l}iOo+;z+T@bnJqsyHt+`I!&>3JV3U0Yb=GQ3I-lqh zgB&aR3t@QMrcW8}^Pmc*T1^ZY)0dpAN{l z(VsccjHw@sVn0Xh9xs4>uX6u~A>;tFrpFsd1S14fQ82P{;X1R00llf$x^AA?S)bJP zt+}w@gexA3o92sN_Z!1LPf2TupEpzy-S3MM<4Mm zG%$LF2D=b{S?SWtgP57q=Ai~=B7b@9|ALd`97HL6@8=#HKz!bThZ6N(8LbB@2Zq8B zXgXxU-o;7>AE~)wi`HeSuw4OUfEemAdCJDW5yQhFpqR ztlG?q#=^Fo4T`5Ib&ZXUf}Wn9i)_$4T6&ymT$BWjqclB%UW<|71qSZ?!N7@f3>a~P zMq$8M-(xUHbCV-_smd!bBDWlj^ue=fFz5vy3^0f{_V|Aj>xldF6Gh``U?lYh7;ZD^ z620He1R8wJ0^@7j3l*Vv7ng$ZS}GWNl@DlzLvJnZ07Ja<`oQ2_<(Kt1<_Y&1e0c_J z__vf=Y{c*3_2jUr#r%ZHuf%>k=A9knV0Rxd5y|H;jR|kf3^2XMM27P2w=Q__xh^=9 zhff#A8eNqiz9_ou% z;$jBUCrg$-SpBZN$=&lyrRR*6`B#Uo!6Vq%Oho+q|$ z2bzTOO8ymBFnNpkB1Y(r4l=xE#QeekS)zAnJ^>>p&19q_>L!nvNz(!E;Kj?V9614~ zS0C0gVxA3H{bJnu$%qyQC=c&qme>g7CwFn=e8xg)K|yWe4)GH|r(@N)_xG!fY@Rew>jcW=mwfRG zSZh7^`s?>$fh(3eECm2yMR3q}2LWL58vs~T^~oaemjvbR1n|o$^_qvCR+o!z<)zQ*z1O@fOWvI4fr~rWCFk^yB;nEb^(9(Xqv69ZHXlE z$E{9E*+V~Pm(xizcWV>VSZsMpRJfX`c%l<`C}z7G=(Lax_5uXxGQ?t$7&;&4q$U^| z`#CAe>Lf0_Y9_dxtf+YsdxhB>%c;_{m5L5xAv}9dB`4~60I=?Icsj;H$&{iq7&WpP zf{w}6_d=uttU9=pjddQ9%bCk!;~jP$)wC3ZMek!mhFE73GUK%ia^i#gV^Qy3Jz|iJ z@*INfXyVL|L1v^ZxWnyk65hNobzCv2gX%Wh%0l5ZrX(!folG&;LNn?1@m-}>K$$5* z%0_J*Vm4)R&GXDm9*$g2?@+(h-0qvM++PeAP~AnNI>e3=_xYy~do__rRHs-2z=H#h zEn59Bhr`kJ4a%fa@fOU=Q3e0D+wF^}9VaHzMz0il`=A%r)2x2Ls2s)yq1Ng~?eyyMMVBPk4*N;D5sS-a{yZx6>)z$F_zf1j#0~A7dAM@pxhxp0SQq%67uPj1%dk z3$GX6pu^oeg#fTC<^dhY(0MDhC_|^Y&ENZ3P~d9KoT>ZdR)-an{H+-4^5J#0)z9EX z_K|qlTGAZ9!w|*A;bCmcz@*?17@vf94pu5B9b;^rTcxd8KF?M!4=^ENi-H54(W?Du zxWwD3sBZF(dU0_ZoWjK;ZbjdlF2HztfVuAeqFTugdnjXB>?lh_g4WSx;S!uY8IdY&NoTYs72hH? z>0}n7XCl49DAii#h34NGE^urF0yVe6oOb z4FEhk)mV#TI4PkxLqbA=e3galDf+eAJb@#qrCf_jM=Xb1_%j4!2T32}>KYF>j=Q+9 zea&x1cwGDfN~5kYh$_V%V1Hj?hru3QX@bEDu+4&;Rpeb2`F0t9tiRmB9 zyC`Z<6Bc+b&a~3XJ;W!mvr-T9h%r{xX6<60EF=_VbPC7w*G?6Z!(Ax~e+ zN<_2F#dCK;`LytxO7XyeQ6j^#W&1s%ol7_^@{TREx2t9}WwnV_gu?PzW+0=NdwxK?Eiiu<~cR1YMG|4NP z)O&oj2}X=Fgy1I(|7%* z?Wj&BJQbnd_7Ci_($YhyEx`^s-}1{ndgeMB#slGm8FIV7c^5zK^C$T(FltC;@2|RL z4_lMs7>pjPegAAd`nwzZ6g3;^v2Ope8(rfh@$XN%J7gx4Z5TqxkMFVlxZU_AIoL<_ z5TsQ@vlXepj7HVgUcWsW8qI6Pt^s3y=Y7m=QgRY-390l__95CYw3m_mjEB5ByrDI6MHW#+8kdU!;Mn#5 zB?HN1;zq{gQ&^T8cXdoxkAg}=`QpsJYm{2z|)q${dTNZWuBC_7BFgVG`CEIvGydme5trh`fJ9+R_YnDA4D% zF*&mlTp7Pz-d#N_Rh~W|;iTVhgcV=EL-NJLSnyDq@=jksyQsXdM>H728#bG)>@q^T#T5&VV=_Dp8KW0>PPIW=8>*|Z+_J@l4A^dQCoEKk)K=nSY zN}c=tjJo0vY`AR{|7oJ~LwFOFF zis<=Cmwbe@oR_U&HF>bBrbX*BOf98Rz^0VWV*6$x_c+5>T)hN_Tz-|lC1KODs!rBN z!R!m!snL}Pa;>0S%`5Erx;P%}i5VvmTIBX2(W`j62ZYH(!-bSWpUy=+OI7L7fevoA zkxeJYJQF!T=q`+?DCg3~^#gCFRB+~_!{c7knWTld}f2lUG(Af(D0B83eY=obEyXzsr z`LQYWPP-`(u0N3K2;@c%vt*`w$(GX6k$-bs`%mKO1J(}=d|==M10NXpz`zFvJ}~fs zfj?v5#rt7fCy){>CUAyi8XF%W!AUzMA4J%^Oa(Je{6hIF^cwPfRQyoOUPktBX+~9$mt)u);#BpXvCv z=972_0EpFFW~7mJ%95Bt27CT`UP-3Gs50Rx34iZ!DnBsUwS_2$WFPfx<2%>2ezD7kf~Cdb`NtJ*#-@h%Z5r>PJW@(e1=D3669!)5j}tU<_005 zUVOR^!fC#NI&!3x3@XEA1p_bG{kB?-M!=Ms=jXdJuqEpds4XWpoiNsKIz<1vF#CCT zaJ#E+d07^zf2&ODeFI@)frjqASC#Czhgw6P45xO)jhx9zK@@vWU;H@l$LKwJBp33m zeSB6O^N|L(L@b|@zb)TU(xrWB%?m`-oH~F9nHu=jPl6K&&u}dRk@L1To&EtnkE`f2 zg#mfpCl8~}W1*{8Sfj)Dn(JC0s?>@b6{s+&P%lxd6{db9h6=_fx*T*sNk++DWxai^ z8S54KKRvc}LaX{b$VU}KLhUmsx`yvxJc^*WyjX5l7&W-1y(x*9>~gFX0G#~!z3yO= znmh{o&MO*4A?SPl14RwloxinvcJW6@S$@H$#U0t4H)#`f{AXB_e2|^pBa|*Aslgb% zSX4U!%5S)0bzdz`o-SHWc_6TuQ59$?MXu#on1p$If@z_nAxr-&r1^$%R3NA!l+CD5X%vj)7+_VeVM9K^$TC<5PL^+vs zD7<9^L47In@%Ab}QcZJ}&~^y$&80_=Och}IwEriL8t-h&>*L4#?@2k@*NF2_r$6iYkY{B~i~b8WPn9Z`#)bs4uO*}@jyq6o%@2Z!)5_|!2% z>s=q6<(#01SbxZz`RbIXlaq^IBJxuZEBzf-!Wr4X&>eUH=MXH6lU*OG{uF{^L1j7- zoP$l}Mn@>do*Y+^Xl5fFZg?V>-e?6ZZ9u&6v9;O~|Zn)vLK)cSMHnqQqPUUXgRJ zpNi2Uy@vu592J_*N7#}Lg8b!seFk1}>$DWOu6*_^qxGB1vd=eS97e5^PM>ZyX&~p@ z{j-j=+;l-$-Tq>U}JSg!vTQWT~&8h;n7#}&CFU6hy^V;eI` z(puNhkUl;yAQBb2z2@XnC=;W>>5dyKO4nW+4=d4MsE|=gX=}$_KmLQUakWBP0A(9* zUW-bN$YGz8tNH}s9^<9Ua*n2esW%~=w-iPcXfxu86Z5rswVLj`A(YWswb+E#ry&}5 zI8dE)t|_+&KluZvN6jhEXw=}VQ%Pj6QBhjwOh+ZfaYTa4#ALE4zC&Np?5+it3NxE_ z7}!b098T1|9!O1;8LzM25kM)oFD!8dGwAQpBq`=%%nmrbl1 zMN}XHU1&*;f?-~K(KTC`s*(!xOG|x;HBXg~fd!y!Npvr}|5NR#aq4&~jxjhb?^Zjg z7SNZ|US8q3lYP^p_DAgsmwpp8v3ImYv@NIQbmAo{9DmKZ+ZU|E5BA_%w8g{Jr!Z(v zbF*KV0jtb@dBE;+#ASxar{@^fVuM7yY-ys z5J{eL^AbExM3R=tCRa?f|4)|rK};dl{-E9Vkc4T$hIj;$bGFnbqL>Z~F=t*h%2+}jVogBDtnZw2hySTiA24iEp> zundG6&S(bHKRV=JT9N+Q)b?)iTBh-#SgZ~YJ9=JjY}*a0*Ff;zu!LgsT9HSZnMqm}6dyoA1y>%;iYu(jV-;3(mnH1F%OVPKm9;|2?Du!>J(D|=naRu~ zlO`mW&yRENx##@P|NlS#^FRM{?w!V6=YgKx2-XAIcwrJKnCqVpv3C!kME$Q{(Euj7n2DW~NF4~&vRDKqC4ZI0%0XO)0m2FHmxm6jB0ylBS zJ{fT*QtuofJv;uvGtXT zIIhaU9U1>c;yC!M9De2~cv%D%7J+8!oL)pd(GtyLK_Nes{cHjC<=e8$^WGb|iu@mR zmxEJ^tX@*JOQV0r9C4%Iqqj#FmejVt%D&Bt{$GO6GM60YTYt^^eIAd7j9wG?NA$86 zXayaKNNB(K8hjMv&>EfFFP&T!ZeJ5}l2JoL^YsGoAkdtD0z3>p4gDDj>LeRWmnCU@ zl{+6go!}iHU;Zs{x1aAJeFDF+xOIKu^(C8sttIewIPISV{|DsbMgOzlJU=gAx(ob_ z@i{IIKgC|qA4j|Ed^&HCitnA^SZK+o|2_B)_zh6Mt&~s5MW69X&kgFqw;4ez=6doW)@0YEP76@|N4ak&{cCVGXr$c=`bo=@h{zs8tV70bUZIY3(+zGQ#u(q; zr1c=|v^6dqN7+^2w?K7X2g{Ic;?}06X?mg^yb{e?Z%u#j7QV-CD;wDcE`|1cG`Fa8 zG51@6)>6@b7+&`SPO>?F9Ao>Etxwag-2gvu3FNbuxjTckMUuaC+E3gUKpRps&g~7U7Ba74r^M`qY zomS$4_fw$XSP9yq3H>^-yn^)SLBC|>q+Urm8F-v~{_AmCoZU{nv&)%f;LL#Y#l&0F zCYyUb6I3sCbrubursA+#uncG)X)ZQ^IpQ$Il&iqXGO&?07nRY@_NBNh!>^Tie-iZ@ zOKg+TpQo7e{!hOr18vXu$VK1ln49Oct|@yaq!y(XcH#-)W21O`z{MV{ix9yS-66p2}W|z3G$qc8P3Q@lhxDkF!o4 zwe|GVC^IqGpfjO<6|*Or*h@!r1{1y(JO-WyS~qnLa1+m%kD*CP?U}(~Tz7qFp3}C* z$aN@vdXv|Ncry&2OLz&{vey#+nQ%f_K!eI zah+)X54acn3MlTK${EXEv={_38OUiO8*G!Mo%=`0Vu zQRgx68c>@*g3IaWD4rddY<4GfG%YoKsn2%KZ_`BlOdESC<2yXN(0=tfU~NyS_TAc- z)+C9CHNVVS5YgGG*_Q_Ec2RFO_0f&%v=_0*3i1<=)QyLx_Pmy+=Hcx=E^BWHRcn4h z`xBJO@7+ZDdtmEtXAW^vSKg)b2;@5+djAG`z<+?3farHI&POBPbn-e|RhgdIy05^` zQk}sL*v3yt@iQ)GYS; zx?+Vht!p@UA`YVOE%?5&=UBOH-nCNW5xyARe@=N=+Hh{5oEJwdD0wcFuDO&br+zD})=N zduxSgi|2Zv`BEvYhW4fk(r0ukcfmJniTnA=^-x*L@cwadb!B_09Cdg!Q zZL8;0PDvG{jP7rS{~h-)om9bIDnq)BJq_{LSBOI%A`aNMGQCueDsk<;=>EI#{{V5^ z5tZwyGL(sf4}Y54yZ`7Tn<5yF?ShpcOFoL{4}T%7~#$txbMbGC9W1m7pXpZ453W3b;wu;+Gn z@J#0-!F~8k$i;b}yO=SVI9Pk}QuUzoA^6`1UN*tszh?1h`DOjmH#Qmk+h?+^zk>e* zw71@V>fnCkQ%Iin#yZ*Y{_u4T(0g*rQ!wRR$UOu3G>>&w7kp;(Z^C;L974T9T@Kna z`4RZn{Ja#NbXKA>63b68{S|cZqWG5M<~%WSH7_k zesq>8KBU`!2ibDm4^P-e9p^IU+&9RxJ+srdAS!1Z+)r*>bwowa3vQ3TkC-5IDE&R^ z_p83e%k%Vq52@ZGs7&XX=e=;iRO;(nPu^z)<&A_NVE#Nsna*;pT+c#d4(FcvR5#%A z*2rAWcH9m089Z-P|L|en`F(`^Bj7&Pu!Fa+^yXx;ae=-k)%Q(0um2?DaUE&!Y|_eb zCHz84Nm);nS9S^Z_CzHaqhzrOXDgMFMps&7(1K$|G|1oprh z6#fcj!~*8M5wU=odpcjf8D7?~7Vv$4h<6f;iO~wb?}m=kv3kL{WTfsO+OCA(YoYT1 z(A;>boMJcOg-2`u+{H2lK<5%e3OuI5$}Yy;48!l-Z}BjnR^*D zJ1En+`fq{WCA^I89tGF%{DX|a)Yi3(HEVOe%eNo+UnF~U;o&OUe-~QfRWx4*&q432 z;3}S<4zzyPQtwbwk3XMR`kX8qqC69te}0+#@vZ9^^M<+A&^nd!-veu}HbqbF-S8Cd zpMUeMW;-;3?_VvQKf(8f9SwC8Z#)woh>Ps|RWF~(C;aDARiAR5AuxZZ({EP}{=NPq z?iLdlV;kE4+AAKNOHx2iD%+J8Dh6a^=C)qGx@3L3Xw_=_k?}{UDpzLa( zSo%rEcBWl_nXkNqXD^`lbP>J_ikNRAv*T9n8#cB@LwWu0K&44EE|d)&NIzc#mjAaY zdzSkrfsNs?9hxoPX)d z@GAH69abKjK7uVwXC6%A+4daIe?yslZ~AL^Z@T%+4F&ritcSz~=rw!>{p)?{?i{>H z2IeCEDB>PV{^xn>$hYf#Hv8hx#CuK}EDj6PfiLzjp$W)vCjGyhhc{#}@8RTg^Tj*b zL+E?yeM<3#g}E#4seWU@cM8M|T3^if_1STe#^4s7U6DgR#W_!cwX83C?_6A`gIr5G z({D;xqYs9M^L;rqPv7x)b|0oJ?(;97|3@IcFJs+2Z0mY`uUEPKO0nYVyOyo%PGxNh zO~b!0fyYhY5$xH74b-T<^v0kP~Bq54@o`Fqzq3w%Ze{upmkQ?N@)(u zPhH*`U09ve?=6T4m^(wlQ#qYz?H7;m?ZWp9q)&sU+t$_*Q|uW#FGmjI1;t98@ctlk zWB43+7AXw6u7Q8f8Qia7>xUNEY}izjt)Ta$WJos6n>cJ3D}fPozZw4TZDUT4#0&n} zU%9O#k$3S7|9byElHXsC^!M*0ntyEnG_YwX?BDxgJX*b!c-&N(e_vv*z9{oVSrhm(i;?iTB;UJo)6+M_8&?wEkLD zU*Bozmz>uF`<+$;zi7|?JsFSXPZSS~dayPZJ|va0hT!6iXBqpCi-w@95zz&<8IygE z2xf-`|9v%`6?gcUoK6&k{9_UDCjqJ~Hiqy^?vi z$UF2YnNLRNo#qNU;oW`RveBu5Ua7TbkUlhLc<*pl?~~D)lTBECXx$y1TIiKpItb`v zNAHu-nL{6X-*4s%`R>uFgBRCo$3vDJ5lU_e7$qT-?tW$k@~S-eS{hc)y?@V5^AvRhg*tl zCZ-DVO_|QVvcEA+&x!2#t59A1>3u=kCXdeTd>c;s;9HrzW2^N;`}sby@OP!MWstq} zsb}I>tw90X3-}qe$)>ZX@3j{8k)zi~bbE7&-;ZU;(Rc0CSZCSDPPL`%*@%N!hq^r9yzawy89W!QYjido-p`j3Z(!4#OI-_?I~Sspyz5g?=ffc$F>6Qv_Po=^ z>7vcl7zJbnu<_SJCq~Ac*mZO7QZTz)ogNZ{5*o@Cx zOn$l4aq#z`k}nPUexIgf?h|9#@!;7r%_{Fl$bs_{_vE$cN3s z=jx%dS;=bjlTR=Wt^C2rGGQ$`NZ7& zmTcQBhkh|KmRcv9ue|rzamlo?t-SPtwn1KFQ!4#R)MxB>6vJ~V{>t(x`!9wzzO!Uq z+dc+6H9jtDta8Y(Q~etGymcU!j}LFn&^qDmf3^PSpqJsx8I!#9^7T{6a*a=3o>}9h z2k{)NlgszXcV?`U=)%)s0s4$ZE?Sk8w?EqQWkFekdGjpS`iPxm)6GeT^;>f-?>;66 zoou>$;-2yE6O&Me-REB)vd1;UHUe`{G(cZJWo&PFeplqj&*{A={6AAj7qX$?8d=QR z4ZY5w?Um!BhtgJzT?fWB$a}855Y!RAbGZA9Y#rpf_x8jE&ioW_ zY2O-@Jv-0*80@`rE?$SK%!{*h7TVWdYnixWwCcg?!|K7L=*E_h))YM$zaf1Hqg4-9ZoAI< z`iR-`(VE&li}dksh%E+V9DCQ8zTZC#2K|vn!^R}0W1zVr8yN_VcT?LjePoU% z`q-g4lUX`?@6bm~HZpoOkSY0?KF0Ksse#P9G5Z+PN2Ufc@66fQFgYua1z1aQb%1Wl zh9bW?&{r_ezv!3dp_n{>n9A1Q&A%dO^IiO5Et`+=$F=-?kK@q5lX16GtA9e!$h*s_ zrLmXq=HCmn`7ZJ;etDO35k$Q@olbW~ewJSzJ78BVo##(@1@n{rI&k2m^RrU?B`!m= zi;jTuhDliUE*SRnsZPU8y{X>=@mP(eNne(x{Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2E$22K~#8N?V3+= z6Gs%rr)P$$ge>q4EKY#4BVvJa0-RW^jT6Y$;siD)z~08D?5u$xpTP10!!Gg(FgH*Z zp;8sibiS|kG>qntH1f1Gv(T?frS8_h?r&bde(#N(I`G5R@n&=D_&~aq;>vTSD5W8hO{eXwPh02LlD_68=EIfl2n5tLT< zq*)o23qld#Q2!ovoVB=5sRAX>OXdFNNyGDkhoh8Vb$G&HxThSor?u17Y`fvbY8A^fooPG(s=l$-^K!z5=LIpAYAavi&&QtXBz;XJXqt0a@8(56i>iOlL zzn;p7br$ASn?JvLqO|*0k)(}ce0=k)C*6EtVanAf586jBWyCrQ5yXgriA#4Tkr>*! zGS4$no#xhY;qRXZ>w?THhB#CM{fIQD0)O%umiJ^4m3pg!&}S&6BXh=L`%#RM1Dse_ znwU*E(>G8+h+(p0Jn!-Xm=`Qz*Fv;9iJv4mMj2#H6$M9XBnaaUUVZ6K!0*804Bz=s zh77y_Hp>Rq1c9ULhyW9C0kDF7tSIdtwDU(YzQ6)g+rWqvx*bHd6Ji)}0lxDBYg@;f zAUFp18`@zt=OUs}*SN-9^pBTspLSd?NJY0vTz_cAmsknR zn(d=5w#Fmr=AuKjGjC93@*Y3dMhJj{3CrAQQ+bRoMkc~{a zv>-(%!BYYb^H92l32`j*v(lXkoNnm?Qz=2rai_i6)&ZXp4*iYyZ=TJ48hm*BwEJb~ zvk3iSmN0Pa56e2&!ajtSpdJ4Xvep)UxxrdS)-g+XO5lrom|*Wq=yq*psC3}CikoO| zVD_06Hu@7h^|6oou(7^Y-r&RQU!sV38tQ)gsO4(4o#n;x#f{{+T%~y7hKub(fB};< zXXsxqt9C&P<*f@3O@#ex*fI^RaIwaqkNHpDA~iLZiTN9_)&bss=DJF=2=f^Wy@(zN zqVNm@7>&zk3>dtF2ZAjVB(ZJ!+Hqk$>Ylo#mv)c#_O1UKo>uGpZA|wbCby2caN=fu zNiodYls0RVHAZX3$F49snCsZ3HR0#h%s+lc#bIunJLbhSy^!U=z&o>LF|-IorH^0@ zo0vF)wVZ;}=pu5FRg3?v`(t;59m9I68DPZqod(B5y0+0R_A}|VHXSlPJCP-4kySRh38kIt7%bpAb><7)QjAnRf4GaEjI4y&Y|_!nN%ASS zO?t?Xci>057|XrY$t>E&X=cSj$h7SM)%S5qoX5o=aI~pp@3uco-oI(lsbXKA=J_gG zkgcQLnjqW`m{=-2#@HE-A|9DpIYuj)d%z#13r$8K9PK)N--f;exla8mW(3=Ug`Mas za@}C3SRkvv@RggFg;aTaz6kZxZXd%kkrL$xz@bA#? zFH3|tl?gJY**+Q|7=t0`EBYE+A^1&M$SE@?JzSR2u?t^Or5L0Rg2Yqyg`FNnsa%k7 zQiRg=jIvZNh^hLI3EfJ!3#nX?sLG|)dgz8LL5RtUmDAu+D?^o03qg<}8_TF7?nqJ( zL25)@1Q{?)mv*JpMG$k#QQDQV+A;}Nf+Sc8l3*oBf?5c|d`89p^IjpQ9@1. +*/ + +#include +#include +#include + +#include + +namespace eez { +namespace keyboard { + +#if defined(EEZ_PLATFORM_SIMULATOR) && !defined(__EMSCRIPTEN__) +void onKeyboardEvent(SDL_KeyboardEvent *key) { +} +#endif + +} // keyboard +} // eez diff --git a/Src/lcd.cpp b/Src/lcd.cpp new file mode 100644 index 0000000..d5a7308 --- /dev/null +++ b/Src/lcd.cpp @@ -0,0 +1,64 @@ +#ifdef EEZ_PLATFORM_STM32 +#include "main.h" +#include "tim.h" +#include "stm32469i_discovery_lcd.h" +#include "stm32469i_discovery_sdram.h" +#include "stm32469i_discovery_ts.h" +#endif + +#include "firmware.h" +#include "eez/conf.h" +#include "eez/core/memory.h" + +#define MAX_BRIGHTNESS 20 + +#ifdef EEZ_PLATFORM_STM32 + +extern LTDC_HandleTypeDef hltdc_eval; +extern DMA2D_HandleTypeDef hdma2d_eval; + +static void OnError_Handler(uint32_t condition); + +/** + * @brief On Error Handler on condition TRUE. + * @param condition : Can be TRUE or FALSE + * @retval None + */ +static void OnError_Handler(uint32_t condition) { + if(condition) { + BSP_LED_On(LED3); + while(1) { ; } /* Blocking on error */ + } +} + +#endif + +void LCD_init() { +#ifdef EEZ_PLATFORM_STM32 + uint8_t lcd_status = LCD_OK; + + lcd_status = BSP_LCD_Init(); + OnError_Handler(lcd_status != LCD_OK); + + BSP_LCD_LayerDefaultInit(0, (uint32_t)eez::VRAM_BUFFER1_START_ADDRESS); + BSP_LCD_SelectLayer(0); + + BSP_LCD_Clear(LCD_COLOR_BLACK); + + BSP_TS_Init(DISPLAY_WIDTH, DISPLAY_HEIGHT); +#endif + + updateBrightness(); +} + +void updateBrightness() { +#ifdef EEZ_PLATFORM_STM32 +// auto brightness = g_lcdBrightness; +// +// auto phtim = &htim2; +// +// HAL_TIM_PWM_Start(phtim, TIM_CHANNEL_1); +// uint32_t max = __HAL_TIM_GET_AUTORELOAD(phtim); +// __HAL_TIM_SET_COMPARE(phtim, TIM_CHANNEL_1, brightness * max / MAX_BRIGHTNESS); +#endif // EEZ_PLATFORM_STM32 +} diff --git a/Src/platform/simulator/emscripten/index.html b/Src/platform/simulator/emscripten/index.html new file mode 100644 index 0000000..365141c --- /dev/null +++ b/Src/platform/simulator/emscripten/index.html @@ -0,0 +1,47 @@ + + + + + + + STM32F469I-DISCO Template + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Src/platform/simulator/emscripten/main.css b/Src/platform/simulator/emscripten/main.css new file mode 100644 index 0000000..435d3df --- /dev/null +++ b/Src/platform/simulator/emscripten/main.css @@ -0,0 +1,139 @@ +body { + font-family: arial; + margin: 0; + padding: 0; + overflow: hidden; +} + +#content { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + flex-direction: column; +} + +#header { + min-height: 40px; + + flex-grow: 0; + flex-shrink: 0; + + display: flex; + flex-direction: row; + align-items: center; + padding: 10px; + background: #eee; + border-bottom: 1px solid #ddd; +} + +#header > div { + margin-left: 20px; +} + +#title { + font-weight: bold; + color: #333; + font-size: 150%; +} + +#spinner { + height: 30px; + width: 30px; + + -webkit-animation: rotation 0.8s linear infinite; + -moz-animation: rotation 0.8s linear infinite; + -o-animation: rotation 0.8s linear infinite; + animation: rotation 0.8s linear infinite; + + border-left: 5px solid rgb(235, 235, 235); + border-right: 5px solid rgb(235, 235, 235); + border-bottom: 5px solid rgb(235, 235, 235); + border-top: 5px solid rgb(120, 120, 120); + + border-radius: 100%; + background-color: rgb(189, 215, 46); +} + +@-webkit-keyframes rotation { + from { + -webkit-transform: rotate(0deg); + } + to { + -webkit-transform: rotate(360deg); + } +} + +@-moz-keyframes rotation { + from { + -moz-transform: rotate(0deg); + } + to { + -moz-transform: rotate(360deg); + } +} + +@-o-keyframes rotation { + from { + -o-transform: rotate(0deg); + } + to { + -o-transform: rotate(360deg); + } +} + +@keyframes rotation { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +#status { + font-weight: bold; + color: rgb(120, 120, 120); +} + +#progress { + height: 20px; + width: 300px; +} + +#canvas-container { + flex-grow: 0; + flex-shrink: 0; + text-align: center; + margin-top: 10px; +} + +/* the canvas *must not* have any border or padding, or mouse coords will be wrong */ +#canvas { + margin: 0; + border: none; + padding: 0; +} + +#output { + flex-grow: 1; + flex-shrink: 1; + margin-top: 10px; +} + +#footer { + flex-grow: 0; + flex-shrink: 0; + text-align: center; + background: #eee; + border-top: 1px solid #ddd; + padding: 10px; + display: flex; + justify-content: space-between; +} + +#footer > a:nth-child(3) { + color: #999; +} \ No newline at end of file diff --git a/Src/platform/simulator/emscripten/main.js b/Src/platform/simulator/emscripten/main.js new file mode 100644 index 0000000..3a96128 --- /dev/null +++ b/Src/platform/simulator/emscripten/main.js @@ -0,0 +1,206 @@ +var statusElement = document.getElementById("status"); +var progressElement = document.getElementById("progress"); +var spinnerElement = document.getElementById("spinner"); + +var stdinBuffer = []; + +var terminal = $("#output").terminal( + function(command) { + // send command characters one by one, with 10ms interval, otherwise it will block for unknown reason + const sendChar = () => { + if (i < command.length) { + stdinBuffer.push(command.charCodeAt(i)); + i++; + setTimeout(sendChar, 10); // 10ms + } else { + stdinBuffer.push(13); + } + } + let i = 0; + sendChar(); + }, + { + greetings: "", + name: "js_demo", + prompt: "[[;yellow;]> ]" + } +); + +var Module = { + preRun: [ + function() { + var lastCh = null; + + function stdin() { + var ch = stdinBuffer.shift(); + if (ch !== undefined) { + lastCh = ch; + } else { + // if no input then send 0, null, 0, null, ... to trick emscripten, + // otherwise it will stop calling this function + lastCh = lastCh === null ? 0 : null; + } + return lastCh; + } + + FS.init(stdin); + } + ], + + postRun: [], + + onRuntimeInitialized: function () { + console.log("onRuntimeInitialized"); + Module._init(); + Module._startFlow(); + + const canvas = document.getElementById("canvas"); + const ctx = canvas.getContext("2d"); + + const displayWidth = canvas.width; + const displayHeight = canvas.height; + + let wheelDeltaY = 0; + let wheelClicked = 0; + let pointerEvents = []; + + const tick = () => { + if (!Module._mainLoop()) { + // flow is stopped + return; + } + + if (pointerEvents.length > 0) { + for (let i = 0; i < pointerEvents.length; i++) { + const pointerEvent = pointerEvents[i]; + Module._onPointerEvent(pointerEvent.x, pointerEvent.y, pointerEvent.pressed); + } + pointerEvents = []; + } + + if (wheelDeltaY != 0 || wheelClicked != 0) { + Modulentime._onMouseWheelEvent(wheelDeltaY, wheelClicked); + wheelDeltaY = 0; + wheelClicked = 0; + } + + var buf_addr = Module._getSyncedBuffer(); + if (buf_addr != 0) { + const screen = new Uint8ClampedArray(Module.HEAPU8.subarray(buf_addr, buf_addr + displayWidth * displayHeight *4)); + var imgData = new ImageData(screen, displayWidth, displayHeight); + ctx.putImageData(imgData, 0, 0, 0, 0, canvas.width, canvas.height); + } + + window.requestAnimationFrame(tick); + }; + + window.requestAnimationFrame(tick); + + function sendPointerEvent(event) { + var bbox = canvas.getBoundingClientRect(); + const x = (event.clientX - bbox.left) * (canvas.width / bbox.width); + const y = (event.clientY - bbox.top) * (canvas.height / bbox.height); + const pressed = event.buttons == 1 ? 1 : 0; + pointerEvents.push({ x, y, pressed }); + event.preventDefault(); + event.stopPropagation(); + } + + canvas.addEventListener("pointerdown", event => { + if (event.buttons == 4) { + wasmRuntime.wheelClicked = 1; + } + canvas.setPointerCapture(event.pointerId); + sendPointerEvent(event); + }, true); + + canvas.addEventListener("pointermove",event => { + sendPointerEvent(event); + }, true); + + canvas.addEventListener("pointerup",event => { + canvas.releasePointerCapture(event.pointerId); + sendPointerEvent(event); + }, true); + + canvas.addEventListener("pointercancel",event => { + canvas.releasePointerCapture(event.pointerId); + sendPointerEvent(event); + }, true); + + document.addEventListener("wheel", event => { + wheelDeltaY += -event.deltaY; + }, true); + }, + + print: function(text) { + if (arguments.length > 1) { + text = Array.prototype.slice.call(arguments).join(" "); + } + + console.log(text); + + if (text.startsWith("**ERROR")) { + terminal.error(text); + } else { + terminal.echo(text); + } + }, + + printErr: function(text) { + if (arguments.length > 1) { + text = Array.prototype.slice.call(arguments).join(" "); + } + console.error(text); + }, + + setStatus: function(text) { + if (!Module.setStatus.last) + Module.setStatus.last = { time: Date.now(), text: "" }; + if (text === Module.setStatus.last.text) return; + var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/); + var now = Date.now(); + if (m && now - Module.setStatus.last.time < 30) return; // if this is a progress update, skip it if too soon + Module.setStatus.last.time = now; + Module.setStatus.last.text = text; + if (m) { + text = m[1]; + progressElement.value = parseInt(m[2]) * 100; + progressElement.max = parseInt(m[4]) * 100; + progressElement.hidden = false; + spinnerElement.hidden = false; + } else { + progressElement.value = null; + progressElement.max = null; + progressElement.hidden = true; + if (!text) spinnerElement.style.display = "none"; + } + statusElement.innerHTML = text; + }, + + totalDependencies: 0, + + monitorRunDependencies: function(left) { + this.totalDependencies = Math.max(this.totalDependencies, left); + Module.setStatus( + left + ? "Preparing... (" + + (this.totalDependencies - left) + + "/" + + this.totalDependencies + + ")" + : "All downloads complete." + ); + } +}; + +Module.setStatus("Downloading..."); + +window.onerror = function(event) { + // TODO: do not warn on ok events like simulating an infinite loop or exitStatus + Module.setStatus("Exception thrown, see JavaScript console"); + spinnerElement.style.display = "none"; + Module.setStatus = function(text) { + if (text) Module.printErr("[post-exception status] " + text); + }; +}; diff --git a/Src/platform/simulator/front_panel.cpp b/Src/platform/simulator/front_panel.cpp new file mode 100644 index 0000000..c558c94 --- /dev/null +++ b/Src/platform/simulator/front_panel.cpp @@ -0,0 +1,40 @@ +#include + +#include "../gui/app_context.h" +#include "../gui/document.h" + +#include "front_panel.h" + +namespace eez { +namespace gui { + +FrontPanelAppContext g_frontPanelAppContext; + +//////////////////////////////////////////////////////////////////////////////// + +void FrontPanelAppContext::stateManagment() { + AppContext::stateManagment(); + + if (getActivePageId() == PAGE_ID_NONE) { + showPage(getMainPageId()); + } +} + +int FrontPanelAppContext::getMainPageId() { + return PAGE_ID_FRONT_PANEL; +} + +int FrontPanelAppContext::getLongTouchActionHook(const WidgetCursor &widgetCursor) { + return AppContext::getLongTouchActionHook(widgetCursor); +} + +//////////////////////////////////////////////////////////////////////////////// + +void data_main_app_view(DataOperationEnum operation, const WidgetCursor &widgetCursor, Value &value) { + if (operation == DATA_OPERATION_GET) { + value = Value(&g_deviceAppContext); + } +} + +} // namespace gui +} // namespace eez diff --git a/Src/platform/simulator/front_panel.h b/Src/platform/simulator/front_panel.h new file mode 100644 index 0000000..e1be4dd --- /dev/null +++ b/Src/platform/simulator/front_panel.h @@ -0,0 +1,23 @@ +#pragma once + +#include + +using namespace eez::gui; + +namespace eez { +namespace gui { + +class FrontPanelAppContext : public AppContext { +public: + void stateManagment() override; + + int getLongTouchActionHook(const WidgetCursor &widgetCursor) override; + +protected: + int getMainPageId() override; +}; + +extern FrontPanelAppContext g_frontPanelAppContext; + +} // namespace gui +} // namespace eez \ No newline at end of file diff --git a/Src/platform/simulator/simulator.eez-project b/Src/platform/simulator/simulator.eez-project new file mode 100644 index 0000000..6a2744f --- /dev/null +++ b/Src/platform/simulator/simulator.eez-project @@ -0,0 +1,111 @@ +{ + "settings": { + "general": { + "projectVersion": "v3", + "projectType": "firmware-module", + "namespace": "", + "imports": [ + { + "projectFilePath": "..\\..\\eez-flow-template-stm32f469i-disco-gui.eez-project" + } + ], + "flowSupport": true, + "displayWidth": 1000, + "displayHeight": 680 + }, + "build": { + "configurations": [ + { + "name": "stm32", + "description": "", + "properties": "" + }, + { + "name": "simulator", + "description": "", + "properties": "" + } + ], + "files": [] + } + }, + "variables": { + "globalVariables": [ + { + "name": "main_app_view", + "type": "string", + "defaultValue": "\"main\"", + "usedIn": [ + "simulator" + ], + "native": true + } + ], + "structures": [], + "enums": [] + }, + "actions": [], + "pages": [ + { + "components": [ + { + "type": "Bitmap", + "left": 0, + "top": 0, + "width": 1000, + "height": 680, + "wireID": "cada35ec-cdb1-40db-cca0-d7a4cac33cf8", + "customInputs": [], + "customOutputs": [], + "action": "", + "style": { + "inheritFrom": "default", + "backgroundColor": "#ffffff", + "activeColor": "#ffffff" + }, + "timeline": [], + "bitmap": "front_panel" + }, + { + "type": "AppView", + "left": 100, + "top": 100, + "width": 800, + "height": 480, + "wireID": "f5b45364-803b-499c-8a2b-d1b12c8bdc4a", + "customInputs": [], + "customOutputs": [], + "data": "main_app_view", + "style": { + "inheritFrom": "default", + "backgroundColor": "#ffffff", + "activeColor": "#ffffff" + }, + "timeline": [] + } + ], + "connectionLines": [], + "localVariables": [], + "name": "front_panel", + "style": "default", + "usedIn": [ + "simulator" + ], + "left": 0, + "top": 0, + "width": 1000, + "height": 680 + } + ], + "styles": [], + "fonts": [], + "bitmaps": [ + { + "name": "front_panel", + "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAKoCAIAAABr7kJrAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAB4VSURBVHhe7d3Li2TnecDhuve9u6Z7bp5BE0dexAqxLC2MbUiIVvpfkm2y8LLxPxBCAlkY4l0ggeyCk4UhJBhjxwvLAROjgBlGJLrMtaevdTuV7/vOaaEsDOrWJHVeeJ6pPnWquqvq/Wb1O1Ona7qHh4cdAACg3XrNNQAA0GLCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAF0Dw8Pm91XYTAc7t+4PR4fbG7vrK1tdLu95XJZVfOL6cX52cnp8dGzp59MJhfNTwMAQEz//937ysJ9c2v7tde+cnDzbr8/qO9Jo5fpq8VikbfVYr6o+r3u6cmLjz989PLli/rHAAAgkFV1b/+dd95pdq+r3+9/+be/+tU33tq7sT8cDgeDXr++9Hq9fho4XfW6jU5aSrc33Ltxa3dn9/jli7Sw5lkAAKDdVtu9XzTcNza2vvbmN+/euz8apdGTfv5Kc+fp6/k7+SsP300/n7fdTlUtl53+rTt3pxdnzpwBAKD9Vt69Xyjct7Z3v/72t3fHe5ejp8nz8PWl1u2mS5o/zZ4t0+T5TzabLfbGNxfzi4uL83IHAAC0URu69/rhvr6++dbb397e2S5vE+Tpy6UspYxfNmXqdOSRjzk6afgknwFUb/Ia5ts7B/Opf3cHAKClWtK91wz3fn/we29+Y288rk/uSTOnndFgMExrSN/r9wZ5+Dx+fougfq8gu5y9HH7UZtP53vjg+OhpVS3KzwAAQFu0p3uv+Tnu91/7yv7BQTnISEcY9fT90WgwGg3ryzBvB6PhIK2qyD+WF1d+Ph2T9MvJ+1m/e34+vf/a681TAwBAa7Sne68T7usbWw8evN68ejrIGAxG/V4+AklHHmnyS2k/3TkclrHrqfMDmsE/nb9+T6Faru2NbzQvAAAALdCq7r1OuN+7/+XR2jC9dpopzTVI23KWT5l4mMZ5eXxSryepfyCZzxedTj12GTlvsny7l0/62RvfbV4AAABaoFXde+VwT3PeunWvvG6aoZO2+d//izRtp7P83vf/9s/+4q8fP3lWT1/0JheTn/zbe796/9fpGdLs9SJ6+TSgRtpbdkfrGxv1qwAAwGq1rXuvHO47e/tra2vlFf+XNNOiqv7qe3/z3r//8vmLoz//y+9//MmT+lsnJ2c//OcfH708/ujjx79++F/186T706bZL5ezi4u98c36HgAAWK22de+VP1Xm7pcejMf79ZsFaZsOLspv1+aDjNOz83/4xx8en5ymQ4vFYvHeL/7j/GLywQcf/uuPf5Z2ys/nhx3sj5dVJ/9fsNlyUXbK/w5bjYaD46OnzSsBAMDqtK17r/wv7lubO/XHyHfKx8mXT7ZpPuFmb3fnO3/6xzdv7lfLKt28mEx+8tOf//Rnvzg7y59Vme7Z2tr83d95vd9LL1oem7665ckun7HbHzV7AACwUm3r3iuH+2htI71eGThv06T5kKFIRxv7N/a+8yd/NB7vlbcE8jsC5U2D/MCNjY23v/7GcDhIj0s38+PrzeX86Ua30y+7AACwYm3r3iuHe7fbS7OmwcvMebuolmn0eTGbzcd7u3/4+9/s53P3s7KA7Ldeu7c2GqUp68eW6/ovIik7nc584f9gAgCgFdrWvVcO92byywUsFlV61fm8ulzAbDqdprk//c3az3yAZbc8JCkzX8q3P3NP8zIAALBSbeveK4f7Yt6cU18uSRp9McujL9L0ybPnRz9/75fDQf5Ay2YRxYcfPp5MptWi+Qu4vG5mr6/SAUrzMgAAsFJt694rh/vk4iy9ap58Xi8gSwuYzueT2eLF0cnf/f0PTk/Py2fSDwbD/CGXSTryuJhMfvWfD9Py8wOaX62tlaXkTVrHvHkZAABYqbZ175U/DnJ9a3trc6ecvVOfhZ/UV8vJdPaDf/qXJ0+ep6HTgcfB/vjNr71x/96X0qFJmjctY5JMZ3s72+kAJd3XKH8Rs7xXDXqL05Pn5dkAAGCV2ta9Vw73Xre3e+Pm5ex5uyy/GFvO0umen188e/48HXDcuXPrnT/41q2bN3Z2tu7cvnlxMT2/yB+Oc+f2rX4vn4yflLOD8txpUx+R9LuT87Pj/MQAALBSbeveK4f7fD7du3Gnlz+TMmvOqq9XsFzeurk/Go36g8G3vvFWv9/Lw+XRqvHe7mxR3b51sLU+mpWpkzx+Prs/TZ/uqdZGw9Ojj9Ld5RkBAGCV2ta9Vw73ZVWNRutrG1vN7bKGfJpO+T3ZtHNjvHvv7u1ut5OHW+TTgvKI8/nO1ma/103T1zfLVfpmNcvfT1/Vxqhz9OJx86QAALBSbeveK4d7Mp1e7OwedMq5PuV4o54+feVtfSnD1YcX9fVilj/sMu/k0fNVnj7tpQWknUG/Pz1/mp65eQ0AAFi1VnXvdcJ9MZ/1+4O19c08ffN2Qb2C/In06ejj022jOfz4zJLywUfe1NOnh26OOs+ffdS8AAAAtECruvc64Z6cn51sbu91u708el5DHj8Nko468rjlkqcuaykLqMq7BEm9iHxzWqZPl63N0fPHj9IjmmcHAIB2aE/3XjPc09hnpy83t8dpP8+djzrKAtIK8nVaRxosD1e2ZeY0bb5U+Yjj8p2CdOf62ujs5X9PJ06SAQCgddrTvdcM9yQNMjk/2djcLaf75BWUBZShkzJ3utkca+RN2s838yrqOxbV+mg4Of34zEdAAgDQVi3p3uuHezKfz87PXq6v7yyXvXr8PPKlZiXld2zz9OXGrBx45N+6raqN9cH58UeqHQCAlmtD936hcE/STKenzweDQbc3SlNW1bLMnS9pNc1+eY+gvFdQ3jhYLPv93vqgevH0A2fIAAAQwsq794uGe7JcLtPxx2x60hv0e71BfVhRz59269HzQspihmmtvdnk7MnLF4/TwUrzFAAA0Hqr7d5XEO61/PbB6dH52YtuZ5E/6bLX6/V73fyn20+bTtWtpp3F2dnxJ6fHz+azafMwAAAIZVXd2z08PGx2AQCAtuo11wAAQIsJdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAF0Dw8Pm11+s/fff7/ZAwDglXr33XcfPnzY3OA3E+6fSwr3R48eNTcAAHhFUrU/ePBAuH8ewv1zqcP9Rz/6UXMbAIBX4bvf/a5w/5yc4w4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAE0D08PGx2+c3ef//9R48evfvuu81tAABekQcPHjx8+LC5wW8m3D+XFO6qHQDg/4hw/zyEOwAABOAcdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACEC4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAIADhDgAAAQh3AAAIQLgDAEAAwh0AAAIQ7gAAEIBwBwCAAIQ7AAAEINwBACAA4Q4AAAEIdwAACKB7eHjY7L4Kg+Fw/8bt8fhgc3tnbW2j2+0tl8uqml9ML87PTk6Pj549/WQyuWh+GgAAYvr/795XFu6bW9uvvfaVg5t3+/1BfU8avUxfLRaLvK0W80XV73VPT158/OGjly9f1D8GAACBrKp7+++8806ze139fv/Lv/3Vr77x1t6N/eFwOBj0+vWl1+v108DpqtdtdNJSur3h3o1buzu7xy9fpIU1zwIAAO222u79ouG+sbH1tTe/effe/dEojZ7081eaO09fz9/JX3n4bvr5vO12qmq57PRv3bk7vThz5gwAAO238u79QuG+tb379be/vTveuxw9TZ6Hry+1bjdd0vxp9myZJs9/stlssTe+uZhfXFyclzsAAKCN2tC91w/39fXNt97+9vbOdnmbIE9fLmUpZfyyKVOnI498zNFJwyf5DKB6k9cw3945mE/9uzsAAC3Vku69Zrj3+4Pfe/Mbe+NxfXJPmjntjAaDYVpD+l6/N8jD5/HzWwT1ewXZ5ezl8KM2m873xgfHR0+ralF+BgAA2qI93XvNz3G//9pX9g8OykFGOsKop++PRoPRaFhfhnk7GA0HaVVF/rG8uPLz6ZikX07ez/rd8/Pp/ddeb54aAABaoz3de51wX9/YevDg9ebV00HGYDDq9/IRSDrySJNfSvvpzuGwjF1PnR/QDP7p/PV7CtVybW98o3kBAABogVZ173XC/d79L4/Whum100xprkHalrN8ysTDNM7L45N6PUn9A8l8vuh06rHLyHmT5du9fNLP3vhu8wIAANACrereK4d7mvPWrXvlddMMnbTN//5fpGk7neX3vv+3f/YXf/34ybN6+qI3uZj85N/e+9X7v07PkGavF9HLpwE10t6yO1rf2KhfBQAAVqtt3XvlcN/Z219bWyuv+L+kmRZV9Vff+5v3/v2Xz18c/flffv/jT57U3zo5OfvhP//46OXxRx8//vXD/6qfJ92fNs1+uZxdXOyNb9b3AADAarWte6/8qTJ3v/RgPN6v3yxI23RwUX67Nh9knJ6d/8M//vD45DQdWiwWi/d+8R/nF5MPPvjwX3/8s7RTfj4/7GB/vKw6+f+CzZaLslP+d9hqNBwcHz1tXgkAAFanbd175X9x39rcqT9GvlM+Tr58sk3zCTd7uzvf+dM/vnlzv1pW6ebFZPKTn/78pz/7xdlZ/qzKdM/W1ubv/s7r/V560fLY9NUtT3b5jN3+qNkDAICValv3XjncR2sb6fXKwHmbJs2HDEU62ti/sfedP/mj8XivvCWQ3xEobxrkB25sbLz99TeGw0F6XLqZH19vLudPN7qdftkFAIAVa1v3Xjncu91emjUNXmbO20W1TKPPi9lsPt7b/cPf/2Y/n7uflQVkv/XavbXRKE1ZP7Zc138RSdnpdOYL/wcTAACt0LbuvXK4N5NfLmCxqNKrzufV5QJm0+k0zf3pb9Z+5gMsu+UhSZn5Ur79mXualwEAgJVqW/deOdwX8+ac+nJJ0uiLWR59kaZPnj0/+vl7vxwO8gdaNosoPvzw8WQyrRbNX8DldTN7fZUOUJqXAQCAlWpb91453CcXZ+lV8+TzegFZWsB0Pp/MFi+OTv7u739wenpePpN+MBjmD7lM0pHHxWTyq/98mJafH9D8am2tLCVv0jrmzcsAAMBKta17r/xxkOtb21ubO+Xsnfos/KS+Wk6msx/80788efI8DZ0OPA72x29+7Y37976UDk3SvGkZk2Q629vZTgco6b5G+YuY5b1q0FucnjwvzwYAAKvUtu69crj3ur3dGzcvZ8/bZfnF2HKWTvf8/OLZ8+fpgOPOnVvv/MG3bt28sbOzdef2zYuL6flF/nCcO7dv9Xv5ZPyknB2U506b+oik352cnx3nJwYAgJVqW/deOdzn8+nejTu9/JmUWXNWfb2C5fLWzf3RaNQfDL71jbf6/V4eLo9Wjfd2Z4vq9q2DrfXRrEyd5PHz2f1p+nRPtTYanh59lO4uzwgAAKvUtu69crgvq2o0Wl/b2GpulzXk03TK78mmnRvj3Xt3b3e7nTzcIp8WlEecz3e2Nvu9bpq+vlmu0jerWf5++qo2Rp2jF4+bJwUAgJVqW/deOdyT6fRiZ/egU871Kccb9fTpK2/rSxmuPryorxez/GGXeSePnq/y9GkvLSDtDPr96fnT9MzNawAAwKq1qnuvE+6L+azfH6ytb+bpm7cL6hXkT6RPRx+fbhvN4cdnlpQPPvKmnj49dHPUef7so+YFAACgBVrVvdcJ9+T87GRze6/b7eXR8xry+GmQdNSRxy2XPHVZS1lAVd4lSOpF5JvTMn26bG2Onj9+lB7RPDsAALRDe7r3muGexj47fbm5PU77ee581FEWkFaQr9M60mB5uLItM6dp86XKRxyX7xSkO9fXRmcv/3s6cZIMAACt057uvWa4J2mQyfnJxuZuOd0nr6AsoAydlLnTzeZYI2/Sfr6ZV1HfsajWR8PJ6cdnPgISAIC2akn3Xj/ck/l8dn72cn19Z7ns1ePnkS81Kym/Y5unLzdm5cAj/9ZtVW2sD86PP1LtAAC0XBu69wuFe5JmOj19PhgMur1RmrKqlmXufEmrafbLewTlvYLyxsFi2e/31gfVi6cfOEMGAIAQVt69XzTck+VymY4/ZtOT3qDf6w3qw4p6/rRbj54XUhYzTGvtzSZnT16+eJwOVpqnAACA1ltt976CcK/ltw9Oj87PXnQ7i/xJl71er9/r5j/dftp0qm417SzOzo4/OT1+Np9Nm4cBAEAoq+re7uHhYbMLAAC0Va+5BgAAWky4AwBAAMIdAAACEO4AABCAcAcAgACEOwAABCDcAQAgAOEOAAABCHcAAAhAuAMAQADCHQAAAhDuAAAQgHAHAIAAhDsAAAQg3AEAoPU6nf8BWOEbNJC1wUIAAAAASUVORK5CYII=", + "bpp": 32 + } + ], + "colors": [], + "themes": [] +} \ No newline at end of file diff --git a/Src/platform/simulator/win32/icon.rc b/Src/platform/simulator/win32/icon.rc new file mode 100644 index 0000000000000000000000000000000000000000..7b3fe49659d3d429a8e6459b0805c904cddcce14 GIT binary patch literal 1818 zcmbW2TW{Jx5QWckrTzztr&bCrP*jOW5<+B^)F`G_^Ayq4P^5qn5cTron|`ylV>>2k zf{-ukojH5v%-QAcudjhFbft6k!ptCoK0gJ#TFEd`SzHjQc5A_5T7xh^R7>(*i>y42Vy zZR^xALaI2XigHvdLpdhz%;}dhvmSXwkEs5{ac{t2rw!d$(W4>H8#?7Pn$f4UJ872X z?L#YO%cyBJJy+2;?p35B=PATIDnjWIRhrux@J?{l8c(hC8{bVC#e6?mE3lUOPS3=(2EL&9OtqOWmT-l(~c`kNb>!i2mnzpo4;4eN+zxoA}FT#&(B! zVnO^;Kgr!VzU7YOtnz2I;+$PX-iBRNWz}LYwYlv1n9logt;;)yxq{VAP0RmRH6h!2 zkt!0yAjYHCjptW4B7W}Hx6ZEVskw2kA8^Z+ug`dTgR*Z?wnNn&6nM#+LAHju-YU-( zwo%zlG2H&p$r&*Ty=ywX$`v>1$BrE9{VePKg1GP0uytqMA)1Wgmw<5#!tQ{+Jan5m z^r3fOqF0sA;Xbt8IjDG}{-t_4MRa6y-=9OyrRrXqfMzGhHuG$GFWLFpbLU9gxhns+ LNOw=cw0Qdmk3r<< literal 0 HcmV?d00001 diff --git a/Src/sound.cpp b/Src/sound.cpp new file mode 100644 index 0000000..6f9819a --- /dev/null +++ b/Src/sound.cpp @@ -0,0 +1,41 @@ +/* + * EEZ Modular Firmware + * Copyright (C) 2015-present, Envox d.o.o. + * + * 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 . + */ + +#include +#include +#include + +#include + +namespace eez { +namespace sound { + +void playPowerUp(PlayPowerUpCondition condition) { +} + +void playPowerDown() { +} + +void playBeep(bool force) { +} + +void playClick() { +} + +} // namespace sound +} // namespace eez diff --git a/Src/tasks.cpp b/Src/tasks.cpp new file mode 100644 index 0000000..a5fa2a2 --- /dev/null +++ b/Src/tasks.cpp @@ -0,0 +1,188 @@ + /* +* EEZ Generic Firmware +* Copyright (C) 2020-present, Envox d.o.o. +* +* 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 . +*/ + +#include // snprintf + +#include +#include + +#include + +#include + +#include "tasks.h" + +using namespace eez; + +namespace eez { + +//////////////////////////////////////////////////////////////////////////////// + +void highPriorityThreadMainLoop(void *); + +EEZ_THREAD_DECLARE(highPriority, AboveNormal, 4 * 1024); + +#if defined(EEZ_PLATFORM_STM32) +#define HIGH_PRIORITY_QUEUE_SIZE 50 +#endif + +#if defined(EEZ_PLATFORM_SIMULATOR) +#define HIGH_PRIORITY_QUEUE_SIZE 100 +#endif + +EEZ_MESSAGE_QUEUE_DECLARE(highPriority, { + HighPriorityThreadMessage type; + uint32_t param; +}); + + +void initHighPriorityMessageQueue() { + EEZ_MESSAGE_QUEUE_CREATE(highPriority, HIGH_PRIORITY_QUEUE_SIZE); +} + +void startHighPriorityThread() { + EEZ_THREAD_CREATE(highPriority, highPriorityThreadMainLoop); +} + +void highPriorityThreadOneIter(); + +void highPriorityThreadMainLoop(void *) { +#ifdef __EMSCRIPTEN__ + highPriorityThreadOneIter(); +#else + g_highPriorityTaskHandle = osThreadGetId(); + + while (1) { + highPriorityThreadOneIter(); + } +#endif +} + +void highPriorityThreadOneIter() { + highPriorityMessageQueueObject obj; + if (EEZ_MESSAGE_QUEUE_GET(highPriority, obj, 1)) { + auto type = obj.type; + + if (type == HIGH_PRIORITY_THREAD_MESSAGE_DUMMY) { + } + } + +#if defined(EEZ_PLATFORM_STM32) + // call every 10 ms + static int counter = 0; + if (++counter == 10) { + gui::touch::tick(); + counter = 0; + } +#endif +} + +bool isHighPriorityThread() { + return osThreadGetId() == g_highPriorityTaskHandle; +} + +void sendMessageToHighPriorityThread(HighPriorityThreadMessage messageType, uint32_t messageParam, uint32_t timeoutMillisec) { + if (!g_highPriorityMessageQueueId) { + return; + } + + highPriorityMessageQueueObject obj; + obj.type = messageType; + obj.param = messageParam; + EEZ_MESSAGE_QUEUE_PUT(highPriority, obj, timeoutMillisec); +} + +//////////////////////////////////////////////////////////////////////////////// + +void lowPriorityThreadMainLoop(void *); + +EEZ_THREAD_DECLARE(lowPriority, Normal, 24 * 1024); + +EEZ_MESSAGE_QUEUE_DECLARE(lowPriority, { + LowPriorityThreadMessage type; + uint32_t param; +}); + +#define LOW_PRIORITY_THREAD_QUEUE_SIZE 10 + +void initLowPriorityMessageQueue() { + EEZ_MESSAGE_QUEUE_CREATE(lowPriority, LOW_PRIORITY_THREAD_QUEUE_SIZE); +} + +void startLowPriorityThread() { + EEZ_THREAD_CREATE(lowPriority, lowPriorityThreadMainLoop); +} + +void lowPriorityThreadOneIter(); + +void lowPriorityThreadMainLoop(void *) { +#ifdef __EMSCRIPTEN__ + lowPriorityThreadOneIter(); +#else + g_lowPriorityTaskHandle = osThreadGetId(); + + while (1) { + lowPriorityThreadOneIter(); + } + + while (true) { + osDelay(1); + } +#endif +} + +void lowPriorityThreadOneIter() { + static const uint32_t INTERVAL = 25; + static uint32_t g_lastTickCountMs; + + lowPriorityMessageQueueObject obj; + if (EEZ_MESSAGE_QUEUE_GET(lowPriority, obj, INTERVAL)) { + auto type = obj.type; + + if (type == LOW_PRIORITY_THREAD_MESSAGE_DUMMY) { + } + + uint32_t diffMs = millis() - g_lastTickCountMs; + if (diffMs < INTERVAL) { + return; + } + } + + g_lastTickCountMs = millis(); + + hmi::tick(); + + return; +} + +bool isLowPriorityThread() { + return osThreadGetId() == g_lowPriorityTaskHandle; +} + +void sendMessageToLowPriorityThread(LowPriorityThreadMessage messageType, uint32_t messageParam, uint32_t timeoutMillisec) { + if (!g_lowPriorityMessageQueueId) { + return; + } + + lowPriorityMessageQueueObject obj; + obj.type = messageType; + obj.param = messageParam; + EEZ_MESSAGE_QUEUE_PUT(lowPriority, obj, timeoutMillisec); +} + +} // namespace eez diff --git a/Src/tasks.h b/Src/tasks.h new file mode 100644 index 0000000..7d09486 --- /dev/null +++ b/Src/tasks.h @@ -0,0 +1,25 @@ +#pragma once + +#include + +namespace eez { + +enum HighPriorityThreadMessage { + HIGH_PRIORITY_THREAD_MESSAGE_DUMMY +}; + +void initHighPriorityMessageQueue(); +void startHighPriorityThread(); +bool isHighPriorityThread(); +void sendMessageToHighPriorityThread(HighPriorityThreadMessage messageType, uint32_t messageParam = 0, uint32_t timeoutMillisec = osWaitForever); + +enum LowPriorityThreadMessage { + LOW_PRIORITY_THREAD_MESSAGE_DUMMY +}; + +void initLowPriorityMessageQueue(); +void startLowPriorityThread(); +bool isLowPriorityThread(); +void sendMessageToLowPriorityThread(LowPriorityThreadMessage messageType, uint32_t messageParam = 0, uint32_t timeoutMillisec = osWaitForever); + +} // namespace eez diff --git a/Src/test_split_string.eez-project b/Src/test_split_string.eez-project new file mode 100644 index 0000000..bbdf52d --- /dev/null +++ b/Src/test_split_string.eez-project @@ -0,0 +1,240 @@ +{ + "settings": { + "general": { + "projectVersion": "v3", + "projectType": "dashboard", + "imports": [] + }, + "build": { + "configurations": [ + { + "name": "Default" + } + ], + "files": [] + } + }, + "variables": { + "globalVariables": [], + "structures": [], + "enums": [] + }, + "actions": [], + "pages": [ + { + "components": [ + { + "type": "Select", + "left": 0, + "top": 0, + "width": 800, + "height": 450, + "wireID": "8d0a425b-2e66-486e-ca7e-7c40e73f1d49", + "customInputs": [], + "customOutputs": [], + "data": "sel", + "style": { + "inheritFrom": "default" + }, + "timeline": [], + "widgets": [ + { + "type": "TextWidget", + "left": 0, + "top": 0, + "width": 800, + "height": 450, + "wireID": "ea7eb013-6c4a-4647-ff9f-0f2f5df1d137", + "customInputs": [], + "customOutputs": [], + "data": "\"Hello, world!\"", + "style": { + "inheritFrom": "default", + "backgroundColor": "#e8b62b" + }, + "timeline": [] + }, + { + "type": "TextWidget", + "left": 0, + "top": 0, + "width": 800, + "height": 450, + "wireID": "add37a1a-c222-4dff-c507-0a336afed2ad", + "customInputs": [], + "customOutputs": [], + "data": "\"Test\"", + "style": { + "inheritFrom": "default", + "backgroundColor": "#3416dc" + }, + "timeline": [] + } + ] + }, + { + "type": "StartActionComponent", + "left": -33, + "top": -184, + "width": 87, + "height": 25, + "wireID": "daf60711-0bd9-4269-bdf9-2bd9b89f10e8", + "customInputs": [], + "customOutputs": [] + }, + { + "type": "EvalJSExprActionComponent", + "left": 245, + "top": -184, + "width": 302, + "height": 55, + "wireID": "bf57d0c4-f7e1-4d83-f68f-17af77959771", + "customInputs": [ + { + "name": "counter", + "type": "integer" + } + ], + "customOutputs": [ + { + "name": "result", + "type": "array:string" + } + ], + "expression": "{counter}.toString().split(\"5\")" + }, + { + "type": "ConstantActionComponent", + "left": 44, + "top": -129, + "width": 87, + "height": 54, + "wireID": "25671a50-e557-4672-b10b-ff70667d5450", + "customInputs": [], + "customOutputs": [], + "value": "123456789" + }, + { + "type": "LogActionComponent", + "left": 598, + "top": -184, + "width": 87, + "height": 54, + "wireID": "9069d197-a417-4d45-d6b7-886cf761e177", + "customInputs": [ + { + "name": "value", + "type": "array:string" + } + ], + "customOutputs": [], + "value": "value" + }, + { + "type": "SetVariableActionComponent", + "left": 167, + "top": -344, + "width": 153, + "height": 56, + "wireID": "8e496378-60e3-4827-b8c3-63429cc80c15", + "customInputs": [], + "customOutputs": [], + "entries": [ + { + "variable": "sel", + "value": "sel ? 0 : 1" + } + ] + }, + { + "type": "DelayActionComponent", + "left": 334, + "top": -344, + "width": 87, + "height": 55, + "wireID": "dbd191a5-fd5d-42d0-fbaa-d48ce5f4f45c", + "customInputs": [], + "customOutputs": [], + "milliseconds": "1000" + } + ], + "connectionLines": [ + { + "source": "daf60711-0bd9-4269-bdf9-2bd9b89f10e8", + "output": "@seqout", + "target": "bf57d0c4-f7e1-4d83-f68f-17af77959771", + "input": "@seqin" + }, + { + "source": "25671a50-e557-4672-b10b-ff70667d5450", + "output": "value", + "target": "bf57d0c4-f7e1-4d83-f68f-17af77959771", + "input": "counter" + }, + { + "source": "bf57d0c4-f7e1-4d83-f68f-17af77959771", + "output": "result", + "target": "9069d197-a417-4d45-d6b7-886cf761e177", + "input": "value" + }, + { + "source": "daf60711-0bd9-4269-bdf9-2bd9b89f10e8", + "output": "@seqout", + "target": "8e496378-60e3-4827-b8c3-63429cc80c15", + "input": "@seqin" + }, + { + "source": "8e496378-60e3-4827-b8c3-63429cc80c15", + "output": "@seqout", + "target": "dbd191a5-fd5d-42d0-fbaa-d48ce5f4f45c", + "input": "@seqin" + }, + { + "source": "dbd191a5-fd5d-42d0-fbaa-d48ce5f4f45c", + "output": "@seqout", + "target": "8e496378-60e3-4827-b8c3-63429cc80c15", + "input": "@seqin" + } + ], + "localVariables": [ + { + "name": "sel", + "type": "integer", + "defaultValue": "0", + "persistent": false + } + ], + "name": "Main", + "style": "page", + "left": 0, + "top": 0, + "width": 800, + "height": 450, + "scaleToFit": true + } + ], + "styles": [ + { + "name": "default" + }, + { + "name": "page", + "inheritFrom": "", + "backgroundColor": "page_color", + "css": "\n" + } + ], + "colors": [ + { + "name": "page_color" + } + ], + "themes": [ + { + "name": "default", + "colors": [ + "#f0f0f0" + ] + } + ] +} \ No newline at end of file diff --git a/USB_DEVICE/App/usb_device.c b/USB_DEVICE/App/usb_device.c new file mode 100644 index 0000000..2685514 --- /dev/null +++ b/USB_DEVICE/App/usb_device.c @@ -0,0 +1,100 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : usb_device.c + * @version : v1.0_Cube + * @brief : This file implements the USB Device + ****************************************************************************** + * @attention + * + * Copyright (c) 2022 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ + +#include "usb_device.h" +#include "usbd_core.h" +#include "usbd_desc.h" +#include "usbd_cdc.h" +#include "usbd_cdc_if.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* USER CODE BEGIN PV */ +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE END PV */ + +/* USER CODE BEGIN PFP */ +/* Private function prototypes -----------------------------------------------*/ + +/* USER CODE END PFP */ + +/* USB Device Core handle declaration. */ +USBD_HandleTypeDef hUsbDeviceFS; + +/* + * -- Insert your variables declaration here -- + */ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* + * -- Insert your external function declaration here -- + */ +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/** + * Init USB device Library, add supported class and start the library + * @retval None + */ +void MX_USB_DEVICE_Init(void) +{ + /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ + + /* USER CODE END USB_DEVICE_Init_PreTreatment */ + + /* Init Device Library, add supported class and start the library. */ + if (USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK) + { + Error_Handler(); + } + if (USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC) != USBD_OK) + { + Error_Handler(); + } + if (USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS) != USBD_OK) + { + Error_Handler(); + } + if (USBD_Start(&hUsbDeviceFS) != USBD_OK) + { + Error_Handler(); + } + + /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */ + + /* USER CODE END USB_DEVICE_Init_PostTreatment */ +} + +/** + * @} + */ + +/** + * @} + */ + diff --git a/USB_DEVICE/App/usb_device.h b/USB_DEVICE/App/usb_device.h new file mode 100644 index 0000000..8140d98 --- /dev/null +++ b/USB_DEVICE/App/usb_device.h @@ -0,0 +1,102 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : usb_device.h + * @version : v1.0_Cube + * @brief : Header for usb_device.c file. + ****************************************************************************** + * @attention + * + * Copyright (c) 2022 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USB_DEVICE__H__ +#define __USB_DEVICE__H__ + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f4xx.h" +#include "stm32f4xx_hal.h" +#include "usbd_def.h" + +/* USER CODE BEGIN INCLUDE */ + +/* USER CODE END INCLUDE */ + +/** @addtogroup USBD_OTG_DRIVER + * @{ + */ + +/** @defgroup USBD_DEVICE USBD_DEVICE + * @brief Device file for Usb otg low level driver. + * @{ + */ + +/** @defgroup USBD_DEVICE_Exported_Variables USBD_DEVICE_Exported_Variables + * @brief Public variables. + * @{ + */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* + * -- Insert your variables declaration here -- + */ +/* USER CODE BEGIN VARIABLES */ + +/* USER CODE END VARIABLES */ +/** + * @} + */ + +/** @defgroup USBD_DEVICE_Exported_FunctionsPrototype USBD_DEVICE_Exported_FunctionsPrototype + * @brief Declaration of public functions for Usb device. + * @{ + */ + +/** USB Device initialization function. */ +void MX_USB_DEVICE_Init(void); + +/* + * -- Insert functions declaration here -- + */ +/* USER CODE BEGIN FD */ + +/* USER CODE END FD */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USB_DEVICE__H__ */ diff --git a/USB_DEVICE/App/usbd_cdc_if.c b/USB_DEVICE/App/usbd_cdc_if.c new file mode 100644 index 0000000..6f28244 --- /dev/null +++ b/USB_DEVICE/App/usbd_cdc_if.c @@ -0,0 +1,328 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : usbd_cdc_if.c + * @version : v1.0_Cube + * @brief : Usb device for Virtual Com Port. + ****************************************************************************** + * @attention + * + * Copyright (c) 2022 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_cdc_if.h" + +/* USER CODE BEGIN INCLUDE */ + +/* USER CODE END INCLUDE */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ + +/* USER CODE BEGIN PV */ +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE END PV */ + +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @brief Usb device library. + * @{ + */ + +/** @addtogroup USBD_CDC_IF + * @{ + */ + +/** @defgroup USBD_CDC_IF_Private_TypesDefinitions USBD_CDC_IF_Private_TypesDefinitions + * @brief Private types. + * @{ + */ + +/* USER CODE BEGIN PRIVATE_TYPES */ + +/* USER CODE END PRIVATE_TYPES */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Private_Defines USBD_CDC_IF_Private_Defines + * @brief Private defines. + * @{ + */ + +/* USER CODE BEGIN PRIVATE_DEFINES */ +/* USER CODE END PRIVATE_DEFINES */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Private_Macros USBD_CDC_IF_Private_Macros + * @brief Private macros. + * @{ + */ + +/* USER CODE BEGIN PRIVATE_MACRO */ + +/* USER CODE END PRIVATE_MACRO */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Private_Variables USBD_CDC_IF_Private_Variables + * @brief Private variables. + * @{ + */ +/* Create buffer for reception and transmission */ +/* It's up to user to redefine and/or remove those define */ +/** Received data over USB are stored in this buffer */ +uint8_t UserRxBufferFS[APP_RX_DATA_SIZE]; + +/** Data to send over USB CDC are stored in this buffer */ +uint8_t UserTxBufferFS[APP_TX_DATA_SIZE]; + +/* USER CODE BEGIN PRIVATE_VARIABLES */ + +/* USER CODE END PRIVATE_VARIABLES */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables + * @brief Public variables. + * @{ + */ + +extern USBD_HandleTypeDef hUsbDeviceFS; + +/* USER CODE BEGIN EXPORTED_VARIABLES */ + +/* USER CODE END EXPORTED_VARIABLES */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Private_FunctionPrototypes USBD_CDC_IF_Private_FunctionPrototypes + * @brief Private functions declaration. + * @{ + */ + +static int8_t CDC_Init_FS(void); +static int8_t CDC_DeInit_FS(void); +static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length); +static int8_t CDC_Receive_FS(uint8_t* pbuf, uint32_t *Len); +static int8_t CDC_TransmitCplt_FS(uint8_t *pbuf, uint32_t *Len, uint8_t epnum); + +/* USER CODE BEGIN PRIVATE_FUNCTIONS_DECLARATION */ + +/* USER CODE END PRIVATE_FUNCTIONS_DECLARATION */ + +/** + * @} + */ + +USBD_CDC_ItfTypeDef USBD_Interface_fops_FS = +{ + CDC_Init_FS, + CDC_DeInit_FS, + CDC_Control_FS, + CDC_Receive_FS, + CDC_TransmitCplt_FS +}; + +/* Private functions ---------------------------------------------------------*/ +/** + * @brief Initializes the CDC media low layer over the FS USB IP + * @retval USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_Init_FS(void) +{ + /* USER CODE BEGIN 3 */ + /* Set Application Buffers */ + USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0); + USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS); + return (USBD_OK); + /* USER CODE END 3 */ +} + +/** + * @brief DeInitializes the CDC media low layer + * @retval USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_DeInit_FS(void) +{ + /* USER CODE BEGIN 4 */ + return (USBD_OK); + /* USER CODE END 4 */ +} + +/** + * @brief Manage the CDC class requests + * @param cmd: Command code + * @param pbuf: Buffer containing command data (request parameters) + * @param length: Number of data to be sent (in bytes) + * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) +{ + /* USER CODE BEGIN 5 */ + switch(cmd) + { + case CDC_SEND_ENCAPSULATED_COMMAND: + + break; + + case CDC_GET_ENCAPSULATED_RESPONSE: + + break; + + case CDC_SET_COMM_FEATURE: + + break; + + case CDC_GET_COMM_FEATURE: + + break; + + case CDC_CLEAR_COMM_FEATURE: + + break; + + /*******************************************************************************/ + /* Line Coding Structure */ + /*-----------------------------------------------------------------------------*/ + /* Offset | Field | Size | Value | Description */ + /* 0 | dwDTERate | 4 | Number |Data terminal rate, in bits per second*/ + /* 4 | bCharFormat | 1 | Number | Stop bits */ + /* 0 - 1 Stop bit */ + /* 1 - 1.5 Stop bits */ + /* 2 - 2 Stop bits */ + /* 5 | bParityType | 1 | Number | Parity */ + /* 0 - None */ + /* 1 - Odd */ + /* 2 - Even */ + /* 3 - Mark */ + /* 4 - Space */ + /* 6 | bDataBits | 1 | Number Data bits (5, 6, 7, 8 or 16). */ + /*******************************************************************************/ + case CDC_SET_LINE_CODING: + + break; + + case CDC_GET_LINE_CODING: + + break; + + case CDC_SET_CONTROL_LINE_STATE: + + break; + + case CDC_SEND_BREAK: + + break; + + default: + break; + } + + return (USBD_OK); + /* USER CODE END 5 */ +} + +/** + * @brief Data received over USB OUT endpoint are sent over CDC interface + * through this function. + * + * @note + * This function will issue a NAK packet on any OUT packet received on + * USB endpoint until exiting this function. If you exit this function + * before transfer is complete on CDC interface (ie. using DMA controller) + * it will result in receiving more data while previous ones are still + * not sent. + * + * @param Buf: Buffer of data to be received + * @param Len: Number of data received (in bytes) + * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) +{ + /* USER CODE BEGIN 6 */ + USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); + USBD_CDC_ReceivePacket(&hUsbDeviceFS); + return (USBD_OK); + /* USER CODE END 6 */ +} + +/** + * @brief CDC_Transmit_FS + * Data to send over USB IN endpoint are sent over CDC interface + * through this function. + * @note + * + * + * @param Buf: Buffer of data to be sent + * @param Len: Number of data to be sent (in bytes) + * @retval USBD_OK if all operations are OK else USBD_FAIL or USBD_BUSY + */ +uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len) +{ + uint8_t result = USBD_OK; + /* USER CODE BEGIN 7 */ + USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData; + if (hcdc->TxState != 0){ + return USBD_BUSY; + } + USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len); + result = USBD_CDC_TransmitPacket(&hUsbDeviceFS); + /* USER CODE END 7 */ + return result; +} + +/** + * @brief CDC_TransmitCplt_FS + * Data transmitted callback + * + * @note + * This function is IN transfer complete callback used to inform user that + * the submitted Data is successfully sent over USB. + * + * @param Buf: Buffer of data to be received + * @param Len: Number of data received (in bytes) + * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL + */ +static int8_t CDC_TransmitCplt_FS(uint8_t *Buf, uint32_t *Len, uint8_t epnum) +{ + uint8_t result = USBD_OK; + /* USER CODE BEGIN 13 */ + UNUSED(Buf); + UNUSED(Len); + UNUSED(epnum); + /* USER CODE END 13 */ + return result; +} + +/* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */ + +/* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */ + +/** + * @} + */ + +/** + * @} + */ diff --git a/USB_DEVICE/App/usbd_cdc_if.h b/USB_DEVICE/App/usbd_cdc_if.h new file mode 100644 index 0000000..7ba89f5 --- /dev/null +++ b/USB_DEVICE/App/usbd_cdc_if.h @@ -0,0 +1,131 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : usbd_cdc_if.h + * @version : v1.0_Cube + * @brief : Header for usbd_cdc_if.c file. + ****************************************************************************** + * @attention + * + * Copyright (c) 2022 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USBD_CDC_IF_H__ +#define __USBD_CDC_IF_H__ + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_cdc.h" + +/* USER CODE BEGIN INCLUDE */ + +/* USER CODE END INCLUDE */ + +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @brief For Usb device. + * @{ + */ + +/** @defgroup USBD_CDC_IF USBD_CDC_IF + * @brief Usb VCP device module + * @{ + */ + +/** @defgroup USBD_CDC_IF_Exported_Defines USBD_CDC_IF_Exported_Defines + * @brief Defines. + * @{ + */ +/* Define size for the receive and transmit buffer over CDC */ +#define APP_RX_DATA_SIZE 2048 +#define APP_TX_DATA_SIZE 2048 +/* USER CODE BEGIN EXPORTED_DEFINES */ + +/* USER CODE END EXPORTED_DEFINES */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Exported_Types USBD_CDC_IF_Exported_Types + * @brief Types. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_TYPES */ + +/* USER CODE END EXPORTED_TYPES */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Exported_Macros USBD_CDC_IF_Exported_Macros + * @brief Aliases. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_MACRO */ + +/* USER CODE END EXPORTED_MACRO */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Exported_Variables USBD_CDC_IF_Exported_Variables + * @brief Public variables. + * @{ + */ + +/** CDC Interface callback. */ +extern USBD_CDC_ItfTypeDef USBD_Interface_fops_FS; + +/* USER CODE BEGIN EXPORTED_VARIABLES */ + +/* USER CODE END EXPORTED_VARIABLES */ + +/** + * @} + */ + +/** @defgroup USBD_CDC_IF_Exported_FunctionsPrototype USBD_CDC_IF_Exported_FunctionsPrototype + * @brief Public functions declaration. + * @{ + */ + +uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len); + +/* USER CODE BEGIN EXPORTED_FUNCTIONS */ + +/* USER CODE END EXPORTED_FUNCTIONS */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USBD_CDC_IF_H__ */ + diff --git a/USB_DEVICE/App/usbd_desc.c b/USB_DEVICE/App/usbd_desc.c new file mode 100644 index 0000000..c476cb4 --- /dev/null +++ b/USB_DEVICE/App/usbd_desc.c @@ -0,0 +1,443 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : App/usbd_desc.c + * @version : v1.0_Cube + * @brief : This file implements the USB device descriptors. + ****************************************************************************** + * @attention + * + * Copyright (c) 2022 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_core.h" +#include "usbd_desc.h" +#include "usbd_conf.h" + +/* USER CODE BEGIN INCLUDE */ + +/* USER CODE END INCLUDE */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ + +/* USER CODE BEGIN PV */ +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE END PV */ + +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @{ + */ + +/** @addtogroup USBD_DESC + * @{ + */ + +/** @defgroup USBD_DESC_Private_TypesDefinitions USBD_DESC_Private_TypesDefinitions + * @brief Private types. + * @{ + */ + +/* USER CODE BEGIN PRIVATE_TYPES */ + +/* USER CODE END PRIVATE_TYPES */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Private_Defines USBD_DESC_Private_Defines + * @brief Private defines. + * @{ + */ + +#define USBD_VID 1155 +#define USBD_LANGID_STRING 1033 +#define USBD_MANUFACTURER_STRING "STMicroelectronics" +#define USBD_PID_FS 22336 +#define USBD_PRODUCT_STRING_FS "STM32 Virtual ComPort" +#define USBD_CONFIGURATION_STRING_FS "CDC Config" +#define USBD_INTERFACE_STRING_FS "CDC Interface" + +#define USB_SIZ_BOS_DESC 0x0C + +/* USER CODE BEGIN PRIVATE_DEFINES */ + +/* USER CODE END PRIVATE_DEFINES */ + +/** + * @} + */ + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** @defgroup USBD_DESC_Private_Macros USBD_DESC_Private_Macros + * @brief Private macros. + * @{ + */ + +/* USER CODE BEGIN PRIVATE_MACRO */ + +/* USER CODE END PRIVATE_MACRO */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Private_FunctionPrototypes USBD_DESC_Private_FunctionPrototypes + * @brief Private functions declaration. + * @{ + */ + +static void Get_SerialNum(void); +static void IntToUnicode(uint32_t value, uint8_t * pbuf, uint8_t len); + +/** + * @} + */ + +/** @defgroup USBD_DESC_Private_FunctionPrototypes USBD_DESC_Private_FunctionPrototypes + * @brief Private functions declaration for FS. + * @{ + */ + +uint8_t * USBD_FS_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +uint8_t * USBD_FS_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +uint8_t * USBD_FS_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +#if (USBD_LPM_ENABLED == 1) +uint8_t * USBD_FS_USR_BOSDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); +#endif /* (USBD_LPM_ENABLED == 1) */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Private_Variables USBD_DESC_Private_Variables + * @brief Private variables. + * @{ + */ + +USBD_DescriptorsTypeDef FS_Desc = +{ + USBD_FS_DeviceDescriptor +, USBD_FS_LangIDStrDescriptor +, USBD_FS_ManufacturerStrDescriptor +, USBD_FS_ProductStrDescriptor +, USBD_FS_SerialStrDescriptor +, USBD_FS_ConfigStrDescriptor +, USBD_FS_InterfaceStrDescriptor +#if (USBD_LPM_ENABLED == 1) +, USBD_FS_USR_BOSDescriptor +#endif /* (USBD_LPM_ENABLED == 1) */ +}; + +#if defined ( __ICCARM__ ) /* IAR Compiler */ + #pragma data_alignment=4 +#endif /* defined ( __ICCARM__ ) */ +/** USB standard device descriptor. */ +__ALIGN_BEGIN uint8_t USBD_FS_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END = +{ + 0x12, /*bLength */ + USB_DESC_TYPE_DEVICE, /*bDescriptorType*/ +#if (USBD_LPM_ENABLED == 1) + 0x01, /*bcdUSB */ /* changed to USB version 2.01 + in order to support LPM L1 suspend + resume test of USBCV3.0*/ +#else + 0x00, /*bcdUSB */ +#endif /* (USBD_LPM_ENABLED == 1) */ + 0x02, + 0x02, /*bDeviceClass*/ + 0x02, /*bDeviceSubClass*/ + 0x00, /*bDeviceProtocol*/ + USB_MAX_EP0_SIZE, /*bMaxPacketSize*/ + LOBYTE(USBD_VID), /*idVendor*/ + HIBYTE(USBD_VID), /*idVendor*/ + LOBYTE(USBD_PID_FS), /*idProduct*/ + HIBYTE(USBD_PID_FS), /*idProduct*/ + 0x00, /*bcdDevice rel. 2.00*/ + 0x02, + USBD_IDX_MFC_STR, /*Index of manufacturer string*/ + USBD_IDX_PRODUCT_STR, /*Index of product string*/ + USBD_IDX_SERIAL_STR, /*Index of serial number string*/ + USBD_MAX_NUM_CONFIGURATION /*bNumConfigurations*/ +}; + +/* USB_DeviceDescriptor */ +/** BOS descriptor. */ +#if (USBD_LPM_ENABLED == 1) +#if defined ( __ICCARM__ ) /* IAR Compiler */ + #pragma data_alignment=4 +#endif /* defined ( __ICCARM__ ) */ +__ALIGN_BEGIN uint8_t USBD_FS_BOSDesc[USB_SIZ_BOS_DESC] __ALIGN_END = +{ + 0x5, + USB_DESC_TYPE_BOS, + 0xC, + 0x0, + 0x1, /* 1 device capability*/ + /* device capability*/ + 0x7, + USB_DEVICE_CAPABITY_TYPE, + 0x2, + 0x2, /* LPM capability bit set*/ + 0x0, + 0x0, + 0x0 +}; +#endif /* (USBD_LPM_ENABLED == 1) */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Private_Variables USBD_DESC_Private_Variables + * @brief Private variables. + * @{ + */ + +#if defined ( __ICCARM__ ) /* IAR Compiler */ + #pragma data_alignment=4 +#endif /* defined ( __ICCARM__ ) */ + +/** USB lang identifier descriptor. */ +__ALIGN_BEGIN uint8_t USBD_LangIDDesc[USB_LEN_LANGID_STR_DESC] __ALIGN_END = +{ + USB_LEN_LANGID_STR_DESC, + USB_DESC_TYPE_STRING, + LOBYTE(USBD_LANGID_STRING), + HIBYTE(USBD_LANGID_STRING) +}; + +#if defined ( __ICCARM__ ) /* IAR Compiler */ + #pragma data_alignment=4 +#endif /* defined ( __ICCARM__ ) */ +/* Internal string descriptor. */ +__ALIGN_BEGIN uint8_t USBD_StrDesc[USBD_MAX_STR_DESC_SIZ] __ALIGN_END; + +#if defined ( __ICCARM__ ) /*!< IAR Compiler */ + #pragma data_alignment=4 +#endif +__ALIGN_BEGIN uint8_t USBD_StringSerial[USB_SIZ_STRING_SERIAL] __ALIGN_END = { + USB_SIZ_STRING_SERIAL, + USB_DESC_TYPE_STRING, +}; + +/** + * @} + */ + +/** @defgroup USBD_DESC_Private_Functions USBD_DESC_Private_Functions + * @brief Private functions. + * @{ + */ + +/** + * @brief Return the device descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + UNUSED(speed); + *length = sizeof(USBD_FS_DeviceDesc); + return USBD_FS_DeviceDesc; +} + +/** + * @brief Return the LangID string descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + UNUSED(speed); + *length = sizeof(USBD_LangIDDesc); + return USBD_LangIDDesc; +} + +/** + * @brief Return the product string descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + if(speed == 0) + { + USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); + } + else + { + USBD_GetString((uint8_t *)USBD_PRODUCT_STRING_FS, USBD_StrDesc, length); + } + return USBD_StrDesc; +} + +/** + * @brief Return the manufacturer string descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + UNUSED(speed); + USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length); + return USBD_StrDesc; +} + +/** + * @brief Return the serial number string descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + UNUSED(speed); + *length = USB_SIZ_STRING_SERIAL; + + /* Update the serial number string descriptor with the data from the unique + * ID */ + Get_SerialNum(); + /* USER CODE BEGIN USBD_FS_SerialStrDescriptor */ + + /* USER CODE END USBD_FS_SerialStrDescriptor */ + return (uint8_t *) USBD_StringSerial; +} + +/** + * @brief Return the configuration string descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + if(speed == USBD_SPEED_HIGH) + { + USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); + } + else + { + USBD_GetString((uint8_t *)USBD_CONFIGURATION_STRING_FS, USBD_StrDesc, length); + } + return USBD_StrDesc; +} + +/** + * @brief Return the interface string descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + if(speed == 0) + { + USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); + } + else + { + USBD_GetString((uint8_t *)USBD_INTERFACE_STRING_FS, USBD_StrDesc, length); + } + return USBD_StrDesc; +} + +#if (USBD_LPM_ENABLED == 1) +/** + * @brief Return the BOS descriptor + * @param speed : Current device speed + * @param length : Pointer to data length variable + * @retval Pointer to descriptor buffer + */ +uint8_t * USBD_FS_USR_BOSDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) +{ + UNUSED(speed); + *length = sizeof(USBD_FS_BOSDesc); + return (uint8_t*)USBD_FS_BOSDesc; +} +#endif /* (USBD_LPM_ENABLED == 1) */ + +/** + * @brief Create the serial number string descriptor + * @param None + * @retval None + */ +static void Get_SerialNum(void) +{ + uint32_t deviceserial0, deviceserial1, deviceserial2; + + deviceserial0 = *(uint32_t *) DEVICE_ID1; + deviceserial1 = *(uint32_t *) DEVICE_ID2; + deviceserial2 = *(uint32_t *) DEVICE_ID3; + + deviceserial0 += deviceserial2; + + if (deviceserial0 != 0) + { + IntToUnicode(deviceserial0, &USBD_StringSerial[2], 8); + IntToUnicode(deviceserial1, &USBD_StringSerial[18], 4); + } +} + +/** + * @brief Convert Hex 32Bits value into char + * @param value: value to convert + * @param pbuf: pointer to the buffer + * @param len: buffer length + * @retval None + */ +static void IntToUnicode(uint32_t value, uint8_t * pbuf, uint8_t len) +{ + uint8_t idx = 0; + + for (idx = 0; idx < len; idx++) + { + if (((value >> 28)) < 0xA) + { + pbuf[2 * idx] = (value >> 28) + '0'; + } + else + { + pbuf[2 * idx] = (value >> 28) + 'A' - 10; + } + + value = value << 4; + + pbuf[2 * idx + 1] = 0; + } +} +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + diff --git a/USB_DEVICE/App/usbd_desc.h b/USB_DEVICE/App/usbd_desc.h new file mode 100644 index 0000000..ae5926c --- /dev/null +++ b/USB_DEVICE/App/usbd_desc.h @@ -0,0 +1,143 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : usbd_desc.c + * @version : v1.0_Cube + * @brief : Header for usbd_conf.c file. + ****************************************************************************** + * @attention + * + * Copyright (c) 2022 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USBD_DESC__C__ +#define __USBD_DESC__C__ + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "usbd_def.h" + +/* USER CODE BEGIN INCLUDE */ + +/* USER CODE END INCLUDE */ + +/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY + * @{ + */ + +/** @defgroup USBD_DESC USBD_DESC + * @brief Usb device descriptors module. + * @{ + */ + +/** @defgroup USBD_DESC_Exported_Constants USBD_DESC_Exported_Constants + * @brief Constants. + * @{ + */ +#define DEVICE_ID1 (UID_BASE) +#define DEVICE_ID2 (UID_BASE + 0x4) +#define DEVICE_ID3 (UID_BASE + 0x8) + +#define USB_SIZ_STRING_SERIAL 0x1A + +/* USER CODE BEGIN EXPORTED_CONSTANTS */ + +/* USER CODE END EXPORTED_CONSTANTS */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Exported_Defines USBD_DESC_Exported_Defines + * @brief Defines. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_DEFINES */ + +/* USER CODE END EXPORTED_DEFINES */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Exported_TypesDefinitions USBD_DESC_Exported_TypesDefinitions + * @brief Types. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_TYPES */ + +/* USER CODE END EXPORTED_TYPES */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Exported_Macros USBD_DESC_Exported_Macros + * @brief Aliases. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_MACRO */ + +/* USER CODE END EXPORTED_MACRO */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Exported_Variables USBD_DESC_Exported_Variables + * @brief Public variables. + * @{ + */ + +/** Descriptor for the Usb device. */ +extern USBD_DescriptorsTypeDef FS_Desc; + +/* USER CODE BEGIN EXPORTED_VARIABLES */ + +/* USER CODE END EXPORTED_VARIABLES */ + +/** + * @} + */ + +/** @defgroup USBD_DESC_Exported_FunctionsPrototype USBD_DESC_Exported_FunctionsPrototype + * @brief Public functions declaration. + * @{ + */ + +/* USER CODE BEGIN EXPORTED_FUNCTIONS */ + +/* USER CODE END EXPORTED_FUNCTIONS */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USBD_DESC__C__ */ + diff --git a/USB_DEVICE/Target/usbd_conf.c b/USB_DEVICE/Target/usbd_conf.c new file mode 100644 index 0000000..5a3ee45 --- /dev/null +++ b/USB_DEVICE/Target/usbd_conf.c @@ -0,0 +1,724 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : Target/usbd_conf.c + * @version : v1.0_Cube + * @brief : This file implements the board support package for the USB device library + ****************************************************************************** + * @attention + * + * Copyright (c) 2022 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f4xx.h" +#include "stm32f4xx_hal.h" +#include "usbd_def.h" +#include "usbd_core.h" + +#include "usbd_cdc.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ + +/* USER CODE BEGIN PV */ +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE END PV */ + +PCD_HandleTypeDef hpcd_USB_OTG_FS; +void Error_Handler(void); + +/* External functions --------------------------------------------------------*/ +void SystemClock_Config(void); + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* USER CODE BEGIN PFP */ +/* Private function prototypes -----------------------------------------------*/ +USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status); + +/* USER CODE END PFP */ + +/* Private functions ---------------------------------------------------------*/ + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/******************************************************************************* + LL Driver Callbacks (PCD -> USB Device Library) +*******************************************************************************/ +/* MSP Init */ + +void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + if(pcdHandle->Instance==USB_OTG_FS) + { + /* USER CODE BEGIN USB_OTG_FS_MspInit 0 */ + + /* USER CODE END USB_OTG_FS_MspInit 0 */ + + __HAL_RCC_GPIOA_CLK_ENABLE(); + /**USB_OTG_FS GPIO Configuration + PA12 ------> USB_OTG_FS_DP + PA11 ------> USB_OTG_FS_DM + PA10 ------> USB_OTG_FS_ID + PA9 ------> USB_OTG_FS_VBUS + */ + GPIO_InitStruct.Pin = USB_FS1_P_Pin|USB_FS1_N_Pin|USB_FS1_ID_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_AF10_OTG_FS; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = VBUS_FS1_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(VBUS_FS1_GPIO_Port, &GPIO_InitStruct); + + /* Peripheral clock enable */ + __HAL_RCC_USB_OTG_FS_CLK_ENABLE(); + + /* Peripheral interrupt init */ + HAL_NVIC_SetPriority(OTG_FS_IRQn, 5, 0); + HAL_NVIC_EnableIRQ(OTG_FS_IRQn); + /* USER CODE BEGIN USB_OTG_FS_MspInit 1 */ + + /* USER CODE END USB_OTG_FS_MspInit 1 */ + } +} + +void HAL_PCD_MspDeInit(PCD_HandleTypeDef* pcdHandle) +{ + if(pcdHandle->Instance==USB_OTG_FS) + { + /* USER CODE BEGIN USB_OTG_FS_MspDeInit 0 */ + + /* USER CODE END USB_OTG_FS_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_USB_OTG_FS_CLK_DISABLE(); + + /**USB_OTG_FS GPIO Configuration + PA12 ------> USB_OTG_FS_DP + PA11 ------> USB_OTG_FS_DM + PA10 ------> USB_OTG_FS_ID + PA9 ------> USB_OTG_FS_VBUS + */ + HAL_GPIO_DeInit(GPIOA, USB_FS1_P_Pin|USB_FS1_N_Pin|USB_FS1_ID_Pin|VBUS_FS1_Pin); + + /* Peripheral interrupt Deinit*/ + HAL_NVIC_DisableIRQ(OTG_FS_IRQn); + + /* USER CODE BEGIN USB_OTG_FS_MspDeInit 1 */ + + /* USER CODE END USB_OTG_FS_MspDeInit 1 */ + } +} + +/** + * @brief Setup stage callback + * @param hpcd: PCD handle + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_SetupStageCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_SetupStage((USBD_HandleTypeDef*)hpcd->pData, (uint8_t *)hpcd->Setup); +} + +/** + * @brief Data Out stage callback. + * @param hpcd: PCD handle + * @param epnum: Endpoint number + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#else +void HAL_PCD_DataOutStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_DataOutStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->OUT_ep[epnum].xfer_buff); +} + +/** + * @brief Data In stage callback. + * @param hpcd: PCD handle + * @param epnum: Endpoint number + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#else +void HAL_PCD_DataInStageCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_DataInStage((USBD_HandleTypeDef*)hpcd->pData, epnum, hpcd->IN_ep[epnum].xfer_buff); +} + +/** + * @brief SOF callback. + * @param hpcd: PCD handle + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_SOFCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_SOFCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_SOF((USBD_HandleTypeDef*)hpcd->pData); +} + +/** + * @brief Reset callback. + * @param hpcd: PCD handle + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ResetCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_ResetCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_SpeedTypeDef speed = USBD_SPEED_FULL; + + if ( hpcd->Init.speed == PCD_SPEED_HIGH) + { + speed = USBD_SPEED_HIGH; + } + else if ( hpcd->Init.speed == PCD_SPEED_FULL) + { + speed = USBD_SPEED_FULL; + } + else + { + Error_Handler(); + } + /* Set Speed. */ + USBD_LL_SetSpeed((USBD_HandleTypeDef*)hpcd->pData, speed); + + /* Reset Device. */ + USBD_LL_Reset((USBD_HandleTypeDef*)hpcd->pData); +} + +/** + * @brief Suspend callback. + * When Low power mode is enabled the debug cannot be used (IAR, Keil doesn't support it) + * @param hpcd: PCD handle + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_SuspendCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + /* Inform USB library that core enters in suspend Mode. */ + USBD_LL_Suspend((USBD_HandleTypeDef*)hpcd->pData); + __HAL_PCD_GATE_PHYCLOCK(hpcd); + /* Enter in STOP mode. */ + /* USER CODE BEGIN 2 */ + if (hpcd->Init.low_power_enable) + { + /* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register. */ + SCB->SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk)); + } + /* USER CODE END 2 */ +} + +/** + * @brief Resume callback. + * When Low power mode is enabled the debug cannot be used (IAR, Keil doesn't support it) + * @param hpcd: PCD handle + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_ResumeCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + /* USER CODE BEGIN 3 */ + + /* USER CODE END 3 */ + USBD_LL_Resume((USBD_HandleTypeDef*)hpcd->pData); +} + +/** + * @brief ISOOUTIncomplete callback. + * @param hpcd: PCD handle + * @param epnum: Endpoint number + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#else +void HAL_PCD_ISOOUTIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_IsoOUTIncomplete((USBD_HandleTypeDef*)hpcd->pData, epnum); +} + +/** + * @brief ISOINIncomplete callback. + * @param hpcd: PCD handle + * @param epnum: Endpoint number + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#else +void HAL_PCD_ISOINIncompleteCallback(PCD_HandleTypeDef *hpcd, uint8_t epnum) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_IsoINIncomplete((USBD_HandleTypeDef*)hpcd->pData, epnum); +} + +/** + * @brief Connect callback. + * @param hpcd: PCD handle + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_ConnectCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_DevConnected((USBD_HandleTypeDef*)hpcd->pData); +} + +/** + * @brief Disconnect callback. + * @param hpcd: PCD handle + * @retval None + */ +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) +static void PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) +#else +void HAL_PCD_DisconnectCallback(PCD_HandleTypeDef *hpcd) +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ +{ + USBD_LL_DevDisconnected((USBD_HandleTypeDef*)hpcd->pData); +} + +/******************************************************************************* + LL Driver Interface (USB Device Library --> PCD) +*******************************************************************************/ + +/** + * @brief Initializes the low level portion of the device driver. + * @param pdev: Device handle + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev) +{ + /* Init USB Ip. */ + if (pdev->id == DEVICE_FS) { + /* Link the driver to the stack. */ + hpcd_USB_OTG_FS.pData = pdev; + pdev->pData = &hpcd_USB_OTG_FS; + + hpcd_USB_OTG_FS.Instance = USB_OTG_FS; + hpcd_USB_OTG_FS.Init.dev_endpoints = 6; + hpcd_USB_OTG_FS.Init.speed = PCD_SPEED_FULL; + hpcd_USB_OTG_FS.Init.dma_enable = DISABLE; + hpcd_USB_OTG_FS.Init.phy_itface = PCD_PHY_EMBEDDED; + hpcd_USB_OTG_FS.Init.Sof_enable = DISABLE; + hpcd_USB_OTG_FS.Init.low_power_enable = DISABLE; + hpcd_USB_OTG_FS.Init.lpm_enable = DISABLE; + hpcd_USB_OTG_FS.Init.vbus_sensing_enable = ENABLE; + hpcd_USB_OTG_FS.Init.use_dedicated_ep1 = DISABLE; + if (HAL_PCD_Init(&hpcd_USB_OTG_FS) != HAL_OK) + { + Error_Handler( ); + } + +#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U) + /* Register USB PCD CallBacks */ + HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_SOF_CB_ID, PCD_SOFCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_SETUPSTAGE_CB_ID, PCD_SetupStageCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_RESET_CB_ID, PCD_ResetCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_SUSPEND_CB_ID, PCD_SuspendCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_RESUME_CB_ID, PCD_ResumeCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_CONNECT_CB_ID, PCD_ConnectCallback); + HAL_PCD_RegisterCallback(&hpcd_USB_OTG_FS, HAL_PCD_DISCONNECT_CB_ID, PCD_DisconnectCallback); + + HAL_PCD_RegisterDataOutStageCallback(&hpcd_USB_OTG_FS, PCD_DataOutStageCallback); + HAL_PCD_RegisterDataInStageCallback(&hpcd_USB_OTG_FS, PCD_DataInStageCallback); + HAL_PCD_RegisterIsoOutIncpltCallback(&hpcd_USB_OTG_FS, PCD_ISOOUTIncompleteCallback); + HAL_PCD_RegisterIsoInIncpltCallback(&hpcd_USB_OTG_FS, PCD_ISOINIncompleteCallback); +#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */ + HAL_PCDEx_SetRxFiFo(&hpcd_USB_OTG_FS, 0x80); + HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 0, 0x40); + HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 1, 0x80); + } + return USBD_OK; +} + +/** + * @brief De-Initializes the low level portion of the device driver. + * @param pdev: Device handle + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_DeInit(pdev->pData); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Starts the low level portion of the device driver. + * @param pdev: Device handle + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_Start(pdev->pData); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Stops the low level portion of the device driver. + * @param pdev: Device handle + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_Stop(pdev->pData); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Opens an endpoint of the low level driver. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @param ep_type: Endpoint type + * @param ep_mps: Endpoint max packet size + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t ep_type, uint16_t ep_mps) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_EP_Open(pdev->pData, ep_addr, ep_mps, ep_type); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Closes an endpoint of the low level driver. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_EP_Close(pdev->pData, ep_addr); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Flushes an endpoint of the Low Level Driver. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_EP_Flush(pdev->pData, ep_addr); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Sets a Stall condition on an endpoint of the Low Level Driver. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_EP_SetStall(pdev->pData, ep_addr); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Clears a Stall condition on an endpoint of the Low Level Driver. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_EP_ClrStall(pdev->pData, ep_addr); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Returns Stall condition. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval Stall (1: Yes, 0: No) + */ +uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + PCD_HandleTypeDef *hpcd = (PCD_HandleTypeDef*) pdev->pData; + + if((ep_addr & 0x80) == 0x80) + { + return hpcd->IN_ep[ep_addr & 0x7F].is_stall; + } + else + { + return hpcd->OUT_ep[ep_addr & 0x7F].is_stall; + } +} + +/** + * @brief Assigns a USB address to the device. + * @param pdev: Device handle + * @param dev_addr: Device address + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_SetAddress(pdev->pData, dev_addr); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Transmits data over an endpoint. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @param pbuf: Pointer to data to be sent + * @param size: Data size + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_EP_Transmit(pdev->pData, ep_addr, pbuf, size); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Prepares an endpoint for reception. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @param pbuf: Pointer to data to be received + * @param size: Data size + * @retval USBD status + */ +USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size) +{ + HAL_StatusTypeDef hal_status = HAL_OK; + USBD_StatusTypeDef usb_status = USBD_OK; + + hal_status = HAL_PCD_EP_Receive(pdev->pData, ep_addr, pbuf, size); + + usb_status = USBD_Get_USB_Status(hal_status); + + return usb_status; +} + +/** + * @brief Returns the last transferred packet size. + * @param pdev: Device handle + * @param ep_addr: Endpoint number + * @retval Received Data Size + */ +uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr) +{ + return HAL_PCD_EP_GetRxCount((PCD_HandleTypeDef*) pdev->pData, ep_addr); +} + +/** + * @brief Send LPM message to user layer + * @param hpcd: PCD handle + * @param msg: LPM message + * @retval None + */ +void HAL_PCDEx_LPM_Callback(PCD_HandleTypeDef *hpcd, PCD_LPM_MsgTypeDef msg) +{ + switch (msg) + { + case PCD_LPM_L0_ACTIVE: + if (hpcd->Init.low_power_enable) + { + SystemClock_Config(); + + /* Reset SLEEPDEEP bit of Cortex System Control Register. */ + SCB->SCR &= (uint32_t)~((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk)); + } + __HAL_PCD_UNGATE_PHYCLOCK(hpcd); + USBD_LL_Resume(hpcd->pData); + break; + + case PCD_LPM_L1_ACTIVE: + __HAL_PCD_GATE_PHYCLOCK(hpcd); + USBD_LL_Suspend(hpcd->pData); + + /* Enter in STOP mode. */ + if (hpcd->Init.low_power_enable) + { + /* Set SLEEPDEEP bit and SleepOnExit of Cortex System Control Register. */ + SCB->SCR |= (uint32_t)((uint32_t)(SCB_SCR_SLEEPDEEP_Msk | SCB_SCR_SLEEPONEXIT_Msk)); + } + break; + } +} + +#ifdef USBD_HS_TESTMODE_ENABLE +/** + * @brief Set High speed Test mode. + * @param pdev: Device handle + * @param testmode: test mode + * @retval USBD Status + */ +USBD_StatusTypeDef USBD_LL_SetTestMode(USBD_HandleTypeDef *pdev, uint8_t testmode) +{ + UNUSED(pdev); + UNUSED(testmode); + + return USBD_OK; +} +#endif /* USBD_HS_TESTMODE_ENABLE */ + +/** + * @brief Static single allocation. + * @param size: Size of allocated memory + * @retval None + */ +void *USBD_static_malloc(uint32_t size) +{ + static uint32_t mem[(sizeof(USBD_CDC_HandleTypeDef)/4)+1];/* On 32-bit boundary */ + return mem; +} + +/** + * @brief Dummy memory free + * @param p: Pointer to allocated memory address + * @retval None + */ +void USBD_static_free(void *p) +{ + +} + +/** + * @brief Delays routine for the USB Device Library. + * @param Delay: Delay in ms + * @retval None + */ +void USBD_LL_Delay(uint32_t Delay) +{ + HAL_Delay(Delay); +} + +/** + * @brief Returns the USB status depending on the HAL status: + * @param hal_status: HAL status + * @retval USB status + */ +USBD_StatusTypeDef USBD_Get_USB_Status(HAL_StatusTypeDef hal_status) +{ + USBD_StatusTypeDef usb_status = USBD_OK; + + switch (hal_status) + { + case HAL_OK : + usb_status = USBD_OK; + break; + case HAL_ERROR : + usb_status = USBD_FAIL; + break; + case HAL_BUSY : + usb_status = USBD_BUSY; + break; + case HAL_TIMEOUT : + usb_status = USBD_FAIL; + break; + default : + usb_status = USBD_FAIL; + break; + } + return usb_status; +} diff --git a/USB_DEVICE/Target/usbd_conf.h b/USB_DEVICE/Target/usbd_conf.h new file mode 100644 index 0000000..0a2f017 --- /dev/null +++ b/USB_DEVICE/Target/usbd_conf.h @@ -0,0 +1,173 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : usbd_conf.h + * @version : v1.0_Cube + * @brief : Header for usbd_conf.c file. + ****************************************************************************** + * @attention + * + * Copyright (c) 2022 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USBD_CONF__H__ +#define __USBD_CONF__H__ + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include +#include +#include +#include "main.h" +#include "stm32f4xx.h" +#include "stm32f4xx_hal.h" + +/* USER CODE BEGIN INCLUDE */ + +/* USER CODE END INCLUDE */ + +/** @addtogroup USBD_OTG_DRIVER + * @brief Driver for Usb device. + * @{ + */ + +/** @defgroup USBD_CONF USBD_CONF + * @brief Configuration file for Usb otg low level driver. + * @{ + */ + +/** @defgroup USBD_CONF_Exported_Variables USBD_CONF_Exported_Variables + * @brief Public variables. + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_CONF_Exported_Defines USBD_CONF_Exported_Defines + * @brief Defines for configuration of the Usb device. + * @{ + */ + +/*---------- -----------*/ +#define USBD_MAX_NUM_INTERFACES 1U +/*---------- -----------*/ +#define USBD_MAX_NUM_CONFIGURATION 1U +/*---------- -----------*/ +#define USBD_MAX_STR_DESC_SIZ 512U +/*---------- -----------*/ +#define USBD_DEBUG_LEVEL 0U +/*---------- -----------*/ +#define USBD_LPM_ENABLED 1U +/*---------- -----------*/ +#define USBD_SELF_POWERED 1U + +/****************************************/ +/* #define for FS and HS identification */ +#define DEVICE_FS 0 +#define DEVICE_HS 1 + +/** + * @} + */ + +/** @defgroup USBD_CONF_Exported_Macros USBD_CONF_Exported_Macros + * @brief Aliases. + * @{ + */ +/* Memory management macros make sure to use static memory allocation */ +/** Alias for memory allocation. */ + +#define USBD_malloc (void *)USBD_static_malloc + +/** Alias for memory release. */ +#define USBD_free USBD_static_free + +/** Alias for memory set. */ +#define USBD_memset memset + +/** Alias for memory copy. */ +#define USBD_memcpy memcpy + +/** Alias for delay. */ +#define USBD_Delay HAL_Delay + +/* DEBUG macros */ + +#if (USBD_DEBUG_LEVEL > 0) +#define USBD_UsrLog(...) printf(__VA_ARGS__);\ + printf("\n"); +#else +#define USBD_UsrLog(...) +#endif /* (USBD_DEBUG_LEVEL > 0U) */ + +#if (USBD_DEBUG_LEVEL > 1) + +#define USBD_ErrLog(...) printf("ERROR: ") ;\ + printf(__VA_ARGS__);\ + printf("\n"); +#else +#define USBD_ErrLog(...) +#endif /* (USBD_DEBUG_LEVEL > 1U) */ + +#if (USBD_DEBUG_LEVEL > 2) +#define USBD_DbgLog(...) printf("DEBUG : ") ;\ + printf(__VA_ARGS__);\ + printf("\n"); +#else +#define USBD_DbgLog(...) +#endif /* (USBD_DEBUG_LEVEL > 2U) */ + +/** + * @} + */ + +/** @defgroup USBD_CONF_Exported_Types USBD_CONF_Exported_Types + * @brief Types. + * @{ + */ + +/** + * @} + */ + +/** @defgroup USBD_CONF_Exported_FunctionsPrototype USBD_CONF_Exported_FunctionsPrototype + * @brief Declaration of public functions for Usb device. + * @{ + */ + +/* Exported functions -------------------------------------------------------*/ +void *USBD_static_malloc(uint32_t size); +void USBD_static_free(void *p); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USBD_CONF__H__ */ + diff --git a/USB_HOST/App/usb_host.c b/USB_HOST/App/usb_host.c deleted file mode 100644 index 7fec99c..0000000 --- a/USB_HOST/App/usb_host.c +++ /dev/null @@ -1,128 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usb_host.c - * @version : v1.0_Cube - * @brief : This file implements the USB Host - ****************************************************************************** - * @attention - * - * Copyright (c) 2022 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ -/* USER CODE END Header */ - -/* Includes ------------------------------------------------------------------*/ - -#include "usb_host.h" -#include "usbh_core.h" -#include "usbh_cdc.h" - -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -/* USER CODE BEGIN PV */ -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE END PV */ - -/* USER CODE BEGIN PFP */ -/* Private function prototypes -----------------------------------------------*/ - -/* USER CODE END PFP */ - -/* USB Host core handle declaration */ -USBH_HandleTypeDef hUsbHostFS; -ApplicationTypeDef Appli_state = APPLICATION_IDLE; - -/* - * -- Insert your variables declaration here -- - */ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* - * user callback declaration - */ -static void USBH_UserProcess(USBH_HandleTypeDef *phost, uint8_t id); - -/* - * -- Insert your external function declaration here -- - */ -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ - -/** - * Init USB host library, add supported class and start the library - * @retval None - */ -void MX_USB_HOST_Init(void) -{ - /* USER CODE BEGIN USB_HOST_Init_PreTreatment */ - - /* USER CODE END USB_HOST_Init_PreTreatment */ - - /* Init host Library, add supported class and start the library. */ - if (USBH_Init(&hUsbHostFS, USBH_UserProcess, HOST_FS) != USBH_OK) - { - Error_Handler(); - } - if (USBH_RegisterClass(&hUsbHostFS, USBH_CDC_CLASS) != USBH_OK) - { - Error_Handler(); - } - if (USBH_Start(&hUsbHostFS) != USBH_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN USB_HOST_Init_PostTreatment */ - - /* USER CODE END USB_HOST_Init_PostTreatment */ -} - -/* - * user callback definition - */ -static void USBH_UserProcess (USBH_HandleTypeDef *phost, uint8_t id) -{ - /* USER CODE BEGIN CALL_BACK_1 */ - switch(id) - { - case HOST_USER_SELECT_CONFIGURATION: - break; - - case HOST_USER_DISCONNECTION: - Appli_state = APPLICATION_DISCONNECT; - break; - - case HOST_USER_CLASS_ACTIVE: - Appli_state = APPLICATION_READY; - break; - - case HOST_USER_CONNECTION: - Appli_state = APPLICATION_START; - break; - - default: - break; - } - /* USER CODE END CALL_BACK_1 */ -} - -/** - * @} - */ - -/** - * @} - */ - diff --git a/USB_HOST/App/usb_host.h b/USB_HOST/App/usb_host.h deleted file mode 100644 index 3fb9623..0000000 --- a/USB_HOST/App/usb_host.h +++ /dev/null @@ -1,90 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usb_host.h - * @version : v1.0_Cube - * @brief : Header for usb_host.c file. - ****************************************************************************** - * @attention - * - * Copyright (c) 2022 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ -/* USER CODE END Header */ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USB_HOST__H__ -#define __USB_HOST__H__ - -#ifdef __cplusplus - extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f4xx.h" -#include "stm32f4xx_hal.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/** @addtogroup USBH_OTG_DRIVER - * @{ - */ - -/** @defgroup USBH_HOST USBH_HOST - * @brief Host file for Usb otg low level driver. - * @{ - */ - -/** @defgroup USBH_HOST_Exported_Variables USBH_HOST_Exported_Variables - * @brief Public variables. - * @{ - */ - -/** - * @} - */ - -/** Status of the application. */ -typedef enum { - APPLICATION_IDLE = 0, - APPLICATION_START, - APPLICATION_READY, - APPLICATION_DISCONNECT -}ApplicationTypeDef; - -/** @defgroup USBH_HOST_Exported_FunctionsPrototype USBH_HOST_Exported_FunctionsPrototype - * @brief Declaration of public functions for Usb host. - * @{ - */ - -/* Exported functions -------------------------------------------------------*/ - -/** @brief USB Host initialization function. */ -void MX_USB_HOST_Init(void); - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USB_HOST__H__ */ - diff --git a/USB_HOST/Target/usbh_conf.c b/USB_HOST/Target/usbh_conf.c deleted file mode 100644 index bab92b5..0000000 --- a/USB_HOST/Target/usbh_conf.c +++ /dev/null @@ -1,548 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : Target/usbh_conf.c - * @version : v1.0_Cube - * @brief : This file implements the board support package for the USB host library - ****************************************************************************** - * @attention - * - * Copyright (c) 2022 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ -/* USER CODE END Header */ - -/* Includes ------------------------------------------------------------------*/ -#include "usbh_core.h" -#include "usbh_platform.h" - -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ - -/* USER CODE BEGIN PV */ -/* Private variables ---------------------------------------------------------*/ - -/* USER CODE END PV */ - -HCD_HandleTypeDef hhcd_USB_OTG_FS; -void Error_Handler(void); - -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* USER CODE BEGIN PFP */ -/* Private function prototypes -----------------------------------------------*/ -USBH_StatusTypeDef USBH_Get_USB_Status(HAL_StatusTypeDef hal_status); - -/* USER CODE END PFP */ - -/* Private functions ---------------------------------------------------------*/ - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ - -/******************************************************************************* - LL Driver Callbacks (HCD -> USB Host Library) -*******************************************************************************/ -/* MSP Init */ - -void HAL_HCD_MspInit(HCD_HandleTypeDef* hcdHandle) -{ - GPIO_InitTypeDef GPIO_InitStruct = {0}; - if(hcdHandle->Instance==USB_OTG_FS) - { - /* USER CODE BEGIN USB_OTG_FS_MspInit 0 */ - - /* USER CODE END USB_OTG_FS_MspInit 0 */ - - __HAL_RCC_GPIOA_CLK_ENABLE(); - /**USB_OTG_FS GPIO Configuration - PA12 ------> USB_OTG_FS_DP - PA11 ------> USB_OTG_FS_DM - PA10 ------> USB_OTG_FS_ID - PA9 ------> USB_OTG_FS_VBUS - */ - GPIO_InitStruct.Pin = USB_FS1_P_Pin|USB_FS1_N_Pin|USB_FS1_ID_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_AF10_OTG_FS; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - GPIO_InitStruct.Pin = VBUS_FS1_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(VBUS_FS1_GPIO_Port, &GPIO_InitStruct); - - /* Peripheral clock enable */ - __HAL_RCC_USB_OTG_FS_CLK_ENABLE(); - - /* Peripheral interrupt init */ - HAL_NVIC_SetPriority(OTG_FS_IRQn, 5, 0); - HAL_NVIC_EnableIRQ(OTG_FS_IRQn); - /* USER CODE BEGIN USB_OTG_FS_MspInit 1 */ - - /* USER CODE END USB_OTG_FS_MspInit 1 */ - } -} - -void HAL_HCD_MspDeInit(HCD_HandleTypeDef* hcdHandle) -{ - if(hcdHandle->Instance==USB_OTG_FS) - { - /* USER CODE BEGIN USB_OTG_FS_MspDeInit 0 */ - - /* USER CODE END USB_OTG_FS_MspDeInit 0 */ - /* Peripheral clock disable */ - __HAL_RCC_USB_OTG_FS_CLK_DISABLE(); - - /**USB_OTG_FS GPIO Configuration - PA12 ------> USB_OTG_FS_DP - PA11 ------> USB_OTG_FS_DM - PA10 ------> USB_OTG_FS_ID - PA9 ------> USB_OTG_FS_VBUS - */ - HAL_GPIO_DeInit(GPIOA, USB_FS1_P_Pin|USB_FS1_N_Pin|USB_FS1_ID_Pin|VBUS_FS1_Pin); - - /* Peripheral interrupt Deinit*/ - HAL_NVIC_DisableIRQ(OTG_FS_IRQn); - - /* USER CODE BEGIN USB_OTG_FS_MspDeInit 1 */ - - /* USER CODE END USB_OTG_FS_MspDeInit 1 */ - } -} - -/** - * @brief SOF callback. - * @param hhcd: HCD handle - * @retval None - */ -void HAL_HCD_SOF_Callback(HCD_HandleTypeDef *hhcd) -{ - USBH_LL_IncTimer(hhcd->pData); -} - -/** - * @brief SOF callback. - * @param hhcd: HCD handle - * @retval None - */ -void HAL_HCD_Connect_Callback(HCD_HandleTypeDef *hhcd) -{ - USBH_LL_Connect(hhcd->pData); -} - -/** - * @brief SOF callback. - * @param hhcd: HCD handle - * @retval None - */ -void HAL_HCD_Disconnect_Callback(HCD_HandleTypeDef *hhcd) -{ - USBH_LL_Disconnect(hhcd->pData); -} - -/** - * @brief Notify URB state change callback. - * @param hhcd: HCD handle - * @param chnum: channel number - * @param urb_state: state - * @retval None - */ -void HAL_HCD_HC_NotifyURBChange_Callback(HCD_HandleTypeDef *hhcd, uint8_t chnum, HCD_URBStateTypeDef urb_state) -{ - /* To be used with OS to sync URB state with the global state machine */ -#if (USBH_USE_OS == 1) - USBH_LL_NotifyURBChange(hhcd->pData); -#endif -} -/** -* @brief Port Port Enabled callback. - * @param hhcd: HCD handle - * @retval None - */ -void HAL_HCD_PortEnabled_Callback(HCD_HandleTypeDef *hhcd) -{ - USBH_LL_PortEnabled(hhcd->pData); -} - -/** - * @brief Port Port Disabled callback. - * @param hhcd: HCD handle - * @retval None - */ -void HAL_HCD_PortDisabled_Callback(HCD_HandleTypeDef *hhcd) -{ - USBH_LL_PortDisabled(hhcd->pData); -} - -/******************************************************************************* - LL Driver Interface (USB Host Library --> HCD) -*******************************************************************************/ - -/** - * @brief Initialize the low level portion of the host driver. - * @param phost: Host handle - * @retval USBH status - */ -USBH_StatusTypeDef USBH_LL_Init(USBH_HandleTypeDef *phost) -{ - /* Init USB_IP */ - if (phost->id == HOST_FS) { - /* Link the driver to the stack. */ - hhcd_USB_OTG_FS.pData = phost; - phost->pData = &hhcd_USB_OTG_FS; - - hhcd_USB_OTG_FS.Instance = USB_OTG_FS; - hhcd_USB_OTG_FS.Init.Host_channels = 8; - hhcd_USB_OTG_FS.Init.speed = HCD_SPEED_FULL; - hhcd_USB_OTG_FS.Init.dma_enable = DISABLE; - hhcd_USB_OTG_FS.Init.phy_itface = HCD_PHY_EMBEDDED; - hhcd_USB_OTG_FS.Init.Sof_enable = DISABLE; - if (HAL_HCD_Init(&hhcd_USB_OTG_FS) != HAL_OK) - { - Error_Handler( ); - } - - USBH_LL_SetTimer(phost, HAL_HCD_GetCurrentFrame(&hhcd_USB_OTG_FS)); - } - return USBH_OK; -} - -/** - * @brief De-Initialize the low level portion of the host driver. - * @param phost: Host handle - * @retval USBH status - */ -USBH_StatusTypeDef USBH_LL_DeInit(USBH_HandleTypeDef *phost) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBH_StatusTypeDef usb_status = USBH_OK; - - hal_status = HAL_HCD_DeInit(phost->pData); - - usb_status = USBH_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Start the low level portion of the host driver. - * @param phost: Host handle - * @retval USBH status - */ -USBH_StatusTypeDef USBH_LL_Start(USBH_HandleTypeDef *phost) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBH_StatusTypeDef usb_status = USBH_OK; - - hal_status = HAL_HCD_Start(phost->pData); - - usb_status = USBH_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Stop the low level portion of the host driver. - * @param phost: Host handle - * @retval USBH status - */ -USBH_StatusTypeDef USBH_LL_Stop(USBH_HandleTypeDef *phost) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBH_StatusTypeDef usb_status = USBH_OK; - - hal_status = HAL_HCD_Stop(phost->pData); - - usb_status = USBH_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Return the USB host speed from the low level driver. - * @param phost: Host handle - * @retval USBH speeds - */ -USBH_SpeedTypeDef USBH_LL_GetSpeed(USBH_HandleTypeDef *phost) -{ - USBH_SpeedTypeDef speed = USBH_SPEED_FULL; - - switch (HAL_HCD_GetCurrentSpeed(phost->pData)) - { - case 0 : - speed = USBH_SPEED_HIGH; - break; - - case 1 : - speed = USBH_SPEED_FULL; - break; - - case 2 : - speed = USBH_SPEED_LOW; - break; - - default: - speed = USBH_SPEED_FULL; - break; - } - return speed; -} - -/** - * @brief Reset the Host port of the low level driver. - * @param phost: Host handle - * @retval USBH status - */ -USBH_StatusTypeDef USBH_LL_ResetPort(USBH_HandleTypeDef *phost) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBH_StatusTypeDef usb_status = USBH_OK; - - hal_status = HAL_HCD_ResetPort(phost->pData); - - usb_status = USBH_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Return the last transferred packet size. - * @param phost: Host handle - * @param pipe: Pipe index - * @retval Packet size - */ -uint32_t USBH_LL_GetLastXferSize(USBH_HandleTypeDef *phost, uint8_t pipe) -{ - return HAL_HCD_HC_GetXferCount(phost->pData, pipe); -} - -/** - * @brief Open a pipe of the low level driver. - * @param phost: Host handle - * @param pipe_num: Pipe index - * @param epnum: Endpoint number - * @param dev_address: Device USB address - * @param speed: Device Speed - * @param ep_type: Endpoint type - * @param mps: Endpoint max packet size - * @retval USBH status - */ -USBH_StatusTypeDef USBH_LL_OpenPipe(USBH_HandleTypeDef *phost, uint8_t pipe_num, uint8_t epnum, - uint8_t dev_address, uint8_t speed, uint8_t ep_type, uint16_t mps) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBH_StatusTypeDef usb_status = USBH_OK; - - hal_status = HAL_HCD_HC_Init(phost->pData, pipe_num, epnum, - dev_address, speed, ep_type, mps); - - usb_status = USBH_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Close a pipe of the low level driver. - * @param phost: Host handle - * @param pipe: Pipe index - * @retval USBH status - */ -USBH_StatusTypeDef USBH_LL_ClosePipe(USBH_HandleTypeDef *phost, uint8_t pipe) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBH_StatusTypeDef usb_status = USBH_OK; - - hal_status = HAL_HCD_HC_Halt(phost->pData, pipe); - - usb_status = USBH_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Submit a new URB to the low level driver. - * @param phost: Host handle - * @param pipe: Pipe index - * This parameter can be a value from 1 to 15 - * @param direction : Channel number - * This parameter can be one of the these values: - * 0 : Output - * 1 : Input - * @param ep_type : Endpoint Type - * This parameter can be one of the these values: - * @arg EP_TYPE_CTRL: Control type - * @arg EP_TYPE_ISOC: Isochrounous type - * @arg EP_TYPE_BULK: Bulk type - * @arg EP_TYPE_INTR: Interrupt type - * @param token : Endpoint Type - * This parameter can be one of the these values: - * @arg 0: PID_SETUP - * @arg 1: PID_DATA - * @param pbuff : pointer to URB data - * @param length : Length of URB data - * @param do_ping : activate do ping protocol (for high speed only) - * This parameter can be one of the these values: - * 0 : do ping inactive - * 1 : do ping active - * @retval Status - */ -USBH_StatusTypeDef USBH_LL_SubmitURB(USBH_HandleTypeDef *phost, uint8_t pipe, uint8_t direction, - uint8_t ep_type, uint8_t token, uint8_t *pbuff, uint16_t length, - uint8_t do_ping) -{ - HAL_StatusTypeDef hal_status = HAL_OK; - USBH_StatusTypeDef usb_status = USBH_OK; - - hal_status = HAL_HCD_HC_SubmitRequest(phost->pData, pipe, direction , - ep_type, token, pbuff, length, - do_ping); - usb_status = USBH_Get_USB_Status(hal_status); - - return usb_status; -} - -/** - * @brief Get a URB state from the low level driver. - * @param phost: Host handle - * @param pipe: Pipe index - * This parameter can be a value from 1 to 15 - * @retval URB state - * This parameter can be one of the these values: - * @arg URB_IDLE - * @arg URB_DONE - * @arg URB_NOTREADY - * @arg URB_NYET - * @arg URB_ERROR - * @arg URB_STALL - */ -USBH_URBStateTypeDef USBH_LL_GetURBState(USBH_HandleTypeDef *phost, uint8_t pipe) -{ - return (USBH_URBStateTypeDef)HAL_HCD_HC_GetURBState (phost->pData, pipe); -} - -/** - * @brief Drive VBUS. - * @param phost: Host handle - * @param state : VBUS state - * This parameter can be one of the these values: - * 0 : VBUS Inactive - * 1 : VBUS Active - * @retval Status - */ -USBH_StatusTypeDef USBH_LL_DriverVBUS(USBH_HandleTypeDef *phost, uint8_t state) -{ - if (phost->id == HOST_FS) { - MX_DriverVbusFS(state); - } - - /* USER CODE BEGIN 0 */ - - /* USER CODE END 0*/ - - HAL_Delay(200); - return USBH_OK; -} - -/** - * @brief Set toggle for a pipe. - * @param phost: Host handle - * @param pipe: Pipe index - * @param toggle: toggle (0/1) - * @retval Status - */ -USBH_StatusTypeDef USBH_LL_SetToggle(USBH_HandleTypeDef *phost, uint8_t pipe, uint8_t toggle) -{ - HCD_HandleTypeDef *pHandle; - pHandle = phost->pData; - - if(pHandle->hc[pipe].ep_is_in) - { - pHandle->hc[pipe].toggle_in = toggle; - } - else - { - pHandle->hc[pipe].toggle_out = toggle; - } - - return USBH_OK; -} - -/** - * @brief Return the current toggle of a pipe. - * @param phost: Host handle - * @param pipe: Pipe index - * @retval toggle (0/1) - */ -uint8_t USBH_LL_GetToggle(USBH_HandleTypeDef *phost, uint8_t pipe) -{ - uint8_t toggle = 0; - HCD_HandleTypeDef *pHandle; - pHandle = phost->pData; - - if(pHandle->hc[pipe].ep_is_in) - { - toggle = pHandle->hc[pipe].toggle_in; - } - else - { - toggle = pHandle->hc[pipe].toggle_out; - } - return toggle; -} - -/** - * @brief Delay routine for the USB Host Library - * @param Delay: Delay in ms - * @retval None - */ -void USBH_Delay(uint32_t Delay) -{ - HAL_Delay(Delay); -} - -/** - * @brief Returns the USB status depending on the HAL status: - * @param hal_status: HAL status - * @retval USB status - */ -USBH_StatusTypeDef USBH_Get_USB_Status(HAL_StatusTypeDef hal_status) -{ - USBH_StatusTypeDef usb_status = USBH_OK; - - switch (hal_status) - { - case HAL_OK : - usb_status = USBH_OK; - break; - case HAL_ERROR : - usb_status = USBH_FAIL; - break; - case HAL_BUSY : - usb_status = USBH_BUSY; - break; - case HAL_TIMEOUT : - usb_status = USBH_FAIL; - break; - default : - usb_status = USBH_FAIL; - break; - } - return usb_status; -} - diff --git a/USB_HOST/Target/usbh_conf.h b/USB_HOST/Target/usbh_conf.h deleted file mode 100644 index fd73fe5..0000000 --- a/USB_HOST/Target/usbh_conf.h +++ /dev/null @@ -1,194 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : Target/usbh_conf.h - * @version : v1.0_Cube - * @brief : Header for usbh_conf.c file. - ****************************************************************************** - * @attention - * - * Copyright (c) 2022 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ -/* USER CODE END Header */ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USBH_CONF__H__ -#define __USBH_CONF__H__ -#ifdef __cplusplus - extern "C" { -#endif -/* Includes ------------------------------------------------------------------*/ - -#include -#include -#include -#include "main.h" - -#include "stm32f4xx.h" -#include "stm32f4xx_hal.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/** @addtogroup STM32_USB_HOST_LIBRARY - * @{ - */ - -/** @defgroup USBH_CONF - * @brief usb host low level driver configuration file - * @{ - */ - -/** @defgroup USBH_CONF_Exported_Variables USBH_CONF_Exported_Variables - * @brief Public variables. - * @{ - */ - -/** - * @} - */ - -/** @defgroup USBH_CONF_Exported_Defines USBH_CONF_Exported_Defines - * @brief Defines for configuration of the Usb host. - * @{ - */ - -/*---------- -----------*/ -#define USBH_MAX_NUM_ENDPOINTS 2U - -/*---------- -----------*/ -#define USBH_MAX_NUM_INTERFACES 2U - -/*---------- -----------*/ -#define USBH_MAX_NUM_CONFIGURATION 1U - -/*---------- -----------*/ -#define USBH_KEEP_CFG_DESCRIPTOR 1U - -/*---------- -----------*/ -#define USBH_MAX_NUM_SUPPORTED_CLASS 1U - -/*---------- -----------*/ -#define USBH_MAX_SIZE_CONFIGURATION 256U - -/*---------- -----------*/ -#define USBH_MAX_DATA_BUFFER 512U - -/*---------- -----------*/ -#define USBH_DEBUG_LEVEL 0U - -/*---------- -----------*/ -#define USBH_USE_OS 1U - -/****************************************/ -/* #define for FS and HS identification */ -#define HOST_HS 0 -#define HOST_FS 1 - -#if (USBH_USE_OS == 1) - #include "cmsis_os.h" - #define USBH_PROCESS_PRIO osPriorityNormal - #define USBH_PROCESS_STACK_SIZE ((uint16_t)128) -#endif /* (USBH_USE_OS == 1) */ - -/** - * @} - */ - -/** @defgroup USBH_CONF_Exported_Macros USBH_CONF_Exported_Macros - * @brief Aliases. - * @{ - */ - -/* Memory management macros */ - -/** Alias for memory allocation. */ -#define USBH_malloc malloc - -/** Alias for memory release. */ -#define USBH_free free - -/** Alias for memory set. */ -#define USBH_memset memset - -/** Alias for memory copy. */ -#define USBH_memcpy memcpy - -/* DEBUG macros */ - -#if (USBH_DEBUG_LEVEL > 0U) -#define USBH_UsrLog(...) do { \ - printf(__VA_ARGS__); \ - printf("\n"); \ -} while (0) -#else -#define USBH_UsrLog(...) do {} while (0) -#endif - -#if (USBH_DEBUG_LEVEL > 1U) - -#define USBH_ErrLog(...) do { \ - printf("ERROR: ") ; \ - printf(__VA_ARGS__); \ - printf("\n"); \ -} while (0) -#else -#define USBH_ErrLog(...) do {} while (0) -#endif - -#if (USBH_DEBUG_LEVEL > 2U) -#define USBH_DbgLog(...) do { \ - printf("DEBUG : ") ; \ - printf(__VA_ARGS__); \ - printf("\n"); \ -} while (0) -#else -#define USBH_DbgLog(...) do {} while (0) -#endif - -/** - * @} - */ - -/** @defgroup USBH_CONF_Exported_Types USBH_CONF_Exported_Types - * @brief Types. - * @{ - */ - -/** - * @} - */ - -/** @defgroup USBH_CONF_Exported_FunctionsPrototype USBH_CONF_Exported_FunctionsPrototype - * @brief Declaration of public functions for Usb host. - * @{ - */ - -/* Exported functions -------------------------------------------------------*/ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __USBH_CONF__H__ */ - diff --git a/USB_HOST/Target/usbh_platform.c b/USB_HOST/Target/usbh_platform.c deleted file mode 100644 index e76be14..0000000 --- a/USB_HOST/Target/usbh_platform.c +++ /dev/null @@ -1,52 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : usbh_platform.c - - * @brief : This file implements the USB platform - ****************************************************************************** - * @attention - * - * Copyright (c) 2022 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ -/* USER CODE END Header */ - -/* Includes ------------------------------------------------------------------*/ -#include "usbh_platform.h" - -/* USER CODE BEGIN INCLUDE */ - -/* USER CODE END INCLUDE */ - -/** - * @brief Drive VBUS. - * @param state : VBUS state - * This parameter can be one of the these values: - * - 1 : VBUS Active - * - 0 : VBUS Inactive - */ -void MX_DriverVbusFS(uint8_t state) -{ - uint8_t data = state; - /* USER CODE BEGIN PREPARE_GPIO_DATA_VBUS_FS */ - if(state == 0) - { - /* Drive high Charge pump */ - data = GPIO_PIN_RESET; - } - else - { - /* Drive low Charge pump */ - data = GPIO_PIN_SET; - } - /* USER CODE END PREPARE_GPIO_DATA_VBUS_FS */ - HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,(GPIO_PinState)data); -} - diff --git a/eez-flow-template-stm32f469i-disco.ioc b/eez-flow-template-stm32f469i-disco.ioc index 44b4c84..8a7b642 100644 --- a/eez-flow-template-stm32f469i-disco.ioc +++ b/eez-flow-template-stm32f469i-disco.ioc @@ -73,12 +73,12 @@ FMC.SelfRefreshTime1=4 FMC.WriteRecoveryTime1=3 FREERTOS.IPParameters=Tasks01,configUSE_RECURSIVE_MUTEXES,configUSE_COUNTING_SEMAPHORES,configUSE_APPLICATION_TASK_TAG,configTOTAL_HEAP_SIZE,configUSE_IDLE_HOOK,configUSE_MALLOC_FAILED_HOOK,configCHECK_FOR_STACK_OVERFLOW,configUSE_NEWLIB_REENTRANT FREERTOS.Tasks01=defaultTask,24,4096,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL -FREERTOS.configCHECK_FOR_STACK_OVERFLOW=2 -FREERTOS.configTOTAL_HEAP_SIZE=32768 +FREERTOS.configCHECK_FOR_STACK_OVERFLOW=0 +FREERTOS.configTOTAL_HEAP_SIZE=131072 FREERTOS.configUSE_APPLICATION_TASK_TAG=1 FREERTOS.configUSE_COUNTING_SEMAPHORES=1 -FREERTOS.configUSE_IDLE_HOOK=1 -FREERTOS.configUSE_MALLOC_FAILED_HOOK=1 +FREERTOS.configUSE_IDLE_HOOK=0 +FREERTOS.configUSE_MALLOC_FAILED_HOOK=0 FREERTOS.configUSE_NEWLIB_REENTRANT=1 FREERTOS.configUSE_RECURSIVE_MUTEXES=1 File.Version=6 @@ -113,7 +113,7 @@ Mcu.IP14=SYS Mcu.IP15=TIM1 Mcu.IP16=USART3 Mcu.IP17=USART6 -Mcu.IP18=USB_HOST +Mcu.IP18=USB_DEVICE Mcu.IP19=USB_OTG_FS Mcu.IP2=DSIHOST Mcu.IP3=FATFS @@ -151,7 +151,7 @@ Mcu.Pin117=VP_LTDC_DSIMode Mcu.Pin118=VP_SYS_VS_tim6 Mcu.Pin119=VP_TIM1_VS_ClockSourceINT Mcu.Pin12=PB9 -Mcu.Pin120=VP_USB_HOST_VS_USB_HOST_CDC_FS +Mcu.Pin120=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS Mcu.Pin13=PB7 Mcu.Pin14=PB6 Mcu.Pin15=PG15 @@ -253,24 +253,27 @@ Mcu.UserConstants= Mcu.UserName=STM32F469NIHx MxCube.Version=6.6.0 MxDb.Version=DB.6.0.60 -NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.DMA2D_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true -NVIC.DSI_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true -NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false +NVIC.DMA2D_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true +NVIC.DSI_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false NVIC.ForceEnableDMAVector=true -NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.LTDC_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true -NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -NVIC.OTG_FS_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true -NVIC.PendSV_IRQn=true\:15\:0\:false\:false\:false\:false\:false\:false +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false +NVIC.LTDC_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false +NVIC.OTG_FS_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true +NVIC.PendSV_IRQn=true\:15\:0\:false\:false\:false\:false\:false\:false\:false NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 -NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false -NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:false\:true\:false\:false -NVIC.TIM6_DAC_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false\:false +NVIC.SavedPendsvIrqHandlerGenerated=true +NVIC.SavedSvcallIrqHandlerGenerated=true +NVIC.SavedSystickIrqHandlerGenerated=true +NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:false\:true\:false\:false\:false +NVIC.TIM6_DAC_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true\:true NVIC.TimeBase=TIM6_DAC_IRQn NVIC.TimeBaseIP=TIM6 -NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false PA0/WKUP.GPIOParameters=GPIO_Label PA0/WKUP.GPIO_Label=WAKEUP [B2] PA0/WKUP.Locked=true @@ -289,7 +292,7 @@ PA11.GPIO_Mode=GPIO_MODE_AF_PP PA11.GPIO_PuPd=GPIO_NOPULL PA11.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH PA11.Locked=true -PA11.Mode=Host_Only +PA11.Mode=Device_Only PA11.Signal=USB_OTG_FS_DM PA12.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode PA12.GPIO_Label=USB_FS1_P @@ -297,7 +300,7 @@ PA12.GPIO_Mode=GPIO_MODE_AF_PP PA12.GPIO_PuPd=GPIO_NOPULL PA12.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH PA12.Locked=true -PA12.Mode=Host_Only +PA12.Mode=Device_Only PA12.Signal=USB_OTG_FS_DP PA13.GPIOParameters=GPIO_Label PA13.GPIO_Label=SWDIO @@ -1039,7 +1042,7 @@ ProjectManager.StackSize=0x400 ProjectManager.TargetToolchain=STM32CubeIDE ProjectManager.ToolChainLocation= ProjectManager.UnderRoot=true -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_CRC_Init-CRC-false-HAL-true,4-MX_DMA2D_Init-DMA2D-false-HAL-true,5-MX_DSIHOST_DSI_Init-DSIHOST-false-HAL-true,6-MX_FMC_Init-FMC-false-HAL-true,7-MX_I2C1_Init-I2C1-false-HAL-true,8-MX_I2C2_Init-I2C2-false-HAL-true,9-MX_LTDC_Init-LTDC-false-HAL-true,10-MX_QUADSPI_Init-QUADSPI-false-HAL-true,11-MX_SAI1_Init-SAI1-false-HAL-true,12-MX_SDIO_SD_Init-SDIO-false-HAL-true,13-MX_TIM1_Init-TIM1-false-HAL-true,14-MX_USART3_UART_Init-USART3-false-HAL-true,15-MX_USART6_UART_Init-USART6-false-HAL-true,16-MX_FATFS_Init-FATFS-false-HAL-false,17-MX_USB_HOST_Init-USB_HOST-false-HAL-false +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_CRC_Init-CRC-false-HAL-true,4-MX_DMA2D_Init-DMA2D-false-HAL-true,5-MX_DSIHOST_DSI_Init-DSIHOST-false-HAL-true,6-MX_FMC_Init-FMC-false-HAL-true,7-MX_I2C1_Init-I2C1-false-HAL-true,8-MX_I2C2_Init-I2C2-false-HAL-true,9-MX_LTDC_Init-LTDC-false-HAL-true,10-MX_QUADSPI_Init-QUADSPI-false-HAL-true,11-MX_SAI1_Init-SAI1-false-HAL-true,12-MX_SDIO_SD_Init-SDIO-false-HAL-true,13-MX_TIM1_Init-TIM1-false-HAL-true,14-MX_USART3_UART_Init-USART3-false-HAL-true,15-MX_USART6_UART_Init-USART6-false-HAL-true,16-MX_FATFS_Init-FATFS-false-HAL-false,17-MX_USB_OTG_FS_PCD_Init-USB_OTG_FS-false-HAL-true QUADSPI.ChipSelectHighTime=QSPI_CS_HIGH_TIME_5_CYCLE QUADSPI.ClockPrescaler=1 QUADSPI.FifoThreshold=1 @@ -1061,17 +1064,18 @@ RCC.FCLKCortexFreq_Value=180000000 RCC.FamilyName=M RCC.HCLKFreq_Value=180000000 RCC.HSE_VALUE=8000000 -RCC.I2SFreq_Value=96000000 -RCC.IPParameters=AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,DSIFreq_Value,DSITXEscFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,I2SFreq_Value,LCDTFTFreq_Value,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLDSIFreq_Value,PLLDSIIDF,PLLDSINDIV,PLLDSIVCOFreq_Value,PLLI2SQCLKFreq_Value,PLLI2SRCLKFreq_Value,PLLM,PLLN,PLLQ,PLLQCLKFreq_Value,PLLR,PLLRCLKFreq_Value,PLLRFreq_Value,PLLSAIP,PLLSAIPCLKFreq_Value,PLLSAIQ,PLLSAIQCLKFreq_Value,PLLSAIRCLKFreq_Value,PLLSAIRDiv,RTCFreq_Value,RTCHSEDivFreq_Value,SAIAFreq_Value,SAIBFreq_Value,SDIOFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USBCLockSelection,USBFreq_Value,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value -RCC.LCDTFTFreq_Value=24000000 +RCC.I2SFreq_Value=192000000 +RCC.IPParameters=AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,DSIFreq_Value,DSITXEscFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,I2SFreq_Value,LCDTFTFreq_Value,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLDSIFreq_Value,PLLDSIIDF,PLLDSINDIV,PLLDSIVCOFreq_Value,PLLI2SN,PLLI2SQCLKFreq_Value,PLLI2SRCLKFreq_Value,PLLM,PLLN,PLLQ,PLLQCLKFreq_Value,PLLR,PLLRCLKFreq_Value,PLLRFreq_Value,PLLSAIN,PLLSAIP,PLLSAIPCLKFreq_Value,PLLSAIQ,PLLSAIQCLKFreq_Value,PLLSAIRCLKFreq_Value,PLLSAIRDiv,RTCFreq_Value,RTCHSEDivFreq_Value,SAIAFreq_Value,SAIBFreq_Value,SDIOFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,USBCLockSelection,USBFreq_Value,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAIOutputFreq_Value +RCC.LCDTFTFreq_Value=36000000 RCC.MCO2PinFreq_Value=180000000 RCC.PLLCLKFreq_Value=180000000 RCC.PLLDSIFreq_Value=500000000 RCC.PLLDSIIDF=DSI_PLL_IN_DIV2 RCC.PLLDSINDIV=125 RCC.PLLDSIVCOFreq_Value=1000000000 -RCC.PLLI2SQCLKFreq_Value=48000000 -RCC.PLLI2SRCLKFreq_Value=96000000 +RCC.PLLI2SN=384 +RCC.PLLI2SQCLKFreq_Value=96000000 +RCC.PLLI2SRCLKFreq_Value=192000000 RCC.PLLM=8 RCC.PLLN=360 RCC.PLLQ=7 @@ -1079,30 +1083,31 @@ RCC.PLLQCLKFreq_Value=51428571.428571425 RCC.PLLR=6 RCC.PLLRCLKFreq_Value=60000000 RCC.PLLRFreq_Value=60000000 -RCC.PLLSAIP=RCC_PLLSAIP_DIV4 +RCC.PLLSAIN=288 +RCC.PLLSAIP=RCC_PLLSAIP_DIV6 RCC.PLLSAIPCLKFreq_Value=48000000 RCC.PLLSAIQ=2 -RCC.PLLSAIQCLKFreq_Value=96000000 -RCC.PLLSAIRCLKFreq_Value=96000000 +RCC.PLLSAIQCLKFreq_Value=144000000 +RCC.PLLSAIRCLKFreq_Value=144000000 RCC.PLLSAIRDiv=RCC_PLLSAIDIVR_4 RCC.RTCFreq_Value=32000 RCC.RTCHSEDivFreq_Value=4000000 -RCC.SAIAFreq_Value=96000000 -RCC.SAIBFreq_Value=96000000 +RCC.SAIAFreq_Value=144000000 +RCC.SAIBFreq_Value=144000000 RCC.SDIOFreq_Value=48000000 RCC.SYSCLKFreq_VALUE=180000000 RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK RCC.USBCLockSelection=RCC_CLK48CLKSOURCE_PLLSAIP RCC.USBFreq_Value=48000000 -RCC.VCOI2SOutputFreq_Value=192000000 +RCC.VCOI2SOutputFreq_Value=384000000 RCC.VCOInputFreq_Value=1000000 RCC.VCOOutputFreq_Value=360000000 -RCC.VCOSAIOutputFreq_Value=192000000 -SAI1.ErrorAudioFreq-SAI_A_MasterWithClock=-2.34 % +RCC.VCOSAIOutputFreq_Value=288000000 +SAI1.ErrorAudioFreq-SAI_A_MasterWithClock=46.48 % SAI1.IPParameters=Instance-SAI_A_MasterWithClock,MClockEnable-SAI_A_MasterWithClock,RealAudioFreq-SAI_A_MasterWithClock,ErrorAudioFreq-SAI_A_MasterWithClock,VirtualMode-SAI_A_MasterWithClock,Synchro-SAI_A_MasterWithClock SAI1.Instance-SAI_A_MasterWithClock=SAI$Index_Block_A SAI1.MClockEnable-SAI_A_MasterWithClock=SAI_MASTERCLOCK_ENABLE -SAI1.RealAudioFreq-SAI_A_MasterWithClock=187.5 KHz +SAI1.RealAudioFreq-SAI_A_MasterWithClock=281.25 KHz SAI1.Synchro-SAI_A_MasterWithClock=SAI_ASYNCHRONOUS SAI1.VirtualMode-SAI_A_MasterWithClock=VM_MASTER SDIO.IPParameters=WideMode @@ -1225,23 +1230,12 @@ USART3.IPParameters=VirtualMode USART3.VirtualMode=VM_ASYNC USART6.IPParameters=VirtualMode USART6.VirtualMode=VM_ASYNC -USB_HOST.BSP.number=1 -USB_HOST.IPParameters=VirtualModeFS,USBH_HandleTypeDef-CDC_FS -USB_HOST.USBH_HandleTypeDef-CDC_FS=hUsbHostFS -USB_HOST.VirtualModeFS=Cdc -USB_HOST0.BSP.STBoard=false -USB_HOST0.BSP.api=UnknownBspDriver -USB_HOST0.BSP.component= -USB_HOST0.BSP.condition= -USB_HOST0.BSP.instance=PB2/BOOT1 -USB_HOST0.BSP.ip=GPIO -USB_HOST0.BSP.mode=Output -USB_HOST0.BSP.name=Drive_VBUS_FS -USB_HOST0.BSP.semaphore= -USB_HOST0.BSP.solution=PB2/BOOT1 -USB_OTG_FS.IPParameters=phy_itface,VirtualMode -USB_OTG_FS.VirtualMode=Host_Only -USB_OTG_FS.phy_itface=HCD_PHY_EMBEDDED +USB_DEVICE.CLASS_NAME_FS=CDC +USB_DEVICE.IPParameters=VirtualMode-CDC_FS,VirtualModeFS,CLASS_NAME_FS +USB_DEVICE.VirtualMode-CDC_FS=Cdc +USB_DEVICE.VirtualModeFS=Cdc_FS +USB_OTG_FS.IPParameters=VirtualMode +USB_OTG_FS.VirtualMode=Device_Only VP_CRC_VS_CRC.Mode=CRC_Activate VP_CRC_VS_CRC.Signal=CRC_VS_CRC VP_DMA2D_VS_DMA2D.Mode=DMA2D_Activate @@ -1256,8 +1250,8 @@ VP_SYS_VS_tim6.Mode=TIM6 VP_SYS_VS_tim6.Signal=SYS_VS_tim6 VP_TIM1_VS_ClockSourceINT.Mode=Internal VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT -VP_USB_HOST_VS_USB_HOST_CDC_FS.Mode=CDC_FS -VP_USB_HOST_VS_USB_HOST_CDC_FS.Signal=USB_HOST_VS_USB_HOST_CDC_FS +VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Mode=CDC_FS +VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS.Signal=USB_DEVICE_VS_USB_DEVICE_CDC_FS board=STM32F469I-DISCO boardIOC=true isbadioc=false