diff --git a/.github/workflows/micropython.yml b/.github/workflows/micropython.yml index c18de168..9a486089 100644 --- a/.github/workflows/micropython.yml +++ b/.github/workflows/micropython.yml @@ -86,6 +86,8 @@ jobs: board: PICO_W - name: cosmic_unicorn board: PICO_W + - name: stellar_unicorn + board: PICO_W - name: inky_frame board: PICO_W_INKY patch: true diff --git a/common/pimoroni_common.hpp b/common/pimoroni_common.hpp index 1f61712a..568ce3d8 100644 --- a/common/pimoroni_common.hpp +++ b/common/pimoroni_common.hpp @@ -78,7 +78,7 @@ namespace pimoroni { return to_ms_since_boot(get_absolute_time()); } - constexpr uint8_t GAMMA_8BIT[256] = { + inline constexpr uint8_t GAMMA_8BIT[256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, @@ -98,7 +98,7 @@ namespace pimoroni { /* Moved from pico_unicorn.cpp v = (uint16_t)(powf((float)(n) / 255.0f, 2.2) * 16383.0f + 0.5f) */ - constexpr uint16_t GAMMA_14BIT[256] = { + inline constexpr uint16_t GAMMA_14BIT[256] = { 0, 0, 0, 1, 2, 3, 4, 6, 8, 10, 13, 16, 20, 23, 28, 32, 37, 42, 48, 54, 61, 67, 75, 82, 90, 99, 108, 117, 127, 137, 148, 159, 170, 182, 195, 207, 221, 234, 249, 263, 278, 294, 310, 326, 343, 361, 379, 397, diff --git a/drivers/analog/analog.hpp b/drivers/analog/analog.hpp index 7f321b0d..d51795a8 100644 --- a/drivers/analog/analog.hpp +++ b/drivers/analog/analog.hpp @@ -11,7 +11,7 @@ namespace pimoroni { public: Analog(uint pin, float amplifier_gain = 1.0f, float resistor = 0.0f, float offset = 0.0f) : pin(pin), amplifier_gain(amplifier_gain), resistor(resistor), offset(offset) { - adc_init(); + if (!(adc_hw->cs & ADC_CS_EN_BITS)) adc_init(); //Make sure GPIO is high-impedance, no pullups etc adc_gpio_init(pin); diff --git a/drivers/rgbled/rgbled.cmake b/drivers/rgbled/rgbled.cmake index a78e1a88..65e7ea15 100644 --- a/drivers/rgbled/rgbled.cmake +++ b/drivers/rgbled/rgbled.cmake @@ -7,4 +7,4 @@ target_sources(rgbled INTERFACE target_include_directories(rgbled INTERFACE ${CMAKE_CURRENT_LIST_DIR}) # Pull in pico libraries that we need -target_link_libraries(rgbled INTERFACE pico_stdlib hardware_pwm) \ No newline at end of file +target_link_libraries(rgbled INTERFACE pico_stdlib hardware_pwm) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 557ae24b..d32cc949 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -61,3 +61,4 @@ add_subdirectory(encoder) add_subdirectory(galactic_unicorn) add_subdirectory(gfx_pack) add_subdirectory(cosmic_unicorn) +add_subdirectory(stellar_unicorn) diff --git a/examples/stellar_unicorn/CMakeLists.txt b/examples/stellar_unicorn/CMakeLists.txt new file mode 100644 index 00000000..311bbf8f --- /dev/null +++ b/examples/stellar_unicorn/CMakeLists.txt @@ -0,0 +1,84 @@ +add_executable( + stellar_rainbow_text + stellar_rainbow_text.cpp +) + +# Pull in pico libraries that we need +target_link_libraries(stellar_rainbow_text pico_stdlib hardware_pio hardware_adc hardware_dma pico_graphics stellar_unicorn) +pico_enable_stdio_usb(stellar_rainbow_text 1) + +# create map/bin/hex file etc. +pico_add_extra_outputs(stellar_rainbow_text) + + + +add_executable( + stellar_rainbow + stellar_rainbow.cpp +) + +# Pull in pico libraries that we need +target_link_libraries(stellar_rainbow pico_stdlib hardware_pio hardware_adc hardware_dma pico_graphics stellar_unicorn) +pico_enable_stdio_usb(stellar_rainbow 1) + +# create map/bin/hex file etc. +pico_add_extra_outputs(stellar_rainbow) + + + + +add_executable( + stellar_eighties_super_computer + stellar_eighties_super_computer.cpp +) + +# Pull in pico libraries that we need +target_link_libraries(stellar_eighties_super_computer pico_stdlib hardware_pio hardware_adc hardware_dma pico_graphics stellar_unicorn) +pico_enable_stdio_usb(stellar_eighties_super_computer 1) + +# create map/bin/hex file etc. +pico_add_extra_outputs(stellar_eighties_super_computer) + + + + +add_executable( + stellar_fire_effect + stellar_fire_effect.cpp +) + +# Pull in pico libraries that we need +target_link_libraries(stellar_fire_effect pico_stdlib hardware_pio hardware_adc hardware_dma pico_graphics stellar_unicorn) +pico_enable_stdio_usb(stellar_fire_effect 1) + +# create map/bin/hex file etc. +pico_add_extra_outputs(stellar_fire_effect) + + + + +add_executable( + stellar_scroll_text + stellar_scroll_text.cpp +) + +# Pull in pico libraries that we need +target_link_libraries(stellar_scroll_text pico_stdlib hardware_pio hardware_adc hardware_dma pico_graphics stellar_unicorn) +pico_enable_stdio_usb(stellar_scroll_text 1) + +# create map/bin/hex file etc. +pico_add_extra_outputs(stellar_scroll_text) + + +add_executable( + stellar_lava_lamp + stellar_lava_lamp.cpp +) + +# Pull in pico libraries that we need +target_link_libraries(stellar_lava_lamp pico_stdlib hardware_pio hardware_adc hardware_dma pico_graphics stellar_unicorn) +pico_enable_stdio_usb(stellar_lava_lamp 1) + +# create map/bin/hex file etc. +pico_add_extra_outputs(stellar_lava_lamp) + diff --git a/examples/stellar_unicorn/audio_samples.cpp b/examples/stellar_unicorn/audio_samples.cpp new file mode 100644 index 00000000..1ecf5dce --- /dev/null +++ b/examples/stellar_unicorn/audio_samples.cpp @@ -0,0 +1,7847 @@ +#include + +uint8_t right_channel_bin[] = { + 0x52, 0x49, 0x46, 0x46, 0x2e, 0xb5, 0x00, 0x00, 0x57, 0x41, 0x56, 0x45, + 0x66, 0x6d, 0x74, 0x20, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xc0, 0x5d, 0x00, 0x00, 0x80, 0xbb, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x0a, 0xb5, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xf8, 0xff, 0xfd, 0xff, 0x00, 0x00, 0xfe, 0xff, 0xfd, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, 0xfc, 0xff, 0xfe, 0xff, + 0x05, 0x00, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x01, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf7, 0xff, + 0xf7, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xd8, 0xff, 0xb8, 0xff, 0xae, 0xff, 0xa4, 0xff, 0x90, 0xff, 0xb1, 0xff, + 0xc8, 0xff, 0xe0, 0xff, 0x06, 0x00, 0x36, 0x00, 0x5a, 0x00, 0x80, 0x00, + 0xc5, 0x00, 0xdc, 0x00, 0xca, 0x00, 0x13, 0x01, 0x3c, 0x01, 0x28, 0x01, + 0x5d, 0x01, 0x8e, 0x01, 0xd0, 0x01, 0x13, 0x02, 0x69, 0x02, 0x90, 0x02, + 0xcb, 0x02, 0x10, 0x03, 0x1c, 0x03, 0x24, 0x03, 0x4d, 0x03, 0x86, 0x03, + 0x69, 0x03, 0x8c, 0x03, 0x9d, 0x03, 0xb4, 0x03, 0xe6, 0x03, 0xfb, 0x03, + 0xf6, 0x03, 0xf6, 0x03, 0x0c, 0x04, 0x1d, 0x04, 0x5e, 0x04, 0x57, 0x04, + 0x3f, 0x04, 0x3b, 0x04, 0x29, 0x04, 0xba, 0x03, 0x99, 0x03, 0x5f, 0x03, + 0x08, 0x03, 0x95, 0x02, 0x68, 0x02, 0x66, 0x02, 0x6a, 0x02, 0xb4, 0x02, + 0x72, 0x02, 0x98, 0x02, 0x92, 0x02, 0x34, 0x02, 0x13, 0x02, 0x05, 0x02, + 0x82, 0x01, 0x13, 0x01, 0x69, 0x00, 0x01, 0x00, 0xd6, 0xff, 0x09, 0xff, + 0x78, 0xfe, 0xfd, 0xfd, 0x74, 0xfd, 0xfa, 0xfc, 0x94, 0xfc, 0x39, 0xfc, + 0xa1, 0xfb, 0x19, 0xfb, 0x17, 0xfb, 0xd0, 0xfa, 0xad, 0xfa, 0xc1, 0xfa, + 0xb8, 0xfa, 0xb6, 0xfa, 0x27, 0xfb, 0xef, 0xfa, 0xa2, 0xfa, 0xfc, 0xfa, + 0xe0, 0xfa, 0x87, 0xfa, 0x80, 0xfa, 0x4f, 0xfa, 0x32, 0xfa, 0x82, 0xfa, + 0x6b, 0xfa, 0x5b, 0xfa, 0x50, 0xfa, 0x79, 0xfa, 0xa1, 0xfa, 0xfa, 0xfa, + 0x6f, 0xfb, 0xae, 0xfb, 0x1b, 0xfc, 0x7b, 0xfc, 0x18, 0xfd, 0x71, 0xfd, + 0xd4, 0xfd, 0x0b, 0xfe, 0x85, 0xfe, 0x16, 0xff, 0x8b, 0xff, 0x01, 0x00, + 0x39, 0x00, 0xa9, 0x00, 0xfc, 0x00, 0x61, 0x01, 0x7d, 0x01, 0xb1, 0x01, + 0xee, 0x01, 0x1b, 0x02, 0x52, 0x02, 0x96, 0x02, 0xf7, 0x02, 0x2b, 0x03, + 0xbf, 0x03, 0x11, 0x04, 0x57, 0x04, 0x0e, 0x05, 0x6d, 0x05, 0xb3, 0x05, + 0x06, 0x06, 0xff, 0x05, 0x49, 0x06, 0x59, 0x06, 0x7a, 0x06, 0x73, 0x06, + 0x4c, 0x06, 0x58, 0x06, 0xdf, 0x05, 0xaf, 0x05, 0xa0, 0x05, 0x7e, 0x05, + 0x64, 0x05, 0x66, 0x05, 0x5b, 0x05, 0x4b, 0x05, 0x39, 0x05, 0xd5, 0x05, + 0xa0, 0x05, 0xe5, 0x04, 0x33, 0x05, 0xa6, 0x04, 0x72, 0x04, 0x5c, 0x04, + 0xa8, 0x03, 0x3f, 0x03, 0x4c, 0x02, 0xae, 0x01, 0xf8, 0x00, 0xfe, 0xff, + 0x61, 0xff, 0xb0, 0xfe, 0xcb, 0xfd, 0x88, 0xfd, 0x18, 0xfd, 0x60, 0xfc, + 0xdb, 0xfb, 0x2e, 0xfb, 0x94, 0xfa, 0x7b, 0xfa, 0x47, 0xfa, 0x05, 0xfa, + 0xe5, 0xf9, 0xf4, 0xf9, 0x9d, 0xf9, 0x48, 0xf9, 0x27, 0xf9, 0xef, 0xf8, + 0xb8, 0xf8, 0xbb, 0xf8, 0x71, 0xf8, 0x2d, 0xf8, 0x4d, 0xf8, 0x4b, 0xf8, + 0x34, 0xf8, 0x27, 0xf8, 0x42, 0xf8, 0x88, 0xf8, 0xbb, 0xf8, 0xda, 0xf8, + 0x50, 0xf9, 0x93, 0xf9, 0x0e, 0xfa, 0xac, 0xfa, 0x24, 0xfb, 0xbf, 0xfb, + 0x4a, 0xfc, 0xbf, 0xfc, 0x75, 0xfd, 0xf9, 0xfd, 0x63, 0xfe, 0x0e, 0xff, + 0x90, 0xff, 0xf8, 0xff, 0x7a, 0x00, 0xd5, 0x00, 0x0a, 0x01, 0xa0, 0x01, + 0x00, 0x02, 0x6f, 0x02, 0x9e, 0x02, 0xe9, 0x02, 0x6b, 0x03, 0x80, 0x03, + 0xe9, 0x03, 0x54, 0x04, 0xb8, 0x04, 0x53, 0x05, 0xde, 0x05, 0x3c, 0x06, + 0xa1, 0x06, 0x01, 0x07, 0x56, 0x07, 0x81, 0x07, 0xc4, 0x07, 0x15, 0x08, + 0x95, 0x08, 0xc2, 0x08, 0xeb, 0x08, 0x28, 0x09, 0x59, 0x09, 0x86, 0x09, + 0x59, 0x09, 0xcb, 0x08, 0x5d, 0x08, 0xd1, 0x07, 0x3d, 0x07, 0x2b, 0x07, + 0xeb, 0x06, 0xb3, 0x06, 0xc0, 0x06, 0x55, 0x06, 0x0a, 0x06, 0x09, 0x06, + 0x48, 0x05, 0xe8, 0x03, 0x2e, 0x03, 0x59, 0x02, 0x1b, 0x01, 0xfa, 0xff, + 0xfe, 0xfe, 0x1f, 0xfe, 0x81, 0xfd, 0x32, 0xfd, 0x77, 0xfc, 0xf3, 0xfa, + 0x9d, 0xfa, 0x98, 0xfa, 0x37, 0xfa, 0xfc, 0xf9, 0x65, 0xf9, 0x7d, 0xf9, + 0xb8, 0xf9, 0x6c, 0xf9, 0x56, 0xf9, 0xef, 0xf8, 0x2f, 0xf8, 0xcb, 0xf7, + 0x42, 0xf7, 0x98, 0xf6, 0x18, 0xf6, 0xc2, 0xf5, 0x69, 0xf5, 0x2b, 0xf5, + 0x5f, 0xf5, 0xc6, 0xf5, 0xe1, 0xf5, 0x22, 0xf6, 0x98, 0xf6, 0x12, 0xf7, + 0xb7, 0xf7, 0x77, 0xf8, 0x24, 0xf9, 0xcf, 0xf9, 0x9e, 0xfa, 0x9d, 0xfb, + 0x90, 0xfc, 0x1b, 0xfd, 0xa7, 0xfd, 0x32, 0xfe, 0x9d, 0xfe, 0x27, 0xff, + 0xa2, 0xff, 0x27, 0x00, 0x73, 0x00, 0xea, 0x00, 0x9a, 0x01, 0x0a, 0x02, + 0x7e, 0x02, 0xe7, 0x02, 0x8f, 0x03, 0x1e, 0x04, 0xa8, 0x04, 0x76, 0x05, + 0xf1, 0x05, 0x6c, 0x06, 0x34, 0x07, 0x83, 0x07, 0xb0, 0x07, 0x22, 0x08, + 0x74, 0x08, 0xbc, 0x08, 0xc6, 0x08, 0x23, 0x09, 0x4e, 0x09, 0x6c, 0x09, + 0x82, 0x09, 0x6c, 0x09, 0x71, 0x09, 0x43, 0x09, 0x79, 0x09, 0xa7, 0x09, + 0x7f, 0x09, 0x01, 0x0a, 0x23, 0x0a, 0xe5, 0x09, 0xf8, 0x09, 0xb4, 0x09, + 0x2b, 0x09, 0x5f, 0x08, 0xd3, 0x07, 0x2d, 0x07, 0xea, 0x05, 0x18, 0x05, + 0x20, 0x04, 0x88, 0x03, 0xc1, 0x02, 0x52, 0x02, 0xfe, 0x01, 0xc5, 0x00, + 0x46, 0xff, 0x8c, 0xfe, 0x41, 0xfd, 0xa7, 0xfb, 0xee, 0xfa, 0x8e, 0xf9, + 0xa1, 0xf8, 0x61, 0xf8, 0xe4, 0xf7, 0xd0, 0xf7, 0xb1, 0xf7, 0x47, 0xf7, + 0x54, 0xf7, 0x0d, 0xf7, 0xd5, 0xf6, 0xad, 0xf6, 0x26, 0xf6, 0xcf, 0xf5, + 0xe9, 0xf5, 0x08, 0xf6, 0xbd, 0xf5, 0x5e, 0xf5, 0xbd, 0xf5, 0x92, 0xf5, + 0xff, 0xf4, 0x22, 0xf5, 0x28, 0xf5, 0x54, 0xf5, 0xf6, 0xf5, 0x91, 0xf6, + 0x33, 0xf7, 0x38, 0xf8, 0x2b, 0xf9, 0x38, 0xfa, 0x68, 0xfb, 0x2c, 0xfc, + 0x30, 0xfd, 0x04, 0xfe, 0xc4, 0xfe, 0xa6, 0xff, 0x76, 0x00, 0x31, 0x01, + 0xae, 0x01, 0x60, 0x02, 0xe8, 0x02, 0x3e, 0x03, 0xbd, 0x03, 0xf2, 0x03, + 0x4a, 0x04, 0xda, 0x04, 0x60, 0x05, 0x00, 0x06, 0xc8, 0x06, 0x82, 0x07, + 0xff, 0x07, 0xad, 0x08, 0x0a, 0x09, 0xd6, 0x08, 0xee, 0x08, 0xda, 0x08, + 0xa8, 0x08, 0x8c, 0x08, 0xb9, 0x08, 0xc6, 0x08, 0x00, 0x09, 0x60, 0x09, + 0x9d, 0x09, 0x70, 0x09, 0x88, 0x09, 0x6f, 0x09, 0x78, 0x09, 0x7b, 0x09, + 0x49, 0x09, 0x2e, 0x09, 0xb1, 0x08, 0x13, 0x08, 0x17, 0x07, 0x36, 0x06, + 0xca, 0x05, 0x4e, 0x05, 0xb4, 0x04, 0x49, 0x04, 0x15, 0x04, 0x99, 0x03, + 0x5a, 0x03, 0xb0, 0x02, 0xa0, 0x00, 0x6a, 0xff, 0x87, 0xfe, 0xc3, 0xfc, + 0x40, 0xfb, 0x48, 0xfa, 0xe6, 0xf8, 0xf5, 0xf7, 0x69, 0xf7, 0x98, 0xf6, + 0xfd, 0xf5, 0xfe, 0xf5, 0x6e, 0xf5, 0xbd, 0xf5, 0x1f, 0xf6, 0x82, 0xf5, + 0x3e, 0xf6, 0x2e, 0xf6, 0x14, 0xf6, 0xac, 0xf6, 0xa4, 0xf6, 0x44, 0xf6, + 0x66, 0xf6, 0x3f, 0xf6, 0xbd, 0xf5, 0xc9, 0xf5, 0x5a, 0xf5, 0x09, 0xf5, + 0x25, 0xf5, 0x74, 0xf5, 0x8e, 0xf5, 0x24, 0xf6, 0x23, 0xf7, 0x03, 0xf8, + 0x61, 0xf9, 0xd3, 0xfa, 0x41, 0xfc, 0xc9, 0xfd, 0x26, 0xff, 0x7a, 0x00, + 0xb5, 0x01, 0x86, 0x02, 0x6a, 0x03, 0x0a, 0x04, 0x66, 0x04, 0xc9, 0x04, + 0x00, 0x05, 0x3b, 0x05, 0x3a, 0x05, 0x96, 0x05, 0xa4, 0x05, 0xd7, 0x05, + 0x38, 0x06, 0x38, 0x06, 0xcf, 0x06, 0x17, 0x07, 0x25, 0x07, 0x6f, 0x07, + 0xac, 0x07, 0x3f, 0x08, 0xbb, 0x08, 0x03, 0x09, 0x33, 0x09, 0x7e, 0x09, + 0xc3, 0x09, 0xa7, 0x09, 0xa2, 0x09, 0x94, 0x09, 0x7f, 0x09, 0x4a, 0x09, + 0xf0, 0x08, 0x74, 0x08, 0x44, 0x08, 0x72, 0x08, 0x3b, 0x08, 0x0c, 0x08, + 0xe2, 0x07, 0x8d, 0x07, 0x66, 0x07, 0x4b, 0x07, 0xf7, 0x06, 0x66, 0x06, + 0xc3, 0x05, 0x3d, 0x05, 0x7c, 0x04, 0x34, 0x03, 0xd4, 0x01, 0x5a, 0x00, + 0xdd, 0xfe, 0x7b, 0xfd, 0xe8, 0xfb, 0x82, 0xfa, 0xdf, 0xf8, 0xa8, 0xf7, + 0xc5, 0xf6, 0x81, 0xf6, 0xac, 0xf5, 0xdb, 0xf4, 0x1b, 0xf5, 0x78, 0xf4, + 0x6b, 0xf4, 0xe0, 0xf4, 0x96, 0xf4, 0x38, 0xf4, 0x64, 0xf4, 0x78, 0xf4, + 0x86, 0xf4, 0xa4, 0xf4, 0xe4, 0xf4, 0xd1, 0xf4, 0xc2, 0xf4, 0x78, 0xf4, + 0x51, 0xf4, 0x3b, 0xf4, 0xfa, 0xf3, 0x22, 0xf4, 0x4b, 0xf4, 0x64, 0xf4, + 0x52, 0xf5, 0x83, 0xf6, 0x9c, 0xf7, 0xea, 0xf8, 0x81, 0xfa, 0x0b, 0xfc, + 0xb5, 0xfd, 0x85, 0xff, 0xbe, 0x00, 0x55, 0x02, 0x98, 0x03, 0x83, 0x04, + 0x8c, 0x05, 0xf7, 0x05, 0x73, 0x06, 0xca, 0x06, 0x01, 0x07, 0xe5, 0x06, + 0xd5, 0x06, 0x3d, 0x07, 0x7f, 0x07, 0xf2, 0x07, 0xdb, 0x08, 0x5c, 0x09, + 0x8b, 0x09, 0xdb, 0x09, 0x4d, 0x0a, 0x53, 0x0a, 0x23, 0x0a, 0x1e, 0x0a, + 0x0e, 0x0a, 0xfb, 0x09, 0x5a, 0x0a, 0x8f, 0x0a, 0x45, 0x0a, 0x34, 0x0a, + 0x48, 0x0a, 0xdb, 0x09, 0x6a, 0x09, 0x2d, 0x09, 0xc8, 0x08, 0x91, 0x08, + 0x27, 0x08, 0xf5, 0x07, 0x7d, 0x07, 0x7d, 0x07, 0x59, 0x07, 0xf0, 0x06, + 0x9a, 0x06, 0xa4, 0x05, 0x20, 0x05, 0xea, 0x03, 0xbf, 0x02, 0xce, 0x01, + 0x6a, 0x00, 0xc0, 0xff, 0x9e, 0xfe, 0x50, 0xfd, 0xb6, 0xfb, 0x8c, 0xf9, + 0xea, 0xf7, 0x68, 0xf6, 0x7b, 0xf4, 0x7d, 0xf3, 0xcb, 0xf2, 0x75, 0xf2, + 0x80, 0xf2, 0xf1, 0xf2, 0x3e, 0xf3, 0xe5, 0xf3, 0x8c, 0xf4, 0xaf, 0xf4, + 0xb9, 0xf4, 0xc5, 0xf4, 0x91, 0xf4, 0xcf, 0xf4, 0xe6, 0xf4, 0x4d, 0xf4, + 0x1b, 0xf4, 0xfa, 0xf3, 0xa0, 0xf3, 0xaf, 0xf3, 0xc3, 0xf3, 0x98, 0xf3, + 0xcb, 0xf3, 0x29, 0xf4, 0x1e, 0xf5, 0x22, 0xf6, 0x93, 0xf7, 0x15, 0xf9, + 0x9e, 0xfa, 0x81, 0xfc, 0x38, 0xfe, 0x19, 0x00, 0xc9, 0x01, 0x12, 0x03, + 0xae, 0x04, 0xe2, 0x05, 0xc7, 0x06, 0x50, 0x07, 0x9a, 0x07, 0xc6, 0x07, + 0xe2, 0x07, 0x16, 0x08, 0x0a, 0x08, 0x36, 0x08, 0x98, 0x08, 0xf2, 0x08, + 0xca, 0x09, 0x01, 0x0a, 0x01, 0x0a, 0x54, 0x0a, 0x6c, 0x0a, 0x90, 0x0a, + 0xb5, 0x0a, 0xde, 0x0a, 0x90, 0x0a, 0xa7, 0x0a, 0xc5, 0x0a, 0xb3, 0x0a, + 0xbd, 0x0a, 0x71, 0x0a, 0xc8, 0x09, 0x2d, 0x09, 0xd6, 0x08, 0x76, 0x08, + 0x50, 0x08, 0x21, 0x08, 0x40, 0x08, 0x1e, 0x08, 0xda, 0x07, 0xc2, 0x07, + 0xe9, 0x06, 0x3c, 0x06, 0xc1, 0x05, 0xe9, 0x04, 0xd4, 0x03, 0xf0, 0x02, + 0x2a, 0x02, 0xeb, 0x00, 0xde, 0xff, 0xd0, 0xfe, 0xe4, 0xfc, 0x83, 0xfb, + 0xfc, 0xf9, 0xdd, 0xf7, 0xa4, 0xf6, 0xff, 0xf4, 0x83, 0xf4, 0x0a, 0xf4, + 0x8a, 0xf3, 0xc6, 0xf3, 0x88, 0xf3, 0x22, 0xf4, 0x6f, 0xf4, 0x12, 0xf4, + 0x90, 0xf4, 0xa9, 0xf4, 0x5e, 0xf4, 0xf8, 0xf4, 0xe7, 0xf4, 0x79, 0xf4, + 0xa9, 0xf4, 0x4f, 0xf4, 0x18, 0xf4, 0x35, 0xf4, 0x79, 0xf3, 0x45, 0xf3, + 0x98, 0xf3, 0x7d, 0xf3, 0x03, 0xf4, 0x0c, 0xf5, 0x0c, 0xf6, 0x6a, 0xf7, + 0xff, 0xf8, 0xa1, 0xfa, 0x95, 0xfc, 0x4b, 0xfe, 0xe0, 0xff, 0x79, 0x01, + 0xd2, 0x02, 0xfa, 0x03, 0x36, 0x05, 0x25, 0x06, 0x93, 0x06, 0x10, 0x07, + 0x13, 0x07, 0x0b, 0x07, 0x96, 0x07, 0x7b, 0x07, 0x63, 0x07, 0x94, 0x07, + 0xdc, 0x07, 0x4c, 0x08, 0xd4, 0x08, 0x47, 0x09, 0x94, 0x09, 0x1b, 0x0a, + 0x6c, 0x0a, 0x03, 0x0b, 0xc8, 0x0b, 0x99, 0x0b, 0xa2, 0x0b, 0xb2, 0x0b, + 0xfa, 0x0a, 0xb2, 0x0a, 0x09, 0x0a, 0x2c, 0x09, 0x0b, 0x09, 0xaf, 0x08, + 0x7e, 0x08, 0xfb, 0x08, 0xa2, 0x08, 0xa3, 0x08, 0x1d, 0x09, 0xc7, 0x08, + 0x46, 0x08, 0x3e, 0x09, 0x27, 0x09, 0x3b, 0x08, 0x1c, 0x08, 0x6e, 0x06, + 0x67, 0x04, 0xe7, 0x02, 0x08, 0x01, 0xf3, 0xfe, 0xf8, 0xfc, 0x96, 0xfb, + 0x24, 0xfa, 0x42, 0xf8, 0x12, 0xf7, 0xb8, 0xf5, 0x43, 0xf4, 0x3c, 0xf4, + 0xdc, 0xf3, 0x46, 0xf3, 0x75, 0xf3, 0x90, 0xf3, 0x24, 0xf4, 0x9a, 0xf4, + 0x4e, 0xf5, 0x0d, 0xf5, 0x85, 0xf4, 0xf4, 0xf4, 0x5b, 0xf4, 0x46, 0xf4, + 0x2e, 0xf4, 0x3f, 0xf3, 0x57, 0xf3, 0x27, 0xf3, 0x41, 0xf3, 0x97, 0xf3, + 0xf2, 0xf2, 0x60, 0xf3, 0xb9, 0xf3, 0x51, 0xf4, 0xba, 0xf5, 0xc4, 0xf6, + 0x53, 0xf8, 0x18, 0xfa, 0x08, 0xfc, 0xf6, 0xfd, 0xe4, 0xff, 0x6d, 0x01, + 0x90, 0x02, 0xcf, 0x03, 0x97, 0x04, 0x24, 0x05, 0xf4, 0x05, 0x27, 0x06, + 0xae, 0x06, 0x6d, 0x07, 0xdc, 0x07, 0xc9, 0x08, 0x49, 0x09, 0x94, 0x09, + 0x27, 0x0a, 0x75, 0x0a, 0x84, 0x0a, 0x99, 0x0a, 0x56, 0x0b, 0xc5, 0x0a, + 0x82, 0x0a, 0xff, 0x0a, 0xa0, 0x0a, 0xba, 0x0a, 0xb8, 0x0a, 0x65, 0x0a, + 0x36, 0x09, 0xf2, 0x08, 0x86, 0x08, 0x0b, 0x08, 0x12, 0x08, 0xa2, 0x08, + 0x4b, 0x08, 0x6d, 0x08, 0xc7, 0x08, 0xcf, 0x08, 0xa4, 0x08, 0xbe, 0x07, + 0x6e, 0x07, 0xed, 0x05, 0x40, 0x05, 0x35, 0x05, 0xa4, 0x04, 0xee, 0x03, + 0x5b, 0x03, 0x5a, 0x02, 0x69, 0x01, 0x0b, 0x00, 0x42, 0xfe, 0x8d, 0xfc, + 0x7e, 0xfa, 0x8a, 0xf8, 0x36, 0xf7, 0xd6, 0xf5, 0xbd, 0xf4, 0x75, 0xf4, + 0xec, 0xf3, 0x04, 0xf4, 0x68, 0xf4, 0x6f, 0xf4, 0xe6, 0xf4, 0x88, 0xf5, + 0xe6, 0xf5, 0x23, 0xf6, 0xd7, 0xf6, 0x0a, 0xf7, 0xd0, 0xf6, 0xdb, 0xf6, + 0xc0, 0xf6, 0x76, 0xf6, 0x0e, 0xf6, 0x12, 0xf6, 0x70, 0xf5, 0xf9, 0xf4, + 0xd8, 0xf4, 0x8b, 0xf4, 0xc9, 0xf4, 0x78, 0xf5, 0x2c, 0xf6, 0x0e, 0xf7, + 0x9a, 0xf8, 0xbe, 0xf9, 0xa6, 0xfb, 0xcf, 0xfd, 0x5b, 0xff, 0x52, 0x01, + 0x33, 0x03, 0xa0, 0x04, 0xf9, 0x05, 0x3d, 0x07, 0x00, 0x08, 0x71, 0x08, + 0xdd, 0x08, 0x8a, 0x08, 0x13, 0x08, 0xdc, 0x07, 0x45, 0x07, 0xeb, 0x06, + 0x5d, 0x06, 0x1c, 0x06, 0x55, 0x06, 0xab, 0x06, 0x08, 0x08, 0xed, 0x08, + 0xb8, 0x09, 0x9e, 0x0a, 0x07, 0x0b, 0xb0, 0x0b, 0xdc, 0x0b, 0x79, 0x0b, + 0xcf, 0x0a, 0x14, 0x0a, 0x2f, 0x09, 0xb5, 0x08, 0x38, 0x08, 0x31, 0x07, + 0x98, 0x06, 0xff, 0x05, 0xeb, 0x05, 0x6b, 0x06, 0x9d, 0x06, 0xf6, 0x06, + 0x66, 0x07, 0xb3, 0x07, 0x47, 0x08, 0x58, 0x08, 0xd8, 0x07, 0x81, 0x06, + 0x25, 0x05, 0xb7, 0x03, 0x2b, 0x01, 0x7c, 0x00, 0x8c, 0xfe, 0x17, 0xfc, + 0x7a, 0xfb, 0xd0, 0xf8, 0x18, 0xf7, 0x4c, 0xf5, 0x92, 0xf3, 0x65, 0xf2, + 0xec, 0xf0, 0xda, 0xf0, 0xc5, 0xf0, 0x55, 0xf1, 0x55, 0xf2, 0x25, 0xf3, + 0x4b, 0xf4, 0x56, 0xf5, 0x66, 0xf6, 0xd9, 0xf6, 0xf3, 0xf6, 0x3a, 0xf7, + 0x7c, 0xf6, 0xcb, 0xf6, 0x73, 0xf6, 0x83, 0xf5, 0xc7, 0xf5, 0x48, 0xf5, + 0x81, 0xf4, 0x30, 0xf5, 0xda, 0xf4, 0x94, 0xf4, 0x28, 0xf6, 0x9d, 0xf6, + 0xf6, 0xf7, 0x98, 0xfa, 0x19, 0xfc, 0x5c, 0xfe, 0x73, 0x01, 0xf5, 0x02, + 0x0d, 0x05, 0xe9, 0x06, 0x91, 0x07, 0x8b, 0x08, 0x51, 0x09, 0x31, 0x09, + 0x00, 0x09, 0x0d, 0x09, 0x21, 0x08, 0xda, 0x07, 0x7b, 0x07, 0x6e, 0x06, + 0x83, 0x06, 0x3d, 0x06, 0x21, 0x06, 0xf1, 0x06, 0x5a, 0x07, 0xfe, 0x07, + 0x61, 0x08, 0xea, 0x09, 0x33, 0x0a, 0xdc, 0x0a, 0xdd, 0x0b, 0x1f, 0x0b, + 0xef, 0x0b, 0x82, 0x0b, 0x94, 0x0a, 0x66, 0x0a, 0xf4, 0x08, 0x40, 0x08, + 0xd6, 0x07, 0xdf, 0x06, 0x57, 0x06, 0x2d, 0x06, 0x74, 0x06, 0x66, 0x06, + 0x37, 0x07, 0xca, 0x07, 0xd2, 0x07, 0xe1, 0x08, 0xaa, 0x09, 0x59, 0x09, + 0x41, 0x08, 0xcc, 0x06, 0x4f, 0x04, 0xfc, 0x01, 0xb9, 0xff, 0x0e, 0xfd, + 0x5a, 0xfa, 0xf9, 0xf7, 0xb7, 0xf5, 0xa1, 0xf3, 0x37, 0xf2, 0x0f, 0xf1, + 0x16, 0xf0, 0x59, 0xef, 0x5d, 0xef, 0x1e, 0xef, 0xa9, 0xef, 0xe6, 0xf0, + 0x51, 0xf1, 0x4b, 0xf2, 0xbb, 0xf3, 0xd0, 0xf3, 0x0a, 0xf5, 0x71, 0xf5, + 0x34, 0xf5, 0x11, 0xf6, 0x94, 0xf5, 0xf8, 0xf5, 0x00, 0xf6, 0xf6, 0xf5, + 0xf6, 0xf5, 0x0c, 0xf6, 0xb6, 0xf6, 0xcf, 0xf6, 0xd2, 0xf7, 0x99, 0xf8, + 0x90, 0xf9, 0x23, 0xfb, 0x1c, 0xfc, 0x08, 0xfe, 0x35, 0x00, 0x92, 0x01, + 0x18, 0x04, 0xc7, 0x05, 0xfc, 0x06, 0x36, 0x09, 0x1a, 0x0a, 0xe5, 0x0a, + 0x49, 0x0b, 0x99, 0x0b, 0x23, 0x0b, 0xee, 0x0a, 0xce, 0x0a, 0x7a, 0x09, + 0x0f, 0x09, 0xff, 0x07, 0x88, 0x07, 0x2f, 0x07, 0x6f, 0x06, 0x4f, 0x06, + 0x2b, 0x06, 0x9b, 0x06, 0x13, 0x07, 0xe4, 0x07, 0x49, 0x08, 0xad, 0x08, + 0x86, 0x09, 0xfc, 0x09, 0x44, 0x0a, 0x31, 0x0a, 0x53, 0x09, 0xc7, 0x08, + 0x21, 0x0a, 0x7d, 0x09, 0x1d, 0x09, 0xf3, 0x08, 0xbd, 0x07, 0xdc, 0x07, + 0xfa, 0x07, 0x56, 0x07, 0x21, 0x07, 0xb9, 0x06, 0xcc, 0x05, 0xb0, 0x05, + 0x50, 0x04, 0x32, 0x02, 0xa7, 0x01, 0xca, 0xff, 0x6b, 0xff, 0x58, 0xfe, + 0x3d, 0xfc, 0x64, 0xfb, 0xae, 0xf8, 0xc0, 0xf6, 0x3a, 0xf5, 0x9d, 0xf2, + 0x4b, 0xf1, 0xe8, 0xef, 0x05, 0xef, 0x70, 0xef, 0x5e, 0xef, 0xa9, 0xf0, + 0x2b, 0xf1, 0x23, 0xf2, 0x26, 0xf3, 0x8d, 0xf3, 0x9a, 0xf4, 0x4b, 0xf5, + 0x92, 0xf5, 0x59, 0xf6, 0x84, 0xf6, 0x10, 0xf7, 0xc2, 0xf7, 0xc5, 0xf7, + 0x06, 0xf8, 0xdd, 0xf7, 0xed, 0xf7, 0x02, 0xf8, 0x2b, 0xf8, 0xdd, 0xf8, + 0x60, 0xf9, 0x4a, 0xfa, 0xec, 0xfb, 0x32, 0xfd, 0x3d, 0xff, 0x77, 0x01, + 0xfd, 0x02, 0x34, 0x05, 0x8f, 0x06, 0xda, 0x07, 0x2e, 0x09, 0x8c, 0x09, + 0x2a, 0x0a, 0x04, 0x0a, 0x85, 0x09, 0x09, 0x09, 0x63, 0x08, 0xab, 0x07, + 0xf0, 0x06, 0x61, 0x06, 0x3e, 0x06, 0x5f, 0x06, 0x4e, 0x07, 0xd4, 0x07, + 0x71, 0x08, 0x49, 0x09, 0x58, 0x09, 0xf0, 0x09, 0x34, 0x0a, 0x33, 0x0a, + 0x0b, 0x0a, 0x44, 0x0a, 0x0a, 0x0a, 0x32, 0x0a, 0x55, 0x0a, 0x3f, 0x0a, + 0x56, 0x0a, 0xac, 0x09, 0x9e, 0x09, 0xb4, 0x09, 0xfc, 0x08, 0x1d, 0x09, + 0xbf, 0x08, 0x23, 0x08, 0xe2, 0x07, 0xc4, 0x07, 0xe9, 0x06, 0x0b, 0x06, + 0x45, 0x05, 0xaa, 0x03, 0x76, 0x02, 0xcd, 0x00, 0xa1, 0xfe, 0xe1, 0xfc, + 0x84, 0xfa, 0x87, 0xf8, 0xb8, 0xf6, 0x74, 0xf4, 0x55, 0xf2, 0x65, 0xf0, + 0x9a, 0xef, 0x36, 0xee, 0xef, 0xed, 0x57, 0xee, 0x55, 0xee, 0x62, 0xef, + 0x5b, 0xf0, 0xcf, 0xf1, 0xfe, 0xf2, 0x2c, 0xf4, 0x98, 0xf5, 0xc9, 0xf5, + 0x15, 0xf6, 0x4f, 0xf7, 0xf9, 0xf6, 0x0d, 0xf7, 0x09, 0xf8, 0xf5, 0xf6, + 0xcc, 0xf7, 0x26, 0xf8, 0xf3, 0xf7, 0xfc, 0xf8, 0x79, 0xf9, 0x28, 0xfa, + 0x93, 0xfb, 0x38, 0xfd, 0x73, 0xfe, 0xc0, 0x00, 0x6c, 0x02, 0x88, 0x03, + 0xfb, 0x05, 0xef, 0x06, 0x3f, 0x08, 0xa5, 0x09, 0xf4, 0x09, 0x4e, 0x0a, + 0x66, 0x0a, 0x46, 0x0a, 0xb2, 0x09, 0x26, 0x09, 0x12, 0x09, 0xf8, 0x07, + 0x4a, 0x07, 0x70, 0x07, 0x7c, 0x06, 0x96, 0x06, 0xce, 0x06, 0x12, 0x06, + 0x8e, 0x06, 0x0a, 0x07, 0x69, 0x07, 0xba, 0x07, 0x9c, 0x08, 0x6a, 0x08, + 0xf5, 0x08, 0x8f, 0x09, 0xf4, 0x08, 0xee, 0x08, 0x1f, 0x08, 0x54, 0x07, + 0xdc, 0x06, 0x7f, 0x06, 0x28, 0x06, 0x20, 0x06, 0x50, 0x06, 0x83, 0x06, + 0x04, 0x07, 0x46, 0x07, 0x60, 0x07, 0xdf, 0x06, 0x18, 0x06, 0xce, 0x04, + 0x1b, 0x03, 0x9c, 0x00, 0xbb, 0xfe, 0x33, 0xfd, 0x0a, 0xfb, 0x50, 0xf9, + 0x42, 0xf7, 0xde, 0xf4, 0x8b, 0xf2, 0x4d, 0xf1, 0x7d, 0xef, 0x88, 0xee, + 0xd2, 0xed, 0xc9, 0xed, 0xfd, 0xed, 0x05, 0xf0, 0x6f, 0xf1, 0x7c, 0xf2, + 0x0e, 0xf5, 0x7b, 0xf5, 0x47, 0xf7, 0x98, 0xf8, 0xc9, 0xf8, 0x6d, 0xf9, + 0x55, 0xf9, 0x08, 0xf9, 0x20, 0xf9, 0xfd, 0xf8, 0x5d, 0xf9, 0x2a, 0xf9, + 0x6b, 0xf9, 0xcf, 0xf9, 0x03, 0xfa, 0x41, 0xfb, 0xc6, 0xfb, 0x71, 0xfd, + 0xbf, 0xfe, 0x0e, 0x00, 0x5f, 0x02, 0xd9, 0x03, 0xa5, 0x05, 0x69, 0x07, + 0x23, 0x08, 0xef, 0x08, 0x5b, 0x09, 0x22, 0x09, 0xc4, 0x08, 0x61, 0x08, + 0x83, 0x07, 0xcd, 0x06, 0x7d, 0x06, 0x0e, 0x06, 0x93, 0x05, 0xe2, 0x05, + 0xf3, 0x05, 0x14, 0x06, 0xd2, 0x06, 0x12, 0x07, 0xbe, 0x07, 0xca, 0x08, + 0x00, 0x09, 0x94, 0x09, 0xd8, 0x09, 0xa3, 0x09, 0x07, 0x09, 0x79, 0x08, + 0xb5, 0x07, 0xf7, 0x06, 0xb4, 0x06, 0x7c, 0x06, 0x47, 0x06, 0x43, 0x06, + 0x3d, 0x06, 0x71, 0x06, 0x8c, 0x06, 0xbe, 0x06, 0x02, 0x07, 0x0f, 0x06, + 0xd0, 0x05, 0x75, 0x04, 0x29, 0x03, 0xfb, 0x01, 0x6a, 0x00, 0x32, 0xff, + 0xf3, 0xfc, 0xa9, 0xfa, 0x49, 0xf9, 0x7c, 0xf6, 0xfa, 0xf4, 0x57, 0xf3, + 0x05, 0xf1, 0xf3, 0xef, 0xb6, 0xee, 0x89, 0xee, 0xf4, 0xed, 0x94, 0xee, + 0x4e, 0xef, 0xa8, 0xf0, 0xa4, 0xf2, 0x26, 0xf4, 0xbb, 0xf5, 0xed, 0xf6, + 0x6a, 0xf8, 0x2e, 0xf9, 0xf7, 0xf9, 0x75, 0xfa, 0xfe, 0xf9, 0x5d, 0xfa, + 0x54, 0xfa, 0xea, 0xf9, 0xe4, 0xf9, 0x97, 0xf9, 0x9d, 0xf9, 0x03, 0xfa, + 0x05, 0xfb, 0xd6, 0xfb, 0x06, 0xfd, 0xa7, 0xfe, 0x40, 0x00, 0x50, 0x02, + 0x78, 0x04, 0x7b, 0x06, 0xd3, 0x07, 0xec, 0x08, 0xa5, 0x09, 0xa6, 0x09, + 0xd5, 0x09, 0x86, 0x09, 0xa8, 0x08, 0x26, 0x08, 0x5a, 0x07, 0x66, 0x06, + 0x7a, 0x06, 0x0a, 0x06, 0xfc, 0x05, 0x5a, 0x06, 0x56, 0x06, 0xf8, 0x06, + 0xcd, 0x07, 0x92, 0x08, 0x58, 0x09, 0x96, 0x09, 0xfd, 0x09, 0x07, 0x0a, + 0x12, 0x0a, 0x50, 0x0a, 0x89, 0x09, 0xfa, 0x08, 0x16, 0x08, 0x56, 0x07, + 0xe7, 0x06, 0x48, 0x06, 0xcb, 0x05, 0x6f, 0x05, 0x0c, 0x05, 0x3e, 0x05, + 0x65, 0x05, 0x45, 0x05, 0x57, 0x05, 0x99, 0x04, 0x90, 0x03, 0x51, 0x03, + 0x8e, 0x01, 0x0a, 0x00, 0xfb, 0xfe, 0x55, 0xfc, 0xc6, 0xf9, 0xd6, 0xf7, + 0x60, 0xf4, 0x93, 0xf1, 0x51, 0xef, 0x20, 0xec, 0x60, 0xea, 0xa2, 0xe9, + 0xf3, 0xe8, 0x97, 0xe9, 0x8b, 0xeb, 0xec, 0xec, 0x94, 0xef, 0xed, 0xf2, + 0x1d, 0xf5, 0xba, 0xf7, 0xc3, 0xfa, 0x62, 0xfb, 0xfe, 0xfc, 0xa9, 0xfd, + 0xf8, 0xfc, 0xaa, 0xfd, 0xe2, 0xfc, 0xf8, 0xfb, 0xcc, 0xfb, 0xe2, 0xfa, + 0x05, 0xfb, 0x45, 0xfb, 0x1f, 0xfc, 0xd2, 0xfc, 0xfd, 0xfd, 0x2f, 0x00, + 0x9d, 0x01, 0x69, 0x04, 0x7e, 0x06, 0x2f, 0x08, 0x26, 0x0a, 0x3b, 0x0b, + 0xb9, 0x0b, 0xc3, 0x0b, 0x23, 0x0b, 0xd5, 0x09, 0xc4, 0x08, 0x70, 0x07, + 0xa9, 0x05, 0x83, 0x04, 0xde, 0x03, 0x1b, 0x03, 0x75, 0x03, 0xdc, 0x03, + 0x31, 0x04, 0xb2, 0x05, 0x36, 0x07, 0x6e, 0x08, 0x1b, 0x0a, 0x15, 0x0b, + 0xb4, 0x0b, 0xcb, 0x0c, 0xe8, 0x0c, 0x73, 0x0c, 0xe2, 0x0b, 0xe0, 0x0a, + 0x75, 0x09, 0x70, 0x08, 0xfe, 0x06, 0xae, 0x05, 0x36, 0x05, 0x72, 0x04, + 0x6c, 0x04, 0xc4, 0x04, 0x0a, 0x05, 0xb0, 0x05, 0x76, 0x06, 0x0c, 0x06, + 0x83, 0x05, 0x2d, 0x04, 0xab, 0x02, 0xab, 0x00, 0xb8, 0xfd, 0x2b, 0xfb, + 0xa0, 0xf7, 0xfd, 0xf3, 0xe3, 0xf0, 0xd7, 0xec, 0x53, 0xe9, 0xb8, 0xe6, + 0x73, 0xe4, 0xb1, 0xe3, 0xfe, 0xe4, 0xf5, 0xe5, 0xf9, 0xe7, 0xd2, 0xeb, + 0xd0, 0xed, 0xbe, 0xf2, 0x82, 0xf6, 0xdc, 0xf8, 0x13, 0xfc, 0x42, 0xfd, + 0x88, 0xfe, 0xc3, 0xff, 0x24, 0x00, 0x9a, 0xff, 0x12, 0xff, 0x6b, 0xfe, + 0x3f, 0xfd, 0x8c, 0xfd, 0x78, 0xfd, 0x20, 0xfd, 0x41, 0xfe, 0x27, 0xff, + 0xbb, 0x00, 0xba, 0x02, 0x0a, 0x05, 0x08, 0x07, 0x4e, 0x09, 0x8d, 0x0b, + 0x56, 0x0c, 0xf9, 0x0c, 0xdf, 0x0c, 0xd7, 0x0b, 0x8d, 0x0a, 0xf8, 0x08, + 0x3c, 0x06, 0x69, 0x04, 0xf9, 0x02, 0xbc, 0x01, 0xa6, 0x01, 0x89, 0x01, + 0xb1, 0x01, 0xe5, 0x02, 0x36, 0x04, 0xbd, 0x05, 0xa1, 0x07, 0x1a, 0x09, + 0x14, 0x0a, 0xaa, 0x0b, 0xbd, 0x0c, 0x25, 0x0d, 0xe7, 0x0d, 0xe7, 0x0d, + 0x14, 0x0d, 0xea, 0x0c, 0xef, 0x0b, 0x6d, 0x0a, 0x07, 0x0a, 0xc8, 0x08, + 0xae, 0x07, 0xdd, 0x07, 0x7b, 0x07, 0x70, 0x07, 0x01, 0x08, 0xa6, 0x07, + 0xe3, 0x06, 0xff, 0x05, 0xaa, 0x03, 0x41, 0x01, 0xf9, 0xfe, 0xde, 0xfb, + 0x10, 0xf9, 0x2a, 0xf6, 0xa2, 0xf2, 0xc3, 0xef, 0xbf, 0xec, 0xeb, 0xe8, + 0x0e, 0xe6, 0x74, 0xe2, 0xe9, 0xdf, 0xf9, 0xde, 0xc8, 0xde, 0x8f, 0xe0, + 0x07, 0xe3, 0xfe, 0xe6, 0x4d, 0xeb, 0xa7, 0xf0, 0xbf, 0xf5, 0x66, 0xfa, + 0x2b, 0xfe, 0xc7, 0x00, 0x29, 0x02, 0x2d, 0x03, 0xd8, 0x03, 0x20, 0x03, + 0x90, 0x03, 0x90, 0x02, 0xfb, 0x01, 0xc3, 0x01, 0x59, 0x01, 0x25, 0x01, + 0xcc, 0x01, 0x0b, 0x02, 0x40, 0x03, 0x93, 0x04, 0x78, 0x06, 0xa0, 0x08, + 0xc8, 0x0a, 0xd0, 0x0c, 0x8e, 0x0d, 0x22, 0x0e, 0x3b, 0x0d, 0xe5, 0x0b, + 0x1b, 0x0a, 0xa7, 0x07, 0x0f, 0x05, 0xa3, 0x02, 0x7b, 0x00, 0x43, 0xff, + 0xa5, 0xfe, 0xcd, 0xfe, 0x40, 0xff, 0x87, 0x00, 0x35, 0x02, 0x6e, 0x04, + 0x60, 0x07, 0xf1, 0x09, 0xf9, 0x0c, 0xf9, 0x0f, 0xd4, 0x11, 0xe1, 0x13, + 0xc4, 0x14, 0xa2, 0x14, 0x2c, 0x14, 0x7c, 0x12, 0xa2, 0x10, 0x3c, 0x0e, + 0xb5, 0x0b, 0x83, 0x09, 0x17, 0x07, 0x2e, 0x06, 0xbd, 0x04, 0x36, 0x04, + 0x85, 0x04, 0x60, 0x03, 0x93, 0x03, 0x41, 0x02, 0x2a, 0x00, 0xf2, 0xfd, + 0x12, 0xfb, 0xf2, 0xf6, 0x43, 0xf4, 0x70, 0xef, 0x2d, 0xeb, 0x0c, 0xe7, + 0x97, 0xe1, 0x25, 0xde, 0x72, 0xda, 0xd3, 0xd7, 0x05, 0xd8, 0xe7, 0xd7, + 0x33, 0xdb, 0x03, 0xdf, 0x2a, 0xe4, 0xa1, 0xeb, 0x0a, 0xf2, 0x87, 0xf9, + 0xe2, 0xfe, 0x2b, 0x04, 0x59, 0x07, 0x58, 0x0a, 0x63, 0x0b, 0x2a, 0x0b, + 0xd6, 0x09, 0x63, 0x08, 0x91, 0x06, 0xd5, 0x04, 0x22, 0x04, 0x44, 0x02, + 0xf3, 0x01, 0x17, 0x02, 0xc1, 0x02, 0x4e, 0x04, 0xad, 0x06, 0x14, 0x08, + 0x16, 0x0a, 0xca, 0x0b, 0xbb, 0x0c, 0x4c, 0x0d, 0xeb, 0x0c, 0xe9, 0x0a, + 0x45, 0x08, 0x02, 0x06, 0x2c, 0x02, 0xca, 0xff, 0x2b, 0xfd, 0x38, 0xfb, + 0xa0, 0xfa, 0x2f, 0xfb, 0x83, 0xfc, 0xeb, 0xfe, 0x47, 0x02, 0xa8, 0x05, + 0xb5, 0x09, 0xc4, 0x0d, 0x3e, 0x11, 0x0a, 0x15, 0xd2, 0x17, 0xb3, 0x19, + 0x83, 0x1a, 0xe9, 0x19, 0x2f, 0x18, 0x6c, 0x16, 0x16, 0x13, 0xf5, 0x0f, + 0xc8, 0x0c, 0x2e, 0x09, 0x4c, 0x07, 0x8b, 0x05, 0x7a, 0x04, 0x2d, 0x04, + 0x8e, 0x03, 0xf8, 0x02, 0xf5, 0x01, 0x22, 0x00, 0xc1, 0xfd, 0x45, 0xfa, + 0x9d, 0xf6, 0x3d, 0xf2, 0x42, 0xed, 0x6f, 0xe8, 0x56, 0xe2, 0xed, 0xdc, + 0x7b, 0xd7, 0xe6, 0xd2, 0x5e, 0xd0, 0x09, 0xcf, 0x49, 0xd1, 0x29, 0xd4, + 0x02, 0xdb, 0x40, 0xe3, 0x18, 0xec, 0x6d, 0xf6, 0x20, 0xff, 0xb9, 0x06, + 0x5c, 0x0b, 0x2b, 0x10, 0x98, 0x10, 0x94, 0x10, 0x0f, 0x10, 0x72, 0x0c, + 0x7d, 0x0a, 0x03, 0x08, 0xae, 0x05, 0x0c, 0x04, 0xbf, 0x02, 0x55, 0x01, + 0x4b, 0x01, 0x8f, 0x01, 0xfb, 0x02, 0xd8, 0x04, 0x8c, 0x06, 0x18, 0x08, + 0x7d, 0x09, 0x6d, 0x09, 0x2b, 0x09, 0x58, 0x07, 0x64, 0x04, 0x7b, 0x01, + 0xc4, 0xfd, 0x9f, 0xfa, 0x82, 0xf8, 0x1e, 0xf7, 0xf0, 0xf6, 0x26, 0xf8, + 0x57, 0xfa, 0xab, 0xfd, 0x19, 0x02, 0xff, 0x06, 0x09, 0x0c, 0xe1, 0x10, + 0x84, 0x15, 0x29, 0x19, 0x55, 0x1c, 0x08, 0x1e, 0x75, 0x1e, 0x88, 0x1d, + 0x6a, 0x1b, 0xb3, 0x18, 0x5c, 0x15, 0x36, 0x12, 0x38, 0x0e, 0x1e, 0x0b, + 0xa5, 0x08, 0x93, 0x06, 0xcd, 0x05, 0x9d, 0x05, 0x4a, 0x05, 0x66, 0x05, + 0xc7, 0x04, 0x5f, 0x02, 0x6a, 0x00, 0xc5, 0xfb, 0x86, 0xf7, 0x17, 0xf3, + 0x68, 0xec, 0xa0, 0xe6, 0x5b, 0xdf, 0xe9, 0xd7, 0x47, 0xd1, 0xc1, 0xcb, + 0x69, 0xc8, 0xba, 0xc7, 0x92, 0xca, 0x2a, 0xcf, 0x3a, 0xd7, 0x97, 0xe1, + 0x44, 0xed, 0x92, 0xfa, 0x0c, 0x06, 0xba, 0x0f, 0x1b, 0x16, 0xbb, 0x1a, + 0xa9, 0x1c, 0xd8, 0x1c, 0x05, 0x1a, 0x7e, 0x15, 0xed, 0x0f, 0x5c, 0x0a, + 0xad, 0x05, 0x25, 0x01, 0xe9, 0xfc, 0x43, 0xfa, 0xdf, 0xf8, 0x11, 0xf9, + 0x6f, 0xfb, 0x77, 0xfd, 0x19, 0x00, 0xf2, 0x02, 0xd5, 0x04, 0x08, 0x06, + 0xb5, 0x05, 0x3d, 0x03, 0xbe, 0x00, 0x3e, 0xfd, 0x3a, 0xfa, 0xf8, 0xf6, + 0xd9, 0xf4, 0xeb, 0xf3, 0x54, 0xf4, 0x59, 0xf7, 0xb2, 0xfa, 0xa6, 0xff, + 0x95, 0x05, 0xf6, 0x0b, 0x08, 0x13, 0x9a, 0x19, 0x68, 0x1e, 0x47, 0x22, + 0xec, 0x23, 0x5a, 0x24, 0xf0, 0x22, 0x13, 0x1f, 0x8f, 0x1a, 0xcb, 0x14, + 0xff, 0x0f, 0x19, 0x0c, 0xbf, 0x08, 0x76, 0x06, 0x51, 0x05, 0x6a, 0x05, + 0x34, 0x06, 0xb8, 0x07, 0xb2, 0x07, 0x4d, 0x07, 0xad, 0x05, 0x82, 0x02, + 0x7e, 0xfe, 0xc9, 0xf9, 0x0b, 0xf3, 0xd7, 0xec, 0x24, 0xe5, 0x07, 0xdc, + 0xe1, 0xd3, 0xaf, 0xc9, 0x86, 0xc3, 0xd0, 0xbf, 0x20, 0xc0, 0x01, 0xc5, + 0xc0, 0xcc, 0xb9, 0xd8, 0xdf, 0xe6, 0x76, 0xf7, 0x84, 0x06, 0xa1, 0x13, + 0x61, 0x1d, 0x16, 0x23, 0xd0, 0x25, 0xb4, 0x24, 0xfc, 0x20, 0x56, 0x1b, + 0x97, 0x15, 0x89, 0x0e, 0x6b, 0x08, 0x71, 0x01, 0xc7, 0xfb, 0x75, 0xf7, + 0xa2, 0xf4, 0xad, 0xf3, 0xa8, 0xf3, 0x38, 0xf5, 0x11, 0xf8, 0x8d, 0xfc, + 0xb2, 0xff, 0xcb, 0x01, 0x20, 0x02, 0x6c, 0x01, 0x36, 0xff, 0xd9, 0xfc, + 0x2e, 0xf9, 0xfd, 0xf4, 0x97, 0xf3, 0xab, 0xf2, 0xe2, 0xf3, 0x15, 0xf7, + 0xc5, 0xf9, 0xb6, 0xfe, 0xbc, 0x05, 0xf9, 0x0b, 0x40, 0x13, 0xfb, 0x19, + 0x46, 0x1e, 0x47, 0x23, 0x35, 0x26, 0xc8, 0x25, 0x4e, 0x24, 0xbd, 0x20, + 0x6f, 0x1b, 0x28, 0x17, 0x71, 0x12, 0xa5, 0x0c, 0x11, 0x0a, 0x8f, 0x07, + 0xaf, 0x06, 0xed, 0x07, 0x5a, 0x08, 0x27, 0x09, 0x4e, 0x0a, 0x2b, 0x09, + 0xad, 0x07, 0xd3, 0x03, 0x8d, 0xfe, 0x73, 0xf8, 0x9f, 0xf1, 0x28, 0xea, + 0x5d, 0xe2, 0x1c, 0xda, 0xf1, 0xd0, 0x2c, 0xc9, 0x5a, 0xc2, 0x41, 0xbf, + 0x59, 0xbf, 0xb7, 0xc4, 0x85, 0xcd, 0x12, 0xda, 0x9e, 0xea, 0xd1, 0xfb, + 0x7b, 0x0c, 0x97, 0x1b, 0xd8, 0x25, 0x9b, 0x2b, 0x9e, 0x2d, 0x95, 0x2a, + 0xa8, 0x24, 0x2a, 0x1f, 0x0e, 0x17, 0xc9, 0x0e, 0x98, 0x08, 0xc8, 0x00, + 0x6f, 0xfa, 0x1c, 0xf7, 0xc3, 0xf2, 0x3f, 0xf1, 0xd5, 0xf0, 0xa1, 0xf0, + 0x41, 0xf2, 0x1e, 0xf5, 0x88, 0xf7, 0xd0, 0xf9, 0x2a, 0xfb, 0x74, 0xf9, + 0x72, 0xf8, 0x74, 0xf6, 0x6c, 0xf4, 0x4d, 0xf3, 0x22, 0xf3, 0x22, 0xf3, + 0xcc, 0xf5, 0x0a, 0xfa, 0x3d, 0xff, 0x86, 0x06, 0xc9, 0x0d, 0xda, 0x13, + 0xcb, 0x19, 0x15, 0x1f, 0x74, 0x22, 0xba, 0x25, 0x84, 0x26, 0x77, 0x24, + 0x33, 0x21, 0xff, 0x1c, 0x00, 0x18, 0xf0, 0x13, 0x6e, 0x0f, 0x65, 0x0b, + 0xea, 0x08, 0xc5, 0x07, 0x84, 0x08, 0x19, 0x0a, 0xec, 0x0b, 0xb2, 0x0c, + 0x50, 0x0c, 0x3f, 0x0a, 0x00, 0x06, 0x4d, 0x00, 0x24, 0xf9, 0x06, 0xf2, + 0xd0, 0xe9, 0xd0, 0xe1, 0xbc, 0xd9, 0x89, 0xd0, 0x96, 0xc9, 0xad, 0xc3, + 0x63, 0xc0, 0x66, 0xc1, 0xed, 0xc5, 0xf1, 0xce, 0xfa, 0xdb, 0x0f, 0xed, + 0xe3, 0xfd, 0xa8, 0x0f, 0xce, 0x1e, 0xc8, 0x28, 0xb5, 0x2f, 0x32, 0x31, + 0x03, 0x2e, 0xe2, 0x28, 0xbc, 0x20, 0xa3, 0x17, 0xa3, 0x0e, 0x09, 0x06, + 0x38, 0xfe, 0x9d, 0xf7, 0x1c, 0xf2, 0x7b, 0xed, 0x04, 0xec, 0xf1, 0xea, + 0x36, 0xec, 0x92, 0xee, 0x8f, 0xf0, 0xff, 0xf2, 0xa6, 0xf5, 0xbf, 0xf6, + 0x76, 0xf7, 0xe4, 0xf7, 0xf9, 0xf6, 0xd5, 0xf5, 0x9d, 0xf5, 0xb7, 0xf4, + 0x5b, 0xf6, 0x3c, 0xf9, 0x06, 0xfd, 0xb2, 0x01, 0x26, 0x07, 0x9b, 0x0c, + 0xfc, 0x12, 0x39, 0x19, 0x59, 0x1e, 0x03, 0x22, 0xef, 0x23, 0x41, 0x24, + 0xf1, 0x22, 0x24, 0x21, 0x3e, 0x1d, 0xeb, 0x18, 0x58, 0x14, 0xae, 0x0f, + 0xe1, 0x0b, 0x6a, 0x09, 0xdc, 0x07, 0xc2, 0x07, 0xe2, 0x08, 0xa9, 0x09, + 0x38, 0x0a, 0x62, 0x09, 0x90, 0x06, 0x4f, 0x01, 0x5c, 0xfa, 0x00, 0xf2, + 0x43, 0xe9, 0xd1, 0xe1, 0x3f, 0xda, 0x08, 0xd3, 0x01, 0xcc, 0x3f, 0xc6, + 0x5e, 0xc3, 0xcd, 0xc4, 0xf2, 0xca, 0xf9, 0xd3, 0x16, 0xe1, 0x5b, 0xef, + 0xa0, 0x00, 0x3b, 0x12, 0x38, 0x22, 0x6e, 0x2e, 0x3f, 0x33, 0xd1, 0x34, + 0xeb, 0x30, 0x0b, 0x2b, 0x74, 0x23, 0xe8, 0x18, 0x6f, 0x0e, 0xb4, 0x03, + 0x19, 0xfa, 0x7f, 0xf2, 0xe1, 0xec, 0xd4, 0xe8, 0x5a, 0xe6, 0x6b, 0xe5, + 0x9a, 0xe5, 0xa1, 0xe7, 0x3a, 0xeb, 0x8a, 0xee, 0xd9, 0xf1, 0x93, 0xf3, + 0xe3, 0xf2, 0xc1, 0xf3, 0xc0, 0xf3, 0xcd, 0xf4, 0xd5, 0xf6, 0xcd, 0xf7, + 0xd6, 0xf9, 0x9c, 0xfd, 0xe6, 0x02, 0x0d, 0x09, 0x4d, 0x0f, 0xa2, 0x13, + 0xa3, 0x17, 0xd0, 0x1a, 0xfc, 0x1c, 0x7d, 0x1e, 0xd9, 0x1d, 0x9b, 0x1b, + 0x9b, 0x18, 0x2e, 0x15, 0x7a, 0x12, 0x41, 0x10, 0xc2, 0x0e, 0x5a, 0x0d, + 0x6e, 0x0c, 0x27, 0x0c, 0x12, 0x0c, 0xed, 0x0c, 0xbf, 0x0d, 0x61, 0x0e, + 0x64, 0x0c, 0x32, 0x09, 0x2c, 0x03, 0x33, 0xfb, 0x4d, 0xf3, 0x89, 0xeb, + 0x11, 0xe2, 0x1a, 0xda, 0x3e, 0xd2, 0x0e, 0xca, 0xff, 0xc6, 0x79, 0xc5, + 0xbe, 0xc7, 0xac, 0xcf, 0x65, 0xda, 0x86, 0xe9, 0xac, 0xfb, 0xd5, 0x0c, + 0x6e, 0x1e, 0x5b, 0x2b, 0xe0, 0x34, 0x89, 0x38, 0x91, 0x36, 0xcc, 0x31, + 0xbe, 0x28, 0x0b, 0x1f, 0x8d, 0x14, 0x49, 0x09, 0x72, 0xfd, 0x4f, 0xf4, + 0x21, 0xec, 0xa3, 0xe7, 0xdc, 0xe4, 0x7a, 0xe3, 0x47, 0xe3, 0x23, 0xe5, + 0x4a, 0xe8, 0xd7, 0xec, 0x30, 0xf1, 0x06, 0xf4, 0xb7, 0xf5, 0x09, 0xf6, + 0x3e, 0xf5, 0x93, 0xf4, 0x3f, 0xf5, 0xd6, 0xf5, 0x04, 0xf8, 0x47, 0xfa, + 0x50, 0xfd, 0xe4, 0x00, 0x29, 0x07, 0x9b, 0x0c, 0x13, 0x11, 0x1e, 0x15, + 0x7e, 0x16, 0x6b, 0x18, 0x4c, 0x1a, 0x11, 0x1b, 0x09, 0x1a, 0x0c, 0x18, + 0xa0, 0x14, 0x15, 0x12, 0xa9, 0x10, 0xbf, 0x0e, 0xc4, 0x0d, 0xd4, 0x0b, + 0x1d, 0x0b, 0xd3, 0x0a, 0x64, 0x0b, 0xb5, 0x0b, 0x4f, 0x0b, 0x13, 0x09, + 0x10, 0x04, 0x62, 0xfd, 0xd3, 0xf4, 0x86, 0xec, 0x79, 0xe5, 0x8d, 0xde, + 0x60, 0xd7, 0xc0, 0xd0, 0x96, 0xca, 0x4f, 0xc8, 0xff, 0xca, 0x49, 0xd1, + 0xd2, 0xdc, 0x72, 0xea, 0x51, 0xfa, 0x32, 0x0c, 0xd5, 0x1d, 0x04, 0x2d, + 0x55, 0x37, 0x49, 0x3b, 0xcd, 0x38, 0x88, 0x33, 0x43, 0x2b, 0x8e, 0x21, + 0x4a, 0x17, 0xfc, 0x0a, 0x13, 0x00, 0x16, 0xf6, 0x18, 0xee, 0xa2, 0xe8, + 0x44, 0xe5, 0xc5, 0xe2, 0x81, 0xe2, 0x69, 0xe3, 0x82, 0xe4, 0xd6, 0xe7, + 0xef, 0xeb, 0xf3, 0xef, 0x56, 0xf2, 0x36, 0xf3, 0xf9, 0xf2, 0x87, 0xf3, + 0x99, 0xf5, 0x16, 0xf8, 0x92, 0xfa, 0x12, 0xfd, 0x66, 0x00, 0xc3, 0x04, + 0x04, 0x0a, 0x6d, 0x0e, 0xa2, 0x11, 0xa9, 0x13, 0x71, 0x14, 0x3f, 0x14, + 0x65, 0x13, 0x21, 0x12, 0x5b, 0x10, 0x6c, 0x0f, 0x6e, 0x0e, 0xfe, 0x0c, + 0x7a, 0x0c, 0x1f, 0x0c, 0xa5, 0x0c, 0xcb, 0x0d, 0xe3, 0x0d, 0xb1, 0x0d, + 0x3e, 0x0d, 0x79, 0x0c, 0xa7, 0x0a, 0x5d, 0x07, 0xc4, 0x00, 0x88, 0xf8, + 0x0a, 0xf0, 0xe5, 0xe8, 0x9c, 0xe2, 0x5e, 0xdd, 0x97, 0xd6, 0x17, 0xcf, + 0x16, 0xca, 0x61, 0xc8, 0x79, 0xcc, 0x17, 0xd5, 0x79, 0xe2, 0xad, 0xf1, + 0x78, 0x04, 0x48, 0x18, 0x86, 0x2a, 0x80, 0x38, 0xae, 0x3e, 0x3d, 0x3f, + 0x9f, 0x3a, 0xd4, 0x33, 0x68, 0x2a, 0xbe, 0x1f, 0x3c, 0x14, 0xcd, 0x08, + 0xde, 0xfb, 0x59, 0xf0, 0x9e, 0xe6, 0x53, 0xdf, 0x64, 0xdd, 0xc1, 0xdc, + 0xf3, 0xdd, 0x78, 0xe1, 0x14, 0xe6, 0x01, 0xec, 0xf6, 0xf2, 0x4e, 0xf7, + 0x83, 0xf8, 0x31, 0xf9, 0xb3, 0xf8, 0x87, 0xf9, 0x08, 0xfc, 0x1f, 0xfe, + 0xc2, 0xff, 0x0c, 0x02, 0x50, 0x04, 0x19, 0x07, 0x17, 0x0a, 0xa6, 0x0b, + 0x9d, 0x0c, 0x0e, 0x0d, 0x04, 0x0d, 0xe0, 0x0c, 0xad, 0x0c, 0xc5, 0x0c, + 0x59, 0x0b, 0x17, 0x0b, 0x38, 0x0a, 0x5e, 0x0a, 0x02, 0x0c, 0xd7, 0x0d, + 0x77, 0x0f, 0x81, 0x10, 0x93, 0x10, 0x05, 0x10, 0x5d, 0x10, 0x8c, 0x0d, + 0x40, 0x09, 0x61, 0x01, 0x5a, 0xf7, 0x59, 0xeb, 0x56, 0xe2, 0xa9, 0xd9, + 0x7e, 0xd3, 0xa0, 0xcd, 0x1f, 0xc8, 0x5c, 0xc5, 0xd9, 0xc6, 0x7e, 0xcf, + 0x10, 0xdc, 0xfc, 0xec, 0xb1, 0xfe, 0x02, 0x11, 0xb3, 0x23, 0x31, 0x35, + 0x65, 0x40, 0x09, 0x45, 0x96, 0x43, 0x05, 0x3c, 0x92, 0x32, 0x81, 0x26, + 0x6c, 0x18, 0x8d, 0x0a, 0x82, 0xfd, 0x64, 0xf3, 0x00, 0xeb, 0xc6, 0xe4, + 0xd8, 0xe0, 0x0b, 0xdf, 0xd4, 0xe0, 0x3c, 0xe4, 0x78, 0xe8, 0xc6, 0xec, + 0xbc, 0xf1, 0xfd, 0xf5, 0xd0, 0xf8, 0x7e, 0xfa, 0x00, 0xfa, 0x83, 0xf9, + 0x5c, 0xfa, 0xb7, 0xfb, 0x16, 0xfe, 0xd6, 0x00, 0xf6, 0x03, 0xb2, 0x08, + 0x2f, 0x0b, 0x07, 0x0d, 0x75, 0x0d, 0xfd, 0x0b, 0x1e, 0x0b, 0x12, 0x0b, + 0xe2, 0x08, 0x37, 0x08, 0x5f, 0x07, 0x0c, 0x06, 0xb6, 0x06, 0x31, 0x08, + 0x34, 0x0a, 0xda, 0x0c, 0x6f, 0x0f, 0xc7, 0x0f, 0x82, 0x10, 0x3d, 0x10, + 0x11, 0x0e, 0xdb, 0x09, 0xa7, 0x02, 0x26, 0xf8, 0x1b, 0xee, 0xf4, 0xe4, + 0x57, 0xdd, 0x99, 0xd6, 0x20, 0xd0, 0x4a, 0xc8, 0x8c, 0xc3, 0x8c, 0xc3, + 0x52, 0xc9, 0xb5, 0xd6, 0xc5, 0xe8, 0x48, 0xfd, 0xd3, 0x11, 0x55, 0x25, + 0xe2, 0x36, 0xbe, 0x42, 0x5b, 0x47, 0xc1, 0x44, 0xea, 0x3b, 0x42, 0x2f, + 0x9d, 0x23, 0xee, 0x16, 0xc1, 0x09, 0x64, 0xfe, 0x1b, 0xf3, 0x9d, 0xe9, + 0x73, 0xe3, 0x6c, 0xe0, 0xa4, 0xdf, 0x8f, 0xe3, 0x43, 0xe8, 0x78, 0xed, + 0xec, 0xf3, 0x33, 0xf9, 0xd5, 0xfd, 0x38, 0x00, 0xf7, 0xff, 0x47, 0xfe, + 0xc7, 0xfc, 0x86, 0xfc, 0xe2, 0xfd, 0x51, 0xff, 0x3a, 0x01, 0x03, 0x03, + 0x3e, 0x05, 0x11, 0x08, 0xba, 0x09, 0xa9, 0x0a, 0xf7, 0x09, 0x79, 0x09, + 0xc7, 0x07, 0x7c, 0x05, 0xa3, 0x03, 0x71, 0x02, 0x02, 0x02, 0x6c, 0x03, + 0x42, 0x05, 0x4c, 0x08, 0x76, 0x0c, 0xba, 0x0f, 0x2a, 0x12, 0xd7, 0x12, + 0xa4, 0x11, 0x86, 0x0e, 0x27, 0x09, 0xb2, 0x01, 0x4e, 0xf8, 0xc2, 0xee, + 0x0e, 0xe5, 0xa9, 0xdc, 0x1b, 0xd3, 0x63, 0xca, 0xca, 0xc2, 0x0a, 0xc0, + 0xeb, 0xc3, 0xa1, 0xcd, 0x37, 0xdd, 0x6b, 0xf0, 0x3d, 0x04, 0xb0, 0x18, + 0x06, 0x2b, 0x42, 0x38, 0xa5, 0x40, 0x08, 0x44, 0x02, 0x41, 0x01, 0x3a, + 0xb3, 0x2e, 0xe4, 0x20, 0xa4, 0x13, 0x68, 0x05, 0x63, 0xf8, 0xeb, 0xeb, + 0xe1, 0xe2, 0xe7, 0xdc, 0x48, 0xdc, 0x4d, 0xdf, 0xe1, 0xe3, 0x40, 0xeb, + 0xbb, 0xf2, 0x4c, 0xf9, 0xd5, 0xff, 0xe8, 0x03, 0x25, 0x04, 0xa7, 0x04, + 0x09, 0x03, 0xb6, 0x01, 0xc0, 0x02, 0xf9, 0x02, 0x6f, 0x03, 0x6b, 0x04, + 0x6b, 0x04, 0xca, 0x04, 0x7c, 0x06, 0x0a, 0x06, 0xfc, 0x05, 0x71, 0x05, + 0xec, 0x03, 0x40, 0x03, 0xa5, 0x02, 0xf0, 0x00, 0x31, 0x00, 0x9b, 0x00, + 0x7e, 0x02, 0x62, 0x06, 0x61, 0x0a, 0xb4, 0x0e, 0x36, 0x12, 0x23, 0x14, + 0xdd, 0x14, 0x96, 0x12, 0xe1, 0x0d, 0x90, 0x06, 0xd4, 0xfc, 0x3a, 0xf2, + 0x1d, 0xe7, 0x91, 0xdc, 0x6d, 0xd3, 0x04, 0xca, 0xf4, 0xc1, 0x18, 0xbe, + 0x8c, 0xc0, 0xfe, 0xc8, 0x8e, 0xda, 0x90, 0xee, 0x54, 0x02, 0x00, 0x17, + 0x04, 0x28, 0xeb, 0x36, 0x89, 0x41, 0xac, 0x44, 0x18, 0x41, 0x31, 0x39, + 0x20, 0x2d, 0xd6, 0x1e, 0x64, 0x11, 0x4a, 0x02, 0x95, 0xf4, 0x92, 0xe9, + 0x71, 0xdf, 0x27, 0xdb, 0x86, 0xdb, 0xbd, 0xdf, 0x18, 0xe8, 0x50, 0xf1, + 0x9d, 0xf8, 0x77, 0xff, 0x02, 0x05, 0x98, 0x07, 0x2e, 0x09, 0xd8, 0x07, + 0x36, 0x05, 0x5d, 0x02, 0xaa, 0x00, 0xcd, 0xff, 0xa8, 0xff, 0x65, 0xff, + 0xb4, 0xff, 0xee, 0x00, 0xa7, 0x02, 0x8f, 0x05, 0xdf, 0x06, 0xed, 0x06, + 0x4b, 0x06, 0x9b, 0x04, 0x4b, 0x02, 0xe3, 0x00, 0x6a, 0x00, 0x6c, 0x01, + 0xec, 0x04, 0x5a, 0x09, 0xd1, 0x0c, 0x90, 0x0f, 0x40, 0x11, 0xf0, 0x11, + 0x55, 0x12, 0xe3, 0x0f, 0x20, 0x0b, 0x08, 0x03, 0x0f, 0xf9, 0x5b, 0xee, + 0x21, 0xe3, 0xc4, 0xd7, 0x78, 0xce, 0x0e, 0xc6, 0xa0, 0xc0, 0xfb, 0xbf, + 0x41, 0xc6, 0x60, 0xd3, 0x97, 0xe6, 0x30, 0xfc, 0x9c, 0x0f, 0x9c, 0x21, + 0x3a, 0x30, 0xf7, 0x3a, 0x21, 0x41, 0xfe, 0x40, 0x28, 0x3b, 0x51, 0x31, + 0x33, 0x23, 0x36, 0x14, 0x3f, 0x05, 0xdb, 0xf7, 0xba, 0xec, 0xb1, 0xe4, + 0xb6, 0xdf, 0x06, 0xdf, 0xe4, 0xe2, 0x2f, 0xea, 0x67, 0xf2, 0xd7, 0xf9, + 0x08, 0xff, 0x56, 0x02, 0x71, 0x05, 0x0b, 0x07, 0x89, 0x07, 0xa0, 0x06, + 0x05, 0x06, 0x61, 0x04, 0xbe, 0x02, 0x0a, 0x02, 0x7c, 0x00, 0x7d, 0xff, + 0x40, 0x00, 0x3a, 0x01, 0x33, 0x02, 0xa0, 0x04, 0xb8, 0x04, 0x9a, 0x03, + 0x8e, 0x01, 0x57, 0xfe, 0x1f, 0xfd, 0x34, 0xfe, 0x0e, 0x00, 0x4e, 0x03, + 0xb2, 0x06, 0xea, 0x09, 0x63, 0x0d, 0x7a, 0x10, 0x45, 0x11, 0x20, 0x11, + 0xe0, 0x0e, 0xf4, 0x07, 0x1e, 0x00, 0xc7, 0xf7, 0x8a, 0xed, 0xe5, 0xe3, + 0x85, 0xd9, 0x1b, 0xcd, 0x82, 0xc3, 0x82, 0xc0, 0x9a, 0xc3, 0x21, 0xce, + 0xa0, 0xdf, 0x5d, 0xf2, 0x81, 0x06, 0x78, 0x1a, 0xe1, 0x2a, 0x07, 0x37, + 0x5a, 0x3d, 0x2b, 0x3e, 0x08, 0x39, 0x26, 0x31, 0x97, 0x25, 0x6c, 0x17, + 0x67, 0x09, 0x5c, 0xfa, 0xac, 0xec, 0xcb, 0xe3, 0x4f, 0xde, 0xe4, 0xde, + 0x97, 0xe3, 0x43, 0xea, 0x6c, 0xf3, 0xf2, 0xfb, 0x4c, 0x02, 0x26, 0x08, + 0x62, 0x0b, 0xe8, 0x0b, 0xe7, 0x0a, 0x5d, 0x08, 0x2a, 0x05, 0xcf, 0x03, + 0xf0, 0x02, 0xac, 0x01, 0xf9, 0x00, 0x45, 0x00, 0xf9, 0xff, 0x40, 0x01, + 0xce, 0x01, 0x55, 0x01, 0xa0, 0x00, 0xea, 0xfe, 0x6c, 0xfd, 0x6a, 0xfc, + 0xe1, 0xfb, 0x72, 0xfc, 0xe9, 0xfd, 0x89, 0x00, 0x63, 0x04, 0x8f, 0x08, + 0xf8, 0x0c, 0xd4, 0x10, 0xb8, 0x11, 0x52, 0x10, 0x4d, 0x0c, 0x55, 0x06, + 0x3b, 0xff, 0x23, 0xf7, 0xfa, 0xed, 0x67, 0xe2, 0xf8, 0xd5, 0x1c, 0xc9, + 0xc7, 0xc1, 0x27, 0xc0, 0x1a, 0xc9, 0xb5, 0xd6, 0x75, 0xe9, 0x2c, 0xfe, + 0x99, 0x0f, 0x32, 0x22, 0x0c, 0x2f, 0x78, 0x37, 0x3e, 0x3a, 0xa5, 0x38, + 0x48, 0x33, 0xaf, 0x2a, 0x3f, 0x1f, 0xfe, 0x10, 0xc1, 0x01, 0x34, 0xf3, + 0xa4, 0xe7, 0x25, 0xe0, 0x64, 0xde, 0xb5, 0xe1, 0xc3, 0xe8, 0xf6, 0xf1, + 0x40, 0xfb, 0x9b, 0x02, 0x24, 0x07, 0xb6, 0x09, 0x20, 0x0b, 0x39, 0x0a, + 0xef, 0x09, 0xde, 0x08, 0x27, 0x07, 0xce, 0x05, 0xb2, 0x04, 0x4f, 0x03, + 0xb5, 0x01, 0x11, 0x02, 0xc7, 0x01, 0xc1, 0x01, 0x8a, 0x02, 0x8a, 0x01, + 0xfd, 0x00, 0x2b, 0xfe, 0xd2, 0xfa, 0x33, 0xf8, 0xae, 0xf6, 0x99, 0xf7, + 0xfd, 0xfa, 0x0e, 0xff, 0xf9, 0x04, 0xc4, 0x0a, 0x99, 0x10, 0xaf, 0x13, + 0x74, 0x14, 0x73, 0x12, 0x37, 0x0d, 0x64, 0x05, 0x6e, 0xfb, 0x3c, 0xf0, + 0xe7, 0xe2, 0x64, 0xd6, 0xe8, 0xc8, 0x98, 0xbe, 0x38, 0xbc, 0xdf, 0xc2, + 0xac, 0xd1, 0xef, 0xe5, 0xe9, 0xfa, 0x83, 0x0d, 0x3e, 0x1f, 0xa8, 0x2f, + 0x91, 0x39, 0x1a, 0x3d, 0xc2, 0x38, 0xda, 0x30, 0x21, 0x27, 0x50, 0x1b, + 0xe1, 0x0e, 0x1e, 0x01, 0x1c, 0xf5, 0xf3, 0xeb, 0xe5, 0xe4, 0xb3, 0xe2, + 0x3b, 0xe5, 0xbe, 0xeb, 0xcc, 0xf4, 0x32, 0xfd, 0x15, 0x03, 0xbe, 0x07, + 0x1f, 0x0a, 0x30, 0x0b, 0x30, 0x09, 0x06, 0x07, 0xb8, 0x03, 0x87, 0x03, + 0xd7, 0x05, 0x8e, 0x06, 0x4d, 0x07, 0x1d, 0x06, 0xea, 0x03, 0xc4, 0x03, + 0x63, 0x03, 0x08, 0x02, 0x7f, 0x00, 0x98, 0xfd, 0x4c, 0xfa, 0xb9, 0xfa, + 0x64, 0xfa, 0x69, 0xfa, 0xdc, 0xfb, 0xde, 0xfb, 0x47, 0xff, 0xbe, 0x04, + 0xf9, 0x0a, 0x96, 0x10, 0xe2, 0x13, 0x5a, 0x14, 0xb7, 0x12, 0x79, 0x0e, + 0xa2, 0x06, 0xf4, 0xfa, 0xd9, 0xed, 0xeb, 0xde, 0xc4, 0xd1, 0x85, 0xc5, + 0xe7, 0xbc, 0x81, 0xbd, 0xe3, 0xc4, 0x29, 0xd4, 0x54, 0xe8, 0xc0, 0xfc, + 0x18, 0x11, 0x95, 0x21, 0x30, 0x2f, 0x42, 0x36, 0x74, 0x39, 0x2f, 0x36, + 0x24, 0x30, 0xf1, 0x24, 0x5d, 0x1a, 0xac, 0x0d, 0x4d, 0x01, 0x76, 0xf6, + 0x17, 0xed, 0x5c, 0xe6, 0x15, 0xe7, 0x76, 0xea, 0xda, 0xef, 0x00, 0xf9, + 0x1a, 0xfe, 0x22, 0x02, 0xef, 0x04, 0xd4, 0x03, 0x88, 0x02, 0x3f, 0x03, + 0x47, 0x02, 0x9c, 0x02, 0x59, 0x03, 0xa7, 0x04, 0xde, 0x06, 0x72, 0x0a, + 0xdb, 0x0b, 0xe6, 0x0b, 0x56, 0x0b, 0xf4, 0x08, 0x15, 0x07, 0x84, 0x03, + 0x31, 0xff, 0x9d, 0xfa, 0xcf, 0xf6, 0x4f, 0xf4, 0xcc, 0xf3, 0xfa, 0xf4, + 0x37, 0xf8, 0xdd, 0xfc, 0x67, 0x02, 0xa7, 0x09, 0x28, 0x10, 0x30, 0x15, + 0xaa, 0x16, 0x56, 0x14, 0x38, 0x0e, 0x55, 0x06, 0x97, 0xfb, 0xab, 0xed, + 0x71, 0xdf, 0x7a, 0xd0, 0x11, 0xc2, 0x69, 0xbb, 0x24, 0xbb, 0xe6, 0xc4, + 0x6b, 0xd5, 0xac, 0xeb, 0x2c, 0x01, 0x2e, 0x15, 0xc6, 0x25, 0xae, 0x30, + 0xff, 0x36, 0x0f, 0x37, 0xab, 0x33, 0xcf, 0x2c, 0x21, 0x21, 0xb3, 0x13, + 0x5f, 0x05, 0xb1, 0xf9, 0x93, 0xf2, 0x5c, 0xf0, 0x07, 0xef, 0x5f, 0xf0, + 0x97, 0xf2, 0x9c, 0xf5, 0x76, 0xfb, 0x08, 0xfe, 0x0b, 0x01, 0xfc, 0xff, + 0xd1, 0xff, 0xaf, 0x00, 0x1a, 0x01, 0x6d, 0x02, 0x21, 0x03, 0xe6, 0x03, + 0x51, 0x06, 0x4b, 0x0a, 0xa6, 0x0d, 0x13, 0x10, 0x56, 0x10, 0x72, 0x0d, + 0xbe, 0x08, 0x98, 0x03, 0x20, 0xfd, 0xea, 0xf8, 0xd7, 0xf5, 0x27, 0xf4, + 0x65, 0xf4, 0x22, 0xf6, 0xc0, 0xf9, 0xa1, 0xfe, 0xcf, 0x03, 0x34, 0x09, + 0xe3, 0x0d, 0x00, 0x11, 0x0d, 0x13, 0xa3, 0x11, 0x41, 0x0d, 0xa5, 0x05, + 0x45, 0xfc, 0xee, 0xef, 0x1b, 0xe4, 0x5d, 0xd5, 0xb1, 0xc5, 0x76, 0xbd, + 0xa5, 0xbb, 0xdf, 0xc8, 0x53, 0xdb, 0xa8, 0xf1, 0x71, 0x06, 0xa3, 0x16, + 0xc2, 0x23, 0x44, 0x2c, 0x9d, 0x30, 0x2d, 0x2f, 0x56, 0x29, 0x2a, 0x22, + 0xc3, 0x15, 0x4f, 0x0b, 0xb4, 0xfe, 0x42, 0xf7, 0xb0, 0xf3, 0xb0, 0xf2, + 0x70, 0xf6, 0x6f, 0xfa, 0xd1, 0xff, 0x42, 0x04, 0x51, 0x06, 0x2b, 0x06, + 0xca, 0x03, 0xd3, 0xff, 0xf8, 0xfa, 0xf3, 0xf8, 0x32, 0xf8, 0x1f, 0xf9, + 0x0a, 0xfe, 0xfe, 0x01, 0x27, 0x09, 0x84, 0x0f, 0xd7, 0x13, 0xec, 0x15, + 0x17, 0x15, 0x13, 0x11, 0xa5, 0x0c, 0x19, 0x05, 0xd8, 0xfc, 0x98, 0xf6, + 0x10, 0xf2, 0x1b, 0xef, 0xb8, 0xf0, 0x14, 0xf3, 0x37, 0xf7, 0x9b, 0xfd, + 0xbf, 0x03, 0x0c, 0x09, 0xc7, 0x0e, 0x7a, 0x0f, 0x3f, 0x0f, 0x15, 0x0d, + 0xee, 0x06, 0xbe, 0xff, 0xf5, 0xf4, 0x78, 0xe7, 0xb5, 0xd9, 0x45, 0xcb, + 0xa5, 0xc2, 0xab, 0xc0, 0xbb, 0xc7, 0xd4, 0xd9, 0xf9, 0xed, 0x62, 0x04, + 0x8b, 0x16, 0xdc, 0x22, 0xa0, 0x2a, 0xca, 0x2c, 0xf8, 0x28, 0x07, 0x23, + 0x82, 0x1c, 0xfe, 0x12, 0x0a, 0x0c, 0xa6, 0x03, 0x98, 0xfb, 0xf2, 0xf6, + 0x44, 0xf5, 0x06, 0xf7, 0xfc, 0xfa, 0x6c, 0xfe, 0x54, 0x02, 0x46, 0x05, + 0x9b, 0x04, 0xab, 0x02, 0x67, 0x01, 0x04, 0xfc, 0x61, 0xf9, 0x26, 0xf9, + 0x49, 0xfa, 0xa8, 0xff, 0x68, 0x06, 0xad, 0x0b, 0xc9, 0x10, 0x92, 0x14, + 0xc1, 0x15, 0xa1, 0x15, 0xa3, 0x12, 0x7b, 0x0c, 0xf1, 0x04, 0xba, 0xfc, + 0x5b, 0xf5, 0x82, 0xf1, 0xc0, 0xee, 0xb9, 0xee, 0xb5, 0xf1, 0x40, 0xf7, + 0xf6, 0xfc, 0xa9, 0x04, 0x4d, 0x08, 0xd9, 0x0b, 0x17, 0x0c, 0x40, 0x0b, + 0x86, 0x07, 0xf1, 0x04, 0x00, 0xff, 0xe9, 0xf5, 0x47, 0xea, 0x18, 0xdd, + 0x9c, 0xcd, 0x54, 0xc3, 0x2f, 0xc1, 0xab, 0xc7, 0xcc, 0xd8, 0x0f, 0xee, + 0xe0, 0x04, 0xfb, 0x17, 0xd0, 0x24, 0xc5, 0x2a, 0x08, 0x2f, 0xa8, 0x28, + 0x5c, 0x24, 0x30, 0x1c, 0xf7, 0x12, 0x35, 0x0a, 0xd8, 0x02, 0x46, 0xfd, + 0xc4, 0xfa, 0xa5, 0xfc, 0x57, 0xfc, 0xd0, 0xfd, 0x69, 0xfe, 0x35, 0xfe, + 0xc8, 0x00, 0x83, 0xff, 0x0c, 0xfc, 0xd5, 0xf8, 0xe5, 0xf4, 0x7c, 0xf3, + 0x77, 0xf6, 0xb2, 0xf8, 0x4d, 0x00, 0xe0, 0x08, 0x71, 0x11, 0xc5, 0x18, + 0xc5, 0x1d, 0xad, 0x1c, 0x49, 0x18, 0x7b, 0x11, 0x61, 0x09, 0xa0, 0x02, + 0x6e, 0xfc, 0x93, 0xf5, 0x1f, 0xf2, 0xfa, 0xef, 0x1f, 0xf1, 0x0e, 0xf6, + 0x77, 0xfa, 0xec, 0xfe, 0x37, 0x03, 0x19, 0x05, 0xaa, 0x06, 0xb2, 0x05, + 0x89, 0x03, 0xea, 0x01, 0xf0, 0xfc, 0xe6, 0xf7, 0xa8, 0xf0, 0xa0, 0xe5, + 0x7c, 0xd8, 0xdf, 0xcb, 0xc5, 0xc2, 0x13, 0xc5, 0x09, 0xd1, 0x2f, 0xe6, + 0xce, 0xfb, 0x7d, 0x0c, 0xaa, 0x19, 0x8a, 0x22, 0x39, 0x28, 0x00, 0x2c, + 0xf1, 0x24, 0xea, 0x1d, 0x0d, 0x16, 0xd3, 0x0f, 0xda, 0x0d, 0xa9, 0x08, + 0x2d, 0x05, 0x57, 0x01, 0x95, 0xff, 0x53, 0xff, 0x46, 0x00, 0xdc, 0x00, + 0x34, 0xfe, 0xa9, 0xfa, 0x90, 0xf4, 0xc7, 0xf1, 0x95, 0xf0, 0x9b, 0xf1, + 0x12, 0xf5, 0x74, 0xfa, 0x15, 0x01, 0x00, 0x0a, 0x0a, 0x12, 0x54, 0x17, + 0xef, 0x19, 0xf1, 0x17, 0x59, 0x12, 0x97, 0x0d, 0xa0, 0x07, 0xc5, 0x03, + 0x53, 0x00, 0x2f, 0xfd, 0x4b, 0xfa, 0xb4, 0xf8, 0x67, 0xf8, 0x32, 0xf8, + 0xf6, 0xfa, 0x04, 0xfc, 0xfa, 0xfd, 0x1d, 0x01, 0xa7, 0x02, 0x01, 0x04, + 0xa6, 0x03, 0xa9, 0x02, 0x86, 0x01, 0x75, 0xff, 0x04, 0xf9, 0xff, 0xf0, + 0x1c, 0xe3, 0xc4, 0xd4, 0x09, 0xc7, 0x64, 0xc0, 0x7f, 0xc4, 0x34, 0xd2, + 0xa6, 0xe8, 0x5f, 0xfd, 0x55, 0x0d, 0x31, 0x1a, 0x01, 0x22, 0x4e, 0x29, + 0xbe, 0x2a, 0x6d, 0x27, 0x9e, 0x1e, 0x96, 0x17, 0x76, 0x11, 0x3a, 0x0b, + 0xc5, 0x09, 0xb9, 0x04, 0xc5, 0x03, 0x80, 0x03, 0x82, 0x02, 0x6a, 0x02, + 0xea, 0xfe, 0x34, 0xfa, 0xc5, 0xf5, 0xdd, 0xf0, 0xb9, 0xed, 0x6c, 0xed, + 0x0a, 0xef, 0xeb, 0xf0, 0xee, 0xf8, 0xea, 0xff, 0x69, 0x0a, 0xcc, 0x15, + 0xf4, 0x1b, 0x34, 0x1d, 0x24, 0x1d, 0xb2, 0x16, 0x8f, 0x0f, 0xa6, 0x0b, + 0x42, 0x04, 0x21, 0x01, 0x96, 0xfe, 0xd4, 0xfb, 0x90, 0xfa, 0xe6, 0xfa, + 0x8e, 0xf9, 0x8d, 0xfa, 0x21, 0xfb, 0x1e, 0xfb, 0x08, 0xfd, 0x92, 0xfe, + 0x4e, 0x00, 0x78, 0x04, 0x35, 0x05, 0xc5, 0x05, 0x5b, 0x02, 0x5a, 0xfc, + 0x9c, 0xf0, 0x35, 0xe1, 0x52, 0xd0, 0x06, 0xc3, 0x23, 0xc0, 0xd3, 0xc8, + 0x69, 0xdc, 0xbc, 0xf0, 0xbc, 0x03, 0x3a, 0x12, 0xa9, 0x1b, 0xcb, 0x1e, + 0x91, 0x1f, 0x30, 0x1b, 0x62, 0x16, 0x1a, 0x14, 0x40, 0x13, 0x1d, 0x13, + 0x66, 0x11, 0x41, 0x0f, 0x55, 0x0e, 0x86, 0x0d, 0x67, 0x0c, 0xc4, 0x07, + 0x1e, 0x04, 0x4b, 0xff, 0x11, 0xfa, 0x10, 0xf5, 0xbf, 0xee, 0x1a, 0xec, + 0xd4, 0xec, 0x01, 0xf1, 0xdc, 0xf7, 0x7a, 0xfe, 0x12, 0x06, 0x11, 0x09, + 0x49, 0x0d, 0xf7, 0x0d, 0xca, 0x0d, 0x43, 0x0c, 0x49, 0x0a, 0x25, 0x08, + 0x30, 0x08, 0xf2, 0x08, 0x1b, 0x09, 0xac, 0x07, 0x73, 0x04, 0x1f, 0x03, + 0xff, 0x00, 0xc1, 0xff, 0xc0, 0xfd, 0x78, 0xfb, 0x51, 0xfa, 0xb8, 0xfb, + 0x7f, 0xfe, 0x01, 0x03, 0x77, 0x07, 0x15, 0x07, 0x30, 0x05, 0x9a, 0xff, + 0x1a, 0xf7, 0xab, 0xeb, 0x67, 0xdd, 0x26, 0xce, 0xcb, 0xc4, 0x2f, 0xc3, + 0x54, 0xd0, 0x18, 0xe1, 0x7b, 0xf5, 0x3d, 0x04, 0xa4, 0x0a, 0x1b, 0x10, + 0x48, 0x14, 0x5c, 0x17, 0xc2, 0x17, 0x61, 0x13, 0x8b, 0x0e, 0x9d, 0x0d, + 0xe7, 0x10, 0x3f, 0x14, 0x73, 0x16, 0xcd, 0x16, 0xa4, 0x12, 0x1e, 0x13, + 0xaf, 0x10, 0xae, 0x0a, 0x13, 0x04, 0xc4, 0xf9, 0x02, 0xf1, 0x0a, 0xed, + 0x3e, 0xee, 0xf3, 0xf1, 0x4b, 0xf8, 0x39, 0xfb, 0xec, 0xfc, 0x64, 0xff, + 0xef, 0xff, 0x22, 0x03, 0x1f, 0x06, 0x6f, 0x06, 0xb1, 0x05, 0x48, 0x05, + 0x4a, 0x04, 0xe0, 0x05, 0xad, 0x09, 0x68, 0x0a, 0xda, 0x0a, 0x7a, 0x0a, + 0xf5, 0x04, 0x0b, 0x03, 0xa2, 0xff, 0x1c, 0xff, 0x29, 0xff, 0x4b, 0xff, + 0xe5, 0xff, 0x52, 0x01, 0x08, 0x05, 0xb1, 0x06, 0xb8, 0x07, 0x07, 0x06, + 0x88, 0x00, 0x64, 0xf9, 0xdc, 0xf1, 0xec, 0xe5, 0xfe, 0xd7, 0xec, 0xc6, + 0x22, 0xc3, 0x7d, 0xc9, 0x39, 0xd9, 0x6e, 0xf2, 0xea, 0xfd, 0x30, 0x0a, + 0x6e, 0x0b, 0x26, 0x0c, 0xa8, 0x09, 0xf4, 0x07, 0xe8, 0x05, 0x8a, 0x07, + 0x7f, 0x0e, 0xa5, 0x12, 0x18, 0x19, 0xf7, 0x1d, 0x75, 0x1c, 0x0d, 0x1d, + 0xc5, 0x17, 0xef, 0x11, 0x95, 0x0b, 0xae, 0x03, 0x56, 0xfc, 0x10, 0xf6, + 0x01, 0xf2, 0x45, 0xf3, 0xc9, 0xf8, 0x06, 0xfd, 0x06, 0x00, 0x24, 0xfe, + 0x02, 0xfb, 0x8f, 0xfa, 0xae, 0xf8, 0x65, 0xf8, 0xf2, 0xf9, 0xd6, 0xfb, + 0xba, 0xfe, 0x77, 0x04, 0x02, 0x06, 0xba, 0x08, 0x6a, 0x0a, 0x65, 0x0b, + 0x6c, 0x0b, 0x3a, 0x09, 0x15, 0x06, 0x42, 0x03, 0xe5, 0xff, 0xf9, 0xff, + 0xf2, 0x01, 0xde, 0x03, 0x60, 0x08, 0x58, 0x0a, 0xc3, 0x08, 0x90, 0x06, + 0x59, 0x05, 0xb9, 0x02, 0x48, 0x04, 0x24, 0x01, 0xfb, 0xf9, 0xf5, 0xef, + 0x23, 0xe1, 0xaa, 0xcf, 0x80, 0xc7, 0x3e, 0xc4, 0xa0, 0xcf, 0x84, 0xe4, + 0xb8, 0xf8, 0x5b, 0x05, 0x84, 0x07, 0xf2, 0x04, 0xb2, 0xff, 0x1b, 0xfe, + 0x92, 0x01, 0x3b, 0x02, 0xee, 0x0b, 0x38, 0x12, 0x78, 0x1a, 0x8f, 0x20, + 0xa6, 0x21, 0x60, 0x21, 0x39, 0x1c, 0xb0, 0x14, 0x8f, 0x0c, 0x1f, 0x02, + 0xbd, 0xfd, 0x3b, 0xfd, 0x70, 0xfb, 0x9a, 0xfc, 0xd3, 0xfd, 0x7d, 0xfe, + 0x96, 0x01, 0x37, 0xff, 0x75, 0xfa, 0xcc, 0xf4, 0x01, 0xf3, 0x26, 0xf5, + 0xd9, 0xf8, 0xe1, 0xfb, 0xbe, 0xfc, 0x40, 0xff, 0x43, 0x01, 0xe3, 0x05, + 0x50, 0x08, 0xfc, 0x08, 0xde, 0x07, 0xba, 0x03, 0x8d, 0x01, 0xd4, 0xff, + 0x87, 0xfd, 0x6d, 0x00, 0x0a, 0x03, 0x8c, 0x05, 0x21, 0x07, 0x3c, 0x07, + 0x40, 0x05, 0x6e, 0x05, 0x45, 0x03, 0x59, 0x02, 0x96, 0x02, 0xb0, 0x00, + 0x35, 0xff, 0x29, 0xfb, 0xeb, 0xed, 0xfd, 0xde, 0xe8, 0xd0, 0x0d, 0xc9, + 0x5d, 0xd3, 0xf5, 0xe6, 0xc1, 0xfa, 0x51, 0x07, 0x19, 0x07, 0x55, 0xfe, + 0xa3, 0xfa, 0xcf, 0xf4, 0x05, 0xf8, 0x63, 0xfe, 0x1b, 0x06, 0xa5, 0x10, + 0x1f, 0x17, 0xb1, 0x17, 0x5e, 0x18, 0x12, 0x1a, 0x07, 0x19, 0xaa, 0x17, + 0x7f, 0x12, 0xe8, 0x0b, 0x3b, 0x07, 0xdd, 0x03, 0xe1, 0x00, 0x5a, 0x03, + 0xe2, 0x04, 0xef, 0x05, 0xc7, 0x05, 0xbc, 0x01, 0xc0, 0xfb, 0x68, 0xf6, + 0x07, 0xf4, 0x18, 0xf3, 0x58, 0xf5, 0xb7, 0xf9, 0x8f, 0xfc, 0x5c, 0x00, + 0xe9, 0xfe, 0xea, 0xfe, 0xe5, 0xfd, 0xea, 0xfc, 0xe7, 0xfa, 0xde, 0xfa, + 0x45, 0xfb, 0x57, 0xfd, 0x71, 0x01, 0xe6, 0x03, 0x08, 0x09, 0x99, 0x0c, + 0xe9, 0x0c, 0x11, 0x0b, 0x5e, 0x07, 0xc7, 0x03, 0xd1, 0x02, 0x69, 0x03, + 0xc8, 0x04, 0xc1, 0x07, 0x78, 0x07, 0x72, 0x03, 0xa7, 0xfb, 0x27, 0xef, + 0x97, 0xe4, 0xde, 0xd6, 0xd8, 0xcf, 0x4d, 0xd3, 0x26, 0xdf, 0x9e, 0xf5, + 0x09, 0x05, 0xe2, 0x06, 0x7c, 0xfe, 0x3a, 0xf3, 0xc5, 0xed, 0x65, 0xf4, + 0x74, 0xfb, 0x2e, 0x04, 0xcb, 0x08, 0xb1, 0x0b, 0xdd, 0x10, 0x6f, 0x16, + 0x69, 0x1a, 0x94, 0x17, 0x89, 0x15, 0x3e, 0x10, 0xb1, 0x0d, 0x45, 0x0d, + 0x67, 0x0b, 0xb3, 0x0b, 0xde, 0x0b, 0xa2, 0x0a, 0xd4, 0x09, 0x5d, 0x07, + 0xaf, 0x04, 0x1a, 0xff, 0xe5, 0xf9, 0x94, 0xf6, 0xcd, 0xf5, 0x38, 0xfa, + 0x63, 0xfc, 0x17, 0xfc, 0xe7, 0xf8, 0xc9, 0xf5, 0x96, 0xf3, 0xe3, 0xf5, + 0x48, 0xf3, 0x3b, 0xf4, 0xba, 0xf8, 0xb0, 0xfb, 0x6b, 0xff, 0x4a, 0x02, + 0x97, 0x03, 0x94, 0x06, 0x89, 0x0b, 0xbc, 0x09, 0xef, 0x09, 0x18, 0x07, + 0xb9, 0x02, 0x5f, 0x03, 0x0f, 0x05, 0x02, 0x06, 0x91, 0x0b, 0x0d, 0x0c, + 0xf5, 0x0a, 0x3f, 0x02, 0x4d, 0xf9, 0x09, 0xeb, 0x7e, 0xde, 0xfd, 0xd7, + 0x4d, 0xd5, 0x9b, 0xe0, 0xa0, 0xf4, 0xa4, 0x04, 0xbc, 0x09, 0xa0, 0x03, + 0xdc, 0xf2, 0xf1, 0xe7, 0x41, 0xe9, 0x21, 0xef, 0x41, 0xfb, 0x5c, 0x05, + 0x36, 0x09, 0xeb, 0x10, 0x49, 0x13, 0xbb, 0x14, 0xad, 0x16, 0xf3, 0x14, + 0x87, 0x0f, 0x22, 0x0f, 0x3e, 0x0a, 0x63, 0x09, 0xdc, 0x0b, 0xf0, 0x0d, + 0x3f, 0x12, 0xbc, 0x14, 0xc1, 0x10, 0x0a, 0x0a, 0x5d, 0x03, 0xed, 0xfa, + 0x08, 0xf8, 0x19, 0xf6, 0xc9, 0xf9, 0x52, 0xfd, 0xb3, 0xfd, 0x7e, 0xfb, + 0x0a, 0xf9, 0x63, 0xf9, 0xab, 0xf7, 0xa7, 0xf7, 0x67, 0xf5, 0xe3, 0xee, + 0xa6, 0xf0, 0xb2, 0xf4, 0x28, 0xfb, 0x14, 0x03, 0x71, 0x05, 0xbd, 0x06, + 0xb7, 0x05, 0x4c, 0x03, 0x93, 0x02, 0x36, 0x02, 0x13, 0x04, 0xba, 0x09, + 0x90, 0x0d, 0xc6, 0x0b, 0x69, 0x0a, 0x96, 0x06, 0xdf, 0x03, 0xd0, 0x01, + 0xf3, 0xf9, 0xe3, 0xef, 0x9f, 0xe5, 0x8c, 0xdb, 0xb2, 0xde, 0x26, 0xec, + 0xf2, 0xfa, 0x89, 0x05, 0x6b, 0x02, 0x15, 0xf5, 0x17, 0xea, 0x30, 0xe8, + 0xa0, 0xef, 0x4d, 0xf6, 0xdd, 0xfc, 0xc6, 0x02, 0x1e, 0x07, 0xe1, 0x0b, + 0x74, 0x0e, 0x43, 0x0f, 0xfd, 0x0a, 0x3d, 0x0d, 0x0b, 0x09, 0x9e, 0x0a, + 0x42, 0x08, 0xe6, 0x0c, 0x80, 0x0e, 0x0a, 0x14, 0x05, 0x12, 0xe4, 0x0f, + 0x5e, 0x0e, 0x51, 0x09, 0x14, 0x05, 0x54, 0xff, 0xba, 0xfb, 0x52, 0xfb, + 0xd6, 0x01, 0x02, 0x03, 0xf0, 0x04, 0x01, 0x00, 0x80, 0xf9, 0xc7, 0xf2, + 0xdc, 0xee, 0x2c, 0xef, 0xa3, 0xed, 0xf2, 0xf1, 0x6d, 0xf3, 0xf1, 0xf6, + 0x11, 0xfb, 0x47, 0xff, 0x18, 0x02, 0x83, 0x00, 0x15, 0xff, 0x2c, 0x00, + 0x33, 0x03, 0xd8, 0x07, 0x09, 0x0c, 0x22, 0x0b, 0x3e, 0x0f, 0x1b, 0x11, + 0x79, 0x15, 0x5f, 0x12, 0x39, 0x10, 0xcd, 0x03, 0x44, 0xfc, 0x87, 0xf3, + 0xe7, 0xea, 0xc4, 0xe1, 0x9f, 0xe0, 0xfa, 0xe7, 0xfe, 0xf8, 0xc1, 0x03, + 0x28, 0x06, 0x4f, 0xf9, 0xe2, 0xe6, 0xe4, 0xdf, 0xd8, 0xe1, 0x2a, 0xec, + 0xba, 0xf8, 0x97, 0x02, 0x60, 0x06, 0xc8, 0x07, 0x77, 0x06, 0x47, 0x01, + 0x71, 0x03, 0x0e, 0x0a, 0xb7, 0x08, 0xf7, 0x09, 0x59, 0x07, 0x22, 0x07, + 0x34, 0x10, 0xcb, 0x14, 0x1d, 0x18, 0xb4, 0x16, 0xa0, 0x0f, 0xd3, 0x0b, + 0xb6, 0x07, 0xff, 0x04, 0x33, 0x01, 0xd5, 0x02, 0x85, 0x04, 0xac, 0x07, + 0xe2, 0x06, 0xc7, 0x00, 0x00, 0xfd, 0x05, 0xf7, 0x81, 0xf3, 0x9a, 0xee, + 0x48, 0xec, 0x88, 0xee, 0x3b, 0xf5, 0x65, 0xf7, 0x8f, 0xfc, 0x9c, 0xfa, + 0x15, 0xfc, 0x99, 0xfb, 0xe1, 0xf7, 0x4c, 0xf7, 0xbe, 0xfb, 0x78, 0x08, + 0x4c, 0x12, 0x93, 0x14, 0x4b, 0x11, 0xdc, 0x08, 0xd8, 0x09, 0xc4, 0x0f, + 0x08, 0x12, 0xe3, 0x11, 0x47, 0x09, 0xcd, 0x00, 0xf6, 0xf7, 0x1c, 0xef, + 0x46, 0xe9, 0x94, 0xe5, 0x4a, 0xeb, 0xfd, 0xf7, 0x32, 0x00, 0x7c, 0x02, + 0xb1, 0xf6, 0x6d, 0xe9, 0x9c, 0xe2, 0x52, 0xe4, 0xa6, 0xed, 0x87, 0xf8, + 0x77, 0x00, 0x4c, 0x05, 0xa9, 0x02, 0x13, 0x04, 0xc2, 0xfb, 0x8b, 0xff, + 0x79, 0x00, 0x48, 0x06, 0xae, 0x0a, 0x79, 0x0e, 0xe7, 0x0e, 0x40, 0x10, + 0x32, 0x14, 0x2f, 0x16, 0x3b, 0x15, 0xbf, 0x10, 0xe4, 0x07, 0x18, 0x05, + 0x98, 0x04, 0x94, 0x08, 0xc2, 0x0b, 0x79, 0x0b, 0xbe, 0x09, 0x61, 0x05, + 0xbf, 0xff, 0x4a, 0xf8, 0xa5, 0xf1, 0x79, 0xf1, 0x04, 0xf1, 0xcf, 0xf4, + 0x23, 0xf8, 0xbc, 0xf6, 0xae, 0xf6, 0x51, 0xf4, 0xca, 0xf2, 0x4f, 0xf2, + 0xc4, 0xf1, 0x8f, 0xf4, 0xdc, 0xf7, 0x07, 0x00, 0xb6, 0x07, 0x5a, 0x0c, + 0x1e, 0x10, 0xdd, 0x10, 0x1a, 0x10, 0x08, 0x0f, 0x27, 0x0c, 0x55, 0x0b, + 0x49, 0x0c, 0xc7, 0x0e, 0xdf, 0x10, 0x5f, 0x0d, 0xcc, 0x07, 0x72, 0xfe, + 0x63, 0xf5, 0x02, 0xe7, 0x95, 0xdf, 0xbf, 0xe1, 0xc7, 0xee, 0xa3, 0xfe, + 0x23, 0x07, 0x1c, 0xff, 0xd7, 0xeb, 0x52, 0xe0, 0x36, 0xe0, 0xf5, 0xea, + 0xd0, 0xf9, 0x26, 0x00, 0x8e, 0x01, 0xf2, 0xfc, 0x8a, 0xff, 0xc5, 0xfd, + 0x6d, 0x01, 0x40, 0x01, 0xc0, 0x04, 0x9e, 0x06, 0x82, 0x0a, 0x6b, 0x0d, + 0xd4, 0x0e, 0x72, 0x0e, 0xa3, 0x0f, 0xfc, 0x0e, 0x86, 0x0f, 0x54, 0x0e, + 0x50, 0x0b, 0x01, 0x06, 0xc5, 0x03, 0xc5, 0x04, 0x1d, 0x07, 0x18, 0x09, + 0x73, 0x08, 0xf6, 0x02, 0x21, 0xfc, 0xbe, 0xf8, 0x9b, 0xf4, 0xc3, 0xf5, + 0x0f, 0xf7, 0x1e, 0xf6, 0x4a, 0xf8, 0x38, 0xf5, 0xa7, 0xf3, 0x50, 0xf3, + 0x2f, 0xf2, 0x77, 0xf4, 0xad, 0xfb, 0xcd, 0xfd, 0x66, 0x02, 0x35, 0x05, + 0x57, 0x06, 0x5e, 0x0a, 0xee, 0x0b, 0x8f, 0x0e, 0xd0, 0x0d, 0xcd, 0x11, + 0x83, 0x10, 0xa5, 0x0d, 0xda, 0x0d, 0x8c, 0x0d, 0xf7, 0x0c, 0xc4, 0x08, + 0x0c, 0x03, 0x0e, 0xf9, 0xae, 0xe9, 0x77, 0xe2, 0x8f, 0xdf, 0x5c, 0xec, + 0x5e, 0xfb, 0xbd, 0x07, 0x41, 0x04, 0x9c, 0xf7, 0xee, 0xe4, 0x56, 0xdc, + 0x27, 0xdf, 0x5d, 0xef, 0x94, 0xff, 0x3f, 0x07, 0x48, 0x0b, 0x79, 0x01, + 0x6b, 0x00, 0xcb, 0xf9, 0x8c, 0xfb, 0x42, 0x00, 0x29, 0x04, 0x3c, 0x0d, + 0xc1, 0x0d, 0xf5, 0x0e, 0x10, 0x0e, 0x8c, 0x0b, 0x71, 0x09, 0x18, 0x08, + 0x29, 0x09, 0x1a, 0x0a, 0x6b, 0x0a, 0x76, 0x09, 0x48, 0x05, 0x00, 0x03, + 0x03, 0x08, 0xc4, 0x07, 0xfb, 0x05, 0xb9, 0x00, 0xd0, 0xf7, 0x8e, 0xf5, + 0x54, 0xf2, 0xb6, 0xf9, 0xb1, 0xfb, 0x31, 0xfc, 0xf3, 0xf9, 0xc8, 0xf3, + 0x85, 0xf1, 0xa8, 0xf2, 0xf6, 0xf4, 0x8f, 0xf8, 0xb7, 0xfd, 0x80, 0x01, + 0x89, 0x03, 0xce, 0x04, 0xc7, 0x03, 0x62, 0x05, 0xcd, 0x08, 0x0f, 0x0c, + 0x58, 0x10, 0x75, 0x0f, 0x0b, 0x0c, 0xef, 0x09, 0x0d, 0x09, 0xc9, 0x09, + 0x07, 0x08, 0x87, 0x06, 0xdc, 0x03, 0xd1, 0xfd, 0x37, 0xf5, 0x6b, 0xe9, + 0xb9, 0xdf, 0xca, 0xe3, 0x5c, 0xf5, 0x6a, 0x05, 0x60, 0x0c, 0x9e, 0x02, + 0xf4, 0xf0, 0x5f, 0xe4, 0xba, 0xe5, 0xa4, 0xed, 0xec, 0xfb, 0x9b, 0x02, + 0xe7, 0x0a, 0x1c, 0x0b, 0x26, 0x04, 0xf8, 0x02, 0x41, 0xfa, 0x33, 0xf9, + 0x0d, 0xfe, 0x85, 0x05, 0xf2, 0x0b, 0xba, 0x0e, 0xf4, 0x0c, 0xbb, 0x09, + 0xd1, 0x07, 0x16, 0x04, 0x1d, 0x03, 0xeb, 0x03, 0x98, 0x04, 0xa3, 0x05, + 0xf9, 0x06, 0xa2, 0x05, 0x7b, 0x05, 0x36, 0x04, 0x5e, 0x00, 0xb8, 0xfd, + 0x3f, 0xfb, 0xf1, 0xfb, 0xb5, 0xfb, 0x9c, 0xfb, 0xfe, 0xfc, 0xe2, 0xfa, + 0x0d, 0xfb, 0x73, 0xf7, 0x1b, 0xf7, 0x74, 0xf5, 0xed, 0xf8, 0x06, 0xfc, + 0xfa, 0x00, 0x7e, 0x02, 0x9d, 0x01, 0x78, 0x01, 0x4c, 0xff, 0x27, 0x01, + 0x15, 0x07, 0xd3, 0x08, 0x51, 0x0c, 0x0f, 0x0e, 0xcc, 0x0c, 0xec, 0x0a, + 0xee, 0x09, 0x62, 0x04, 0x93, 0x07, 0x04, 0x08, 0x5b, 0x09, 0xde, 0x08, + 0x07, 0x02, 0x9b, 0xf8, 0x68, 0xef, 0x62, 0xea, 0x61, 0xe6, 0xab, 0xf2, + 0xa1, 0xfc, 0x49, 0x0c, 0x47, 0x0b, 0x19, 0xfe, 0x05, 0xee, 0xc4, 0xe5, + 0x94, 0xe8, 0x56, 0xf7, 0x44, 0x03, 0x00, 0x0c, 0x0c, 0x0c, 0xc8, 0x06, + 0x7a, 0xfe, 0x6c, 0xf9, 0xf1, 0xf6, 0x87, 0xfd, 0xc0, 0x01, 0xf5, 0x07, + 0x44, 0x08, 0xcf, 0x05, 0xaf, 0xff, 0x2c, 0x00, 0xbb, 0xff, 0x3f, 0x03, + 0x2c, 0x06, 0x52, 0x03, 0xcf, 0x01, 0x0c, 0xfd, 0xb4, 0xfa, 0xf1, 0xfd, + 0xe5, 0x02, 0xc9, 0x02, 0x23, 0x05, 0x45, 0xff, 0x88, 0xfa, 0xfa, 0xf9, + 0x4e, 0xf8, 0xe1, 0xfb, 0x39, 0xff, 0x6d, 0x01, 0x45, 0x00, 0x85, 0xfc, + 0xc6, 0xfa, 0xeb, 0xf7, 0xa4, 0xfa, 0x95, 0xfd, 0xcd, 0x01, 0x37, 0x03, + 0x91, 0x03, 0xaa, 0x02, 0x4d, 0x02, 0xd4, 0x01, 0xef, 0x03, 0xe6, 0x05, + 0x95, 0x09, 0x28, 0x0d, 0x03, 0x0d, 0xb1, 0x0a, 0x9d, 0x08, 0x3a, 0x07, + 0x98, 0x08, 0xf7, 0x0a, 0x67, 0x0c, 0xd9, 0x09, 0x1a, 0x03, 0xe8, 0xfb, + 0xa2, 0xf4, 0xdb, 0xf2, 0xe7, 0xf2, 0xd0, 0xf5, 0xbc, 0xf7, 0xe1, 0x02, + 0x32, 0x09, 0x04, 0x0b, 0xd5, 0xff, 0x98, 0xf0, 0x71, 0xeb, 0xe2, 0xec, + 0xa9, 0xfa, 0x8f, 0x05, 0x2f, 0x0c, 0xa4, 0x0a, 0x2f, 0x05, 0x26, 0xfb, + 0x14, 0xf6, 0x0b, 0xf0, 0x37, 0xf4, 0x6d, 0xfd, 0x45, 0x06, 0x26, 0x09, + 0x0e, 0x07, 0x3f, 0xfb, 0x8c, 0xf5, 0x1c, 0xf5, 0x50, 0xfa, 0x87, 0x00, + 0x2a, 0x03, 0x00, 0x00, 0x77, 0xfc, 0x19, 0xf9, 0x01, 0xfb, 0x19, 0xfd, + 0x7c, 0x00, 0x16, 0x02, 0x6e, 0x01, 0xbf, 0xfc, 0xcc, 0xf8, 0x0d, 0xfa, + 0xf9, 0xfc, 0x1b, 0x00, 0x14, 0x03, 0x47, 0x00, 0xf6, 0xfd, 0x1b, 0xfa, + 0x3e, 0xf9, 0xa9, 0xf6, 0x3e, 0xfd, 0x4b, 0x02, 0x4a, 0x06, 0x88, 0x06, + 0x03, 0x03, 0xa5, 0xff, 0xb4, 0xfc, 0x7e, 0xff, 0x97, 0x02, 0x5b, 0x07, + 0x7c, 0x0a, 0xc4, 0x0c, 0xe6, 0x0c, 0x38, 0x0a, 0x26, 0x07, 0x83, 0x06, + 0x3b, 0x07, 0xee, 0x0a, 0x99, 0x0c, 0xaa, 0x0c, 0x7a, 0x07, 0xdf, 0x00, + 0x85, 0xf9, 0x7e, 0xf7, 0xf8, 0xf4, 0x02, 0xfa, 0x18, 0xff, 0x3c, 0x08, + 0xe7, 0x0b, 0x21, 0x08, 0xdb, 0xfd, 0xc0, 0xf2, 0xf6, 0xef, 0xfd, 0xf5, + 0x75, 0x00, 0x0b, 0x09, 0xdb, 0x0a, 0x47, 0x05, 0x6b, 0xfb, 0x20, 0xf3, + 0x07, 0xef, 0xc5, 0xf4, 0x9c, 0xfa, 0x24, 0x01, 0x59, 0x02, 0x31, 0xff, + 0x94, 0xfa, 0x0c, 0xf7, 0xb5, 0xf4, 0xd8, 0xf5, 0xa9, 0xf7, 0xe8, 0xfa, + 0xcb, 0xfd, 0x58, 0xfd, 0x4a, 0xf9, 0x55, 0xf8, 0xb7, 0xf8, 0x21, 0xfd, + 0xda, 0xff, 0xad, 0xfe, 0xb2, 0xfb, 0x8c, 0xf9, 0x4f, 0xfa, 0x79, 0xfe, + 0x48, 0x01, 0x09, 0x03, 0xab, 0x02, 0x1e, 0x00, 0xa9, 0xfd, 0xb2, 0xfc, + 0x2d, 0xfb, 0x19, 0xff, 0xf3, 0x02, 0xe5, 0x07, 0x76, 0x08, 0x4f, 0x04, + 0xbe, 0xff, 0xeb, 0xfc, 0x9d, 0xfe, 0x6c, 0x02, 0x51, 0x07, 0x40, 0x0a, + 0x51, 0x0a, 0xec, 0x07, 0x2f, 0x04, 0xa0, 0x02, 0x61, 0x05, 0x28, 0x08, + 0x24, 0x0d, 0x28, 0x0d, 0x8d, 0x0a, 0xdc, 0x06, 0x97, 0x04, 0x27, 0x04, + 0x25, 0x05, 0xe1, 0x04, 0x05, 0x04, 0xaf, 0xff, 0xe3, 0xfa, 0xc0, 0xf7, + 0x87, 0xf8, 0xfc, 0xff, 0xd4, 0x07, 0x5f, 0x0a, 0xf4, 0x02, 0x38, 0xf9, + 0x50, 0xf4, 0xef, 0xf4, 0xf3, 0xfb, 0x2c, 0x01, 0xf5, 0x04, 0x29, 0x04, + 0x8f, 0xff, 0x8c, 0xf8, 0x3b, 0xf4, 0x0e, 0xf1, 0x16, 0xf5, 0x59, 0xfa, + 0x2f, 0xff, 0x27, 0xff, 0x4b, 0xfc, 0x91, 0xf6, 0x56, 0xf2, 0x8c, 0xf2, + 0x7a, 0xf5, 0xd1, 0xf7, 0x0b, 0xfc, 0xaa, 0xfd, 0x41, 0xfc, 0x25, 0xfa, + 0x8b, 0xf8, 0x0d, 0xf9, 0x2e, 0xfb, 0xaa, 0xfc, 0xda, 0xfd, 0x9f, 0xfe, + 0x0f, 0xfe, 0xf1, 0xff, 0xfe, 0xff, 0xbb, 0x00, 0x98, 0x00, 0x5d, 0x00, + 0x68, 0x01, 0xc8, 0x00, 0xdd, 0x01, 0x7c, 0x01, 0xac, 0x03, 0xf5, 0x04, + 0x8a, 0x05, 0x04, 0x03, 0xa4, 0x01, 0xa3, 0x01, 0xde, 0x03, 0xe7, 0x03, + 0xe6, 0x05, 0x5a, 0x06, 0x7c, 0x06, 0xee, 0x06, 0x17, 0x07, 0x3f, 0x06, + 0x74, 0x06, 0xd5, 0x06, 0x7c, 0x0a, 0xe2, 0x0a, 0x25, 0x0b, 0x4e, 0x08, + 0xa2, 0x07, 0x54, 0x05, 0x74, 0x06, 0xa0, 0x05, 0x9c, 0x04, 0x1c, 0x02, + 0x22, 0x00, 0xab, 0xfd, 0x38, 0xfb, 0x96, 0xfa, 0xee, 0xfc, 0xfe, 0x04, + 0x5a, 0x09, 0xfb, 0x08, 0xe7, 0xff, 0x24, 0xf7, 0xb0, 0xf0, 0xb7, 0xf8, + 0x16, 0x00, 0xbc, 0x08, 0x0d, 0x07, 0x00, 0xff, 0x86, 0xf6, 0xf2, 0xf2, + 0x16, 0xf2, 0x0f, 0xf6, 0x22, 0xf8, 0x35, 0xfb, 0xc8, 0xfb, 0xb5, 0xfa, + 0xa9, 0xf5, 0xea, 0xf1, 0x80, 0xef, 0x21, 0xf2, 0xbd, 0xf6, 0x9b, 0xfb, + 0x1f, 0xfb, 0x94, 0xf9, 0xeb, 0xf6, 0x96, 0xf7, 0x4b, 0xfa, 0xa4, 0xfd, + 0x13, 0xfe, 0x0e, 0xfe, 0x62, 0xfd, 0x8c, 0xfe, 0x37, 0x01, 0xe4, 0x01, + 0xa9, 0x01, 0xfe, 0x01, 0x88, 0x01, 0xd2, 0x03, 0x6f, 0x04, 0xc9, 0x03, + 0x43, 0x03, 0x87, 0x06, 0x33, 0x09, 0x8f, 0x0b, 0xb9, 0x09, 0xab, 0x04, + 0xfd, 0x01, 0xb0, 0x01, 0x98, 0x05, 0x63, 0x0a, 0xae, 0x0d, 0xc2, 0x0c, + 0xef, 0x08, 0xb2, 0x03, 0x0f, 0x01, 0xd9, 0x02, 0x6b, 0x06, 0x60, 0x0b, + 0x57, 0x0f, 0xdc, 0x0d, 0x48, 0x09, 0x8c, 0x06, 0x3e, 0x03, 0xb1, 0x03, + 0x88, 0x04, 0xc4, 0x05, 0xf9, 0x06, 0xa3, 0x06, 0x65, 0x02, 0x14, 0xfd, + 0x88, 0xfa, 0x93, 0xf9, 0x91, 0xfd, 0x6d, 0xff, 0xef, 0x02, 0x3a, 0x03, + 0xe6, 0x00, 0xf5, 0xfc, 0xce, 0xf8, 0x45, 0xf8, 0xf0, 0xf9, 0x11, 0xfb, + 0xfc, 0xfe, 0x16, 0xff, 0x0a, 0xff, 0xe3, 0xfa, 0x0a, 0xf7, 0x67, 0xf3, + 0xdf, 0xf3, 0xd1, 0xf5, 0xd0, 0xfa, 0x4b, 0xfc, 0x23, 0xfc, 0xc2, 0xf7, + 0xb6, 0xf4, 0xc1, 0xf2, 0x18, 0xf4, 0x06, 0xf8, 0x8e, 0xfa, 0xc1, 0xfb, + 0xda, 0xfb, 0x97, 0xfa, 0xd6, 0xfa, 0x49, 0xfa, 0xa5, 0xfb, 0x42, 0xfd, + 0x97, 0xfe, 0xc3, 0xff, 0x1f, 0xff, 0xc5, 0xff, 0xa2, 0x00, 0x70, 0x02, + 0xe3, 0x03, 0x64, 0x04, 0x87, 0x03, 0xdd, 0x02, 0xea, 0x01, 0x41, 0x03, + 0x9d, 0x04, 0x18, 0x06, 0x56, 0x06, 0x79, 0x06, 0x54, 0x06, 0xed, 0x04, + 0x1e, 0x04, 0x57, 0x04, 0xf6, 0x03, 0xc6, 0x06, 0xfe, 0x07, 0xf5, 0x06, + 0x77, 0x06, 0x50, 0x05, 0x3f, 0x05, 0x10, 0x07, 0xe6, 0x07, 0xa4, 0x07, + 0x9a, 0x08, 0x0d, 0x08, 0x97, 0x08, 0x91, 0x08, 0x5d, 0x07, 0x66, 0x06, + 0xd3, 0x04, 0x47, 0x05, 0x41, 0x04, 0x9e, 0x03, 0xb5, 0x02, 0xa1, 0x01, + 0xa2, 0x00, 0xae, 0xfe, 0x13, 0xfe, 0xe0, 0xfe, 0x0d, 0x02, 0xd8, 0x04, + 0xa6, 0x04, 0xb5, 0x01, 0x7f, 0xfd, 0x51, 0xfa, 0x48, 0xfa, 0x63, 0xfc, + 0x93, 0xff, 0x92, 0x01, 0x7f, 0x00, 0x0f, 0xfd, 0xb3, 0xf9, 0x49, 0xf6, + 0xa5, 0xf5, 0x00, 0xf7, 0x30, 0xf9, 0xee, 0xfa, 0xe8, 0xfa, 0x71, 0xf8, + 0xe7, 0xf5, 0xe7, 0xf3, 0x0f, 0xf4, 0xaf, 0xf5, 0xda, 0xf7, 0xac, 0xf9, + 0xd7, 0xf9, 0xa4, 0xf8, 0x58, 0xf8, 0xc3, 0xf8, 0x88, 0xfa, 0xfd, 0xfb, + 0x91, 0xfd, 0xeb, 0xfd, 0x5a, 0xfd, 0xd7, 0xfc, 0x0c, 0xfe, 0x59, 0xff, + 0x15, 0x01, 0x65, 0x01, 0xdb, 0x01, 0xa1, 0x01, 0xfc, 0x01, 0x95, 0x02, + 0xee, 0x03, 0x2e, 0x05, 0x62, 0x05, 0x7c, 0x06, 0x00, 0x06, 0xd2, 0x05, + 0x63, 0x05, 0xd9, 0x05, 0xb4, 0x05, 0x5a, 0x06, 0x72, 0x06, 0x17, 0x07, + 0x36, 0x07, 0x60, 0x07, 0x3b, 0x07, 0x0e, 0x07, 0x14, 0x06, 0xd7, 0x05, + 0xb4, 0x05, 0xa5, 0x07, 0x98, 0x08, 0x7b, 0x08, 0x05, 0x08, 0x55, 0x06, + 0xe3, 0x04, 0x02, 0x05, 0x51, 0x05, 0xce, 0x05, 0x0e, 0x05, 0x45, 0x04, + 0x42, 0x03, 0xe3, 0x02, 0x53, 0x02, 0x7f, 0x02, 0x18, 0x02, 0x72, 0x02, + 0x1b, 0x03, 0x89, 0x03, 0x8d, 0x03, 0x09, 0x04, 0xc6, 0x02, 0x45, 0x01, + 0x9f, 0xff, 0x8e, 0xfd, 0xd3, 0xfc, 0xc7, 0xfc, 0x9e, 0xfd, 0xb0, 0xfd, + 0x36, 0xfd, 0xaa, 0xfb, 0x77, 0xf9, 0x49, 0xf7, 0xf8, 0xf5, 0xe7, 0xf5, + 0x23, 0xf7, 0x0b, 0xf8, 0x29, 0xf8, 0x29, 0xf7, 0xbb, 0xf5, 0xfc, 0xf4, + 0x3c, 0xf5, 0x58, 0xf6, 0x3f, 0xf7, 0x07, 0xf8, 0x3f, 0xf8, 0xdc, 0xf7, + 0x4e, 0xf8, 0x58, 0xf9, 0xfe, 0xfa, 0x47, 0xfc, 0x10, 0xfd, 0x77, 0xfd, + 0x65, 0xfd, 0x81, 0xfd, 0xdc, 0xfe, 0x31, 0x00, 0xb5, 0x01, 0xfe, 0x02, + 0x2f, 0x03, 0x72, 0x02, 0xd9, 0x01, 0x09, 0x02, 0x2c, 0x03, 0x41, 0x04, + 0x3c, 0x05, 0xcd, 0x05, 0x9b, 0x05, 0x24, 0x05, 0xb5, 0x03, 0xbf, 0x03, + 0x3a, 0x04, 0xfa, 0x04, 0xbd, 0x05, 0x42, 0x05, 0x97, 0x04, 0xc3, 0x03, + 0xac, 0x03, 0xec, 0x03, 0x21, 0x04, 0xdb, 0x03, 0x95, 0x03, 0x58, 0x03, + 0xd4, 0x02, 0xa2, 0x02, 0xbd, 0x02, 0x70, 0x03, 0x04, 0x04, 0x4e, 0x04, + 0x42, 0x04, 0xa0, 0x03, 0x18, 0x03, 0x14, 0x03, 0x6b, 0x03, 0xca, 0x03, + 0x2f, 0x04, 0x81, 0x04, 0xbe, 0x04, 0xcf, 0x04, 0x5f, 0x04, 0xf2, 0x03, + 0x8b, 0x03, 0x4a, 0x03, 0x1b, 0x03, 0x1e, 0x03, 0xe8, 0x02, 0xbe, 0x02, + 0x5c, 0x02, 0xa7, 0x01, 0xfa, 0x00, 0x3e, 0x00, 0x99, 0xff, 0xe0, 0xfe, + 0x51, 0xfe, 0xb5, 0xfd, 0x1e, 0xfd, 0x8a, 0xfc, 0xe3, 0xfb, 0x76, 0xfb, + 0x2d, 0xfb, 0xb6, 0xfa, 0x34, 0xfa, 0x7e, 0xf9, 0xe8, 0xf8, 0x37, 0xf8, + 0x69, 0xf8, 0xc2, 0xf8, 0x42, 0xf9, 0x4d, 0xf9, 0xa0, 0xf8, 0xa4, 0xf8, + 0xf7, 0xf8, 0x80, 0xf9, 0x8b, 0xfa, 0x62, 0xfb, 0xf3, 0xfb, 0x04, 0xfc, + 0x58, 0xfc, 0xb2, 0xfc, 0x55, 0xfd, 0x32, 0xfe, 0x23, 0xff, 0xde, 0xff, + 0x27, 0x00, 0x31, 0x00, 0x47, 0x00, 0x91, 0x00, 0x07, 0x01, 0xac, 0x01, + 0xe8, 0x01, 0xe2, 0x01, 0xcd, 0x01, 0x9f, 0x01, 0x99, 0x01, 0xc6, 0x01, + 0xfa, 0x01, 0xe2, 0x01, 0x80, 0x01, 0x2f, 0x01, 0xeb, 0x00, 0xb9, 0x00, + 0x76, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x70, 0x00, 0x92, 0x00, 0x93, 0x00, + 0x7b, 0x00, 0x6b, 0x00, 0x42, 0x00, 0x49, 0x00, 0x62, 0x00, 0x9c, 0x00, + 0x26, 0x01, 0xc7, 0x01, 0x46, 0x02, 0x9c, 0x02, 0x9b, 0x02, 0x9a, 0x02, + 0xbc, 0x02, 0x0d, 0x03, 0x7e, 0x03, 0xef, 0x03, 0x2f, 0x04, 0x45, 0x04, + 0x2f, 0x04, 0x26, 0x04, 0x2b, 0x04, 0x12, 0x04, 0x02, 0x04, 0xf4, 0x03, + 0xe2, 0x03, 0xad, 0x03, 0x69, 0x03, 0x10, 0x03, 0xc6, 0x02, 0x74, 0x02, + 0x11, 0x02, 0xa4, 0x01, 0x39, 0x01, 0xe6, 0x00, 0x87, 0x00, 0x12, 0x00, + 0x88, 0xff, 0x08, 0xff, 0xb0, 0xfe, 0x6a, 0xfe, 0x28, 0xfe, 0xd5, 0xfd, + 0x6b, 0xfd, 0x1c, 0xfd, 0xfc, 0xfc, 0xfd, 0xfc, 0x01, 0xfd, 0xe8, 0xfc, + 0xcb, 0xfc, 0x97, 0xfc, 0x7b, 0xfc, 0x86, 0xfc, 0xb9, 0xfc, 0xee, 0xfc, + 0x22, 0xfd, 0x35, 0xfd, 0x37, 0xfd, 0x40, 0xfd, 0x4d, 0xfd, 0x5e, 0xfd, + 0x75, 0xfd, 0xb0, 0xfd, 0xf8, 0xfd, 0x29, 0xfe, 0x32, 0xfe, 0x1c, 0xfe, + 0x25, 0xfe, 0x3e, 0xfe, 0x62, 0xfe, 0x73, 0xfe, 0x6b, 0xfe, 0x63, 0xfe, + 0x5a, 0xfe, 0x60, 0xfe, 0x88, 0xfe, 0xbf, 0xfe, 0xcb, 0xfe, 0xb9, 0xfe, + 0xb0, 0xfe, 0xaa, 0xfe, 0xc4, 0xfe, 0xeb, 0xfe, 0x21, 0xff, 0x49, 0xff, + 0x74, 0xff, 0x9c, 0xff, 0xb7, 0xff, 0xdd, 0xff, 0x1a, 0x00, 0x67, 0x00, + 0xca, 0x00, 0x18, 0x01, 0x47, 0x01, 0x69, 0x01, 0x83, 0x01, 0xb2, 0x01, + 0xf1, 0x01, 0x41, 0x02, 0x90, 0x02, 0xc0, 0x02, 0xca, 0x02, 0xd0, 0x02, + 0xe7, 0x02, 0x0f, 0x03, 0x3b, 0x03, 0x57, 0x03, 0x5b, 0x03, 0x53, 0x03, + 0x3e, 0x03, 0x21, 0x03, 0x0c, 0x03, 0x17, 0x03, 0x27, 0x03, 0x0d, 0x03, + 0xdb, 0x02, 0xa3, 0x02, 0x6b, 0x02, 0x40, 0x02, 0x28, 0x02, 0x16, 0x02, + 0xf9, 0x01, 0xe4, 0x01, 0xc2, 0x01, 0x96, 0x01, 0x57, 0x01, 0x1e, 0x01, + 0xf1, 0x00, 0xd3, 0x00, 0xbd, 0x00, 0xa1, 0x00, 0x7f, 0x00, 0x58, 0x00, + 0x32, 0x00, 0x11, 0x00, 0xe9, 0xff, 0xbe, 0xff, 0x98, 0xff, 0x81, 0xff, + 0x6e, 0xff, 0x61, 0xff, 0x4c, 0xff, 0x32, 0xff, 0x15, 0xff, 0xf5, 0xfe, + 0xd3, 0xfe, 0xb0, 0xfe, 0x99, 0xfe, 0x8c, 0xfe, 0x7a, 0xfe, 0x6a, 0xfe, + 0x57, 0xfe, 0x38, 0xfe, 0x17, 0xfe, 0xf4, 0xfd, 0xd9, 0xfd, 0xd4, 0xfd, + 0xd7, 0xfd, 0xdf, 0xfd, 0xea, 0xfd, 0xeb, 0xfd, 0xdf, 0xfd, 0xd4, 0xfd, + 0xda, 0xfd, 0xee, 0xfd, 0x0e, 0xfe, 0x30, 0xfe, 0x52, 0xfe, 0x6d, 0xfe, + 0x86, 0xfe, 0xa4, 0xfe, 0xc7, 0xfe, 0xfb, 0xfe, 0x2a, 0xff, 0x5a, 0xff, + 0x81, 0xff, 0xa6, 0xff, 0xca, 0xff, 0xf5, 0xff, 0x2c, 0x00, 0x5d, 0x00, + 0x85, 0x00, 0xa2, 0x00, 0xba, 0x00, 0xd9, 0x00, 0xf9, 0x00, 0x19, 0x01, + 0x33, 0x01, 0x40, 0x01, 0x49, 0x01, 0x4a, 0x01, 0x4c, 0x01, 0x5c, 0x01, + 0x6a, 0x01, 0x76, 0x01, 0x74, 0x01, 0x5d, 0x01, 0x46, 0x01, 0x38, 0x01, + 0x34, 0x01, 0x40, 0x01, 0x47, 0x01, 0x3e, 0x01, 0x28, 0x01, 0x19, 0x01, + 0x11, 0x01, 0x1a, 0x01, 0x25, 0x01, 0x2e, 0x01, 0x2c, 0x01, 0x1f, 0x01, + 0x14, 0x01, 0x0d, 0x01, 0x16, 0x01, 0x25, 0x01, 0x35, 0x01, 0x39, 0x01, + 0x31, 0x01, 0x1a, 0x01, 0x01, 0x01, 0xf3, 0x00, 0xf1, 0x00, 0xeb, 0x00, + 0xe1, 0x00, 0xcc, 0x00, 0xab, 0x00, 0x89, 0x00, 0x64, 0x00, 0x4c, 0x00, + 0x38, 0x00, 0x22, 0x00, 0x08, 0x00, 0xe9, 0xff, 0xbb, 0xff, 0x8b, 0xff, + 0x66, 0xff, 0x51, 0xff, 0x45, 0xff, 0x39, 0xff, 0x28, 0xff, 0x10, 0xff, + 0xf8, 0xfe, 0xe5, 0xfe, 0xda, 0xfe, 0xd4, 0xfe, 0xdd, 0xfe, 0xdf, 0xfe, + 0xe9, 0xfe, 0xf2, 0xfe, 0xf2, 0xfe, 0xf6, 0xfe, 0x01, 0xff, 0x11, 0xff, + 0x29, 0xff, 0x38, 0xff, 0x44, 0xff, 0x49, 0xff, 0x51, 0xff, 0x64, 0xff, + 0x6e, 0xff, 0x7e, 0xff, 0x87, 0xff, 0x93, 0xff, 0x9c, 0xff, 0xa0, 0xff, + 0xa8, 0xff, 0xb3, 0xff, 0xbc, 0xff, 0xc3, 0xff, 0xc6, 0xff, 0xc8, 0xff, + 0xcb, 0xff, 0xd2, 0xff, 0xe0, 0xff, 0xf0, 0xff, 0x00, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x14, 0x00, 0x21, 0x00, 0x32, 0x00, 0x43, 0x00, 0x60, 0x00, + 0x76, 0x00, 0x89, 0x00, 0x93, 0x00, 0x94, 0x00, 0x9e, 0x00, 0xb0, 0x00, + 0xc9, 0x00, 0xe0, 0x00, 0xe9, 0x00, 0xe9, 0x00, 0xe5, 0x00, 0xe3, 0x00, + 0xe5, 0x00, 0xee, 0x00, 0xf4, 0x00, 0xf4, 0x00, 0xee, 0x00, 0xdd, 0x00, + 0xce, 0x00, 0xcd, 0x00, 0xc9, 0x00, 0xc5, 0x00, 0xb9, 0x00, 0xa2, 0x00, + 0x8f, 0x00, 0x7d, 0x00, 0x72, 0x00, 0x6a, 0x00, 0x62, 0x00, 0x54, 0x00, + 0x43, 0x00, 0x2d, 0x00, 0x17, 0x00, 0xfe, 0xff, 0xee, 0xff, 0xeb, 0xff, + 0xe6, 0xff, 0xdf, 0xff, 0xcf, 0xff, 0xb6, 0xff, 0x9a, 0xff, 0x84, 0xff, + 0x79, 0xff, 0x7c, 0xff, 0x86, 0xff, 0x87, 0xff, 0x81, 0xff, 0x6f, 0xff, + 0x5f, 0xff, 0x54, 0xff, 0x55, 0xff, 0x5c, 0xff, 0x69, 0xff, 0x72, 0xff, + 0x74, 0xff, 0x6c, 0xff, 0x68, 0xff, 0x6a, 0xff, 0x72, 0xff, 0x7d, 0xff, + 0x89, 0xff, 0x97, 0xff, 0x9b, 0xff, 0x99, 0xff, 0x9b, 0xff, 0xa6, 0xff, + 0xb9, 0xff, 0xd1, 0xff, 0xe1, 0xff, 0xec, 0xff, 0xef, 0xff, 0xf5, 0xff, + 0xfe, 0xff, 0x0f, 0x00, 0x29, 0x00, 0x40, 0x00, 0x50, 0x00, 0x5b, 0x00, + 0x62, 0x00, 0x6e, 0x00, 0x7f, 0x00, 0x97, 0x00, 0xaa, 0x00, 0xbb, 0x00, + 0xc3, 0x00, 0xc5, 0x00, 0xc5, 0x00, 0xc9, 0x00, 0xd2, 0x00, 0xdf, 0x00, + 0xe7, 0x00, 0xe5, 0x00, 0xdc, 0x00, 0xcf, 0x00, 0xc1, 0x00, 0xb8, 0x00, + 0xb5, 0x00, 0xb2, 0x00, 0xac, 0x00, 0x99, 0x00, 0x84, 0x00, 0x6e, 0x00, + 0x5e, 0x00, 0x52, 0x00, 0x4a, 0x00, 0x3f, 0x00, 0x2f, 0x00, 0x19, 0x00, + 0x07, 0x00, 0xfb, 0xff, 0xed, 0xff, 0xe6, 0xff, 0xdc, 0xff, 0xd1, 0xff, + 0xc5, 0xff, 0xb8, 0xff, 0xaf, 0xff, 0xac, 0xff, 0xaa, 0xff, 0xa6, 0xff, + 0xa1, 0xff, 0x99, 0xff, 0x93, 0xff, 0x90, 0xff, 0x93, 0xff, 0x99, 0xff, + 0x9c, 0xff, 0x99, 0xff, 0x94, 0xff, 0x8f, 0xff, 0x8c, 0xff, 0x90, 0xff, + 0x98, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x9d, 0xff, 0x9c, 0xff, 0x99, 0xff, + 0x9c, 0xff, 0xa1, 0xff, 0xa9, 0xff, 0xb0, 0xff, 0xb3, 0xff, 0xb6, 0xff, + 0xb6, 0xff, 0xb7, 0xff, 0xbd, 0xff, 0xc5, 0xff, 0xcf, 0xff, 0xd7, 0xff, + 0xe0, 0xff, 0xe3, 0xff, 0xea, 0xff, 0xf4, 0xff, 0xfd, 0xff, 0x06, 0x00, + 0x0c, 0x00, 0x14, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x27, 0x00, 0x32, 0x00, + 0x3d, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x48, 0x00, 0x47, 0x00, + 0x4b, 0x00, 0x4f, 0x00, 0x53, 0x00, 0x52, 0x00, 0x4d, 0x00, 0x48, 0x00, + 0x42, 0x00, 0x3d, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x37, 0x00, 0x33, 0x00, + 0x2d, 0x00, 0x25, 0x00, 0x1f, 0x00, 0x18, 0x00, 0x16, 0x00, 0x14, 0x00, + 0x11, 0x00, 0x0d, 0x00, 0x06, 0x00, 0x01, 0x00, 0xfb, 0xff, 0xf6, 0xff, + 0xf4, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xed, 0xff, 0xe6, 0xff, 0xe1, 0xff, + 0xd8, 0xff, 0xd3, 0xff, 0xd5, 0xff, 0xd4, 0xff, 0xd5, 0xff, 0xd2, 0xff, + 0xcb, 0xff, 0xc4, 0xff, 0xbe, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xbe, 0xff, + 0xbf, 0xff, 0xbb, 0xff, 0xb4, 0xff, 0xad, 0xff, 0xaa, 0xff, 0xa9, 0xff, + 0xad, 0xff, 0xae, 0xff, 0xb1, 0xff, 0xb0, 0xff, 0xb1, 0xff, 0xaf, 0xff, + 0xb1, 0xff, 0xb3, 0xff, 0xbb, 0xff, 0xc3, 0xff, 0xc9, 0xff, 0xcd, 0xff, + 0xd2, 0xff, 0xd8, 0xff, 0xe0, 0xff, 0xe8, 0xff, 0xf1, 0xff, 0xfa, 0xff, + 0x02, 0x00, 0x09, 0x00, 0x0f, 0x00, 0x16, 0x00, 0x1e, 0x00, 0x26, 0x00, + 0x2e, 0x00, 0x33, 0x00, 0x36, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3f, 0x00, + 0x41, 0x00, 0x47, 0x00, 0x45, 0x00, 0x44, 0x00, 0x40, 0x00, 0x41, 0x00, + 0x3f, 0x00, 0x3e, 0x00, 0x3a, 0x00, 0x34, 0x00, 0x30, 0x00, 0x2a, 0x00, + 0x27, 0x00, 0x25, 0x00, 0x22, 0x00, 0x1e, 0x00, 0x1a, 0x00, 0x12, 0x00, + 0x0d, 0x00, 0x0a, 0x00, 0x07, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xfc, 0xff, 0xf2, 0xff, 0xed, 0xff, 0xed, 0xff, 0xea, 0xff, 0xea, 0xff, + 0xe7, 0xff, 0xe2, 0xff, 0xdb, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xd0, 0xff, + 0xd1, 0xff, 0xcf, 0xff, 0xcf, 0xff, 0xca, 0xff, 0xc6, 0xff, 0xc1, 0xff, + 0xc1, 0xff, 0xc1, 0xff, 0xbf, 0xff, 0xc0, 0xff, 0xbe, 0xff, 0xbc, 0xff, + 0xbb, 0xff, 0xbb, 0xff, 0xbe, 0xff, 0xbf, 0xff, 0xc1, 0xff, 0xc3, 0xff, + 0xc4, 0xff, 0xc7, 0xff, 0xca, 0xff, 0xca, 0xff, 0xcc, 0xff, 0xd4, 0xff, + 0xd5, 0xff, 0xda, 0xff, 0xdf, 0xff, 0xe4, 0xff, 0xe8, 0xff, 0xed, 0xff, + 0xf2, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x03, 0x00, 0x09, 0x00, + 0x0f, 0x00, 0x13, 0x00, 0x18, 0x00, 0x1c, 0x00, 0x1f, 0x00, 0x22, 0x00, + 0x27, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x30, 0x00, 0x32, 0x00, 0x37, 0x00, + 0x37, 0x00, 0x39, 0x00, 0x39, 0x00, 0x39, 0x00, 0x3b, 0x00, 0x3b, 0x00, + 0x3b, 0x00, 0x3a, 0x00, 0x39, 0x00, 0x39, 0x00, 0x38, 0x00, 0x35, 0x00, + 0x34, 0x00, 0x31, 0x00, 0x2e, 0x00, 0x2c, 0x00, 0x26, 0x00, 0x23, 0x00, + 0x1f, 0x00, 0x1c, 0x00, 0x17, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0f, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xed, 0xff, + 0xed, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xe1, 0xff, + 0xdf, 0xff, 0xdd, 0xff, 0xdb, 0xff, 0xd9, 0xff, 0xd6, 0xff, 0xd2, 0xff, + 0xd0, 0xff, 0xcd, 0xff, 0xcb, 0xff, 0xc9, 0xff, 0xc9, 0xff, 0xc8, 0xff, + 0xc6, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0xbf, 0xff, 0xbe, 0xff, 0xbe, 0xff, + 0xbf, 0xff, 0xbe, 0xff, 0xbd, 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xbe, 0xff, + 0xbf, 0xff, 0xc0, 0xff, 0xc1, 0xff, 0xc2, 0xff, 0xc4, 0xff, 0xc7, 0xff, + 0xca, 0xff, 0xcd, 0xff, 0xd1, 0xff, 0xd1, 0xff, 0xd5, 0xff, 0xd9, 0xff, + 0xda, 0xff, 0xde, 0xff, 0xe3, 0xff, 0xea, 0xff, 0xec, 0xff, 0xf3, 0xff, + 0xf6, 0xff, 0xfc, 0xff, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x0c, 0x00, + 0x11, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x22, 0x00, 0x27, 0x00, 0x2a, 0x00, + 0x30, 0x00, 0x36, 0x00, 0x3a, 0x00, 0x3c, 0x00, 0x41, 0x00, 0x42, 0x00, + 0x46, 0x00, 0x4a, 0x00, 0x4c, 0x00, 0x4e, 0x00, 0x53, 0x00, 0x53, 0x00, + 0x53, 0x00, 0x55, 0x00, 0x5a, 0x00, 0x58, 0x00, 0x59, 0x00, 0x56, 0x00, + 0x55, 0x00, 0x54, 0x00, 0x52, 0x00, 0x4f, 0x00, 0x4c, 0x00, 0x4b, 0x00, + 0x46, 0x00, 0x42, 0x00, 0x3e, 0x00, 0x3b, 0x00, 0x36, 0x00, 0x31, 0x00, + 0x2e, 0x00, 0x29, 0x00, 0x25, 0x00, 0x20, 0x00, 0x1f, 0x00, 0x18, 0x00, + 0x13, 0x00, 0x0f, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfd, 0xff, 0xf6, 0xff, 0xf3, 0xff, 0xef, 0xff, 0xeb, 0xff, 0xe5, 0xff, + 0xe3, 0xff, 0xdd, 0xff, 0xdb, 0xff, 0xd6, 0xff, 0xd2, 0xff, 0xcf, 0xff, + 0xcc, 0xff, 0xc9, 0xff, 0xc8, 0xff, 0xc4, 0xff, 0xc3, 0xff, 0xc0, 0xff, + 0xc0, 0xff, 0xbd, 0xff, 0xbc, 0xff, 0xbb, 0xff, 0xbb, 0xff, 0xbb, 0xff, + 0xbc, 0xff, 0xbd, 0xff, 0xbd, 0xff, 0xbc, 0xff, 0xbe, 0xff, 0xc0, 0xff, + 0xc0, 0xff, 0xc2, 0xff, 0xc6, 0xff, 0xc8, 0xff, 0xc7, 0xff, 0xcb, 0xff, + 0xd0, 0xff, 0xd2, 0xff, 0xd5, 0xff, 0xd8, 0xff, 0xda, 0xff, 0xdd, 0xff, + 0xe3, 0xff, 0xe7, 0xff, 0xea, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xf5, 0xff, + 0xf9, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x01, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x0b, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x10, 0x00, 0x13, 0x00, 0x17, 0x00, + 0x15, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x1d, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x1f, 0x00, + 0x1f, 0x00, 0x20, 0x00, 0x20, 0x00, 0x1d, 0x00, 0x1c, 0x00, 0x1b, 0x00, + 0x1b, 0x00, 0x1a, 0x00, 0x1a, 0x00, 0x19, 0x00, 0x17, 0x00, 0x16, 0x00, + 0x15, 0x00, 0x13, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x11, 0x00, + 0x10, 0x00, 0x12, 0x00, 0x11, 0x00, 0x13, 0x00, 0x0f, 0x00, 0x11, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x14, 0x00, 0x12, 0x00, 0x13, 0x00, 0x13, 0x00, + 0x12, 0x00, 0x14, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0e, 0x00, + 0x0f, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x09, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0xfc, 0xff, + 0xfb, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf2, 0xff, 0xf1, 0xff, + 0xf0, 0xff, 0xee, 0xff, 0xed, 0xff, 0xe9, 0xff, 0xe8, 0xff, 0xe6, 0xff, + 0xe4, 0xff, 0xe3, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xdd, 0xff, 0xd9, 0xff, + 0xda, 0xff, 0xdb, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xd8, 0xff, 0xda, 0xff, + 0xda, 0xff, 0xd9, 0xff, 0xdb, 0xff, 0xd8, 0xff, 0xdb, 0xff, 0xdb, 0xff, + 0xdb, 0xff, 0xdd, 0xff, 0xde, 0xff, 0xe1, 0xff, 0xe0, 0xff, 0xe2, 0xff, + 0xe3, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xf0, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfb, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x04, 0x00, 0x07, 0x00, + 0x08, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x13, 0x00, + 0x14, 0x00, 0x16, 0x00, 0x16, 0x00, 0x19, 0x00, 0x1b, 0x00, 0x1b, 0x00, + 0x1b, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1b, 0x00, 0x1c, 0x00, + 0x1b, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x1a, 0x00, 0x1a, 0x00, + 0x19, 0x00, 0x18, 0x00, 0x18, 0x00, 0x16, 0x00, 0x15, 0x00, 0x16, 0x00, + 0x15, 0x00, 0x14, 0x00, 0x12, 0x00, 0x12, 0x00, 0x11, 0x00, 0x0e, 0x00, + 0x0d, 0x00, 0x09, 0x00, 0x08, 0x00, 0x07, 0x00, 0x05, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf7, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf3, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xec, 0xff, 0xed, 0xff, 0xed, 0xff, + 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xec, 0xff, 0xec, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xed, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xee, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xf0, 0xff, 0xf2, 0xff, + 0xf2, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xf5, 0xff, 0xf6, 0xff, 0xf5, 0xff, + 0xf7, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x05, 0x00, 0x05, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0a, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0b, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x07, 0x00, + 0x08, 0x00, 0x07, 0x00, 0x08, 0x00, 0x06, 0x00, 0x05, 0x00, 0x03, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfd, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf0, 0xff, 0xef, 0xff, 0xec, 0xff, 0xea, 0xff, 0xe6, 0xff, 0xe6, 0xff, + 0xe4, 0xff, 0xe2, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xdc, 0xff, 0xdc, 0xff, + 0xd9, 0xff, 0xd6, 0xff, 0xd5, 0xff, 0xd5, 0xff, 0xd2, 0xff, 0xd1, 0xff, + 0xd0, 0xff, 0xd1, 0xff, 0xcd, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xcf, 0xff, + 0xd3, 0xff, 0xd0, 0xff, 0xd2, 0xff, 0xd3, 0xff, 0xd4, 0xff, 0xd6, 0xff, + 0xd7, 0xff, 0xd6, 0xff, 0xd6, 0xff, 0xd8, 0xff, 0xd8, 0xff, 0xda, 0xff, + 0xda, 0xff, 0xdd, 0xff, 0xdd, 0xff, 0xdf, 0xff, 0xe1, 0xff, 0xe4, 0xff, + 0xe4, 0xff, 0xe5, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xeb, 0xff, 0xec, 0xff, + 0xed, 0xff, 0xef, 0xff, 0xef, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf4, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xfb, 0xff, + 0xfd, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xf6, 0xff, + 0xf4, 0xff, 0xf1, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe9, 0xff, 0xe8, 0xff, + 0xe7, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe4, 0xff, 0xe2, 0xff, 0xdd, 0xff, + 0xdc, 0xff, 0xdc, 0xff, 0xd9, 0xff, 0xd9, 0xff, 0xdc, 0xff, 0xd8, 0xff, + 0xd3, 0xff, 0xd5, 0xff, 0xd1, 0xff, 0xd0, 0xff, 0xd0, 0xff, 0xcf, 0xff, + 0xcd, 0xff, 0xcf, 0xff, 0xcd, 0xff, 0xce, 0xff, 0xcd, 0xff, 0xcd, 0xff, + 0xcc, 0xff, 0xcb, 0xff, 0xcc, 0xff, 0xcb, 0xff, 0xcc, 0xff, 0xcc, 0xff, + 0xcc, 0xff, 0xcc, 0xff, 0xcd, 0xff, 0xd2, 0xff, 0xd0, 0xff, 0xd2, 0xff, + 0xd2, 0xff, 0xd4, 0xff, 0xd2, 0xff, 0xd5, 0xff, 0xd8, 0xff, 0xd8, 0xff, + 0xda, 0xff, 0xda, 0xff, 0xd7, 0xff, 0xd9, 0xff, 0xda, 0xff, 0xd9, 0xff, + 0xdb, 0xff, 0xdb, 0xff, 0xdd, 0xff, 0xdf, 0xff, 0xde, 0xff, 0xe0, 0xff, + 0xe1, 0xff, 0xe1, 0xff, 0xe2, 0xff, 0xe4, 0xff, 0xe5, 0xff, 0xe5, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe7, 0xff, 0xe9, 0xff, 0xeb, 0xff, + 0xe9, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xec, 0xff, 0xeb, 0xff, + 0xeb, 0xff, 0xed, 0xff, 0xee, 0xff, 0xed, 0xff, 0xeb, 0xff, 0xeb, 0xff, + 0xeb, 0xff, 0xeb, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xe9, 0xff, 0xeb, 0xff, + 0xeb, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xe9, 0xff, 0xea, 0xff, 0xe9, 0xff, + 0xea, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe5, 0xff, 0xe7, 0xff, + 0xe6, 0xff, 0xe7, 0xff, 0xe6, 0xff, 0xe7, 0xff, 0xe7, 0xff, 0xe5, 0xff, + 0xe7, 0xff, 0xe7, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe8, 0xff, 0xe7, 0xff, + 0xe9, 0xff, 0xe9, 0xff, 0xeb, 0xff, 0xea, 0xff, 0xea, 0xff, 0xec, 0xff, + 0xec, 0xff, 0xea, 0xff, 0xea, 0xff, 0xeb, 0xff, 0xed, 0xff, 0xee, 0xff, + 0xf1, 0xff, 0xf0, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf5, 0xff, + 0xf6, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x07, 0x00, 0x05, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x0b, 0x00, 0x0d, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x10, 0x00, + 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x16, 0x00, 0x17, 0x00, + 0x19, 0x00, 0x19, 0x00, 0x18, 0x00, 0x1b, 0x00, 0x1b, 0x00, 0x21, 0x00, + 0x24, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2a, 0x00, + 0x2c, 0x00, 0x30, 0x00, 0x30, 0x00, 0x35, 0x00, 0x38, 0x00, 0x3d, 0x00, + 0x45, 0x00, 0x47, 0x00, 0x4c, 0x00, 0x50, 0x00, 0x57, 0x00, 0x5d, 0x00, + 0x6a, 0x00, 0x80, 0x00, 0xa8, 0x00, 0xee, 0x00, 0x53, 0x01, 0x9a, 0x01, + 0x38, 0x02, 0xd9, 0x02, 0xf2, 0x03, 0x6c, 0x04, 0x74, 0x05, 0xa3, 0x04, + 0xfc, 0x00, 0x24, 0x00, 0x21, 0x00, 0x7f, 0xff, 0xc6, 0xff, 0xb8, 0x00, + 0xa9, 0xff, 0x7a, 0xff, 0xdd, 0x00, 0x46, 0x00, 0xa2, 0x00, 0xf2, 0xff, + 0xa0, 0xfe, 0x78, 0xfe, 0x26, 0xfb, 0x3c, 0xfe, 0x0e, 0x02, 0x5d, 0x00, + 0xc4, 0xff, 0x5d, 0xff, 0xda, 0xfe, 0xb9, 0xfe, 0xf8, 0xfe, 0xdc, 0xfe, + 0xfc, 0xfe, 0x7b, 0xff, 0xdc, 0x00, 0xf8, 0x00, 0x31, 0xff, 0x46, 0xff, + 0x0e, 0x00, 0x8c, 0xff, 0x7c, 0xfe, 0xae, 0xfe, 0x91, 0xff, 0xee, 0xff, + 0x39, 0x00, 0x2f, 0x00, 0x7e, 0x00, 0x74, 0xff, 0x18, 0x00, 0x8c, 0x00, + 0x34, 0x00, 0x2f, 0x00, 0x7a, 0x00, 0x59, 0xff, 0xb5, 0xff, 0x1b, 0x01, + 0xbb, 0x00, 0x98, 0x00, 0xff, 0x00, 0xd1, 0x00, 0x86, 0x00, 0x5d, 0xfd, + 0x76, 0xff, 0x82, 0x00, 0x82, 0xfe, 0x35, 0xff, 0x62, 0x00, 0x00, 0x03, + 0xfa, 0x02, 0xd6, 0x01, 0xab, 0xfe, 0xe0, 0xfe, 0x5f, 0x00, 0x70, 0x01, + 0x4e, 0x02, 0xe2, 0x00, 0x39, 0x00, 0x5a, 0x00, 0xb9, 0x00, 0xb3, 0x01, + 0x8d, 0x00, 0x7d, 0x00, 0xd4, 0xff, 0x5b, 0x00, 0x53, 0x01, 0x03, 0x01, + 0x77, 0x00, 0x00, 0x00, 0xd3, 0xff, 0x2e, 0x00, 0x5d, 0xff, 0x4d, 0xff, + 0xee, 0xfe, 0x3f, 0xff, 0x8b, 0xff, 0xd2, 0xff, 0x55, 0x01, 0x0c, 0x01, + 0x94, 0xfe, 0x17, 0xff, 0xdb, 0x00, 0x30, 0x01, 0xf5, 0xfe, 0xf5, 0xfe, + 0xea, 0x00, 0xca, 0x01, 0x97, 0x01, 0x1f, 0xfe, 0x49, 0xfd, 0x6a, 0xff, + 0x91, 0x00, 0xa6, 0x00, 0x08, 0x00, 0x01, 0xff, 0xa4, 0xfe, 0xc5, 0xff, + 0x2d, 0x00, 0x79, 0x00, 0x37, 0xff, 0x7d, 0xff, 0x21, 0x00, 0x93, 0x00, + 0x2a, 0x01, 0x6a, 0xfe, 0x53, 0xff, 0x49, 0x00, 0x53, 0xff, 0x3a, 0x01, + 0x22, 0x02, 0x3f, 0xff, 0x85, 0xfe, 0xda, 0xff, 0xca, 0x00, 0xb6, 0xff, + 0xad, 0x00, 0xe9, 0xfd, 0x38, 0xfe, 0x34, 0x00, 0xcc, 0x00, 0x26, 0xff, + 0x87, 0x01, 0xef, 0xfe, 0x43, 0xfd, 0x63, 0x00, 0x53, 0x01, 0x94, 0x00, + 0x01, 0xff, 0xd9, 0xfe, 0x68, 0x00, 0xd0, 0x01, 0x27, 0xff, 0xb1, 0xfe, + 0x7a, 0x00, 0x05, 0x01, 0x5f, 0x00, 0xf6, 0x00, 0x61, 0x00, 0x94, 0x00, + 0xb8, 0xff, 0xa5, 0xff, 0x0e, 0x01, 0x29, 0x00, 0x06, 0x02, 0x84, 0x03, + 0x00, 0xfd, 0x39, 0xfd, 0x71, 0xfe, 0x68, 0x02, 0x78, 0x04, 0xd0, 0x02, + 0x44, 0xfd, 0x80, 0xfc, 0x02, 0x01, 0x08, 0x01, 0x80, 0x05, 0x93, 0x03, + 0xb6, 0xfc, 0x30, 0xfd, 0x44, 0x01, 0x77, 0x01, 0xe5, 0x01, 0x9f, 0x03, + 0x51, 0xff, 0x16, 0xfd, 0x32, 0x01, 0x69, 0x00, 0xf9, 0xff, 0x91, 0x02, + 0xa1, 0xff, 0xc4, 0xfe, 0x4b, 0x00, 0x95, 0xfe, 0xab, 0xff, 0xdb, 0x01, + 0x88, 0x01, 0x5c, 0xfe, 0x62, 0xfe, 0xf9, 0x00, 0xe0, 0xfd, 0x4f, 0xff, + 0xaf, 0xff, 0x18, 0x00, 0x4d, 0xfe, 0xfc, 0xff, 0xd4, 0xff, 0x91, 0xfd, + 0x3a, 0xfe, 0x8f, 0xfe, 0x59, 0x01, 0x49, 0x00, 0xb2, 0xfe, 0x34, 0xff, + 0xb8, 0xff, 0x95, 0xfc, 0x74, 0x00, 0xa5, 0x05, 0xeb, 0xff, 0x46, 0xfb, + 0x7f, 0x00, 0x1b, 0x01, 0x0e, 0x00, 0x0d, 0x01, 0x47, 0x02, 0xb0, 0xfe, + 0x07, 0xff, 0xc2, 0xff, 0x4a, 0x00, 0x50, 0x01, 0x9d, 0x01, 0xb1, 0xff, + 0x5c, 0xfe, 0xb6, 0x01, 0x76, 0x02, 0x8d, 0xff, 0x57, 0xfe, 0xd3, 0x01, + 0x78, 0x01, 0x69, 0x00, 0x52, 0x00, 0xa0, 0xfe, 0x1e, 0xfe, 0xfa, 0xff, + 0x44, 0x02, 0x0c, 0x01, 0x15, 0xfe, 0xcc, 0xfd, 0x24, 0x00, 0x7c, 0x01, + 0x6c, 0x02, 0xae, 0xfe, 0x3e, 0xfe, 0x9e, 0x03, 0x80, 0xff, 0x1d, 0xfe, + 0x2a, 0x01, 0xd2, 0x03, 0xcc, 0xfe, 0x56, 0xfe, 0x5f, 0x00, 0xde, 0xff, + 0x1b, 0x01, 0xbe, 0x01, 0x2f, 0x00, 0x44, 0xfb, 0x14, 0xfe, 0x03, 0x04, + 0x4a, 0x00, 0xa5, 0xfd, 0x89, 0xff, 0xd5, 0xfd, 0xc6, 0xfd, 0xf4, 0xfe, + 0x6e, 0x02, 0x23, 0x02, 0xcb, 0xfc, 0xf0, 0x00, 0xf0, 0x01, 0xb0, 0xfa, + 0x67, 0x04, 0x82, 0x07, 0x9b, 0xf9, 0xee, 0xf9, 0x7f, 0x03, 0xa0, 0x02, + 0x09, 0x00, 0xfd, 0x00, 0xf5, 0xfe, 0x92, 0xff, 0x07, 0xff, 0x21, 0x01, + 0xe9, 0xff, 0x74, 0xfe, 0xb9, 0xfd, 0x3e, 0xfa, 0x1d, 0x03, 0xc0, 0x06, + 0xff, 0xfb, 0xe8, 0xfd, 0xbd, 0x01, 0x49, 0xfd, 0xa5, 0xff, 0x06, 0x03, + 0x07, 0x00, 0x3c, 0xfb, 0xb5, 0x05, 0x02, 0xff, 0xb2, 0xf8, 0x7f, 0x02, + 0x48, 0x02, 0x71, 0xff, 0xfb, 0x00, 0x1b, 0xff, 0xdf, 0xfd, 0xaa, 0x02, + 0x52, 0x06, 0xc6, 0xf9, 0xff, 0xf8, 0xc5, 0x03, 0x70, 0x00, 0x86, 0x00, + 0x9f, 0x06, 0xb9, 0xfc, 0x58, 0xf9, 0x41, 0x03, 0x9b, 0x03, 0x66, 0xfc, + 0x96, 0x00, 0x83, 0x05, 0xb3, 0xfe, 0x22, 0xf8, 0x5b, 0xff, 0x6c, 0x04, + 0xd9, 0x00, 0x7c, 0x01, 0x88, 0x03, 0x7b, 0x01, 0x40, 0xfa, 0xed, 0xfd, + 0x5f, 0x02, 0x25, 0x02, 0xdd, 0x01, 0x30, 0xfe, 0x55, 0xfe, 0x5a, 0xfd, + 0xe1, 0x00, 0x7b, 0x03, 0x12, 0x02, 0x66, 0x02, 0x09, 0xfc, 0x9b, 0xf9, + 0x12, 0x01, 0x95, 0x03, 0x10, 0x00, 0xb0, 0x01, 0x2e, 0x00, 0xdd, 0xfc, + 0x07, 0x00, 0x1a, 0x05, 0xdc, 0xfc, 0xc1, 0xfd, 0xc6, 0x01, 0x57, 0xfd, + 0xd4, 0xfe, 0xc2, 0x05, 0xb2, 0xfc, 0xc0, 0xfe, 0xff, 0x03, 0x15, 0x00, + 0x72, 0xfd, 0xbc, 0x00, 0xaa, 0xfe, 0x37, 0xfe, 0x45, 0x03, 0xce, 0x03, + 0x8c, 0xfa, 0x12, 0xfc, 0x35, 0x04, 0x74, 0x00, 0xfe, 0xfe, 0x5d, 0x04, + 0xa9, 0x00, 0x10, 0xfd, 0x0d, 0xff, 0x47, 0xfe, 0x32, 0x00, 0x7d, 0x06, + 0xf9, 0x00, 0xab, 0xfc, 0x76, 0xfc, 0xca, 0x02, 0x90, 0x03, 0xd2, 0xff, + 0x1b, 0xff, 0xeb, 0xfd, 0x00, 0xff, 0x39, 0xff, 0xf8, 0x02, 0x08, 0x04, + 0x9c, 0xfd, 0x8b, 0xfa, 0x20, 0x01, 0xfd, 0x03, 0xfe, 0xff, 0x77, 0xfc, + 0x6d, 0x02, 0x7d, 0xfe, 0x00, 0xfb, 0x0e, 0x04, 0x02, 0x06, 0xf9, 0xfc, + 0x4d, 0xfb, 0x96, 0x00, 0x4b, 0x06, 0xc1, 0xfc, 0x5f, 0xfa, 0xa4, 0x02, + 0x69, 0x02, 0xd5, 0xfd, 0x30, 0x03, 0x79, 0xfa, 0x39, 0xf8, 0x28, 0x08, + 0x9a, 0x09, 0x75, 0xfa, 0xdb, 0xfb, 0x8c, 0x01, 0x51, 0xfc, 0x04, 0x00, + 0x71, 0x08, 0x5b, 0xff, 0x01, 0xfa, 0xf9, 0x00, 0x50, 0xff, 0xc1, 0xfd, + 0x73, 0x06, 0xe1, 0x02, 0x1d, 0xff, 0xa2, 0xff, 0x6f, 0xf9, 0x27, 0xfd, + 0x8f, 0x05, 0x5b, 0x03, 0x8b, 0xfe, 0xea, 0xfe, 0xdc, 0xfc, 0x68, 0xfc, + 0xdc, 0x04, 0xe2, 0x07, 0x9b, 0xfe, 0x75, 0xfd, 0x3a, 0xfe, 0x69, 0xfd, + 0xf3, 0xff, 0x62, 0x05, 0xfa, 0x01, 0x93, 0xfe, 0x3f, 0xfe, 0x08, 0xff, + 0x30, 0x01, 0x3d, 0x00, 0x65, 0xff, 0xed, 0x01, 0xcc, 0xfe, 0x7a, 0xfd, + 0x09, 0xfe, 0xf2, 0x01, 0xbf, 0x05, 0x71, 0xfe, 0x2c, 0xfc, 0x8f, 0xff, + 0x78, 0xff, 0x50, 0xfb, 0xbc, 0x01, 0xfd, 0x09, 0xa2, 0xfe, 0x3f, 0xf9, + 0x28, 0xfc, 0x56, 0xfc, 0xd4, 0x04, 0x4b, 0x08, 0xfc, 0xfe, 0xc2, 0xfc, + 0x09, 0xfd, 0xf6, 0xfc, 0x6e, 0x02, 0x0f, 0x02, 0x62, 0xff, 0x1c, 0x01, + 0xee, 0xfe, 0xc8, 0x00, 0x15, 0xfc, 0xb8, 0xfc, 0x5f, 0x06, 0xdc, 0x00, + 0x6a, 0xfb, 0x59, 0xfe, 0x8b, 0x00, 0x3d, 0xff, 0xc1, 0x00, 0x68, 0x01, + 0xc3, 0xff, 0x1c, 0x01, 0xd9, 0xfe, 0x6b, 0x03, 0xd9, 0xff, 0xdb, 0xfb, + 0x68, 0x02, 0x88, 0x01, 0x27, 0xfe, 0x85, 0xfd, 0xb1, 0x00, 0x02, 0x02, + 0x00, 0x01, 0x2d, 0xfd, 0x2f, 0xff, 0x03, 0x04, 0x5b, 0x00, 0x0a, 0xfd, + 0x2a, 0xff, 0xb2, 0xfd, 0x80, 0xff, 0xb3, 0x04, 0x3c, 0x01, 0xc6, 0xfe, + 0xca, 0xfe, 0x37, 0xff, 0x27, 0x00, 0xef, 0x00, 0x29, 0x01, 0xe9, 0xff, + 0x0d, 0x00, 0x91, 0xf8, 0xca, 0x01, 0x3a, 0x09, 0x2a, 0x03, 0x98, 0xfe, + 0xb7, 0xf8, 0xba, 0xfc, 0x40, 0x03, 0x9d, 0x01, 0xfd, 0x01, 0x92, 0x03, + 0x0b, 0xfa, 0x87, 0xfe, 0xb0, 0x03, 0x1e, 0xff, 0xdb, 0xfc, 0x70, 0x01, + 0x7b, 0x01, 0xb9, 0xff, 0x0c, 0x01, 0x6e, 0xff, 0x94, 0x00, 0x3c, 0x02, + 0x54, 0xff, 0x55, 0xfe, 0xbe, 0xff, 0xc9, 0x01, 0x06, 0xff, 0xa5, 0xfd, + 0x2e, 0x01, 0x4d, 0x03, 0xf1, 0x00, 0xd1, 0xfa, 0xe1, 0xf9, 0x94, 0x04, + 0x9c, 0x03, 0x3c, 0xfb, 0xde, 0x02, 0xab, 0x05, 0x26, 0xfc, 0xd6, 0xfe, + 0x66, 0x01, 0x4c, 0xf8, 0xf2, 0xff, 0xa2, 0x0b, 0x47, 0x02, 0xec, 0xf3, + 0x63, 0xff, 0x9c, 0x04, 0x34, 0x02, 0x89, 0xfd, 0x56, 0xfa, 0xbb, 0xfd, + 0xc2, 0x05, 0x52, 0x03, 0x92, 0xfd, 0x67, 0xfc, 0xfd, 0x01, 0x10, 0x02, + 0x3f, 0xfc, 0x59, 0xff, 0x18, 0x02, 0x1b, 0x00, 0x35, 0x02, 0x23, 0xfd, + 0xb3, 0xfd, 0xd8, 0x05, 0xa3, 0x00, 0x90, 0xfa, 0x1a, 0xff, 0x75, 0xff, + 0xde, 0x02, 0xef, 0x01, 0x1d, 0xfe, 0xd4, 0x00, 0x51, 0x00, 0x41, 0xff, + 0x88, 0x02, 0x70, 0x01, 0xfa, 0xfc, 0xaa, 0xff, 0xcc, 0xfd, 0x44, 0x06, + 0xfa, 0x00, 0x88, 0xf7, 0xbb, 0x02, 0x83, 0x05, 0x8c, 0x01, 0xc6, 0xfe, + 0xb5, 0xf6, 0x55, 0xfd, 0x0e, 0x0a, 0xb0, 0x02, 0x95, 0xfa, 0x34, 0x03, + 0x92, 0x02, 0xcc, 0xf9, 0xe8, 0xf8, 0x25, 0x02, 0x82, 0x03, 0x27, 0x00, + 0x39, 0xff, 0x71, 0x02, 0xba, 0xfe, 0xbb, 0x04, 0x4a, 0x04, 0x05, 0xf9, + 0x23, 0xfa, 0xb1, 0x04, 0x06, 0x05, 0x2d, 0xfc, 0x76, 0x03, 0xe0, 0xfd, + 0xb7, 0xf8, 0x44, 0x05, 0x83, 0x06, 0x7d, 0xfd, 0x01, 0xfa, 0xe4, 0xfc, + 0x7b, 0x00, 0xe5, 0x05, 0x34, 0x05, 0x92, 0xfe, 0x3a, 0xfb, 0x03, 0x00, + 0xe7, 0xff, 0xa8, 0xfa, 0xbe, 0x04, 0x09, 0x0b, 0x23, 0xfe, 0x64, 0xf6, + 0x4f, 0xfd, 0x60, 0x01, 0xd7, 0x01, 0xe6, 0x00, 0x9f, 0x03, 0x62, 0x04, + 0x91, 0xfc, 0xe8, 0xf4, 0xab, 0xfc, 0x3b, 0x0a, 0x04, 0x06, 0xbb, 0xfe, + 0xf8, 0xff, 0x8d, 0xf9, 0x8b, 0xfb, 0xd9, 0x0a, 0x87, 0x08, 0x89, 0xfb, + 0xf5, 0xf8, 0x8a, 0xfd, 0x2b, 0x02, 0xf2, 0x04, 0x74, 0x04, 0x92, 0xf9, + 0x1d, 0xf9, 0x17, 0x04, 0xf7, 0x04, 0xb4, 0xfe, 0xb4, 0x03, 0x72, 0x00, + 0xd1, 0xf8, 0xa8, 0xfd, 0x39, 0x02, 0x89, 0x01, 0xa1, 0x04, 0x38, 0x02, + 0xb8, 0xf9, 0xbd, 0xfd, 0x90, 0xff, 0x7b, 0x06, 0xf1, 0x04, 0x40, 0xf8, + 0xf0, 0x02, 0xcd, 0x02, 0x87, 0xf9, 0x8c, 0xfb, 0x02, 0x03, 0x43, 0x09, + 0xa2, 0x00, 0x95, 0xfd, 0xb4, 0xfd, 0xca, 0xf9, 0x5e, 0xfe, 0xf5, 0x08, + 0xe5, 0x02, 0xa8, 0xfa, 0x13, 0x00, 0xb9, 0xff, 0x19, 0xfc, 0xf1, 0x05, + 0x1d, 0x05, 0xe9, 0xfb, 0xe0, 0xfe, 0xf0, 0xfc, 0x85, 0xfd, 0xb9, 0x04, + 0x2b, 0x02, 0xca, 0xfd, 0x0e, 0xfe, 0x84, 0xff, 0x2b, 0xff, 0x47, 0x06, + 0x6c, 0x03, 0x6d, 0xf9, 0x44, 0xfc, 0x61, 0x01, 0xb7, 0x01, 0x23, 0x01, + 0x6f, 0x00, 0xc7, 0xfd, 0x3e, 0x01, 0xd4, 0xff, 0xc3, 0xfe, 0x38, 0x00, + 0x76, 0x01, 0x65, 0xfe, 0x57, 0x02, 0x27, 0xff, 0x72, 0xfa, 0x59, 0x02, + 0x55, 0x03, 0x6c, 0x02, 0x0c, 0x02, 0x38, 0xfc, 0x82, 0xfc, 0x07, 0x01, + 0xd0, 0x03, 0xa0, 0xff, 0x28, 0xff, 0x08, 0x04, 0xd2, 0x00, 0x5a, 0xfc, + 0x37, 0xfb, 0x93, 0x01, 0x18, 0x02, 0x1a, 0xff, 0xb3, 0xfc, 0x5e, 0x01, + 0x10, 0x07, 0x4d, 0x00, 0xb5, 0xf9, 0xa0, 0x01, 0x3c, 0x00, 0xf4, 0xf9, + 0x19, 0x03, 0xc0, 0x09, 0x31, 0x01, 0x5a, 0xfb, 0xa5, 0xf8, 0xec, 0xff, + 0x6b, 0x04, 0xad, 0x04, 0x92, 0x03, 0xbf, 0xf9, 0x52, 0xf6, 0xe4, 0x02, + 0x13, 0x03, 0x1a, 0xfe, 0x3c, 0x09, 0x67, 0x03, 0xda, 0xf3, 0x9b, 0xfb, + 0x74, 0x04, 0x67, 0x07, 0x1e, 0x01, 0xd1, 0xf9, 0x73, 0xfd, 0x6a, 0x02, + 0x4d, 0x05, 0x41, 0x01, 0xa5, 0xfc, 0xf4, 0xfa, 0xd0, 0x03, 0xc9, 0x05, + 0x96, 0xfb, 0xaf, 0xfd, 0x6a, 0x04, 0xd4, 0xfd, 0x94, 0xf9, 0xd7, 0x03, + 0x4b, 0x04, 0x66, 0xfc, 0x5b, 0x01, 0x98, 0x02, 0x22, 0xfd, 0xe8, 0xfe, + 0xbb, 0xff, 0x94, 0xfa, 0x54, 0x01, 0x27, 0x05, 0xd3, 0x03, 0x97, 0xff, + 0x33, 0xfd, 0x15, 0xfb, 0x88, 0xfa, 0x0f, 0x0e, 0xd3, 0x0b, 0xcd, 0xf3, + 0x09, 0xf4, 0x24, 0x06, 0xbc, 0x00, 0x86, 0xfe, 0x63, 0x03, 0xdf, 0xff, + 0x81, 0xff, 0x9c, 0xff, 0x15, 0xfe, 0x92, 0xff, 0x56, 0x00, 0x8c, 0x01, + 0xb4, 0x00, 0x6e, 0xf4, 0x93, 0xff, 0x5b, 0x0e, 0x32, 0x02, 0xda, 0xf8, + 0x74, 0x03, 0xdd, 0x00, 0x5e, 0xf7, 0x01, 0xff, 0x82, 0x08, 0x6d, 0x00, + 0xce, 0xfa, 0x4a, 0xff, 0x0f, 0x01, 0x93, 0x01, 0xbd, 0xfe, 0xdf, 0xfc, + 0x84, 0x06, 0xd8, 0x01, 0xf8, 0xf4, 0x25, 0xfd, 0xde, 0x09, 0x1e, 0x01, + 0x1f, 0xfd, 0xdf, 0x02, 0xdc, 0xff, 0x23, 0xfc, 0x93, 0x01, 0xbf, 0x02, + 0xa0, 0x00, 0xf1, 0xfc, 0xfc, 0x00, 0xe2, 0x01, 0xed, 0xfb, 0x37, 0x00, + 0x73, 0x02, 0x22, 0xfd, 0x63, 0xfd, 0x8b, 0x02, 0xe6, 0x02, 0x33, 0x01, + 0xb0, 0x01, 0xac, 0xfd, 0xd2, 0xf6, 0x1a, 0xfd, 0xd6, 0x08, 0x1b, 0x0b, + 0x95, 0xfc, 0xb5, 0xf4, 0x01, 0xfe, 0x0a, 0x03, 0x18, 0x05, 0xe9, 0x04, + 0x4d, 0xfd, 0xa5, 0xf7, 0x7b, 0xfb, 0x85, 0x03, 0xf6, 0x06, 0xd3, 0x03, + 0xff, 0xfc, 0x25, 0xf7, 0xb2, 0xfe, 0xf8, 0x08, 0x8a, 0x06, 0x2a, 0xfa, + 0x14, 0xf8, 0xc2, 0x01, 0x73, 0x00, 0xbf, 0x00, 0xfa, 0x04, 0x1f, 0xff, + 0xf3, 0xfb, 0x31, 0x03, 0xf1, 0xff, 0x6d, 0xfe, 0xfe, 0xfc, 0xf5, 0xfb, + 0x04, 0x04, 0x09, 0x08, 0xdb, 0xfa, 0xf4, 0xf6, 0xb9, 0x01, 0xd5, 0x09, + 0x73, 0x02, 0x3a, 0xf9, 0xd5, 0xfd, 0x4e, 0x00, 0xcc, 0x00, 0xec, 0x03, + 0xab, 0x02, 0x90, 0xfc, 0x2c, 0xfb, 0x7c, 0xfe, 0x1c, 0x03, 0x76, 0x04, + 0x8f, 0x04, 0xb8, 0xfd, 0xf5, 0xf8, 0x26, 0xfd, 0x4b, 0x03, 0x8c, 0x03, + 0x28, 0x00, 0x06, 0x01, 0x0c, 0x01, 0x13, 0xfb, 0xed, 0xfa, 0xc7, 0x05, + 0x72, 0x05, 0x03, 0xf9, 0xfc, 0xfe, 0x80, 0x04, 0x39, 0xfd, 0x70, 0xfd, + 0xec, 0x08, 0xfc, 0xff, 0x2d, 0xf8, 0x11, 0x03, 0x82, 0x00, 0xc6, 0xf9, + 0xab, 0x05, 0x5f, 0x07, 0xcb, 0xf9, 0xc7, 0xf9, 0x52, 0xfb, 0x4d, 0x01, + 0x73, 0x00, 0xc8, 0x03, 0x7e, 0x04, 0xb7, 0xfe, 0x7d, 0xfa, 0x5b, 0xfe, + 0x4f, 0x01, 0xcc, 0xff, 0x9a, 0x04, 0x60, 0x03, 0x9f, 0xfc, 0xa3, 0xfa, + 0x65, 0x02, 0x74, 0x03, 0x6f, 0xfe, 0x42, 0xff, 0xe2, 0x02, 0x1f, 0xff, + 0xbb, 0xfc, 0x43, 0x03, 0x7a, 0x04, 0xbe, 0xf9, 0x24, 0xfb, 0x78, 0x08, + 0x3f, 0xfd, 0x53, 0xf7, 0xca, 0x0a, 0x3d, 0x04, 0x4a, 0xf2, 0xf1, 0x00, + 0x6c, 0x08, 0x65, 0xfc, 0x5c, 0xff, 0x83, 0x03, 0x97, 0x03, 0x0e, 0xf8, + 0x44, 0xf6, 0x48, 0x09, 0xef, 0x08, 0x52, 0xfd, 0x8a, 0xfb, 0xde, 0xfe, + 0x21, 0xfd, 0x23, 0x01, 0x87, 0x04, 0xa5, 0xff, 0x45, 0xfd, 0x54, 0x02, + 0xa7, 0xff, 0xa0, 0xfc, 0xc3, 0x00, 0x47, 0x06, 0x5c, 0xff, 0x60, 0xf9, + 0x39, 0xfe, 0x49, 0x03, 0x92, 0x03, 0x7b, 0xff, 0x84, 0x00, 0x1d, 0x04, + 0xd5, 0xfc, 0x9d, 0xf9, 0xa4, 0x03, 0xff, 0x06, 0x53, 0xfd, 0x09, 0xfe, + 0x9b, 0x01, 0x0b, 0xff, 0x5a, 0xfb, 0xb8, 0x00, 0xee, 0x07, 0x77, 0xfe, + 0x23, 0xfa, 0x9a, 0x01, 0x4e, 0x02, 0x5c, 0xf6, 0x3b, 0x00, 0xe0, 0x0d, + 0x08, 0xfe, 0xb5, 0xf7, 0x4d, 0x02, 0x75, 0x01, 0x58, 0xff, 0x0e, 0x00, + 0xbd, 0xff, 0x05, 0xfb, 0xe5, 0xfe, 0x34, 0x07, 0xb5, 0x02, 0xab, 0xfc, + 0x5d, 0xfd, 0x4d, 0x01, 0x55, 0x01, 0xe3, 0xfd, 0xde, 0x00, 0x4c, 0x02, + 0x1b, 0xfe, 0xeb, 0xfe, 0x19, 0x01, 0x92, 0x00, 0xfc, 0xfe, 0xe5, 0xfe, + 0x51, 0x02, 0x2c, 0x02, 0xf1, 0xfd, 0x9c, 0xfe, 0x40, 0xfc, 0x89, 0x00, + 0x44, 0x06, 0x84, 0xff, 0x8a, 0xfc, 0x40, 0x05, 0xd2, 0xfe, 0x76, 0xf6, + 0xdd, 0x02, 0xe9, 0x09, 0x87, 0x02, 0x5d, 0xf6, 0xa7, 0xf9, 0x69, 0x05, + 0x8c, 0x02, 0xba, 0xff, 0x0b, 0x03, 0xe2, 0xfe, 0xa4, 0xfd, 0xed, 0x00, + 0x5f, 0x00, 0x39, 0xff, 0x2b, 0x00, 0x45, 0x02, 0x9a, 0x00, 0xd1, 0x00, + 0x52, 0xff, 0xb8, 0xfd, 0x20, 0x00, 0x83, 0x01, 0xb7, 0xff, 0x87, 0x02, + 0xf4, 0x01, 0x1b, 0xfb, 0xc9, 0xfd, 0xf7, 0x02, 0x05, 0x00, 0xc4, 0xfd, + 0x51, 0xfd, 0x2c, 0x02, 0x4b, 0x07, 0xe7, 0xfe, 0xeb, 0xf5, 0x11, 0x01, + 0x5b, 0x07, 0x3d, 0xf9, 0x0a, 0xfd, 0x13, 0x0e, 0x25, 0x01, 0x4b, 0xf4, + 0xb3, 0x00, 0x4c, 0xfe, 0x64, 0xfe, 0x66, 0x09, 0x4c, 0x04, 0xe0, 0xf9, + 0xa5, 0xfe, 0x86, 0xfd, 0x8a, 0xff, 0xd1, 0x02, 0x5c, 0x04, 0x5d, 0xff, + 0x40, 0xfa, 0x05, 0x01, 0xb7, 0x04, 0xdd, 0xfc, 0xe9, 0xfe, 0x91, 0x03, + 0x85, 0xfd, 0xef, 0xff, 0xe3, 0x05, 0xa9, 0x02, 0x27, 0xfc, 0x51, 0xfd, + 0x9a, 0xfc, 0x66, 0x03, 0x9c, 0x07, 0xa2, 0xfe, 0xa0, 0xfb, 0x42, 0xfc, + 0x8e, 0xfd, 0x13, 0x05, 0x57, 0x07, 0x0e, 0xfd, 0xf3, 0xff, 0xbe, 0x01, + 0x2c, 0xf8, 0x04, 0xfb, 0xa5, 0x09, 0xfb, 0x06, 0x71, 0xfa, 0x5c, 0xfd, + 0x3e, 0x01, 0x28, 0xfd, 0xa2, 0xff, 0x8a, 0x03, 0xf9, 0x02, 0x35, 0xfe, + 0x74, 0xfd, 0x29, 0xfe, 0x68, 0xfe, 0x05, 0x03, 0x33, 0x09, 0x75, 0x01, + 0x6f, 0xf3, 0xab, 0xf6, 0xbc, 0x08, 0xc2, 0x0c, 0x54, 0xfe, 0x68, 0xfc, + 0xc0, 0xfc, 0x84, 0xf6, 0x26, 0x03, 0xc9, 0x0a, 0x65, 0xfb, 0x27, 0xf7, + 0x12, 0x07, 0x4c, 0x03, 0x4d, 0xf9, 0xe1, 0x03, 0x0b, 0x07, 0x4c, 0xf6, + 0xd2, 0xf8, 0x84, 0x09, 0xe3, 0x05, 0x90, 0x00, 0x1d, 0xfd, 0xc5, 0xff, + 0x5c, 0xff, 0x31, 0xfd, 0x2b, 0x03, 0x1c, 0x03, 0xf7, 0x00, 0xb6, 0xff, + 0x3c, 0xfe, 0x39, 0xfe, 0xec, 0x03, 0x18, 0xfe, 0x88, 0xfc, 0xba, 0x05, + 0x53, 0x02, 0x0a, 0x00, 0x02, 0xfd, 0x84, 0x00, 0x60, 0x01, 0x03, 0xfc, + 0x8f, 0x01, 0xa2, 0x05, 0x8d, 0xfb, 0x53, 0xf9, 0xa1, 0x00, 0xb6, 0x05, + 0xfb, 0x02, 0xbc, 0xfa, 0x24, 0xf9, 0x08, 0x07, 0xf1, 0x05, 0x19, 0xf9, + 0x4e, 0x00, 0x08, 0x03, 0x57, 0xf9, 0x6a, 0x00, 0x01, 0x07, 0x79, 0x04, + 0x0d, 0xfd, 0x55, 0xfc, 0xa2, 0xfe, 0x97, 0xfd, 0xb7, 0x00, 0xba, 0x0a, + 0x3f, 0x03, 0xf2, 0xf8, 0xf6, 0xfa, 0x89, 0xff, 0x5f, 0x00, 0x52, 0x02, + 0xfd, 0x01, 0x14, 0x03, 0x84, 0x01, 0x9e, 0xfa, 0xb1, 0xfd, 0xed, 0x01, + 0xa2, 0x01, 0xde, 0x02, 0x84, 0xff, 0xfe, 0xf9, 0xce, 0x00, 0xf3, 0xfe, + 0x36, 0x04, 0xc8, 0x06, 0x6f, 0xf6, 0xd7, 0xfc, 0xb1, 0x05, 0x1a, 0xfc, + 0xab, 0xfb, 0x86, 0x0c, 0x2b, 0x03, 0x3a, 0xf9, 0x2d, 0xfc, 0x32, 0xfc, + 0x89, 0x01, 0x6b, 0x01, 0x1c, 0x09, 0x02, 0x07, 0x42, 0xf9, 0x27, 0xf6, + 0x53, 0xfd, 0x41, 0x00, 0xdb, 0x01, 0xec, 0x0b, 0x6c, 0x06, 0xf2, 0xf3, + 0x24, 0xfc, 0xc7, 0x05, 0xa8, 0xf9, 0x52, 0xf9, 0xd7, 0x0c, 0x70, 0x06, + 0xd0, 0xf3, 0x07, 0xfe, 0x87, 0x07, 0x87, 0xfd, 0xe0, 0xfe, 0x82, 0x06, + 0x25, 0xfe, 0x2d, 0xf5, 0xc6, 0xfe, 0x72, 0x07, 0x01, 0x03, 0x1a, 0x02, + 0x40, 0x02, 0x7e, 0xfd, 0x83, 0xf9, 0x28, 0xfd, 0x26, 0x05, 0x25, 0x02, + 0x32, 0x04, 0xa8, 0xf9, 0x8b, 0xf8, 0x74, 0x0a, 0xb5, 0x0d, 0x3c, 0xf8, + 0x2f, 0xf2, 0x10, 0x08, 0x88, 0x03, 0xa2, 0xfa, 0xf1, 0x05, 0x5a, 0x05, + 0xf4, 0xf8, 0x7c, 0xf9, 0xb6, 0x06, 0xc7, 0x09, 0x2a, 0xfe, 0x95, 0xf8, + 0x3c, 0xfd, 0x32, 0xfe, 0x13, 0xfd, 0xfe, 0xfe, 0x61, 0x08, 0x0c, 0x0e, + 0x70, 0xf7, 0x9e, 0xf5, 0xe7, 0x07, 0xcb, 0x01, 0xa8, 0xf3, 0x92, 0x04, + 0xce, 0x0a, 0x8f, 0x00, 0xe6, 0x01, 0xac, 0xf9, 0xa3, 0xf4, 0xb2, 0xfe, + 0x0e, 0x02, 0x13, 0x06, 0x40, 0x01, 0x91, 0xf9, 0xe2, 0xff, 0xdb, 0x00, + 0xc7, 0xfd, 0x25, 0xfd, 0xe7, 0x01, 0x99, 0x08, 0xf8, 0x05, 0xdf, 0xf6, + 0x5b, 0xf8, 0x43, 0x05, 0xed, 0x02, 0x88, 0xf3, 0x1d, 0x03, 0x36, 0x08, + 0xb8, 0xfc, 0x79, 0x08, 0x09, 0x02, 0x60, 0xf7, 0xe0, 0xf3, 0xff, 0xfe, + 0xf0, 0x0c, 0x7e, 0x11, 0x8b, 0x02, 0x64, 0xed, 0x7a, 0xf5, 0xa5, 0x07, + 0x26, 0x08, 0x5a, 0x02, 0xd0, 0x06, 0x1a, 0x03, 0xda, 0xf0, 0x55, 0xf4, + 0x2e, 0x09, 0xd6, 0x07, 0xc9, 0x04, 0xbd, 0xfb, 0x71, 0xf8, 0xad, 0xfb, + 0xcf, 0x05, 0x04, 0x07, 0x4a, 0xfe, 0xad, 0xfb, 0x41, 0x00, 0xc4, 0xff, + 0x04, 0xfd, 0xff, 0x0b, 0x9b, 0x04, 0x13, 0xf1, 0xe3, 0xf8, 0x77, 0x04, + 0xc2, 0xff, 0x4e, 0x07, 0x14, 0x05, 0xbc, 0xf2, 0xd4, 0xfa, 0x6a, 0x06, + 0xfe, 0xff, 0xeb, 0x05, 0x65, 0x00, 0x07, 0xf5, 0xf2, 0x00, 0x13, 0x0a, + 0x37, 0x00, 0x90, 0xfd, 0x5f, 0x02, 0x6d, 0xfb, 0xf8, 0xf8, 0xa0, 0x07, + 0x56, 0x0e, 0x8e, 0xef, 0xcf, 0xfa, 0xf0, 0x15, 0x77, 0xf6, 0x9e, 0xf1, + 0x15, 0x11, 0x34, 0x01, 0x44, 0xee, 0xf4, 0xfd, 0xbb, 0x0b, 0x52, 0x00, + 0x4c, 0xfd, 0x8e, 0x07, 0x91, 0xf8, 0x34, 0xf9, 0xe8, 0x10, 0xa8, 0x05, + 0xd5, 0xf9, 0x71, 0x02, 0xaf, 0xf8, 0x99, 0xf4, 0x61, 0x09, 0x93, 0x09, + 0x66, 0xfd, 0xc7, 0x01, 0x1f, 0xf8, 0x30, 0xf7, 0x8d, 0xfe, 0xcb, 0x00, + 0x47, 0x07, 0x1a, 0x04, 0x24, 0xf9, 0x43, 0x02, 0x46, 0x00, 0xc2, 0xfa, + 0xdd, 0x05, 0x11, 0x06, 0x00, 0xf9, 0x32, 0xfe, 0x44, 0x03, 0x5f, 0xf6, + 0x33, 0xff, 0xc1, 0x09, 0x53, 0xfe, 0x37, 0x0c, 0xef, 0x00, 0x27, 0xe5, + 0xb8, 0xfa, 0x05, 0x1b, 0x13, 0x0c, 0xa4, 0xed, 0xd3, 0xee, 0x64, 0x04, + 0x9f, 0x03, 0xf5, 0x00, 0xc0, 0x10, 0x12, 0xfa, 0xc7, 0xed, 0xb2, 0x02, + 0xc2, 0x08, 0x2b, 0xfd, 0x25, 0x06, 0x13, 0x10, 0x25, 0xf6, 0x00, 0xeb, + 0x52, 0x04, 0x01, 0x0c, 0x21, 0x05, 0x49, 0xf7, 0x0e, 0xf8, 0x59, 0x0a, + 0xd8, 0x03, 0x2e, 0xf8, 0x3d, 0x00, 0xd2, 0xfb, 0x90, 0x00, 0x48, 0x05, + 0xf2, 0x02, 0x52, 0xfe, 0x8c, 0xfc, 0x76, 0x05, 0x3e, 0x05, 0x35, 0xfc, + 0xbf, 0xfe, 0xb1, 0x05, 0x23, 0x00, 0xbf, 0xfa, 0x1a, 0xf7, 0xf7, 0x04, + 0x85, 0x0e, 0xba, 0xeb, 0x0b, 0xf7, 0x2a, 0x13, 0xd1, 0xfc, 0xf5, 0xf2, + 0xd0, 0x06, 0xae, 0x08, 0x1d, 0xf2, 0xf6, 0x01, 0xb9, 0x09, 0x6f, 0xf9, + 0xa0, 0xfb, 0x73, 0xfe, 0xe6, 0x08, 0x2f, 0xff, 0xc4, 0xf7, 0x8e, 0x09, + 0xc7, 0x01, 0x57, 0xef, 0xb7, 0x06, 0xa4, 0x0a, 0xb6, 0xf7, 0x04, 0x07, + 0xad, 0xff, 0x0d, 0xee, 0xe8, 0x06, 0xd1, 0x0d, 0x15, 0xfd, 0xdc, 0x07, + 0xa4, 0xfb, 0x46, 0xe8, 0xd7, 0xff, 0x6e, 0x1e, 0x36, 0x08, 0xf3, 0xea, + 0xa4, 0xf5, 0x2d, 0x03, 0x63, 0x00, 0x09, 0x08, 0x6d, 0x0b, 0xfb, 0xf6, + 0xdc, 0xe5, 0xb6, 0xf9, 0xe0, 0x1a, 0xbd, 0x0d, 0xb3, 0xfb, 0xbc, 0xfa, + 0x87, 0xf3, 0x92, 0xf1, 0xf1, 0x09, 0x2e, 0x14, 0xb2, 0x00, 0xaa, 0xf9, + 0xdd, 0xf4, 0xd6, 0xf5, 0x2f, 0x04, 0xfd, 0x10, 0x5d, 0xf4, 0x05, 0xf7, + 0x3f, 0x11, 0xf8, 0x02, 0xa4, 0xf2, 0xe2, 0x00, 0x2b, 0xf9, 0x81, 0xfb, + 0x99, 0x10, 0xc6, 0x0e, 0xa4, 0xfb, 0xee, 0xf0, 0x9c, 0xfe, 0xa6, 0x06, + 0x9f, 0xfc, 0x75, 0x03, 0x06, 0x05, 0x8c, 0x0f, 0xd2, 0xf9, 0x7e, 0xdd, + 0x46, 0x04, 0xef, 0x15, 0x87, 0xf4, 0x70, 0xf9, 0x0b, 0x12, 0x98, 0xfe, + 0x81, 0xf2, 0x66, 0xfd, 0x4c, 0x07, 0x93, 0xfa, 0x4f, 0xfc, 0x4f, 0x00, + 0x5d, 0x03, 0x05, 0x0b, 0x82, 0x09, 0xdc, 0xf3, 0xed, 0xf4, 0x43, 0x0a, + 0x60, 0x04, 0x68, 0xf4, 0x15, 0x05, 0xe3, 0x0b, 0xf2, 0xf4, 0x90, 0xf5, + 0x2b, 0x09, 0x98, 0x03, 0x8a, 0xfb, 0x8c, 0x02, 0xe1, 0x03, 0x24, 0xfc, + 0x48, 0xf9, 0x54, 0x01, 0x02, 0xfb, 0x2e, 0xfa, 0xa2, 0x0d, 0x94, 0x09, + 0xdc, 0xf8, 0xcb, 0xfc, 0x9b, 0x0d, 0x18, 0xfe, 0x1c, 0xe9, 0x98, 0x04, + 0x8e, 0x12, 0xf3, 0xf5, 0x34, 0xfd, 0x88, 0x0e, 0xeb, 0xf8, 0xf6, 0xec, + 0xfe, 0xff, 0x1f, 0x19, 0x22, 0x11, 0x56, 0xf3, 0x82, 0xe6, 0xb4, 0xfc, + 0xa5, 0x12, 0xfa, 0x04, 0xcb, 0xf5, 0xc8, 0x04, 0x05, 0x09, 0xc0, 0xf8, + 0xa5, 0xed, 0xe0, 0x03, 0x18, 0x11, 0xbc, 0x02, 0xc5, 0xf1, 0x72, 0xf9, + 0x25, 0x08, 0x7b, 0xfb, 0x53, 0xf2, 0x2d, 0x14, 0xfb, 0x15, 0x71, 0xf1, + 0x27, 0xf1, 0x4b, 0x01, 0x99, 0xf9, 0x41, 0x06, 0x2b, 0x14, 0x26, 0xf9, + 0xf9, 0xe9, 0x87, 0x07, 0xba, 0x0c, 0xe3, 0xf8, 0x6e, 0xfe, 0x28, 0x02, + 0x64, 0x05, 0x5f, 0xfe, 0x83, 0xfd, 0xae, 0xfe, 0x94, 0x03, 0x8e, 0x03, + 0x2c, 0x04, 0xa3, 0xf8, 0x23, 0xf5, 0x0d, 0x0c, 0x84, 0x0c, 0xb6, 0xfa, + 0x79, 0xff, 0x77, 0xf9, 0x51, 0xf3, 0x79, 0x03, 0x11, 0x08, 0x1a, 0xfa, + 0xf3, 0xf9, 0x8a, 0x0c, 0xb6, 0x08, 0x85, 0xed, 0x6b, 0xf9, 0x92, 0x0b, + 0x54, 0x00, 0x6d, 0xfd, 0xcb, 0x06, 0x17, 0xfd, 0xd2, 0xf7, 0xe6, 0x03, + 0x74, 0xfa, 0xa6, 0xf5, 0x4f, 0x10, 0x82, 0x0d, 0x21, 0xf7, 0x81, 0x02, + 0xe6, 0x03, 0x7c, 0xee, 0x9d, 0xf6, 0x98, 0x0f, 0xcd, 0x06, 0x3d, 0xf7, + 0x21, 0x10, 0xdd, 0x06, 0x64, 0xe6, 0x66, 0xf5, 0xe8, 0x14, 0xc7, 0x05, + 0xda, 0xf7, 0xee, 0x03, 0x09, 0xfe, 0x22, 0xf5, 0xfc, 0x00, 0xa1, 0x05, + 0xf6, 0x02, 0x9d, 0x09, 0xff, 0xfa, 0xff, 0xee, 0x29, 0xfa, 0xfd, 0x08, + 0x86, 0x12, 0x8d, 0xf7, 0x17, 0xef, 0xf6, 0x0b, 0x11, 0x01, 0x1e, 0xef, + 0x7e, 0x0d, 0x18, 0x15, 0x4b, 0xf7, 0x20, 0xed, 0x7d, 0xfb, 0xa5, 0xff, + 0x9f, 0x0c, 0x83, 0x0e, 0x60, 0xec, 0xa9, 0xf6, 0xd1, 0x12, 0xef, 0x02, + 0xdb, 0x04, 0xbd, 0x07, 0x66, 0xee, 0xaa, 0xfb, 0x6b, 0x0b, 0x54, 0xfc, + 0x84, 0xf8, 0x87, 0x09, 0xf1, 0x0d, 0xde, 0xfe, 0x69, 0xe8, 0xd1, 0xf8, + 0x42, 0x13, 0x51, 0x1f, 0xea, 0xf8, 0x29, 0xe7, 0x1d, 0xf7, 0x2c, 0xfc, + 0xf9, 0xf8, 0x55, 0x0a, 0x22, 0x13, 0xdf, 0xf2, 0x2e, 0xf2, 0xb5, 0x04, + 0x58, 0x03, 0x65, 0x01, 0xd3, 0x09, 0xb7, 0xff, 0x22, 0xf4, 0xec, 0xfc, + 0x4a, 0xff, 0x78, 0x04, 0xfe, 0x11, 0x74, 0x03, 0x5f, 0xf8, 0xa3, 0xfc, + 0x46, 0x01, 0x74, 0xfe, 0x7e, 0xfc, 0x3a, 0x03, 0xe9, 0xfe, 0xf3, 0x00, + 0x6d, 0xfa, 0x11, 0xfe, 0x52, 0x08, 0xde, 0x04, 0x7e, 0xfe, 0x5a, 0xfc, + 0xc2, 0xfc, 0x54, 0xfd, 0xa9, 0x06, 0xf9, 0x0b, 0x66, 0x03, 0x2c, 0xee, + 0x39, 0xf5, 0x4d, 0x11, 0xda, 0x04, 0xe3, 0xf6, 0x2f, 0xfa, 0x74, 0xfc, + 0x5a, 0x0c, 0xa8, 0x05, 0xe8, 0xf4, 0xb5, 0x05, 0xf0, 0xfa, 0x32, 0xea, + 0x5f, 0x0a, 0x91, 0x1c, 0xad, 0xff, 0x42, 0xeb, 0x09, 0x01, 0x74, 0x08, + 0xd6, 0xf7, 0x14, 0x04, 0xef, 0x12, 0xb2, 0xf9, 0xf7, 0xe4, 0x8e, 0xfa, + 0x2c, 0x10, 0xd4, 0x0a, 0x15, 0xfd, 0x16, 0xfd, 0xb7, 0xfc, 0x6c, 0x00, + 0xb9, 0xf9, 0x1e, 0xf7, 0xf9, 0x07, 0x63, 0x0d, 0xd9, 0xfc, 0xc6, 0xf6, + 0xca, 0x07, 0xf6, 0xfe, 0x51, 0xf8, 0x9b, 0x05, 0xa6, 0x07, 0x74, 0xfd, + 0xd8, 0xfc, 0xfc, 0xfc, 0xa0, 0x06, 0xe2, 0x0e, 0x2a, 0xf0, 0xf7, 0xed, + 0x72, 0xfc, 0xed, 0x02, 0x79, 0x16, 0x19, 0x08, 0x79, 0xf1, 0x93, 0xf8, + 0xe2, 0x00, 0x5d, 0xff, 0x9c, 0xfc, 0x76, 0x03, 0xa4, 0x10, 0x4d, 0x0e, + 0xb6, 0xf6, 0xcd, 0xed, 0x6a, 0x02, 0xcb, 0x02, 0xf3, 0x01, 0x47, 0x08, + 0x7d, 0x05, 0xb7, 0xf7, 0x0b, 0xf9, 0xd7, 0x02, 0xb9, 0x01, 0xb1, 0xf7, + 0x23, 0xfe, 0x93, 0x13, 0x7f, 0x0a, 0xb2, 0xef, 0x57, 0xf4, 0x77, 0x02, + 0xce, 0x00, 0x85, 0x03, 0xc8, 0xfe, 0xaf, 0xfb, 0x39, 0x10, 0x79, 0x03, + 0xab, 0xed, 0x1d, 0xfe, 0x62, 0x01, 0xcc, 0xfc, 0xce, 0x06, 0x2f, 0xfd, + 0x5e, 0xf5, 0x24, 0x02, 0x6c, 0x04, 0x29, 0x03, 0x72, 0x00, 0xbd, 0x07, + 0xc7, 0xfc, 0xc1, 0xee, 0x36, 0xf9, 0xe5, 0x11, 0x60, 0x0a, 0x22, 0xfe, + 0xa4, 0xf7, 0x14, 0xfa, 0xd5, 0x02, 0x09, 0x00, 0x7a, 0xf9, 0x34, 0x03, + 0x07, 0x0c, 0xbf, 0xfb, 0x11, 0x01, 0x6f, 0xfb, 0x71, 0xfc, 0x52, 0x04, + 0xb0, 0x01, 0xe0, 0x02, 0x3d, 0xff, 0x6e, 0xfc, 0x57, 0xfd, 0x1f, 0xfb, + 0xc1, 0x03, 0x25, 0x09, 0x5e, 0x07, 0xaf, 0xf7, 0x20, 0xf8, 0x27, 0x04, + 0x26, 0x06, 0xf3, 0x06, 0xe6, 0xf5, 0x2b, 0xfa, 0x8b, 0x08, 0x53, 0xee, + 0xc8, 0x00, 0x2c, 0x1a, 0x82, 0x04, 0x97, 0xf9, 0x9a, 0xfc, 0xb4, 0xf0, + 0x1b, 0xec, 0xc1, 0x0b, 0x86, 0x10, 0x9e, 0x02, 0x7e, 0xf8, 0xd3, 0xfd, + 0x03, 0xf2, 0xfd, 0xf6, 0x35, 0x14, 0x88, 0x11, 0x84, 0xec, 0x75, 0xed, + 0xf7, 0x07, 0x4d, 0x00, 0x13, 0x06, 0xa4, 0x12, 0x6c, 0x01, 0x0c, 0xee, + 0xa3, 0xf3, 0xfe, 0x09, 0x9f, 0x14, 0x2c, 0x02, 0x8a, 0xf8, 0xda, 0xfd, + 0x9e, 0x09, 0x91, 0xfd, 0x3c, 0xf9, 0xca, 0x05, 0xc7, 0x0a, 0xd7, 0xfd, + 0xda, 0xea, 0x49, 0xec, 0x4e, 0x10, 0x6d, 0x1a, 0xb3, 0xf7, 0x69, 0xeb, + 0x42, 0x00, 0x31, 0x10, 0x8d, 0x02, 0x28, 0xf2, 0x3c, 0x05, 0x82, 0xf6, + 0x88, 0xf6, 0x16, 0x04, 0x4e, 0x00, 0xb4, 0x0a, 0x1b, 0x0b, 0x9f, 0xf5, + 0xbe, 0xed, 0x22, 0xf9, 0xcf, 0xfc, 0x9c, 0x0e, 0xac, 0x08, 0xd7, 0xf9, + 0x5f, 0xfa, 0x22, 0xfd, 0x03, 0xff, 0x1b, 0x11, 0xa0, 0x07, 0x04, 0xf2, + 0x48, 0x00, 0xcd, 0x08, 0x13, 0xff, 0xab, 0x03, 0x3f, 0x02, 0x1e, 0xfb, + 0xe9, 0xff, 0x96, 0xf4, 0x4d, 0xf3, 0x9e, 0x03, 0x2b, 0x10, 0x5f, 0x09, + 0xa6, 0xf8, 0x27, 0xf4, 0xbf, 0xf1, 0x64, 0xfd, 0xdd, 0x0c, 0x6c, 0x0c, + 0x32, 0xf8, 0x4d, 0xfa, 0x9c, 0x05, 0xfa, 0xf9, 0xbb, 0xfa, 0xb5, 0x09, + 0xe9, 0x08, 0x37, 0xff, 0x48, 0xf4, 0x39, 0xf5, 0x0a, 0x02, 0xf9, 0x09, + 0x98, 0x07, 0x5b, 0xfe, 0xa6, 0xff, 0x4a, 0x00, 0x3d, 0xf8, 0xae, 0x04, + 0xb3, 0x09, 0x32, 0x03, 0xe5, 0xfd, 0xd7, 0xf9, 0xab, 0xf2, 0x4a, 0x02, + 0xae, 0x0f, 0xf2, 0x0b, 0x8b, 0xff, 0x4c, 0xdf, 0x6b, 0xee, 0x91, 0x23, + 0x77, 0x11, 0x47, 0xe6, 0xe9, 0xf6, 0xac, 0x06, 0x91, 0xf4, 0xe1, 0xf5, + 0xe0, 0x06, 0xde, 0x0b, 0xa0, 0x03, 0x38, 0xfe, 0xb1, 0xfb, 0x8f, 0xf9, + 0x0d, 0xfa, 0x1a, 0x04, 0x9b, 0xfe, 0xfd, 0x07, 0xe1, 0x0b, 0x0d, 0xfe, + 0x2b, 0xef, 0x9a, 0xf8, 0x95, 0x0c, 0xa8, 0x02, 0x58, 0xfc, 0xd0, 0xff, + 0xf1, 0xfc, 0xa1, 0xf9, 0x79, 0xfe, 0x14, 0x00, 0x0a, 0x08, 0x98, 0x07, + 0xd7, 0xfc, 0x67, 0xe9, 0xf2, 0xf5, 0x3d, 0x10, 0xf4, 0x19, 0x63, 0x09, + 0xa7, 0xf7, 0x95, 0xf0, 0x2e, 0xf1, 0x14, 0xfd, 0xa5, 0x10, 0x63, 0x0f, + 0xef, 0x10, 0x85, 0xf8, 0x80, 0xeb, 0x61, 0xf7, 0x77, 0x06, 0x5c, 0x10, + 0xc6, 0x09, 0xcb, 0x05, 0xed, 0xf5, 0x4e, 0xe7, 0x73, 0xf3, 0x94, 0x1a, + 0x8a, 0x13, 0xf9, 0xfc, 0x1b, 0xf5, 0x4a, 0xf8, 0x78, 0xfd, 0xa6, 0xf8, + 0x6f, 0x05, 0xc0, 0x13, 0x87, 0xfd, 0xb7, 0xe8, 0x35, 0xfd, 0xe3, 0xfe, + 0x26, 0x06, 0x14, 0x09, 0x26, 0xf5, 0xf2, 0xf6, 0x98, 0x06, 0x14, 0xfb, + 0xb1, 0xf3, 0x3e, 0x04, 0xfc, 0x0b, 0x36, 0xfe, 0x4b, 0xf5, 0x59, 0xfd, + 0xe3, 0x02, 0x44, 0x04, 0x85, 0xfe, 0xad, 0xfd, 0xe3, 0x0b, 0x28, 0x04, + 0xb2, 0xf5, 0xe8, 0x07, 0xd5, 0x06, 0x5b, 0xfb, 0x86, 0x14, 0xac, 0x09, + 0xdc, 0xe6, 0x53, 0xf9, 0xf7, 0x14, 0xee, 0x03, 0x3d, 0xfe, 0xf5, 0xfd, + 0xe6, 0xfa, 0xa9, 0xf9, 0x47, 0x00, 0x9a, 0x03, 0xbc, 0xff, 0xbf, 0x07, + 0x44, 0x03, 0xbb, 0x01, 0x28, 0xfc, 0x97, 0x04, 0x0a, 0x0b, 0x6c, 0xf7, + 0x6d, 0xf2, 0xf6, 0xf9, 0xa8, 0xfd, 0xec, 0x0b, 0xa3, 0x06, 0x79, 0xfb, + 0x8f, 0xf8, 0xfb, 0xf2, 0x32, 0xf8, 0xd1, 0x00, 0x3e, 0x04, 0xb7, 0x07, + 0x60, 0xfe, 0x51, 0xf8, 0xcf, 0xfa, 0xbf, 0xfb, 0xae, 0x01, 0x0e, 0x0c, + 0x51, 0x04, 0xa2, 0xfd, 0xef, 0xff, 0xad, 0xfd, 0x0a, 0xff, 0x29, 0x07, + 0x25, 0x04, 0x07, 0x06, 0x27, 0xfe, 0x2f, 0xfe, 0x89, 0xff, 0xbf, 0x05, + 0x5f, 0x06, 0xb1, 0x00, 0x3e, 0xf9, 0xf6, 0xfa, 0x23, 0x01, 0x10, 0x04, + 0xc6, 0x0a, 0x15, 0xfb, 0x2f, 0xf7, 0x61, 0xfe, 0x62, 0x01, 0xfe, 0x03, + 0x5d, 0x01, 0x89, 0x00, 0x6d, 0xfb, 0xd4, 0xff, 0x21, 0x02, 0xb0, 0x05, + 0xd1, 0x03, 0x1f, 0xfc, 0x73, 0xfe, 0x45, 0x04, 0xd1, 0xf6, 0xef, 0xf5, + 0xcd, 0x05, 0xaa, 0x0e, 0xc0, 0x06, 0x12, 0xf6, 0xdc, 0xf7, 0xbe, 0x01, + 0x80, 0xfe, 0xdb, 0xfa, 0xa3, 0x04, 0xd1, 0x02, 0x99, 0xef, 0xf1, 0x02, + 0xfd, 0x0c, 0xba, 0x03, 0x95, 0x07, 0xdb, 0xfb, 0x6d, 0xf3, 0x24, 0xfe, + 0x5d, 0x07, 0xec, 0xff, 0x7c, 0x04, 0xb2, 0xf9, 0x48, 0xfa, 0xf7, 0xff, + 0x0c, 0x02, 0x2b, 0x00, 0xca, 0x0b, 0xd8, 0x03, 0x55, 0xf4, 0x6c, 0xf4, + 0x7c, 0xfe, 0x20, 0xfd, 0x0c, 0xfd, 0x2c, 0x05, 0xcb, 0x0a, 0x67, 0x08, + 0x30, 0xfc, 0xe0, 0xfd, 0xb4, 0x00, 0x1d, 0xff, 0x52, 0x06, 0x4b, 0x0d, + 0x93, 0x07, 0x02, 0x01, 0xef, 0xf1, 0x09, 0xf7, 0xb4, 0x07, 0xf4, 0x05, + 0x49, 0xf8, 0x19, 0x00, 0xf3, 0x09, 0x1d, 0xfe, 0x1b, 0xfe, 0xb3, 0x04, + 0xbc, 0x01, 0x21, 0xf3, 0x1d, 0xf7, 0xbc, 0xfc, 0x7a, 0x02, 0xab, 0x04, + 0xca, 0x05, 0xe0, 0x02, 0xa4, 0x00, 0x96, 0xfd, 0x80, 0x00, 0xdd, 0x06, + 0x18, 0x0a, 0xf2, 0xfe, 0xd3, 0xf7, 0x40, 0xfe, 0x80, 0xfb, 0xdb, 0x04, + 0xde, 0x08, 0xe6, 0xfa, 0xb8, 0xfa, 0x46, 0x02, 0xd9, 0xff, 0x99, 0xfe, + 0x45, 0x04, 0x77, 0x00, 0x8d, 0xf9, 0x1b, 0x03, 0xf7, 0x03, 0x77, 0x0d, + 0xd4, 0x09, 0x61, 0xfb, 0xbe, 0xfb, 0x96, 0xfd, 0xf7, 0x00, 0x84, 0x02, + 0xed, 0x05, 0xc3, 0x04, 0x62, 0xff, 0x50, 0xfa, 0x47, 0xff, 0x03, 0x00, + 0x26, 0xf9, 0x5d, 0xf7, 0x9f, 0x00, 0x88, 0x05, 0x2c, 0x04, 0x45, 0xff, + 0xc1, 0xf6, 0x0d, 0xf9, 0x19, 0x00, 0x17, 0x04, 0x06, 0x0a, 0x42, 0x04, + 0x30, 0xfe, 0x83, 0xfb, 0x4a, 0xfb, 0x4f, 0x00, 0xbc, 0x05, 0x88, 0x0c, + 0xbc, 0x04, 0x20, 0x00, 0xd0, 0x00, 0x7f, 0xfe, 0x51, 0xfc, 0x19, 0xfd, + 0xaf, 0x00, 0x39, 0x06, 0x9e, 0x03, 0xdc, 0xff, 0x21, 0x00, 0x79, 0x01, + 0xd3, 0xfd, 0xc3, 0xfb, 0x2f, 0xff, 0x2a, 0x08, 0x15, 0x05, 0x5b, 0xfb, + 0x01, 0xfa, 0x43, 0xfa, 0x7a, 0xfd, 0x3b, 0x04, 0xc0, 0xfd, 0x2b, 0xfd, + 0x2d, 0x06, 0xcc, 0x02, 0x66, 0x00, 0xaa, 0x02, 0x8c, 0xfc, 0x3d, 0xf8, + 0x3f, 0x04, 0x8b, 0x06, 0x82, 0x0a, 0x7c, 0x08, 0x73, 0xf6, 0x86, 0xf7, + 0x80, 0x04, 0xcf, 0x02, 0x53, 0x02, 0x2c, 0x06, 0x93, 0xfe, 0x79, 0xfa, + 0x55, 0x00, 0x4f, 0x03, 0x2f, 0xff, 0x66, 0xfd, 0x29, 0xfc, 0x45, 0x06, + 0x91, 0x03, 0xa9, 0xff, 0xf2, 0xf8, 0x29, 0xfb, 0x16, 0x05, 0xdf, 0x06, + 0x0d, 0x08, 0xb5, 0x08, 0x2b, 0xff, 0x2b, 0xf9, 0x37, 0xfe, 0x68, 0xfa, + 0xe1, 0xfb, 0xdd, 0x07, 0xe6, 0x05, 0x43, 0xff, 0x7d, 0x06, 0x0f, 0xfe, + 0xbc, 0xfb, 0x7f, 0xfe, 0x73, 0x03, 0xfa, 0x04, 0xc7, 0xfd, 0x6f, 0xf6, + 0x2f, 0xfa, 0xea, 0x07, 0xc9, 0x06, 0x12, 0xff, 0x6d, 0x07, 0xd8, 0x07, + 0xe4, 0xfe, 0xd6, 0xfc, 0xd0, 0x03, 0x32, 0x07, 0x30, 0xfe, 0xf9, 0xf7, + 0xe7, 0xff, 0xef, 0x08, 0x57, 0x08, 0xbf, 0x09, 0x73, 0x01, 0xf4, 0xf1, + 0xf1, 0xf0, 0x5a, 0x01, 0x0f, 0x06, 0xf9, 0x01, 0xff, 0x02, 0x91, 0xfe, + 0x7e, 0xf8, 0xf0, 0xf9, 0xdc, 0x01, 0xc0, 0x04, 0xa1, 0x01, 0xa0, 0x00, + 0xc6, 0x00, 0x70, 0xff, 0x78, 0xfc, 0xb7, 0x00, 0x18, 0xfa, 0x77, 0xf1, + 0x10, 0x01, 0xd7, 0x0b, 0xe0, 0x07, 0x5e, 0x03, 0x58, 0xff, 0xa1, 0xfc, + 0x5d, 0xfa, 0x03, 0xfe, 0x99, 0x03, 0x38, 0x02, 0x3d, 0xfa, 0x96, 0xff, + 0x8f, 0x09, 0x0d, 0x03, 0xa2, 0xff, 0x83, 0x07, 0x7f, 0x07, 0x80, 0x00, + 0x37, 0xfc, 0x4e, 0x02, 0xc0, 0x03, 0xc3, 0xff, 0x38, 0xff, 0x73, 0xff, + 0x20, 0xfe, 0xfb, 0x00, 0xa6, 0x02, 0x5f, 0xfe, 0x5c, 0xfd, 0xae, 0x06, + 0xcd, 0x01, 0x0c, 0xfc, 0x58, 0xfd, 0xcc, 0xfe, 0x80, 0xfc, 0x9a, 0xfb, + 0xc3, 0xfd, 0x89, 0x02, 0x9f, 0x07, 0x63, 0x05, 0x19, 0x00, 0x25, 0xff, + 0xc1, 0xff, 0x14, 0xf8, 0xf5, 0xf8, 0x8d, 0x02, 0xa6, 0x09, 0x26, 0x07, + 0xbd, 0x01, 0x56, 0xfd, 0x1b, 0xfa, 0x1c, 0xfb, 0x4f, 0x00, 0xaf, 0x03, + 0x57, 0x07, 0xc0, 0x03, 0x3f, 0x02, 0x20, 0x01, 0x7a, 0xff, 0x3e, 0xfd, + 0xfa, 0xff, 0x7d, 0x00, 0xbc, 0x03, 0xdc, 0x05, 0x89, 0x07, 0xec, 0x04, + 0xc4, 0xfe, 0xa3, 0xfc, 0x67, 0xfd, 0xec, 0x00, 0xc3, 0xfe, 0xd1, 0xff, + 0x0b, 0x05, 0x78, 0x01, 0x49, 0xfe, 0x33, 0xfc, 0x27, 0xfc, 0x1a, 0xfe, + 0xf8, 0x01, 0x91, 0xff, 0x9b, 0xfd, 0xa7, 0xff, 0x0e, 0xff, 0x41, 0xfe, + 0xc7, 0xfe, 0x1e, 0x00, 0xc5, 0x01, 0xb6, 0xfe, 0x04, 0x00, 0x3e, 0x00, + 0xcf, 0xfe, 0xf3, 0x01, 0xc0, 0x01, 0xf3, 0x00, 0x5a, 0x04, 0x83, 0x01, + 0x01, 0xfd, 0x8d, 0xfd, 0x14, 0xfc, 0x0e, 0xfb, 0xe9, 0x01, 0x86, 0x03, + 0x8d, 0x02, 0x03, 0x01, 0x24, 0xfe, 0xcd, 0xfc, 0xea, 0xfc, 0x84, 0xfe, + 0xde, 0x00, 0x9b, 0x01, 0x38, 0x00, 0x33, 0xff, 0x25, 0xff, 0xd8, 0xfc, + 0x98, 0xfa, 0x50, 0x00, 0xd2, 0x04, 0x91, 0x05, 0xf1, 0x04, 0xc7, 0x03, + 0xac, 0x00, 0x15, 0xff, 0xe6, 0xff, 0x1b, 0xff, 0x30, 0xfe, 0xe2, 0x00, + 0x3e, 0x01, 0x4c, 0x03, 0x54, 0xff, 0x8e, 0xfe, 0x80, 0xff, 0xbd, 0x00, + 0xf2, 0x01, 0x32, 0x02, 0x8d, 0xfe, 0x81, 0x00, 0xa9, 0xfe, 0xda, 0xfc, + 0x18, 0x00, 0x70, 0x02, 0x18, 0x01, 0x58, 0x00, 0xa9, 0x00, 0x4c, 0x02, + 0xf0, 0x03, 0xf2, 0x01, 0xa2, 0xff, 0x6e, 0xfe, 0x7f, 0xfe, 0x30, 0xfe, + 0x0e, 0x03, 0xa5, 0x04, 0x9b, 0x05, 0x56, 0x05, 0xf7, 0x04, 0xea, 0xff, + 0xb0, 0xfd, 0xe1, 0xfc, 0xe8, 0xfc, 0xb1, 0x01, 0x73, 0x06, 0x45, 0x08, + 0x08, 0x06, 0xc0, 0x02, 0x7e, 0xff, 0x85, 0x00, 0x67, 0x00, 0xcd, 0x02, + 0x64, 0x01, 0xdb, 0xfd, 0x7b, 0xfc, 0x4a, 0xfc, 0x73, 0xfc, 0x56, 0x00, + 0xf2, 0x02, 0x6f, 0x00, 0x1e, 0xfe, 0x21, 0xfd, 0x9b, 0xfc, 0xb4, 0xfd, + 0x44, 0xfe, 0x27, 0xfc, 0x42, 0xfb, 0x8b, 0xfc, 0xf8, 0xfc, 0x76, 0xfe, + 0xf3, 0x00, 0xdc, 0xfe, 0xe9, 0xfc, 0x36, 0xfe, 0xd3, 0xfb, 0x5c, 0xfb, + 0x4b, 0xfb, 0x0f, 0xfb, 0x6f, 0xfd, 0xd3, 0xfd, 0xe9, 0xff, 0x63, 0x00, + 0xae, 0xfd, 0x87, 0xfc, 0xdc, 0xfa, 0x3f, 0xfa, 0xd2, 0xfa, 0x14, 0xfa, + 0x88, 0xfa, 0x01, 0xfd, 0x55, 0xfe, 0x47, 0xfe, 0x90, 0xff, 0xcb, 0xff, + 0x26, 0x00, 0x7b, 0xfd, 0xee, 0xfa, 0x1d, 0xfb, 0xab, 0xfd, 0x45, 0xfe, + 0x41, 0xfd, 0x6b, 0xfe, 0x6c, 0xfc, 0x54, 0xfe, 0x3b, 0x01, 0xc6, 0x00, + 0xc5, 0x00, 0x95, 0x02, 0x64, 0x02, 0xa3, 0x00, 0xd8, 0xfe, 0xfa, 0xfe, + 0xf6, 0xfc, 0xa4, 0xfd, 0xf2, 0xff, 0x9e, 0x02, 0x19, 0x06, 0x90, 0x07, + 0x52, 0x04, 0xda, 0x02, 0x34, 0x02, 0x61, 0x02, 0xc6, 0x02, 0x24, 0x06, + 0xc4, 0x0a, 0xf1, 0x08, 0x66, 0x08, 0x02, 0x08, 0x26, 0x08, 0x27, 0x07, + 0xde, 0x08, 0x99, 0x06, 0x72, 0x04, 0x94, 0x02, 0x14, 0x03, 0xec, 0x04, + 0xe9, 0x02, 0x80, 0x01, 0x32, 0x05, 0xe2, 0x06, 0xa0, 0x06, 0xcc, 0x06, + 0x8b, 0x05, 0x17, 0x01, 0x98, 0xff, 0xf4, 0xff, 0x52, 0xfd, 0xbb, 0xf8, + 0xfb, 0xf9, 0xb0, 0xfe, 0x15, 0x04, 0xfd, 0x09, 0x1a, 0x05, 0x26, 0xff, + 0x9b, 0xfa, 0x27, 0xfb, 0x89, 0xfc, 0x37, 0xfd, 0x42, 0xfc, 0x6e, 0xf9, + 0xbe, 0xf8, 0xb3, 0xf8, 0xdb, 0xfb, 0x55, 0xfb, 0x30, 0xfc, 0x63, 0xf9, + 0x0f, 0xf6, 0x31, 0xf4, 0x83, 0xf4, 0x75, 0xf5, 0x48, 0xf8, 0x3c, 0xfa, + 0x5c, 0xfa, 0x09, 0xf8, 0x75, 0xf6, 0x34, 0xf7, 0xf3, 0xf5, 0x77, 0xf7, + 0x5f, 0xf8, 0xa2, 0xf8, 0x75, 0xf7, 0x88, 0xf5, 0x11, 0xf7, 0x57, 0xf7, + 0x7f, 0xfa, 0x73, 0xfd, 0x9d, 0xfd, 0x58, 0xfd, 0xfb, 0xfa, 0x80, 0xf9, + 0xa0, 0xf6, 0x74, 0xf9, 0xba, 0xff, 0x36, 0x04, 0x3b, 0x05, 0x59, 0x01, + 0xc1, 0xff, 0x63, 0xfd, 0xb9, 0x00, 0x19, 0x04, 0xaa, 0x07, 0xcf, 0x04, + 0x5e, 0x02, 0x9c, 0x00, 0x83, 0x01, 0x21, 0x08, 0x36, 0x0c, 0xed, 0x0b, + 0xaa, 0x09, 0xc7, 0x06, 0x2e, 0x05, 0x81, 0x07, 0x84, 0x08, 0xe4, 0x07, + 0xec, 0x07, 0x36, 0x08, 0x91, 0x07, 0x4d, 0x0b, 0x85, 0x0e, 0x87, 0x0d, + 0x8d, 0x0a, 0xc7, 0x08, 0xd4, 0x04, 0x31, 0x00, 0xd6, 0x02, 0x5d, 0x05, + 0x77, 0x06, 0xb5, 0x07, 0x24, 0x09, 0x7b, 0x0a, 0xf8, 0x09, 0x43, 0x09, + 0xf5, 0x04, 0x3d, 0x03, 0x25, 0x01, 0xfe, 0x01, 0x21, 0x02, 0xf5, 0x03, + 0xae, 0x07, 0x2f, 0x07, 0xdc, 0x04, 0xc6, 0x02, 0xc3, 0xff, 0x4a, 0xff, + 0x52, 0xfd, 0xe2, 0xfd, 0x3e, 0xfb, 0xe2, 0xfa, 0xde, 0xfa, 0xfc, 0xfa, + 0xa1, 0xf8, 0xeb, 0xf6, 0x3f, 0xf2, 0x6c, 0xef, 0xbc, 0xec, 0x0a, 0xec, + 0x11, 0xef, 0x65, 0xf1, 0x19, 0xf2, 0x3d, 0xf1, 0x72, 0xef, 0x0a, 0xed, + 0x61, 0xef, 0xe3, 0xf2, 0x42, 0xf2, 0x4c, 0xf1, 0xe1, 0xf1, 0x44, 0xf2, + 0xd1, 0xf1, 0x14, 0xf2, 0x60, 0xf7, 0x39, 0xfc, 0xbf, 0xff, 0x6d, 0xff, + 0xb9, 0x07, 0x1e, 0x07, 0xc7, 0x06, 0x6d, 0x01, 0xae, 0xf5, 0xc5, 0xf3, + 0xf3, 0xf7, 0x37, 0xfe, 0xf9, 0x02, 0x8e, 0x06, 0x64, 0x02, 0xd7, 0xfc, + 0x4c, 0xfc, 0x79, 0xfd, 0x83, 0x01, 0x0b, 0x05, 0xb0, 0x08, 0x5d, 0x06, + 0xca, 0x00, 0x69, 0xff, 0x9d, 0xfe, 0x12, 0x02, 0x2b, 0x07, 0x8d, 0x0a, + 0x4f, 0x0d, 0x0a, 0x0f, 0xd4, 0x0e, 0xe3, 0x0d, 0x63, 0x0c, 0x35, 0x0a, + 0x70, 0x07, 0xb3, 0x08, 0x02, 0x08, 0xc5, 0x0a, 0xa5, 0x0d, 0xbc, 0x10, + 0xbf, 0x12, 0xd1, 0x11, 0x34, 0x0d, 0x17, 0x07, 0xd9, 0x04, 0xc4, 0x04, + 0x83, 0x06, 0xf0, 0x07, 0x17, 0x09, 0x6e, 0x09, 0x1e, 0x0d, 0x45, 0x0f, + 0xec, 0x0e, 0x48, 0x0d, 0x4a, 0x08, 0xcf, 0x05, 0xa2, 0x02, 0x84, 0x00, + 0x51, 0xff, 0x9b, 0xfd, 0xc9, 0xfc, 0x8b, 0xfd, 0x4d, 0xfe, 0xbd, 0x00, + 0x93, 0xff, 0x7d, 0xff, 0x93, 0xf9, 0x14, 0xf5, 0x9a, 0xf0, 0xf1, 0xef, + 0x1a, 0xf0, 0xbe, 0xf0, 0xac, 0xf0, 0x25, 0xec, 0x9d, 0xee, 0x38, 0xed, + 0xcb, 0xed, 0xc3, 0xed, 0x77, 0xed, 0x9e, 0xec, 0xb6, 0xee, 0x49, 0xf0, + 0x66, 0xf1, 0xd8, 0xf6, 0x4d, 0xf7, 0x61, 0xf6, 0xd4, 0xf4, 0x5c, 0xf2, + 0x70, 0xf3, 0x08, 0xf4, 0xd1, 0xf6, 0x75, 0xfb, 0x4c, 0xfe, 0x53, 0xfe, + 0x26, 0x01, 0xe5, 0xff, 0x84, 0x07, 0x74, 0x05, 0xf6, 0x03, 0x0a, 0x02, + 0xc5, 0xfb, 0x7f, 0xf6, 0xf1, 0xf6, 0x63, 0xfa, 0x82, 0xfd, 0x03, 0x01, + 0xd1, 0x02, 0xa2, 0xff, 0x2e, 0xfe, 0x8e, 0xfb, 0xa3, 0xfb, 0x16, 0xff, + 0x68, 0xff, 0xdb, 0x02, 0xd7, 0x08, 0xc6, 0x0b, 0x0c, 0x0d, 0x8b, 0x0d, + 0x35, 0x0c, 0x0a, 0x0f, 0xda, 0x11, 0xbe, 0x13, 0x26, 0x14, 0xff, 0x12, + 0x61, 0x10, 0x4b, 0x12, 0x90, 0x12, 0xfc, 0x12, 0x79, 0x12, 0x12, 0x11, + 0x18, 0x0d, 0x1e, 0x0b, 0x2c, 0x08, 0x26, 0x08, 0x57, 0x09, 0xad, 0x09, + 0x72, 0x09, 0xf6, 0x0a, 0x48, 0x0a, 0xd8, 0x0d, 0xfa, 0x0d, 0x19, 0x0c, + 0xe3, 0x09, 0x69, 0x05, 0x07, 0x04, 0x25, 0x05, 0x16, 0x06, 0x5a, 0x06, + 0x4d, 0x05, 0x15, 0x04, 0xf1, 0x00, 0xb5, 0xff, 0x08, 0xfc, 0x51, 0xf5, + 0x79, 0xf0, 0x8e, 0xec, 0x7e, 0xeb, 0x48, 0xef, 0xdf, 0xf0, 0x4d, 0xf5, + 0x13, 0xf5, 0xcc, 0xf4, 0xa2, 0xf1, 0xbb, 0xed, 0xd1, 0xea, 0xe8, 0xe6, + 0xea, 0xe7, 0xca, 0xe9, 0x2f, 0xef, 0xe9, 0xf0, 0x3d, 0xf0, 0xbb, 0xeb, + 0xe5, 0xed, 0x12, 0xf3, 0x6b, 0xfa, 0x1f, 0xfe, 0xbb, 0xfe, 0x8f, 0xf8, + 0x05, 0xf5, 0xa4, 0xf3, 0xcf, 0xf5, 0xb1, 0xfb, 0xb3, 0x01, 0xa2, 0xfe, + 0x30, 0xfe, 0x17, 0xfc, 0xd4, 0xfd, 0x69, 0x01, 0x97, 0x01, 0x6a, 0xfe, + 0x53, 0xf9, 0x95, 0xf5, 0x38, 0xf4, 0xf0, 0xf3, 0x13, 0xf5, 0x4d, 0xfa, + 0x4e, 0xfc, 0x32, 0x00, 0x65, 0x02, 0x5b, 0x04, 0x75, 0x03, 0xe4, 0x05, + 0x10, 0x07, 0x51, 0x06, 0x47, 0x07, 0x10, 0x0a, 0xe0, 0x0b, 0x3f, 0x0f, + 0x96, 0x11, 0xcf, 0x14, 0x73, 0x15, 0xe3, 0x16, 0xb8, 0x14, 0x1f, 0x11, + 0xc2, 0x0c, 0x28, 0x0c, 0x40, 0x0d, 0x31, 0x0e, 0xef, 0x0e, 0x83, 0x0f, + 0xd8, 0x0f, 0x7e, 0x0f, 0x18, 0x0f, 0x82, 0x0d, 0xce, 0x0d, 0x26, 0x0d, + 0x0f, 0x0d, 0x59, 0x0c, 0x36, 0x0b, 0x56, 0x0a, 0x1c, 0x0c, 0x8e, 0x0c, + 0x05, 0x0d, 0xe3, 0x0a, 0x81, 0x0a, 0xa9, 0x07, 0xf0, 0x04, 0x45, 0x02, + 0x2c, 0xfd, 0xad, 0xf8, 0xb4, 0xf6, 0x8b, 0xf5, 0xdb, 0xf6, 0x12, 0xf9, + 0x11, 0xf9, 0xcb, 0xf9, 0xf2, 0xf7, 0x2e, 0xf5, 0x64, 0xf0, 0x58, 0xed, + 0xb5, 0xeb, 0x8f, 0xeb, 0x56, 0xee, 0xf4, 0xec, 0xce, 0xe9, 0x90, 0xe9, + 0x7b, 0xe7, 0xc1, 0xe8, 0x04, 0xed, 0x56, 0xf1, 0x19, 0xf5, 0xac, 0xf5, + 0xc1, 0xf6, 0x16, 0xf3, 0x69, 0xf2, 0xf5, 0xf1, 0xea, 0xf5, 0xc4, 0xf9, + 0x21, 0xf9, 0xa4, 0xfb, 0x2a, 0xfc, 0x09, 0xfe, 0x01, 0x01, 0x04, 0x00, + 0xee, 0x00, 0x16, 0xfd, 0xce, 0xfb, 0x5b, 0xfb, 0x2a, 0xf8, 0x12, 0xf9, + 0xfb, 0xf4, 0xbb, 0xf8, 0xec, 0xf7, 0x46, 0xfc, 0x6d, 0xfd, 0xba, 0xfb, + 0x15, 0xfd, 0x39, 0xfb, 0x55, 0xfb, 0x57, 0xfc, 0xe8, 0xfe, 0xfc, 0xfd, + 0xec, 0x01, 0xd2, 0x03, 0x04, 0x06, 0x7f, 0x0e, 0x20, 0x0f, 0x1d, 0x0e, + 0x8b, 0x0d, 0x4e, 0x0b, 0xaf, 0x0c, 0xbe, 0x13, 0xed, 0x13, 0x75, 0x13, + 0x40, 0x14, 0x8f, 0x13, 0x81, 0x14, 0x58, 0x16, 0x38, 0x17, 0x51, 0x17, + 0xa9, 0x16, 0xc8, 0x11, 0x41, 0x0e, 0xd7, 0x0b, 0xb8, 0x0a, 0x29, 0x0d, + 0x46, 0x0d, 0x18, 0x0d, 0xc1, 0x0a, 0x6d, 0x09, 0x5c, 0x09, 0x3a, 0x0a, + 0xcc, 0x0b, 0x80, 0x0d, 0xae, 0x0c, 0xcf, 0x09, 0xab, 0x05, 0x83, 0x01, + 0xc2, 0xff, 0x35, 0xff, 0x1a, 0x00, 0x11, 0xfe, 0x1e, 0xfc, 0xde, 0xf9, + 0x46, 0xf9, 0x0d, 0xf9, 0xb8, 0xf6, 0xb4, 0xf3, 0x1c, 0xf1, 0x70, 0xeb, + 0x7d, 0xeb, 0xf2, 0xe9, 0x93, 0xeb, 0x0d, 0xec, 0xf8, 0xec, 0x69, 0xeb, + 0x93, 0xeb, 0x15, 0xec, 0x4a, 0xec, 0x2e, 0xed, 0x29, 0xec, 0x6b, 0xef, + 0x7d, 0xf1, 0xbb, 0xf6, 0xb2, 0xf9, 0x87, 0xfb, 0x6d, 0xfa, 0x4a, 0xf8, + 0x5e, 0xf9, 0xb6, 0xfc, 0x93, 0x00, 0x5b, 0x00, 0x97, 0x01, 0x19, 0x00, + 0xbf, 0xfc, 0x18, 0xfa, 0x27, 0xfa, 0xab, 0xf6, 0x4b, 0xf5, 0x85, 0xf1, + 0xb8, 0xf0, 0xd8, 0xf4, 0x2e, 0xf6, 0xc4, 0xfb, 0x97, 0xfb, 0xa2, 0xf6, + 0xeb, 0xf5, 0x6e, 0xf4, 0x46, 0xf9, 0x9e, 0xfe, 0x23, 0x02, 0x0d, 0x08, + 0xd8, 0x06, 0x89, 0x05, 0x91, 0x03, 0xe1, 0x05, 0xd9, 0x08, 0x73, 0x0f, + 0x49, 0x10, 0xf9, 0x11, 0xc8, 0x10, 0x4b, 0x0d, 0x81, 0x0b, 0x26, 0x0a, + 0xe0, 0x0a, 0x2e, 0x0f, 0xf6, 0x12, 0xd4, 0x14, 0xf1, 0x16, 0xbd, 0x13, + 0xda, 0x14, 0x51, 0x14, 0x92, 0x15, 0x72, 0x15, 0x24, 0x15, 0x2e, 0x14, + 0xd9, 0x11, 0xe6, 0x0d, 0x22, 0x0d, 0xfa, 0x0c, 0x94, 0x0d, 0xc6, 0x0f, + 0x5f, 0x0e, 0xbc, 0x0b, 0x15, 0x0a, 0xa1, 0x07, 0x13, 0x07, 0x45, 0x08, + 0xc9, 0x06, 0xe1, 0x04, 0x7c, 0x02, 0xdd, 0xff, 0x73, 0xfe, 0x5e, 0xfe, + 0x83, 0xfd, 0x13, 0xfe, 0x93, 0xfc, 0x02, 0xfe, 0xa7, 0xf9, 0xc8, 0xf8, + 0x2e, 0xf5, 0xd8, 0xf2, 0x3f, 0xf0, 0x90, 0xec, 0x2b, 0xe9, 0xad, 0xe5, + 0x58, 0xe5, 0x81, 0xe3, 0xbd, 0xe2, 0x2b, 0xe1, 0xee, 0xdf, 0x28, 0xe3, + 0x0b, 0xe8, 0x59, 0xeb, 0xf2, 0xf0, 0x52, 0xf6, 0x1b, 0xf9, 0x47, 0xff, + 0x63, 0x01, 0x7d, 0x01, 0xd9, 0x01, 0x55, 0x01, 0x44, 0x02, 0xce, 0x03, + 0x96, 0x05, 0x75, 0x03, 0x64, 0x01, 0xfd, 0xfd, 0xf1, 0xfa, 0x4d, 0xf8, + 0xb7, 0xf4, 0x70, 0xf0, 0x90, 0xee, 0xfc, 0xed, 0x1a, 0xee, 0xda, 0xee, + 0x24, 0xf1, 0x1f, 0xf2, 0x83, 0xf3, 0xdc, 0xf5, 0x58, 0xf9, 0x0c, 0xfd, + 0x0f, 0x02, 0xc7, 0x04, 0xfb, 0x05, 0x77, 0x08, 0xdb, 0x07, 0x05, 0x07, + 0x0e, 0x08, 0x91, 0x08, 0x10, 0x0b, 0x6b, 0x0e, 0x0d, 0x0e, 0x44, 0x0c, + 0xf5, 0x0b, 0xb4, 0x0a, 0x8d, 0x0b, 0xbc, 0x0e, 0x88, 0x0d, 0x77, 0x10, + 0xb2, 0x12, 0xfa, 0x14, 0x6b, 0x19, 0x2b, 0x1c, 0x61, 0x1e, 0xb3, 0x1e, + 0x39, 0x1e, 0x1c, 0x1a, 0xc0, 0x16, 0xb1, 0x12, 0x65, 0x10, 0xc7, 0x0d, + 0xc1, 0x0b, 0x5b, 0x08, 0x77, 0x07, 0x9a, 0x06, 0xce, 0x05, 0xaa, 0x04, + 0x4b, 0x02, 0x20, 0x01, 0xc2, 0x00, 0x9d, 0x02, 0x04, 0x04, 0xc9, 0x04, + 0x8e, 0x04, 0xcb, 0x02, 0x41, 0x02, 0x30, 0x02, 0x66, 0x04, 0x4a, 0x04, + 0x0e, 0x05, 0x5e, 0x01, 0xa9, 0xfd, 0xb3, 0xf8, 0x1f, 0xf3, 0xb6, 0xee, + 0x82, 0xea, 0xdd, 0xe6, 0xc3, 0xe1, 0x5d, 0xdd, 0x90, 0xd8, 0xfd, 0xd6, + 0xab, 0xd8, 0xda, 0xda, 0x9b, 0xdf, 0x73, 0xe4, 0xe7, 0xe7, 0x8d, 0xf0, + 0x43, 0xf8, 0x3c, 0x00, 0x1f, 0x05, 0xa3, 0x07, 0xaa, 0x08, 0xbd, 0x08, + 0x97, 0x09, 0x09, 0x06, 0x7f, 0x04, 0x06, 0x02, 0xb6, 0xff, 0x1a, 0xff, + 0x29, 0xfb, 0x60, 0xf7, 0x0e, 0xf2, 0x92, 0xef, 0x17, 0xec, 0xf9, 0xea, + 0xfa, 0xe8, 0xcc, 0xe9, 0x9f, 0xea, 0x30, 0xee, 0xea, 0xf2, 0x0f, 0xf7, + 0x50, 0xfc, 0x65, 0xff, 0xd2, 0x00, 0x42, 0x02, 0x5b, 0x05, 0xfc, 0x06, + 0x48, 0x09, 0x4f, 0x0d, 0x93, 0x0d, 0x20, 0x0e, 0x71, 0x0d, 0x77, 0x08, + 0x21, 0x06, 0x87, 0x04, 0xa2, 0x01, 0x36, 0x03, 0xf9, 0x05, 0x6c, 0x0c, + 0x89, 0x11, 0xaf, 0x13, 0x0c, 0x14, 0x35, 0x14, 0xb1, 0x16, 0x2d, 0x19, + 0xd8, 0x1c, 0x5e, 0x1e, 0x5f, 0x1e, 0x13, 0x1d, 0x0b, 0x1c, 0xfc, 0x19, + 0x4d, 0x19, 0x50, 0x18, 0x55, 0x16, 0x27, 0x13, 0x2f, 0x0f, 0xbd, 0x09, + 0x60, 0x04, 0xb1, 0xff, 0xd9, 0xfd, 0xf0, 0xfd, 0xe4, 0xfe, 0x16, 0x00, + 0xcb, 0x00, 0x95, 0x00, 0xf6, 0x01, 0xce, 0x03, 0x37, 0x06, 0x85, 0x07, + 0xc9, 0x07, 0x7d, 0x05, 0x81, 0x03, 0x3b, 0x01, 0x09, 0x00, 0x61, 0xff, + 0x0e, 0xff, 0x9b, 0xfd, 0xc4, 0xf9, 0x46, 0xf3, 0x7a, 0xeb, 0x46, 0xe2, + 0x43, 0xdc, 0xe3, 0xd7, 0xce, 0xd4, 0xb7, 0xd3, 0xb0, 0xd2, 0x49, 0xd6, + 0x36, 0xdd, 0xbb, 0xe4, 0x45, 0xec, 0xdc, 0xf2, 0x41, 0xf7, 0x62, 0xfb, + 0xf2, 0xff, 0x37, 0x05, 0x14, 0x08, 0xcf, 0x0b, 0x9e, 0x0b, 0x89, 0x0a, + 0x4e, 0x0b, 0x9b, 0x09, 0x43, 0x04, 0x7e, 0xfe, 0xe4, 0xf6, 0x0f, 0xf1, + 0x6c, 0xec, 0x52, 0xea, 0xec, 0xe5, 0xc5, 0xe4, 0xa6, 0xe4, 0x5e, 0xe6, + 0x0c, 0xe9, 0xe6, 0xee, 0xad, 0xf4, 0xc3, 0xfa, 0xe3, 0xff, 0x7e, 0x04, + 0x16, 0x08, 0x51, 0x0f, 0x7b, 0x14, 0x52, 0x15, 0x3a, 0x15, 0xdc, 0x0f, + 0xce, 0x0a, 0x1b, 0x07, 0xe5, 0x02, 0xff, 0xfe, 0x51, 0xff, 0x9f, 0xfe, + 0x5e, 0xfe, 0xe5, 0xff, 0x74, 0x01, 0xa7, 0x03, 0x2c, 0x09, 0x61, 0x0c, + 0x44, 0x10, 0xa2, 0x15, 0x5d, 0x19, 0xe8, 0x1d, 0xdc, 0x21, 0x5f, 0x25, + 0x70, 0x27, 0x32, 0x27, 0x14, 0x25, 0xab, 0x21, 0x1e, 0x1e, 0xe1, 0x19, + 0x84, 0x16, 0x1e, 0x11, 0x90, 0x0b, 0x83, 0x08, 0x58, 0x04, 0xa4, 0x00, + 0xe9, 0xfe, 0x6b, 0xfb, 0xe2, 0xfa, 0x18, 0xfb, 0xc5, 0xfa, 0x21, 0xfd, + 0x88, 0xff, 0x0a, 0x02, 0x5d, 0x07, 0xa3, 0x0a, 0x57, 0x0b, 0xfc, 0x0b, + 0x91, 0x0a, 0xcc, 0x06, 0xe7, 0x04, 0x8b, 0x02, 0x60, 0xff, 0xd3, 0xf9, + 0x5c, 0xf6, 0x17, 0xf0, 0xf8, 0xec, 0x38, 0xe9, 0x1a, 0xe5, 0x7c, 0xe1, + 0xf6, 0xdc, 0x68, 0xd9, 0x0f, 0xd7, 0x67, 0xd6, 0x0b, 0xd5, 0x38, 0xd6, + 0xa6, 0xd9, 0x1d, 0xe0, 0x26, 0xe9, 0xaf, 0xf4, 0xd3, 0xff, 0x08, 0x0a, + 0x64, 0x0f, 0xbb, 0x10, 0x67, 0x0f, 0x93, 0x0e, 0x8b, 0x0c, 0x8e, 0x09, + 0x0f, 0x05, 0xb6, 0xfe, 0x25, 0xfc, 0x86, 0xf6, 0xb4, 0xf0, 0x5b, 0xec, + 0xd1, 0xe8, 0xc6, 0xe5, 0x0d, 0xe7, 0x02, 0xe7, 0x62, 0xe7, 0xfc, 0xea, + 0xb3, 0xed, 0x9e, 0xf2, 0x7a, 0xf8, 0x2b, 0xff, 0x64, 0x06, 0x03, 0x0d, + 0x87, 0x11, 0x96, 0x12, 0x31, 0x10, 0xc2, 0x10, 0x94, 0x0f, 0x00, 0x0d, + 0xfc, 0x09, 0xda, 0x04, 0xcb, 0x00, 0x38, 0xfe, 0x80, 0xfa, 0x17, 0xf8, + 0x9a, 0xf9, 0xdd, 0xfb, 0x10, 0xfe, 0xc9, 0x02, 0xc1, 0x07, 0xd3, 0x0c, + 0x8f, 0x12, 0x71, 0x17, 0x86, 0x1b, 0x1f, 0x20, 0xd2, 0x23, 0xdc, 0x25, + 0xa9, 0x27, 0xac, 0x27, 0xc0, 0x26, 0x4a, 0x24, 0x23, 0x20, 0x4e, 0x1b, + 0xde, 0x14, 0xc1, 0x0d, 0x64, 0x06, 0x45, 0x00, 0x57, 0xfc, 0x4a, 0xfb, + 0x15, 0xfb, 0xcf, 0xfa, 0xc9, 0xfa, 0x87, 0xfc, 0x1f, 0xff, 0xd6, 0x03, + 0x89, 0x07, 0x64, 0x08, 0xfb, 0x07, 0x83, 0x06, 0xb4, 0x05, 0x22, 0x05, + 0x69, 0x05, 0x49, 0x06, 0xf8, 0x06, 0x0d, 0x06, 0xe0, 0x02, 0x5a, 0xfe, + 0xfd, 0xf7, 0x6b, 0xf1, 0x04, 0xed, 0x66, 0xea, 0xf2, 0xe8, 0x21, 0xe9, + 0x5f, 0xe6, 0xed, 0xe1, 0xad, 0xdb, 0x19, 0xd8, 0xaa, 0xd5, 0x47, 0xd5, + 0x45, 0xd8, 0xeb, 0xda, 0x5b, 0xdf, 0xcb, 0xe5, 0x23, 0xed, 0xfb, 0xf6, + 0xca, 0x02, 0x3f, 0x0e, 0xdc, 0x15, 0xd8, 0x18, 0xea, 0x17, 0x0e, 0x13, + 0x45, 0x0e, 0xda, 0x05, 0x96, 0xff, 0x50, 0xf8, 0x4f, 0xef, 0x5b, 0xe8, + 0x75, 0xe2, 0x8b, 0xdf, 0xb0, 0xe3, 0xfe, 0xe7, 0x32, 0xeb, 0x1f, 0xef, + 0x0b, 0xf2, 0x63, 0xf6, 0x96, 0xfb, 0x7a, 0x00, 0xc5, 0x02, 0xbd, 0x07, + 0xbb, 0x09, 0xfd, 0x0d, 0x2c, 0x11, 0x49, 0x12, 0x86, 0x11, 0x2f, 0x0e, + 0x9e, 0x0a, 0xea, 0x06, 0xaf, 0x02, 0x3a, 0xfe, 0xb2, 0xf9, 0xe5, 0xf5, + 0x13, 0xf2, 0x15, 0xf3, 0x77, 0xf7, 0x1f, 0xfd, 0x43, 0x05, 0x2f, 0x0c, + 0x81, 0x13, 0x59, 0x19, 0xc5, 0x1e, 0x4a, 0x21, 0x52, 0x23, 0x39, 0x24, + 0xff, 0x24, 0xc8, 0x24, 0xc1, 0x23, 0xf7, 0x21, 0x50, 0x1f, 0x65, 0x1a, + 0x99, 0x14, 0x15, 0x0e, 0xae, 0x08, 0x9f, 0x04, 0x03, 0x01, 0x97, 0xfd, + 0x04, 0xfb, 0xb7, 0xf9, 0x18, 0xfa, 0xef, 0xfb, 0x9a, 0xfe, 0xb5, 0x02, + 0x5b, 0x06, 0x1c, 0x08, 0xd8, 0x08, 0xe4, 0x09, 0x75, 0x09, 0xa9, 0x0a, + 0x33, 0x0a, 0xc3, 0x08, 0x35, 0x05, 0x30, 0x01, 0x94, 0xfe, 0x43, 0xfc, + 0xea, 0xfb, 0xd4, 0xfa, 0x36, 0xf9, 0xfe, 0xf4, 0xe3, 0xf1, 0xea, 0xee, + 0xf4, 0xee, 0x8f, 0xf0, 0xb4, 0xef, 0x37, 0xed, 0xe2, 0xe7, 0x4f, 0xe1, + 0xd0, 0xdb, 0xf3, 0xd5, 0x33, 0xd1, 0x9c, 0xce, 0x77, 0xcd, 0xb6, 0xd2, + 0x0e, 0xdd, 0x68, 0xeb, 0xbc, 0xfc, 0xf6, 0x0a, 0xea, 0x14, 0x60, 0x1c, + 0xf7, 0x1e, 0xe0, 0x1d, 0xca, 0x19, 0x57, 0x10, 0xb6, 0x06, 0xcc, 0xfc, + 0xa0, 0xf3, 0xc2, 0xeb, 0x44, 0xe7, 0xef, 0xe1, 0xb1, 0xe2, 0xe6, 0xe6, + 0x04, 0xea, 0x4b, 0xee, 0x99, 0xf1, 0xeb, 0xf2, 0x22, 0xf5, 0x22, 0xf9, + 0xb0, 0xfc, 0x6a, 0x02, 0x4e, 0x08, 0x5f, 0x0c, 0x7c, 0x0e, 0xda, 0x10, + 0xc3, 0x0f, 0x59, 0x10, 0x7e, 0x0f, 0x40, 0x0d, 0xfb, 0x09, 0x26, 0x04, + 0xc9, 0xfd, 0xca, 0xf6, 0x2d, 0xf4, 0x1d, 0xf2, 0x48, 0xf5, 0x30, 0xfb, + 0xec, 0x00, 0x1a, 0x08, 0x9a, 0x0d, 0x6f, 0x12, 0x2c, 0x17, 0x86, 0x1b, + 0x42, 0x1e, 0x07, 0x21, 0x15, 0x23, 0xfd, 0x22, 0xd7, 0x22, 0xac, 0x20, + 0xaa, 0x1d, 0x87, 0x1a, 0x35, 0x15, 0xa4, 0x11, 0x1a, 0x0d, 0x41, 0x08, + 0x0a, 0x04, 0x47, 0xff, 0x55, 0xfb, 0xcf, 0xf9, 0xfe, 0xfa, 0xb2, 0xfd, + 0x7e, 0x00, 0xbf, 0x02, 0x6b, 0x03, 0x09, 0x04, 0x28, 0x04, 0x81, 0x05, + 0xe6, 0x07, 0x06, 0x09, 0xc5, 0x09, 0x77, 0x08, 0x09, 0x06, 0xf1, 0x03, + 0xf7, 0x03, 0xd8, 0x03, 0x7a, 0x01, 0x36, 0x02, 0x2c, 0xff, 0x98, 0xfc, + 0xe3, 0xf9, 0xb5, 0xf5, 0x2d, 0xf1, 0xed, 0xed, 0xbc, 0xec, 0x66, 0xeb, + 0x84, 0xec, 0x49, 0xeb, 0x02, 0xea, 0x3a, 0xe7, 0x1c, 0xe4, 0xb2, 0xde, + 0xa7, 0xd7, 0x07, 0xd0, 0x33, 0xcb, 0x6a, 0xcb, 0x6b, 0xd3, 0x87, 0xe1, + 0x33, 0xf1, 0xd6, 0x05, 0xb1, 0x16, 0x5c, 0x21, 0xb4, 0x26, 0x50, 0x25, + 0x9c, 0x1f, 0xd2, 0x19, 0xa5, 0x10, 0x22, 0x03, 0xfb, 0xf6, 0x37, 0xeb, + 0x7b, 0xe0, 0x93, 0xdd, 0xd1, 0xde, 0x3c, 0xe1, 0xd0, 0xe7, 0xbf, 0xee, + 0x03, 0xf3, 0x7a, 0xf7, 0x86, 0xfb, 0xa8, 0xfc, 0x15, 0xff, 0xc6, 0x03, + 0x35, 0x07, 0x37, 0x0b, 0x27, 0x0e, 0x1e, 0x0f, 0x58, 0x10, 0x32, 0x12, + 0xa9, 0x11, 0x2d, 0x10, 0x32, 0x0c, 0x5f, 0x05, 0x5c, 0x00, 0x56, 0xfb, + 0x3b, 0xf7, 0xdb, 0xf4, 0x39, 0xf4, 0xf2, 0xf4, 0x4f, 0xf9, 0x01, 0x00, + 0xdf, 0x06, 0xc9, 0x0e, 0xae, 0x15, 0x81, 0x19, 0x32, 0x1d, 0x8f, 0x1f, + 0x57, 0x21, 0xa9, 0x22, 0xc2, 0x21, 0x91, 0x1f, 0x5f, 0x1c, 0xf3, 0x18, + 0x8b, 0x14, 0xb0, 0x0f, 0x74, 0x0a, 0xa4, 0x05, 0x18, 0x01, 0x37, 0xfd, + 0x6f, 0xfa, 0x0a, 0xf9, 0x80, 0xf9, 0x9f, 0xfb, 0x97, 0xfe, 0xae, 0x01, + 0xb3, 0x04, 0x44, 0x07, 0x94, 0x0a, 0x28, 0x0c, 0x80, 0x0d, 0xf9, 0x0c, + 0x01, 0x0b, 0x76, 0x08, 0x59, 0x06, 0x5e, 0x04, 0x6a, 0x02, 0x79, 0x00, + 0x47, 0xfe, 0x1a, 0xfd, 0xca, 0xfc, 0x87, 0xfd, 0x74, 0xfd, 0x38, 0xfc, + 0x8c, 0xf9, 0xcc, 0xf5, 0x29, 0xf1, 0xbd, 0xee, 0x4b, 0xef, 0x06, 0xf0, + 0xe9, 0xf0, 0xfe, 0xef, 0xd2, 0xec, 0xe8, 0xe8, 0x7d, 0xe6, 0x2f, 0xe2, + 0xf8, 0xdb, 0x6d, 0xd3, 0x46, 0xc9, 0xb4, 0xc4, 0x87, 0xca, 0x04, 0xdb, + 0xe2, 0xf3, 0xe7, 0x0a, 0x07, 0x1d, 0x72, 0x25, 0x15, 0x29, 0xc8, 0x28, + 0x68, 0x26, 0x86, 0x22, 0xc7, 0x19, 0xc7, 0x0a, 0xb1, 0xf6, 0x5f, 0xe6, + 0xfc, 0xd9, 0x69, 0xd6, 0x2d, 0xd8, 0xcc, 0xdb, 0xe6, 0xe2, 0xc3, 0xea, + 0x98, 0xf1, 0x29, 0xf9, 0xe2, 0xfd, 0x4c, 0x01, 0xd9, 0x05, 0x8a, 0x0a, + 0x31, 0x0d, 0xfd, 0x0f, 0x95, 0x0f, 0xd1, 0x0d, 0x57, 0x0e, 0x76, 0x0f, + 0xe9, 0x0f, 0xb2, 0x0f, 0xf0, 0x0a, 0xa2, 0x04, 0x59, 0xff, 0xeb, 0xf9, + 0x72, 0xf6, 0xd8, 0xf5, 0x67, 0xf5, 0x93, 0xf6, 0x1f, 0xf9, 0x4b, 0xfd, + 0x89, 0x04, 0x26, 0x0d, 0xc7, 0x13, 0x7e, 0x19, 0x6c, 0x1d, 0x2d, 0x20, + 0x34, 0x22, 0x3a, 0x22, 0x7f, 0x20, 0xf1, 0x1c, 0x2a, 0x18, 0x53, 0x13, + 0x83, 0x0e, 0x0f, 0x0a, 0x76, 0x05, 0x77, 0x01, 0x3a, 0xfe, 0xc2, 0xfb, + 0xa1, 0xfa, 0xdb, 0xfa, 0x72, 0xfc, 0x6d, 0xff, 0xe3, 0x02, 0x5e, 0x05, + 0x35, 0x08, 0xbd, 0x09, 0x5e, 0x0b, 0xa3, 0x0d, 0x75, 0x0e, 0x87, 0x0d, + 0x7f, 0x0b, 0xb7, 0x07, 0x9a, 0x04, 0xc7, 0x02, 0x02, 0x01, 0xa4, 0xff, + 0x0b, 0xff, 0xe6, 0xfd, 0x8a, 0xfe, 0x31, 0x00, 0x46, 0x00, 0x46, 0x00, + 0x6e, 0xff, 0x13, 0xfb, 0xcc, 0xf7, 0x5e, 0xf3, 0x18, 0xf0, 0x80, 0xef, + 0xd8, 0xee, 0xb0, 0xee, 0xe5, 0xed, 0x53, 0xed, 0x5f, 0xea, 0xdf, 0xe6, + 0xc3, 0xe0, 0x2e, 0xda, 0xcc, 0xd2, 0x74, 0xcd, 0x0c, 0xcb, 0x6d, 0xcf, + 0xb2, 0xdb, 0x0e, 0xee, 0xfa, 0x04, 0x86, 0x19, 0x55, 0x29, 0x1f, 0x30, + 0x7d, 0x30, 0xe3, 0x29, 0x13, 0x20, 0xf5, 0x13, 0xee, 0x04, 0x6e, 0xf5, + 0x6e, 0xe6, 0xeb, 0xda, 0xb7, 0xd3, 0xde, 0xd2, 0x76, 0xd7, 0x99, 0xdf, + 0x27, 0xea, 0xf1, 0xf3, 0xf5, 0xfc, 0xce, 0x03, 0xc8, 0x08, 0x18, 0x0c, + 0xa7, 0x0d, 0xb0, 0x0d, 0xab, 0x0c, 0x24, 0x0b, 0x2f, 0x0b, 0x8e, 0x0b, + 0x33, 0x0c, 0x1e, 0x0c, 0xa7, 0x0b, 0xbe, 0x0a, 0x5c, 0x08, 0xe7, 0x03, + 0xb0, 0xfe, 0x4f, 0xf9, 0x70, 0xf5, 0x80, 0xf4, 0x36, 0xf5, 0xb3, 0xf7, + 0x06, 0xfc, 0xdc, 0x01, 0x21, 0x09, 0xde, 0x11, 0x8b, 0x19, 0x9c, 0x1e, + 0xcf, 0x21, 0x2a, 0x22, 0xfc, 0x20, 0x02, 0x1f, 0xb1, 0x1b, 0x15, 0x16, + 0x47, 0x10, 0x6c, 0x0a, 0x23, 0x06, 0x90, 0x03, 0x5f, 0x01, 0x7f, 0xff, + 0x08, 0xfe, 0x7e, 0xfd, 0xbc, 0xfd, 0x62, 0xff, 0x72, 0x01, 0x85, 0x03, + 0x31, 0x05, 0x62, 0x06, 0x81, 0x07, 0x2d, 0x09, 0x67, 0x0a, 0x45, 0x0c, + 0xe4, 0x0c, 0xd5, 0x0c, 0x1d, 0x0c, 0xd0, 0x09, 0x5a, 0x07, 0x6c, 0x05, + 0x79, 0x03, 0xba, 0x01, 0x66, 0x00, 0x79, 0xfe, 0x59, 0xfd, 0x46, 0xfc, + 0x03, 0xfc, 0x83, 0xfb, 0x6a, 0xfb, 0x99, 0xf9, 0xbd, 0xf7, 0xa9, 0xf4, + 0x7d, 0xf1, 0xac, 0xef, 0x17, 0xef, 0x7e, 0xef, 0x44, 0xf0, 0xd2, 0xef, + 0xba, 0xed, 0x97, 0xe9, 0x92, 0xe3, 0x1e, 0xdd, 0xcb, 0xd5, 0xc7, 0xce, + 0x37, 0xca, 0x6d, 0xca, 0x31, 0xd2, 0x0b, 0xe4, 0x8c, 0xfa, 0x59, 0x10, + 0x81, 0x21, 0xe1, 0x2b, 0x8c, 0x2f, 0x25, 0x2f, 0x3a, 0x28, 0xf9, 0x1b, + 0x1b, 0x0c, 0xda, 0xf9, 0xf6, 0xe7, 0x56, 0xdb, 0xb3, 0xd3, 0x1b, 0xd2, + 0xf0, 0xd5, 0x5e, 0xdd, 0x78, 0xe6, 0x65, 0xf1, 0xd8, 0xfb, 0xac, 0x04, + 0x2e, 0x0c, 0xbf, 0x0f, 0x79, 0x10, 0xef, 0x0f, 0x2a, 0x0d, 0xc1, 0x0a, + 0x00, 0x09, 0x43, 0x07, 0x48, 0x07, 0xe6, 0x08, 0x1e, 0x0a, 0x80, 0x0a, + 0x8f, 0x09, 0x08, 0x07, 0x6a, 0x04, 0xae, 0x00, 0x04, 0xfc, 0x5a, 0xf7, + 0x41, 0xf4, 0x61, 0xf4, 0xa7, 0xf7, 0x81, 0xfd, 0x38, 0x06, 0x53, 0x0f, + 0x67, 0x17, 0x77, 0x1e, 0x59, 0x23, 0x0c, 0x26, 0x3a, 0x26, 0x10, 0x23, + 0x74, 0x1c, 0x6e, 0x15, 0xc5, 0x0d, 0x9d, 0x07, 0xee, 0x02, 0x49, 0xff, + 0x54, 0xfd, 0x8b, 0xfc, 0xc1, 0xfb, 0x0c, 0xfc, 0xc8, 0xfd, 0x42, 0x00, + 0x5c, 0x03, 0x3f, 0x06, 0x98, 0x07, 0x27, 0x08, 0xf2, 0x08, 0xbb, 0x09, + 0xba, 0x0a, 0x61, 0x0c, 0x1c, 0x0d, 0x1a, 0x0d, 0x22, 0x0c, 0xa7, 0x09, + 0x17, 0x07, 0x10, 0x05, 0xc5, 0x02, 0xc5, 0x00, 0xf0, 0xfe, 0xa7, 0xfc, + 0x75, 0xfb, 0xb5, 0xfb, 0x65, 0xfc, 0x01, 0xfd, 0x38, 0xfc, 0x29, 0xfb, + 0x9f, 0xfa, 0xeb, 0xf9, 0xad, 0xf8, 0x28, 0xf6, 0xe6, 0xf2, 0x3a, 0xef, + 0x5f, 0xed, 0xed, 0xec, 0xd5, 0xec, 0xab, 0xec, 0x99, 0xea, 0x77, 0xe6, + 0x69, 0xe0, 0xee, 0xd8, 0xa2, 0xd1, 0xca, 0xcb, 0x9e, 0xcb, 0x67, 0xd1, + 0xca, 0xdf, 0x32, 0xf3, 0xa4, 0x08, 0x93, 0x1a, 0x4d, 0x26, 0x84, 0x2b, + 0xac, 0x2b, 0x24, 0x28, 0x02, 0x20, 0x60, 0x13, 0x68, 0x03, 0x15, 0xf2, + 0x1b, 0xe3, 0xda, 0xd8, 0xb9, 0xd3, 0x5f, 0xd4, 0x57, 0xda, 0x0e, 0xe3, + 0x2b, 0xee, 0xfe, 0xf9, 0x00, 0x03, 0xfc, 0x09, 0x9a, 0x0e, 0x0e, 0x10, + 0x24, 0x10, 0xdc, 0x0e, 0xe7, 0x0a, 0x1e, 0x07, 0xd2, 0x04, 0xd9, 0x03, + 0xf9, 0x05, 0x2e, 0x09, 0x94, 0x0b, 0x86, 0x0c, 0xa8, 0x0a, 0x8e, 0x06, + 0x62, 0x02, 0x0a, 0xff, 0x18, 0xfc, 0xa2, 0xf9, 0xc4, 0xf7, 0xea, 0xf7, + 0xfe, 0xfb, 0x47, 0x03, 0x97, 0x0b, 0x0e, 0x14, 0xca, 0x1a, 0xa5, 0x1f, + 0x84, 0x22, 0x2c, 0x23, 0x54, 0x21, 0x44, 0x1d, 0x70, 0x17, 0x51, 0x10, + 0xbe, 0x09, 0xf9, 0x04, 0x76, 0x00, 0x07, 0xfd, 0x63, 0xfa, 0x51, 0xf9, + 0x38, 0xfa, 0x99, 0xfc, 0x17, 0xff, 0xa7, 0x01, 0xec, 0x03, 0xb0, 0x05, + 0x43, 0x07, 0x35, 0x09, 0x13, 0x0b, 0xb9, 0x0c, 0x81, 0x0c, 0xee, 0x0b, + 0x4a, 0x0b, 0x31, 0x0a, 0x8a, 0x09, 0xbf, 0x07, 0x46, 0x05, 0xde, 0x02, + 0xbb, 0x00, 0x16, 0xff, 0xc1, 0xfd, 0x4e, 0xfd, 0xb3, 0xfe, 0x47, 0xff, + 0xd5, 0xff, 0x73, 0xff, 0x96, 0xfd, 0xd7, 0xfb, 0x6c, 0xfa, 0x34, 0xf8, + 0x72, 0xf5, 0x9a, 0xf2, 0x48, 0xef, 0x21, 0xec, 0x06, 0xeb, 0x85, 0xeb, + 0xbe, 0xed, 0x82, 0xef, 0xa2, 0xef, 0x48, 0xed, 0x09, 0xe9, 0xb7, 0xe2, + 0xf9, 0xda, 0x11, 0xd3, 0x8b, 0xcd, 0x5d, 0xce, 0x2f, 0xd7, 0x20, 0xe6, + 0xbd, 0xf9, 0x03, 0x0c, 0x23, 0x1a, 0xe4, 0x23, 0x3c, 0x29, 0xf9, 0x28, + 0x6a, 0x25, 0x60, 0x1d, 0x02, 0x10, 0xf8, 0x00, 0xe3, 0xef, 0xb4, 0xe0, + 0x67, 0xd8, 0xd6, 0xd6, 0x5d, 0xda, 0xe6, 0xe1, 0x9d, 0xeb, 0x6a, 0xf4, + 0x15, 0xfd, 0xce, 0x04, 0x96, 0x07, 0xc7, 0x0a, 0x95, 0x0d, 0x6f, 0x0d, + 0x74, 0x0b, 0x4b, 0x09, 0xd9, 0x04, 0xd0, 0x03, 0x19, 0x06, 0x65, 0x08, + 0x32, 0x0c, 0x98, 0x0e, 0xa4, 0x0c, 0xe7, 0x0a, 0x23, 0x08, 0x6f, 0x04, + 0xbd, 0x01, 0x3f, 0xff, 0xc2, 0xfb, 0x32, 0xfa, 0x19, 0xfa, 0x89, 0xfd, + 0xdc, 0x03, 0xc9, 0x0b, 0x24, 0x13, 0xe1, 0x18, 0xc1, 0x1c, 0x9e, 0x1e, + 0xd9, 0x1e, 0x10, 0x1d, 0x32, 0x1a, 0x04, 0x15, 0x5d, 0x0f, 0xe5, 0x09, + 0x41, 0x04, 0x91, 0xff, 0xa0, 0xfb, 0x00, 0xf9, 0xfc, 0xf8, 0xd9, 0xfa, + 0x24, 0xfd, 0x94, 0xff, 0x64, 0x00, 0x72, 0x01, 0x22, 0x04, 0x84, 0x07, + 0x02, 0x0b, 0x13, 0x0d, 0xc9, 0x0d, 0x4e, 0x0d, 0xe8, 0x0c, 0xf8, 0x0b, + 0xc1, 0x0a, 0xf3, 0x08, 0xb8, 0x06, 0xb9, 0x03, 0x11, 0x01, 0x16, 0xff, + 0x13, 0xfe, 0x69, 0xfd, 0x33, 0xfd, 0xbf, 0xfc, 0x19, 0xfd, 0x51, 0xfd, + 0xef, 0xfc, 0x8c, 0xfc, 0x5d, 0xfb, 0x01, 0xfa, 0x7c, 0xf8, 0xa2, 0xf6, + 0x13, 0xf3, 0x07, 0xf0, 0xf0, 0xed, 0x00, 0xee, 0xbd, 0xf0, 0x91, 0xf3, + 0xa1, 0xf4, 0x12, 0xf2, 0x50, 0xed, 0x9c, 0xe7, 0x92, 0xe1, 0x0c, 0xdb, + 0xb4, 0xd4, 0x3c, 0xcf, 0xd2, 0xce, 0xc4, 0xd4, 0x9f, 0xe1, 0x86, 0xf3, + 0x78, 0x06, 0x60, 0x15, 0xc6, 0x1f, 0x51, 0x25, 0x66, 0x27, 0x23, 0x25, + 0x6e, 0x20, 0xb2, 0x15, 0x89, 0x07, 0xdb, 0xf6, 0xfb, 0xe7, 0xd3, 0xdd, + 0x06, 0xda, 0xe0, 0xdb, 0x92, 0xe1, 0xe9, 0xe8, 0xfa, 0xef, 0x4f, 0xf7, + 0xd2, 0xfe, 0x44, 0x06, 0x05, 0x0c, 0xf7, 0x0e, 0x7d, 0x0d, 0x65, 0x0a, + 0xe7, 0x06, 0xe8, 0x05, 0x49, 0x06, 0x3e, 0x08, 0x81, 0x09, 0x00, 0x0b, + 0x9f, 0x0c, 0xac, 0x0d, 0x94, 0x0d, 0xf7, 0x0b, 0xd0, 0x08, 0x81, 0x04, + 0x0d, 0x00, 0xfa, 0xfb, 0x9f, 0xf9, 0xd7, 0xf9, 0xc9, 0xfc, 0xb1, 0x02, + 0x51, 0x09, 0xfe, 0x0e, 0x4c, 0x14, 0x25, 0x18, 0x3d, 0x1b, 0x66, 0x1d, + 0xc5, 0x1c, 0x68, 0x19, 0x5a, 0x14, 0xbb, 0x0e, 0x68, 0x09, 0x5b, 0x05, + 0x3e, 0x01, 0x5c, 0xfe, 0x8c, 0xfc, 0xa2, 0xfb, 0xfa, 0xfb, 0x35, 0xfd, + 0x41, 0xfe, 0xa0, 0x00, 0xb8, 0x02, 0xfe, 0x03, 0x97, 0x05, 0x8d, 0x06, + 0x4f, 0x07, 0x76, 0x08, 0x49, 0x09, 0x43, 0x0a, 0x4c, 0x0b, 0x76, 0x0b, + 0x9d, 0x0a, 0xe4, 0x08, 0xdc, 0x06, 0xfc, 0x04, 0x2a, 0x03, 0xe1, 0x00, + 0xe0, 0xfe, 0x8d, 0xfd, 0xaf, 0xfc, 0x68, 0xfc, 0x3f, 0xfc, 0x2b, 0xfc, + 0x37, 0xfc, 0x55, 0xfc, 0x97, 0xfb, 0xa5, 0xfa, 0xfa, 0xf8, 0x3f, 0xf7, + 0xea, 0xf4, 0xba, 0xf2, 0x07, 0xf1, 0xd3, 0xf0, 0x3c, 0xf0, 0x6f, 0xf0, + 0x11, 0xef, 0x15, 0xed, 0x6f, 0xea, 0xc3, 0xe6, 0x26, 0xe2, 0x5f, 0xdc, + 0x0d, 0xd6, 0x31, 0xd2, 0xa4, 0xd2, 0x8c, 0xd8, 0x41, 0xe5, 0x4a, 0xf5, + 0xbf, 0x05, 0xab, 0x13, 0x85, 0x1e, 0x0e, 0x25, 0x0e, 0x29, 0x59, 0x28, + 0xba, 0x21, 0x5c, 0x14, 0x9d, 0x05, 0xb8, 0xf4, 0x1c, 0xe6, 0x8b, 0xdc, + 0x61, 0xd7, 0x18, 0xd8, 0x92, 0xdd, 0x88, 0xe5, 0xd0, 0xee, 0xf8, 0xf9, + 0xab, 0x03, 0x02, 0x0b, 0xa7, 0x0f, 0x56, 0x10, 0x18, 0x0e, 0xff, 0x0a, + 0x70, 0x07, 0x4e, 0x05, 0x1f, 0x04, 0x1e, 0x04, 0xd3, 0x05, 0x5b, 0x09, + 0x4c, 0x0d, 0xa9, 0x0f, 0x16, 0x10, 0x4f, 0x0e, 0xc1, 0x0a, 0x1d, 0x06, + 0x33, 0x01, 0xd0, 0xfc, 0x00, 0xfa, 0xea, 0xf9, 0xc5, 0xfb, 0x4d, 0x00, + 0x82, 0x06, 0xc8, 0x0d, 0xe8, 0x14, 0xd8, 0x1a, 0xe2, 0x1d, 0x75, 0x1e, + 0x73, 0x1c, 0xa8, 0x18, 0xf7, 0x13, 0x07, 0x0e, 0x49, 0x08, 0xe2, 0x02, + 0xde, 0xfe, 0xf9, 0xfb, 0xfa, 0xfb, 0xb5, 0xfc, 0x9d, 0xfd, 0x29, 0xff, + 0x77, 0x00, 0xf1, 0x01, 0xc5, 0x04, 0x36, 0x06, 0x80, 0x06, 0xef, 0x05, + 0x51, 0x05, 0x16, 0x06, 0x17, 0x08, 0xd6, 0x09, 0x55, 0x0a, 0x2c, 0x0a, + 0xd7, 0x08, 0xcf, 0x08, 0xc9, 0x08, 0x70, 0x08, 0xdb, 0x06, 0x73, 0x03, + 0x0d, 0x00, 0x7a, 0xfd, 0xa4, 0xfc, 0x53, 0xfc, 0x36, 0xfc, 0x3b, 0xfb, + 0x4f, 0xfa, 0x7f, 0xfa, 0xb6, 0xfa, 0x04, 0xfb, 0x61, 0xfa, 0x01, 0xf9, + 0xeb, 0xf7, 0x72, 0xf5, 0xc0, 0xf2, 0x41, 0xf0, 0x2b, 0xef, 0xac, 0xef, + 0xf1, 0xf0, 0xe1, 0xf0, 0x27, 0xee, 0x1b, 0xe9, 0x8f, 0xe4, 0x8a, 0xdf, + 0x4f, 0xdb, 0x7b, 0xd7, 0xfb, 0xd3, 0x51, 0xd2, 0x10, 0xd8, 0x7d, 0xe4, + 0x56, 0xf7, 0x76, 0x0b, 0x15, 0x1b, 0xcd, 0x22, 0x7f, 0x25, 0x74, 0x25, + 0x3d, 0x23, 0x0d, 0x1d, 0x61, 0x10, 0x17, 0x00, 0xbf, 0xee, 0x4d, 0xe3, + 0x24, 0xdb, 0x5d, 0xda, 0x63, 0xdd, 0x32, 0xe3, 0x1c, 0xea, 0x55, 0xf2, + 0xe0, 0xfa, 0xbc, 0x02, 0x90, 0x08, 0xc0, 0x0b, 0x8f, 0x0c, 0xa6, 0x0a, + 0xa5, 0x06, 0x4e, 0x04, 0x73, 0x04, 0xe8, 0x06, 0x01, 0x0b, 0x14, 0x0e, + 0x72, 0x11, 0xd7, 0x13, 0x7f, 0x14, 0x0c, 0x12, 0x7c, 0x0e, 0xad, 0x09, + 0x38, 0x04, 0xa2, 0xfe, 0xf8, 0xf8, 0x53, 0xf7, 0xdf, 0xf7, 0x26, 0xfc, + 0xf4, 0x01, 0x23, 0x08, 0x12, 0x0f, 0x24, 0x16, 0xd3, 0x19, 0x0d, 0x1c, + 0x3f, 0x1c, 0x3e, 0x1a, 0x1f, 0x17, 0x85, 0x12, 0x93, 0x0c, 0xbc, 0x07, + 0x6e, 0x03, 0x5f, 0x00, 0x98, 0xfe, 0xeb, 0xfd, 0xc7, 0xfd, 0x7e, 0xfe, + 0xd9, 0xff, 0x4a, 0x00, 0x0c, 0x02, 0xfe, 0x02, 0x78, 0x03, 0x47, 0x04, + 0x1d, 0x04, 0x20, 0x04, 0x9d, 0x05, 0xc2, 0x06, 0xea, 0x08, 0xcf, 0x0a, + 0xe7, 0x0b, 0x9f, 0x0b, 0xcd, 0x0a, 0x76, 0x09, 0xa5, 0x07, 0xdb, 0x05, + 0x2b, 0x03, 0x20, 0x00, 0xc0, 0xfd, 0xf0, 0xfb, 0xc6, 0xfa, 0x57, 0xfa, + 0x21, 0xfa, 0x16, 0xf9, 0x67, 0xf9, 0xc6, 0xf9, 0x34, 0xfb, 0xdd, 0xfc, + 0x6d, 0xfe, 0x1a, 0xfd, 0xc7, 0xfa, 0x3f, 0xf6, 0x62, 0xf2, 0xff, 0xef, + 0x8f, 0xef, 0x6a, 0xef, 0x3d, 0xee, 0xc7, 0xec, 0x57, 0xe8, 0xef, 0xe5, + 0x5d, 0xe3, 0x4e, 0xe0, 0x08, 0xdd, 0x53, 0xd7, 0xb5, 0xd1, 0xf7, 0xd0, + 0x6e, 0xd7, 0xd4, 0xe5, 0xd8, 0xf9, 0xe9, 0x0b, 0x97, 0x18, 0x80, 0x20, + 0x7f, 0x24, 0x28, 0x27, 0xba, 0x26, 0x07, 0x20, 0x11, 0x13, 0x54, 0x03, + 0x13, 0xf3, 0x5e, 0xe5, 0xec, 0xdd, 0x1d, 0xdb, 0x3e, 0xdd, 0x0f, 0xe1, + 0xc3, 0xe8, 0x1a, 0xf0, 0x21, 0xf8, 0xee, 0xff, 0x07, 0x05, 0x6c, 0x09, + 0x2c, 0x0c, 0xc0, 0x0c, 0x5f, 0x0b, 0x22, 0x0a, 0xee, 0x08, 0xa0, 0x09, + 0x7a, 0x0c, 0xec, 0x0f, 0x2b, 0x12, 0x1f, 0x14, 0x2c, 0x14, 0xd8, 0x11, + 0xf3, 0x0e, 0x1b, 0x0a, 0xe2, 0x03, 0x85, 0xff, 0x7b, 0xfa, 0xb2, 0xf7, + 0xc9, 0xf7, 0x11, 0xfa, 0xa1, 0xfe, 0x74, 0x05, 0x1d, 0x0c, 0xba, 0x12, + 0x04, 0x19, 0x79, 0x1b, 0x1e, 0x1c, 0xf5, 0x1a, 0xb1, 0x17, 0x68, 0x13, + 0x7a, 0x0e, 0xe8, 0x08, 0xaa, 0x04, 0x58, 0x02, 0xd5, 0xfe, 0x95, 0xfd, + 0xb5, 0xfd, 0x14, 0xfd, 0x0c, 0xff, 0xe6, 0xff, 0x12, 0x00, 0xae, 0x00, + 0xee, 0x00, 0x58, 0x00, 0x92, 0x00, 0x56, 0x02, 0x87, 0x03, 0x6d, 0x06, + 0x5f, 0x09, 0x9d, 0x0a, 0xc3, 0x0c, 0x0f, 0x0e, 0x8a, 0x0d, 0x6b, 0x0c, + 0x17, 0x0a, 0xb5, 0x06, 0xc3, 0x03, 0x48, 0x00, 0xe9, 0xfc, 0xfb, 0xfa, + 0x62, 0xf9, 0xf3, 0xf8, 0x30, 0xf9, 0xde, 0xf9, 0x58, 0xfa, 0x7c, 0xfb, + 0x26, 0xfc, 0xdb, 0xfc, 0xee, 0xfc, 0x49, 0xfc, 0x88, 0xfa, 0x5c, 0xf8, + 0x77, 0xf5, 0xe1, 0xf2, 0x07, 0xf2, 0x32, 0xf2, 0x26, 0xf2, 0x21, 0xf0, + 0xb7, 0xec, 0x01, 0xe8, 0x34, 0xe5, 0x21, 0xe3, 0xc8, 0xe0, 0x2d, 0xdc, + 0x3f, 0xd5, 0x63, 0xce, 0x2b, 0xcd, 0xa8, 0xd4, 0xa1, 0xe5, 0x0a, 0xfd, + 0xd8, 0x0e, 0x87, 0x1a, 0x87, 0x1e, 0x50, 0x20, 0xb7, 0x25, 0x6f, 0x2a, + 0xe8, 0x27, 0x58, 0x1b, 0xad, 0x07, 0xe7, 0xf2, 0x8e, 0xe5, 0xca, 0xe0, + 0x5e, 0xe0, 0xf1, 0xe1, 0x74, 0xe3, 0x86, 0xe5, 0x80, 0xea, 0xd1, 0xf3, + 0xe7, 0xfc, 0x76, 0x06, 0x0f, 0x0c, 0xb8, 0x0c, 0x47, 0x0b, 0xe0, 0x08, + 0x8d, 0x07, 0x11, 0x09, 0xf7, 0x0b, 0xb4, 0x0d, 0x7e, 0x0f, 0xad, 0x11, + 0x77, 0x12, 0x9a, 0x13, 0xe6, 0x13, 0xb6, 0x10, 0xa7, 0x0d, 0x72, 0x09, + 0x3c, 0x04, 0x3b, 0xff, 0x7a, 0xfb, 0x91, 0xf8, 0x33, 0xf9, 0x13, 0xfd, + 0xa8, 0x01, 0xb2, 0x07, 0xff, 0x0c, 0xc2, 0x10, 0x13, 0x14, 0xc9, 0x16, + 0x3b, 0x17, 0x5f, 0x16, 0xbe, 0x13, 0xa0, 0x0f, 0xf2, 0x0a, 0xbb, 0x07, + 0xab, 0x04, 0x07, 0x02, 0x4e, 0x00, 0xaa, 0xfe, 0xfe, 0xfd, 0x2e, 0xfe, + 0x90, 0xfe, 0x63, 0xfe, 0x16, 0xff, 0x15, 0xff, 0x6d, 0xff, 0xc1, 0xff, + 0x68, 0x00, 0xe9, 0x00, 0xd5, 0x02, 0x02, 0x05, 0x18, 0x08, 0xd3, 0x0a, + 0xf1, 0x0b, 0xf1, 0x0b, 0x1a, 0x0c, 0xf9, 0x0a, 0xea, 0x09, 0xa3, 0x07, + 0x7c, 0x04, 0xb4, 0x01, 0x31, 0xff, 0x7b, 0xfd, 0x6f, 0xfc, 0x35, 0xfb, + 0xa6, 0xfa, 0x15, 0xfa, 0x1d, 0xfa, 0xf0, 0xfa, 0xd7, 0xfb, 0x38, 0xfc, + 0x3f, 0xfc, 0x53, 0xfb, 0xba, 0xf9, 0xa4, 0xf7, 0x79, 0xf6, 0x80, 0xf4, + 0xc2, 0xf3, 0x22, 0xf3, 0x44, 0xf0, 0x17, 0xee, 0x3e, 0xec, 0x30, 0xea, + 0x34, 0xe9, 0xe7, 0xe5, 0x18, 0xe0, 0x29, 0xd9, 0x72, 0xd3, 0x27, 0xd0, + 0xc4, 0xd3, 0x97, 0xdc, 0x57, 0xeb, 0x65, 0xfc, 0x13, 0x0c, 0x63, 0x18, + 0x26, 0x20, 0x0a, 0x26, 0x83, 0x28, 0x43, 0x28, 0x8f, 0x20, 0x7c, 0x14, + 0x04, 0x04, 0xf4, 0xf5, 0x9e, 0xea, 0xaa, 0xe4, 0xac, 0xe1, 0xe6, 0xe1, + 0xa7, 0xe4, 0xaa, 0xe9, 0xfd, 0xef, 0xd8, 0xf6, 0xca, 0xfd, 0x60, 0x03, + 0xed, 0x06, 0x7c, 0x08, 0x7e, 0x07, 0x7c, 0x06, 0x26, 0x06, 0xac, 0x07, + 0x52, 0x0a, 0x40, 0x0d, 0x3d, 0x10, 0x52, 0x12, 0xd4, 0x14, 0x53, 0x15, + 0x26, 0x15, 0xa3, 0x12, 0xbb, 0x0e, 0x08, 0x0a, 0x58, 0x04, 0xe3, 0xfe, + 0x91, 0xfa, 0xcb, 0xf8, 0x0b, 0xf9, 0xca, 0xfb, 0x5b, 0xff, 0x2f, 0x03, + 0xdf, 0x08, 0xf2, 0x0d, 0xc1, 0x11, 0xc9, 0x13, 0x3b, 0x14, 0x57, 0x12, + 0x94, 0x10, 0xf2, 0x0d, 0x59, 0x0a, 0x33, 0x08, 0xfe, 0x05, 0xc4, 0x03, + 0x2c, 0x02, 0xf1, 0x00, 0xfa, 0xff, 0xcd, 0x00, 0x9a, 0x01, 0xed, 0x00, + 0x77, 0x00, 0xf7, 0xfe, 0x40, 0xfd, 0x11, 0xfd, 0x0a, 0xfe, 0xf2, 0xfe, + 0x5d, 0x00, 0xf8, 0x01, 0x92, 0x02, 0xf1, 0x05, 0x6e, 0x09, 0x00, 0x0c, + 0xed, 0x0d, 0x68, 0x0c, 0x54, 0x0a, 0x01, 0x09, 0x6f, 0x08, 0xcb, 0x07, + 0x37, 0x06, 0x19, 0x03, 0x25, 0x00, 0x7f, 0xfe, 0x7c, 0xfd, 0x11, 0xfe, + 0x70, 0xfd, 0x63, 0xfc, 0x25, 0xfc, 0xac, 0xfa, 0xaf, 0xfa, 0x92, 0xfa, + 0x15, 0xf9, 0x29, 0xf8, 0xfc, 0xf5, 0x22, 0xf4, 0x79, 0xf2, 0x95, 0xf2, + 0xe9, 0xf2, 0xdd, 0xf2, 0xe3, 0xf2, 0xda, 0xef, 0xbd, 0xec, 0xec, 0xe8, + 0x8e, 0xe3, 0x41, 0xdf, 0x0f, 0xd9, 0x48, 0xd5, 0x2c, 0xd3, 0x3b, 0xd7, + 0xf8, 0xdf, 0x34, 0xee, 0x2c, 0xfe, 0x8b, 0x0c, 0x76, 0x18, 0x14, 0x20, + 0xb6, 0x24, 0x0f, 0x25, 0x5a, 0x22, 0xb6, 0x19, 0xa1, 0x0e, 0xe1, 0x01, + 0x08, 0xf5, 0x37, 0xeb, 0xa6, 0xe5, 0x76, 0xe3, 0x66, 0xe5, 0xa6, 0xe9, + 0x45, 0xed, 0x72, 0xf2, 0xf0, 0xf8, 0x7b, 0xfd, 0x05, 0x02, 0x1c, 0x04, + 0xb8, 0x03, 0x80, 0x03, 0x97, 0x03, 0xb6, 0x03, 0xc2, 0x04, 0xfa, 0x06, + 0xf1, 0x09, 0x32, 0x0e, 0xb6, 0x12, 0xae, 0x14, 0x91, 0x15, 0x09, 0x14, + 0x5c, 0x11, 0x18, 0x0e, 0x49, 0x0a, 0x76, 0x05, 0xc7, 0x00, 0x61, 0xfc, + 0xfb, 0xf9, 0x2e, 0xfa, 0x84, 0xfc, 0x7c, 0x00, 0xbd, 0x04, 0xde, 0x08, + 0x0d, 0x0c, 0x98, 0x0e, 0x3e, 0x10, 0x96, 0x10, 0x20, 0x10, 0x63, 0x0e, + 0xb3, 0x0b, 0x31, 0x09, 0x38, 0x06, 0x86, 0x04, 0x91, 0x03, 0x0f, 0x03, + 0xaf, 0x02, 0xcf, 0x02, 0x89, 0x02, 0x12, 0x02, 0x3b, 0x02, 0x13, 0x02, + 0x76, 0x01, 0x68, 0x00, 0x1c, 0xff, 0xbe, 0xfd, 0x50, 0xfe, 0x4d, 0xff, + 0x48, 0x01, 0xd4, 0x02, 0xd5, 0x04, 0x84, 0x06, 0xa2, 0x08, 0xe6, 0x0a, + 0x01, 0x0c, 0x95, 0x0c, 0xa6, 0x0c, 0xa9, 0x0b, 0xd5, 0x0a, 0x3b, 0x09, + 0x16, 0x07, 0xd1, 0x05, 0x82, 0x03, 0x94, 0x01, 0x95, 0xff, 0xe2, 0xfd, + 0x85, 0xfc, 0x28, 0xfc, 0x0e, 0xfb, 0x68, 0xfa, 0xbd, 0xf9, 0x86, 0xf9, + 0xbd, 0xf8, 0xfd, 0xf7, 0xff, 0xf5, 0x89, 0xf3, 0x39, 0xf3, 0x5b, 0xf0, + 0x8c, 0xf1, 0xb3, 0xef, 0xaa, 0xee, 0x50, 0xed, 0x65, 0xea, 0xeb, 0xe7, + 0x58, 0xe3, 0x16, 0xdf, 0x81, 0xd8, 0x74, 0xd6, 0xb9, 0xd6, 0xfb, 0xdd, + 0x4d, 0xea, 0xca, 0xf5, 0xdd, 0x02, 0xa7, 0x0a, 0xb1, 0x13, 0xbc, 0x1a, + 0x99, 0x1f, 0x3f, 0x21, 0xb1, 0x1a, 0xdf, 0x11, 0x95, 0x05, 0x36, 0xfc, + 0x5d, 0xf4, 0x96, 0xef, 0x7f, 0xeb, 0xda, 0xe8, 0x58, 0xe9, 0x67, 0xeb, + 0xa0, 0xef, 0x5a, 0xf5, 0x27, 0xfa, 0x5b, 0xfe, 0xbe, 0x00, 0x26, 0x00, + 0x40, 0xff, 0x6c, 0xff, 0x62, 0x00, 0x4f, 0x02, 0xcf, 0x03, 0xd3, 0x05, + 0x69, 0x08, 0xca, 0x0b, 0xc7, 0x0f, 0xab, 0x12, 0x86, 0x14, 0x95, 0x13, + 0x49, 0x11, 0xc0, 0x0d, 0x1a, 0x0a, 0xdf, 0x06, 0x3b, 0x04, 0x37, 0x01, + 0x47, 0xff, 0x34, 0xfe, 0xeb, 0xff, 0xd0, 0x02, 0x78, 0x06, 0xf2, 0x08, + 0x52, 0x0a, 0x63, 0x0c, 0x53, 0x0c, 0xc8, 0x0c, 0xe8, 0x0b, 0xd0, 0x0a, + 0x21, 0x09, 0x4b, 0x08, 0xe2, 0x06, 0xab, 0x05, 0xc9, 0x04, 0xe4, 0x03, + 0x12, 0x04, 0x47, 0x04, 0x82, 0x04, 0x40, 0x04, 0x1b, 0x03, 0x6f, 0x01, + 0x5f, 0x00, 0x32, 0xff, 0xa0, 0xfe, 0xcb, 0xfe, 0xe6, 0xfe, 0xb9, 0xff, + 0x7c, 0x00, 0x4b, 0x02, 0x75, 0x04, 0xfb, 0x06, 0x84, 0x09, 0x01, 0x0c, + 0x41, 0x0d, 0x4f, 0x0e, 0xc6, 0x0e, 0x75, 0x0e, 0xbb, 0x0d, 0x5a, 0x0c, + 0xcf, 0x0a, 0x65, 0x08, 0x2a, 0x06, 0xbf, 0x03, 0x96, 0x01, 0x21, 0x00, + 0xdc, 0xfe, 0x16, 0xfe, 0xf4, 0xfc, 0xdc, 0xfb, 0x0c, 0xfb, 0x76, 0xfa, + 0x07, 0xfa, 0x19, 0xf9, 0xcf, 0xf6, 0x8c, 0xf4, 0xfd, 0xf1, 0x2b, 0xf1, + 0x94, 0xf0, 0x29, 0xf0, 0xad, 0xee, 0x78, 0xec, 0x2c, 0xeb, 0x7d, 0xe9, + 0xed, 0xe7, 0x6d, 0xe4, 0x96, 0xdf, 0x65, 0xdb, 0x7d, 0xd8, 0x9e, 0xda, + 0x73, 0xe0, 0x12, 0xea, 0x17, 0xf4, 0x5f, 0xfd, 0x1e, 0x05, 0x57, 0x0c, + 0xe2, 0x13, 0x31, 0x18, 0x96, 0x19, 0xf8, 0x14, 0x25, 0x0e, 0x2a, 0x06, + 0x9c, 0xfe, 0xf0, 0xf7, 0x06, 0xf3, 0x0d, 0xf0, 0x50, 0xef, 0x94, 0xef, + 0xdd, 0xf0, 0xb9, 0xf2, 0xbf, 0xf6, 0xa7, 0xfa, 0x02, 0xfe, 0xf5, 0xfe, + 0x14, 0xff, 0x88, 0xfc, 0x72, 0xfc, 0x0b, 0xfd, 0xa5, 0xfd, 0x13, 0x00, + 0x61, 0x01, 0xa6, 0x03, 0xd0, 0x06, 0xb1, 0x0a, 0xe6, 0x0d, 0x91, 0x10, + 0x10, 0x12, 0x0a, 0x12, 0x69, 0x11, 0x71, 0x0e, 0xa0, 0x0a, 0x85, 0x07, + 0xab, 0x05, 0x59, 0x05, 0x7f, 0x05, 0xee, 0x04, 0xe1, 0x04, 0xb4, 0x05, + 0x38, 0x07, 0x6e, 0x09, 0xb9, 0x0a, 0xdc, 0x0a, 0x39, 0x0a, 0x2d, 0x09, + 0xb0, 0x07, 0xed, 0x06, 0x3d, 0x06, 0x54, 0x05, 0x5c, 0x04, 0xcb, 0x03, + 0xc5, 0x02, 0x66, 0x03, 0x16, 0x04, 0x7d, 0x04, 0xce, 0x04, 0xc9, 0x03, + 0xf6, 0x02, 0x19, 0x02, 0x89, 0x01, 0xe2, 0x00, 0x1d, 0x01, 0xb6, 0x01, + 0x40, 0x02, 0x7a, 0x02, 0xf1, 0x02, 0xef, 0x03, 0x94, 0x05, 0xb8, 0x07, + 0x2f, 0x09, 0x18, 0x0a, 0xef, 0x0a, 0x2e, 0x0b, 0x05, 0x0b, 0x2b, 0x0b, + 0xb3, 0x0a, 0x3f, 0x0a, 0xc6, 0x09, 0x6f, 0x08, 0xd9, 0x06, 0x6e, 0x05, + 0x6c, 0x04, 0x0f, 0x03, 0x69, 0x02, 0xe3, 0x00, 0x7b, 0xff, 0x5a, 0xfd, + 0x66, 0xfc, 0x1d, 0xfb, 0x8d, 0xf9, 0x23, 0xf8, 0x58, 0xf5, 0x93, 0xf3, + 0x70, 0xf2, 0x51, 0xf2, 0x1d, 0xf1, 0xbb, 0xf0, 0xd7, 0xee, 0x54, 0xee, + 0x99, 0xed, 0x63, 0xec, 0x92, 0xea, 0x9a, 0xe7, 0x5b, 0xe4, 0x33, 0xe1, + 0x41, 0xdf, 0x99, 0xde, 0xf6, 0xe0, 0xf8, 0xe5, 0xd1, 0xec, 0x31, 0xf4, + 0x12, 0xfb, 0x66, 0x01, 0xb3, 0x07, 0xd8, 0x0c, 0x0b, 0x0f, 0x69, 0x0e, + 0x0f, 0x0b, 0xd7, 0x06, 0xa8, 0x02, 0x53, 0xfe, 0x7e, 0xf9, 0x95, 0xf6, + 0x76, 0xf5, 0xbe, 0xf5, 0xdf, 0xf6, 0xfe, 0xf7, 0xeb, 0xf8, 0xfa, 0xfa, + 0x54, 0xfd, 0xc8, 0xfe, 0x0a, 0xff, 0x85, 0xfe, 0x04, 0xfe, 0x94, 0xfd, + 0x5e, 0xfd, 0x1b, 0xfd, 0x4f, 0xfd, 0xab, 0xfe, 0xd2, 0x00, 0x38, 0x03, + 0xc3, 0x05, 0x76, 0x08, 0x1c, 0x0b, 0x59, 0x0d, 0x49, 0x0e, 0xe9, 0x0d, + 0x4e, 0x0d, 0xf6, 0x0c, 0xfc, 0x0c, 0xf2, 0x0b, 0x08, 0x0a, 0x5a, 0x08, + 0xa8, 0x07, 0x99, 0x08, 0x20, 0x09, 0x21, 0x09, 0xcc, 0x08, 0x6c, 0x08, + 0xce, 0x08, 0xa3, 0x08, 0x3d, 0x08, 0xac, 0x07, 0xd8, 0x06, 0x29, 0x06, + 0xa3, 0x04, 0xaa, 0x02, 0x51, 0x01, 0x84, 0x00, 0x63, 0x00, 0x1c, 0x00, + 0x95, 0xff, 0xc1, 0xff, 0x21, 0x00, 0x46, 0x01, 0xca, 0x01, 0x11, 0x02, + 0xa2, 0x02, 0x43, 0x03, 0x2e, 0x04, 0xb2, 0x04, 0x11, 0x05, 0x36, 0x05, + 0xa2, 0x05, 0x13, 0x06, 0x69, 0x06, 0x3f, 0x06, 0x2f, 0x06, 0x00, 0x06, + 0x54, 0x06, 0xc2, 0x06, 0x09, 0x07, 0xdf, 0x06, 0xd2, 0x06, 0xe4, 0x06, + 0xcc, 0x06, 0x8c, 0x06, 0xdd, 0x05, 0x0f, 0x05, 0x5f, 0x04, 0xac, 0x03, + 0xf5, 0x02, 0x3d, 0x02, 0xcd, 0x01, 0x93, 0x01, 0x62, 0x01, 0x38, 0x01, + 0xd1, 0x00, 0x4e, 0x00, 0xf8, 0xff, 0x41, 0xff, 0x9c, 0xfe, 0xc4, 0xfd, + 0xc4, 0xfc, 0xfb, 0xfb, 0x05, 0xfb, 0x06, 0xfa, 0xce, 0xf8, 0xc9, 0xf7, + 0xde, 0xf6, 0x1c, 0xf5, 0xc8, 0xf3, 0x71, 0xf2, 0x1e, 0xf1, 0xf7, 0xef, + 0x3e, 0xef, 0x27, 0xef, 0x54, 0xf0, 0x95, 0xf2, 0x93, 0xf4, 0x13, 0xf6, + 0x66, 0xf7, 0x85, 0xf8, 0x20, 0xf9, 0x42, 0xf9, 0x2d, 0xf8, 0xaa, 0xf6, + 0x52, 0xf5, 0x08, 0xf4, 0x75, 0xf2, 0x4a, 0xf1, 0xf0, 0xf0, 0x43, 0xf1, + 0x67, 0xf2, 0xb3, 0xf3, 0xdb, 0xf4, 0x57, 0xf6, 0xce, 0xf7, 0x07, 0xf9, + 0x12, 0xfa, 0xd7, 0xfa, 0xe2, 0xfa, 0x06, 0xfb, 0x97, 0xfb, 0x35, 0xfc, + 0xda, 0xfc, 0x42, 0xfd, 0xf4, 0xfd, 0x51, 0xff, 0x51, 0x01, 0xfc, 0x02, + 0xd9, 0x03, 0xa4, 0x04, 0xa4, 0x05, 0xbd, 0x06, 0x52, 0x07, 0x07, 0x07, + 0x89, 0x06, 0x8b, 0x06, 0xd4, 0x06, 0x0f, 0x07, 0x09, 0x07, 0x0c, 0x07, + 0x77, 0x07, 0x0d, 0x08, 0x66, 0x08, 0xb3, 0x08, 0xfb, 0x08, 0xd3, 0x08, + 0x71, 0x08, 0xc4, 0x07, 0x0b, 0x07, 0x8f, 0x06, 0x59, 0x06, 0x65, 0x06, + 0x74, 0x06, 0x90, 0x06, 0x5d, 0x06, 0x50, 0x06, 0xdb, 0x06, 0xb0, 0x07, + 0x94, 0x08, 0x1a, 0x09, 0x44, 0x09, 0x5a, 0x09, 0x50, 0x09, 0x6b, 0x09, + 0x79, 0x09, 0xa8, 0x09, 0xef, 0x09, 0x1a, 0x0a, 0x5f, 0x0a, 0x8c, 0x0a, + 0xe6, 0x0a, 0x34, 0x0b, 0x70, 0x0b, 0x95, 0x0b, 0x9f, 0x0b, 0x6b, 0x0b, + 0xf8, 0x0a, 0x91, 0x0a, 0x6e, 0x0a, 0x45, 0x0a, 0x05, 0x0a, 0xa3, 0x09, + 0x41, 0x09, 0x4d, 0x09, 0x44, 0x09, 0xfd, 0x08, 0x98, 0x08, 0x29, 0x08, + 0xd1, 0x07, 0x42, 0x07, 0x7e, 0x06, 0xab, 0x05, 0xf0, 0x04, 0x6d, 0x04, + 0xb1, 0x03, 0x73, 0x02, 0xf9, 0x00, 0xa2, 0xff, 0x83, 0xfe, 0x29, 0xfd, + 0xac, 0xfb, 0x10, 0xfa, 0x5b, 0xf8, 0x91, 0xf6, 0xf6, 0xf4, 0xa4, 0xf3, + 0x4d, 0xf2, 0xd5, 0xf0, 0x1e, 0xef, 0x8f, 0xed, 0x3f, 0xec, 0x21, 0xeb, + 0x80, 0xea, 0x59, 0xea, 0xcd, 0xea, 0x37, 0xeb, 0x2d, 0xeb, 0xf1, 0xea, + 0xb0, 0xea, 0x9e, 0xea, 0x29, 0xea, 0x59, 0xe9, 0xc3, 0xe8, 0x80, 0xe8, + 0xb8, 0xe8, 0xf6, 0xe8, 0x5b, 0xe9, 0xc3, 0xea, 0xdb, 0xec, 0x84, 0xee, + 0x49, 0xef, 0xf6, 0xef, 0x2b, 0xf1, 0xc6, 0xf2, 0xf2, 0xf3, 0x6c, 0xf4, + 0xf3, 0xf4, 0xbe, 0xf6, 0xbe, 0xf8, 0xf3, 0xf9, 0xf6, 0xfa, 0xc0, 0xfc, + 0x98, 0xff, 0x67, 0x02, 0x30, 0x04, 0x3c, 0x05, 0x61, 0x06, 0xda, 0x07, + 0xe2, 0x08, 0x21, 0x09, 0x1b, 0x09, 0x30, 0x09, 0x7e, 0x09, 0xe3, 0x09, + 0x4e, 0x0a, 0xe1, 0x0a, 0xe8, 0x0b, 0x3b, 0x0d, 0x86, 0x0e, 0x5c, 0x0f, + 0x9f, 0x0f, 0x5f, 0x0f, 0x46, 0x0f, 0x7f, 0x0f, 0x52, 0x0f, 0x94, 0x0e, + 0x90, 0x0d, 0xeb, 0x0c, 0xe1, 0x0c, 0xcb, 0x0c, 0x75, 0x0c, 0x07, 0x0c, + 0x05, 0x0c, 0xa8, 0x0c, 0x1b, 0x0d, 0x14, 0x0d, 0xe1, 0x0c, 0x04, 0x0d, + 0x84, 0x0d, 0xac, 0x0d, 0x37, 0x0d, 0x72, 0x0c, 0x10, 0x0c, 0xe1, 0x0b, + 0xa8, 0x0b, 0x37, 0x0b, 0xf4, 0x0a, 0x39, 0x0b, 0x98, 0x0b, 0x9a, 0x0b, + 0x67, 0x0b, 0x5f, 0x0b, 0x8d, 0x0b, 0x78, 0x0b, 0xf5, 0x0a, 0x4d, 0x0a, + 0xa3, 0x09, 0x5c, 0x09, 0xde, 0x08, 0x1c, 0x08, 0x94, 0x07, 0x21, 0x07, + 0xf8, 0x06, 0xb1, 0x06, 0x19, 0x06, 0x8c, 0x05, 0xfe, 0x04, 0xa3, 0x04, + 0xf7, 0x03, 0x29, 0x03, 0x2a, 0x02, 0x06, 0x01, 0xea, 0xff, 0x82, 0xfe, + 0x06, 0xfd, 0x93, 0xfb, 0x26, 0xfa, 0xe2, 0xf8, 0x6d, 0xf7, 0xe4, 0xf5, + 0x53, 0xf4, 0xe7, 0xf2, 0x80, 0xf1, 0xfe, 0xef, 0x5c, 0xee, 0xad, 0xec, + 0xf4, 0xea, 0x0e, 0xe9, 0xb2, 0xe7, 0xea, 0xe6, 0x04, 0xe7, 0x6f, 0xe7, + 0x2f, 0xe7, 0x02, 0xe7, 0x17, 0xe7, 0x60, 0xe7, 0x38, 0xe7, 0x0e, 0xe6, + 0x20, 0xe5, 0x1c, 0xe5, 0x0f, 0xe6, 0xdb, 0xe6, 0xb5, 0xe6, 0x4b, 0xe7, + 0x69, 0xe9, 0x4d, 0xec, 0x73, 0xee, 0xfa, 0xee, 0x70, 0xef, 0xc5, 0xf0, + 0xcd, 0xf2, 0x32, 0xf4, 0x5d, 0xf4, 0xf4, 0xf4, 0xd7, 0xf6, 0x77, 0xf9, + 0x95, 0xfb, 0xe3, 0xfc, 0x8e, 0xfe, 0x33, 0x01, 0x74, 0x04, 0xec, 0x06, + 0x2f, 0x08, 0x1d, 0x09, 0x42, 0x0a, 0x5b, 0x0b, 0xdc, 0x0b, 0xb5, 0x0b, + 0x64, 0x0b, 0x58, 0x0b, 0xe9, 0x0b, 0xe0, 0x0c, 0xd5, 0x0d, 0xd7, 0x0e, + 0x0f, 0x10, 0x74, 0x11, 0xb0, 0x12, 0x5b, 0x13, 0x68, 0x13, 0x1e, 0x13, + 0xd2, 0x12, 0x81, 0x12, 0xf2, 0x11, 0x29, 0x11, 0x61, 0x10, 0xcb, 0x0f, + 0x66, 0x0f, 0x2e, 0x0f, 0xf5, 0x0e, 0xd2, 0x0e, 0xef, 0x0e, 0xf8, 0x0e, + 0xf3, 0x0e, 0xd2, 0x0e, 0x88, 0x0e, 0x41, 0x0e, 0xaf, 0x0d, 0x00, 0x0d, + 0x35, 0x0c, 0x57, 0x0b, 0xab, 0x0a, 0x0f, 0x0a, 0xb4, 0x09, 0x84, 0x09, + 0x6c, 0x09, 0x5d, 0x09, 0x43, 0x09, 0x1c, 0x09, 0xde, 0x08, 0x9f, 0x08, + 0x49, 0x08, 0xd6, 0x07, 0x55, 0x07, 0xc7, 0x06, 0x52, 0x06, 0xf0, 0x05, + 0x89, 0x05, 0x02, 0x05, 0x89, 0x04, 0x23, 0x04, 0xbe, 0x03, 0x52, 0x03, + 0xce, 0x02, 0x4e, 0x02, 0xe2, 0x01, 0x62, 0x01, 0xcc, 0x00, 0x21, 0x00, + 0x5a, 0xff, 0x78, 0xfe, 0x76, 0xfd, 0x6c, 0xfc, 0x5d, 0xfb, 0x43, 0xfa, + 0x0f, 0xf9, 0xc8, 0xf7, 0x9d, 0xf6, 0x79, 0xf5, 0x41, 0xf4, 0xf5, 0xf2, + 0x92, 0xf1, 0x51, 0xf0, 0x19, 0xef, 0xc5, 0xed, 0x48, 0xec, 0x90, 0xea, + 0x1c, 0xe9, 0x5e, 0xe8, 0x4b, 0xe8, 0x87, 0xe8, 0x62, 0xe8, 0x03, 0xe8, + 0x18, 0xe8, 0xa8, 0xe8, 0xc7, 0xe8, 0x1b, 0xe8, 0x19, 0xe7, 0xe8, 0xe6, + 0xeb, 0xe7, 0x0f, 0xe9, 0x25, 0xe9, 0xf2, 0xe8, 0x63, 0xea, 0x35, 0xed, + 0xc2, 0xef, 0xba, 0xf0, 0xa2, 0xf0, 0xa0, 0xf1, 0x11, 0xf4, 0x15, 0xf6, + 0x6c, 0xf6, 0x6c, 0xf6, 0xee, 0xf7, 0xc3, 0xfa, 0x60, 0xfd, 0xb2, 0xfe, + 0x95, 0xff, 0xb4, 0x01, 0xc3, 0x04, 0x54, 0x07, 0x9d, 0x08, 0x2b, 0x09, + 0x10, 0x0a, 0x5e, 0x0b, 0x4d, 0x0c, 0x61, 0x0c, 0x05, 0x0c, 0xe8, 0x0b, + 0x90, 0x0c, 0xb0, 0x0d, 0x60, 0x0e, 0x96, 0x0e, 0x12, 0x0f, 0x35, 0x10, + 0x7e, 0x11, 0x0e, 0x12, 0xbc, 0x11, 0x3b, 0x11, 0x28, 0x11, 0x70, 0x11, + 0x26, 0x11, 0x0d, 0x10, 0x20, 0x0f, 0xe4, 0x0e, 0x0e, 0x0f, 0xc7, 0x0e, + 0xfd, 0x0d, 0x7e, 0x0d, 0x93, 0x0d, 0xe2, 0x0d, 0xa5, 0x0d, 0x06, 0x0d, + 0xae, 0x0c, 0xa8, 0x0c, 0xb1, 0x0c, 0x21, 0x0c, 0x23, 0x0b, 0x80, 0x0a, + 0x5b, 0x0a, 0x1a, 0x0a, 0x78, 0x09, 0xe8, 0x08, 0xc8, 0x08, 0x07, 0x09, + 0x01, 0x09, 0x85, 0x08, 0x01, 0x08, 0xe7, 0x07, 0xf7, 0x07, 0xb5, 0x07, + 0x32, 0x07, 0x91, 0x06, 0x2f, 0x06, 0x1e, 0x06, 0xe3, 0x05, 0x74, 0x05, + 0xeb, 0x04, 0x7c, 0x04, 0x35, 0x04, 0xe8, 0x03, 0x6e, 0x03, 0xbf, 0x02, + 0x2a, 0x02, 0xd6, 0x01, 0x7f, 0x01, 0xf8, 0x00, 0x0f, 0x00, 0x28, 0xff, + 0x74, 0xfe, 0xc4, 0xfd, 0xc7, 0xfc, 0x7b, 0xfb, 0x30, 0xfa, 0x1c, 0xf9, + 0x05, 0xf8, 0xd4, 0xf6, 0x76, 0xf5, 0x36, 0xf4, 0x26, 0xf3, 0x04, 0xf2, + 0xce, 0xf0, 0x6e, 0xef, 0x27, 0xee, 0xcb, 0xec, 0x54, 0xeb, 0x08, 0xea, + 0x57, 0xe9, 0x63, 0xe9, 0xa3, 0xe9, 0x8f, 0xe9, 0x4b, 0xe9, 0x54, 0xe9, + 0xaa, 0xe9, 0x90, 0xe9, 0xa6, 0xe8, 0xa2, 0xe7, 0xa0, 0xe7, 0x96, 0xe8, + 0x67, 0xe9, 0x59, 0xe9, 0x92, 0xe9, 0x43, 0xeb, 0xe1, 0xed, 0x2b, 0xf0, + 0xff, 0xf0, 0x26, 0xf1, 0x59, 0xf2, 0x6d, 0xf4, 0xfa, 0xf5, 0x48, 0xf6, + 0x77, 0xf6, 0xfb, 0xf7, 0xa9, 0xfa, 0x12, 0xfd, 0x5e, 0xfe, 0x75, 0xff, + 0x8f, 0x01, 0x99, 0x04, 0x27, 0x07, 0x7f, 0x08, 0x21, 0x09, 0xf1, 0x09, + 0x29, 0x0b, 0xfc, 0x0b, 0xee, 0x0b, 0x66, 0x0b, 0x3b, 0x0b, 0x01, 0x0c, + 0x03, 0x0d, 0x85, 0x0d, 0xc0, 0x0d, 0x5d, 0x0e, 0xa4, 0x0f, 0xc9, 0x10, + 0x4b, 0x11, 0x34, 0x11, 0xe0, 0x10, 0xc6, 0x10, 0xac, 0x10, 0x37, 0x10, + 0x63, 0x0f, 0x7a, 0x0e, 0x0f, 0x0e, 0xe0, 0x0d, 0x9f, 0x0d, 0x3c, 0x0d, + 0xdc, 0x0c, 0xe8, 0x0c, 0x28, 0x0d, 0x3a, 0x0d, 0x09, 0x0d, 0xaf, 0x0c, + 0x72, 0x0c, 0x31, 0x0c, 0xc9, 0x0b, 0x37, 0x0b, 0x89, 0x0a, 0xfc, 0x09, + 0x94, 0x09, 0x48, 0x09, 0x20, 0x09, 0x0b, 0x09, 0xfe, 0x08, 0xfb, 0x08, + 0xf7, 0x08, 0xea, 0x08, 0xbc, 0x08, 0x6f, 0x08, 0x1e, 0x08, 0xc1, 0x07, + 0x50, 0x07, 0xcc, 0x06, 0x44, 0x06, 0xe5, 0x05, 0x8d, 0x05, 0x28, 0x05, + 0xc4, 0x04, 0x5b, 0x04, 0x08, 0x04, 0xae, 0x03, 0x35, 0x03, 0xb5, 0x02, + 0x2f, 0x02, 0xb7, 0x01, 0x20, 0x01, 0x5f, 0x00, 0x7f, 0xff, 0x8f, 0xfe, + 0xa7, 0xfd, 0xae, 0xfc, 0x98, 0xfb, 0x59, 0xfa, 0x29, 0xf9, 0x26, 0xf8, + 0x1f, 0xf7, 0xf8, 0xf5, 0xb5, 0xf4, 0x88, 0xf3, 0x7b, 0xf2, 0x5e, 0xf1, + 0x2e, 0xf0, 0xcf, 0xee, 0x86, 0xed, 0x40, 0xec, 0xeb, 0xea, 0xe2, 0xe9, + 0x66, 0xe9, 0x9e, 0xe9, 0x01, 0xea, 0xc4, 0xe9, 0x7f, 0xe9, 0xa7, 0xe9, + 0x08, 0xea, 0xf2, 0xe9, 0xf8, 0xe8, 0x21, 0xe8, 0x5c, 0xe8, 0x6a, 0xe9, + 0x1b, 0xea, 0xec, 0xe9, 0x67, 0xea, 0x64, 0xec, 0x16, 0xef, 0xd8, 0xf0, + 0x43, 0xf1, 0xc7, 0xf1, 0x5b, 0xf3, 0x82, 0xf5, 0xa6, 0xf6, 0xd0, 0xf6, + 0x78, 0xf7, 0x69, 0xf9, 0xe4, 0xfb, 0xb7, 0xfd, 0xe3, 0xfe, 0x69, 0x00, + 0xcf, 0x02, 0x99, 0x05, 0xa7, 0x07, 0xc2, 0x08, 0x92, 0x09, 0xa3, 0x0a, + 0x9d, 0x0b, 0xfe, 0x0b, 0xd7, 0x0b, 0x87, 0x0b, 0x9a, 0x0b, 0x35, 0x0c, + 0xd1, 0x0c, 0x36, 0x0d, 0x8d, 0x0d, 0x54, 0x0e, 0x71, 0x0f, 0x3f, 0x10, + 0x6f, 0x10, 0x40, 0x10, 0x29, 0x10, 0x1f, 0x10, 0xeb, 0x0f, 0x4b, 0x0f, + 0x6c, 0x0e, 0xe6, 0x0d, 0xb2, 0x0d, 0x55, 0x0d, 0xb4, 0x0c, 0x29, 0x0c, + 0x0a, 0x0c, 0x33, 0x0c, 0x60, 0x0c, 0x2c, 0x0c, 0x17, 0x0c, 0x38, 0x0c, + 0x25, 0x0c, 0xec, 0x0b, 0x58, 0x0b, 0xcb, 0x0a, 0x5d, 0x0a, 0xf8, 0x09, + 0x6e, 0x09, 0xd6, 0x08, 0xbf, 0x08, 0xe2, 0x08, 0xf4, 0x08, 0xe6, 0x08, + 0xae, 0x08, 0xa8, 0x08, 0xa4, 0x08, 0x75, 0x08, 0x33, 0x08, 0xdd, 0x07, + 0x94, 0x07, 0x36, 0x07, 0xb4, 0x06, 0x44, 0x06, 0xd8, 0x05, 0x63, 0x05, + 0xe4, 0x04, 0x6c, 0x04, 0x07, 0x04, 0xa1, 0x03, 0x32, 0x03, 0xab, 0x02, + 0x34, 0x02, 0xd3, 0x01, 0x50, 0x01, 0x8c, 0x00, 0x9f, 0xff, 0xa8, 0xfe, + 0xa7, 0xfd, 0x96, 0xfc, 0x6a, 0xfb, 0x3f, 0xfa, 0x32, 0xf9, 0x31, 0xf8, + 0x1b, 0xf7, 0x14, 0xf6, 0x16, 0xf5, 0xe8, 0xf3, 0xd2, 0xf2, 0xb1, 0xf1, + 0x98, 0xf0, 0x5f, 0xef, 0x0b, 0xee, 0xa7, 0xec, 0x48, 0xeb, 0x3b, 0xea, + 0x7a, 0xe9, 0x64, 0xe9, 0xc3, 0xe9, 0x22, 0xea, 0x1a, 0xea, 0x14, 0xea, + 0x4d, 0xea, 0x58, 0xea, 0xff, 0xe9, 0x18, 0xe9, 0x92, 0xe8, 0x06, 0xe9, + 0xc2, 0xe9, 0x28, 0xea, 0x67, 0xea, 0x8a, 0xeb, 0xf3, 0xed, 0x31, 0xf0, + 0x6c, 0xf1, 0xdf, 0xf1, 0xd1, 0xf2, 0xd4, 0xf4, 0x86, 0xf6, 0x43, 0xf7, + 0x81, 0xf7, 0xcd, 0xf8, 0x06, 0xfb, 0x00, 0xfd, 0x4a, 0xfe, 0x46, 0xff, + 0x70, 0x01, 0x48, 0x04, 0x8a, 0x06, 0xef, 0x07, 0xb9, 0x08, 0xe4, 0x09, + 0x1a, 0x0b, 0xe6, 0x0b, 0xef, 0x0b, 0xb2, 0x0b, 0xe9, 0x0b, 0x21, 0x0c, + 0x6c, 0x0c, 0xb4, 0x0c, 0x2a, 0x0d, 0xe3, 0x0d, 0xa4, 0x0e, 0x60, 0x0f, + 0xd2, 0x0f, 0x02, 0x10, 0x02, 0x10, 0xcc, 0x0f, 0x9b, 0x0f, 0x5a, 0x0f, + 0xf0, 0x0e, 0x69, 0x0e, 0x0b, 0x0e, 0xac, 0x0d, 0x30, 0x0d, 0xaf, 0x0c, + 0x2d, 0x0c, 0x10, 0x0c, 0x27, 0x0c, 0x2e, 0x0c, 0x19, 0x0c, 0xfb, 0x0b, + 0x1a, 0x0c, 0x05, 0x0c, 0xb8, 0x0b, 0x44, 0x0b, 0xc3, 0x0a, 0x57, 0x0a, + 0xb8, 0x09, 0x15, 0x09, 0xab, 0x08, 0x95, 0x08, 0xb5, 0x08, 0xac, 0x08, + 0x7c, 0x08, 0x75, 0x08, 0x8b, 0x08, 0x68, 0x08, 0x18, 0x08, 0xcf, 0x07, + 0x7d, 0x07, 0x08, 0x07, 0x7f, 0x06, 0x08, 0x06, 0xa3, 0x05, 0x3c, 0x05, + 0xc5, 0x04, 0x46, 0x04, 0x08, 0x04, 0xcd, 0x03, 0x73, 0x03, 0xeb, 0x02, + 0x53, 0x02, 0xcd, 0x01, 0x36, 0x01, 0x8d, 0x00, 0xb3, 0xff, 0xc1, 0xfe, + 0xcd, 0xfd, 0xd2, 0xfc, 0xe6, 0xfb, 0xd4, 0xfa, 0xef, 0xf9, 0xfd, 0xf8, + 0xb2, 0xf7, 0x50, 0xf6, 0xdb, 0xf4, 0x9b, 0xf3, 0x6c, 0xf2, 0x34, 0xf1, + 0x45, 0xf0, 0x03, 0xef, 0xc4, 0xed, 0x80, 0xec, 0xfa, 0xea, 0x94, 0xe9, + 0x73, 0xe8, 0x10, 0xe8, 0x5a, 0xe8, 0xbe, 0xe8, 0x95, 0xe8, 0xa0, 0xe8, + 0x52, 0xe9, 0x4a, 0xea, 0x9e, 0xea, 0x22, 0xea, 0x70, 0xe9, 0xa1, 0xe9, + 0x60, 0xea, 0xd1, 0xea, 0xce, 0xea, 0x3e, 0xeb, 0x4c, 0xed, 0x83, 0xef, + 0x21, 0xf1, 0x35, 0xf2, 0xf5, 0xf2, 0x9f, 0xf4, 0xde, 0xf6, 0x89, 0xf8, + 0x6c, 0xf9, 0x5e, 0xfa, 0xad, 0xfb, 0xcb, 0xfd, 0xbf, 0xff, 0xbe, 0x00, + 0xf0, 0x01, 0x8d, 0x03, 0xa6, 0x05, 0x90, 0x07, 0xa2, 0x08, 0x82, 0x09, + 0x7e, 0x0a, 0xfa, 0x0b, 0x17, 0x0d, 0x43, 0x0d, 0x80, 0x0d, 0xc9, 0x0d, + 0x23, 0x0e, 0xa1, 0x0e, 0xb2, 0x0e, 0xd2, 0x0e, 0x11, 0x0f, 0xef, 0x0f, + 0x66, 0x10, 0x45, 0x10, 0xcf, 0x0f, 0x79, 0x0f, 0xb5, 0x0f, 0x8b, 0x0f, + 0x05, 0x0f, 0x90, 0x0e, 0x4c, 0x0e, 0x63, 0x0e, 0x07, 0x0e, 0x41, 0x0d, + 0x7b, 0x0c, 0x12, 0x0c, 0x01, 0x0c, 0x8b, 0x0b, 0xe7, 0x0a, 0x62, 0x0a, + 0x49, 0x0a, 0x86, 0x0a, 0x7d, 0x0a, 0x22, 0x0a, 0xe7, 0x09, 0x7b, 0x09, + 0x45, 0x09, 0xf4, 0x08, 0xad, 0x08, 0xa8, 0x08, 0x87, 0x08, 0x48, 0x08, + 0xec, 0x07, 0x73, 0x07, 0x46, 0x07, 0x53, 0x07, 0x5b, 0x07, 0xb8, 0x07, + 0xae, 0x07, 0x84, 0x07, 0xff, 0x06, 0x88, 0x06, 0x55, 0x06, 0x47, 0x06, + 0x22, 0x06, 0x49, 0x05, 0xc0, 0x03, 0xfa, 0x01, 0xa5, 0x00, 0xed, 0xff, + 0x2a, 0x00, 0x6d, 0x00, 0xf7, 0xff, 0x00, 0xff, 0xe5, 0xfd, 0x28, 0xfd, + 0xb7, 0xfc, 0xd3, 0xfb, 0xde, 0xfa, 0x37, 0xf9, 0x30, 0xf7, 0x8d, 0xf4, + 0x70, 0xf2, 0xd0, 0xef, 0x73, 0xee, 0xd8, 0xec, 0xe8, 0xea, 0x0e, 0xe9, + 0xb7, 0xe6, 0x4f, 0xe5, 0x9c, 0xe4, 0x33, 0xe3, 0x18, 0xe2, 0xec, 0xe0, + 0x8e, 0xdf, 0xa8, 0xe1, 0x81, 0xe4, 0x30, 0xe9, 0x1a, 0xed, 0xe7, 0xed, + 0x06, 0xf0, 0xec, 0xf1, 0xf6, 0xf4, 0x24, 0xf9, 0x69, 0xf9, 0x35, 0xf8, + 0xf8, 0xf5, 0x23, 0xf4, 0x5f, 0xf4, 0x5e, 0xf5, 0x86, 0xf6, 0xe7, 0xf7, + 0x68, 0xf8, 0x16, 0xf9, 0xb0, 0xfa, 0x8b, 0xfc, 0x8c, 0xff, 0xcc, 0x01, + 0x19, 0x03, 0x7e, 0x03, 0xe0, 0x02, 0x67, 0x02, 0xc5, 0x01, 0xf6, 0x01, + 0xc8, 0x01, 0x1c, 0x02, 0x94, 0x02, 0x5b, 0x03, 0x16, 0x05, 0xee, 0x06, + 0xc8, 0x09, 0x7c, 0x0c, 0x21, 0x0f, 0xe8, 0x10, 0x5f, 0x11, 0x68, 0x11, + 0xfb, 0x10, 0xa7, 0x10, 0xd0, 0x10, 0xf5, 0x0f, 0x29, 0x0f, 0x23, 0x0e, + 0x33, 0x0d, 0x44, 0x0d, 0x7a, 0x0d, 0xaf, 0x0e, 0xa2, 0x0f, 0x04, 0x10, + 0x0c, 0x10, 0x27, 0x0f, 0x10, 0x0f, 0x65, 0x0e, 0xca, 0x0c, 0xad, 0x0a, + 0x48, 0x08, 0x4a, 0x06, 0x0f, 0x05, 0x65, 0x04, 0x26, 0x03, 0xf5, 0x02, + 0xe0, 0x02, 0x19, 0x03, 0xb5, 0x03, 0x66, 0x04, 0x28, 0x05, 0x1a, 0x06, + 0xcf, 0x06, 0x6b, 0x06, 0x67, 0x06, 0xf5, 0x05, 0xf3, 0x05, 0x41, 0x06, + 0x35, 0x06, 0x8f, 0x06, 0x3c, 0x06, 0xfe, 0x06, 0x9d, 0x07, 0x41, 0x08, + 0x06, 0x09, 0x24, 0x09, 0x3e, 0x09, 0xf0, 0x08, 0x7c, 0x08, 0x8d, 0x07, + 0x30, 0x06, 0x05, 0x05, 0xc6, 0x03, 0xb9, 0x02, 0xa0, 0x01, 0x91, 0x00, + 0xcc, 0xff, 0x36, 0xff, 0x37, 0xff, 0x74, 0xff, 0x4e, 0xff, 0x17, 0x00, + 0x39, 0xff, 0x95, 0xfd, 0xd3, 0xfb, 0x57, 0xf9, 0x21, 0xf7, 0x43, 0xf5, + 0x52, 0xf2, 0x5b, 0xef, 0x5b, 0xec, 0xcf, 0xea, 0x79, 0xe9, 0x49, 0xe9, + 0x6c, 0xe9, 0xb5, 0xe7, 0x49, 0xe7, 0x36, 0xe6, 0x93, 0xe5, 0x42, 0xe4, + 0x22, 0xe2, 0xdb, 0xde, 0xc3, 0xde, 0xb2, 0xdf, 0x2e, 0xe6, 0x7a, 0xec, + 0x3b, 0xf0, 0x10, 0xf4, 0x9f, 0xf4, 0x16, 0xfa, 0x47, 0x00, 0x7e, 0x05, + 0xa0, 0x07, 0xc6, 0x05, 0x4f, 0x03, 0x39, 0x00, 0xed, 0xfd, 0x68, 0xfc, + 0x9e, 0xfa, 0x0a, 0xfa, 0x70, 0xf9, 0x4b, 0xf8, 0xc4, 0xf8, 0xb3, 0xf9, + 0x37, 0xfc, 0x17, 0xff, 0x17, 0x01, 0xf2, 0x02, 0xdb, 0x04, 0xb6, 0x04, + 0xa6, 0x03, 0x6f, 0x01, 0xb2, 0x00, 0x30, 0x01, 0xcc, 0x02, 0x63, 0x03, + 0x0b, 0x03, 0xbd, 0x03, 0x48, 0x05, 0x8f, 0x07, 0xf5, 0x0a, 0xef, 0x0d, + 0x6d, 0x10, 0x50, 0x12, 0x44, 0x12, 0x44, 0x11, 0xbb, 0x10, 0xf5, 0x10, + 0xd9, 0x10, 0x3c, 0x10, 0x5e, 0x0e, 0xfa, 0x0b, 0xc5, 0x0a, 0xf7, 0x09, + 0x0d, 0x09, 0x1a, 0x09, 0x68, 0x09, 0x62, 0x0a, 0xf5, 0x0a, 0xae, 0x09, + 0xff, 0x07, 0x6f, 0x06, 0x1c, 0x06, 0x2c, 0x06, 0xaa, 0x04, 0x79, 0x03, + 0x16, 0x01, 0x9d, 0x00, 0x63, 0x00, 0x27, 0x00, 0xdb, 0x00, 0xb0, 0x01, + 0x65, 0x03, 0xa7, 0x05, 0x8d, 0x06, 0x47, 0x07, 0x8b, 0x07, 0x16, 0x09, + 0x26, 0x0a, 0x70, 0x0b, 0xff, 0x0a, 0xca, 0x0a, 0x03, 0x0a, 0x4c, 0x0a, + 0x55, 0x0a, 0xd6, 0x0a, 0x42, 0x0b, 0x7c, 0x0b, 0xab, 0x0a, 0xc1, 0x09, + 0x51, 0x09, 0x6f, 0x08, 0x49, 0x08, 0xf8, 0x06, 0x4a, 0x05, 0x6c, 0x03, + 0xda, 0x01, 0xa7, 0xff, 0x2f, 0xff, 0xf1, 0xfd, 0xec, 0xfc, 0x51, 0xfc, + 0x60, 0xfb, 0xeb, 0xfa, 0x3c, 0xfb, 0xde, 0xfa, 0x06, 0xfb, 0xf3, 0xf9, + 0x4f, 0xf8, 0x5f, 0xf5, 0xcb, 0xf2, 0x03, 0xf0, 0xed, 0xee, 0xd7, 0xec, + 0x5c, 0xec, 0x1c, 0xea, 0xcf, 0xea, 0x3a, 0xe9, 0x9e, 0xe8, 0x59, 0xe8, + 0x21, 0xe7, 0xd5, 0xe8, 0x2d, 0xe6, 0xeb, 0xe3, 0xbb, 0xdf, 0xe7, 0xdc, + 0xc3, 0xdd, 0x93, 0xe1, 0x37, 0xe7, 0xc7, 0xee, 0xce, 0xf2, 0x78, 0xf8, + 0x5d, 0xfc, 0xcf, 0x02, 0x83, 0x09, 0x8b, 0x0c, 0x90, 0x0e, 0xeb, 0x09, + 0xc1, 0x06, 0x22, 0x03, 0x26, 0xfe, 0x04, 0xfc, 0xfd, 0xf8, 0x21, 0xf8, + 0x5f, 0xf8, 0x62, 0xf8, 0xbf, 0xf8, 0x0d, 0xfa, 0xbb, 0xfd, 0xc8, 0x00, + 0xe7, 0x02, 0x2c, 0x04, 0x30, 0x03, 0xba, 0x02, 0x27, 0x02, 0xe4, 0x00, + 0x51, 0xff, 0x47, 0xff, 0x80, 0xff, 0xfc, 0x00, 0x2a, 0x02, 0x93, 0x03, + 0xf9, 0x05, 0xe3, 0x08, 0x20, 0x0d, 0x14, 0x10, 0x42, 0x12, 0x1b, 0x12, + 0x2a, 0x11, 0x9c, 0x10, 0x25, 0x10, 0x5f, 0x0f, 0xf8, 0x0d, 0xa0, 0x0b, + 0x81, 0x09, 0x46, 0x09, 0x9f, 0x08, 0xab, 0x08, 0x18, 0x08, 0xee, 0x07, + 0xe8, 0x08, 0x81, 0x09, 0xca, 0x09, 0x2c, 0x08, 0x52, 0x07, 0x49, 0x06, + 0x68, 0x05, 0x3d, 0x04, 0x56, 0x03, 0x64, 0x02, 0xc6, 0x01, 0xcb, 0x01, + 0x2f, 0x01, 0xd2, 0x01, 0x0f, 0x03, 0x23, 0x04, 0x72, 0x05, 0xb5, 0x06, + 0x23, 0x07, 0x93, 0x07, 0x36, 0x08, 0x0e, 0x09, 0xbb, 0x09, 0xa5, 0x0a, + 0x60, 0x0a, 0x69, 0x09, 0x3a, 0x09, 0x8f, 0x09, 0xc2, 0x0b, 0x86, 0x0b, + 0xcf, 0x0b, 0x3f, 0x0b, 0xaa, 0x09, 0xf6, 0x09, 0xce, 0x09, 0xcd, 0x08, + 0x85, 0x07, 0x70, 0x05, 0xfc, 0x02, 0xec, 0x00, 0x7e, 0xff, 0xd2, 0xfd, + 0xf4, 0xfc, 0x79, 0xfb, 0x42, 0xfa, 0x5a, 0xf9, 0x08, 0xf9, 0x4c, 0xf9, + 0x6d, 0xf9, 0x3e, 0xf9, 0x02, 0xf9, 0x8e, 0xf9, 0x66, 0xf9, 0x63, 0xf7, + 0x57, 0xf5, 0xd3, 0xf0, 0xec, 0xef, 0x50, 0xee, 0x18, 0xed, 0x6b, 0xeb, + 0xa1, 0xe8, 0x03, 0xe7, 0x34, 0xe6, 0xac, 0xe8, 0xc5, 0xe8, 0x9c, 0xea, + 0x85, 0xe8, 0x43, 0xe7, 0x42, 0xe5, 0xad, 0xe2, 0xee, 0xe0, 0x8b, 0xdf, + 0x62, 0xe3, 0xfa, 0xe8, 0x3a, 0xf0, 0xc1, 0xf5, 0x80, 0xf9, 0x5a, 0xff, + 0x68, 0x06, 0xeb, 0x0e, 0x09, 0x13, 0xcc, 0x12, 0x8d, 0x0f, 0x80, 0x0b, + 0xf2, 0x07, 0x6a, 0x04, 0x5d, 0xff, 0x51, 0xfb, 0xfb, 0xf7, 0x7f, 0xf5, + 0x33, 0xf5, 0x88, 0xf4, 0xfb, 0xf5, 0x41, 0xf9, 0x02, 0xfd, 0x5c, 0x00, + 0xd1, 0x02, 0x06, 0x04, 0x23, 0x04, 0x31, 0x04, 0xef, 0x03, 0x49, 0x04, + 0x2f, 0x04, 0x21, 0x04, 0x3e, 0x04, 0x1d, 0x04, 0xd2, 0x04, 0x77, 0x06, + 0x53, 0x09, 0x21, 0x0c, 0xbf, 0x0e, 0x80, 0x10, 0x1b, 0x11, 0x13, 0x11, + 0x27, 0x11, 0x2c, 0x11, 0x14, 0x11, 0x3d, 0x0f, 0xf9, 0x0c, 0x3e, 0x0a, + 0xae, 0x08, 0x00, 0x08, 0x52, 0x06, 0x8d, 0x05, 0x62, 0x04, 0x6f, 0x04, + 0x2d, 0x05, 0xd5, 0x04, 0x22, 0x05, 0x02, 0x06, 0xe5, 0x06, 0xbb, 0x06, + 0x69, 0x05, 0x96, 0x04, 0xf5, 0x03, 0xde, 0x04, 0x86, 0x04, 0x73, 0x02, + 0xde, 0x00, 0x98, 0x00, 0x0e, 0x01, 0x64, 0x02, 0x87, 0x03, 0xcb, 0x03, + 0x91, 0x04, 0x5a, 0x06, 0x83, 0x07, 0xf4, 0x08, 0x62, 0x0a, 0xe7, 0x0a, + 0xb9, 0x0b, 0xeb, 0x0b, 0x41, 0x0b, 0xa9, 0x0a, 0x3d, 0x0a, 0xb4, 0x09, + 0x59, 0x09, 0xd4, 0x07, 0x52, 0x06, 0x4c, 0x05, 0x71, 0x04, 0x59, 0x03, + 0x2c, 0x02, 0xfd, 0x00, 0xe3, 0xff, 0xfa, 0xfe, 0xa7, 0xfd, 0xf3, 0xfb, + 0xf8, 0xfa, 0x64, 0xfa, 0x12, 0xfa, 0xb7, 0xf9, 0x93, 0xf8, 0x78, 0xf8, + 0x38, 0xf8, 0x2a, 0xf7, 0xfb, 0xf7, 0x08, 0xf8, 0x4b, 0xf6, 0x71, 0xf5, + 0x41, 0xf3, 0x31, 0xf1, 0x65, 0xf2, 0x02, 0xf1, 0x1f, 0xef, 0x4c, 0xed, + 0x82, 0xeb, 0xfc, 0xea, 0xda, 0xeb, 0x93, 0xe9, 0x28, 0xea, 0x56, 0xe9, + 0x2a, 0xe9, 0xad, 0xe8, 0x3c, 0xe6, 0x1e, 0xe5, 0xda, 0xe2, 0xba, 0xe4, + 0x4d, 0xe6, 0x01, 0xeb, 0x97, 0xf0, 0x11, 0xf5, 0x94, 0xfa, 0xb2, 0xff, + 0xb7, 0x06, 0x3b, 0x0d, 0x78, 0x11, 0x82, 0x12, 0xf5, 0x10, 0x65, 0x0e, + 0xc0, 0x0a, 0xe2, 0x07, 0x7d, 0x03, 0x4f, 0xff, 0xce, 0xfc, 0x78, 0xf9, + 0xff, 0xf6, 0xea, 0xf5, 0xa2, 0xf6, 0xd3, 0xf8, 0xa7, 0xfb, 0x5b, 0xfe, + 0xf4, 0xff, 0xae, 0x02, 0x9b, 0x04, 0x27, 0x05, 0xb1, 0x05, 0xbe, 0x06, + 0xa4, 0x07, 0x83, 0x07, 0x28, 0x06, 0x97, 0x04, 0x21, 0x04, 0x0c, 0x06, + 0x03, 0x08, 0x10, 0x09, 0x0b, 0x0a, 0x1b, 0x0b, 0xaa, 0x0c, 0x37, 0x0e, + 0x64, 0x0f, 0x0a, 0x10, 0x97, 0x10, 0xeb, 0x0f, 0x5c, 0x0e, 0x1e, 0x0d, + 0x27, 0x0b, 0x34, 0x0a, 0x5e, 0x08, 0xfe, 0x05, 0xb0, 0x04, 0xf9, 0x03, + 0xee, 0x03, 0x63, 0x04, 0x62, 0x04, 0xd9, 0x04, 0x28, 0x05, 0x46, 0x05, + 0x03, 0x06, 0x39, 0x06, 0x14, 0x06, 0x36, 0x05, 0xca, 0x03, 0x96, 0x02, + 0x83, 0x02, 0xf7, 0x01, 0x42, 0x01, 0x9a, 0x00, 0x3d, 0x01, 0x69, 0x02, + 0x46, 0x03, 0x8b, 0x04, 0x76, 0x05, 0x0e, 0x08, 0x99, 0x09, 0x90, 0x0a, + 0xff, 0x0a, 0x97, 0x0b, 0x50, 0x0c, 0x81, 0x0c, 0x38, 0x0b, 0xb5, 0x09, + 0x34, 0x08, 0x7a, 0x07, 0xb4, 0x05, 0xfa, 0x02, 0xb1, 0x01, 0x68, 0x00, + 0x5b, 0xff, 0x9d, 0xfe, 0x4f, 0xfd, 0xfb, 0xfc, 0x21, 0xfd, 0x02, 0xfc, + 0x7c, 0xfb, 0x3d, 0xfb, 0x57, 0xfb, 0x98, 0xfb, 0x64, 0xfa, 0x14, 0xf9, + 0xef, 0xf8, 0x57, 0xf8, 0x13, 0xf8, 0x48, 0xf7, 0xa0, 0xf5, 0xf7, 0xf4, + 0x0a, 0xf4, 0x3e, 0xf3, 0x53, 0xf1, 0x1a, 0xf1, 0xdb, 0xef, 0x8b, 0xef, + 0xe1, 0xee, 0xf5, 0xed, 0x4b, 0xee, 0x3f, 0xef, 0xff, 0xee, 0x83, 0xee, + 0x89, 0xec, 0xd2, 0xeb, 0xb0, 0xeb, 0x88, 0xe9, 0x11, 0xe7, 0xec, 0xe2, + 0x50, 0xe0, 0x56, 0xe2, 0x97, 0xe6, 0xe0, 0xed, 0xc6, 0xf3, 0x81, 0xf6, + 0x8d, 0xfb, 0xfa, 0x01, 0x50, 0x0b, 0x5b, 0x14, 0x3e, 0x18, 0xc6, 0x15, + 0x11, 0x14, 0xf0, 0x10, 0xaf, 0x0f, 0x6a, 0x0c, 0xbd, 0x06, 0x52, 0x00, + 0x1a, 0xfb, 0x63, 0xf7, 0xe1, 0xf4, 0x45, 0xf4, 0x94, 0xf4, 0x12, 0xf7, + 0xca, 0xfa, 0x0b, 0xfd, 0xf7, 0x00, 0xd4, 0x04, 0xa6, 0x07, 0x23, 0x0a, + 0x16, 0x0b, 0x3a, 0x0b, 0xcb, 0x0b, 0x35, 0x0b, 0x48, 0x09, 0x07, 0x06, + 0x99, 0x03, 0x4f, 0x03, 0x6d, 0x04, 0x83, 0x05, 0x1b, 0x06, 0x3a, 0x06, + 0x5e, 0x08, 0x2f, 0x0b, 0xc0, 0x0e, 0x63, 0x10, 0x64, 0x12, 0x36, 0x13, + 0xc7, 0x12, 0x4d, 0x12, 0x26, 0x0f, 0xaf, 0x0c, 0x13, 0x0b, 0x5e, 0x09, + 0xf1, 0x05, 0x53, 0x02, 0xaa, 0x00, 0x3f, 0x00, 0x44, 0x02, 0x45, 0x03, + 0x72, 0x01, 0x08, 0x02, 0xdc, 0x03, 0x50, 0x06, 0x2f, 0x08, 0x7c, 0x06, + 0xf5, 0x03, 0x01, 0x04, 0x31, 0x03, 0x93, 0x02, 0x62, 0x00, 0xfb, 0xfe, + 0xa6, 0xfe, 0x23, 0xff, 0x61, 0xff, 0x59, 0xff, 0x6d, 0x02, 0xbe, 0x04, + 0xd0, 0x06, 0xd4, 0x08, 0x98, 0x09, 0x70, 0x0b, 0xda, 0x0d, 0x90, 0x0d, + 0x00, 0x0c, 0x62, 0x0a, 0x59, 0x08, 0x32, 0x06, 0x23, 0x04, 0xee, 0x01, + 0x00, 0xff, 0x23, 0xfd, 0x96, 0xfb, 0xaa, 0xf9, 0x9a, 0xf9, 0x8a, 0xf9, + 0x24, 0xf9, 0x52, 0xf9, 0x0d, 0xfa, 0xa9, 0xfa, 0x61, 0xfa, 0x0c, 0xfb, + 0x86, 0xfa, 0x63, 0xfa, 0xeb, 0xfa, 0xd3, 0xf9, 0x37, 0xf9, 0x29, 0xf9, + 0x36, 0xf7, 0x4c, 0xf6, 0xbb, 0xf4, 0x4e, 0xf3, 0x9f, 0xf2, 0x14, 0xf2, + 0xe0, 0xf0, 0x05, 0xef, 0x4a, 0xee, 0xb0, 0xee, 0xa1, 0xee, 0x58, 0xef, + 0xfc, 0xee, 0x38, 0xed, 0x91, 0xed, 0x51, 0xee, 0x67, 0xec, 0x6c, 0xeb, + 0xc1, 0xe8, 0xbd, 0xe5, 0xf7, 0xe4, 0xa4, 0xe7, 0x19, 0xeb, 0x79, 0xf0, + 0x26, 0xf8, 0x67, 0xfa, 0x1a, 0x00, 0xe6, 0x06, 0x2e, 0x0e, 0x3e, 0x17, + 0x2c, 0x1b, 0x53, 0x19, 0xcb, 0x15, 0x4b, 0x13, 0xf1, 0x10, 0xdd, 0x0e, + 0xf4, 0x09, 0x26, 0x02, 0xa9, 0xfa, 0x30, 0xf6, 0x44, 0xf3, 0x53, 0xf3, + 0xaa, 0xf4, 0x4b, 0xf5, 0xcd, 0xf7, 0xe5, 0xfa, 0x0c, 0xfe, 0x23, 0x03, + 0x59, 0x07, 0xfd, 0x09, 0x08, 0x0c, 0x1f, 0x0c, 0x38, 0x0c, 0xc1, 0x0b, + 0x33, 0x0a, 0xd0, 0x07, 0xe5, 0x04, 0x45, 0x03, 0x65, 0x03, 0xa7, 0x03, + 0x3b, 0x04, 0x14, 0x04, 0x14, 0x06, 0x3f, 0x09, 0x63, 0x0c, 0x46, 0x0f, + 0x88, 0x10, 0x1a, 0x11, 0x15, 0x12, 0x22, 0x12, 0x7e, 0x11, 0xb3, 0x0e, + 0xec, 0x0a, 0xdf, 0x07, 0x08, 0x05, 0xde, 0x03, 0xc2, 0x01, 0xe0, 0xff, + 0xef, 0xfd, 0x35, 0xfd, 0xb8, 0xfe, 0x56, 0x00, 0x87, 0x02, 0x92, 0x02, + 0x9a, 0x02, 0xfc, 0x02, 0xb6, 0x03, 0xff, 0x03, 0x3e, 0x03, 0xec, 0x01, + 0xfc, 0xff, 0x82, 0xfe, 0x72, 0xfd, 0xbf, 0xfc, 0x07, 0xfd, 0x3e, 0xfe, + 0xaa, 0xfe, 0xd7, 0xff, 0xc2, 0x01, 0x3d, 0x04, 0x2e, 0x07, 0x7f, 0x09, + 0x03, 0x0b, 0x53, 0x0c, 0x3e, 0x0d, 0x6c, 0x0d, 0x95, 0x0b, 0x93, 0x09, + 0xfb, 0x07, 0x37, 0x06, 0xe4, 0x03, 0x4e, 0x00, 0x3e, 0xfc, 0xf5, 0xf9, + 0xf3, 0xf8, 0xc7, 0xf8, 0xca, 0xf7, 0xcf, 0xf6, 0x5d, 0xf6, 0x1e, 0xf7, + 0x7b, 0xf8, 0x97, 0xf9, 0xf5, 0xfa, 0x05, 0xfb, 0xd2, 0xfb, 0x3d, 0xfc, + 0x2a, 0xfc, 0x41, 0xfc, 0x57, 0xfc, 0x9f, 0xfb, 0x62, 0xfa, 0xff, 0xf8, + 0xda, 0xf6, 0x67, 0xf5, 0x8f, 0xf4, 0x67, 0xf3, 0xce, 0xf2, 0xe2, 0xf1, + 0x45, 0xf0, 0xdb, 0xf0, 0x66, 0xf0, 0x43, 0xf1, 0x31, 0xf1, 0xe6, 0xef, + 0xc5, 0xef, 0xdc, 0xee, 0x0d, 0xee, 0x0e, 0xeb, 0x65, 0xe9, 0x53, 0xe8, + 0x8c, 0xea, 0x7e, 0xee, 0xc9, 0xf1, 0xe7, 0xf4, 0x6c, 0xf8, 0x2a, 0xfe, + 0x5c, 0x04, 0x73, 0x0c, 0xce, 0x12, 0xdc, 0x15, 0x6c, 0x16, 0x56, 0x15, + 0x96, 0x14, 0x4f, 0x14, 0xbe, 0x12, 0x32, 0x0d, 0x9d, 0x06, 0xbc, 0x00, + 0x0a, 0xfc, 0x82, 0xf9, 0xd6, 0xf7, 0x38, 0xf6, 0x41, 0xf6, 0x07, 0xf7, + 0x62, 0xf8, 0x4b, 0xfb, 0x81, 0xfe, 0xd2, 0x01, 0x5d, 0x05, 0x0e, 0x07, + 0xec, 0x07, 0xb1, 0x08, 0xa5, 0x09, 0x7f, 0x08, 0x58, 0x06, 0x0c, 0x04, + 0x45, 0x02, 0xec, 0x01, 0x52, 0x01, 0xed, 0xff, 0xf0, 0xfe, 0x8f, 0x00, + 0xd3, 0x03, 0x4f, 0x06, 0x8d, 0x09, 0xfc, 0x0b, 0xf9, 0x0d, 0xf2, 0x10, + 0x43, 0x13, 0xf7, 0x13, 0x58, 0x13, 0x87, 0x11, 0x8a, 0x0e, 0x16, 0x0c, + 0xaa, 0x09, 0xbf, 0x06, 0x80, 0x02, 0x60, 0xfe, 0xff, 0xfb, 0x13, 0xfb, + 0xcd, 0xfa, 0xaa, 0xfa, 0xe5, 0xf9, 0x73, 0xfa, 0x51, 0xfc, 0xee, 0xfd, + 0x88, 0xff, 0x44, 0x00, 0x75, 0x00, 0x41, 0x01, 0xc9, 0x00, 0x98, 0x01, + 0x77, 0x01, 0x3c, 0x01, 0xb4, 0x00, 0xab, 0xff, 0xf0, 0x00, 0x97, 0x02, + 0xcf, 0x03, 0xf0, 0x04, 0x97, 0x05, 0xfa, 0x06, 0x1b, 0x0a, 0xfc, 0x0b, + 0x5d, 0x0c, 0xc9, 0x0b, 0x60, 0x0b, 0xc3, 0x0a, 0x84, 0x09, 0xb4, 0x07, + 0x70, 0x04, 0xfe, 0x00, 0x21, 0xfe, 0xd0, 0xfb, 0x28, 0xf9, 0x9c, 0xf7, + 0xd7, 0xf5, 0xef, 0xf4, 0x26, 0xf5, 0x91, 0xf5, 0x79, 0xf6, 0x96, 0xf8, + 0x9b, 0xfa, 0x0b, 0xfc, 0x9d, 0xfd, 0x97, 0xfe, 0xcf, 0xff, 0x3e, 0x00, + 0x53, 0x00, 0xe2, 0xff, 0x73, 0xfd, 0xf0, 0xfb, 0x89, 0xf9, 0xe0, 0xf6, + 0x80, 0xf5, 0xf5, 0xf3, 0x39, 0xf2, 0x9d, 0xf1, 0xcb, 0xf0, 0x79, 0xf0, + 0x45, 0xf0, 0xc2, 0xf3, 0x62, 0xf3, 0x21, 0xf3, 0x5b, 0xf6, 0xa1, 0xf2, + 0xeb, 0xf2, 0x19, 0xf1, 0x2e, 0xee, 0xb1, 0xeb, 0x5b, 0xec, 0x74, 0xec, + 0x53, 0xed, 0xca, 0xf0, 0xa1, 0xf2, 0x92, 0xf6, 0x1c, 0xfc, 0x09, 0x04, + 0x79, 0x0b, 0xe0, 0x11, 0x5c, 0x14, 0x17, 0x16, 0x93, 0x17, 0x38, 0x19, + 0x70, 0x1a, 0x6c, 0x16, 0x7d, 0x10, 0x0f, 0x0a, 0x39, 0x04, 0x5a, 0x00, + 0x3d, 0xfc, 0x42, 0xf8, 0x4d, 0xf5, 0xaa, 0xf3, 0x63, 0xf3, 0xd8, 0xf3, + 0x08, 0xf6, 0x9b, 0xf9, 0xb6, 0xfd, 0xd7, 0x00, 0xcb, 0x02, 0x89, 0x04, + 0x62, 0x06, 0x33, 0x08, 0x2c, 0x08, 0x01, 0x07, 0x5e, 0x05, 0xca, 0x03, + 0x5f, 0x02, 0xc6, 0x00, 0x5b, 0xff, 0x32, 0xfe, 0xe0, 0xfe, 0x17, 0x01, + 0x13, 0x03, 0x69, 0x05, 0x78, 0x07, 0x6b, 0x0a, 0xf8, 0x0d, 0xed, 0x10, + 0xd4, 0x12, 0x41, 0x13, 0xc2, 0x12, 0x74, 0x11, 0x86, 0x0f, 0x96, 0x0c, + 0xf6, 0x08, 0xfc, 0x04, 0xa4, 0x01, 0x08, 0xfe, 0xc9, 0xfa, 0xfe, 0xf7, + 0x09, 0xf6, 0x53, 0xf5, 0x1f, 0xf6, 0xb6, 0xf7, 0xa6, 0xf8, 0xd6, 0xf9, + 0x61, 0xfb, 0x19, 0xfd, 0xa6, 0x00, 0x28, 0x03, 0x75, 0x03, 0x67, 0x03, + 0x09, 0x04, 0x05, 0x04, 0xb6, 0x04, 0x3f, 0x05, 0x1b, 0x04, 0x5a, 0x04, + 0xc9, 0x03, 0x51, 0x04, 0x87, 0x04, 0x04, 0x06, 0x6b, 0x08, 0x80, 0x08, + 0xdb, 0x08, 0x06, 0x09, 0xd7, 0x08, 0x59, 0x09, 0x6e, 0x09, 0xf6, 0x07, + 0x03, 0x05, 0xf7, 0x01, 0x92, 0xff, 0x04, 0xfd, 0x40, 0xfb, 0x9f, 0xf9, + 0x03, 0xf7, 0x25, 0xf5, 0x40, 0xf4, 0x71, 0xf4, 0xf5, 0xf5, 0x5d, 0xf8, + 0x91, 0xf9, 0xf9, 0xfa, 0xe8, 0xfc, 0xea, 0xfe, 0x6b, 0x00, 0x1c, 0x02, + 0x62, 0x03, 0xad, 0x02, 0x50, 0x01, 0x1d, 0xff, 0xf7, 0xfc, 0x4f, 0xfb, + 0x11, 0xfa, 0xc4, 0xf9, 0xed, 0xf6, 0x50, 0xf3, 0x94, 0xf2, 0xee, 0xf0, + 0x8f, 0xf2, 0x7a, 0xf3, 0xfc, 0xf3, 0xde, 0xf1, 0x05, 0xf1, 0x7a, 0xf0, + 0xc2, 0xef, 0x89, 0xf0, 0xfc, 0xee, 0x6f, 0xec, 0x9b, 0xeb, 0xc4, 0xed, + 0x09, 0xf1, 0xb9, 0xf4, 0x8f, 0xf6, 0xc6, 0xf9, 0xe0, 0xff, 0xfc, 0x06, + 0x99, 0x0d, 0x9e, 0x11, 0xfd, 0x12, 0x01, 0x16, 0x22, 0x18, 0x2a, 0x18, + 0xd6, 0x16, 0x44, 0x14, 0x47, 0x0f, 0x05, 0x0a, 0x08, 0x04, 0xc9, 0xfe, + 0x57, 0xfb, 0x11, 0xf9, 0x91, 0xf6, 0x05, 0xf3, 0x1c, 0xf1, 0x97, 0xf1, + 0x18, 0xf5, 0x33, 0xf9, 0xc0, 0xfa, 0x21, 0xfc, 0xd3, 0xfe, 0x83, 0x01, + 0xa0, 0x04, 0xcc, 0x05, 0x48, 0x04, 0x21, 0x04, 0x74, 0x03, 0x93, 0x02, + 0x31, 0x01, 0x0f, 0xff, 0x7a, 0xfe, 0xb0, 0xfd, 0x4a, 0xfe, 0x29, 0x00, + 0x53, 0x01, 0xfa, 0x03, 0xaf, 0x07, 0x56, 0x0b, 0xfe, 0x0d, 0x8f, 0x10, + 0xd3, 0x11, 0x08, 0x13, 0xba, 0x14, 0x48, 0x13, 0xd7, 0x0f, 0xd9, 0x0c, + 0x67, 0x09, 0xc0, 0x06, 0x32, 0x03, 0xbd, 0xfd, 0x12, 0xf9, 0x9a, 0xf6, + 0x93, 0xf5, 0xc7, 0xf5, 0xba, 0xf5, 0x80, 0xf4, 0x0d, 0xf5, 0xc9, 0xf7, + 0x9c, 0xfb, 0xb9, 0xff, 0x1b, 0x01, 0xbc, 0x01, 0x03, 0x04, 0x33, 0x06, + 0x05, 0x08, 0xce, 0x08, 0x25, 0x08, 0x89, 0x07, 0x17, 0x07, 0xd3, 0x05, + 0x89, 0x05, 0xfd, 0x05, 0x69, 0x06, 0x5b, 0x06, 0x6d, 0x05, 0x31, 0x05, + 0x85, 0x06, 0x39, 0x08, 0x06, 0x09, 0x14, 0x08, 0x94, 0x06, 0x34, 0x05, + 0x77, 0x05, 0x07, 0x05, 0x3e, 0x02, 0x08, 0xff, 0x37, 0xfc, 0xd2, 0xfa, + 0xe1, 0xf9, 0x7f, 0xf8, 0xf3, 0xf6, 0x20, 0xf6, 0xcf, 0xf6, 0x5e, 0xf8, + 0x38, 0xf9, 0xec, 0xfa, 0x91, 0xfd, 0x7d, 0xff, 0xef, 0x00, 0xf4, 0x01, + 0xcc, 0x02, 0xe3, 0x03, 0xe6, 0x03, 0xe5, 0x02, 0xd0, 0x00, 0xf2, 0xfd, + 0xb0, 0xfc, 0x70, 0xfa, 0xb2, 0xf8, 0x2e, 0xf6, 0xd3, 0xf3, 0x45, 0xf2, + 0x2b, 0xf1, 0xd6, 0xef, 0x33, 0xf0, 0x9b, 0xef, 0xfa, 0xee, 0x51, 0xef, + 0x37, 0xee, 0x89, 0xec, 0x95, 0xea, 0xaa, 0xea, 0x7c, 0xec, 0x3c, 0xf0, + 0x6e, 0xf4, 0x95, 0xf4, 0xd4, 0xf4, 0x06, 0xfb, 0xe2, 0x02, 0x70, 0x0a, + 0xa7, 0x0f, 0x4b, 0x10, 0x39, 0x11, 0x3c, 0x15, 0x78, 0x18, 0x31, 0x18, + 0xdb, 0x15, 0xe5, 0x11, 0xa8, 0x0d, 0xe1, 0x08, 0xf3, 0x02, 0x56, 0xfe, + 0xf6, 0xfa, 0x82, 0xf8, 0x0f, 0xf5, 0x93, 0xf0, 0x20, 0xef, 0xbc, 0xf1, + 0x31, 0xf5, 0x08, 0xf7, 0xdb, 0xf7, 0x88, 0xf9, 0xcc, 0xfd, 0x1b, 0x02, + 0xa9, 0x03, 0x02, 0x03, 0x8d, 0x02, 0xb4, 0x03, 0x91, 0x04, 0x03, 0x03, + 0x6c, 0xff, 0xcf, 0xfc, 0x5d, 0xfc, 0xff, 0xfd, 0x7b, 0xfe, 0x93, 0xfe, + 0x61, 0xff, 0x94, 0x01, 0x01, 0x05, 0xa4, 0x09, 0x81, 0x0d, 0x80, 0x10, + 0x3f, 0x13, 0x2e, 0x14, 0x46, 0x14, 0xa6, 0x14, 0x4d, 0x14, 0xa3, 0x12, + 0xda, 0x0e, 0x7e, 0x09, 0x97, 0x04, 0x32, 0x00, 0x79, 0xfd, 0x60, 0xfa, + 0x59, 0xf6, 0x7e, 0xf3, 0xf7, 0xf1, 0xb1, 0xf2, 0x5d, 0xf4, 0x10, 0xf6, + 0xe9, 0xf7, 0xc2, 0xfa, 0xea, 0xfd, 0xb9, 0x00, 0xb6, 0x03, 0xf0, 0x05, + 0x8f, 0x07, 0xbd, 0x09, 0xd8, 0x09, 0x4a, 0x09, 0x29, 0x09, 0x15, 0x08, + 0x11, 0x08, 0x1f, 0x08, 0x24, 0x07, 0xbd, 0x05, 0x1b, 0x05, 0x8c, 0x05, + 0x9b, 0x06, 0x74, 0x07, 0xfa, 0x07, 0xc5, 0x06, 0xfd, 0x05, 0x13, 0x07, + 0x7f, 0x06, 0x6e, 0x05, 0x01, 0x04, 0xc8, 0x00, 0xe3, 0xfe, 0x83, 0xfd, + 0x81, 0xfb, 0x7f, 0xf9, 0x81, 0xf8, 0x55, 0xf7, 0x4b, 0xf7, 0xc5, 0xf7, + 0x89, 0xf8, 0x27, 0xfa, 0xb4, 0xfc, 0xc5, 0xfe, 0xab, 0x00, 0x52, 0x02, + 0x45, 0x03, 0xf1, 0x04, 0x30, 0x06, 0x21, 0x05, 0xca, 0x03, 0xfc, 0x01, + 0x7a, 0xff, 0xf5, 0xfd, 0xb8, 0xfa, 0x1a, 0xf8, 0x80, 0xf5, 0x82, 0xf2, + 0x00, 0xf1, 0xf7, 0xee, 0x92, 0xed, 0x8a, 0xed, 0x94, 0xec, 0xcc, 0xeb, + 0x90, 0xec, 0x0d, 0xeb, 0x6a, 0xea, 0x52, 0xea, 0x22, 0xea, 0xd7, 0xed, + 0xd7, 0xf1, 0x20, 0xf4, 0x7e, 0xf5, 0xb9, 0xf8, 0x94, 0xfd, 0x36, 0x05, + 0xbb, 0x0b, 0xb8, 0x0e, 0x09, 0x10, 0x33, 0x12, 0x4d, 0x14, 0x12, 0x16, + 0x69, 0x16, 0x72, 0x14, 0x6c, 0x10, 0x64, 0x0b, 0x4a, 0x06, 0x3d, 0x02, + 0xdb, 0xff, 0x97, 0xfc, 0x2c, 0xf8, 0x56, 0xf3, 0x6e, 0xf0, 0x58, 0xf1, + 0xfe, 0xf3, 0x5d, 0xf5, 0x8e, 0xf5, 0x59, 0xf6, 0x18, 0xf9, 0xd4, 0xfc, + 0x26, 0x00, 0x84, 0x01, 0xe7, 0x00, 0x5e, 0x01, 0xd5, 0x01, 0x7c, 0x01, + 0x4c, 0x01, 0x2f, 0x00, 0xe9, 0xfd, 0xba, 0xfc, 0x57, 0xfc, 0xf9, 0xfc, + 0xb7, 0xff, 0x8e, 0x01, 0x22, 0x02, 0x2d, 0x04, 0x0e, 0x08, 0xae, 0x0c, + 0x6b, 0x11, 0x13, 0x13, 0x78, 0x13, 0x53, 0x14, 0x16, 0x15, 0xa1, 0x15, + 0x54, 0x14, 0xcf, 0x10, 0x95, 0x0c, 0x2a, 0x08, 0xe8, 0x03, 0xc9, 0x00, + 0x44, 0xfd, 0xb9, 0xf9, 0x5b, 0xf6, 0xa8, 0xf3, 0x0b, 0xf3, 0xea, 0xf3, + 0x75, 0xf5, 0xf1, 0xf6, 0x8e, 0xf8, 0xe8, 0xfa, 0xe6, 0xfd, 0xdc, 0x00, + 0xea, 0x03, 0x48, 0x06, 0xee, 0x07, 0xf8, 0x08, 0x33, 0x09, 0x80, 0x09, + 0x1f, 0x0a, 0xfd, 0x09, 0x16, 0x09, 0x15, 0x08, 0x43, 0x07, 0x86, 0x06, + 0x7c, 0x06, 0x2a, 0x06, 0xf4, 0x05, 0x46, 0x06, 0xc0, 0x05, 0x46, 0x05, + 0x47, 0x05, 0xcc, 0x04, 0x98, 0x04, 0x77, 0x03, 0xa3, 0x01, 0x7e, 0x00, + 0x1a, 0xff, 0x8b, 0xfd, 0x1f, 0xfc, 0xe3, 0xfa, 0x03, 0xfa, 0xcf, 0xf9, + 0x94, 0xf9, 0xb7, 0xf9, 0xd4, 0xfa, 0x73, 0xfc, 0xc0, 0xfd, 0x85, 0xff, + 0xeb, 0x00, 0x2b, 0x02, 0x9a, 0x03, 0x22, 0x04, 0xd8, 0x03, 0xd8, 0x02, + 0x08, 0x02, 0x9c, 0x00, 0x4e, 0xfd, 0xc7, 0xfb, 0xd2, 0xf8, 0xac, 0xf5, + 0x61, 0xf4, 0x38, 0xf1, 0x79, 0xee, 0x19, 0xee, 0x8b, 0xec, 0xf6, 0xec, + 0x91, 0xeb, 0xa6, 0xea, 0x34, 0xeb, 0xdc, 0xe9, 0xca, 0xea, 0xb3, 0xeb, + 0xe1, 0xec, 0x1a, 0xf0, 0xd8, 0xf3, 0x66, 0xf5, 0xdb, 0xf7, 0xdb, 0xfb, + 0xf7, 0x01, 0xd7, 0x08, 0x7f, 0x0c, 0xd4, 0x0c, 0x13, 0x0e, 0xc7, 0x11, + 0x47, 0x15, 0x51, 0x16, 0x92, 0x13, 0x4d, 0x0f, 0xc7, 0x0c, 0x00, 0x0a, + 0x02, 0x07, 0xf9, 0x02, 0x9f, 0xfe, 0xc2, 0xfa, 0x28, 0xf7, 0xf9, 0xf3, + 0x1e, 0xf2, 0x92, 0xf2, 0x18, 0xf4, 0xb8, 0xf4, 0x6c, 0xf4, 0x08, 0xf5, + 0x83, 0xf7, 0xbc, 0xfb, 0x53, 0xff, 0x8c, 0xff, 0x0f, 0xff, 0x9f, 0xff, + 0x8c, 0x00, 0xdb, 0x01, 0x03, 0x02, 0xcd, 0x00, 0xd3, 0xff, 0xfd, 0xfe, + 0xba, 0xfe, 0x4e, 0xff, 0x48, 0x01, 0x7a, 0x03, 0xe1, 0x04, 0xbc, 0x05, + 0x79, 0x07, 0xb4, 0x0a, 0xe3, 0x0e, 0xdd, 0x11, 0xa3, 0x12, 0xc6, 0x12, + 0x16, 0x12, 0x66, 0x12, 0xd7, 0x12, 0xd5, 0x10, 0xce, 0x0d, 0x3a, 0x0a, + 0x7c, 0x05, 0x61, 0x02, 0x8e, 0xff, 0x49, 0xfc, 0xec, 0xf9, 0x3a, 0xf7, + 0x58, 0xf5, 0x7a, 0xf4, 0xeb, 0xf4, 0xc8, 0xf6, 0x9d, 0xf8, 0x8e, 0xfa, + 0x8a, 0xfc, 0xe9, 0xfe, 0xd4, 0x01, 0x9e, 0x04, 0x27, 0x07, 0xa4, 0x08, + 0xab, 0x09, 0x67, 0x0a, 0x66, 0x0a, 0x92, 0x0a, 0x54, 0x0a, 0xa3, 0x09, + 0xad, 0x08, 0x48, 0x07, 0x8c, 0x06, 0xcf, 0x05, 0xf9, 0x04, 0xbc, 0x04, + 0x27, 0x04, 0x48, 0x03, 0x9a, 0x02, 0x8b, 0x02, 0x4c, 0x02, 0x86, 0x01, + 0xb0, 0x00, 0x8d, 0xff, 0xd3, 0xfe, 0x6a, 0xfe, 0x99, 0xfd, 0x86, 0xfc, + 0x2b, 0xfc, 0xdc, 0xfb, 0x93, 0xfb, 0x18, 0xfc, 0xa5, 0xfc, 0x65, 0xfd, + 0x37, 0xfe, 0x20, 0xff, 0x2e, 0x00, 0x3e, 0x01, 0xe6, 0x01, 0xfd, 0x01, + 0x74, 0x01, 0xff, 0x00, 0x88, 0x00, 0xf7, 0xfe, 0x46, 0xfd, 0xa5, 0xfb, + 0x61, 0xf8, 0x96, 0xf6, 0xcd, 0xf5, 0x9a, 0xf2, 0x06, 0xf1, 0x75, 0xef, + 0xe5, 0xec, 0xbb, 0xec, 0xfd, 0xec, 0xd8, 0xeb, 0xca, 0xea, 0xf0, 0xe9, + 0xa9, 0xe8, 0xc7, 0xe9, 0xe6, 0xeb, 0xc4, 0xef, 0x38, 0xf2, 0x7a, 0xf3, + 0x39, 0xf6, 0xd5, 0xfa, 0x4a, 0x00, 0xa2, 0x06, 0xcf, 0x0a, 0x7a, 0x0c, + 0x92, 0x0f, 0x1a, 0x12, 0xda, 0x13, 0x2c, 0x15, 0x90, 0x14, 0x0d, 0x12, + 0x64, 0x0f, 0x39, 0x0b, 0xe0, 0x07, 0x50, 0x04, 0x92, 0x00, 0x1b, 0xfd, + 0x11, 0xf9, 0x83, 0xf5, 0x73, 0xf3, 0x1e, 0xf3, 0x65, 0xf3, 0xdb, 0xf3, + 0x22, 0xf4, 0x47, 0xf5, 0x6f, 0xf7, 0x05, 0xfa, 0x76, 0xfb, 0x7e, 0xfd, + 0x37, 0xff, 0x00, 0x00, 0xe8, 0x00, 0xa7, 0x00, 0x57, 0x00, 0x9f, 0x01, + 0xa2, 0x01, 0x59, 0x00, 0x58, 0xff, 0x7f, 0xff, 0x15, 0x01, 0x92, 0x02, + 0xd0, 0x03, 0xd2, 0x04, 0x1d, 0x06, 0xf6, 0x08, 0x6e, 0x0c, 0x04, 0x0f, + 0x80, 0x10, 0x94, 0x11, 0x60, 0x12, 0x55, 0x13, 0xe9, 0x13, 0xcc, 0x12, + 0xa7, 0x10, 0xe1, 0x0d, 0x0d, 0x0b, 0x0e, 0x08, 0xd8, 0x04, 0x4a, 0x01, + 0xcc, 0xfd, 0xf3, 0xfa, 0x87, 0xf8, 0xb2, 0xf6, 0x98, 0xf5, 0xbb, 0xf5, + 0xaf, 0xf6, 0x35, 0xf7, 0xb4, 0xf8, 0xf6, 0xfa, 0xd5, 0xfd, 0x64, 0x00, + 0xa6, 0x02, 0x68, 0x04, 0x78, 0x06, 0xd1, 0x08, 0xbf, 0x09, 0xd4, 0x09, + 0x0d, 0x0a, 0x4e, 0x0a, 0x24, 0x0a, 0x2e, 0x09, 0xdf, 0x07, 0xae, 0x06, + 0xd5, 0x05, 0x43, 0x05, 0x1e, 0x04, 0x5f, 0x03, 0x82, 0x02, 0x6b, 0x01, + 0xbc, 0x00, 0x25, 0x00, 0x40, 0x00, 0x07, 0x00, 0x12, 0xff, 0xdf, 0xfd, + 0x41, 0xfd, 0x59, 0xfd, 0x59, 0xfd, 0xdc, 0xfd, 0x2f, 0xfd, 0x31, 0xfc, + 0xba, 0xfc, 0x5c, 0xfd, 0x63, 0xfe, 0x76, 0xff, 0xe3, 0xff, 0xec, 0xff, + 0xf7, 0xff, 0xbd, 0x00, 0x16, 0x01, 0x16, 0x01, 0x5e, 0x00, 0x35, 0xff, + 0x26, 0xfd, 0xa8, 0xfb, 0x53, 0xfa, 0xab, 0xf7, 0x13, 0xf6, 0xb5, 0xf3, + 0xe0, 0xf0, 0x81, 0xef, 0x50, 0xee, 0xb0, 0xeb, 0x38, 0xec, 0xe0, 0xea, + 0x89, 0xe9, 0x8c, 0xea, 0xf5, 0xe8, 0x5b, 0xe9, 0x8d, 0xeb, 0x2a, 0xee, + 0x19, 0xf2, 0xab, 0xf5, 0x63, 0xf7, 0xd4, 0xfa, 0xef, 0xff, 0x41, 0x05, + 0xac, 0x0a, 0xbe, 0x0d, 0x9c, 0x0e, 0xc6, 0x10, 0x1c, 0x13, 0x80, 0x14, + 0x65, 0x14, 0x18, 0x12, 0x4e, 0x10, 0x23, 0x0e, 0xf7, 0x09, 0xe5, 0x05, + 0xdd, 0x01, 0x99, 0xff, 0xdc, 0xfd, 0x62, 0xfa, 0x53, 0xf6, 0xed, 0xf3, + 0x71, 0xf4, 0xe5, 0xf4, 0x0d, 0xf6, 0x70, 0xf6, 0x23, 0xf6, 0x86, 0xf7, + 0x0c, 0xfa, 0xed, 0xfb, 0x7e, 0xfd, 0xbd, 0xfe, 0xf0, 0xfe, 0x76, 0xff, + 0xe9, 0xff, 0xb4, 0xff, 0xd9, 0xff, 0x1e, 0x00, 0x40, 0x00, 0x13, 0x00, + 0xe3, 0xff, 0x8c, 0x00, 0x39, 0x02, 0xf8, 0x03, 0x04, 0x06, 0x0e, 0x08, + 0xef, 0x09, 0xae, 0x0c, 0x0f, 0x0f, 0x65, 0x10, 0x43, 0x12, 0xb6, 0x13, + 0x0f, 0x14, 0x3d, 0x14, 0x93, 0x12, 0xec, 0x0f, 0xf2, 0x0d, 0x9c, 0x0b, + 0xff, 0x08, 0x92, 0x05, 0x0e, 0x01, 0x26, 0xfd, 0x88, 0xfa, 0xb7, 0xf8, + 0x22, 0xf7, 0xe7, 0xf5, 0x02, 0xf5, 0x25, 0xf5, 0xbc, 0xf6, 0xee, 0xf7, + 0xe4, 0xf9, 0xbe, 0xfc, 0x98, 0xfe, 0x39, 0x01, 0x4e, 0x03, 0xb0, 0x04, + 0x69, 0x06, 0xe5, 0x07, 0x9e, 0x08, 0xd8, 0x08, 0x95, 0x08, 0x31, 0x08, + 0x6d, 0x07, 0x61, 0x06, 0x96, 0x05, 0xc7, 0x04, 0x8f, 0x04, 0xba, 0x03, + 0x33, 0x02, 0xd2, 0x00, 0x18, 0x01, 0x8a, 0x01, 0x2f, 0x01, 0xad, 0x00, + 0x2a, 0x00, 0x9b, 0xff, 0xe7, 0xff, 0xa2, 0xff, 0x3b, 0xff, 0x9a, 0xff, + 0x5a, 0xff, 0xce, 0xfe, 0x60, 0xfe, 0x5d, 0xfe, 0x42, 0xff, 0xee, 0xff, + 0x01, 0x00, 0xef, 0xff, 0x29, 0x00, 0x48, 0x00, 0x27, 0x01, 0x45, 0x01, + 0x82, 0x00, 0x02, 0x00, 0x0a, 0xff, 0x9c, 0xfd, 0x07, 0xfd, 0xb6, 0xfb, + 0xc9, 0xf8, 0x73, 0xf7, 0x44, 0xf5, 0x4d, 0xf3, 0x3a, 0xf2, 0xa7, 0xf0, + 0xb2, 0xee, 0xa9, 0xed, 0x1f, 0xec, 0x83, 0xeb, 0xc7, 0xeb, 0x0b, 0xec, + 0x14, 0xeb, 0x76, 0xea, 0xad, 0xeb, 0x28, 0xef, 0x24, 0xf3, 0x94, 0xf6, + 0xd3, 0xf7, 0x4a, 0xfa, 0x1e, 0xff, 0xec, 0x03, 0x04, 0x0a, 0x5c, 0x0d, + 0x62, 0x0e, 0x54, 0x10, 0xbc, 0x11, 0xf7, 0x12, 0x39, 0x14, 0xab, 0x13, + 0x53, 0x11, 0x75, 0x0d, 0xd6, 0x09, 0xe2, 0x06, 0xfe, 0x04, 0x4c, 0x02, + 0x11, 0xfe, 0xe8, 0xf9, 0xfc, 0xf6, 0x26, 0xf6, 0x0e, 0xf6, 0xc9, 0xf5, + 0x94, 0xf4, 0xa3, 0xf4, 0xc7, 0xf5, 0xdc, 0xf7, 0xbf, 0xf9, 0x74, 0xfa, + 0x33, 0xfb, 0xb2, 0xfc, 0x61, 0xfe, 0xdf, 0xfe, 0xe2, 0xfe, 0x0d, 0xff, + 0x16, 0xff, 0x81, 0xff, 0xa8, 0xff, 0x60, 0xff, 0xa8, 0xff, 0x8b, 0x00, + 0x0d, 0x02, 0xfb, 0x02, 0xd0, 0x04, 0xdd, 0x06, 0x53, 0x08, 0x07, 0x0b, + 0x99, 0x0d, 0x10, 0x0f, 0x09, 0x11, 0xe9, 0x11, 0x9c, 0x12, 0x2d, 0x13, + 0xd7, 0x12, 0xc0, 0x11, 0x0a, 0x10, 0x55, 0x0d, 0x8b, 0x0a, 0xda, 0x07, + 0xde, 0x04, 0xec, 0x01, 0xe8, 0xfe, 0xbf, 0xfb, 0x38, 0xf9, 0x9d, 0xf7, + 0xd4, 0xf6, 0x2f, 0xf6, 0x9f, 0xf6, 0x20, 0xf7, 0xbd, 0xf7, 0x3d, 0xf9, + 0xd0, 0xfa, 0x35, 0xfd, 0xbe, 0xff, 0x65, 0x01, 0xa8, 0x02, 0xe9, 0x03, + 0x0f, 0x05, 0x19, 0x06, 0xbe, 0x06, 0xe6, 0x06, 0xb6, 0x06, 0x46, 0x06, + 0x4c, 0x05, 0x52, 0x04, 0x11, 0x04, 0x77, 0x03, 0xe4, 0x02, 0x4f, 0x02, + 0x67, 0x01, 0xae, 0x00, 0x19, 0x00, 0x05, 0x00, 0xbe, 0x00, 0xd0, 0x00, + 0x56, 0x00, 0x08, 0x00, 0x5c, 0xff, 0x74, 0xff, 0xd5, 0x00, 0x3c, 0x01, + 0xf2, 0x00, 0xc1, 0x00, 0x2d, 0x00, 0x83, 0x00, 0x5b, 0x01, 0x13, 0x02, + 0x0b, 0x02, 0x98, 0x01, 0xac, 0x00, 0x4c, 0x00, 0x92, 0xff, 0xc8, 0xfe, + 0xbd, 0xfe, 0x50, 0xfd, 0x4c, 0xfb, 0xf8, 0xf8, 0x59, 0xf7, 0x71, 0xf6, + 0x8f, 0xf4, 0xcc, 0xf3, 0xce, 0xf2, 0xd7, 0xef, 0x97, 0xee, 0xae, 0xee, + 0x1a, 0xee, 0xaa, 0xed, 0xf5, 0xec, 0xc8, 0xeb, 0x67, 0xeb, 0xc5, 0xec, + 0x92, 0xee, 0xea, 0xef, 0x5f, 0xf1, 0x19, 0xf4, 0xea, 0xf7, 0x72, 0xfa, + 0x24, 0xff, 0x89, 0x03, 0x75, 0x05, 0xf4, 0x09, 0x3b, 0x0e, 0x7c, 0x0f, + 0x8f, 0x11, 0x44, 0x13, 0x5a, 0x12, 0x49, 0x12, 0x22, 0x12, 0x5d, 0x0f, + 0x45, 0x0c, 0xc5, 0x08, 0x13, 0x05, 0x54, 0x03, 0x91, 0x00, 0xa7, 0xfc, + 0x15, 0xf9, 0xb5, 0xf6, 0x01, 0xf6, 0x35, 0xf6, 0x72, 0xf5, 0x32, 0xf5, + 0x7c, 0xf5, 0x39, 0xf6, 0xbc, 0xf7, 0x78, 0xf9, 0xe8, 0xfa, 0x85, 0xfc, + 0x4c, 0xfd, 0xe7, 0xfc, 0x70, 0xfd, 0x07, 0xff, 0x01, 0x00, 0x05, 0x00, + 0x0e, 0xff, 0x21, 0xfe, 0x65, 0xff, 0xf0, 0x00, 0x9e, 0x01, 0x10, 0x02, + 0xfb, 0x02, 0x89, 0x04, 0xf4, 0x06, 0x3c, 0x09, 0xf5, 0x0a, 0x14, 0x0d, + 0xce, 0x0e, 0x5b, 0x10, 0x2d, 0x12, 0xf6, 0x12, 0xd2, 0x12, 0x45, 0x12, + 0x74, 0x11, 0xd3, 0x10, 0xd6, 0x0e, 0xa2, 0x0b, 0x3d, 0x08, 0xd7, 0x04, + 0xa8, 0x02, 0x52, 0x00, 0x0b, 0xfd, 0xed, 0xf9, 0xe3, 0xf7, 0x8b, 0xf6, + 0xd9, 0xf5, 0xf1, 0xf5, 0x5e, 0xf6, 0x14, 0xf7, 0xf9, 0xf7, 0x19, 0xf9, + 0xd7, 0xfa, 0x3b, 0xfd, 0xff, 0xff, 0xa4, 0x01, 0x56, 0x02, 0x77, 0x03, + 0xae, 0x04, 0x8f, 0x05, 0x57, 0x06, 0x52, 0x06, 0xa7, 0x05, 0x32, 0x05, + 0x2c, 0x04, 0x15, 0x03, 0x1f, 0x03, 0xce, 0x02, 0xfb, 0x01, 0x21, 0x01, + 0xfb, 0xff, 0x15, 0x00, 0x68, 0x00, 0xf0, 0x00, 0x10, 0x01, 0x9e, 0x00, + 0xe5, 0x00, 0x6b, 0x01, 0xf3, 0x01, 0x47, 0x02, 0xa8, 0x02, 0xa7, 0x02, + 0x12, 0x03, 0xd6, 0x02, 0x5c, 0x02, 0x7b, 0x02, 0x41, 0x02, 0x1d, 0x02, + 0xa5, 0x01, 0x6a, 0x00, 0x04, 0xff, 0x14, 0xfe, 0x1d, 0xfd, 0x09, 0xfc, + 0x28, 0xfb, 0x3b, 0xf9, 0x78, 0xf7, 0x41, 0xf6, 0x4f, 0xf4, 0xb2, 0xf3, + 0x0c, 0xf3, 0x94, 0xf1, 0x4e, 0xf0, 0xb2, 0xee, 0x01, 0xee, 0x12, 0xee, + 0x04, 0xee, 0x6b, 0xed, 0x2a, 0xec, 0xf3, 0xea, 0x45, 0xec, 0x45, 0xef, + 0x46, 0xf2, 0x4c, 0xf4, 0x40, 0xf5, 0x17, 0xf7, 0x8e, 0xfb, 0x6a, 0x01, + 0x9c, 0x06, 0xbf, 0x09, 0x23, 0x0b, 0x26, 0x0d, 0x27, 0x10, 0x49, 0x13, + 0xfb, 0x14, 0xc6, 0x14, 0x63, 0x13, 0xec, 0x10, 0x33, 0x0e, 0x5b, 0x0b, + 0x41, 0x09, 0x8d, 0x07, 0x27, 0x04, 0x54, 0xff, 0x97, 0xfa, 0x8c, 0xf8, + 0x5e, 0xf8, 0xbf, 0xf7, 0xae, 0xf6, 0x4b, 0xf5, 0x73, 0xf4, 0xb7, 0xf5, + 0x5d, 0xf7, 0x7c, 0xf8, 0x83, 0xf9, 0xee, 0xfa, 0x13, 0xfc, 0x8b, 0xfc, + 0x53, 0xfd, 0x9a, 0xfd, 0x0b, 0xfe, 0x00, 0xff, 0x75, 0xff, 0x20, 0xff, + 0x96, 0xfe, 0x3a, 0xfe, 0x05, 0xff, 0xcf, 0x00, 0xdb, 0x02, 0x03, 0x04, + 0x34, 0x04, 0x2e, 0x05, 0xdc, 0x07, 0xfe, 0x0b, 0x90, 0x0e, 0xe9, 0x0f, + 0x71, 0x10, 0x29, 0x11, 0x25, 0x13, 0xdc, 0x14, 0x96, 0x14, 0x77, 0x13, + 0x9c, 0x11, 0xdf, 0x0e, 0xa6, 0x0c, 0x47, 0x0a, 0x97, 0x07, 0xc8, 0x04, + 0xf4, 0x00, 0x26, 0xfd, 0x45, 0xfa, 0x6e, 0xf8, 0x68, 0xf7, 0x9a, 0xf6, + 0x6f, 0xf5, 0x7e, 0xf4, 0xd1, 0xf4, 0x18, 0xf6, 0x41, 0xf8, 0x08, 0xfa, + 0x9e, 0xfb, 0x08, 0xfd, 0xad, 0xfe, 0xc3, 0x00, 0x6b, 0x02, 0xf6, 0x03, + 0xdd, 0x04, 0xf7, 0x04, 0xc0, 0x05, 0xdc, 0x05, 0x08, 0x05, 0xff, 0x04, + 0x58, 0x04, 0xbc, 0x03, 0x23, 0x03, 0x1d, 0x02, 0xef, 0x00, 0xae, 0x00, + 0xcb, 0x00, 0x54, 0x00, 0x42, 0x00, 0x58, 0x00, 0x7f, 0x00, 0xcb, 0x00, + 0x5e, 0x01, 0xd6, 0x01, 0xb4, 0x02, 0x96, 0x03, 0x79, 0x03, 0x99, 0x03, + 0x2f, 0x04, 0x38, 0x04, 0x2e, 0x04, 0x1f, 0x04, 0xb9, 0x02, 0xde, 0x01, + 0x19, 0x01, 0x33, 0xff, 0xd1, 0xfd, 0x94, 0xfc, 0x2b, 0xfa, 0xd4, 0xf8, + 0x36, 0xf7, 0x88, 0xf4, 0x4d, 0xf3, 0x9e, 0xf1, 0x76, 0xf0, 0xee, 0xef, + 0x76, 0xee, 0xb3, 0xed, 0x10, 0xed, 0x1a, 0xec, 0x6a, 0xec, 0x42, 0xec, + 0xf0, 0xeb, 0x74, 0xec, 0x28, 0xed, 0xc9, 0xee, 0xe9, 0xf2, 0xc9, 0xf4, + 0xa9, 0xf5, 0x7d, 0xf8, 0xa6, 0xfc, 0x51, 0x02, 0x74, 0x07, 0xce, 0x08, + 0x22, 0x0a, 0xd7, 0x0c, 0xf4, 0x10, 0xbd, 0x14, 0x0a, 0x15, 0x61, 0x13, + 0x6f, 0x11, 0x78, 0x10, 0x40, 0x10, 0x0d, 0x0f, 0xc9, 0x0b, 0xa4, 0x07, + 0x9c, 0x03, 0x85, 0x00, 0xfb, 0xfe, 0x84, 0xfd, 0x91, 0xfb, 0xb1, 0xf9, + 0x42, 0xf7, 0xe7, 0xf5, 0xda, 0xf6, 0x61, 0xf8, 0x06, 0xf9, 0xd1, 0xf8, + 0x49, 0xf8, 0xa4, 0xf8, 0x2d, 0xfa, 0x90, 0xfb, 0x41, 0xfc, 0x2c, 0xfc, + 0x84, 0xfb, 0x93, 0xfa, 0xd7, 0xfa, 0x5b, 0xfc, 0x4c, 0xfd, 0xf7, 0xfc, + 0x41, 0xfc, 0xab, 0xfc, 0xfd, 0xfe, 0xce, 0x01, 0x29, 0x03, 0x50, 0x04, + 0x8a, 0x06, 0x68, 0x09, 0x43, 0x0c, 0xb1, 0x0e, 0x08, 0x10, 0x72, 0x11, + 0x30, 0x13, 0x93, 0x14, 0xcc, 0x14, 0xaf, 0x13, 0x43, 0x12, 0x97, 0x10, + 0xfa, 0x0e, 0x11, 0x0d, 0xf0, 0x09, 0xb7, 0x06, 0x74, 0x03, 0x48, 0x00, + 0x85, 0xfd, 0xcc, 0xfb, 0x7f, 0xfa, 0x31, 0xf9, 0x3c, 0xf7, 0x99, 0xf5, + 0xc3, 0xf5, 0x67, 0xf7, 0xf1, 0xf8, 0xd6, 0xf9, 0xd4, 0xf9, 0x5a, 0xfa, + 0x3b, 0xfc, 0x5f, 0xfe, 0x34, 0x00, 0x2b, 0x01, 0xfd, 0x00, 0x2c, 0x01, + 0xdd, 0x01, 0x89, 0x02, 0xf1, 0x02, 0xc9, 0x02, 0x34, 0x02, 0xc8, 0x01, + 0x50, 0x01, 0xe4, 0x00, 0x1d, 0x01, 0x55, 0x01, 0x49, 0x01, 0x02, 0x01, + 0xc1, 0x00, 0x75, 0x01, 0x15, 0x02, 0x79, 0x02, 0x43, 0x03, 0xb3, 0x03, + 0x05, 0x04, 0x86, 0x04, 0xde, 0x04, 0x16, 0x05, 0x14, 0x05, 0x60, 0x05, + 0x31, 0x05, 0x82, 0x04, 0x85, 0x03, 0x82, 0x02, 0x99, 0x01, 0x7d, 0x00, + 0x04, 0xff, 0x9f, 0xfd, 0x83, 0xfb, 0x92, 0xf9, 0x5f, 0xf8, 0x6c, 0xf6, + 0x92, 0xf4, 0x70, 0xf3, 0xb4, 0xf1, 0x30, 0xf0, 0x9e, 0xef, 0xd3, 0xee, + 0x49, 0xed, 0xfb, 0xec, 0x9d, 0xec, 0xd3, 0xeb, 0xc1, 0xeb, 0x7a, 0xeb, + 0x2a, 0xec, 0xab, 0xed, 0x97, 0xef, 0x0e, 0xf1, 0x5c, 0xf3, 0x0e, 0xf6, + 0x92, 0xf9, 0x4e, 0xfd, 0xc2, 0x00, 0xee, 0x04, 0xeb, 0x08, 0x4e, 0x0b, + 0x84, 0x0d, 0x11, 0x10, 0xab, 0x12, 0x18, 0x14, 0x21, 0x14, 0x9b, 0x12, + 0xdf, 0x10, 0xf6, 0x0f, 0x72, 0x0e, 0xe0, 0x0b, 0xfb, 0x08, 0xb1, 0x05, + 0x65, 0x02, 0x76, 0xff, 0x87, 0xfd, 0x9f, 0xfc, 0xbf, 0xfb, 0xc7, 0xf9, + 0x9f, 0xf7, 0x24, 0xf7, 0x11, 0xf8, 0x05, 0xfa, 0xc0, 0xfa, 0xbf, 0xf9, + 0x29, 0xf9, 0x28, 0xfa, 0x46, 0xfb, 0x55, 0xfc, 0xaf, 0xfc, 0x8f, 0xfb, + 0xd9, 0xfa, 0xa4, 0xfa, 0xc8, 0xfa, 0x0d, 0xfb, 0xc6, 0xfb, 0x22, 0xfc, + 0xee, 0xfb, 0x38, 0xfc, 0xad, 0xfd, 0x6a, 0x00, 0xf8, 0x02, 0x24, 0x05, + 0x78, 0x06, 0x63, 0x08, 0x55, 0x0b, 0x8d, 0x0e, 0x33, 0x11, 0x24, 0x12, + 0xda, 0x12, 0x6e, 0x13, 0xd5, 0x13, 0xa6, 0x13, 0xac, 0x12, 0x9d, 0x10, + 0x79, 0x0e, 0x62, 0x0c, 0x4c, 0x09, 0x3d, 0x06, 0xa1, 0x03, 0x4b, 0x01, + 0x1a, 0xff, 0xb1, 0xfc, 0x7d, 0xfa, 0x59, 0xf9, 0x84, 0xf8, 0x20, 0xf8, + 0x60, 0xf8, 0xde, 0xf8, 0x5b, 0xf9, 0xe5, 0xf9, 0xb7, 0xfa, 0x1a, 0xfc, + 0x81, 0xfd, 0x75, 0xfe, 0x26, 0xff, 0xa7, 0xff, 0x2d, 0x00, 0x8e, 0x00, + 0x6a, 0x00, 0x72, 0x00, 0xd4, 0x00, 0x5e, 0x00, 0x9f, 0xff, 0x47, 0xff, + 0xe0, 0xfe, 0x08, 0xff, 0x70, 0xff, 0x2e, 0xff, 0x40, 0xff, 0xc3, 0xff, + 0x32, 0x00, 0x28, 0x01, 0x49, 0x02, 0x2c, 0x03, 0x19, 0x04, 0xd9, 0x04, + 0x94, 0x05, 0x3c, 0x06, 0xb8, 0x06, 0x1f, 0x07, 0x41, 0x07, 0xdd, 0x06, + 0xe5, 0x05, 0x2d, 0x05, 0x13, 0x04, 0xc2, 0x02, 0xa7, 0x01, 0xbc, 0xff, + 0xbf, 0xfd, 0xa7, 0xfb, 0xb0, 0xf9, 0x49, 0xf8, 0x79, 0xf6, 0x91, 0xf4, + 0x21, 0xf3, 0x62, 0xf1, 0x17, 0xf0, 0x5c, 0xef, 0x6e, 0xee, 0x98, 0xed, + 0x22, 0xed, 0x77, 0xec, 0x47, 0xeb, 0x54, 0xeb, 0x7b, 0xeb, 0x43, 0xec, + 0xb5, 0xed, 0x10, 0xef, 0x01, 0xf1, 0xff, 0xf2, 0x07, 0xf5, 0xbd, 0xf8, + 0xcf, 0xfc, 0xf5, 0x00, 0x73, 0x04, 0x9d, 0x06, 0xfa, 0x08, 0xd8, 0x0c, + 0x29, 0x10, 0x3a, 0x12, 0xfa, 0x12, 0x99, 0x12, 0x18, 0x12, 0xe8, 0x11, + 0x02, 0x11, 0x5d, 0x0f, 0x0d, 0x0d, 0x22, 0x0a, 0x57, 0x07, 0x8f, 0x04, + 0x9e, 0x02, 0x41, 0x01, 0x0e, 0xff, 0xcc, 0xfc, 0x51, 0xfb, 0x6a, 0xfa, + 0xae, 0xfa, 0xdc, 0xfa, 0xd0, 0xfa, 0x2a, 0xfa, 0xb4, 0xf9, 0x4e, 0xfa, + 0x29, 0xfb, 0xbf, 0xfb, 0xc1, 0xfb, 0xbf, 0xfa, 0x02, 0xfa, 0xec, 0xf9, + 0x64, 0xfa, 0xb2, 0xfa, 0x4a, 0xfa, 0xa5, 0xf9, 0x50, 0xf9, 0x37, 0xfa, + 0xec, 0xfb, 0x69, 0xfd, 0x8b, 0xfe, 0xa3, 0xff, 0xd9, 0x01, 0x9d, 0x04, + 0x04, 0x07, 0xca, 0x09, 0xd1, 0x0b, 0xaa, 0x0d, 0x43, 0x10, 0x86, 0x11, + 0x2a, 0x12, 0x01, 0x13, 0x3f, 0x13, 0x84, 0x12, 0x83, 0x11, 0x09, 0x10, + 0xc1, 0x0d, 0xa9, 0x0b, 0x97, 0x09, 0xea, 0x06, 0x2e, 0x04, 0x99, 0x01, + 0xc8, 0xff, 0x11, 0xfe, 0x23, 0xfc, 0x8e, 0xfa, 0xc4, 0xf9, 0x8e, 0xf9, + 0xb7, 0xf9, 0xb1, 0xf9, 0x92, 0xf9, 0x65, 0xfa, 0x6e, 0xfb, 0x21, 0xfc, + 0xe1, 0xfc, 0xc5, 0xfd, 0x4b, 0xfe, 0x93, 0xfe, 0xb8, 0xfe, 0x1d, 0xff, + 0x55, 0xff, 0x08, 0xff, 0x80, 0xfe, 0x2c, 0xfe, 0x16, 0xfe, 0xdc, 0xfd, + 0x90, 0xfd, 0xa7, 0xfd, 0xbd, 0xfd, 0xff, 0xfd, 0x92, 0xfe, 0x2a, 0xff, + 0x2c, 0x00, 0x52, 0x01, 0x53, 0x02, 0x78, 0x03, 0xb3, 0x04, 0xef, 0x05, + 0xde, 0x06, 0xb6, 0x07, 0x39, 0x08, 0x77, 0x08, 0x8c, 0x08, 0x40, 0x08, + 0x8f, 0x07, 0x65, 0x06, 0xc5, 0x04, 0x2d, 0x03, 0x4b, 0x01, 0x75, 0xff, + 0x7a, 0xfd, 0x4b, 0xfb, 0x25, 0xf9, 0xa4, 0xf6, 0x38, 0xf4, 0x01, 0xf3, + 0xd3, 0xf1, 0xbc, 0xf0, 0x32, 0xef, 0xb8, 0xec, 0x21, 0xec, 0x38, 0xec, + 0xdf, 0xeb, 0x3a, 0xeb, 0x8c, 0xea, 0x66, 0xea, 0xdd, 0xeb, 0x82, 0xed, + 0x17, 0xef, 0xf4, 0xf0, 0x16, 0xf3, 0xdc, 0xf5, 0x1d, 0xf9, 0x6b, 0xfc, + 0x15, 0x00, 0x50, 0x04, 0x2a, 0x07, 0x4a, 0x09, 0xaf, 0x0b, 0x33, 0x0e, + 0x52, 0x11, 0x1b, 0x13, 0x83, 0x12, 0x83, 0x11, 0xca, 0x10, 0x7a, 0x10, + 0xe9, 0x0f, 0x12, 0x0e, 0x22, 0x0b, 0x63, 0x08, 0x70, 0x06, 0x6f, 0x04, + 0xba, 0x02, 0x37, 0x01, 0x74, 0xff, 0x2c, 0xfe, 0x32, 0xfd, 0x0f, 0xfc, + 0x8f, 0xfb, 0xb5, 0xfb, 0xba, 0xfb, 0x9d, 0xfb, 0x21, 0xfb, 0x5e, 0xfa, + 0x64, 0xfa, 0xd8, 0xfa, 0x77, 0xfa, 0xad, 0xf9, 0x44, 0xf9, 0xac, 0xf8, + 0xb1, 0xf8, 0xbd, 0xf8, 0x8d, 0xf8, 0xee, 0xf8, 0x55, 0xf9, 0x49, 0xfa, + 0xcc, 0xfb, 0x24, 0xfd, 0x6b, 0xfe, 0xbb, 0x00, 0xac, 0x03, 0xee, 0x05, + 0xe8, 0x07, 0x18, 0x0a, 0x50, 0x0c, 0xdc, 0x0e, 0xda, 0x10, 0x68, 0x11, + 0x60, 0x11, 0xc7, 0x12, 0x25, 0x13, 0x09, 0x12, 0x05, 0x10, 0xa7, 0x0e, + 0x86, 0x0d, 0xd2, 0x0b, 0x23, 0x09, 0x30, 0x06, 0x0e, 0x04, 0x41, 0x02, + 0x75, 0x00, 0x23, 0xfe, 0x92, 0xfc, 0xb8, 0xfb, 0xde, 0xfa, 0x11, 0xfa, + 0x88, 0xf9, 0xa5, 0xf9, 0x50, 0xfa, 0xae, 0xfa, 0x02, 0xfb, 0x76, 0xfb, + 0xec, 0xfb, 0x5d, 0xfc, 0x3b, 0xfd, 0xbc, 0xfd, 0xd1, 0xfd, 0x9e, 0xfd, + 0x69, 0xfd, 0x72, 0xfd, 0xae, 0xfd, 0x8d, 0xfd, 0x28, 0xfd, 0xf1, 0xfc, + 0x28, 0xfd, 0x76, 0xfd, 0x81, 0xfd, 0xec, 0xfd, 0xde, 0xfe, 0xfd, 0xff, + 0xc5, 0x00, 0xb3, 0x01, 0xe1, 0x02, 0x1d, 0x04, 0x75, 0x05, 0xda, 0x06, + 0xbb, 0x07, 0xff, 0x07, 0x90, 0x08, 0xe1, 0x08, 0xc9, 0x08, 0xce, 0x08, + 0xb7, 0x07, 0xee, 0x05, 0xb9, 0x04, 0x1e, 0x03, 0x2a, 0x01, 0x47, 0xff, + 0x63, 0xfd, 0xc0, 0xfa, 0x8b, 0xf8, 0x61, 0xf6, 0x2b, 0xf4, 0x0c, 0xf3, + 0x52, 0xf1, 0x97, 0xef, 0xec, 0xed, 0x48, 0xec, 0x49, 0xeb, 0xe4, 0xea, + 0x47, 0xea, 0xc6, 0xe9, 0x5c, 0xe9, 0xc8, 0xe9, 0x6f, 0xeb, 0xdf, 0xed, + 0xa0, 0xef, 0x00, 0xf1, 0xc8, 0xf3, 0x5a, 0xf7, 0x9e, 0xfb, 0x75, 0xff, + 0x48, 0x02, 0x92, 0x05, 0xf4, 0x08, 0x52, 0x0b, 0xfc, 0x0d, 0xb5, 0x10, + 0x5b, 0x12, 0x09, 0x13, 0x18, 0x12, 0xe3, 0x10, 0xe0, 0x10, 0xcd, 0x10, + 0x87, 0x0f, 0xb2, 0x0c, 0x98, 0x09, 0x73, 0x07, 0x6e, 0x06, 0x44, 0x05, + 0x49, 0x03, 0xf1, 0x00, 0xba, 0xff, 0x49, 0xff, 0x7c, 0xfe, 0xba, 0xfd, + 0x75, 0xfd, 0x2c, 0xfd, 0x96, 0xfc, 0x58, 0xfc, 0x08, 0xfc, 0xc1, 0xfb, + 0xc2, 0xfb, 0xa0, 0xfa, 0x4b, 0xf9, 0xe3, 0xf8, 0xfa, 0xf8, 0x07, 0xf9, + 0x19, 0xf8, 0xe8, 0xf6, 0x99, 0xf6, 0x3f, 0xf7, 0x99, 0xf8, 0xfb, 0xf9, + 0xba, 0xfa, 0xa0, 0xfb, 0x64, 0xfd, 0x01, 0x00, 0xf9, 0x02, 0xdf, 0x05, + 0x55, 0x08, 0x52, 0x0a, 0x73, 0x0c, 0x6c, 0x0e, 0x8f, 0x10, 0x58, 0x12, + 0x40, 0x13, 0x9b, 0x13, 0x14, 0x13, 0xfa, 0x11, 0x43, 0x11, 0x0f, 0x10, + 0x69, 0x0e, 0x88, 0x0c, 0xb7, 0x09, 0xf0, 0x06, 0xe9, 0x04, 0xc9, 0x02, + 0xb0, 0x00, 0xf1, 0xfe, 0x17, 0xfd, 0xb8, 0xfb, 0xea, 0xfa, 0x30, 0xfa, + 0x6b, 0xf9, 0x65, 0xf9, 0xd4, 0xf9, 0x3a, 0xfa, 0x8d, 0xfa, 0xa1, 0xfa, + 0xd5, 0xfa, 0x69, 0xfb, 0xec, 0xfb, 0x7e, 0xfc, 0x6a, 0xfc, 0x17, 0xfc, + 0xe3, 0xfb, 0x99, 0xfb, 0xbe, 0xfb, 0xf9, 0xfb, 0xce, 0xfb, 0xa5, 0xfb, + 0xb4, 0xfb, 0xf9, 0xfb, 0xab, 0xfc, 0xe9, 0xfd, 0x0c, 0xff, 0x07, 0x00, + 0x0d, 0x01, 0x48, 0x02, 0x27, 0x04, 0x3c, 0x06, 0x77, 0x07, 0x68, 0x08, + 0x60, 0x09, 0x34, 0x0a, 0xbe, 0x0a, 0x0e, 0x0b, 0xf8, 0x0a, 0x34, 0x0a, + 0xc2, 0x08, 0x4a, 0x07, 0x89, 0x05, 0xd5, 0x03, 0xf0, 0x01, 0x6f, 0xff, + 0xf2, 0xfc, 0x31, 0xfa, 0xc6, 0xf7, 0xb5, 0xf5, 0xb9, 0xf3, 0xc4, 0xf1, + 0xde, 0xef, 0xf0, 0xed, 0xa4, 0xec, 0x7c, 0xeb, 0x64, 0xea, 0x34, 0xe9, + 0xaf, 0xe8, 0xc8, 0xe8, 0x6d, 0xe9, 0x7c, 0xea, 0x5d, 0xeb, 0x6e, 0xed, + 0x30, 0xef, 0xb1, 0xf1, 0xe4, 0xf4, 0x65, 0xf8, 0x38, 0xfc, 0x46, 0xff, + 0xf1, 0x01, 0xe9, 0x04, 0x9d, 0x08, 0x1b, 0x0c, 0x61, 0x0e, 0x98, 0x0f, + 0x7b, 0x10, 0x3e, 0x11, 0xbc, 0x11, 0x98, 0x11, 0xf5, 0x10, 0xe7, 0x0f, + 0x6b, 0x0e, 0xa3, 0x0c, 0xd8, 0x0a, 0x45, 0x09, 0xf6, 0x07, 0x90, 0x06, + 0x01, 0x05, 0x8a, 0x03, 0x66, 0x02, 0x8b, 0x01, 0xe3, 0x00, 0x12, 0x00, + 0x52, 0xff, 0xc4, 0xfe, 0x68, 0xfe, 0xb7, 0xfd, 0xa3, 0xfc, 0x8c, 0xfb, + 0xc5, 0xfa, 0x4e, 0xfa, 0xc1, 0xf9, 0xad, 0xf8, 0x21, 0xf7, 0x2b, 0xf6, + 0x07, 0xf6, 0x37, 0xf6, 0x6b, 0xf6, 0x8e, 0xf6, 0xd8, 0xf6, 0x7e, 0xf7, + 0xe6, 0xf8, 0xdc, 0xfa, 0x66, 0xfd, 0xf4, 0xff, 0x1f, 0x02, 0xe6, 0x03, + 0xfc, 0x05, 0xf7, 0x08, 0xff, 0x0b, 0x5d, 0x0e, 0x8a, 0x0f, 0x34, 0x10, + 0xe2, 0x10, 0xad, 0x11, 0x33, 0x12, 0xdd, 0x11, 0xdc, 0x10, 0x4b, 0x0f, + 0x91, 0x0d, 0xd9, 0x0b, 0x1d, 0x0a, 0x71, 0x08, 0x54, 0x06, 0x26, 0x04, + 0x4c, 0x02, 0x79, 0x00, 0xf8, 0xfe, 0x12, 0xfe, 0x1c, 0xfd, 0x6a, 0xfc, + 0xc6, 0xfb, 0x01, 0xfb, 0xee, 0xfa, 0x1c, 0xfb, 0x27, 0xfb, 0x46, 0xfb, + 0x3e, 0xfb, 0x1a, 0xfb, 0x33, 0xfb, 0x1d, 0xfb, 0xe3, 0xfa, 0xe1, 0xfa, + 0xb1, 0xfa, 0x50, 0xfa, 0x48, 0xfa, 0x00, 0xfa, 0xd6, 0xf9, 0x2d, 0xfa, + 0x74, 0xfa, 0x2e, 0xfb, 0xf4, 0xfb, 0xa3, 0xfc, 0xbc, 0xfd, 0x24, 0xff, + 0xb8, 0x00, 0x86, 0x02, 0xd8, 0x03, 0x5e, 0x05, 0x01, 0x07, 0x4f, 0x08, + 0x59, 0x09, 0x27, 0x0a, 0xd1, 0x0a, 0x34, 0x0b, 0x11, 0x0b, 0x21, 0x0a, + 0xdd, 0x08, 0xc2, 0x07, 0x79, 0x06, 0x81, 0x04, 0x50, 0x02, 0x1a, 0x00, + 0xbb, 0xfd, 0x33, 0xfb, 0x30, 0xf9, 0xe9, 0xf6, 0xaf, 0xf4, 0x1c, 0xf3, + 0xf6, 0xf0, 0xed, 0xee, 0x69, 0xed, 0xdc, 0xeb, 0x31, 0xeb, 0x98, 0xea, + 0x26, 0xe9, 0xd2, 0xe8, 0x6e, 0xe9, 0x59, 0xea, 0xf0, 0xeb, 0x4b, 0xed, + 0xad, 0xee, 0x18, 0xf1, 0x19, 0xf4, 0x4b, 0xf7, 0xc7, 0xfa, 0xef, 0xfd, + 0xe1, 0x00, 0xdf, 0x03, 0x66, 0x06, 0x5c, 0x09, 0x5d, 0x0c, 0x50, 0x0e, + 0x4a, 0x0f, 0x9e, 0x0f, 0x8b, 0x0f, 0xcc, 0x0f, 0x26, 0x10, 0xbe, 0x0f, + 0x5b, 0x0e, 0x92, 0x0c, 0xd9, 0x0a, 0x7d, 0x09, 0xb8, 0x08, 0x14, 0x08, + 0x00, 0x07, 0x44, 0x05, 0x97, 0x03, 0x9d, 0x02, 0x80, 0x02, 0x6f, 0x02, + 0xc9, 0x01, 0x75, 0x00, 0x43, 0xff, 0xb0, 0xfe, 0x3c, 0xfe, 0x84, 0xfd, + 0x87, 0xfc, 0x72, 0xfb, 0x55, 0xfa, 0x28, 0xf9, 0x20, 0xf8, 0x51, 0xf7, + 0xf3, 0xf6, 0xb7, 0xf6, 0x63, 0xf6, 0x32, 0xf6, 0x5f, 0xf6, 0x49, 0xf7, + 0x9a, 0xf8, 0x33, 0xfa, 0x0a, 0xfc, 0xb8, 0xfd, 0x8f, 0xff, 0xdd, 0x01, + 0x7b, 0x04, 0xe2, 0x06, 0x28, 0x09, 0xe7, 0x0a, 0x58, 0x0c, 0xff, 0x0d, + 0x2e, 0x0f, 0xcd, 0x0f, 0x3a, 0x10, 0x08, 0x10, 0x6b, 0x0f, 0x75, 0x0e, + 0x5a, 0x0d, 0x27, 0x0c, 0xb8, 0x0a, 0xf4, 0x08, 0xf9, 0x06, 0x2e, 0x05, + 0x93, 0x03, 0x6b, 0x02, 0x25, 0x01, 0xab, 0xff, 0x80, 0xfe, 0xa7, 0xfd, + 0x37, 0xfd, 0x13, 0xfd, 0xd0, 0xfc, 0x68, 0xfc, 0x37, 0xfc, 0x38, 0xfc, + 0x23, 0xfc, 0x1f, 0xfc, 0x0d, 0xfc, 0x09, 0xfc, 0xc8, 0xfb, 0x3a, 0xfb, + 0xa6, 0xfa, 0x6a, 0xfa, 0x62, 0xfa, 0x3f, 0xfa, 0xee, 0xf9, 0xb7, 0xf9, + 0xca, 0xf9, 0x2f, 0xfa, 0xd3, 0xfa, 0x9f, 0xfb, 0xce, 0xfc, 0x0d, 0xfe, + 0x31, 0xff, 0x7d, 0x00, 0x0e, 0x02, 0xbc, 0x03, 0x7c, 0x05, 0x0b, 0x07, + 0x3a, 0x08, 0x2c, 0x09, 0xd5, 0x09, 0x47, 0x0a, 0x92, 0x0a, 0x91, 0x0a, + 0xf3, 0x09, 0xbe, 0x08, 0x23, 0x07, 0x52, 0x05, 0xc2, 0x03, 0x2d, 0x02, + 0x21, 0x00, 0xb6, 0xfd, 0x2a, 0xfb, 0xc7, 0xf8, 0xce, 0xf6, 0x51, 0xf5, + 0x9c, 0xf3, 0xbe, 0xf1, 0x72, 0xef, 0xb8, 0xed, 0x9a, 0xec, 0x9b, 0xeb, + 0xe3, 0xea, 0xc8, 0xe9, 0xc3, 0xe9, 0x6e, 0xea, 0xe7, 0xea, 0xa9, 0xeb, + 0xd9, 0xec, 0x25, 0xef, 0xf9, 0xf1, 0x6f, 0xf4, 0xe3, 0xf6, 0xe0, 0xf9, + 0x42, 0xfd, 0x48, 0x00, 0xf8, 0x02, 0xc9, 0x05, 0xc4, 0x08, 0x49, 0x0b, + 0x6e, 0x0c, 0x0d, 0x0d, 0xfa, 0x0d, 0xc6, 0x0e, 0x79, 0x0f, 0x29, 0x0f, + 0xdd, 0x0d, 0xa9, 0x0c, 0xc2, 0x0b, 0xfb, 0x0a, 0x2a, 0x0a, 0x46, 0x09, + 0x17, 0x08, 0xe8, 0x06, 0xb6, 0x05, 0x08, 0x05, 0xb0, 0x04, 0x26, 0x04, + 0xa2, 0x03, 0xe1, 0x02, 0xe4, 0x01, 0x0e, 0x01, 0x61, 0x00, 0xe3, 0xff, + 0x30, 0xff, 0x11, 0xfe, 0x94, 0xfc, 0x30, 0xfb, 0x40, 0xfa, 0x69, 0xf9, + 0x98, 0xf8, 0xd2, 0xf7, 0x58, 0xf7, 0x91, 0xf6, 0x1a, 0xf6, 0x94, 0xf6, + 0x77, 0xf7, 0x95, 0xf8, 0xfe, 0xf9, 0xd1, 0xfa, 0xf9, 0xfb, 0x6d, 0xfe, + 0xda, 0x00, 0x2c, 0x03, 0x1d, 0x05, 0x7b, 0x06, 0x78, 0x08, 0xb0, 0x0a, + 0x52, 0x0c, 0x50, 0x0d, 0x8b, 0x0d, 0x2a, 0x0e, 0x99, 0x0e, 0x64, 0x0e, + 0xb6, 0x0d, 0x9a, 0x0c, 0xa9, 0x0b, 0x7c, 0x0a, 0xfb, 0x08, 0x9f, 0x07, + 0x40, 0x06, 0x82, 0x04, 0x0a, 0x03, 0xf5, 0x01, 0x17, 0x01, 0x14, 0x00, + 0x25, 0xff, 0x72, 0xfe, 0x11, 0xfe, 0xc0, 0xfd, 0x8a, 0xfd, 0x6f, 0xfd, + 0x58, 0xfd, 0x1a, 0xfd, 0xc4, 0xfc, 0x6a, 0xfc, 0x6e, 0xfc, 0xb8, 0xfc, + 0x3e, 0xfc, 0x3f, 0xfb, 0x8a, 0xfa, 0x68, 0xfa, 0x60, 0xfa, 0x78, 0xfa, + 0x3f, 0xfa, 0xa5, 0xf9, 0xb1, 0xf9, 0x47, 0xfa, 0x30, 0xfb, 0x41, 0xfc, + 0x55, 0xfd, 0x49, 0xfe, 0x52, 0xff, 0xb8, 0x00, 0x86, 0x02, 0x6e, 0x04, + 0xe3, 0x05, 0xfe, 0x06, 0xb5, 0x07, 0x75, 0x08, 0x4c, 0x09, 0xbc, 0x09, + 0xa3, 0x09, 0xfb, 0x08, 0xcb, 0x07, 0x33, 0x06, 0xde, 0x04, 0x88, 0x03, + 0xce, 0x01, 0xd1, 0xff, 0x5a, 0xfd, 0xd6, 0xfa, 0xea, 0xf8, 0x17, 0xf7, + 0x71, 0xf5, 0xa8, 0xf3, 0x90, 0xf1, 0x0c, 0xf0, 0x83, 0xee, 0x09, 0xed, + 0x27, 0xec, 0xac, 0xeb, 0x97, 0xeb, 0xcf, 0xeb, 0xea, 0xeb, 0x0e, 0xec, + 0x54, 0xed, 0x6c, 0xef, 0xaf, 0xf1, 0x05, 0xf4, 0xec, 0xf5, 0x68, 0xf8, + 0x62, 0xfb, 0x34, 0xfe, 0xf9, 0x00, 0xb8, 0x03, 0x11, 0x06, 0x2d, 0x08, + 0xc9, 0x09, 0x94, 0x0a, 0x77, 0x0b, 0xce, 0x0c, 0xa9, 0x0d, 0x1e, 0x0d, + 0xd2, 0x0b, 0x23, 0x0b, 0x2b, 0x0b, 0x03, 0x0b, 0x0e, 0x0a, 0xac, 0x08, + 0xa6, 0x07, 0x40, 0x07, 0xc9, 0x06, 0x23, 0x06, 0xab, 0x05, 0x73, 0x05, + 0x13, 0x05, 0x2a, 0x04, 0x1e, 0x03, 0xba, 0x02, 0xe9, 0x02, 0x76, 0x02, + 0x24, 0x01, 0x7d, 0xff, 0x08, 0xfe, 0x5e, 0xfd, 0xd3, 0xfc, 0xe2, 0xfb, + 0x99, 0xfa, 0x05, 0xf9, 0xe8, 0xf7, 0x87, 0xf7, 0xa0, 0xf7, 0xc9, 0xf7, + 0x01, 0xf8, 0x2d, 0xf8, 0xaf, 0xf8, 0xec, 0xf9, 0xca, 0xfb, 0xd0, 0xfd, + 0xb2, 0xff, 0x38, 0x01, 0xb3, 0x02, 0xcc, 0x04, 0x23, 0x07, 0x1a, 0x09, + 0x47, 0x0a, 0x32, 0x0b, 0x06, 0x0c, 0xd0, 0x0c, 0x4a, 0x0d, 0x31, 0x0d, + 0xad, 0x0c, 0xda, 0x0b, 0x1a, 0x0b, 0x36, 0x0a, 0x11, 0x09, 0xc0, 0x07, + 0x55, 0x06, 0x1e, 0x05, 0x23, 0x04, 0xd0, 0x02, 0xc0, 0x01, 0x3b, 0x01, + 0x9e, 0x00, 0x0d, 0x00, 0x50, 0xff, 0xd4, 0xfe, 0x01, 0xff, 0xfa, 0xfe, + 0x8c, 0xfe, 0x2a, 0xfe, 0xe3, 0xfd, 0x93, 0xfd, 0x67, 0xfd, 0xf2, 0xfc, + 0x48, 0xfc, 0xcf, 0xfb, 0x44, 0xfb, 0x9c, 0xfa, 0x18, 0xfa, 0xb5, 0xf9, + 0x7d, 0xf9, 0x6b, 0xf9, 0x71, 0xf9, 0xa7, 0xf9, 0x1c, 0xfa, 0xd2, 0xfa, + 0xd1, 0xfb, 0xfb, 0xfc, 0x55, 0xfe, 0x81, 0xff, 0xf1, 0x00, 0x75, 0x02, + 0xe7, 0x03, 0x53, 0x05, 0x7c, 0x06, 0x69, 0x07, 0x0e, 0x08, 0x6b, 0x08, + 0x89, 0x08, 0x92, 0x08, 0xd4, 0x07, 0xa6, 0x06, 0x6f, 0x05, 0x1b, 0x04, + 0x52, 0x02, 0xd8, 0x00, 0x1f, 0xff, 0x27, 0xfd, 0xf6, 0xfa, 0xc0, 0xf8, + 0x42, 0xf7, 0xdc, 0xf5, 0x86, 0xf4, 0x90, 0xf2, 0x99, 0xf0, 0x53, 0xef, + 0x63, 0xee, 0xb5, 0xed, 0x5e, 0xed, 0xf1, 0xec, 0xcf, 0xec, 0x3c, 0xed, + 0xd6, 0xed, 0xfd, 0xee, 0xa2, 0xf0, 0x5e, 0xf2, 0x79, 0xf4, 0xac, 0xf6, + 0x31, 0xf9, 0x78, 0xfb, 0xa1, 0xfd, 0x37, 0x00, 0xe0, 0x02, 0x84, 0x05, + 0x45, 0x07, 0x31, 0x08, 0xf5, 0x08, 0x40, 0x0a, 0x8a, 0x0b, 0xe5, 0x0b, + 0xad, 0x0b, 0x13, 0x0b, 0x6f, 0x0a, 0x0a, 0x0a, 0x94, 0x09, 0x3d, 0x09, + 0xb2, 0x08, 0xe8, 0x07, 0x50, 0x07, 0x4d, 0x06, 0xbd, 0x05, 0xf9, 0x05, + 0x10, 0x06, 0x94, 0x05, 0xda, 0x04, 0xe4, 0x03, 0x96, 0x03, 0xa6, 0x03, + 0x03, 0x03, 0x1e, 0x02, 0x3f, 0x01, 0x63, 0x00, 0x46, 0xff, 0xee, 0xfd, + 0x95, 0xfc, 0x15, 0xfc, 0xda, 0xfb, 0xd8, 0xfa, 0x4d, 0xf9, 0x3b, 0xf8, + 0x3a, 0xf8, 0x29, 0xf9, 0xed, 0xf9, 0x33, 0xfa, 0x80, 0xfa, 0x61, 0xfb, + 0xb0, 0xfc, 0x86, 0xfe, 0xb0, 0x00, 0x9d, 0x02, 0x1d, 0x04, 0x3a, 0x05, + 0x74, 0x06, 0x0f, 0x08, 0xc6, 0x09, 0x54, 0x0b, 0xe4, 0x0b, 0x76, 0x0b, + 0x0d, 0x0b, 0x00, 0x0b, 0xf6, 0x0a, 0xe9, 0x0a, 0x14, 0x0a, 0x4c, 0x08, + 0xe8, 0x06, 0xe7, 0x05, 0x02, 0x05, 0x3c, 0x04, 0x71, 0x03, 0x69, 0x02, + 0x7f, 0x01, 0xb8, 0x00, 0x25, 0x00, 0x26, 0x00, 0x25, 0x00, 0xf3, 0xff, + 0x8f, 0xff, 0x26, 0xff, 0x08, 0xff, 0xdb, 0xfe, 0x83, 0xfe, 0x35, 0xfe, + 0xbd, 0xfd, 0x25, 0xfd, 0x55, 0xfc, 0x82, 0xfb, 0xe7, 0xfa, 0x60, 0xfa, + 0xf9, 0xf9, 0x9b, 0xf9, 0x6e, 0xf9, 0x39, 0xf9, 0x11, 0xf9, 0x84, 0xf9, + 0x8b, 0xfa, 0x9f, 0xfb, 0x8f, 0xfc, 0x77, 0xfd, 0xae, 0xfe, 0x38, 0x00, + 0xa7, 0x01, 0x0f, 0x03, 0x72, 0x04, 0xa5, 0x05, 0x6a, 0x06, 0xa8, 0x06, + 0xef, 0x06, 0x27, 0x07, 0x15, 0x07, 0x6c, 0x06, 0x63, 0x05, 0xed, 0x03, + 0x84, 0x02, 0x1d, 0x01, 0xc7, 0xff, 0x5f, 0xfe, 0x5a, 0xfc, 0x52, 0xfa, + 0xba, 0xf8, 0x29, 0xf7, 0xe2, 0xf5, 0x75, 0xf4, 0xc7, 0xf2, 0x75, 0xf1, + 0x93, 0xf0, 0x6a, 0xef, 0x9a, 0xee, 0x4f, 0xee, 0xb4, 0xee, 0x79, 0xef, + 0x74, 0xef, 0xc9, 0xef, 0xed, 0xf0, 0x25, 0xf3, 0x7a, 0xf5, 0x49, 0xf7, + 0xde, 0xf8, 0x8f, 0xfa, 0x3a, 0xfd, 0xf4, 0xff, 0xe1, 0x01, 0xa8, 0x03, + 0x4e, 0x05, 0x9f, 0x06, 0xf1, 0x07, 0xc6, 0x08, 0x38, 0x09, 0xd0, 0x09, + 0x03, 0x0a, 0xbf, 0x09, 0x38, 0x09, 0xb0, 0x08, 0x86, 0x08, 0x81, 0x08, + 0xbc, 0x07, 0xdb, 0x06, 0x7b, 0x06, 0x75, 0x06, 0x87, 0x06, 0x25, 0x06, + 0x5e, 0x05, 0x0a, 0x05, 0x38, 0x05, 0x62, 0x05, 0x16, 0x05, 0x21, 0x04, + 0x66, 0x03, 0x12, 0x03, 0x8d, 0x02, 0xed, 0x01, 0xf3, 0x00, 0xca, 0xff, + 0xbf, 0xfe, 0x9d, 0xfd, 0xa3, 0xfc, 0xea, 0xfb, 0x78, 0xfb, 0x1d, 0xfb, + 0x52, 0xfa, 0x6d, 0xf9, 0x91, 0xf9, 0xaf, 0xfa, 0x9a, 0xfb, 0x5b, 0xfc, + 0xe0, 0xfc, 0x74, 0xfd, 0x1f, 0xff, 0x12, 0x01, 0xcd, 0x02, 0x45, 0x04, + 0x3f, 0x05, 0x31, 0x06, 0x66, 0x07, 0x8f, 0x08, 0x74, 0x09, 0x2d, 0x0a, + 0x31, 0x0a, 0xd5, 0x09, 0x85, 0x09, 0xee, 0x08, 0xcc, 0x08, 0x6b, 0x08, + 0x55, 0x07, 0x41, 0x06, 0x2b, 0x05, 0x4f, 0x04, 0xc5, 0x03, 0x51, 0x03, + 0x9e, 0x02, 0xec, 0x01, 0x56, 0x01, 0xf6, 0x00, 0xad, 0x00, 0x6f, 0x00, + 0x5b, 0x00, 0x26, 0x00, 0xa9, 0xff, 0x33, 0xff, 0xce, 0xfe, 0x63, 0xfe, + 0x0d, 0xfe, 0x68, 0xfd, 0xa0, 0xfc, 0x10, 0xfc, 0x73, 0xfb, 0xaa, 0xfa, + 0x09, 0xfa, 0xcb, 0xf9, 0xcf, 0xf9, 0xd0, 0xf9, 0xcd, 0xf9, 0xd9, 0xf9, + 0x4d, 0xfa, 0x3d, 0xfb, 0x71, 0xfc, 0xb3, 0xfd, 0xab, 0xfe, 0xa7, 0xff, + 0xc6, 0x00, 0x08, 0x02, 0x6c, 0x03, 0x8f, 0x04, 0x58, 0x05, 0xf5, 0x05, + 0x09, 0x06, 0xc8, 0x05, 0x86, 0x05, 0x76, 0x05, 0x20, 0x05, 0x0b, 0x04, + 0x8b, 0x02, 0xef, 0x00, 0xb5, 0xff, 0x9f, 0xfe, 0x65, 0xfd, 0x12, 0xfc, + 0x4c, 0xfa, 0x8a, 0xf8, 0x0f, 0xf7, 0x9d, 0xf5, 0xa7, 0xf4, 0xa3, 0xf3, + 0x60, 0xf2, 0x06, 0xf1, 0xe6, 0xef, 0x6a, 0xef, 0x90, 0xef, 0x00, 0xf0, + 0x66, 0xf0, 0x95, 0xf0, 0x04, 0xf1, 0x3e, 0xf2, 0x29, 0xf4, 0x7c, 0xf6, + 0x62, 0xf8, 0xf8, 0xf9, 0xa0, 0xfb, 0xf8, 0xfd, 0x3a, 0x00, 0x10, 0x02, + 0xf8, 0x03, 0x82, 0x05, 0x84, 0x06, 0x54, 0x07, 0xeb, 0x07, 0x6c, 0x08, + 0x19, 0x09, 0x3c, 0x09, 0xbc, 0x08, 0x12, 0x08, 0x98, 0x07, 0xa5, 0x07, + 0x96, 0x07, 0xec, 0x06, 0x38, 0x06, 0xd5, 0x05, 0xde, 0x05, 0xf6, 0x05, + 0xc4, 0x05, 0x4c, 0x05, 0x41, 0x05, 0x8c, 0x05, 0x30, 0x05, 0xbc, 0x04, + 0xac, 0x04, 0x71, 0x04, 0xd4, 0x03, 0x06, 0x03, 0x1e, 0x02, 0x6b, 0x01, + 0xdf, 0x00, 0xdb, 0xff, 0x74, 0xfe, 0x76, 0xfd, 0xd0, 0xfc, 0x45, 0xfc, + 0xae, 0xfb, 0x10, 0xfb, 0xbe, 0xfa, 0xb5, 0xfa, 0x30, 0xfb, 0xc7, 0xfb, + 0x68, 0xfc, 0x57, 0xfd, 0x53, 0xfe, 0x8f, 0xff, 0xbb, 0x00, 0xf9, 0x01, + 0x9d, 0x03, 0xf2, 0x04, 0xfb, 0x05, 0xa2, 0x06, 0x3c, 0x07, 0x45, 0x08, + 0xe8, 0x08, 0xe0, 0x08, 0xb9, 0x08, 0x7a, 0x08, 0x0a, 0x08, 0x6c, 0x07, + 0xd2, 0x06, 0x3c, 0x06, 0x9b, 0x05, 0xc0, 0x04, 0xbc, 0x03, 0x04, 0x03, + 0xa3, 0x02, 0x4e, 0x02, 0xe3, 0x01, 0x53, 0x01, 0xe7, 0x00, 0xc5, 0x00, + 0x9c, 0x00, 0x71, 0x00, 0x39, 0x00, 0xed, 0xff, 0xa1, 0xff, 0x27, 0xff, + 0x99, 0xfe, 0x2b, 0xfe, 0xb0, 0xfd, 0x18, 0xfd, 0x6e, 0xfc, 0x8e, 0xfb, + 0xdd, 0xfa, 0x84, 0xfa, 0x55, 0xfa, 0x21, 0xfa, 0xe6, 0xf9, 0xf5, 0xf9, + 0x51, 0xfa, 0xf0, 0xfa, 0xb9, 0xfb, 0xc2, 0xfc, 0xbf, 0xfd, 0xda, 0xfe, + 0xe8, 0xff, 0x16, 0x01, 0x91, 0x02, 0x9b, 0x03, 0x82, 0x04, 0x16, 0x05, + 0x77, 0x05, 0xc9, 0x05, 0xc9, 0x05, 0x88, 0x05, 0xe9, 0x04, 0x0e, 0x04, + 0x34, 0x03, 0xf0, 0x01, 0x98, 0x00, 0x5f, 0xff, 0x0a, 0xfe, 0x92, 0xfc, + 0x17, 0xfb, 0x92, 0xf9, 0x42, 0xf8, 0x17, 0xf7, 0xc9, 0xf5, 0x51, 0xf4, + 0x14, 0xf3, 0x4b, 0xf2, 0x49, 0xf1, 0x90, 0xf0, 0x35, 0xf0, 0x05, 0xf0, + 0x34, 0xf0, 0x8c, 0xf0, 0x07, 0xf1, 0xbf, 0xf1, 0x46, 0xf3, 0xe3, 0xf4, + 0x40, 0xf6, 0x14, 0xf8, 0xf7, 0xf9, 0x2d, 0xfc, 0xdf, 0xfd, 0x72, 0xff, + 0x88, 0x01, 0x68, 0x03, 0xde, 0x04, 0xcc, 0x05, 0x3e, 0x06, 0x0b, 0x07, + 0xff, 0x07, 0x93, 0x08, 0x4b, 0x08, 0xb3, 0x07, 0x91, 0x07, 0x9a, 0x07, + 0x6c, 0x07, 0xfc, 0x06, 0xa8, 0x06, 0x5c, 0x06, 0x4c, 0x06, 0x27, 0x06, + 0xd1, 0x05, 0xdb, 0x05, 0x21, 0x06, 0x18, 0x06, 0xbe, 0x05, 0x74, 0x05, + 0x66, 0x05, 0x66, 0x05, 0x3c, 0x05, 0x77, 0x04, 0x68, 0x03, 0x7e, 0x02, + 0x20, 0x02, 0xb0, 0x01, 0x6c, 0x00, 0x06, 0xff, 0xf3, 0xfd, 0x4c, 0xfd, + 0xda, 0xfc, 0x0d, 0xfc, 0x68, 0xfb, 0x45, 0xfb, 0x48, 0xfb, 0x4e, 0xfb, + 0x80, 0xfb, 0x3a, 0xfc, 0x74, 0xfd, 0x74, 0xfe, 0x31, 0xff, 0xf8, 0xff, + 0x4b, 0x01, 0xcf, 0x02, 0x34, 0x04, 0x47, 0x05, 0xb8, 0x05, 0x4f, 0x06, + 0x13, 0x07, 0xaf, 0x07, 0x25, 0x08, 0xf4, 0x07, 0x7e, 0x07, 0x34, 0x07, + 0xc9, 0x06, 0x49, 0x06, 0x08, 0x06, 0x61, 0x05, 0x6e, 0x04, 0xc5, 0x03, + 0x1b, 0x03, 0xf3, 0x02, 0xc8, 0x02, 0x4a, 0x02, 0xd2, 0x01, 0x56, 0x01, + 0x4c, 0x01, 0x74, 0x01, 0x5f, 0x01, 0xf4, 0x00, 0x5b, 0x00, 0xee, 0xff, + 0xa9, 0xff, 0x67, 0xff, 0xda, 0xfe, 0xef, 0xfd, 0x39, 0xfd, 0x72, 0xfc, + 0xb7, 0xfb, 0x39, 0xfb, 0xdb, 0xfa, 0x96, 0xfa, 0x12, 0xfa, 0xb0, 0xf9, + 0xdd, 0xf9, 0x72, 0xfa, 0x1f, 0xfb, 0xc9, 0xfb, 0x6f, 0xfc, 0x7c, 0xfd, + 0xac, 0xfe, 0xce, 0xff, 0x02, 0x01, 0x28, 0x02, 0x14, 0x03, 0x11, 0x04, + 0xb1, 0x04, 0xea, 0x04, 0x37, 0x05, 0x27, 0x05, 0xcf, 0x04, 0x59, 0x04, + 0x6f, 0x03, 0x8d, 0x02, 0x9e, 0x01, 0x3b, 0x00, 0xe9, 0xfe, 0x8e, 0xfd, + 0x6e, 0xfc, 0x3f, 0xfb, 0xd7, 0xf9, 0x65, 0xf8, 0x10, 0xf7, 0x13, 0xf6, + 0xfb, 0xf4, 0x17, 0xf4, 0xfc, 0xf2, 0x19, 0xf2, 0x83, 0xf1, 0x1c, 0xf1, + 0x19, 0xf1, 0x3c, 0xf1, 0x7d, 0xf1, 0xf8, 0xf1, 0x94, 0xf2, 0x8f, 0xf3, + 0x4e, 0xf5, 0x0c, 0xf7, 0x7d, 0xf8, 0xd5, 0xf9, 0x62, 0xfb, 0x79, 0xfd, + 0xb8, 0xff, 0x69, 0x01, 0x5f, 0x02, 0x7f, 0x03, 0xee, 0x04, 0xf6, 0x05, + 0xb9, 0x06, 0x10, 0x07, 0x44, 0x07, 0x48, 0x07, 0x3a, 0x07, 0x26, 0x07, + 0xf7, 0x06, 0xcb, 0x06, 0x81, 0x06, 0x26, 0x06, 0xd8, 0x05, 0xf9, 0x05, + 0x4f, 0x06, 0x35, 0x06, 0xdc, 0x05, 0xb6, 0x05, 0xfc, 0x05, 0x81, 0x06, + 0xb8, 0x06, 0x44, 0x06, 0x9e, 0x05, 0x3f, 0x05, 0x0e, 0x05, 0xdb, 0x04, + 0x10, 0x04, 0x11, 0x03, 0xd4, 0x01, 0xbf, 0x00, 0x11, 0x00, 0x3e, 0xff, + 0x54, 0xfe, 0x6d, 0xfd, 0x85, 0xfc, 0xf0, 0xfb, 0xb4, 0xfb, 0xb0, 0xfb, + 0xe2, 0xfb, 0x33, 0xfc, 0x8e, 0xfc, 0x28, 0xfd, 0x24, 0xfe, 0x30, 0xff, + 0x63, 0x00, 0x79, 0x01, 0x7a, 0x02, 0x89, 0x03, 0x90, 0x04, 0x9d, 0x05, + 0x67, 0x06, 0xd2, 0x06, 0x27, 0x07, 0x6f, 0x07, 0x7a, 0x07, 0x67, 0x07, + 0xfe, 0x06, 0x72, 0x06, 0xf4, 0x05, 0x80, 0x05, 0xdd, 0x04, 0x46, 0x04, + 0x92, 0x03, 0xda, 0x02, 0x8e, 0x02, 0x49, 0x02, 0x2d, 0x02, 0xc9, 0x01, + 0x3c, 0x01, 0x31, 0x01, 0x4e, 0x01, 0x4e, 0x01, 0x19, 0x01, 0xc8, 0x00, + 0x75, 0x00, 0x05, 0x00, 0xac, 0xff, 0x23, 0xff, 0x8f, 0xfe, 0xc5, 0xfd, + 0xf3, 0xfc, 0x3b, 0xfc, 0x70, 0xfb, 0xe3, 0xfa, 0x76, 0xfa, 0x11, 0xfa, + 0xd4, 0xf9, 0xc3, 0xf9, 0x13, 0xfa, 0x9e, 0xfa, 0x40, 0xfb, 0xfa, 0xfb, + 0x07, 0xfd, 0x40, 0xfe, 0x61, 0xff, 0x87, 0x00, 0x99, 0x01, 0xc9, 0x02, + 0xc7, 0x03, 0x5c, 0x04, 0xd1, 0x04, 0x10, 0x05, 0x0f, 0x05, 0xdf, 0x04, + 0x39, 0x04, 0x6f, 0x03, 0xc9, 0x02, 0xd5, 0x01, 0x71, 0x00, 0x4e, 0xff, + 0x0c, 0xfe, 0xc1, 0xfc, 0xad, 0xfb, 0x64, 0xfa, 0x18, 0xf9, 0x12, 0xf8, + 0xb5, 0xf6, 0x9c, 0xf5, 0x00, 0xf5, 0x04, 0xf4, 0x45, 0xf3, 0x79, 0xf2, + 0xe2, 0xf1, 0x0b, 0xf2, 0x24, 0xf2, 0x5f, 0xf2, 0xc5, 0xf2, 0x2f, 0xf3, + 0x63, 0xf4, 0x8b, 0xf5, 0xcc, 0xf6, 0x57, 0xf8, 0xcd, 0xf9, 0x50, 0xfb, + 0xd7, 0xfc, 0x30, 0xfe, 0xb3, 0xff, 0x6d, 0x01, 0xa8, 0x02, 0x7c, 0x03, + 0x08, 0x04, 0x8d, 0x04, 0x55, 0x05, 0x01, 0x06, 0x35, 0x06, 0x0d, 0x06, + 0xaf, 0x05, 0xaf, 0x05, 0x0b, 0x06, 0x20, 0x06, 0x04, 0x06, 0x23, 0x06, + 0x12, 0x06, 0x0f, 0x06, 0x4a, 0x06, 0xa1, 0x06, 0x03, 0x07, 0x20, 0x07, + 0xf3, 0x06, 0xd9, 0x06, 0xdb, 0x06, 0xda, 0x06, 0xb3, 0x06, 0x38, 0x06, + 0x72, 0x05, 0x9a, 0x04, 0xc0, 0x03, 0xfc, 0x02, 0x4f, 0x02, 0x3d, 0x01, + 0xfd, 0xff, 0xfc, 0xfe, 0x5a, 0xfe, 0xb1, 0xfd, 0x32, 0xfd, 0xb0, 0xfc, + 0x73, 0xfc, 0x7c, 0xfc, 0xa5, 0xfc, 0x06, 0xfd, 0xcd, 0xfd, 0xad, 0xfe, + 0x47, 0xff, 0xfb, 0xff, 0x2c, 0x01, 0x54, 0x02, 0x52, 0x03, 0x2f, 0x04, + 0xcf, 0x04, 0x69, 0x05, 0xf0, 0x05, 0x69, 0x06, 0xb9, 0x06, 0x9d, 0x06, + 0x40, 0x06, 0x21, 0x06, 0xad, 0x05, 0x44, 0x05, 0xd8, 0x04, 0x3c, 0x04, + 0xa2, 0x03, 0x10, 0x03, 0xa0, 0x02, 0x56, 0x02, 0x26, 0x02, 0xcc, 0x01, + 0x70, 0x01, 0x47, 0x01, 0x49, 0x01, 0x6e, 0x01, 0x50, 0x01, 0xf7, 0x00, + 0xba, 0x00, 0x85, 0x00, 0x49, 0x00, 0xed, 0xff, 0x4a, 0xff, 0xb0, 0xfe, + 0x0c, 0xfe, 0x4b, 0xfd, 0x96, 0xfc, 0x04, 0xfc, 0x78, 0xfb, 0xe7, 0xfa, + 0x6d, 0xfa, 0x3b, 0xfa, 0x4b, 0xfa, 0x77, 0xfa, 0xb5, 0xfa, 0x42, 0xfb, + 0x07, 0xfc, 0xeb, 0xfc, 0xeb, 0xfd, 0xe9, 0xfe, 0xed, 0xff, 0x09, 0x01, + 0x10, 0x02, 0xf5, 0x02, 0x87, 0x03, 0xe7, 0x03, 0x50, 0x04, 0x4f, 0x04, + 0x13, 0x04, 0xd7, 0x03, 0x45, 0x03, 0x7c, 0x02, 0x85, 0x01, 0x6c, 0x00, + 0x7d, 0xff, 0x80, 0xfe, 0x7b, 0xfd, 0x50, 0xfc, 0xbc, 0xfa, 0x9d, 0xf9, + 0xcd, 0xf8, 0xd1, 0xf7, 0xf9, 0xf6, 0x99, 0xf5, 0x8d, 0xf4, 0x00, 0xf4, + 0x59, 0xf3, 0x1a, 0xf3, 0xb9, 0xf2, 0xbe, 0xf2, 0x05, 0xf3, 0x28, 0xf3, + 0xa8, 0xf3, 0xac, 0xf4, 0x0d, 0xf6, 0x3b, 0xf7, 0x30, 0xf8, 0x4d, 0xf9, + 0xf4, 0xfa, 0xb1, 0xfc, 0x07, 0xfe, 0x33, 0xff, 0x71, 0x00, 0xa4, 0x01, + 0xaa, 0x02, 0x67, 0x03, 0xf7, 0x03, 0x91, 0x04, 0xfb, 0x04, 0x08, 0x05, + 0x1c, 0x05, 0x30, 0x05, 0x54, 0x05, 0x5a, 0x05, 0x40, 0x05, 0x3c, 0x05, + 0x52, 0x05, 0x92, 0x05, 0xb9, 0x05, 0xe5, 0x05, 0xfa, 0x05, 0x1b, 0x06, + 0x75, 0x06, 0xab, 0x06, 0xa5, 0x06, 0x7b, 0x06, 0x5c, 0x06, 0x49, 0x06, + 0xfe, 0x05, 0x62, 0x05, 0xc5, 0x04, 0x33, 0x04, 0x8a, 0x03, 0xa6, 0x02, + 0x9d, 0x01, 0xba, 0x00, 0x00, 0x00, 0x5f, 0xff, 0xa5, 0xfe, 0xcb, 0xfd, + 0x52, 0xfd, 0x3f, 0xfd, 0x67, 0xfd, 0x83, 0xfd, 0xa3, 0xfd, 0xf4, 0xfd, + 0xaa, 0xfe, 0x8a, 0xff, 0x42, 0x00, 0x25, 0x01, 0xff, 0x01, 0xd9, 0x02, + 0x9e, 0x03, 0x30, 0x04, 0xde, 0x04, 0x67, 0x05, 0xb0, 0x05, 0xd7, 0x05, + 0xbd, 0x05, 0x8a, 0x05, 0x4b, 0x05, 0xfd, 0x04, 0x7a, 0x04, 0x0f, 0x04, + 0x91, 0x03, 0x12, 0x03, 0xb3, 0x02, 0x47, 0x02, 0xea, 0x01, 0xdb, 0x01, + 0xc0, 0x01, 0x94, 0x01, 0x9c, 0x01, 0x81, 0x01, 0x81, 0x01, 0x88, 0x01, + 0x74, 0x01, 0x5c, 0x01, 0x2d, 0x01, 0xc0, 0x00, 0x49, 0x00, 0xc8, 0xff, + 0x36, 0xff, 0xa3, 0xfe, 0xf3, 0xfd, 0x32, 0xfd, 0x8f, 0xfc, 0xe2, 0xfb, + 0x55, 0xfb, 0xfc, 0xfa, 0xdb, 0xfa, 0xd7, 0xfa, 0xe0, 0xfa, 0x19, 0xfb, + 0x97, 0xfb, 0x49, 0xfc, 0x23, 0xfd, 0x16, 0xfe, 0x02, 0xff, 0xe3, 0xff, + 0xdd, 0x00, 0xd5, 0x01, 0x90, 0x02, 0x1d, 0x03, 0x9b, 0x03, 0xe2, 0x03, + 0xe3, 0x03, 0xa5, 0x03, 0x3e, 0x03, 0x93, 0x02, 0xe8, 0x01, 0x37, 0x01, + 0x43, 0x00, 0x22, 0xff, 0xea, 0xfd, 0xe5, 0xfc, 0x08, 0xfc, 0xff, 0xfa, + 0x03, 0xfa, 0xf3, 0xf8, 0xfe, 0xf7, 0x16, 0xf7, 0x43, 0xf6, 0x98, 0xf5, + 0xff, 0xf4, 0x8d, 0xf4, 0xd0, 0xf3, 0x86, 0xf3, 0x9e, 0xf3, 0xd1, 0xf3, + 0x1a, 0xf4, 0x64, 0xf4, 0xfe, 0xf4, 0xfa, 0xf5, 0x1a, 0xf7, 0x22, 0xf8, + 0x29, 0xf9, 0x5b, 0xfa, 0xf1, 0xfb, 0x5c, 0xfd, 0x78, 0xfe, 0x78, 0xff, + 0x82, 0x00, 0xa7, 0x01, 0x9b, 0x02, 0x3f, 0x03, 0xbf, 0x03, 0x3d, 0x04, + 0x69, 0x04, 0x77, 0x04, 0x9f, 0x04, 0xd4, 0x04, 0xff, 0x04, 0xfe, 0x04, + 0xc8, 0x04, 0xba, 0x04, 0xde, 0x04, 0x41, 0x05, 0x82, 0x05, 0x8a, 0x05, + 0x8c, 0x05, 0x96, 0x05, 0xbb, 0x05, 0x0a, 0x06, 0x31, 0x06, 0x19, 0x06, + 0xb7, 0x05, 0x52, 0x05, 0x0f, 0x05, 0xbd, 0x04, 0x30, 0x04, 0x77, 0x03, + 0xad, 0x02, 0xc5, 0x01, 0x18, 0x01, 0x86, 0x00, 0xd4, 0xff, 0x39, 0xff, + 0xaf, 0xfe, 0x45, 0xfe, 0x13, 0xfe, 0x1f, 0xfe, 0x4f, 0xfe, 0x9c, 0xfe, + 0xdc, 0xfe, 0x41, 0xff, 0xec, 0xff, 0xa6, 0x00, 0x71, 0x01, 0x2f, 0x02, + 0xbb, 0x02, 0x44, 0x03, 0xdc, 0x03, 0x64, 0x04, 0xcf, 0x04, 0x1e, 0x05, + 0x1d, 0x05, 0x07, 0x05, 0xf8, 0x04, 0xb4, 0x04, 0x89, 0x04, 0x4b, 0x04, + 0xf6, 0x03, 0x87, 0x03, 0xf6, 0x02, 0x9a, 0x02, 0x70, 0x02, 0x65, 0x02, + 0x28, 0x02, 0xd1, 0x01, 0x96, 0x01, 0x6f, 0x01, 0x5c, 0x01, 0x6d, 0x01, + 0x65, 0x01, 0x29, 0x01, 0xb0, 0x00, 0x63, 0x00, 0x3a, 0x00, 0xd4, 0xff, + 0x6a, 0xff, 0xdc, 0xfe, 0x5a, 0xfe, 0xd4, 0xfd, 0x3a, 0xfd, 0xb1, 0xfc, + 0x54, 0xfc, 0x0d, 0xfc, 0xd6, 0xfb, 0xae, 0xfb, 0x93, 0xfb, 0xab, 0xfb, + 0x10, 0xfc, 0x7e, 0xfc, 0x10, 0xfd, 0xb1, 0xfd, 0x6f, 0xfe, 0x2f, 0xff, + 0xe7, 0xff, 0xab, 0x00, 0x75, 0x01, 0x25, 0x02, 0xbd, 0x02, 0x27, 0x03, + 0x4e, 0x03, 0x5c, 0x03, 0x42, 0x03, 0x02, 0x03, 0xc1, 0x02, 0x23, 0x02, + 0x5b, 0x01, 0x8d, 0x00, 0xad, 0xff, 0xc9, 0xfe, 0x0f, 0xfe, 0x13, 0xfd, + 0x2a, 0xfc, 0x32, 0xfb, 0x49, 0xfa, 0x76, 0xf9, 0x9d, 0xf8, 0xe3, 0xf7, + 0x2f, 0xf7, 0x3f, 0xf6, 0x93, 0xf5, 0x11, 0xf5, 0x83, 0xf4, 0x67, 0xf4, + 0x45, 0xf4, 0x0c, 0xf4, 0x25, 0xf4, 0xa4, 0xf4, 0x25, 0xf5, 0x15, 0xf6, + 0xf2, 0xf6, 0xb7, 0xf7, 0xd9, 0xf8, 0x0c, 0xfa, 0x43, 0xfb, 0xc3, 0xfc, + 0xe8, 0xfd, 0xc8, 0xfe, 0xbc, 0xff, 0xad, 0x00, 0x9d, 0x01, 0x51, 0x02, + 0xcb, 0x02, 0x13, 0x03, 0x36, 0x03, 0x76, 0x03, 0x91, 0x03, 0xc6, 0x03, + 0xe3, 0x03, 0xd8, 0x03, 0xd7, 0x03, 0xeb, 0x03, 0x30, 0x04, 0x66, 0x04, + 0x95, 0x04, 0xcd, 0x04, 0xd8, 0x04, 0x00, 0x05, 0x56, 0x05, 0x68, 0x05, + 0x5d, 0x05, 0x50, 0x05, 0x2c, 0x05, 0x11, 0x05, 0xb3, 0x04, 0x31, 0x04, + 0xbb, 0x03, 0x4c, 0x03, 0xe5, 0x02, 0x42, 0x02, 0x81, 0x01, 0xe3, 0x00, + 0x84, 0x00, 0x31, 0x00, 0xf5, 0xff, 0xb2, 0xff, 0x8e, 0xff, 0x92, 0xff, + 0xa1, 0xff, 0xf9, 0xff, 0x77, 0x00, 0xd1, 0x00, 0x47, 0x01, 0xab, 0x01, + 0x09, 0x02, 0x88, 0x02, 0x14, 0x03, 0x85, 0x03, 0xd5, 0x03, 0xea, 0x03, + 0xec, 0x03, 0x11, 0x04, 0x1a, 0x04, 0x1c, 0x04, 0x0b, 0x04, 0xa3, 0x03, + 0x48, 0x03, 0x22, 0x03, 0xf4, 0x02, 0xd4, 0x02, 0x92, 0x02, 0x30, 0x02, + 0xf7, 0x01, 0xea, 0x01, 0xd4, 0x01, 0xd1, 0x01, 0x8f, 0x01, 0x53, 0x01, + 0x44, 0x01, 0x34, 0x01, 0x1b, 0x01, 0xd5, 0x00, 0x67, 0x00, 0x1f, 0x00, + 0xea, 0xff, 0x8e, 0xff, 0x1e, 0xff, 0xa0, 0xfe, 0x39, 0xfe, 0xd8, 0xfd, + 0x75, 0xfd, 0x1f, 0xfd, 0xfc, 0xfc, 0xdc, 0xfc, 0xa5, 0xfc, 0x8c, 0xfc, + 0xbc, 0xfc, 0x1d, 0xfd, 0x78, 0xfd, 0xd7, 0xfd, 0x45, 0xfe, 0xc5, 0xfe, + 0x6e, 0xff, 0x13, 0x00, 0xbd, 0x00, 0x3b, 0x01, 0xbf, 0x01, 0x33, 0x02, + 0x82, 0x02, 0xa0, 0x02, 0xb1, 0x02, 0xb2, 0x02, 0x82, 0x02, 0x24, 0x02, + 0x9c, 0x01, 0x36, 0x01, 0xc3, 0x00, 0x21, 0x00, 0x7a, 0xff, 0xe0, 0xfe, + 0x52, 0xfe, 0xb8, 0xfd, 0x0d, 0xfd, 0x61, 0xfc, 0xda, 0xfb, 0x3b, 0xfb, + 0x65, 0xfa, 0xa1, 0xf9, 0xde, 0xf8, 0x62, 0xf8, 0xa5, 0xf7, 0xbf, 0xf6, + 0xff, 0xf5, 0x35, 0xf5, 0xe7, 0xf4, 0xb9, 0xf4, 0x70, 0xf4, 0x4d, 0xf4, + 0x54, 0xf4, 0x97, 0xf4, 0x5a, 0xf5, 0x2c, 0xf6, 0x29, 0xf7, 0x19, 0xf8, + 0xfe, 0xf8, 0x3d, 0xfa, 0xb7, 0xfb, 0x23, 0xfd, 0x20, 0xfe, 0x1b, 0xff, + 0x1a, 0x00, 0x0d, 0x01, 0xe4, 0x01, 0x72, 0x02, 0xe0, 0x02, 0x3a, 0x03, + 0x5d, 0x03, 0x6b, 0x03, 0x70, 0x03, 0x99, 0x03, 0xad, 0x03, 0x98, 0x03, + 0x81, 0x03, 0x86, 0x03, 0xcf, 0x03, 0x11, 0x04, 0x29, 0x04, 0x37, 0x04, + 0x68, 0x04, 0xa3, 0x04, 0xeb, 0x04, 0xd9, 0x04, 0xbf, 0x04, 0xf5, 0x04, + 0xf4, 0x04, 0xa3, 0x04, 0x3c, 0x04, 0xea, 0x03, 0xbb, 0x03, 0x8a, 0x03, + 0xdd, 0x02, 0x4d, 0x02, 0xf4, 0x01, 0x82, 0x01, 0x27, 0x01, 0xd9, 0x00, + 0x88, 0x00, 0x81, 0x00, 0x6c, 0x00, 0x57, 0x00, 0x4d, 0x00, 0x9c, 0x00, + 0x02, 0x01, 0x50, 0x01, 0xba, 0x01, 0x01, 0x02, 0x58, 0x02, 0xd7, 0x02, + 0x40, 0x03, 0x94, 0x03, 0xf2, 0x03, 0x1b, 0x04, 0x0f, 0x04, 0x12, 0x04, + 0x10, 0x04, 0x0c, 0x04, 0xf8, 0x03, 0x93, 0x03, 0x4b, 0x03, 0xff, 0x02, + 0xb5, 0x02, 0x87, 0x02, 0x4d, 0x02, 0xf7, 0x01, 0xd6, 0x01, 0x9b, 0x01, + 0x60, 0x01, 0x46, 0x01, 0x30, 0x01, 0x24, 0x01, 0x05, 0x01, 0xbe, 0x00, + 0x76, 0x00, 0x63, 0x00, 0x3e, 0x00, 0x08, 0x00, 0xa7, 0xff, 0x5d, 0xff, + 0x16, 0xff, 0xae, 0xfe, 0x4e, 0xfe, 0x1a, 0xfe, 0x17, 0xfe, 0xec, 0xfd, + 0xa9, 0xfd, 0x81, 0xfd, 0x61, 0xfd, 0x9d, 0xfd, 0x00, 0xfe, 0x51, 0xfe, + 0x99, 0xfe, 0xc6, 0xfe, 0x16, 0xff, 0x8e, 0xff, 0x16, 0x00, 0xa9, 0x00, + 0x1b, 0x01, 0x5e, 0x01, 0x97, 0x01, 0xb8, 0x01, 0xb7, 0x01, 0xc0, 0x01, + 0xcb, 0x01, 0xab, 0x01, 0x5a, 0x01, 0xc8, 0x00, 0x57, 0x00, 0x1b, 0x00, + 0xd1, 0xff, 0x7f, 0xff, 0x1f, 0xff, 0x80, 0xfe, 0xd9, 0xfd, 0x65, 0xfd, + 0xf6, 0xfc, 0x87, 0xfc, 0x0e, 0xfc, 0x8e, 0xfb, 0xa7, 0xfa, 0xcc, 0xf9, + 0x44, 0xf9, 0xb5, 0xf8, 0x28, 0xf8, 0x9c, 0xf7, 0xf6, 0xf6, 0x1b, 0xf6, + 0xd0, 0xf5, 0x79, 0xf5, 0x77, 0xf5, 0x68, 0xf5, 0xb3, 0xf5, 0xe7, 0xf5, + 0x61, 0xf6, 0xbe, 0xf6, 0x74, 0xf7, 0xc2, 0xf8, 0xda, 0xf9, 0xec, 0xfa, + 0xc2, 0xfb, 0xa1, 0xfc, 0xa0, 0xfd, 0x06, 0xff, 0xed, 0xff, 0xb6, 0x00, + 0x43, 0x01, 0xb0, 0x01, 0x02, 0x02, 0x54, 0x02, 0xbf, 0x02, 0xbd, 0x02, + 0xbf, 0x02, 0xa2, 0x02, 0x8b, 0x02, 0x9c, 0x02, 0xbe, 0x02, 0xd3, 0x02, + 0xb4, 0x02, 0xb8, 0x02, 0x0b, 0x03, 0x7f, 0x03, 0xc5, 0x03, 0xd3, 0x03, + 0xbf, 0x03, 0x1f, 0x04, 0x8f, 0x04, 0xde, 0x04, 0xc0, 0x04, 0xa3, 0x04, + 0x67, 0x04, 0x3b, 0x04, 0x2b, 0x04, 0xf0, 0x03, 0x82, 0x03, 0x09, 0x03, + 0x97, 0x02, 0x21, 0x02, 0xa2, 0x01, 0x73, 0x01, 0x5a, 0x01, 0x14, 0x01, + 0xe9, 0x00, 0xd0, 0x00, 0xeb, 0x00, 0x31, 0x01, 0x9b, 0x01, 0xe4, 0x01, + 0x2e, 0x02, 0x8a, 0x02, 0xcc, 0x02, 0x3f, 0x03, 0xde, 0x03, 0xed, 0x03, + 0xde, 0x03, 0xcf, 0x03, 0xcb, 0x03, 0xf2, 0x03, 0xae, 0x03, 0x34, 0x03, + 0xbb, 0x02, 0x42, 0x02, 0xff, 0x01, 0xb9, 0x01, 0x70, 0x01, 0x07, 0x01, + 0xbc, 0x00, 0x8c, 0x00, 0x81, 0x00, 0x85, 0x00, 0x8d, 0x00, 0xcd, 0x00, + 0xdd, 0x00, 0xe0, 0x00, 0xc1, 0x00, 0xcb, 0x00, 0x02, 0x01, 0x2d, 0x01, + 0xe7, 0x00, 0xad, 0x00, 0x59, 0x00, 0x39, 0x00, 0x01, 0x00, 0x80, 0xff, + 0x29, 0xff, 0x0f, 0xff, 0x23, 0xff, 0xe4, 0xfe, 0x5e, 0xfe, 0x2a, 0xfe, + 0x49, 0xfe, 0xbf, 0xfe, 0x3c, 0xff, 0x58, 0xff, 0x6a, 0xff, 0x8a, 0xff, + 0xed, 0xff, 0x6d, 0x00, 0xe2, 0x00, 0x4c, 0x01, 0x7d, 0x01, 0x7a, 0x01, + 0x69, 0x01, 0x5e, 0x01, 0x86, 0x01, 0xa5, 0x01, 0x86, 0x01, 0x44, 0x01, + 0xbe, 0x00, 0x4f, 0x00, 0x15, 0x00, 0x0f, 0x00, 0xfe, 0xff, 0xaa, 0xff, + 0x73, 0xff, 0xd2, 0xfe, 0x88, 0xfe, 0x53, 0xfe, 0x46, 0xfe, 0x14, 0xfe, + 0xaf, 0xfd, 0x0a, 0xfd, 0x62, 0xfc, 0x20, 0xfc, 0xd7, 0xfb, 0x61, 0xfb, + 0xc8, 0xfa, 0xeb, 0xf9, 0x6d, 0xf9, 0x0c, 0xf9, 0xbc, 0xf8, 0x5e, 0xf8, + 0xda, 0xf7, 0x96, 0xf7, 0x76, 0xf7, 0x89, 0xf7, 0x95, 0xf7, 0x9d, 0xf7, + 0x07, 0xf8, 0x49, 0xf8, 0xb5, 0xf8, 0x64, 0xf9, 0xfb, 0xf9, 0xc5, 0xfa, + 0x7e, 0xfb, 0x27, 0xfc, 0xc5, 0xfc, 0x4c, 0xfd, 0x06, 0xfe, 0x9d, 0xfe, + 0x47, 0xff, 0xc5, 0xff, 0xe8, 0xff, 0x2c, 0x00, 0xa2, 0x00, 0x09, 0x01, + 0x3d, 0x01, 0x33, 0x01, 0x3b, 0x01, 0x79, 0x01, 0xaf, 0x01, 0xd0, 0x01, + 0xc4, 0x01, 0xef, 0x01, 0x42, 0x02, 0xa3, 0x02, 0xb1, 0x02, 0xba, 0x02, + 0xf3, 0x02, 0x2f, 0x03, 0x5a, 0x03, 0x85, 0x03, 0x9d, 0x03, 0x64, 0x03, + 0x3d, 0x03, 0x41, 0x03, 0x59, 0x03, 0x65, 0x03, 0x31, 0x03, 0xd1, 0x02, + 0x6e, 0x02, 0x80, 0x02, 0x8f, 0x02, 0x83, 0x02, 0x43, 0x02, 0x14, 0x02, + 0xeb, 0x01, 0xe9, 0x01, 0x0b, 0x02, 0x21, 0x02, 0x1e, 0x02, 0x1f, 0x02, + 0x16, 0x02, 0x2b, 0x02, 0x56, 0x02, 0x79, 0x02, 0x6f, 0x02, 0x62, 0x02, + 0x70, 0x02, 0x73, 0x02, 0x6c, 0x02, 0x64, 0x02, 0x52, 0x02, 0x41, 0x02, + 0x54, 0x02, 0x3a, 0x02, 0x37, 0x02, 0x3b, 0x02, 0x21, 0x02, 0x2f, 0x02, + 0x22, 0x02, 0x19, 0x02, 0x22, 0x02, 0x09, 0x02, 0xe5, 0x01, 0xe7, 0x01, + 0xc2, 0x01, 0xa7, 0x01, 0x97, 0x01, 0x7a, 0x01, 0x66, 0x01, 0x33, 0x01, + 0x12, 0x01, 0xe2, 0x00, 0xe4, 0x00, 0xd8, 0x00, 0x8e, 0x00, 0x6c, 0x00, + 0x73, 0x00, 0x71, 0x00, 0x4e, 0x00, 0x44, 0x00, 0x47, 0x00, 0x1d, 0x00, + 0x0c, 0x00, 0x10, 0x00, 0x26, 0x00, 0x1d, 0x00, 0x0a, 0x00, 0xfa, 0xff, + 0x07, 0x00, 0x0b, 0x00, 0x14, 0x00, 0x0b, 0x00, 0x37, 0x00, 0x62, 0x00, + 0x55, 0x00, 0x64, 0x00, 0x58, 0x00, 0x9e, 0x00, 0xbf, 0x00, 0xcd, 0x00, + 0xca, 0x00, 0xb0, 0x00, 0xc4, 0x00, 0x9f, 0x00, 0x88, 0x00, 0x81, 0x00, + 0x4f, 0x00, 0xe5, 0xff, 0x5f, 0xff, 0x04, 0xff, 0xd5, 0xfe, 0xab, 0xfe, + 0x70, 0xfe, 0xfa, 0xfd, 0x88, 0xfd, 0xb2, 0xfd, 0xb9, 0xfd, 0xa1, 0xfd, + 0x90, 0xfd, 0x5b, 0xfd, 0x5f, 0xfd, 0x0c, 0xfd, 0x23, 0xfd, 0xe8, 0xfc, + 0x87, 0xfc, 0x2b, 0xfc, 0xa4, 0xfb, 0x5e, 0xfb, 0x3c, 0xfb, 0xe6, 0xfa, + 0x58, 0xfa, 0x0b, 0xfa, 0xe5, 0xf9, 0xdb, 0xf9, 0xe0, 0xf9, 0xde, 0xf9, + 0x05, 0xfa, 0x54, 0xfa, 0x93, 0xfa, 0x06, 0xfb, 0x61, 0xfb, 0xad, 0xfb, + 0x00, 0xfc, 0x64, 0xfc, 0xc8, 0xfc, 0xd2, 0xfc, 0x02, 0xfd, 0x71, 0xfd, + 0xaf, 0xfd, 0xc0, 0xfd, 0xa2, 0xfd, 0x83, 0xfd, 0xaf, 0xfd, 0x1f, 0xfe, + 0x2f, 0xfe, 0x15, 0xfe, 0x36, 0xfe, 0x87, 0xfe, 0xea, 0xfe, 0x74, 0xff, + 0xd5, 0xff, 0x47, 0x00, 0x75, 0x00, 0xfd, 0x00, 0x8c, 0x01, 0xd1, 0x01, + 0x70, 0x02, 0x99, 0x02, 0x80, 0x02, 0x97, 0x02, 0xc4, 0x02, 0xda, 0x02, + 0xc9, 0x02, 0xa8, 0x02, 0x89, 0x02, 0x84, 0x02, 0x52, 0x02, 0x16, 0x02, + 0x28, 0x02, 0x42, 0x02, 0x3d, 0x02, 0x30, 0x02, 0x1f, 0x02, 0x2b, 0x02, + 0x56, 0x02, 0x67, 0x02, 0x6e, 0x02, 0x89, 0x02, 0xc9, 0x02, 0xc5, 0x02, + 0xa6, 0x02, 0xc4, 0x02, 0xc1, 0x02, 0xc7, 0x02, 0x98, 0x02, 0x86, 0x02, + 0x60, 0x02, 0x56, 0x02, 0x2b, 0x02, 0x0f, 0x02, 0xf3, 0x01, 0xd0, 0x01, + 0xd4, 0x01, 0xad, 0x01, 0x96, 0x01, 0xbc, 0x01, 0xad, 0x01, 0x9f, 0x01, + 0xc4, 0x01, 0xf7, 0x01, 0x1a, 0x02, 0x35, 0x02, 0x14, 0x02, 0x17, 0x02, + 0x28, 0x02, 0x1f, 0x02, 0x07, 0x02, 0xcf, 0x01, 0x91, 0x01, 0x5c, 0x01, + 0x45, 0x01, 0x09, 0x01, 0xd8, 0x00, 0xa1, 0x00, 0x80, 0x00, 0x60, 0x00, + 0x3b, 0x00, 0x22, 0x00, 0x12, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xf6, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf3, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf5, 0xff, 0xf6, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfc, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf8, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0c, 0x00, 0x0d, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0b, 0x00, 0x0b, 0x00, + 0x0b, 0x00, 0x0b, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0a, 0x00, + 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +uint32_t right_channel_bin_len = 46390; +uint8_t left_channel_bin[] = { + 0x52, 0x49, 0x46, 0x46, 0x2a, 0xba, 0x00, 0x00, 0x57, 0x41, 0x56, 0x45, + 0x66, 0x6d, 0x74, 0x20, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0xc0, 0x5d, 0x00, 0x00, 0x80, 0xbb, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x06, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xff, 0xfb, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xee, 0xff, 0xed, 0xff, + 0xec, 0xff, 0xed, 0xff, 0xec, 0xff, 0xed, 0xff, 0xef, 0xff, 0xf3, 0xff, + 0x01, 0x00, 0x04, 0x00, 0xe8, 0xff, 0xf6, 0xff, 0x08, 0x00, 0x06, 0x00, + 0x09, 0x00, 0x10, 0x00, 0x39, 0x00, 0x5c, 0x00, 0x6e, 0x00, 0x65, 0x00, + 0x6e, 0x00, 0x88, 0x00, 0x80, 0x00, 0x70, 0x00, 0x78, 0x00, 0xab, 0x00, + 0xa1, 0x00, 0xa9, 0x00, 0xab, 0x00, 0xe1, 0x00, 0x21, 0x01, 0x3c, 0x01, + 0x3a, 0x01, 0x3f, 0x01, 0x55, 0x01, 0x88, 0x01, 0xe4, 0x01, 0x02, 0x02, + 0xeb, 0x01, 0xef, 0x01, 0x1c, 0x02, 0x1a, 0x02, 0x3d, 0x02, 0x45, 0x02, + 0x3f, 0x02, 0x1e, 0x02, 0x1b, 0x02, 0x5d, 0x02, 0xb7, 0x02, 0x3c, 0x03, + 0x01, 0x03, 0x31, 0x03, 0x5e, 0x03, 0x47, 0x03, 0x8d, 0x03, 0xf2, 0x03, + 0xe4, 0x03, 0xc7, 0x03, 0x2d, 0x03, 0x32, 0x03, 0xba, 0x03, 0x3e, 0x03, + 0xb3, 0x02, 0x54, 0x02, 0x14, 0x02, 0xd5, 0x01, 0x4e, 0x01, 0xcc, 0x00, + 0xee, 0xff, 0xeb, 0xfe, 0x97, 0xfe, 0x08, 0xfe, 0x83, 0xfd, 0xe7, 0xfc, + 0x52, 0xfc, 0x0b, 0xfc, 0x78, 0xfc, 0xc0, 0xfb, 0xe2, 0xfa, 0x3a, 0xfb, + 0x57, 0xfb, 0x07, 0xfb, 0x9b, 0xfa, 0x09, 0xfa, 0x18, 0xfa, 0xee, 0xfa, + 0xb7, 0xfa, 0x1e, 0xfa, 0x4e, 0xf9, 0x39, 0xf9, 0x7d, 0xf9, 0x21, 0xfa, + 0xcb, 0xfa, 0x9e, 0xfa, 0xa1, 0xfa, 0x92, 0xfa, 0x52, 0xfb, 0x8e, 0xfb, + 0xa4, 0xfb, 0x5e, 0xfb, 0x03, 0xfc, 0x0c, 0xfd, 0xc3, 0xfd, 0xfe, 0xfd, + 0xda, 0xfd, 0x6e, 0xfe, 0x1d, 0xff, 0xf6, 0xff, 0x02, 0x00, 0xfc, 0xff, + 0x4b, 0x00, 0xcc, 0x00, 0x40, 0x01, 0x87, 0x01, 0xf0, 0x01, 0x2e, 0x02, + 0xf6, 0x02, 0x78, 0x03, 0xa4, 0x03, 0x3f, 0x04, 0x8f, 0x04, 0xdf, 0x04, + 0x11, 0x05, 0x97, 0x04, 0x05, 0x05, 0x57, 0x05, 0xae, 0x05, 0xb2, 0x05, + 0x84, 0x05, 0xc2, 0x05, 0x86, 0x05, 0x9f, 0x05, 0xfb, 0x05, 0x0e, 0x06, + 0x10, 0x06, 0xec, 0x05, 0xc4, 0x05, 0xc1, 0x05, 0xa1, 0x05, 0xa2, 0x06, + 0xba, 0x06, 0xbd, 0x05, 0xe9, 0x05, 0xf0, 0x05, 0x9a, 0x06, 0xfd, 0x06, + 0x45, 0x06, 0x3b, 0x06, 0x8d, 0x05, 0x69, 0x05, 0x8e, 0x05, 0x09, 0x05, + 0xbd, 0x04, 0x5f, 0x04, 0xcd, 0x03, 0xd7, 0x03, 0x74, 0x03, 0x81, 0x02, + 0x6e, 0x01, 0x21, 0x00, 0x1a, 0xff, 0xe3, 0xfe, 0x4b, 0xfe, 0x3f, 0xfd, + 0xc3, 0xfb, 0x0d, 0xfb, 0x8a, 0xf9, 0x15, 0xf8, 0x6a, 0xf7, 0x92, 0xf7, + 0xb3, 0xf7, 0xe6, 0xf7, 0xc3, 0xf6, 0xce, 0xf5, 0xc4, 0xf5, 0xe1, 0xf5, + 0xdd, 0xf5, 0x0e, 0xf5, 0xa4, 0xf4, 0xe5, 0xf4, 0xe9, 0xf4, 0x60, 0xf4, + 0xac, 0xf4, 0xba, 0xf4, 0xb2, 0xf5, 0xad, 0xf6, 0xf7, 0xf6, 0x4a, 0xf7, + 0x63, 0xf7, 0xad, 0xf7, 0xe4, 0xf8, 0x89, 0xf9, 0xc0, 0xf9, 0x80, 0xfa, + 0x93, 0xfb, 0xac, 0xfc, 0xae, 0xfd, 0x51, 0xfe, 0xf3, 0xfe, 0x91, 0x00, + 0x12, 0x02, 0x4a, 0x03, 0x60, 0x03, 0x84, 0x03, 0x6a, 0x04, 0xdd, 0x04, + 0xa3, 0x05, 0x45, 0x06, 0xeb, 0x06, 0xd6, 0x07, 0x74, 0x08, 0xaa, 0x08, + 0xdd, 0x08, 0x17, 0x09, 0xb8, 0x09, 0x27, 0x0a, 0x60, 0x0a, 0x7e, 0x0a, + 0xff, 0x0a, 0x18, 0x0b, 0x08, 0x0b, 0x3a, 0x0b, 0x97, 0x0b, 0xfe, 0x0b, + 0xd7, 0x0b, 0x1c, 0x0b, 0xc8, 0x0a, 0x85, 0x0a, 0x4f, 0x0a, 0x8c, 0x0a, + 0x4a, 0x0a, 0xc0, 0x09, 0x80, 0x09, 0xf5, 0x08, 0xc0, 0x08, 0xe4, 0x08, + 0x10, 0x08, 0x4a, 0x06, 0x89, 0x05, 0x51, 0x05, 0x7a, 0x04, 0xd6, 0x02, + 0x2a, 0x01, 0x5d, 0x00, 0x20, 0x00, 0xb6, 0xff, 0x24, 0xfe, 0xc6, 0xfa, + 0x8e, 0xf9, 0xfc, 0xf9, 0xe8, 0xf9, 0x67, 0xf8, 0x84, 0xf5, 0x67, 0xf5, + 0xc7, 0xf6, 0x4c, 0xf6, 0xb9, 0xf5, 0x47, 0xf4, 0x12, 0xf3, 0xa4, 0xf3, + 0xdd, 0xf3, 0x8f, 0xf3, 0x5f, 0xf2, 0x14, 0xf1, 0xa3, 0xf0, 0xb7, 0xf0, + 0xa1, 0xf1, 0x89, 0xf2, 0x7a, 0xf2, 0xa5, 0xf2, 0xea, 0xf2, 0xa1, 0xf3, + 0x5d, 0xf4, 0x01, 0xf5, 0x7a, 0xf5, 0x8a, 0xf5, 0x03, 0xf6, 0x4e, 0xf7, + 0xe7, 0xf8, 0x41, 0xf9, 0xa7, 0xf9, 0x0b, 0xfb, 0x03, 0xfd, 0x2f, 0xff, + 0x30, 0x00, 0xfd, 0x00, 0x2c, 0x01, 0xf8, 0x01, 0xa2, 0x03, 0xa6, 0x04, + 0x55, 0x05, 0xaa, 0x05, 0x00, 0x07, 0x3f, 0x08, 0xd0, 0x08, 0xb4, 0x09, + 0x30, 0x0a, 0xbc, 0x0a, 0xf0, 0x0b, 0x24, 0x0c, 0xe7, 0x0b, 0x00, 0x0c, + 0x7a, 0x0c, 0x30, 0x0d, 0xe2, 0x0c, 0x01, 0x0d, 0x4a, 0x0d, 0x9f, 0x0d, + 0xa8, 0x0d, 0x36, 0x0d, 0x0c, 0x0d, 0x97, 0x0c, 0xad, 0x0c, 0xce, 0x0c, + 0xe5, 0x0b, 0xb0, 0x0b, 0x59, 0x0b, 0xe7, 0x0a, 0xc0, 0x0a, 0x38, 0x0a, + 0xb0, 0x09, 0x08, 0x09, 0xbe, 0x08, 0x6d, 0x08, 0xf0, 0x06, 0xbf, 0x05, + 0xd7, 0x04, 0x0d, 0x05, 0x20, 0x04, 0xe4, 0x02, 0x00, 0x02, 0x35, 0x00, + 0xd0, 0xfd, 0x28, 0xfd, 0x2d, 0xfc, 0x24, 0xfa, 0xc7, 0xf8, 0xde, 0xf6, + 0x2c, 0xf6, 0x5d, 0xf6, 0x74, 0xf5, 0x3f, 0xf5, 0x33, 0xf4, 0xb4, 0xf2, + 0xf9, 0xf2, 0xe3, 0xf2, 0xd6, 0xf2, 0x04, 0xf2, 0xf9, 0xef, 0xf7, 0xee, + 0xc8, 0xef, 0x12, 0xf1, 0x74, 0xf0, 0xbf, 0xee, 0x3c, 0xf0, 0x79, 0xf1, + 0x40, 0xf1, 0x5c, 0xf1, 0xd9, 0xf1, 0xf3, 0xf2, 0xdf, 0xf3, 0xcf, 0xf3, + 0xcb, 0xf3, 0x90, 0xf4, 0x9f, 0xf5, 0x5c, 0xf7, 0x3c, 0xf9, 0x02, 0xfa, + 0x60, 0xfb, 0xcc, 0xfc, 0x7d, 0xfe, 0x11, 0x00, 0x3e, 0x01, 0x67, 0x02, + 0x33, 0x03, 0xbf, 0x04, 0x4a, 0x06, 0x2d, 0x07, 0x49, 0x08, 0x43, 0x09, + 0xb9, 0x0a, 0x54, 0x0c, 0x23, 0x0d, 0xc0, 0x0d, 0x6a, 0x0e, 0x0d, 0x0f, + 0x1c, 0x0f, 0x48, 0x0f, 0x62, 0x0f, 0xcb, 0x0e, 0xfb, 0x0e, 0x83, 0x0f, + 0x99, 0x0f, 0x48, 0x0f, 0x30, 0x0f, 0x28, 0x0f, 0x02, 0x0f, 0x6f, 0x0e, + 0xb5, 0x0d, 0x78, 0x0c, 0xd0, 0x0b, 0x34, 0x0b, 0xc1, 0x0a, 0x18, 0x0a, + 0x12, 0x09, 0x5b, 0x08, 0x8d, 0x07, 0x72, 0x06, 0x17, 0x05, 0xf9, 0x03, + 0xae, 0x03, 0xcf, 0x02, 0xd0, 0x00, 0xf5, 0xfe, 0x4c, 0xfe, 0xb3, 0xfd, + 0x1b, 0xfd, 0x63, 0xfb, 0x9a, 0xf7, 0x62, 0xf6, 0xd7, 0xf7, 0xc8, 0xf7, + 0x15, 0xf6, 0x6e, 0xf4, 0x22, 0xf3, 0x5f, 0xf3, 0xb8, 0xf3, 0xe3, 0xf2, + 0x15, 0xf2, 0x3c, 0xf2, 0x19, 0xf1, 0x8c, 0xf1, 0x98, 0xf1, 0x65, 0xef, + 0xfc, 0xef, 0x7b, 0xf0, 0x76, 0xf1, 0xac, 0xf2, 0x59, 0xf2, 0xb7, 0xf1, + 0x9e, 0xf2, 0xda, 0xf3, 0x33, 0xf4, 0xca, 0xf4, 0x9d, 0xf4, 0x16, 0xf5, + 0x21, 0xf6, 0x9e, 0xf7, 0xfd, 0xf7, 0xb8, 0xf8, 0x85, 0xfa, 0x31, 0xfc, + 0x01, 0xfe, 0x32, 0xff, 0x49, 0x00, 0x8e, 0x01, 0x75, 0x02, 0x74, 0x03, + 0xa8, 0x04, 0x59, 0x05, 0xaa, 0x06, 0xf9, 0x07, 0x16, 0x09, 0x55, 0x0a, + 0x5a, 0x0b, 0xa9, 0x0c, 0x2c, 0x0d, 0xee, 0x0d, 0x32, 0x0e, 0x64, 0x0e, + 0xa0, 0x0e, 0x40, 0x0e, 0xb2, 0x0e, 0x9e, 0x0e, 0xfa, 0x0d, 0xed, 0x0d, + 0x2e, 0x0e, 0xf5, 0x0e, 0xe1, 0x0e, 0xd1, 0x0d, 0xda, 0x0c, 0x96, 0x0c, + 0xa2, 0x0c, 0xd7, 0x0b, 0xaf, 0x0a, 0xdd, 0x09, 0x7e, 0x09, 0x19, 0x09, + 0x23, 0x08, 0x0d, 0x07, 0xb5, 0x06, 0xea, 0x06, 0x21, 0x06, 0x62, 0x04, + 0x92, 0x02, 0x6d, 0x01, 0xee, 0x00, 0x2b, 0x00, 0x62, 0xfe, 0x5a, 0xfc, + 0xeb, 0xfa, 0x63, 0xfa, 0xb5, 0xf9, 0xd0, 0xf7, 0xad, 0xf5, 0xaf, 0xf4, + 0x16, 0xf5, 0x35, 0xf5, 0xf6, 0xf3, 0xc7, 0xf2, 0xea, 0xf1, 0x5b, 0xf2, + 0xf7, 0xf2, 0x8c, 0xf3, 0xc3, 0xf1, 0x53, 0xef, 0xc9, 0xef, 0x79, 0xf0, + 0xc7, 0xf0, 0xbb, 0xf0, 0xfa, 0xef, 0x94, 0xef, 0xae, 0xf0, 0x3b, 0xf2, + 0x3e, 0xf3, 0xe9, 0xf2, 0x05, 0xf3, 0xc9, 0xf3, 0xa7, 0xf4, 0x79, 0xf4, + 0xe6, 0xf4, 0x56, 0xf6, 0xe7, 0xf7, 0x8c, 0xf9, 0xcd, 0xfa, 0x59, 0xfb, + 0x4d, 0xfd, 0xd8, 0xff, 0x8d, 0x01, 0x16, 0x02, 0xdf, 0x02, 0x3f, 0x04, + 0xf0, 0x05, 0x71, 0x07, 0xc6, 0x07, 0x1b, 0x09, 0xa0, 0x0a, 0xd1, 0x0b, + 0x15, 0x0d, 0x6b, 0x0d, 0x4d, 0x0e, 0x59, 0x0f, 0x33, 0x10, 0xe5, 0x0f, + 0x4d, 0x0f, 0x1e, 0x10, 0x0d, 0x11, 0x52, 0x11, 0x90, 0x11, 0xf1, 0x10, + 0xf2, 0x0f, 0x95, 0x0f, 0x45, 0x10, 0x25, 0x10, 0x78, 0x0e, 0xf8, 0x0c, + 0x90, 0x0c, 0x34, 0x0c, 0x80, 0x0b, 0x40, 0x0a, 0xee, 0x08, 0x5d, 0x08, + 0x2e, 0x08, 0x32, 0x07, 0x55, 0x05, 0xdc, 0x03, 0x14, 0x03, 0x6e, 0x02, + 0x5c, 0x00, 0x05, 0xfe, 0x32, 0xfc, 0xe6, 0xfb, 0x39, 0xfb, 0x73, 0xf9, + 0x14, 0xf7, 0xbe, 0xf4, 0x88, 0xf4, 0x5d, 0xf4, 0xfb, 0xf3, 0x1b, 0xf3, + 0xa8, 0xf1, 0x3b, 0xf2, 0x5c, 0xf2, 0x18, 0xf2, 0x2e, 0xf1, 0x97, 0xef, + 0xd2, 0xef, 0x8c, 0xf0, 0x3c, 0xef, 0xd8, 0xed, 0x69, 0xed, 0xc5, 0xee, + 0x19, 0xf0, 0x67, 0xf0, 0xa4, 0xef, 0x08, 0xf0, 0x46, 0xf1, 0x7b, 0xf2, + 0x83, 0xf2, 0x6e, 0xf2, 0x99, 0xf2, 0x60, 0xf4, 0xf2, 0xf5, 0xd2, 0xf5, + 0x34, 0xf6, 0xfc, 0xf7, 0x89, 0xfa, 0x07, 0xfd, 0x6e, 0xfe, 0xec, 0xfe, + 0xaa, 0xff, 0xb4, 0x00, 0xf7, 0x02, 0x54, 0x04, 0x49, 0x05, 0xe2, 0x05, + 0xdc, 0x06, 0xb3, 0x08, 0x46, 0x0a, 0xf6, 0x0b, 0x58, 0x0d, 0xff, 0x0d, + 0x86, 0x0f, 0x67, 0x10, 0x62, 0x10, 0xab, 0x0f, 0xdd, 0x0f, 0x00, 0x11, + 0x03, 0x12, 0x50, 0x12, 0xd7, 0x11, 0xb9, 0x11, 0x53, 0x12, 0x99, 0x12, + 0xd9, 0x12, 0x53, 0x11, 0x4a, 0x0f, 0x97, 0x0e, 0x47, 0x0e, 0x7b, 0x0d, + 0x07, 0x0c, 0xdd, 0x0a, 0xfe, 0x09, 0x9c, 0x09, 0x00, 0x09, 0x09, 0x08, + 0xfc, 0x06, 0xa6, 0x05, 0xdd, 0x03, 0xfd, 0x01, 0x55, 0x00, 0x0d, 0xff, + 0x05, 0xfe, 0x91, 0xfc, 0x46, 0xfb, 0x79, 0xf9, 0x92, 0xf7, 0x52, 0xf6, + 0xaa, 0xf4, 0xd8, 0xf3, 0x8d, 0xf3, 0xe6, 0xf2, 0xb4, 0xf1, 0xc5, 0xf0, + 0xc6, 0xf0, 0xd8, 0xf0, 0x1a, 0xf1, 0xc7, 0xf0, 0x47, 0xef, 0xf7, 0xee, + 0xc7, 0xee, 0x47, 0xee, 0x83, 0xee, 0x8a, 0xed, 0x7f, 0xee, 0x57, 0xef, + 0x94, 0xef, 0x4b, 0xf0, 0x5e, 0xf0, 0xc4, 0xf1, 0x7c, 0xf2, 0xbc, 0xf1, + 0x90, 0xf2, 0x1b, 0xf4, 0x00, 0xf5, 0x56, 0xf6, 0xa1, 0xf6, 0x54, 0xf7, + 0x66, 0xf9, 0x83, 0xfb, 0xfc, 0xfd, 0xb3, 0xff, 0xd0, 0xff, 0xe3, 0x00, + 0x1a, 0x03, 0xa6, 0x04, 0xba, 0x05, 0xaa, 0x06, 0x1f, 0x08, 0xa6, 0x09, + 0xae, 0x0a, 0xd1, 0x0b, 0xbb, 0x0d, 0x2e, 0x0f, 0xfc, 0x0f, 0x55, 0x10, + 0xb5, 0x10, 0x05, 0x11, 0xb8, 0x11, 0x6d, 0x12, 0x14, 0x12, 0xb1, 0x11, + 0x56, 0x11, 0xaf, 0x11, 0xe0, 0x12, 0x9a, 0x12, 0x3b, 0x11, 0x0f, 0x10, + 0xeb, 0x0f, 0xcb, 0x0f, 0x94, 0x0e, 0xce, 0x0c, 0x8a, 0x0b, 0x36, 0x0b, + 0xb8, 0x0a, 0xf9, 0x09, 0x35, 0x09, 0xbd, 0x07, 0xb8, 0x06, 0x45, 0x06, + 0xd4, 0x04, 0x19, 0x03, 0x0e, 0x01, 0x59, 0xff, 0x98, 0xfe, 0x4b, 0xfd, + 0x97, 0xfb, 0x85, 0xfa, 0x56, 0xf8, 0xc6, 0xf6, 0xe6, 0xf5, 0x5c, 0xf4, + 0xf2, 0xf2, 0x07, 0xf4, 0xb8, 0xf3, 0x79, 0xf1, 0x64, 0xf0, 0x2e, 0xef, + 0xf8, 0xef, 0x38, 0xf1, 0x86, 0xf0, 0xde, 0xee, 0x24, 0xed, 0x7d, 0xed, + 0xad, 0xee, 0x7c, 0xee, 0xb8, 0xed, 0x47, 0xed, 0xfa, 0xed, 0x36, 0xf0, + 0x1d, 0xf1, 0x47, 0xf0, 0xca, 0xef, 0xd8, 0xf0, 0x80, 0xf3, 0x71, 0xf4, + 0x77, 0xf4, 0x92, 0xf3, 0xe3, 0xf3, 0x52, 0xf7, 0xd6, 0xf9, 0x5b, 0xfb, + 0xe9, 0xfb, 0x63, 0xfc, 0x52, 0xff, 0xdf, 0x01, 0xaf, 0x03, 0x8c, 0x04, + 0xec, 0x03, 0xd6, 0x05, 0x6b, 0x08, 0x95, 0x0a, 0x20, 0x0c, 0x72, 0x0c, + 0xb4, 0x0d, 0x74, 0x0f, 0x08, 0x11, 0xc4, 0x11, 0x1a, 0x12, 0x4c, 0x12, + 0x79, 0x12, 0xf7, 0x12, 0x0a, 0x13, 0xa1, 0x12, 0xe6, 0x12, 0xed, 0x12, + 0x48, 0x13, 0x8a, 0x13, 0x10, 0x13, 0xcf, 0x12, 0xd2, 0x11, 0x97, 0x10, + 0xb8, 0x0f, 0xe2, 0x0e, 0xaf, 0x0d, 0x3a, 0x0c, 0x3e, 0x0c, 0x71, 0x0a, + 0x81, 0x08, 0x28, 0x08, 0xc3, 0x07, 0xc2, 0x06, 0x81, 0x04, 0x3a, 0x02, + 0x85, 0xff, 0x36, 0xfe, 0x15, 0xfd, 0x98, 0xfb, 0xab, 0xf9, 0xb5, 0xf8, + 0x8e, 0xf6, 0xfa, 0xf4, 0x85, 0xf3, 0x51, 0xf2, 0x59, 0xf1, 0x7e, 0xef, + 0x44, 0xef, 0xe3, 0xed, 0x0b, 0xee, 0xc2, 0xee, 0x7a, 0xee, 0xd3, 0xed, + 0x61, 0xed, 0x7f, 0xed, 0xb9, 0xee, 0x4e, 0xee, 0x7e, 0xec, 0xae, 0xeb, + 0xdd, 0xeb, 0x38, 0xed, 0x2e, 0xef, 0xef, 0xef, 0x21, 0xf0, 0x52, 0xf1, + 0x7a, 0xf2, 0x16, 0xf4, 0x2d, 0xf5, 0x7a, 0xf5, 0x0f, 0xf6, 0x8a, 0xf7, + 0xbb, 0xf8, 0x93, 0xf9, 0x43, 0xfb, 0x55, 0xfd, 0xfb, 0xfe, 0xa3, 0x00, + 0xe9, 0x02, 0x2f, 0x05, 0x8f, 0x06, 0x1f, 0x08, 0xe4, 0x08, 0xb4, 0x09, + 0x96, 0x0a, 0xbc, 0x0b, 0x64, 0x0d, 0x2d, 0x0f, 0x23, 0x10, 0x72, 0x10, + 0x7b, 0x11, 0xee, 0x11, 0x16, 0x13, 0x35, 0x14, 0xfc, 0x13, 0x4f, 0x13, + 0x10, 0x13, 0xe2, 0x12, 0x73, 0x12, 0x45, 0x12, 0x74, 0x12, 0x4d, 0x12, + 0x01, 0x12, 0xc3, 0x10, 0x5d, 0x0f, 0xfd, 0x0e, 0x74, 0x0e, 0x55, 0x0d, + 0x17, 0x0b, 0x72, 0x09, 0x01, 0x09, 0x8d, 0x08, 0x8a, 0x08, 0x29, 0x07, + 0x05, 0x05, 0xbf, 0x03, 0xc5, 0x02, 0x02, 0x02, 0x33, 0x00, 0x67, 0xfd, + 0x2b, 0xfb, 0x09, 0xfa, 0xbd, 0xf8, 0x7f, 0xf7, 0x7a, 0xf5, 0x62, 0xf2, + 0x65, 0xf0, 0x64, 0xef, 0x80, 0xef, 0x98, 0xef, 0xed, 0xed, 0x18, 0xec, + 0x43, 0xeb, 0xe7, 0xeb, 0xc9, 0xed, 0xed, 0xed, 0x2a, 0xec, 0x16, 0xea, + 0x8a, 0xea, 0xec, 0xec, 0x4b, 0xec, 0x45, 0xed, 0x2b, 0xec, 0x62, 0xeb, + 0xdb, 0xee, 0xcc, 0xef, 0x6b, 0xf1, 0x53, 0xf1, 0xac, 0xf1, 0x7e, 0xf3, + 0x9c, 0xf4, 0x04, 0xf6, 0x5b, 0xf7, 0xd6, 0xf8, 0xfc, 0xf9, 0xfa, 0xfa, + 0xe8, 0xfc, 0x92, 0xff, 0x52, 0x02, 0x2e, 0x04, 0x07, 0x05, 0xaf, 0x06, + 0x1d, 0x08, 0x94, 0x0a, 0x3b, 0x0c, 0x21, 0x0c, 0x65, 0x0d, 0x28, 0x0f, + 0xbe, 0x0f, 0x6b, 0x11, 0xf0, 0x11, 0xfe, 0x11, 0x04, 0x14, 0xf8, 0x14, + 0xdf, 0x14, 0xde, 0x14, 0x2c, 0x14, 0xdd, 0x13, 0xb8, 0x14, 0x01, 0x14, + 0xe0, 0x12, 0x03, 0x12, 0xb7, 0x11, 0xa0, 0x11, 0x60, 0x11, 0x14, 0x10, + 0x43, 0x0e, 0x6f, 0x0d, 0x85, 0x0c, 0x89, 0x0b, 0x2d, 0x0a, 0x61, 0x08, + 0xea, 0x07, 0x4c, 0x07, 0x14, 0x06, 0xe3, 0x04, 0x7d, 0x03, 0x37, 0x02, + 0x0f, 0x00, 0xc6, 0xff, 0xba, 0xfd, 0x61, 0xfb, 0x69, 0xfa, 0x4f, 0xf8, + 0x4e, 0xf8, 0x70, 0xf6, 0x6f, 0xf3, 0xc0, 0xf1, 0x47, 0xef, 0x03, 0xef, + 0x1e, 0xef, 0xa1, 0xed, 0x55, 0xec, 0x8c, 0xeb, 0xa4, 0xec, 0xe9, 0xec, + 0x89, 0xed, 0xb0, 0xed, 0x23, 0xed, 0xa5, 0xee, 0xaa, 0xef, 0x46, 0xee, + 0x94, 0xeb, 0x0a, 0xeb, 0xc7, 0xec, 0xed, 0xef, 0x33, 0xf1, 0xb8, 0xef, + 0xfe, 0xee, 0xf6, 0xf0, 0x2e, 0xf4, 0xac, 0xf6, 0x14, 0xf7, 0xa6, 0xf6, + 0x5d, 0xf7, 0xba, 0xf8, 0x9c, 0xfa, 0x9e, 0xfb, 0xd6, 0xfc, 0x83, 0xff, + 0x88, 0x01, 0x1f, 0x03, 0x78, 0x05, 0xe3, 0x06, 0x75, 0x09, 0x26, 0x0b, + 0x99, 0x0b, 0x1c, 0x0d, 0xfa, 0x0d, 0xc1, 0x0f, 0xc5, 0x10, 0x58, 0x11, + 0xdd, 0x11, 0x08, 0x13, 0x41, 0x15, 0x4e, 0x16, 0x56, 0x16, 0xd7, 0x15, + 0xc6, 0x15, 0xda, 0x15, 0x69, 0x14, 0x9f, 0x13, 0x1f, 0x14, 0x6b, 0x13, + 0xc3, 0x12, 0xbd, 0x11, 0x81, 0x10, 0xf5, 0x10, 0xbe, 0x10, 0x7a, 0x0f, + 0x15, 0x0d, 0x45, 0x0c, 0x50, 0x0b, 0xbe, 0x09, 0x9c, 0x08, 0xa5, 0x06, + 0x28, 0x05, 0xcb, 0x03, 0x92, 0x03, 0x3d, 0x02, 0x3e, 0xff, 0xe9, 0xfc, + 0x75, 0xfb, 0xbb, 0xfa, 0xf1, 0xf8, 0x5d, 0xf6, 0xb1, 0xf3, 0xaa, 0xf1, + 0xeb, 0xf0, 0x56, 0xef, 0xa7, 0xec, 0x60, 0xea, 0x00, 0xe9, 0xfc, 0xe9, + 0xe8, 0xee, 0x84, 0xec, 0x46, 0xe8, 0x58, 0xe7, 0x35, 0xe9, 0xa7, 0xef, + 0x9a, 0xf1, 0x71, 0xec, 0x51, 0xe8, 0xe5, 0xe8, 0x3d, 0xec, 0x40, 0xf0, + 0xfd, 0xee, 0xc9, 0xea, 0x54, 0xed, 0x90, 0xf1, 0x65, 0xf6, 0xc9, 0xf6, + 0x2e, 0xf3, 0xd1, 0xf4, 0xf8, 0xf7, 0x3d, 0xfb, 0x9d, 0xfc, 0xe9, 0xfa, + 0x9c, 0xfb, 0xae, 0xfe, 0x14, 0x02, 0x02, 0x05, 0x13, 0x05, 0xc6, 0x06, + 0xf9, 0x08, 0x45, 0x0b, 0xc4, 0x0c, 0xdf, 0x0c, 0x18, 0x0e, 0x61, 0x10, + 0x16, 0x11, 0x58, 0x11, 0xae, 0x10, 0x54, 0x12, 0x1d, 0x15, 0x39, 0x16, + 0xb0, 0x15, 0xb9, 0x14, 0x30, 0x15, 0x2d, 0x16, 0xc8, 0x15, 0xce, 0x14, + 0x3f, 0x13, 0x08, 0x12, 0x00, 0x12, 0x50, 0x11, 0xaa, 0x10, 0x7f, 0x10, + 0xa2, 0x0f, 0x2f, 0x0f, 0xb6, 0x0d, 0x39, 0x0c, 0x4e, 0x0b, 0xfe, 0x09, + 0x27, 0x09, 0x8a, 0x07, 0x7e, 0x05, 0x0b, 0x04, 0x90, 0x03, 0xf7, 0x02, + 0x34, 0x01, 0xca, 0xfe, 0x8d, 0xfd, 0x68, 0xfc, 0xb6, 0xfb, 0x25, 0xf9, + 0x10, 0xf6, 0x14, 0xf4, 0xf5, 0xf1, 0x6a, 0xf0, 0x31, 0xee, 0xe9, 0xeb, + 0x41, 0xea, 0xe8, 0xea, 0xd6, 0xea, 0xc4, 0xea, 0x24, 0xea, 0xaa, 0xe9, + 0x44, 0xeb, 0x84, 0xeb, 0xe7, 0xec, 0xc8, 0xed, 0xe5, 0xeb, 0xa1, 0xeb, + 0x0f, 0xeb, 0x06, 0xeb, 0xd2, 0xec, 0x8a, 0xee, 0x43, 0xef, 0xe1, 0xef, + 0x59, 0xf1, 0xdf, 0xf2, 0xaa, 0xf5, 0xe9, 0xf6, 0xa5, 0xf6, 0xc2, 0xf7, + 0x30, 0xf9, 0x1b, 0xfb, 0x08, 0xfd, 0x95, 0xfd, 0x22, 0xfe, 0x1d, 0x00, + 0x4c, 0x04, 0x76, 0x06, 0x67, 0x07, 0xcb, 0x08, 0x8b, 0x0a, 0x79, 0x0c, + 0x42, 0x0d, 0xfe, 0x0d, 0x99, 0x0e, 0xab, 0x0f, 0x43, 0x11, 0x6e, 0x11, + 0xb3, 0x10, 0xea, 0x12, 0x1f, 0x15, 0xb5, 0x15, 0xd3, 0x15, 0x8d, 0x14, + 0x2a, 0x15, 0xa1, 0x15, 0x11, 0x15, 0x54, 0x14, 0x35, 0x13, 0xb9, 0x12, + 0xec, 0x12, 0xcd, 0x12, 0x5b, 0x11, 0x8f, 0x10, 0xf5, 0x0f, 0x89, 0x0e, + 0x29, 0x0e, 0x13, 0x0d, 0xad, 0x0b, 0x6a, 0x0a, 0x3e, 0x09, 0xab, 0x07, + 0xc9, 0x05, 0xc9, 0x04, 0xc7, 0x03, 0x0a, 0x02, 0xa0, 0x01, 0xf1, 0xfe, + 0xe7, 0xfa, 0xff, 0xf9, 0xb2, 0xf8, 0x43, 0xf7, 0x7f, 0xf5, 0x1d, 0xf1, + 0xbc, 0xee, 0x4a, 0xed, 0x18, 0xec, 0x2f, 0xe9, 0xdb, 0xe8, 0x00, 0xe8, + 0xd1, 0xe8, 0xb7, 0xe9, 0x5f, 0xe7, 0x64, 0xe7, 0x65, 0xe8, 0xa7, 0xea, + 0xc2, 0xeb, 0xd2, 0xea, 0xfc, 0xe8, 0x76, 0xe8, 0x7a, 0xea, 0x65, 0xec, + 0x29, 0xed, 0x82, 0xed, 0x36, 0xee, 0xff, 0xef, 0xbb, 0xf2, 0xc8, 0xf4, + 0xe3, 0xf5, 0x3d, 0xf6, 0xe1, 0xf7, 0x25, 0xfb, 0x80, 0xfc, 0xc1, 0xfc, + 0x09, 0xfd, 0x0f, 0xff, 0xc0, 0x01, 0x3f, 0x05, 0xb4, 0x06, 0xa2, 0x07, + 0xc0, 0x08, 0xa1, 0x0b, 0xb7, 0x0d, 0xf6, 0x0f, 0x16, 0x10, 0xf8, 0x0e, + 0x42, 0x10, 0xb8, 0x11, 0xbe, 0x13, 0xbb, 0x14, 0x71, 0x14, 0x07, 0x15, + 0xfa, 0x15, 0x1f, 0x16, 0x0a, 0x16, 0xf6, 0x15, 0x3e, 0x17, 0x04, 0x17, + 0x1f, 0x15, 0x34, 0x13, 0x34, 0x12, 0xe8, 0x12, 0x9f, 0x12, 0x08, 0x12, + 0x85, 0x10, 0x28, 0x0e, 0xa4, 0x0d, 0x2b, 0x0d, 0x25, 0x0c, 0xc1, 0x0a, + 0xed, 0x08, 0xa9, 0x07, 0xab, 0x06, 0xed, 0x04, 0xbe, 0x02, 0x3d, 0x01, + 0x40, 0x00, 0x87, 0xfe, 0x9b, 0xfc, 0x5f, 0xfa, 0x73, 0xf7, 0x56, 0xf6, + 0xa5, 0xf5, 0x6c, 0xf3, 0x3b, 0xf0, 0xc1, 0xec, 0x53, 0xea, 0x3f, 0xea, + 0xfb, 0xe8, 0x1c, 0xe8, 0x79, 0xe7, 0xed, 0xe6, 0xf5, 0xe5, 0xde, 0xe6, + 0x47, 0xe9, 0x79, 0xeb, 0xff, 0xec, 0x14, 0xec, 0xf2, 0xe9, 0x25, 0xe9, + 0xa3, 0xea, 0xf3, 0xec, 0x36, 0xee, 0x28, 0xee, 0x8b, 0xee, 0xf2, 0xee, + 0x4f, 0xf2, 0x2d, 0xf5, 0x7e, 0xf7, 0x4c, 0xf9, 0x53, 0xfa, 0x02, 0xfc, + 0x3c, 0xfc, 0xf9, 0xfb, 0x98, 0xfe, 0x88, 0x00, 0xf5, 0x02, 0x04, 0x05, + 0x99, 0x05, 0x50, 0x07, 0xe3, 0x09, 0x62, 0x0d, 0xa0, 0x0e, 0xf4, 0x0e, + 0x9b, 0x0f, 0x1f, 0x11, 0x50, 0x12, 0x2b, 0x12, 0x6b, 0x11, 0xb6, 0x11, + 0xc2, 0x13, 0x45, 0x15, 0x8a, 0x15, 0x57, 0x15, 0x35, 0x15, 0x1c, 0x16, + 0x84, 0x16, 0x12, 0x15, 0xf0, 0x12, 0xf7, 0x11, 0x54, 0x12, 0x49, 0x12, + 0x78, 0x11, 0xd4, 0x0f, 0x4f, 0x0e, 0xcb, 0x0d, 0xc7, 0x0d, 0x35, 0x0d, + 0x3b, 0x0c, 0x73, 0x0b, 0x9c, 0x09, 0xe5, 0x06, 0x16, 0x05, 0xea, 0x03, + 0x68, 0x03, 0xa9, 0x02, 0x55, 0x00, 0x80, 0xfd, 0x20, 0xfb, 0xf6, 0xf8, + 0xff, 0xf8, 0xcd, 0xf7, 0x6a, 0xf5, 0x46, 0xf2, 0xcd, 0xee, 0x3e, 0xec, + 0x49, 0xea, 0xd4, 0xe8, 0x99, 0xe7, 0x82, 0xe5, 0xd9, 0xe5, 0x48, 0xe6, + 0x35, 0xe6, 0x30, 0xe8, 0xd4, 0xe7, 0xbf, 0xe8, 0xe4, 0xe9, 0xd7, 0xea, + 0x72, 0xeb, 0x6f, 0xea, 0x5b, 0xe9, 0xed, 0xe9, 0x74, 0xeb, 0xfa, 0xed, + 0xc4, 0xef, 0x91, 0xf0, 0x66, 0xf2, 0xa4, 0xf4, 0x07, 0xf7, 0xaf, 0xfb, + 0x2b, 0xfd, 0xf6, 0xfc, 0x9f, 0xfe, 0x65, 0xff, 0xcc, 0xff, 0x51, 0x02, + 0x3d, 0x04, 0x18, 0x06, 0xea, 0x08, 0x1c, 0x0a, 0x44, 0x0b, 0xdb, 0x0d, + 0x1b, 0x10, 0x76, 0x11, 0xcb, 0x12, 0x69, 0x12, 0xac, 0x11, 0x73, 0x12, + 0x1f, 0x13, 0x78, 0x13, 0x2b, 0x15, 0x08, 0x15, 0xd4, 0x14, 0xb1, 0x14, + 0xbe, 0x14, 0x15, 0x16, 0x19, 0x16, 0x0d, 0x14, 0xc1, 0x12, 0x9d, 0x11, + 0xaf, 0x11, 0xd3, 0x10, 0x15, 0x10, 0xd8, 0x0e, 0x75, 0x0d, 0xa3, 0x0d, + 0xeb, 0x0c, 0x90, 0x0b, 0x56, 0x0a, 0x34, 0x09, 0x6e, 0x08, 0x14, 0x07, + 0x87, 0x04, 0x27, 0x02, 0xed, 0x00, 0xcd, 0xff, 0x46, 0xfe, 0x7f, 0xfc, + 0xae, 0xf9, 0x13, 0xf7, 0x2f, 0xf7, 0xf1, 0xf5, 0x27, 0xf3, 0xe5, 0xef, + 0x2c, 0xec, 0x52, 0xea, 0x8f, 0xe9, 0x30, 0xe7, 0x56, 0xe5, 0x16, 0xe5, + 0x45, 0xe5, 0xbf, 0xe6, 0xf9, 0xe6, 0x96, 0xe6, 0x8e, 0xe8, 0x51, 0xec, + 0xed, 0xec, 0x1d, 0xeb, 0xdd, 0xe8, 0x4c, 0xe9, 0xfb, 0xec, 0x8f, 0xee, + 0x0b, 0xee, 0xca, 0xed, 0xfc, 0xef, 0x97, 0xf4, 0xc2, 0xf8, 0x21, 0xf9, + 0xb9, 0xf8, 0xe8, 0xfa, 0x0f, 0x00, 0x90, 0x03, 0x9a, 0x01, 0xfd, 0xff, + 0xeb, 0x00, 0xd4, 0x03, 0x8e, 0x07, 0xda, 0x08, 0xa0, 0x08, 0xc1, 0x0a, + 0xfc, 0x0d, 0x50, 0x10, 0x82, 0x12, 0x43, 0x12, 0xcf, 0x10, 0xdb, 0x11, + 0x80, 0x11, 0x41, 0x12, 0xe2, 0x12, 0x8d, 0x12, 0x2c, 0x13, 0xe6, 0x13, + 0x25, 0x14, 0x2d, 0x14, 0x7b, 0x14, 0xb2, 0x14, 0x29, 0x14, 0x60, 0x13, + 0xb7, 0x11, 0xf1, 0x10, 0x4d, 0x11, 0x57, 0x10, 0xe0, 0x0e, 0x3c, 0x0e, + 0x21, 0x0e, 0x23, 0x0d, 0x8c, 0x0c, 0xf8, 0x0b, 0x20, 0x0b, 0xf3, 0x09, + 0xd7, 0x07, 0xd8, 0x04, 0xf2, 0x02, 0x8b, 0x01, 0x94, 0xff, 0xa4, 0xfd, + 0xc3, 0xfa, 0x15, 0xf9, 0x9d, 0xf8, 0x51, 0xf7, 0x07, 0xf5, 0xd6, 0xf1, + 0x3f, 0xee, 0xce, 0xeb, 0x36, 0xe9, 0x51, 0xe6, 0x4c, 0xe4, 0x1e, 0xe4, + 0x56, 0xe2, 0x03, 0xe2, 0x40, 0xe3, 0xde, 0xe3, 0x29, 0xe7, 0x20, 0xeb, + 0xa4, 0xea, 0x51, 0xea, 0x99, 0xea, 0xba, 0xe9, 0x56, 0xec, 0x92, 0xed, + 0x11, 0xec, 0x0f, 0xee, 0x43, 0xf1, 0x96, 0xf3, 0x23, 0xf6, 0xd3, 0xf7, + 0xd9, 0xf9, 0x86, 0xfd, 0x31, 0x00, 0xd9, 0x01, 0xda, 0x03, 0xc7, 0x04, + 0x2f, 0x05, 0xb0, 0x05, 0x99, 0x06, 0xef, 0x08, 0x4e, 0x0c, 0x17, 0x0e, + 0x4e, 0x0f, 0xa9, 0x0f, 0x32, 0x10, 0xc0, 0x11, 0x42, 0x13, 0x10, 0x14, + 0xfa, 0x12, 0x9b, 0x11, 0x88, 0x10, 0xb3, 0x10, 0xb0, 0x11, 0xe4, 0x12, + 0x0c, 0x13, 0xcb, 0x12, 0xdb, 0x11, 0xd0, 0x11, 0x15, 0x13, 0xb9, 0x12, + 0x1c, 0x12, 0x2e, 0x11, 0x37, 0x10, 0x5f, 0x0f, 0x85, 0x0e, 0xe0, 0x0d, + 0x30, 0x0e, 0xff, 0x0d, 0xe4, 0x0d, 0x5a, 0x0c, 0x12, 0x0b, 0x09, 0x0a, + 0x2c, 0x09, 0x2b, 0x08, 0xac, 0x05, 0xe2, 0x02, 0x51, 0x00, 0x0f, 0xfe, + 0xb1, 0xfc, 0x1e, 0xfb, 0x95, 0xf8, 0xd4, 0xf5, 0x1d, 0xf3, 0xaf, 0xf0, + 0xaa, 0xed, 0x78, 0xea, 0x98, 0xe6, 0xa9, 0xe4, 0x0f, 0xe4, 0x41, 0xe3, + 0x98, 0xe3, 0xf5, 0xe1, 0xd2, 0xe2, 0x21, 0xe6, 0x2b, 0xe7, 0x71, 0xe8, + 0x8c, 0xe9, 0x4a, 0xea, 0xe6, 0xeb, 0xeb, 0xeb, 0xe8, 0xeb, 0xfb, 0xea, + 0xf0, 0xea, 0x6a, 0xed, 0x96, 0xef, 0xb5, 0xf4, 0xaf, 0xf7, 0x0c, 0xf9, + 0xd7, 0xfc, 0x87, 0xfd, 0x2f, 0x00, 0x6e, 0x02, 0x30, 0x03, 0x6c, 0x04, + 0xcf, 0x05, 0x9b, 0x05, 0xbc, 0x07, 0xae, 0x09, 0xc4, 0x0b, 0xd3, 0x0e, + 0x1e, 0x10, 0xc0, 0x11, 0x8f, 0x12, 0x2d, 0x12, 0x54, 0x13, 0xcf, 0x12, + 0x1a, 0x12, 0xee, 0x10, 0x70, 0x0f, 0x42, 0x10, 0xe7, 0x10, 0x99, 0x11, + 0x8a, 0x11, 0x26, 0x12, 0xb4, 0x12, 0x71, 0x13, 0xaa, 0x12, 0xd9, 0x11, + 0x19, 0x10, 0x4d, 0x10, 0x84, 0x10, 0xc1, 0x0f, 0x61, 0x0f, 0xc9, 0x0e, + 0xaf, 0x0e, 0x41, 0x0f, 0x66, 0x0f, 0xc7, 0x0e, 0x12, 0x0e, 0x1d, 0x0c, + 0xc3, 0x09, 0x93, 0x07, 0x5c, 0x06, 0x68, 0x04, 0x6e, 0x01, 0x6b, 0xfd, + 0x1d, 0xfa, 0x52, 0xfa, 0x39, 0xf8, 0x3e, 0xf5, 0x19, 0xf1, 0x19, 0xee, + 0x0d, 0xeb, 0x14, 0xe8, 0x4e, 0xe5, 0xc2, 0xe2, 0x9c, 0xe2, 0xfc, 0xe2, + 0x7f, 0xe2, 0x02, 0xe3, 0x41, 0xe4, 0x31, 0xe8, 0xeb, 0xea, 0x21, 0xeb, + 0xd0, 0xe9, 0xf5, 0xe8, 0xf7, 0xe9, 0x8b, 0xed, 0x94, 0xed, 0x61, 0xec, + 0x75, 0xed, 0x5c, 0xef, 0x27, 0xf4, 0xf2, 0xf6, 0xd2, 0xf8, 0x8f, 0xfb, + 0x6b, 0xfe, 0x1d, 0x01, 0x42, 0x02, 0x4c, 0x02, 0x7c, 0x03, 0x3f, 0x04, + 0xb6, 0x05, 0x0e, 0x07, 0xc9, 0x07, 0xef, 0x09, 0x6e, 0x0c, 0xd7, 0x0e, + 0x21, 0x10, 0xf1, 0x0f, 0x23, 0x10, 0x37, 0x10, 0xc6, 0x11, 0xcd, 0x10, + 0x3d, 0x0f, 0xf0, 0x0e, 0xda, 0x0e, 0x24, 0x0f, 0xb6, 0x0f, 0x30, 0x10, + 0x2d, 0x0f, 0x6d, 0x10, 0x60, 0x11, 0x04, 0x11, 0xa1, 0x10, 0xd9, 0x0f, + 0x0b, 0x10, 0x4e, 0x10, 0x6d, 0x10, 0xdc, 0x10, 0x96, 0x10, 0x9a, 0x10, + 0xfb, 0x11, 0x11, 0x12, 0xc7, 0x11, 0x0b, 0x11, 0x56, 0x0f, 0xa4, 0x0c, + 0x8d, 0x0a, 0x8a, 0x07, 0xaf, 0x04, 0xc4, 0x00, 0x7b, 0xfd, 0x25, 0xfb, + 0x97, 0xf8, 0x93, 0xf5, 0xe3, 0xf2, 0x2c, 0xef, 0xcc, 0xea, 0x98, 0xe6, + 0xb3, 0xe3, 0xea, 0xe2, 0x0b, 0xe3, 0xb6, 0xe2, 0x56, 0xe1, 0xfe, 0xdf, + 0xf6, 0xe1, 0x1c, 0xe5, 0x62, 0xe8, 0x4d, 0xe9, 0x4d, 0xe8, 0x4f, 0xe8, + 0x64, 0xe9, 0xcf, 0xeb, 0x17, 0xed, 0x13, 0xee, 0xcf, 0xec, 0x0b, 0xee, + 0xd0, 0xf2, 0xca, 0xf6, 0x9f, 0xf9, 0x6f, 0xfc, 0x14, 0xff, 0x46, 0x02, + 0x08, 0x04, 0x72, 0x02, 0x21, 0x04, 0x1d, 0x05, 0xb1, 0x06, 0xd4, 0x09, + 0x75, 0x09, 0x9a, 0x09, 0xe3, 0x0a, 0x12, 0x0d, 0x34, 0x0f, 0x26, 0x0f, + 0xe5, 0x0e, 0x59, 0x0f, 0xdc, 0x0f, 0x8d, 0x0e, 0x2c, 0x0c, 0xce, 0x0a, + 0x2b, 0x0b, 0x63, 0x0d, 0x5a, 0x0e, 0x93, 0x0d, 0x35, 0x0c, 0x60, 0x0d, + 0xa0, 0x0f, 0xbe, 0x10, 0xd8, 0x0e, 0xfa, 0x0c, 0x34, 0x0d, 0xa3, 0x0e, + 0x49, 0x0f, 0x98, 0x0e, 0xa2, 0x0d, 0x3b, 0x0f, 0xc5, 0x11, 0xcd, 0x12, + 0x45, 0x12, 0x70, 0x10, 0x08, 0x0f, 0x87, 0x0e, 0x17, 0x0d, 0x26, 0x0a, + 0x57, 0x05, 0xf5, 0xff, 0x1b, 0xfe, 0xa4, 0xfc, 0xef, 0xfa, 0x5f, 0xf6, + 0xf6, 0xf1, 0xae, 0xee, 0x0d, 0xea, 0x02, 0xe8, 0x03, 0xe6, 0x9d, 0xe5, + 0xd3, 0xe5, 0xf9, 0xe4, 0x04, 0xe5, 0x7e, 0xe6, 0x29, 0xe7, 0x51, 0xe9, + 0x73, 0xe9, 0x00, 0xeb, 0xad, 0xeb, 0xf8, 0xe8, 0x59, 0xe8, 0x07, 0xe8, + 0x23, 0xeb, 0x63, 0xef, 0x44, 0xf1, 0x52, 0xf1, 0xbe, 0xf2, 0xed, 0xf6, + 0x22, 0xfb, 0x2c, 0xff, 0xcf, 0xfe, 0xf6, 0xfe, 0x15, 0x01, 0xaf, 0x02, + 0xf1, 0x03, 0xe8, 0x04, 0x87, 0x04, 0x6e, 0x06, 0xb1, 0x08, 0x56, 0x09, + 0xfe, 0x0a, 0x71, 0x09, 0x2c, 0x0a, 0xb5, 0x0b, 0x37, 0x0c, 0x18, 0x0c, + 0xb5, 0x0a, 0x4e, 0x0a, 0x61, 0x0a, 0x72, 0x0a, 0x9e, 0x09, 0x15, 0x09, + 0x2c, 0x0a, 0x8b, 0x0c, 0x46, 0x0e, 0xfc, 0x0c, 0xed, 0x0a, 0xc8, 0x0a, + 0x01, 0x0e, 0x99, 0x0f, 0x2f, 0x0f, 0x97, 0x0c, 0x9d, 0x0c, 0x20, 0x0f, + 0xbb, 0x11, 0xbe, 0x12, 0x4b, 0x12, 0xe5, 0x11, 0x9b, 0x12, 0x7f, 0x13, + 0x56, 0x11, 0x84, 0x0c, 0xd1, 0x08, 0x6a, 0x08, 0xd9, 0x05, 0x72, 0x01, + 0xc5, 0xfc, 0x1f, 0xf9, 0xe9, 0xf9, 0xf5, 0xf6, 0xa0, 0xf0, 0x27, 0xeb, + 0xcf, 0xe5, 0x11, 0xe6, 0x27, 0xea, 0x4b, 0xe9, 0xc2, 0xe7, 0x49, 0xe7, + 0xd2, 0xe5, 0x7b, 0xe9, 0x65, 0xeb, 0xb1, 0xe8, 0xde, 0xe7, 0x33, 0xe9, + 0x1e, 0xea, 0x7e, 0xec, 0x60, 0xed, 0x21, 0xea, 0x25, 0xee, 0xad, 0xf1, + 0x27, 0xf5, 0x4b, 0xf9, 0xf1, 0xf9, 0xa6, 0xfc, 0x6a, 0x00, 0x3e, 0x00, + 0x9f, 0x01, 0x5e, 0x02, 0xac, 0x03, 0xa5, 0x05, 0x6d, 0x05, 0xb9, 0x04, + 0xfd, 0x05, 0xd3, 0x07, 0xcd, 0x08, 0xbf, 0x09, 0x34, 0x09, 0x42, 0x09, + 0xda, 0x07, 0x4f, 0x08, 0x35, 0x09, 0xd5, 0x08, 0x83, 0x08, 0xfe, 0x08, + 0xcc, 0x07, 0x5b, 0x07, 0x58, 0x07, 0x6f, 0x08, 0x83, 0x0a, 0xd1, 0x0a, + 0x20, 0x09, 0x1e, 0x0b, 0x1c, 0x0d, 0x16, 0x0d, 0x62, 0x0e, 0x71, 0x0e, + 0xa1, 0x0d, 0xdd, 0x0f, 0x69, 0x11, 0x4a, 0x14, 0x03, 0x15, 0xbc, 0x13, + 0xb2, 0x12, 0x15, 0x12, 0x9a, 0x10, 0x04, 0x0f, 0x0e, 0x0c, 0x0b, 0x06, + 0x3b, 0x02, 0x7f, 0xfe, 0x85, 0xfb, 0x4e, 0xf8, 0xc4, 0xf4, 0xe0, 0xed, + 0x09, 0xe8, 0x75, 0xe4, 0xb4, 0xe2, 0x62, 0xe5, 0x8c, 0xe8, 0x98, 0xe7, + 0xe3, 0xe5, 0x03, 0xe8, 0x9e, 0xea, 0xc6, 0xf0, 0xf6, 0xf2, 0x95, 0xf1, + 0xad, 0xef, 0x91, 0xf0, 0xbe, 0xf1, 0x58, 0xf4, 0x02, 0xf5, 0x1d, 0xf6, + 0xb0, 0xfa, 0xfa, 0xfe, 0x10, 0x04, 0x95, 0x06, 0x0f, 0x09, 0xf4, 0x0a, + 0xd6, 0x0b, 0xcb, 0x0b, 0x91, 0x09, 0xf6, 0x07, 0xc8, 0x06, 0xeb, 0x07, + 0xeb, 0x06, 0xb6, 0x03, 0xde, 0x01, 0x84, 0xff, 0x4d, 0x01, 0xc5, 0x02, + 0x03, 0x01, 0x2e, 0xfe, 0x1e, 0xfb, 0x01, 0xfa, 0xc1, 0xf9, 0xb1, 0xfa, + 0xd2, 0xf8, 0x03, 0xf8, 0x76, 0xf9, 0x25, 0xfb, 0x31, 0xfe, 0xa9, 0x01, + 0xea, 0x03, 0x19, 0x07, 0xe6, 0x08, 0xf9, 0x0a, 0x8c, 0x0c, 0x50, 0x0e, + 0x52, 0x10, 0xe4, 0x12, 0x0f, 0x15, 0xa1, 0x16, 0x19, 0x1a, 0xf2, 0x1b, + 0x3d, 0x1d, 0x2f, 0x1d, 0xd4, 0x19, 0xa5, 0x15, 0xad, 0x11, 0x2c, 0x0d, + 0x71, 0x08, 0x3e, 0x05, 0x7f, 0x01, 0xb4, 0xfb, 0xf3, 0xf6, 0x38, 0xed, + 0x46, 0xe8, 0x22, 0xe2, 0x9d, 0xdf, 0x01, 0xdd, 0x06, 0xdc, 0x08, 0xdc, + 0xe9, 0xdd, 0xe2, 0xe1, 0x7c, 0xe8, 0xf7, 0xee, 0xb5, 0xf4, 0x42, 0xf7, + 0xf9, 0xf7, 0x34, 0xfb, 0xd5, 0xfc, 0x9b, 0xff, 0xa8, 0x01, 0x5f, 0x02, + 0xe6, 0x02, 0x35, 0x05, 0xe2, 0x08, 0x42, 0x0e, 0xf1, 0x14, 0x1d, 0x17, + 0xd0, 0x16, 0x27, 0x13, 0x62, 0x0e, 0xe2, 0x08, 0xa5, 0x03, 0xc6, 0xfe, + 0x7f, 0xf9, 0x63, 0xf7, 0xe5, 0xf5, 0x23, 0xf5, 0xdb, 0xf3, 0xcf, 0xf2, + 0x45, 0xf1, 0x44, 0xf0, 0x36, 0xf0, 0x63, 0xee, 0xaf, 0xec, 0x50, 0xe8, + 0x4b, 0xe7, 0xa7, 0xe8, 0xff, 0xec, 0xff, 0xf3, 0xca, 0xf7, 0x01, 0x00, + 0x75, 0x07, 0xd9, 0x0e, 0x43, 0x15, 0x22, 0x19, 0x89, 0x1d, 0xa6, 0x20, + 0x44, 0x22, 0x45, 0x24, 0x5e, 0x26, 0x83, 0x29, 0x4a, 0x2b, 0xbc, 0x2b, + 0xba, 0x29, 0x84, 0x25, 0x57, 0x20, 0x6d, 0x18, 0x73, 0x11, 0xad, 0x08, + 0x4d, 0xfd, 0xa3, 0xf7, 0xa7, 0xf0, 0x98, 0xed, 0x85, 0xea, 0x54, 0xe4, + 0xa5, 0xdd, 0x29, 0xd4, 0x9d, 0xcb, 0xc2, 0xc4, 0x9f, 0xc5, 0x4c, 0xc8, + 0x69, 0xd0, 0x13, 0xd7, 0x36, 0xdd, 0x3d, 0xe9, 0x62, 0xf5, 0xf1, 0x02, + 0x07, 0x0c, 0x37, 0x11, 0x3f, 0x17, 0xb6, 0x1b, 0x73, 0x1f, 0x91, 0x20, + 0x45, 0x20, 0x61, 0x22, 0xcf, 0x23, 0x3f, 0x26, 0xa5, 0x26, 0x33, 0x27, + 0xd9, 0x1e, 0xb8, 0x15, 0x25, 0x0b, 0x14, 0xfe, 0xeb, 0xf3, 0x80, 0xec, + 0xdf, 0xe0, 0x6b, 0xd8, 0x45, 0xd6, 0x52, 0xd3, 0x55, 0xd7, 0x2d, 0xd8, + 0xab, 0xd5, 0x7b, 0xd7, 0x5c, 0xda, 0x76, 0xdf, 0xd4, 0xe3, 0xec, 0xe2, + 0x38, 0xe8, 0x94, 0xed, 0x00, 0xf8, 0xf0, 0x02, 0x62, 0x0b, 0x80, 0x16, + 0xfb, 0x1f, 0x9a, 0x28, 0xc0, 0x30, 0x64, 0x34, 0x0e, 0x32, 0x46, 0x33, + 0x8d, 0x33, 0x66, 0x35, 0xe8, 0x32, 0x50, 0x2f, 0x78, 0x2a, 0xfa, 0x26, + 0xc7, 0x20, 0xf3, 0x19, 0x30, 0x11, 0xb9, 0x09, 0x92, 0x02, 0xb1, 0xfa, + 0x80, 0xee, 0x49, 0xe3, 0xbe, 0xdd, 0x62, 0xd8, 0x21, 0xd5, 0xc3, 0xcc, + 0xf9, 0xc2, 0x3e, 0xb5, 0xdf, 0xb0, 0xb7, 0xae, 0x95, 0xb4, 0xa8, 0xc5, + 0x6f, 0xd4, 0x19, 0xe9, 0xa5, 0xfc, 0xc6, 0x10, 0x6d, 0x23, 0xfa, 0x32, + 0x5c, 0x3b, 0x69, 0x3d, 0xac, 0x3f, 0x62, 0x3b, 0x95, 0x39, 0xb9, 0x32, + 0xff, 0x2e, 0xb1, 0x2b, 0x60, 0x28, 0xb1, 0x23, 0x24, 0x1c, 0xef, 0x0f, + 0x29, 0xff, 0x3a, 0xef, 0x03, 0xdf, 0x7f, 0xd2, 0xab, 0xca, 0xf5, 0xc5, + 0x0f, 0xc3, 0xb0, 0xc3, 0xb8, 0xc4, 0x71, 0xc8, 0xb2, 0xcd, 0x24, 0xd3, + 0xdb, 0xdc, 0x59, 0xe5, 0xd0, 0xeb, 0xb8, 0xf1, 0x0a, 0xf8, 0xbb, 0x00, + 0x58, 0x0c, 0x3e, 0x17, 0x42, 0x1e, 0xdc, 0x25, 0x6d, 0x2b, 0xe9, 0x2f, + 0xa2, 0x33, 0xa6, 0x32, 0x54, 0x33, 0xa8, 0x31, 0x7d, 0x2d, 0xd7, 0x28, + 0xe7, 0x23, 0x8d, 0x1e, 0x00, 0x1b, 0x38, 0x16, 0x4c, 0x0d, 0xa9, 0x05, + 0xb6, 0xff, 0x2e, 0xfb, 0x75, 0xf5, 0x4e, 0xef, 0x68, 0xea, 0xf0, 0xe5, + 0x29, 0xe2, 0xa9, 0xdc, 0x44, 0xd6, 0xd8, 0xd0, 0x2e, 0xcc, 0x82, 0xc5, + 0xb6, 0xbe, 0x15, 0xb8, 0x98, 0xb8, 0xd2, 0xc4, 0x84, 0xd7, 0xc5, 0xeb, + 0xfa, 0xff, 0x15, 0x15, 0x7c, 0x28, 0x37, 0x3c, 0x60, 0x46, 0x79, 0x45, + 0x3c, 0x43, 0x37, 0x3e, 0xf5, 0x3a, 0xf3, 0x36, 0x24, 0x2d, 0xed, 0x24, + 0xcb, 0x1e, 0x3c, 0x19, 0x61, 0x0f, 0xbd, 0x03, 0x31, 0xf5, 0xb2, 0xe8, + 0x11, 0xdd, 0x58, 0xd3, 0x62, 0xcb, 0xe0, 0xc6, 0xc3, 0xc3, 0x00, 0xc2, + 0xd3, 0xc4, 0xb2, 0xc9, 0x2a, 0xd2, 0xe6, 0xd9, 0xf2, 0xe3, 0x75, 0xec, + 0x4a, 0xf6, 0xf8, 0xfe, 0x49, 0x06, 0x5c, 0x0c, 0xf2, 0x10, 0x6e, 0x18, + 0x24, 0x1f, 0x81, 0x25, 0xff, 0x28, 0xba, 0x2a, 0x67, 0x2c, 0xe1, 0x2d, + 0x97, 0x27, 0x14, 0x21, 0xf8, 0x1b, 0x53, 0x18, 0xdf, 0x19, 0x62, 0x16, + 0xe4, 0x11, 0x77, 0x0e, 0x61, 0x09, 0x89, 0x05, 0xed, 0x02, 0x7c, 0xfe, + 0x57, 0xf9, 0x48, 0xf7, 0xa9, 0xf2, 0xec, 0xed, 0xca, 0xe9, 0x51, 0xe5, + 0x0f, 0xe0, 0x99, 0xda, 0x12, 0xd3, 0xb0, 0xcb, 0x44, 0xc5, 0x46, 0xc0, + 0x91, 0xbd, 0xe9, 0xbf, 0x97, 0xcb, 0xa0, 0xdf, 0x56, 0xf9, 0x1e, 0x13, + 0x35, 0x22, 0xf2, 0x32, 0xd0, 0x3d, 0xc4, 0x45, 0x55, 0x49, 0x99, 0x43, + 0x34, 0x3d, 0x9b, 0x35, 0x06, 0x2f, 0xe1, 0x26, 0x5b, 0x23, 0x70, 0x19, + 0x44, 0x10, 0xf4, 0x04, 0x6d, 0xf7, 0x46, 0xe5, 0x9a, 0xd7, 0xf7, 0xcd, + 0xde, 0xc9, 0x45, 0xc6, 0x42, 0xc2, 0x13, 0xc4, 0x27, 0xc9, 0x87, 0xd3, + 0x06, 0xdc, 0x42, 0xe4, 0x0e, 0xed, 0xf7, 0xf5, 0xf9, 0xfd, 0xae, 0x05, + 0x7e, 0x0a, 0x1f, 0x0f, 0xad, 0x16, 0x55, 0x1c, 0xec, 0x20, 0xa3, 0x22, + 0x74, 0x21, 0x58, 0x21, 0x9f, 0x20, 0x02, 0x22, 0x59, 0x1e, 0xe9, 0x17, + 0x5f, 0x12, 0x5b, 0x0d, 0x47, 0x0d, 0xb2, 0x0d, 0xb6, 0x0d, 0xfc, 0x0c, + 0xde, 0x0c, 0x00, 0x0a, 0x6f, 0x04, 0x7e, 0x01, 0x66, 0xfd, 0xb6, 0xfa, + 0x36, 0xf7, 0xb0, 0xf0, 0x90, 0xeb, 0xf2, 0xe3, 0x9d, 0xdd, 0x85, 0xd9, + 0x15, 0xcf, 0x33, 0xc9, 0x0a, 0xc2, 0x5f, 0xbc, 0x26, 0xbc, 0x4b, 0xc5, + 0xdd, 0xd4, 0xe2, 0xf0, 0xfe, 0x0a, 0xd4, 0x1b, 0x16, 0x2d, 0xbc, 0x39, + 0xd1, 0x45, 0x70, 0x4a, 0xab, 0x46, 0x25, 0x3b, 0x47, 0x35, 0x8a, 0x30, + 0x54, 0x29, 0xd5, 0x1e, 0x34, 0x13, 0xa7, 0x0a, 0x02, 0x05, 0x83, 0xfc, + 0xde, 0xef, 0xd8, 0xe1, 0x61, 0xd6, 0xfb, 0xcb, 0x55, 0xc5, 0x52, 0xc3, + 0x99, 0xc5, 0x10, 0xcd, 0x65, 0xd7, 0xc6, 0xe3, 0xd5, 0xed, 0xb5, 0xf5, + 0x52, 0x00, 0x1e, 0x09, 0xe6, 0x0c, 0xae, 0x0d, 0x76, 0x0c, 0xf9, 0x0a, + 0x2e, 0x11, 0x9a, 0x17, 0x17, 0x1b, 0x71, 0x20, 0xd9, 0x22, 0x8d, 0x20, + 0xbd, 0x1a, 0x6e, 0x13, 0x8c, 0x0b, 0xe8, 0x08, 0x39, 0x07, 0x39, 0x06, + 0xbc, 0x08, 0x9b, 0x0b, 0x19, 0x10, 0x56, 0x12, 0x20, 0x12, 0x9e, 0x10, + 0xa9, 0x0b, 0x78, 0x05, 0x00, 0xff, 0xf6, 0xf6, 0xc9, 0xf0, 0x15, 0xe9, + 0xad, 0xe2, 0xa0, 0xdb, 0xcc, 0xd2, 0x03, 0xcc, 0x9d, 0xc4, 0x8a, 0xc2, + 0x60, 0xbd, 0x26, 0xbb, 0x26, 0xc2, 0xcd, 0xd5, 0x4b, 0xf0, 0x59, 0x0b, + 0xc8, 0x20, 0xe9, 0x32, 0xdc, 0x41, 0x5b, 0x47, 0x3f, 0x47, 0xc1, 0x42, + 0x30, 0x3e, 0x0d, 0x38, 0x81, 0x2d, 0xce, 0x22, 0x8e, 0x18, 0xd9, 0x11, + 0x94, 0x0a, 0x92, 0x03, 0xb6, 0xf6, 0x94, 0xe9, 0xe3, 0xdb, 0x78, 0xd2, + 0xf9, 0xcd, 0x19, 0xc9, 0x4e, 0xc7, 0x70, 0xcb, 0x3f, 0xd3, 0x24, 0xde, + 0x3b, 0xe9, 0x83, 0xf2, 0xfc, 0xfd, 0xa0, 0x0b, 0x60, 0x12, 0x53, 0x13, + 0x4c, 0x10, 0xd2, 0x10, 0x1f, 0x17, 0xfb, 0x19, 0x53, 0x1b, 0x51, 0x1a, + 0x21, 0x1b, 0x28, 0x19, 0x56, 0x15, 0xaf, 0x0e, 0x52, 0x05, 0x40, 0x01, + 0xe6, 0xff, 0x28, 0xff, 0x7c, 0x01, 0x81, 0x05, 0x90, 0x09, 0x1d, 0x12, + 0x40, 0x16, 0x51, 0x16, 0x81, 0x14, 0x24, 0x0f, 0x8b, 0x09, 0x5f, 0x02, + 0xa5, 0xf8, 0xc1, 0xef, 0x97, 0xe7, 0x83, 0xda, 0x4f, 0xd0, 0xb1, 0xc5, + 0xfa, 0xbd, 0x44, 0xb9, 0xdd, 0xb5, 0x5f, 0xb6, 0x9b, 0xc3, 0x7e, 0xda, + 0xda, 0xf7, 0x63, 0x13, 0x05, 0x26, 0xc1, 0x34, 0xd3, 0x3f, 0x02, 0x45, + 0x88, 0x46, 0x44, 0x42, 0x06, 0x3d, 0x67, 0x36, 0x4d, 0x2c, 0x93, 0x21, + 0x00, 0x16, 0x38, 0x0e, 0x03, 0x0b, 0x6b, 0x01, 0x11, 0xf1, 0x50, 0xe1, + 0x23, 0xd6, 0xf1, 0xcd, 0x1b, 0xcc, 0xe3, 0xc9, 0xcb, 0xc8, 0x3c, 0xd0, + 0xf6, 0xd9, 0x44, 0xe7, 0x2a, 0xf4, 0x65, 0xfe, 0x4f, 0x09, 0x45, 0x12, + 0x33, 0x16, 0xa5, 0x15, 0x57, 0x15, 0x83, 0x14, 0xd5, 0x16, 0xd1, 0x18, + 0x0a, 0x14, 0xf1, 0x12, 0xdf, 0x0f, 0x3d, 0x0c, 0xca, 0x09, 0x0c, 0x05, + 0x70, 0xfe, 0x26, 0xfa, 0xfa, 0xf9, 0x92, 0xfb, 0x88, 0x01, 0xfd, 0x08, + 0x67, 0x12, 0x56, 0x18, 0x44, 0x1a, 0xfa, 0x19, 0xaa, 0x16, 0x15, 0x11, + 0x00, 0x0c, 0x89, 0x05, 0x26, 0xfd, 0x2e, 0xf3, 0x01, 0xe5, 0xd2, 0xd6, + 0xe1, 0xcb, 0x76, 0xc1, 0x7c, 0xb6, 0xb2, 0xae, 0xb6, 0xaf, 0xc0, 0xbc, + 0x10, 0xd4, 0x4a, 0xf0, 0x21, 0x08, 0xdb, 0x19, 0xb4, 0x27, 0xbe, 0x34, + 0x17, 0x40, 0x22, 0x42, 0x17, 0x42, 0x34, 0x3d, 0x03, 0x36, 0x27, 0x2e, + 0x39, 0x24, 0xba, 0x1b, 0x19, 0x18, 0x0b, 0x12, 0x1e, 0x04, 0x34, 0xf2, + 0xf5, 0xe2, 0x19, 0xda, 0xe7, 0xd4, 0x30, 0xd1, 0x98, 0xce, 0x56, 0xd1, + 0x76, 0xd6, 0xf3, 0xde, 0x42, 0xe9, 0x55, 0xf3, 0x50, 0xfe, 0x35, 0x09, + 0x69, 0x0f, 0x05, 0x13, 0xd5, 0x14, 0xab, 0x17, 0x03, 0x1a, 0x75, 0x1a, + 0xf3, 0x16, 0x53, 0x11, 0x6f, 0x0c, 0xce, 0x09, 0xcf, 0x05, 0x5e, 0xff, + 0x47, 0xf9, 0x8b, 0xf4, 0xe7, 0xf3, 0x62, 0xf5, 0x39, 0xf9, 0x2c, 0x00, + 0x37, 0x0d, 0x52, 0x16, 0x6f, 0x1a, 0x6f, 0x1d, 0x64, 0x1c, 0x1d, 0x19, + 0xe4, 0x16, 0xbc, 0x11, 0x6f, 0x09, 0x2b, 0x01, 0x6e, 0xf3, 0x09, 0xe5, + 0xda, 0xd5, 0x23, 0xc7, 0xc9, 0xbd, 0x99, 0xb5, 0x14, 0xaf, 0x4a, 0xb2, + 0x4f, 0xbf, 0x82, 0xd7, 0x5c, 0xf4, 0x46, 0x0d, 0x93, 0x1c, 0xc0, 0x2b, + 0xe5, 0x37, 0xc8, 0x38, 0x85, 0x39, 0x39, 0x3b, 0xe5, 0x38, 0x1a, 0x35, + 0x41, 0x2f, 0xed, 0x24, 0xab, 0x1c, 0x59, 0x16, 0xe6, 0x0a, 0xee, 0xfb, + 0x97, 0xed, 0x9e, 0xe0, 0x8a, 0xd8, 0x03, 0xd4, 0x92, 0xd2, 0xfc, 0xd4, + 0xc2, 0xd7, 0x04, 0xe0, 0x5e, 0xe8, 0x11, 0xf0, 0x19, 0xf9, 0xb3, 0x01, + 0x3f, 0x0b, 0xd6, 0x10, 0x9a, 0x12, 0x4b, 0x15, 0x42, 0x15, 0x69, 0x16, + 0x44, 0x13, 0xd9, 0x0d, 0x26, 0x0b, 0x1f, 0x06, 0x13, 0xff, 0x09, 0xfb, + 0x6b, 0xf8, 0x71, 0xf6, 0x95, 0xf5, 0x88, 0xf6, 0x12, 0xf9, 0xbf, 0xff, + 0x9f, 0x08, 0x6d, 0x12, 0x4a, 0x1b, 0xef, 0x20, 0xac, 0x22, 0x06, 0x21, + 0x4a, 0x1b, 0x82, 0x14, 0x17, 0x0d, 0xe7, 0x02, 0x8c, 0xf6, 0x7d, 0xe6, + 0x7b, 0xd6, 0x7f, 0xc8, 0x04, 0xbb, 0x32, 0xb1, 0xe1, 0xac, 0xe0, 0xaf, + 0x3f, 0xc0, 0x79, 0xda, 0x08, 0xf4, 0x07, 0x0b, 0xa2, 0x1a, 0x31, 0x28, + 0x62, 0x34, 0x48, 0x39, 0xde, 0x3b, 0x58, 0x3a, 0xc1, 0x37, 0x22, 0x31, + 0xcf, 0x2d, 0xa5, 0x23, 0x6b, 0x1c, 0xb5, 0x11, 0xe6, 0x05, 0x71, 0xfb, + 0x92, 0xe9, 0x67, 0xdc, 0xe2, 0xd1, 0x0e, 0xd0, 0xf5, 0xd1, 0xe8, 0xd6, + 0x80, 0xde, 0xb4, 0xe6, 0x54, 0xf0, 0x6d, 0xfa, 0x1a, 0x02, 0x56, 0x06, + 0x52, 0x0b, 0x12, 0x10, 0xfc, 0x12, 0x2a, 0x14, 0xe5, 0x12, 0x3a, 0x11, + 0x96, 0x10, 0xad, 0x0d, 0x71, 0x07, 0xe0, 0x00, 0x9c, 0xfc, 0x6a, 0xf7, + 0x77, 0xf5, 0x45, 0xf5, 0xf4, 0xf5, 0x87, 0xf8, 0x85, 0xfd, 0x71, 0x04, + 0x64, 0x0b, 0x63, 0x16, 0xff, 0x1c, 0x5f, 0x1f, 0x6f, 0x20, 0x71, 0x1d, + 0x73, 0x1b, 0x45, 0x12, 0xd4, 0x09, 0x6a, 0xfe, 0xcb, 0xed, 0x8f, 0xdc, + 0xd0, 0xcc, 0xa4, 0xbd, 0xe6, 0xb5, 0x32, 0xb0, 0x4c, 0xb3, 0xea, 0xbb, + 0xe1, 0xd0, 0xb2, 0xee, 0x3e, 0x09, 0x3e, 0x1c, 0xf4, 0x25, 0x54, 0x2f, + 0x0b, 0x33, 0xb0, 0x39, 0x16, 0x3a, 0x72, 0x36, 0x12, 0x33, 0xbb, 0x2c, + 0x21, 0x24, 0x3d, 0x1a, 0xd9, 0x10, 0x09, 0x07, 0x2f, 0xfc, 0x88, 0xef, + 0x90, 0xe0, 0x3c, 0xd4, 0x4b, 0xcd, 0xd3, 0xd1, 0x2f, 0xdb, 0xb1, 0xe2, + 0xc1, 0xea, 0x8a, 0xf3, 0x5d, 0xfd, 0x68, 0x06, 0x23, 0x09, 0xa4, 0x0b, + 0x7d, 0x10, 0x50, 0x15, 0x8e, 0x15, 0xfc, 0x11, 0xea, 0x0d, 0x74, 0x0d, + 0x88, 0x0b, 0x07, 0x08, 0x7d, 0x00, 0xf6, 0xf9, 0xef, 0xf2, 0x2d, 0xf2, + 0xce, 0xf4, 0x94, 0xf4, 0xe1, 0xf7, 0x5e, 0xfd, 0x20, 0x04, 0xe8, 0x0d, + 0x1e, 0x15, 0xc4, 0x1a, 0xd6, 0x1f, 0x7a, 0x20, 0xfc, 0x1c, 0x72, 0x1d, + 0x78, 0x16, 0x80, 0x0d, 0x24, 0x03, 0x87, 0xef, 0xc6, 0xde, 0x64, 0xcc, + 0x62, 0xbf, 0x2a, 0xb6, 0x7c, 0xaf, 0xc9, 0xb0, 0xbe, 0xbb, 0xe0, 0xd1, + 0x9d, 0xed, 0x1c, 0x06, 0x3f, 0x18, 0x6b, 0x22, 0x32, 0x2d, 0xf7, 0x32, + 0x51, 0x36, 0xf4, 0x3b, 0x87, 0x39, 0xcf, 0x33, 0xa6, 0x2b, 0x20, 0x22, + 0x7d, 0x1c, 0xbe, 0x13, 0xba, 0x09, 0x73, 0xfb, 0x96, 0xec, 0x06, 0xdd, + 0x22, 0xd6, 0x9a, 0xd3, 0x8d, 0xda, 0x0b, 0xe1, 0xc8, 0xe6, 0x78, 0xeb, + 0xa6, 0xf1, 0x68, 0xf7, 0x34, 0x02, 0x52, 0x0a, 0x21, 0x0e, 0x65, 0x13, + 0xcf, 0x13, 0xea, 0x12, 0xce, 0x11, 0x27, 0x0e, 0xd1, 0x0b, 0x82, 0x0a, + 0x38, 0x05, 0x0e, 0xff, 0x1e, 0xf7, 0xc4, 0xf2, 0x23, 0xf2, 0x7c, 0xf4, + 0x43, 0xf7, 0xc7, 0xfa, 0x5e, 0xff, 0x89, 0x04, 0xab, 0x0d, 0xef, 0x14, + 0x26, 0x1d, 0x4d, 0x21, 0x0b, 0x21, 0xc6, 0x1c, 0x54, 0x16, 0x12, 0x0f, + 0xd6, 0x06, 0xab, 0xf9, 0xe2, 0xe7, 0x37, 0xd8, 0x46, 0xc9, 0xc4, 0xbe, + 0x3c, 0xb6, 0x8e, 0xb2, 0xb9, 0xb6, 0x41, 0xc8, 0x13, 0xe0, 0xd4, 0xf8, + 0x7b, 0x0e, 0xe1, 0x1c, 0x7d, 0x23, 0x07, 0x2c, 0x3a, 0x2f, 0x15, 0x32, + 0xd3, 0x30, 0xc1, 0x2f, 0x44, 0x2c, 0x64, 0x27, 0xc7, 0x20, 0x04, 0x18, + 0xb3, 0x10, 0x20, 0x05, 0x09, 0xfa, 0x86, 0xee, 0x9f, 0xe1, 0xee, 0xda, + 0x6f, 0xd9, 0x7c, 0xdd, 0x19, 0xe6, 0xb5, 0xf0, 0x1e, 0xf6, 0x21, 0xfb, + 0xba, 0xfe, 0x68, 0x01, 0x45, 0x07, 0x5e, 0x09, 0xbb, 0x0c, 0x61, 0x0c, + 0xda, 0x0c, 0xac, 0x0e, 0x3e, 0x0d, 0xb1, 0x09, 0x03, 0x05, 0xe9, 0xfe, + 0xcb, 0xf9, 0x21, 0xf6, 0xc3, 0xf2, 0x6f, 0xf2, 0xbf, 0xf5, 0x56, 0xfa, + 0x85, 0x00, 0x88, 0x07, 0x3a, 0x0d, 0x78, 0x15, 0xfd, 0x1b, 0x5c, 0x20, + 0x30, 0x21, 0x79, 0x1d, 0xce, 0x19, 0x84, 0x13, 0x1e, 0x0a, 0x0c, 0xfe, + 0x89, 0xed, 0x63, 0xd9, 0x5f, 0xca, 0x4a, 0xbd, 0xc9, 0xb5, 0x59, 0xb3, + 0xbb, 0xb8, 0x68, 0xc4, 0xfa, 0xdb, 0x7c, 0xf3, 0x11, 0x05, 0xc6, 0x17, + 0x18, 0x21, 0x47, 0x2f, 0x1a, 0x31, 0x7f, 0x30, 0xd8, 0x31, 0xb6, 0x30, + 0xd2, 0x2d, 0xe0, 0x27, 0x12, 0x21, 0x58, 0x19, 0x25, 0x11, 0x06, 0x08, + 0x84, 0xf7, 0xad, 0xe9, 0xe5, 0xdb, 0xb0, 0xd8, 0x15, 0xdc, 0x07, 0xe0, + 0x10, 0xe8, 0x9e, 0xef, 0xc6, 0xf7, 0xef, 0xff, 0xab, 0x05, 0xd8, 0x0a, + 0xbf, 0x0e, 0x0d, 0x11, 0x32, 0x10, 0xb1, 0x10, 0xc0, 0x0f, 0x81, 0x0d, + 0xe2, 0x0c, 0xaf, 0x07, 0x2a, 0x04, 0x2d, 0xfe, 0x29, 0xf7, 0x9b, 0xf2, + 0x1d, 0xf0, 0x00, 0xef, 0xbe, 0xf2, 0x4a, 0xf5, 0x6a, 0xf9, 0x9d, 0x01, + 0x6e, 0x0a, 0x44, 0x11, 0x35, 0x1a, 0x52, 0x1e, 0xa5, 0x1e, 0xf4, 0x1c, + 0x36, 0x18, 0xd3, 0x10, 0xa7, 0x09, 0x3b, 0xfa, 0x47, 0xeb, 0xa8, 0xdd, + 0x85, 0xcd, 0x45, 0xc4, 0x04, 0xbc, 0x7b, 0xb8, 0x3b, 0xbf, 0x26, 0xcb, + 0x2e, 0xe1, 0x54, 0xf7, 0xf8, 0x07, 0x0b, 0x18, 0x1f, 0x1f, 0xd0, 0x24, + 0xbf, 0x2a, 0x2e, 0x2d, 0x89, 0x2e, 0x55, 0x2d, 0xa2, 0x26, 0x49, 0x21, + 0x63, 0x1e, 0x3e, 0x17, 0x0b, 0x11, 0xf6, 0x05, 0x71, 0xf8, 0x95, 0xed, + 0x3c, 0xe6, 0x97, 0xe2, 0xbe, 0xe3, 0xf3, 0xe5, 0xae, 0xed, 0x09, 0xf7, + 0x73, 0xfc, 0x14, 0x02, 0xbf, 0x09, 0x06, 0x0b, 0xab, 0x0d, 0x4d, 0x0f, + 0x59, 0x0e, 0x99, 0x0d, 0x11, 0x0c, 0xa6, 0x08, 0x0d, 0x06, 0x7d, 0x02, + 0xeb, 0xfd, 0xd5, 0xfa, 0x6b, 0xf7, 0x0a, 0xf4, 0x6e, 0xf1, 0x7d, 0xef, + 0xfa, 0xf0, 0x1a, 0xf7, 0xf7, 0xfa, 0x20, 0x01, 0x60, 0x09, 0x59, 0x12, + 0xff, 0x16, 0x46, 0x1d, 0x81, 0x1c, 0x27, 0x1a, 0x26, 0x12, 0x42, 0x07, + 0xbd, 0xf9, 0x07, 0xf1, 0xb7, 0xe6, 0x9c, 0xd9, 0x29, 0xce, 0xc8, 0xc7, + 0x8f, 0xc1, 0x04, 0xc4, 0xb4, 0xd0, 0xc0, 0xe0, 0x9c, 0xf3, 0xb1, 0xff, + 0x64, 0x0b, 0x5c, 0x15, 0xf5, 0x1b, 0x82, 0x20, 0x1b, 0x2a, 0x9e, 0x28, + 0xd5, 0x2a, 0xb9, 0x28, 0xb9, 0x21, 0xc1, 0x1a, 0x27, 0x14, 0x4d, 0x0d, + 0x1f, 0x07, 0x9f, 0x01, 0x7f, 0xf6, 0x8b, 0xee, 0xaf, 0xe8, 0x15, 0xe7, + 0xd2, 0xec, 0x70, 0xf1, 0xff, 0xf5, 0xf1, 0xfb, 0x4a, 0xff, 0x0e, 0x02, + 0xf5, 0x05, 0xfc, 0x05, 0xf2, 0x0a, 0xf4, 0x0d, 0x57, 0x0e, 0x81, 0x0c, + 0xfb, 0x0a, 0xe8, 0x06, 0x6d, 0x03, 0x6e, 0xff, 0x8f, 0xfb, 0x77, 0xf8, + 0x8f, 0xf3, 0x48, 0xee, 0x89, 0xee, 0x36, 0xf0, 0x17, 0xf5, 0xe0, 0xfc, + 0x53, 0x02, 0xde, 0x07, 0x75, 0x0e, 0xce, 0x12, 0xaf, 0x16, 0xc0, 0x16, + 0x8a, 0x14, 0xd6, 0x12, 0x2a, 0x0a, 0xe7, 0x00, 0x03, 0xf7, 0x6c, 0xe9, + 0x69, 0xdc, 0x08, 0xd1, 0xd8, 0xc5, 0xf8, 0xc3, 0x6d, 0xc8, 0x71, 0xd6, + 0xb5, 0xe7, 0x0b, 0xf3, 0xd1, 0xfd, 0x55, 0x07, 0xd3, 0x0d, 0x57, 0x18, + 0x10, 0x19, 0xea, 0x1d, 0x23, 0x23, 0x62, 0x25, 0x34, 0x28, 0xb5, 0x23, + 0x48, 0x20, 0x6d, 0x1b, 0xc5, 0x13, 0xd1, 0x0a, 0xc9, 0x02, 0xfb, 0xfa, + 0x67, 0xf2, 0xc2, 0xed, 0x64, 0xea, 0x29, 0xed, 0x8a, 0xf0, 0xe8, 0xf3, + 0x95, 0xf8, 0x87, 0xfd, 0x1b, 0x02, 0x1f, 0x07, 0xd0, 0x0a, 0xb3, 0x0d, + 0x2c, 0x0f, 0x34, 0x0e, 0x7c, 0x0b, 0xc1, 0x0b, 0xfe, 0x09, 0x7a, 0x08, + 0xd9, 0x04, 0x31, 0xff, 0x4d, 0xf9, 0x23, 0xf3, 0x06, 0xef, 0x26, 0xec, + 0x46, 0xee, 0x18, 0xf0, 0xea, 0xf3, 0x0f, 0xfb, 0xa7, 0x01, 0x96, 0x07, + 0xcb, 0x0b, 0x39, 0x0f, 0x19, 0x12, 0x1e, 0x12, 0x1c, 0x0d, 0xfc, 0x07, + 0xb0, 0xff, 0x84, 0xf6, 0x35, 0xea, 0x44, 0xdc, 0x9f, 0xcf, 0xbf, 0xc8, + 0xcc, 0xcb, 0x41, 0xd5, 0x4c, 0xe0, 0x77, 0xee, 0xb4, 0xfa, 0x2e, 0x07, + 0xc7, 0x0f, 0x82, 0x15, 0x64, 0x16, 0xb9, 0x19, 0xaa, 0x1c, 0x51, 0x1b, + 0x74, 0x1f, 0x76, 0x1d, 0x52, 0x1c, 0x47, 0x1a, 0x1b, 0x14, 0xec, 0x0e, + 0xe9, 0x05, 0xb6, 0xfc, 0x48, 0xf7, 0x42, 0xf2, 0xcb, 0xee, 0x38, 0xee, + 0x03, 0xef, 0xcb, 0xee, 0x42, 0xf5, 0x83, 0xf9, 0xed, 0xff, 0x16, 0x08, + 0x18, 0x0d, 0x4b, 0x0f, 0x87, 0x13, 0x4f, 0x12, 0x72, 0x10, 0xf6, 0x12, + 0x3e, 0x10, 0x1a, 0x0f, 0xcb, 0x0a, 0x85, 0x03, 0x3d, 0xfd, 0xc9, 0xf8, + 0x81, 0xf3, 0xab, 0xf1, 0xe5, 0xef, 0xe3, 0xee, 0x96, 0xf1, 0xb7, 0xf4, + 0x6d, 0xf9, 0xd6, 0x01, 0x6f, 0x06, 0xdd, 0x0a, 0xc1, 0x0c, 0xd7, 0x0b, + 0xd8, 0x08, 0xdf, 0x03, 0x27, 0xfe, 0x5b, 0xf7, 0x7e, 0xef, 0x49, 0xe6, + 0x6a, 0xdf, 0xe3, 0xd8, 0xd8, 0xd5, 0xa3, 0xda, 0x57, 0xe3, 0x59, 0xea, + 0x4a, 0xf3, 0xc0, 0xfa, 0x49, 0x01, 0x40, 0x09, 0x31, 0x11, 0x20, 0x16, + 0xce, 0x17, 0x79, 0x19, 0x14, 0x1c, 0x5c, 0x1c, 0x1a, 0x1b, 0xfe, 0x15, + 0xcb, 0x13, 0x74, 0x12, 0x5b, 0x0e, 0xeb, 0x08, 0x79, 0x01, 0x6e, 0xfb, + 0x1f, 0xf7, 0x31, 0xf4, 0x0d, 0xf3, 0x58, 0xf3, 0xb5, 0xf6, 0xff, 0xf5, + 0x25, 0xf9, 0x82, 0xfb, 0x38, 0xff, 0xb0, 0x03, 0x83, 0x08, 0xfb, 0x0c, + 0x94, 0x11, 0x40, 0x14, 0x00, 0x14, 0x3b, 0x11, 0x3e, 0x0c, 0x17, 0x0a, + 0xfd, 0x05, 0x31, 0x01, 0x97, 0xfb, 0xdb, 0xf5, 0xc7, 0xf1, 0x0e, 0xf1, + 0x94, 0xf1, 0x2b, 0xf5, 0x99, 0xf9, 0x68, 0xfa, 0xf0, 0xfb, 0x3b, 0xfe, + 0xb7, 0x00, 0xa0, 0x03, 0x64, 0x06, 0x92, 0x05, 0xe5, 0x03, 0xbf, 0xfd, + 0x81, 0xf9, 0xde, 0xf0, 0xb2, 0xe7, 0x36, 0xdf, 0xa8, 0xd6, 0x0a, 0xd3, + 0x1d, 0xd9, 0x4d, 0xe2, 0x6d, 0xed, 0x82, 0xf5, 0xf0, 0xfb, 0x30, 0x03, + 0x16, 0x0a, 0x12, 0x0f, 0x2f, 0x13, 0x54, 0x17, 0x51, 0x17, 0xfe, 0x1d, + 0x22, 0x22, 0x7f, 0x21, 0xcb, 0x21, 0x4b, 0x1d, 0x79, 0x15, 0xd3, 0x0d, + 0xa6, 0x06, 0x12, 0xff, 0xc6, 0xfb, 0xef, 0xf6, 0x4d, 0xf3, 0x1d, 0xf2, + 0xf8, 0xef, 0x5d, 0xf2, 0xcc, 0xf6, 0xff, 0xf9, 0xd7, 0xfc, 0x82, 0x00, + 0xb2, 0x02, 0x04, 0x07, 0x0b, 0x0d, 0x55, 0x0f, 0x43, 0x11, 0x83, 0x12, + 0x19, 0x0d, 0x77, 0x0a, 0xf3, 0x05, 0xd1, 0x02, 0x48, 0xff, 0x59, 0xf9, + 0xd4, 0xf3, 0x73, 0xf0, 0x20, 0xf2, 0x46, 0xf4, 0x2b, 0xf8, 0x90, 0xfb, + 0xa4, 0xfc, 0x2b, 0xfe, 0x16, 0x03, 0xb0, 0x07, 0x2d, 0x0b, 0xee, 0x08, + 0xdd, 0x08, 0xc9, 0x06, 0x91, 0xff, 0xc1, 0xfa, 0x1e, 0xf1, 0x3d, 0xeb, + 0x39, 0xe4, 0x0d, 0xdf, 0x75, 0xd8, 0x1d, 0xd7, 0x25, 0xd7, 0x03, 0xde, + 0xb4, 0xe8, 0x24, 0xf1, 0x10, 0xfb, 0x9c, 0x06, 0x52, 0x0b, 0x8e, 0x12, + 0xa8, 0x16, 0xc5, 0x1b, 0x89, 0x20, 0xb8, 0x21, 0x03, 0x21, 0x51, 0x1d, + 0xc8, 0x17, 0x63, 0x14, 0x7f, 0x12, 0xa8, 0x0d, 0xa9, 0x09, 0x9e, 0x02, + 0x9b, 0xfa, 0xfb, 0xf6, 0x1b, 0xf2, 0x6d, 0xef, 0x15, 0xf1, 0x80, 0xf3, + 0x3f, 0xf6, 0xb6, 0xfc, 0x25, 0x00, 0x86, 0x05, 0x78, 0x0a, 0x4b, 0x0e, + 0x2d, 0x11, 0x02, 0x11, 0x49, 0x0f, 0x8d, 0x0d, 0x37, 0x08, 0x81, 0x03, + 0x15, 0xff, 0x92, 0xf8, 0xa2, 0xf5, 0x0a, 0xf3, 0x6f, 0xef, 0x19, 0xee, + 0xa9, 0xf1, 0xf2, 0xf3, 0x44, 0xfc, 0x01, 0x02, 0x32, 0x05, 0x34, 0x08, + 0xaf, 0x08, 0xc2, 0x07, 0x8a, 0x0b, 0xdc, 0x0a, 0x36, 0x08, 0xc4, 0x04, + 0xb8, 0xff, 0xc4, 0xfa, 0x8b, 0xf5, 0xbb, 0xef, 0x25, 0xe8, 0xdc, 0xde, + 0x56, 0xd9, 0x4f, 0xd4, 0xc4, 0xd8, 0xee, 0xdf, 0xc4, 0xe9, 0x1b, 0xf5, + 0xb5, 0xfe, 0xc5, 0x05, 0x33, 0x09, 0xbb, 0x0a, 0x88, 0x0d, 0xb7, 0x0d, + 0xcc, 0x12, 0xf3, 0x1a, 0xbc, 0x1a, 0xf2, 0x1a, 0x12, 0x1b, 0x96, 0x17, + 0x2c, 0x16, 0x94, 0x11, 0xb1, 0x0a, 0xf2, 0x04, 0x84, 0x01, 0xff, 0xff, + 0xa0, 0xfe, 0x6c, 0xfb, 0x59, 0xf8, 0x5a, 0xf8, 0xd0, 0xf8, 0xba, 0xfd, + 0x4d, 0x02, 0x66, 0x06, 0x81, 0x09, 0xc0, 0x08, 0x3f, 0x08, 0xd2, 0x06, + 0xed, 0x01, 0x77, 0x00, 0xec, 0xfd, 0x18, 0xfa, 0x1d, 0xf6, 0x6f, 0xf3, + 0xb3, 0xf0, 0x90, 0xf1, 0x31, 0xf2, 0x27, 0xf4, 0x5b, 0xf8, 0xb6, 0xfb, + 0xf0, 0x00, 0x1e, 0x07, 0x03, 0x08, 0x09, 0x09, 0x10, 0x0b, 0xf9, 0x0b, + 0x12, 0x0f, 0x56, 0x0f, 0xa0, 0x0b, 0xc9, 0x06, 0x4a, 0x02, 0x3b, 0xfc, + 0x26, 0xfa, 0x84, 0xf1, 0x71, 0xe9, 0x94, 0xe3, 0xaf, 0xdf, 0x7f, 0xe0, + 0xb0, 0xe1, 0x12, 0xe0, 0x24, 0xe4, 0x73, 0xea, 0x3c, 0xf1, 0x3e, 0xfa, + 0x87, 0x01, 0x8d, 0x08, 0x6a, 0x0f, 0x05, 0x14, 0x80, 0x15, 0x53, 0x1a, + 0xc0, 0x1b, 0x23, 0x19, 0x9a, 0x16, 0x43, 0x14, 0x4f, 0x11, 0xdd, 0x0d, + 0x7a, 0x0b, 0xde, 0x06, 0xdc, 0x02, 0x0a, 0x01, 0xcd, 0xfe, 0xb6, 0xfe, + 0xf5, 0xfb, 0x9c, 0xfc, 0x38, 0xfe, 0xc5, 0xfe, 0x56, 0xfd, 0xd2, 0xfd, + 0x1b, 0xff, 0xb4, 0x01, 0xd9, 0x05, 0x0c, 0x06, 0xac, 0x07, 0x4f, 0x07, + 0xdb, 0x03, 0xed, 0xff, 0xdd, 0xfb, 0xef, 0xf7, 0xbc, 0xf5, 0xfc, 0xf3, + 0x71, 0xf3, 0x33, 0xf5, 0x98, 0xf6, 0x84, 0xf7, 0x98, 0xf9, 0x74, 0xfb, + 0xc4, 0x01, 0x81, 0x06, 0xc0, 0x09, 0xd3, 0x0b, 0x32, 0x0a, 0x21, 0x0a, + 0xb6, 0x0a, 0x28, 0x0a, 0xb5, 0x08, 0x20, 0x06, 0x61, 0x00, 0xcc, 0xfc, + 0x9d, 0xf6, 0x91, 0xf1, 0xb1, 0xe9, 0x48, 0xe0, 0xaf, 0xda, 0xae, 0xda, + 0xa6, 0xde, 0xeb, 0xe2, 0x6c, 0xea, 0x90, 0xf1, 0x0a, 0xf9, 0x46, 0x01, + 0x51, 0x08, 0xb0, 0x0e, 0x31, 0x14, 0x14, 0x15, 0x2d, 0x15, 0x5c, 0x14, + 0x4f, 0x15, 0xb1, 0x15, 0xb3, 0x15, 0x87, 0x15, 0x58, 0x13, 0x72, 0x12, + 0x61, 0x0d, 0x1f, 0x06, 0x64, 0xfe, 0xd5, 0xf9, 0x1c, 0xf6, 0x5b, 0xf7, + 0x29, 0xf4, 0x97, 0xf3, 0x6b, 0xfa, 0xaa, 0xff, 0x63, 0x03, 0x80, 0x06, + 0x4c, 0x07, 0x4b, 0x07, 0x08, 0x0a, 0xee, 0x05, 0xd9, 0x03, 0xaf, 0x01, + 0xba, 0xfc, 0xcd, 0xf9, 0x55, 0xf7, 0x0b, 0xf4, 0x18, 0xf5, 0x8f, 0xf5, + 0x34, 0xf7, 0x1d, 0xf6, 0x4f, 0xf7, 0xe1, 0xf8, 0x00, 0xfc, 0xcf, 0x02, + 0xf7, 0x07, 0xda, 0x0b, 0xd3, 0x0e, 0xa6, 0x0f, 0x1e, 0x0e, 0xa1, 0x0e, + 0xd0, 0x0c, 0x0f, 0x08, 0x03, 0x05, 0x7c, 0x01, 0xee, 0xfe, 0xec, 0xfc, + 0x1c, 0xf7, 0x85, 0xf3, 0x01, 0xee, 0xe9, 0xe9, 0x61, 0xe9, 0x30, 0xe9, + 0x52, 0xe7, 0xea, 0xea, 0x49, 0xeb, 0x0c, 0xed, 0x93, 0xf1, 0x37, 0xf6, + 0x15, 0xfe, 0x70, 0x06, 0xbf, 0x0a, 0xf1, 0x0c, 0x43, 0x12, 0x1a, 0x15, + 0x78, 0x19, 0x94, 0x19, 0x2b, 0x1a, 0x1a, 0x18, 0x35, 0x11, 0xa0, 0x09, + 0xa2, 0x06, 0x4c, 0x09, 0xa4, 0x09, 0xda, 0x09, 0xd7, 0x05, 0x67, 0xf9, + 0x98, 0xf2, 0x7f, 0xf1, 0x9c, 0xf3, 0x31, 0xf9, 0x05, 0xfb, 0x2f, 0xfb, + 0xb0, 0xf9, 0x08, 0xf8, 0x6b, 0xf9, 0xe3, 0xfc, 0xb9, 0xff, 0xf0, 0x03, + 0x11, 0x04, 0xa8, 0xfc, 0xb4, 0xf5, 0xaf, 0xf1, 0x40, 0xf2, 0x51, 0xf8, + 0x1f, 0xfd, 0x6f, 0x00, 0xd1, 0x03, 0x54, 0x04, 0x4a, 0x05, 0x1b, 0x07, + 0x3f, 0x06, 0x86, 0x04, 0x50, 0x04, 0xb3, 0x03, 0x99, 0x03, 0x08, 0x05, + 0x22, 0x09, 0x84, 0x0a, 0x79, 0x0a, 0xeb, 0x09, 0xca, 0x06, 0x93, 0x02, + 0x56, 0xff, 0x96, 0xfc, 0x1c, 0xf6, 0x39, 0xf3, 0x64, 0xec, 0x7e, 0xe8, + 0x87, 0xe2, 0xd0, 0xe4, 0x29, 0xe7, 0x4b, 0xef, 0x09, 0xf2, 0x88, 0xf4, + 0xb2, 0xf9, 0x3b, 0xfe, 0xb6, 0x04, 0x15, 0x0a, 0x6c, 0x0e, 0x32, 0x0f, + 0xea, 0x15, 0xd9, 0x16, 0x37, 0x19, 0xf5, 0x17, 0x06, 0x15, 0xc0, 0x0e, + 0xe5, 0x09, 0x2f, 0x07, 0x0e, 0x00, 0x2b, 0xfd, 0x5a, 0xfa, 0xf8, 0xf9, + 0x20, 0xfd, 0xb8, 0x01, 0x04, 0x03, 0x9b, 0xfe, 0x38, 0xf9, 0x35, 0xf7, + 0x96, 0xf9, 0xdb, 0xfc, 0x6d, 0xff, 0x78, 0xfc, 0x6d, 0xfc, 0xa7, 0xfd, + 0xe0, 0x01, 0x99, 0x02, 0xcd, 0x04, 0xdf, 0x00, 0x85, 0xfc, 0xb3, 0xf9, + 0x72, 0xf7, 0x53, 0xf5, 0x30, 0xf6, 0x05, 0xfa, 0xd7, 0xfd, 0xc3, 0xfe, + 0xf0, 0x00, 0x29, 0x03, 0x2b, 0x03, 0xce, 0x05, 0x74, 0x08, 0x0b, 0x0a, + 0xc0, 0x0a, 0x36, 0x0d, 0x8d, 0x0d, 0x6f, 0x0d, 0x5e, 0x0d, 0x5d, 0x09, + 0x47, 0x07, 0xd2, 0x07, 0x2d, 0x02, 0x5c, 0xfa, 0x76, 0xf1, 0x2d, 0xe9, + 0x52, 0xe7, 0x61, 0xe7, 0x5c, 0xe9, 0x0a, 0xeb, 0xd7, 0xeb, 0xfa, 0xef, + 0xd6, 0xf6, 0xe6, 0xfe, 0x83, 0x03, 0x7d, 0x08, 0xa3, 0x0a, 0x0a, 0x0d, + 0xe9, 0x0d, 0xbf, 0x0c, 0x60, 0x10, 0xf6, 0x11, 0xe7, 0x12, 0x94, 0x0e, + 0x3c, 0x07, 0x6f, 0x02, 0x72, 0x03, 0x90, 0x02, 0x83, 0x05, 0xff, 0x04, + 0x2d, 0x04, 0x4b, 0x01, 0xa6, 0xf7, 0x93, 0xef, 0x13, 0xef, 0x26, 0xfb, + 0xb3, 0x03, 0x08, 0x05, 0xc8, 0x00, 0x20, 0xf9, 0xcb, 0xf6, 0xa9, 0xfd, + 0x37, 0x03, 0x1a, 0x06, 0x0f, 0x04, 0x97, 0x00, 0xa7, 0xfb, 0xa5, 0xf7, + 0x34, 0xf8, 0x51, 0xfa, 0x60, 0xfd, 0x9c, 0xff, 0x06, 0xfe, 0x0c, 0xfb, + 0xb6, 0xf8, 0x17, 0xf9, 0x03, 0xfe, 0xb5, 0x03, 0x78, 0x08, 0x35, 0x0b, + 0x6b, 0x0c, 0x69, 0x0c, 0x11, 0x0c, 0x2e, 0x0f, 0xd1, 0x0d, 0x10, 0x0e, + 0x23, 0x0c, 0xe0, 0x09, 0x9f, 0x05, 0x67, 0x02, 0x4e, 0xfe, 0x26, 0xfa, + 0x29, 0xf9, 0x6c, 0xf8, 0xa0, 0xf5, 0xbd, 0xf1, 0xeb, 0xec, 0x01, 0xec, + 0x93, 0xee, 0x47, 0xf4, 0x0d, 0xfa, 0xe9, 0xfc, 0xb1, 0xff, 0x8c, 0x01, + 0x9a, 0x03, 0x6e, 0x04, 0x19, 0x04, 0x6a, 0x07, 0x07, 0x08, 0x10, 0x09, + 0x69, 0x0b, 0xb0, 0x0a, 0x85, 0x0a, 0x82, 0x0a, 0x39, 0x09, 0xc0, 0x05, + 0x67, 0x00, 0xea, 0xfa, 0xae, 0xf6, 0x0e, 0xf8, 0x01, 0xfd, 0x91, 0xff, + 0x3e, 0x01, 0x81, 0x02, 0x17, 0x02, 0x90, 0xff, 0xee, 0xfb, 0x1a, 0xf8, + 0x52, 0xf6, 0x7d, 0xf7, 0x0c, 0xfb, 0x25, 0xfd, 0xb6, 0xff, 0x54, 0x02, + 0xaf, 0x05, 0xc9, 0x04, 0x1f, 0x02, 0x96, 0xfe, 0x47, 0xfa, 0x82, 0xf7, + 0x86, 0xf8, 0x04, 0xfb, 0x4e, 0xfa, 0x0e, 0xfb, 0xe0, 0xfd, 0x70, 0x02, + 0xb8, 0x07, 0xe0, 0x0b, 0xee, 0x0b, 0xcd, 0x08, 0x74, 0x08, 0x5a, 0x08, + 0x0b, 0x09, 0xe3, 0x08, 0x54, 0x09, 0x02, 0x08, 0xe8, 0x06, 0x76, 0x06, + 0x44, 0x05, 0xa9, 0x02, 0xc4, 0x00, 0xf5, 0xfd, 0xbe, 0xfb, 0x5f, 0xfa, + 0x6f, 0xf9, 0x26, 0xf7, 0x23, 0xf6, 0x94, 0xf7, 0x9c, 0xf9, 0x5c, 0xfc, + 0x6d, 0xff, 0xa9, 0x01, 0x22, 0x02, 0x7a, 0x04, 0x4b, 0x04, 0x87, 0x04, + 0x2d, 0x05, 0xbd, 0x03, 0xa2, 0x04, 0x7c, 0x04, 0x1c, 0x04, 0x95, 0x04, + 0x90, 0x03, 0x14, 0x01, 0x38, 0x02, 0x2b, 0x00, 0x8b, 0xfe, 0x93, 0xfe, + 0x5c, 0xfe, 0x33, 0xff, 0x12, 0xff, 0x8c, 0xfe, 0x4b, 0xfb, 0xd4, 0xfb, + 0x00, 0xfc, 0x94, 0xf8, 0x3e, 0xf8, 0x6a, 0xfb, 0x0a, 0xfe, 0xa4, 0xfe, + 0x96, 0x00, 0x22, 0x00, 0x0c, 0xfb, 0x39, 0xf9, 0x5b, 0xfa, 0xda, 0xfc, + 0xa2, 0xfe, 0xae, 0x00, 0x06, 0x01, 0x3d, 0x01, 0xef, 0x00, 0x35, 0x00, + 0x6f, 0xfe, 0x94, 0x00, 0xf1, 0x03, 0x79, 0x04, 0xfe, 0x05, 0xb2, 0x04, + 0x77, 0x05, 0xf7, 0x05, 0xa6, 0x07, 0xd0, 0x08, 0x64, 0x08, 0xf0, 0x08, + 0xd0, 0x06, 0xaf, 0x04, 0x44, 0x04, 0x8f, 0x03, 0x38, 0x01, 0x01, 0xff, + 0x4b, 0xfe, 0xc5, 0xfe, 0x57, 0x00, 0xe7, 0x02, 0x82, 0x02, 0xc8, 0x00, + 0x49, 0x03, 0xb5, 0x04, 0x40, 0x03, 0xdb, 0x01, 0x09, 0xff, 0xc9, 0xfd, + 0x71, 0xfb, 0x35, 0xfe, 0x4e, 0xff, 0x07, 0xff, 0xce, 0xfe, 0xb2, 0xfd, + 0xc9, 0xfd, 0xd4, 0xff, 0x10, 0x01, 0x60, 0xff, 0x99, 0xfe, 0xe9, 0xfe, + 0xe5, 0xfe, 0x89, 0xff, 0xe4, 0xff, 0xa7, 0xff, 0xc3, 0x00, 0x03, 0x01, + 0xed, 0x01, 0x8d, 0x00, 0xf9, 0xfc, 0x05, 0xfa, 0x20, 0xf9, 0x39, 0xfa, + 0x3e, 0xfa, 0x3a, 0xfb, 0x2b, 0xfe, 0xed, 0xff, 0x13, 0x00, 0x57, 0xfe, + 0x69, 0xfa, 0x1a, 0xf7, 0x03, 0xf8, 0x4a, 0xf9, 0xb5, 0xfa, 0x0d, 0xfd, + 0x0f, 0xff, 0x0a, 0x01, 0x5c, 0x04, 0x28, 0x06, 0xb8, 0x06, 0x90, 0x04, + 0x88, 0x04, 0x7c, 0x05, 0x4e, 0x04, 0x4c, 0x06, 0xa2, 0x06, 0x58, 0x04, + 0x41, 0x03, 0xed, 0x03, 0xeb, 0x03, 0xe5, 0x03, 0x44, 0x04, 0x46, 0x04, + 0x81, 0x04, 0x6e, 0x03, 0xa1, 0x01, 0x48, 0x01, 0x10, 0x02, 0xde, 0x02, + 0x85, 0x04, 0x67, 0x05, 0x4b, 0x05, 0x68, 0x04, 0x65, 0x03, 0x39, 0x02, + 0xd5, 0x01, 0x31, 0x03, 0x51, 0x03, 0x45, 0x02, 0x57, 0x02, 0xb4, 0x00, + 0x10, 0xff, 0xb2, 0xfc, 0x62, 0xfc, 0x79, 0xfb, 0x1d, 0xfc, 0x81, 0xfc, + 0xda, 0xfc, 0x53, 0xfc, 0xd3, 0xfa, 0x12, 0xfb, 0x3c, 0xfa, 0x5c, 0xfa, + 0x67, 0xfd, 0xab, 0xfe, 0x1c, 0xff, 0x18, 0x01, 0xd5, 0x01, 0x7a, 0x01, + 0x5b, 0x01, 0x33, 0xfe, 0xd4, 0xfc, 0x6a, 0xfd, 0x14, 0xfe, 0xb7, 0xfe, + 0x25, 0xfe, 0x41, 0xfc, 0x28, 0xfa, 0xbd, 0xfa, 0x02, 0xf9, 0xce, 0xf8, + 0x30, 0xf8, 0x21, 0xfa, 0x24, 0xfc, 0xe6, 0xfb, 0x4e, 0xfc, 0x19, 0xfe, + 0x8b, 0xfe, 0xe8, 0xff, 0x71, 0x01, 0xae, 0x02, 0x66, 0x03, 0x8f, 0x03, + 0x71, 0x03, 0xfd, 0x03, 0x4b, 0x04, 0x70, 0x06, 0xcc, 0x05, 0x60, 0x04, + 0xf0, 0x02, 0xdb, 0x01, 0x77, 0xff, 0x05, 0x00, 0x6b, 0xff, 0xcc, 0xff, + 0x36, 0x01, 0x57, 0x01, 0x2c, 0x02, 0x17, 0x02, 0x27, 0x01, 0xbf, 0x01, + 0x1a, 0x03, 0x71, 0x01, 0x6e, 0x02, 0x32, 0x03, 0x68, 0x03, 0x1d, 0x05, + 0x9c, 0x05, 0x20, 0x06, 0xfe, 0x05, 0xe1, 0x05, 0x1e, 0x04, 0x05, 0x02, + 0x6a, 0x02, 0x8d, 0x00, 0xe0, 0xfe, 0x93, 0xfd, 0x53, 0xfc, 0xc1, 0xfa, + 0x04, 0xfb, 0xb4, 0xfb, 0x5e, 0xfc, 0xc3, 0xfc, 0x5c, 0xfd, 0x58, 0xfd, + 0xfe, 0xfd, 0xda, 0xff, 0x68, 0x00, 0xfa, 0xff, 0x85, 0x00, 0x7a, 0x00, + 0x14, 0x00, 0x84, 0x00, 0x3d, 0x01, 0x36, 0x00, 0x72, 0xfd, 0x72, 0xfb, + 0x4b, 0xf9, 0x28, 0xf9, 0x28, 0xfa, 0x33, 0xfa, 0x82, 0xf6, 0x9b, 0xf7, + 0x06, 0xfa, 0xc4, 0xfd, 0x7d, 0xfe, 0xb7, 0xfe, 0xf5, 0xff, 0xcb, 0xfe, + 0x1e, 0xfe, 0x7f, 0xfe, 0xbc, 0xfd, 0x9c, 0xfe, 0x92, 0x00, 0xe3, 0x00, + 0x3c, 0x02, 0x7b, 0xff, 0x11, 0xfe, 0x5e, 0xff, 0x93, 0xff, 0xbe, 0xfe, + 0x41, 0x00, 0x88, 0xfd, 0x2c, 0xfd, 0xc7, 0xfe, 0xb0, 0x00, 0x00, 0x02, + 0x33, 0x02, 0x55, 0x01, 0xa7, 0x00, 0x39, 0xff, 0x81, 0x00, 0x17, 0x00, + 0x83, 0x00, 0x7c, 0x02, 0x64, 0x03, 0xe3, 0x01, 0x14, 0x01, 0x1a, 0x03, + 0x99, 0x03, 0x90, 0x02, 0xa2, 0x02, 0xaf, 0x00, 0x75, 0x00, 0x26, 0xff, + 0x9b, 0xfe, 0x4e, 0xfa, 0xd0, 0xfd, 0x4b, 0xff, 0x58, 0xff, 0x8d, 0x00, + 0xbe, 0x01, 0x97, 0x02, 0x9c, 0x00, 0x5b, 0x01, 0xbe, 0xff, 0xe6, 0xfe, + 0x4e, 0xff, 0xfe, 0x00, 0x23, 0x02, 0xa0, 0x02, 0xc1, 0x01, 0x7a, 0x01, + 0x09, 0x00, 0x30, 0xff, 0xf1, 0xfd, 0x40, 0xfe, 0xbe, 0xfc, 0x0e, 0xfb, + 0xb2, 0xf9, 0x71, 0xfb, 0x32, 0xfb, 0xe5, 0xfc, 0x07, 0xfe, 0x98, 0xfe, + 0x95, 0xfe, 0x13, 0xff, 0xea, 0xfe, 0x6e, 0xfe, 0x87, 0xff, 0x9f, 0xff, + 0xd0, 0x00, 0x09, 0x01, 0xe6, 0x00, 0x64, 0x00, 0xcc, 0xff, 0x8f, 0xfe, + 0x88, 0xfd, 0x46, 0xff, 0x35, 0xfe, 0x8f, 0xfd, 0xbe, 0xfd, 0x06, 0xfe, + 0x39, 0xff, 0x07, 0x01, 0x1f, 0x01, 0xc8, 0x00, 0x6c, 0xff, 0x79, 0xff, + 0x2e, 0x00, 0x80, 0xff, 0xa5, 0xfd, 0x6c, 0xff, 0x09, 0x00, 0x4c, 0x00, + 0xa5, 0xff, 0x23, 0xfe, 0xd9, 0xfd, 0xd1, 0xfd, 0xe1, 0xfe, 0x46, 0x00, + 0x8c, 0xff, 0x2f, 0x00, 0x6b, 0x01, 0xf7, 0x00, 0x9e, 0x01, 0xb3, 0x01, + 0x01, 0xff, 0x80, 0x00, 0x03, 0x01, 0x50, 0x02, 0xa5, 0x02, 0xcc, 0x00, + 0x36, 0x01, 0x5a, 0x00, 0xd0, 0xff, 0x78, 0xfe, 0x77, 0xfe, 0x35, 0xff, + 0xe0, 0xff, 0x9e, 0xff, 0x78, 0xff, 0x7a, 0xff, 0x92, 0x01, 0x33, 0x00, + 0x93, 0x01, 0x30, 0x00, 0x8c, 0xfe, 0x38, 0xfe, 0x0d, 0xff, 0x0f, 0xff, + 0xe1, 0xfe, 0x8e, 0xff, 0xa7, 0xff, 0xfb, 0xfe, 0x86, 0xfe, 0x2c, 0xff, + 0xa1, 0xfd, 0x58, 0xfd, 0xb4, 0xfd, 0x3c, 0xfe, 0x24, 0xfc, 0xa3, 0xfd, + 0x29, 0x01, 0x77, 0x00, 0x29, 0x00, 0xe6, 0xff, 0xc1, 0xff, 0x5c, 0x00, + 0xd9, 0xff, 0x6d, 0xff, 0xa5, 0x00, 0xb2, 0xfe, 0x4e, 0xff, 0xe3, 0xff, + 0xb6, 0xff, 0x75, 0xfe, 0x1d, 0x00, 0x23, 0x00, 0x92, 0xfe, 0x7f, 0xff, + 0xc1, 0xff, 0xd4, 0xfc, 0x61, 0xff, 0xc7, 0x01, 0x6d, 0xff, 0xc5, 0xff, + 0xa6, 0x00, 0xf7, 0xff, 0x55, 0xff, 0xc2, 0xfe, 0x50, 0xfe, 0x57, 0xff, + 0xe8, 0xfe, 0x82, 0x01, 0x58, 0x00, 0xd4, 0x00, 0x5c, 0x00, 0xc6, 0xff, + 0xe0, 0x01, 0xa3, 0xff, 0x2a, 0x00, 0x86, 0xff, 0x0c, 0x01, 0x80, 0x00, + 0x58, 0x00, 0x04, 0xfe, 0xf0, 0xff, 0x29, 0x01, 0x1b, 0x01, 0xc8, 0xfd, + 0xbb, 0xff, 0xdb, 0x00, 0xf7, 0xff, 0x08, 0x01, 0xb6, 0x01, 0xa4, 0x00, + 0x17, 0x01, 0x83, 0x01, 0x06, 0x03, 0xaa, 0x00, 0xf6, 0xff, 0x12, 0xff, + 0xc6, 0xff, 0xcd, 0xfd, 0x40, 0xfe, 0xdd, 0xfe, 0xe0, 0xfd, 0x09, 0xff, + 0x8e, 0xfe, 0x6f, 0x00, 0x57, 0xff, 0x7e, 0xff, 0xeb, 0xfe, 0x9e, 0x00, + 0x33, 0x00, 0xf2, 0xff, 0xfc, 0xfe, 0xe8, 0xff, 0xb0, 0xfd, 0x64, 0x02, + 0xda, 0x01, 0x8c, 0x01, 0x5d, 0xff, 0xb5, 0xfc, 0xbf, 0xfd, 0xa5, 0xff, + 0x8f, 0xff, 0x90, 0xff, 0x9a, 0xfe, 0x75, 0xff, 0x62, 0xff, 0x0c, 0x00, + 0x55, 0xff, 0x92, 0xff, 0xd7, 0xfe, 0xa3, 0xff, 0x0b, 0x00, 0xeb, 0x00, + 0xd7, 0xfe, 0xe4, 0x00, 0x4f, 0x01, 0xdc, 0x02, 0xae, 0x02, 0xdf, 0x02, + 0xae, 0xff, 0xd8, 0x00, 0x7a, 0x01, 0x5c, 0x02, 0x6f, 0x04, 0xb8, 0x01, + 0xfc, 0xff, 0x1c, 0x01, 0x60, 0xff, 0x91, 0x01, 0x21, 0x01, 0xc0, 0xff, + 0x21, 0x00, 0x0c, 0x05, 0xb3, 0x04, 0x36, 0x05, 0x55, 0x03, 0x01, 0x00, + 0xa7, 0x00, 0xc0, 0xfe, 0xd4, 0xff, 0xe7, 0x00, 0xfe, 0x02, 0xf5, 0x01, + 0xb7, 0x00, 0x35, 0xff, 0x54, 0xff, 0x64, 0x00, 0x80, 0xff, 0x29, 0x00, + 0xfd, 0x02, 0x69, 0x00, 0xcc, 0xff, 0xd0, 0x03, 0x60, 0x01, 0x70, 0xff, + 0xce, 0xfe, 0x50, 0xff, 0xdd, 0x00, 0xa1, 0x00, 0x20, 0xfe, 0xcc, 0xfb, + 0xb5, 0xff, 0xa2, 0xff, 0x63, 0x01, 0xe1, 0xfc, 0xd3, 0xfd, 0xd9, 0xfd, + 0x94, 0xfd, 0xff, 0xfe, 0xc4, 0xfe, 0x75, 0x00, 0xa4, 0xff, 0xe5, 0xfc, + 0x80, 0x00, 0xd4, 0xff, 0xb5, 0x00, 0x04, 0x00, 0x15, 0x00, 0x1e, 0xff, + 0xc0, 0xfe, 0x7b, 0xfe, 0xc1, 0x01, 0xb2, 0x00, 0xef, 0x01, 0x61, 0x00, + 0x56, 0x01, 0xe2, 0xff, 0x0c, 0xff, 0xb2, 0x01, 0xa5, 0xff, 0xf2, 0xff, + 0x15, 0x02, 0xa7, 0x01, 0xaf, 0x02, 0x94, 0x00, 0x40, 0x01, 0x04, 0x01, + 0x6e, 0x00, 0x10, 0x01, 0xa1, 0xff, 0x74, 0x02, 0xfe, 0x01, 0x39, 0x02, + 0xc0, 0x01, 0xe3, 0x01, 0x2c, 0x01, 0xcb, 0x01, 0x09, 0x00, 0x32, 0x01, + 0xd2, 0xff, 0x5b, 0xff, 0xd6, 0xfe, 0x5e, 0x00, 0x67, 0x01, 0x39, 0xff, + 0x80, 0x00, 0x6f, 0x01, 0x48, 0xfe, 0x33, 0x02, 0x98, 0x01, 0xe0, 0xfd, + 0xd3, 0x00, 0xeb, 0x00, 0x1e, 0x00, 0xf7, 0x01, 0x65, 0x01, 0x83, 0xff, + 0x33, 0x03, 0x95, 0x01, 0xf2, 0x01, 0x70, 0x01, 0x87, 0x00, 0x17, 0x00, + 0x59, 0xfe, 0x65, 0x01, 0x7c, 0xfe, 0xf3, 0xfe, 0xc0, 0x00, 0x3c, 0x00, + 0xe9, 0xff, 0x23, 0xff, 0xf8, 0xfe, 0x29, 0xfe, 0xef, 0xfe, 0x2a, 0xff, + 0x46, 0xfe, 0xb2, 0xff, 0x40, 0x00, 0x3e, 0xff, 0x60, 0xff, 0xd2, 0xff, + 0x8d, 0xff, 0x91, 0xff, 0x1a, 0xff, 0x1d, 0xfe, 0x0e, 0x01, 0xb4, 0xfe, + 0x1b, 0xff, 0xa1, 0xff, 0xb7, 0xfe, 0x4b, 0xff, 0xfc, 0xff, 0xa0, 0xfe, + 0xa5, 0xff, 0x98, 0xfe, 0xd4, 0xff, 0xb4, 0xff, 0xcc, 0x00, 0xa6, 0x02, + 0x0b, 0x01, 0xfb, 0xff, 0xce, 0x02, 0x41, 0x01, 0xb6, 0x01, 0xbe, 0x00, + 0x17, 0x03, 0x6c, 0x01, 0xae, 0xff, 0xc5, 0xff, 0x92, 0x01, 0xa8, 0xfe, + 0x18, 0xff, 0xdb, 0xfd, 0x30, 0x00, 0x29, 0x00, 0x06, 0x01, 0x3f, 0x01, + 0xed, 0x01, 0xc4, 0x01, 0xe1, 0xfe, 0x1f, 0x03, 0x66, 0x00, 0x86, 0x01, + 0xa8, 0x00, 0x34, 0x02, 0x71, 0xfe, 0x71, 0x00, 0x8c, 0xff, 0x0c, 0x01, + 0x87, 0x00, 0x78, 0x01, 0xb7, 0x01, 0x81, 0x01, 0xa1, 0xff, 0x39, 0x00, + 0xe6, 0xff, 0xd2, 0x03, 0x4e, 0x01, 0x3f, 0x00, 0xc4, 0x02, 0xc3, 0x00, + 0xed, 0xff, 0x42, 0x01, 0x59, 0x00, 0x77, 0xff, 0xc9, 0xfe, 0xb4, 0xff, + 0x70, 0xff, 0x29, 0x00, 0x86, 0xff, 0x36, 0x00, 0xa9, 0xfe, 0x5f, 0xff, + 0xa3, 0xff, 0xab, 0xfe, 0xbb, 0xff, 0x78, 0x03, 0x4b, 0x00, 0xab, 0x00, + 0x60, 0x00, 0xcb, 0xfc, 0x98, 0xfd, 0x85, 0xfd, 0x42, 0xff, 0xc6, 0xfd, + 0xf4, 0x00, 0x86, 0x00, 0xa4, 0xff, 0xce, 0xfe, 0x29, 0xff, 0x54, 0xff, + 0xd4, 0x01, 0x0b, 0x00, 0x06, 0x00, 0xf6, 0xff, 0xaf, 0xff, 0x54, 0x00, + 0x7e, 0x00, 0x60, 0x01, 0x2d, 0xff, 0x03, 0x01, 0x00, 0x00, 0xf1, 0xfd, + 0x9f, 0x00, 0x6e, 0x00, 0x84, 0x00, 0xed, 0xff, 0x32, 0x01, 0xd4, 0x01, + 0x52, 0x00, 0x55, 0x00, 0xaf, 0x03, 0xaa, 0x00, 0x4a, 0x01, 0x39, 0x02, + 0xc5, 0xff, 0xf0, 0xfd, 0x39, 0xff, 0x4b, 0xff, 0x16, 0xff, 0x6c, 0xfe, + 0x63, 0x00, 0xef, 0x01, 0xeb, 0x00, 0xea, 0x01, 0x81, 0xfc, 0x64, 0x02, + 0xa4, 0x00, 0x23, 0x00, 0x4c, 0x01, 0x37, 0x00, 0x9f, 0x00, 0xfa, 0xff, + 0xf7, 0x00, 0x0f, 0x00, 0x7a, 0xff, 0xbd, 0xfe, 0x5f, 0x00, 0x5d, 0x00, + 0x35, 0xfe, 0x99, 0xff, 0x07, 0x00, 0x3d, 0x01, 0x00, 0x00, 0xe2, 0x00, + 0xe5, 0x01, 0xd5, 0xff, 0x9f, 0xff, 0x57, 0x00, 0x90, 0xff, 0xea, 0xfe, + 0xd3, 0x00, 0x3e, 0x01, 0xac, 0x01, 0x6f, 0x01, 0xad, 0xff, 0x12, 0x01, + 0x06, 0x00, 0x74, 0xfe, 0xa1, 0xfe, 0xc1, 0xff, 0xff, 0xfe, 0xc4, 0x00, + 0xc2, 0xff, 0x0e, 0xff, 0x96, 0x00, 0x68, 0xff, 0x2e, 0xff, 0xa8, 0xfe, + 0xd5, 0xff, 0xe8, 0xfe, 0xf7, 0xfe, 0x3b, 0xff, 0xd8, 0xfe, 0x79, 0x00, + 0xc5, 0x00, 0x4b, 0xff, 0x2a, 0x00, 0xde, 0xfe, 0xfa, 0xfe, 0xab, 0xfc, + 0xd3, 0x01, 0x5c, 0xff, 0x07, 0x00, 0xd2, 0xfe, 0xee, 0xfb, 0x8f, 0x01, + 0x51, 0x00, 0x75, 0xff, 0xde, 0x01, 0xb1, 0x01, 0x56, 0x00, 0xc8, 0xff, + 0x4f, 0x02, 0x46, 0x00, 0x95, 0x00, 0x70, 0x01, 0x81, 0x01, 0xa9, 0x01, + 0x5f, 0x00, 0x13, 0x01, 0xcb, 0x00, 0x1b, 0x01, 0xb7, 0xff, 0xbf, 0x01, + 0x59, 0xfe, 0x69, 0x00, 0xdd, 0x00, 0x18, 0xff, 0x29, 0x00, 0x2e, 0x01, + 0x2f, 0x00, 0x8b, 0xfe, 0x2e, 0xff, 0x24, 0x01, 0x41, 0xff, 0x66, 0xfe, + 0x5e, 0xfd, 0x2e, 0xff, 0x83, 0xff, 0x44, 0x00, 0x84, 0x00, 0xcd, 0xff, + 0x21, 0x00, 0x74, 0xff, 0x66, 0xfd, 0xaf, 0xff, 0xce, 0xfe, 0x28, 0xff, + 0xb3, 0x02, 0xa0, 0x01, 0x42, 0x01, 0xdc, 0x01, 0xb1, 0xff, 0x2c, 0x00, + 0xf9, 0xff, 0x15, 0x00, 0x13, 0x00, 0xcd, 0xff, 0xf6, 0xfe, 0xce, 0xfe, + 0xa8, 0xfe, 0x89, 0xff, 0x53, 0xff, 0x40, 0xfd, 0x46, 0x00, 0x12, 0x00, + 0x6a, 0x00, 0x4b, 0xff, 0x41, 0x00, 0x8e, 0xfe, 0xe2, 0xff, 0x18, 0xfe, + 0x05, 0xfe, 0xa4, 0xfe, 0x48, 0xff, 0xed, 0xfe, 0xc6, 0xfd, 0x9e, 0xfd, + 0x11, 0xfe, 0xb0, 0xfe, 0xde, 0xff, 0x68, 0xff, 0x10, 0x00, 0x64, 0xff, + 0xed, 0xfe, 0x94, 0x01, 0x07, 0x02, 0x89, 0x01, 0x7d, 0x01, 0xc2, 0xff, + 0x1b, 0x01, 0xab, 0xfe, 0xfc, 0x00, 0x5a, 0x00, 0x3d, 0x01, 0x68, 0xff, + 0x06, 0x01, 0x51, 0xff, 0x7a, 0x00, 0x15, 0x01, 0x18, 0xff, 0x84, 0xfe, + 0x57, 0xff, 0xf8, 0x01, 0x1e, 0x01, 0x52, 0x00, 0x73, 0xff, 0xef, 0xfe, + 0x2a, 0x01, 0x30, 0xff, 0x9a, 0xff, 0x11, 0xff, 0x3d, 0xfe, 0x98, 0xff, + 0x20, 0xfe, 0x9b, 0xff, 0x57, 0x01, 0x5c, 0x01, 0xf2, 0xfc, 0xac, 0xff, + 0x9e, 0x00, 0xb2, 0xfe, 0x7f, 0x00, 0x54, 0xff, 0xe1, 0xff, 0x04, 0xff, + 0xdc, 0x01, 0xa5, 0x00, 0x47, 0xff, 0xfb, 0x00, 0x96, 0x00, 0x05, 0x00, + 0x56, 0x02, 0x1d, 0x00, 0xe2, 0xfe, 0xd0, 0xff, 0x5d, 0xfd, 0x49, 0xff, + 0xda, 0xfe, 0x61, 0x00, 0x43, 0xff, 0x33, 0xff, 0xe6, 0xfd, 0x98, 0x00, + 0x45, 0x00, 0x6b, 0x00, 0xf9, 0xff, 0xd8, 0xff, 0x4b, 0xff, 0x10, 0x01, + 0xd3, 0xfe, 0x52, 0xfe, 0x6e, 0xff, 0x6e, 0x01, 0xaa, 0xff, 0x1d, 0xfe, + 0x05, 0x01, 0x4f, 0x00, 0x7e, 0xff, 0x50, 0x00, 0x86, 0x00, 0x31, 0x00, + 0x3e, 0x00, 0x8d, 0x03, 0x80, 0x00, 0x0b, 0x01, 0xb3, 0xfe, 0xf7, 0xff, + 0xe5, 0xfe, 0xc8, 0xff, 0xf8, 0xff, 0xc0, 0xff, 0x52, 0x00, 0x1f, 0x00, + 0x7b, 0x00, 0x4c, 0x00, 0xb2, 0xfe, 0x1d, 0xff, 0xd9, 0xff, 0xf6, 0x00, + 0x93, 0xff, 0xe9, 0x00, 0x57, 0x00, 0x84, 0x00, 0x96, 0x00, 0x66, 0xff, + 0xe3, 0xfe, 0xa3, 0xfe, 0xb9, 0xff, 0x02, 0xff, 0xff, 0xfd, 0x3d, 0x00, + 0x7a, 0xff, 0xff, 0xfd, 0xd4, 0xff, 0x2e, 0xfe, 0x1e, 0xff, 0x6a, 0x01, + 0xdf, 0xff, 0xb6, 0x00, 0x82, 0x02, 0x45, 0x00, 0x4d, 0x00, 0xe0, 0x00, + 0x5b, 0x01, 0x98, 0xff, 0x06, 0x01, 0x00, 0x00, 0xfa, 0x00, 0xcc, 0xff, + 0x07, 0x01, 0xf8, 0xff, 0x0e, 0x00, 0x85, 0x01, 0x42, 0xff, 0xa8, 0x00, + 0xa5, 0xff, 0x61, 0x00, 0x91, 0xff, 0x3c, 0x00, 0x40, 0x01, 0x94, 0xfe, + 0xfd, 0xff, 0x2e, 0xff, 0xfb, 0xff, 0x0b, 0x00, 0x73, 0xff, 0xb8, 0xfe, + 0xc7, 0xfe, 0xcf, 0xfd, 0xa2, 0xff, 0xcd, 0xfd, 0x32, 0xff, 0x79, 0x00, + 0x9f, 0xfe, 0xdc, 0xff, 0x73, 0xff, 0xec, 0xfd, 0x40, 0x00, 0xa0, 0xff, + 0xf6, 0xfe, 0x5c, 0x01, 0x39, 0x00, 0x41, 0xff, 0x6c, 0x00, 0xb6, 0x01, + 0x0b, 0x00, 0x4f, 0x02, 0xef, 0x00, 0xbd, 0x00, 0x27, 0x01, 0x2e, 0x00, + 0x4c, 0x01, 0x5a, 0xff, 0x96, 0x01, 0xcf, 0xff, 0x6c, 0x01, 0x01, 0x00, + 0x97, 0x01, 0xb0, 0xfe, 0x8c, 0xff, 0xd3, 0xff, 0x95, 0xff, 0xc5, 0xfd, + 0x41, 0x00, 0x0c, 0xff, 0xf9, 0xfe, 0x2b, 0x00, 0xec, 0xfd, 0xea, 0x00, + 0x56, 0xff, 0xc7, 0xff, 0x33, 0x00, 0x2b, 0x00, 0x4d, 0xfd, 0xd1, 0xfe, + 0x9d, 0xff, 0xd4, 0xff, 0x9d, 0xff, 0xd9, 0x00, 0x0b, 0x01, 0x12, 0x01, + 0xfa, 0x01, 0xc8, 0x00, 0xae, 0x00, 0x68, 0xff, 0x5b, 0x03, 0x58, 0xfe, + 0xc7, 0x02, 0xb2, 0x01, 0xab, 0xfe, 0xc1, 0x00, 0x79, 0x00, 0xb8, 0xff, + 0x9f, 0x00, 0xd6, 0xfe, 0x24, 0xff, 0xaf, 0xfe, 0x5a, 0xff, 0x90, 0x00, + 0x49, 0xfb, 0x3e, 0x01, 0x53, 0xfd, 0xd2, 0x00, 0xb1, 0xfe, 0xcb, 0xff, + 0x5c, 0x00, 0x97, 0x00, 0x0a, 0xff, 0xc5, 0xff, 0xed, 0xfe, 0xe2, 0xfe, + 0x06, 0xff, 0x99, 0xff, 0x0a, 0x00, 0x4c, 0x00, 0xad, 0x01, 0xd9, 0xff, + 0xe6, 0x00, 0x98, 0x01, 0x37, 0x00, 0xcf, 0x00, 0x5e, 0xff, 0x91, 0x03, + 0x90, 0xff, 0x16, 0x01, 0x61, 0x00, 0xe8, 0xfd, 0x54, 0x01, 0xec, 0xff, + 0x58, 0x00, 0xd9, 0xff, 0xf1, 0xfe, 0x7e, 0xff, 0x7f, 0xff, 0x33, 0xff, + 0x09, 0xff, 0xff, 0xff, 0x66, 0xff, 0x4d, 0xff, 0x07, 0x01, 0x7c, 0xfe, + 0xd1, 0x00, 0x42, 0x02, 0xeb, 0xfe, 0xe6, 0xff, 0x14, 0x00, 0xe0, 0xfd, + 0x6d, 0x01, 0x26, 0xff, 0x13, 0x00, 0xb6, 0xff, 0xce, 0x00, 0xe4, 0xff, + 0x8a, 0x01, 0x37, 0x00, 0x11, 0x00, 0xa5, 0xfd, 0xd5, 0x00, 0xfa, 0x01, + 0xf4, 0xff, 0x40, 0x01, 0xd5, 0x00, 0x41, 0xff, 0xc7, 0xfe, 0xe9, 0xff, + 0xfa, 0xfe, 0x28, 0x01, 0xbc, 0x01, 0x9f, 0xff, 0x31, 0x02, 0x68, 0xff, + 0x1e, 0x00, 0x4f, 0xff, 0xe7, 0xfe, 0x53, 0xfe, 0x89, 0x00, 0xe9, 0xff, + 0x9f, 0xff, 0x38, 0xff, 0x9e, 0x00, 0x39, 0x00, 0x9b, 0xff, 0xb3, 0xff, + 0xa3, 0x00, 0x7f, 0x02, 0xf1, 0xfd, 0xa6, 0xff, 0xeb, 0x00, 0xf0, 0x00, + 0x33, 0x01, 0xd0, 0x03, 0xec, 0xff, 0xd9, 0x01, 0x4a, 0xff, 0x46, 0x01, + 0xbd, 0xfe, 0x7a, 0x00, 0xbf, 0x00, 0x76, 0xff, 0x93, 0xff, 0x06, 0x01, + 0x5f, 0x00, 0xf8, 0x00, 0x2c, 0x01, 0x32, 0x01, 0x0a, 0xff, 0xc6, 0x00, + 0x24, 0xff, 0x2f, 0xfe, 0xab, 0xfe, 0x6b, 0xfe, 0xe7, 0xfe, 0xb8, 0x00, + 0xa9, 0xff, 0x8c, 0xfe, 0x49, 0x00, 0x21, 0xff, 0xdc, 0xfe, 0x0a, 0xff, + 0x4f, 0x00, 0x71, 0xff, 0xc8, 0x00, 0x8a, 0xfe, 0xd7, 0x00, 0x21, 0x00, + 0xca, 0x00, 0x3d, 0x00, 0xf4, 0x00, 0x71, 0x00, 0x44, 0x00, 0x87, 0xff, + 0xa5, 0x01, 0x06, 0x00, 0xe2, 0xfe, 0xac, 0x00, 0x48, 0xff, 0x70, 0x00, + 0xfd, 0x00, 0x8c, 0x00, 0xb9, 0x01, 0xe8, 0x01, 0x5b, 0x01, 0xc2, 0xff, + 0x86, 0x00, 0x45, 0xff, 0xdd, 0xff, 0x04, 0x00, 0x45, 0x00, 0x9e, 0x00, + 0x94, 0xff, 0x9e, 0xff, 0x45, 0xff, 0x72, 0xff, 0xba, 0xfe, 0xa7, 0xff, + 0x7e, 0xff, 0xbd, 0xff, 0xe7, 0xfe, 0x56, 0x00, 0xea, 0x00, 0x04, 0xff, + 0x75, 0x00, 0x7c, 0xff, 0xcf, 0xff, 0xda, 0x00, 0xb6, 0xff, 0xf6, 0x00, + 0x1d, 0xff, 0x10, 0xff, 0x28, 0x00, 0x16, 0xff, 0xf1, 0xff, 0xa5, 0xff, + 0xe5, 0x00, 0x4f, 0xfe, 0x9b, 0x01, 0x53, 0x01, 0x19, 0xff, 0xcc, 0x00, + 0x66, 0xfe, 0xb5, 0x00, 0xdc, 0xfe, 0x21, 0x00, 0x82, 0x00, 0x85, 0x00, + 0x55, 0x00, 0xe6, 0xff, 0xf9, 0xff, 0xf5, 0xff, 0xab, 0x00, 0xaa, 0xfd, + 0x00, 0x00, 0xbf, 0xff, 0xb4, 0x00, 0xf1, 0xfe, 0xfb, 0xff, 0x8d, 0x00, + 0x17, 0xff, 0x73, 0xff, 0x94, 0xfe, 0x9d, 0x02, 0x91, 0xfe, 0xd8, 0x00, + 0x9b, 0x00, 0x18, 0x00, 0xb8, 0x00, 0x29, 0x00, 0xb7, 0x00, 0x59, 0x00, + 0x00, 0x00, 0x54, 0x00, 0x4a, 0xff, 0xfc, 0xff, 0x7c, 0xfe, 0x6a, 0xff, + 0xa2, 0xff, 0x79, 0xff, 0xf7, 0x00, 0xb2, 0xff, 0x54, 0xfe, 0xa8, 0x00, + 0xfa, 0xfc, 0xfa, 0xff, 0x6d, 0x01, 0x45, 0xff, 0x61, 0x01, 0x23, 0x00, + 0x3d, 0xff, 0x03, 0x00, 0x4c, 0xff, 0xd1, 0xff, 0xe8, 0xfe, 0xc2, 0xff, + 0x90, 0x00, 0x64, 0xff, 0x5d, 0xff, 0x89, 0xfe, 0x9b, 0x00, 0xfc, 0xfe, + 0xea, 0x00, 0xf3, 0xfe, 0x16, 0x02, 0x1c, 0x01, 0x0c, 0x03, 0x25, 0x01, + 0xbb, 0x01, 0xaa, 0xff, 0xa4, 0x01, 0xfc, 0x00, 0xf1, 0xff, 0x70, 0xff, + 0xcf, 0x00, 0xb8, 0x00, 0x6e, 0x00, 0x45, 0xff, 0xf8, 0xff, 0xd8, 0xff, + 0x2e, 0x00, 0x91, 0xff, 0xe2, 0xfe, 0xf0, 0xff, 0xcb, 0xff, 0xbc, 0xff, + 0x93, 0xff, 0x93, 0xfe, 0x26, 0xfe, 0xcf, 0xfe, 0x2b, 0xfe, 0x7b, 0x01, + 0xb2, 0xfe, 0x2d, 0x02, 0xf4, 0xfd, 0x8f, 0x01, 0x4b, 0xff, 0x86, 0x02, + 0x99, 0xff, 0xa6, 0xff, 0x0b, 0xff, 0xfc, 0xfe, 0x20, 0x01, 0x1a, 0xff, + 0x93, 0x00, 0xaf, 0x01, 0x30, 0x00, 0x2b, 0x01, 0x52, 0x01, 0xfc, 0xfd, + 0xe5, 0x01, 0xbc, 0xff, 0xf8, 0xfe, 0x7b, 0x00, 0xf5, 0xff, 0x90, 0xfe, + 0x27, 0x01, 0xf7, 0xfb, 0x63, 0xff, 0x08, 0x02, 0xbb, 0xfd, 0xa5, 0x00, + 0x6f, 0x00, 0x0a, 0xff, 0xa2, 0xff, 0x28, 0xff, 0x96, 0x00, 0x1b, 0xff, + 0x1c, 0x01, 0x1b, 0xff, 0xee, 0x02, 0xf3, 0xfe, 0xdc, 0x01, 0x9b, 0xfe, + 0xcc, 0x01, 0x23, 0xff, 0x7a, 0xfe, 0x94, 0x01, 0x66, 0xff, 0x62, 0x00, + 0xd0, 0x00, 0xb0, 0x00, 0x83, 0x01, 0x0f, 0x00, 0x6a, 0x00, 0x1f, 0x01, + 0xe8, 0xff, 0x54, 0x01, 0x04, 0xff, 0x23, 0xfc, 0x4e, 0xfe, 0x59, 0x04, + 0xdf, 0xfb, 0x48, 0x01, 0x1a, 0x00, 0xb1, 0x01, 0x68, 0xff, 0xf5, 0x00, + 0x0e, 0xff, 0x79, 0x00, 0x22, 0xff, 0x8d, 0xff, 0xd3, 0xff, 0xed, 0x01, + 0x27, 0x01, 0x72, 0x00, 0x52, 0x01, 0x2b, 0x00, 0x33, 0x00, 0x90, 0x00, + 0xbb, 0x00, 0xdb, 0xff, 0x3b, 0xfe, 0xbe, 0x00, 0x8f, 0x00, 0xf3, 0x02, + 0xa9, 0xff, 0xb0, 0x00, 0x5e, 0xff, 0xa9, 0xff, 0x2f, 0x01, 0x32, 0xfe, + 0x64, 0xff, 0xf2, 0xfd, 0xb8, 0xff, 0x85, 0xff, 0xaf, 0xff, 0x6f, 0xfd, + 0x04, 0x01, 0x39, 0xfe, 0x9a, 0xfe, 0x9b, 0xfe, 0x2c, 0xfc, 0xdd, 0xfd, + 0xe7, 0xfe, 0x04, 0xff, 0x84, 0xfd, 0xf5, 0x00, 0x3c, 0x03, 0x6d, 0xff, + 0xce, 0x01, 0x8a, 0xff, 0x2d, 0x02, 0x58, 0xff, 0xc9, 0x00, 0xba, 0x00, + 0x49, 0x00, 0x03, 0x02, 0xfa, 0xff, 0xba, 0x00, 0x16, 0x02, 0x7c, 0xff, + 0x8b, 0x00, 0x3f, 0x00, 0xd2, 0xff, 0x6d, 0xfb, 0xa2, 0x00, 0xf5, 0xfd, + 0xda, 0xff, 0xbb, 0xff, 0x23, 0xff, 0x5b, 0xfe, 0x11, 0xff, 0xdc, 0x00, + 0x44, 0x00, 0x86, 0xff, 0x12, 0xff, 0x62, 0xff, 0xea, 0xfe, 0xad, 0xff, + 0x1d, 0x00, 0xce, 0xff, 0x93, 0xff, 0x26, 0x01, 0x85, 0x00, 0x97, 0x01, + 0x5c, 0x00, 0x32, 0x00, 0x1b, 0x00, 0x5b, 0x00, 0x3d, 0xff, 0xe7, 0x00, + 0x2d, 0x00, 0x47, 0x00, 0x0b, 0xff, 0x25, 0x04, 0x01, 0x00, 0x56, 0x00, + 0xe0, 0xff, 0x12, 0x00, 0x4e, 0xfe, 0x4d, 0x00, 0x32, 0xff, 0x71, 0x00, + 0x96, 0xff, 0x4b, 0x01, 0x6c, 0x01, 0x9b, 0xfd, 0xdf, 0x00, 0x2e, 0x00, + 0x9f, 0xfb, 0xaf, 0xfe, 0xd5, 0xff, 0xa9, 0x01, 0x44, 0xfe, 0xc5, 0x02, + 0x1c, 0xff, 0x21, 0x03, 0x99, 0x00, 0x97, 0xfd, 0xd9, 0xff, 0xc5, 0xff, + 0x0d, 0xff, 0x20, 0x02, 0x07, 0x02, 0x71, 0xff, 0x29, 0x01, 0x37, 0xff, + 0x76, 0x01, 0x80, 0x01, 0x62, 0xff, 0x53, 0xfd, 0xc6, 0x00, 0x6f, 0xfc, + 0xe3, 0xff, 0xa5, 0xff, 0x95, 0xff, 0x50, 0xfe, 0x4a, 0x03, 0x56, 0xfe, + 0xfa, 0xfe, 0x36, 0x00, 0xda, 0x02, 0xc7, 0xfd, 0xaa, 0xff, 0x33, 0xfd, + 0x65, 0xfe, 0xc6, 0xff, 0x91, 0xff, 0x25, 0xff, 0xf4, 0xfe, 0xc3, 0x01, + 0x3d, 0xff, 0xd8, 0x00, 0x6a, 0x01, 0x96, 0x01, 0x8c, 0xff, 0xe4, 0xff, + 0xa9, 0x01, 0x09, 0x01, 0x67, 0x02, 0xfa, 0x01, 0xa0, 0x04, 0x4a, 0x00, + 0x16, 0xff, 0xc1, 0x01, 0x4f, 0xff, 0x5e, 0xff, 0x89, 0xfe, 0x8e, 0x01, + 0x23, 0xff, 0x5f, 0xfc, 0x0f, 0x01, 0x4c, 0x00, 0x47, 0xfe, 0xe4, 0xfd, + 0xfe, 0xff, 0x82, 0xfd, 0x99, 0xff, 0x3b, 0xff, 0x85, 0xfd, 0x32, 0xff, + 0xce, 0xfe, 0x80, 0x00, 0x22, 0x00, 0x74, 0xff, 0x24, 0x00, 0xe4, 0xff, + 0x50, 0x00, 0x48, 0xff, 0xc8, 0xfe, 0x5b, 0x00, 0x21, 0x00, 0x37, 0x01, + 0xe7, 0x00, 0x88, 0x02, 0xb0, 0xff, 0xaf, 0x00, 0x04, 0x01, 0x6e, 0x01, + 0x72, 0xfd, 0xbe, 0x00, 0xea, 0x01, 0xac, 0xff, 0x87, 0xfc, 0x3f, 0x02, + 0xdb, 0x01, 0x7b, 0xff, 0xe8, 0xff, 0xe4, 0xff, 0xd2, 0xfd, 0xb5, 0xff, + 0x2d, 0x02, 0x2b, 0x00, 0x63, 0xfe, 0x49, 0x01, 0xb5, 0xfe, 0xdc, 0xff, + 0x83, 0x00, 0xdb, 0x01, 0xaf, 0xfd, 0x6b, 0xff, 0xef, 0xff, 0x81, 0xfc, + 0x8b, 0x02, 0x18, 0xff, 0x44, 0x00, 0x67, 0xfe, 0x7a, 0x00, 0x00, 0x02, + 0xbe, 0xfc, 0x35, 0x02, 0x86, 0xff, 0x62, 0xff, 0x21, 0x00, 0xbc, 0xfe, + 0x10, 0x00, 0xf7, 0x00, 0x1e, 0x01, 0x46, 0x01, 0x9b, 0x01, 0xa2, 0xff, + 0x5b, 0x00, 0xec, 0x00, 0x37, 0x00, 0xc9, 0xfc, 0xdc, 0xfe, 0x54, 0xff, + 0xb8, 0xff, 0xde, 0xff, 0xf3, 0x00, 0xe3, 0x00, 0xf4, 0xfe, 0x3a, 0x00, + 0x75, 0x00, 0xd6, 0xfe, 0x68, 0xff, 0x7d, 0x01, 0x0c, 0x03, 0xbd, 0xff, + 0x27, 0x01, 0x21, 0x04, 0x99, 0x00, 0x37, 0x03, 0x93, 0xfe, 0x61, 0x01, + 0xd4, 0x02, 0x05, 0x01, 0x85, 0x01, 0x69, 0xfe, 0x5a, 0xff, 0x3e, 0xff, + 0x31, 0x00, 0xcb, 0x01, 0x73, 0xff, 0x53, 0xfe, 0xee, 0xff, 0x81, 0xfa, + 0x90, 0x00, 0x60, 0xfe, 0xcb, 0xff, 0xf8, 0xfe, 0xdf, 0xfc, 0xca, 0xff, + 0xb4, 0xff, 0x0d, 0xfe, 0x7e, 0xff, 0xcc, 0xff, 0xfc, 0xfd, 0xf6, 0xfc, + 0x18, 0x00, 0x85, 0xfe, 0x81, 0xff, 0x97, 0x00, 0xce, 0xfe, 0xd4, 0xff, + 0x36, 0x02, 0xfd, 0xff, 0x61, 0x01, 0x76, 0xfe, 0x99, 0xff, 0x62, 0x00, + 0x6f, 0x00, 0xa6, 0x00, 0x48, 0x00, 0xc2, 0x00, 0x9c, 0xfe, 0xae, 0xfd, + 0x4f, 0x02, 0xf7, 0x02, 0x0f, 0x00, 0xc6, 0x00, 0x13, 0x00, 0x11, 0x02, + 0x6f, 0x01, 0x6c, 0x00, 0x58, 0x01, 0xde, 0xfd, 0x00, 0x00, 0x2f, 0x01, + 0x4a, 0xfe, 0xa1, 0x00, 0x05, 0x00, 0x83, 0x00, 0xd9, 0xfd, 0xc5, 0xff, + 0xdb, 0xfe, 0x75, 0x00, 0xa4, 0xff, 0xbe, 0xff, 0xc2, 0xff, 0x41, 0x03, + 0xea, 0x01, 0x70, 0xfe, 0xa4, 0x02, 0xba, 0xff, 0x0a, 0xff, 0xc7, 0xff, + 0xa6, 0x00, 0x2b, 0x02, 0x38, 0x00, 0x5d, 0xfd, 0xfc, 0x00, 0xd9, 0x01, + 0x86, 0xff, 0xe8, 0x00, 0x4c, 0x00, 0x2a, 0x00, 0x80, 0x01, 0xcd, 0x00, + 0x86, 0xff, 0x6a, 0x00, 0x81, 0xff, 0xd9, 0x01, 0x09, 0x02, 0xe6, 0xff, + 0x62, 0xfe, 0xd0, 0xff, 0x44, 0xff, 0x3e, 0x00, 0xf2, 0xff, 0xe3, 0xff, + 0xfb, 0xff, 0x17, 0xff, 0x10, 0x01, 0x54, 0x01, 0x0d, 0x00, 0xce, 0x00, + 0x8d, 0xff, 0x0f, 0xff, 0xb1, 0x00, 0x32, 0x00, 0x4b, 0xff, 0x41, 0x02, + 0x98, 0x00, 0xd5, 0xff, 0x83, 0x00, 0x73, 0x00, 0x3a, 0x00, 0x15, 0xff, + 0xa6, 0xff, 0x6d, 0xfd, 0x91, 0xfe, 0xdd, 0x00, 0x8d, 0xff, 0x88, 0xfe, + 0x7d, 0x00, 0x98, 0x00, 0x4e, 0xff, 0x4f, 0x01, 0x93, 0x00, 0xe3, 0x00, + 0xb0, 0x00, 0x56, 0xff, 0xd7, 0xff, 0x48, 0xff, 0xce, 0xff, 0x42, 0x01, + 0x11, 0x01, 0xe5, 0x00, 0xfa, 0xff, 0x3f, 0x00, 0x5d, 0x00, 0x19, 0x01, + 0x85, 0x00, 0x7c, 0xfe, 0x23, 0x00, 0xdd, 0xfb, 0xf2, 0xff, 0xe9, 0x01, + 0xec, 0x01, 0xad, 0xff, 0xc7, 0xff, 0xa1, 0xff, 0x8f, 0x00, 0x10, 0x02, + 0x31, 0xff, 0x93, 0xff, 0x02, 0x02, 0x15, 0x01, 0x17, 0x00, 0xf1, 0x01, + 0x74, 0xff, 0xa4, 0x00, 0x20, 0xfe, 0x96, 0xff, 0x2a, 0x01, 0x2f, 0x00, + 0x11, 0xff, 0x1f, 0x00, 0xe1, 0x00, 0x1c, 0xff, 0xf7, 0xff, 0x66, 0x00, + 0x50, 0x00, 0xf3, 0x00, 0xb8, 0x00, 0xce, 0xff, 0xcc, 0x00, 0xe4, 0x00, + 0xc3, 0x02, 0xcb, 0x00, 0xfb, 0xff, 0x11, 0x01, 0x61, 0x00, 0x33, 0x01, + 0x79, 0x00, 0x4a, 0x00, 0x58, 0x00, 0x7e, 0xff, 0xb8, 0xff, 0x22, 0xff, + 0xed, 0xff, 0x71, 0x00, 0x1d, 0x00, 0xd7, 0xff, 0x18, 0x01, 0x5c, 0x00, + 0x85, 0xff, 0x1d, 0x01, 0x6b, 0xff, 0xe9, 0xff, 0xf1, 0x00, 0x26, 0x00, + 0x68, 0x00, 0xaf, 0x00, 0x21, 0x01, 0xf4, 0x00, 0x0b, 0x01, 0x06, 0x00, + 0x75, 0x01, 0xc6, 0x00, 0xaa, 0xff, 0x9f, 0x00, 0x5c, 0x00, 0x92, 0xff, + 0x9d, 0x00, 0xeb, 0x00, 0x26, 0xff, 0xbe, 0x00, 0xdf, 0x00, 0x2b, 0x00, + 0x21, 0xff, 0x8a, 0x00, 0xf9, 0xff, 0x31, 0x01, 0xb6, 0x00, 0xab, 0xff, + 0x99, 0x00, 0x23, 0x01, 0x85, 0x01, 0x18, 0x01, 0x6e, 0x00, 0xe1, 0xff, + 0x8c, 0xff, 0xf6, 0x00, 0x2f, 0x00, 0xe1, 0x00, 0x7a, 0x00, 0xf4, 0xff, + 0x15, 0x00, 0x9b, 0x00, 0xf6, 0x00, 0xf3, 0x00, 0x08, 0xff, 0x43, 0x00, + 0x91, 0x00, 0x45, 0x00, 0x67, 0x00, 0x00, 0x00, 0x9e, 0xff, 0xbc, 0x00, + 0x0e, 0x01, 0x6a, 0x00, 0x72, 0x00, 0x69, 0x00, 0xa0, 0x00, 0xbf, 0x00, + 0x7c, 0x00, 0x49, 0xff, 0xf9, 0xff, 0x71, 0x00, 0x71, 0x00, 0xfc, 0xff, + 0xa1, 0x00, 0xd1, 0x00, 0xcb, 0xff, 0xb6, 0x00, 0x87, 0x01, 0x22, 0x00, + 0x25, 0x02, 0xa1, 0x00, 0xbb, 0x00, 0x12, 0x01, 0x4e, 0x01, 0x5c, 0x01, + 0x7c, 0x01, 0x21, 0x00, 0x1a, 0x00, 0x7d, 0x00, 0x81, 0x00, 0x8b, 0x00, + 0x46, 0x00, 0xbb, 0x00, 0x8d, 0x00, 0xb1, 0x00, 0xfa, 0x00, 0x5c, 0x01, + 0x9d, 0x00, 0x01, 0x00, 0x17, 0x00, 0xf8, 0xff, 0xf6, 0x00, 0x8b, 0x00, + 0x5c, 0x00, 0x67, 0x00, 0xdf, 0xff, 0x3c, 0x00, 0x74, 0x00, 0x32, 0x00, + 0x61, 0x00, 0x3b, 0x00, 0x5f, 0x00, 0x9b, 0x00, 0x2f, 0x00, 0x65, 0x00, + 0xf4, 0x00, 0xbb, 0xff, 0xd5, 0xff, 0x85, 0x00, 0x90, 0x00, 0x1b, 0x00, + 0x79, 0x00, 0x04, 0x00, 0x03, 0x00, 0xdb, 0x00, 0x08, 0x01, 0xa5, 0x00, + 0x9a, 0x00, 0x68, 0x00, 0x25, 0x00, 0xcd, 0x00, 0x78, 0x00, 0x9b, 0x00, + 0xa0, 0x00, 0xc3, 0xff, 0x21, 0xff, 0x06, 0x00, 0x48, 0x00, 0x32, 0x00, + 0xa3, 0x00, 0xb5, 0x00, 0x97, 0x00, 0xc4, 0x00, 0xa4, 0x00, 0xd2, 0xff, + 0xff, 0xff, 0xbe, 0x00, 0x66, 0x00, 0x9a, 0x00, 0x99, 0x01, 0xc9, 0x00, + 0xb2, 0xff, 0xa3, 0x00, 0x63, 0x00, 0x5d, 0x00, 0xc1, 0x00, 0x9e, 0x00, + 0x4a, 0x00, 0xc0, 0x00, 0xdb, 0x00, 0xd3, 0x00, 0xe7, 0x00, 0xd2, 0x00, + 0xa7, 0x00, 0x72, 0x00, 0xb9, 0x00, 0x88, 0x00, 0xb0, 0x00, 0xa1, 0x00, + 0x86, 0x00, 0x73, 0x00, 0x96, 0x00, 0x57, 0x01, 0x00, 0x01, 0xa8, 0x00, + 0x9e, 0x00, 0x8a, 0x00, 0x34, 0x00, 0x5c, 0x00, 0xf8, 0x00, 0xa3, 0x00, + 0x93, 0x00, 0x59, 0x00, 0xac, 0xff, 0xc3, 0xff, 0x3d, 0x00, 0xfa, 0xff, + 0x2b, 0x00, 0xfd, 0xff, 0x1e, 0x00, 0x60, 0x00, 0x29, 0x00, 0x36, 0x00, + 0x4a, 0x00, 0x17, 0x00, 0x1e, 0x00, 0x5d, 0x00, 0x60, 0x00, 0x38, 0x00, + 0x57, 0x00, 0x63, 0x00, 0x4d, 0x00, 0x30, 0x00, 0x39, 0x00, 0x8b, 0x00, + 0x1d, 0x00, 0x28, 0x00, 0x51, 0x00, 0x27, 0x00, 0x57, 0x00, 0x44, 0x00, + 0x2c, 0x00, 0x6d, 0x00, 0x70, 0x00, 0x3c, 0x00, 0x09, 0x00, 0x23, 0x00, + 0x3c, 0x00, 0x41, 0x00, 0x3a, 0x00, 0x18, 0x00, 0xfd, 0xff, 0x59, 0x00, + 0x68, 0x00, 0x31, 0x00, 0x58, 0x00, 0x2b, 0x00, 0x25, 0x00, 0x2a, 0x00, + 0x37, 0x00, 0x10, 0x00, 0x18, 0x00, 0x40, 0x00, 0xf2, 0xff, 0x2b, 0x00, + 0x2b, 0x00, 0x35, 0x00, 0x2c, 0x00, 0x3b, 0x00, 0x41, 0x00, 0x26, 0x00, + 0x4c, 0x00, 0x60, 0x00, 0x62, 0x00, 0x6d, 0x00, 0x5c, 0x00, 0x3e, 0x00, + 0x64, 0x00, 0x6e, 0x00, 0x7d, 0x00, 0x74, 0x00, 0x53, 0x00, 0x70, 0x00, + 0x6d, 0x00, 0x38, 0x00, 0x2d, 0x00, 0x56, 0x00, 0x5f, 0x00, 0x71, 0x00, + 0x87, 0x00, 0x6e, 0x00, 0x5c, 0x00, 0x5b, 0x00, 0x4a, 0x00, 0x6f, 0x00, + 0x6b, 0x00, 0x6b, 0x00, 0x71, 0x00, 0x4c, 0x00, 0x43, 0x00, 0x62, 0x00, + 0x68, 0x00, 0x52, 0x00, 0x3a, 0x00, 0x35, 0x00, 0x38, 0x00, 0x35, 0x00, + 0x1f, 0x00, 0x25, 0x00, 0x4a, 0x00, 0x56, 0x00, 0x3b, 0x00, 0x14, 0x00, + 0x06, 0x00, 0x16, 0x00, 0xfb, 0xff, 0x1d, 0x00, 0x32, 0x00, 0x12, 0x00, + 0x15, 0x00, 0x27, 0x00, 0x11, 0x00, 0x1d, 0x00, 0x18, 0x00, 0x21, 0x00, + 0x27, 0x00, 0x1d, 0x00, 0x24, 0x00, 0x26, 0x00, 0x31, 0x00, 0x2f, 0x00, + 0x32, 0x00, 0x23, 0x00, 0x0d, 0x00, 0x22, 0x00, 0x2b, 0x00, 0x48, 0x00, + 0x50, 0x00, 0x47, 0x00, 0x30, 0x00, 0x1a, 0x00, 0x27, 0x00, 0x24, 0x00, + 0x39, 0x00, 0x47, 0x00, 0x35, 0x00, 0x32, 0x00, 0x3d, 0x00, 0x32, 0x00, + 0x42, 0x00, 0x28, 0x00, 0x23, 0x00, 0x27, 0x00, 0x2a, 0x00, 0x26, 0x00, + 0x2e, 0x00, 0x38, 0x00, 0x3a, 0x00, 0x35, 0x00, 0x26, 0x00, 0x10, 0x00, + 0x1f, 0x00, 0x20, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x36, 0x00, 0x30, 0x00, + 0x1a, 0x00, 0x23, 0x00, 0x25, 0x00, 0x22, 0x00, 0x2a, 0x00, 0x36, 0x00, + 0x31, 0x00, 0x30, 0x00, 0x38, 0x00, 0x33, 0x00, 0x3d, 0x00, 0x3c, 0x00, + 0x34, 0x00, 0x2d, 0x00, 0x09, 0x00, 0x16, 0x00, 0x33, 0x00, 0x2b, 0x00, + 0x2c, 0x00, 0x2a, 0x00, 0x27, 0x00, 0x1e, 0x00, 0x14, 0x00, 0x14, 0x00, + 0x18, 0x00, 0x19, 0x00, 0x21, 0x00, 0x21, 0x00, 0x16, 0x00, 0x16, 0x00, + 0x1a, 0x00, 0x1a, 0x00, 0x11, 0x00, 0x0e, 0x00, 0x12, 0x00, 0x14, 0x00, + 0x11, 0x00, 0x0d, 0x00, 0x11, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x10, 0x00, + 0x0d, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0xf3, 0xff, + 0xfd, 0xff, 0x03, 0x00, 0xf7, 0xff, 0xf9, 0xff, 0xff, 0xff, 0x15, 0x00, + 0x16, 0x00, 0x0c, 0x00, 0xfa, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0x01, 0x00, + 0x09, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, + 0xfd, 0xff, 0x01, 0x00, 0xff, 0xff, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfe, 0xff, 0xfc, 0xff, + 0xf9, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0x03, 0x00, 0x06, 0x00, + 0xfb, 0xff, 0xf9, 0xff, 0xfd, 0xff, 0x01, 0x00, 0xf8, 0xff, 0xf8, 0xff, + 0x01, 0x00, 0x08, 0x00, 0x08, 0x00, 0xfb, 0xff, 0xf4, 0xff, 0xfa, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xfa, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xf7, 0xff, 0xfb, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xf3, 0xff, 0xf5, 0xff, 0xf9, 0xff, 0xf6, 0xff, 0xff, 0xff, + 0x03, 0x00, 0xff, 0xff, 0xf8, 0xff, 0xf6, 0xff, 0xf9, 0xff, 0xf7, 0xff, + 0xfa, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf4, 0xff, 0xf5, 0xff, 0xf1, 0xff, + 0xfa, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xee, 0xff, 0xeb, 0xff, 0xf0, 0xff, 0xf4, 0xff, 0xee, 0xff, 0xea, 0xff, + 0xef, 0xff, 0xf1, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf3, 0xff, 0xf3, 0xff, + 0xf1, 0xff, 0xf0, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xf9, 0xff, 0xfe, 0xff, + 0xf6, 0xff, 0xf2, 0xff, 0xeb, 0xff, 0xf1, 0xff, 0xfa, 0xff, 0x00, 0x00, + 0xfd, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x03, 0x00, + 0x00, 0x00, 0xfd, 0xff, 0xfc, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xfb, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xff, 0xff, 0x00, 0x00, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x00, 0xfe, 0xff, 0xfe, 0xff, + 0xfb, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfa, 0xff, + 0xf8, 0xff, 0xf4, 0xff, 0xf6, 0xff, 0xf6, 0xff, 0xf4, 0xff, 0xf4, 0xff, + 0xf3, 0xff, 0xed, 0xff, 0xed, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xee, 0xff, + 0xef, 0xff, 0xf0, 0xff, 0xee, 0xff, 0xed, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xf0, 0xff, 0xee, 0xff, 0xee, 0xff, 0xef, 0xff, 0xef, 0xff, 0xef, 0xff, + 0xee, 0xff, 0xf1, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf0, 0xff, 0xf2, 0xff, + 0xf3, 0xff, 0xf4, 0xff, 0xf4, 0xff, 0xf3, 0xff, 0xf1, 0xff, 0xf0, 0xff, + 0xf1, 0xff, 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf1, 0xff, 0xf2, 0xff, + 0xf4, 0xff, 0xf2, 0xff, 0xf2, 0xff, 0xf7, 0xff, 0xf5, 0xff, 0xf5, 0xff, + 0xf5, 0xff, 0xfa, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xfa, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0x01, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x05, 0x00, 0x09, 0x00, 0x0d, 0x00, + 0x11, 0x00, 0x16, 0x00, 0x1d, 0x00, 0x2a, 0x00, 0x40, 0x00, 0x54, 0x00, + 0x6d, 0x00, 0xa3, 0x00, 0x19, 0x01, 0xdb, 0x01, 0x79, 0x03, 0x53, 0x05, + 0x09, 0x05, 0x4a, 0x02, 0x9d, 0xff, 0x8a, 0xfe, 0xe7, 0xff, 0x66, 0x01, + 0x8d, 0x00, 0xc2, 0xff, 0x06, 0xfe, 0x3d, 0xff, 0xe2, 0x00, 0x85, 0xff, + 0x47, 0x01, 0xc9, 0x00, 0xc6, 0xfe, 0xcc, 0xfd, 0x45, 0xfe, 0x2c, 0x01, + 0x60, 0x01, 0x41, 0x01, 0x20, 0x00, 0xb0, 0xfd, 0xad, 0xfd, 0x00, 0x00, + 0x32, 0x00, 0xaf, 0xff, 0x28, 0x00, 0x14, 0xff, 0x4b, 0xfe, 0x46, 0x00, + 0xa8, 0x00, 0xcf, 0xff, 0x71, 0x00, 0xc3, 0xfe, 0xa6, 0xfe, 0xeb, 0xff, + 0xfe, 0xff, 0x06, 0x00, 0xfb, 0xff, 0xe1, 0xff, 0xaf, 0xff, 0x51, 0x01, + 0xba, 0x01, 0x73, 0x00, 0x1d, 0x00, 0xf1, 0xff, 0x35, 0x00, 0x79, 0x00, + 0x88, 0x00, 0x05, 0x00, 0x89, 0x00, 0xfa, 0xff, 0xf8, 0xff, 0x00, 0x00, + 0x58, 0x00, 0xed, 0xff, 0xb1, 0x00, 0xea, 0xff, 0x3e, 0xff, 0x36, 0x00, + 0x43, 0x00, 0x00, 0x01, 0xb9, 0x01, 0xd1, 0x00, 0x79, 0x00, 0x64, 0x00, + 0xb5, 0x00, 0x7e, 0x00, 0xad, 0x00, 0x9f, 0x01, 0x79, 0x01, 0xc6, 0x00, + 0x5e, 0xff, 0x68, 0xff, 0x60, 0xff, 0x51, 0xff, 0xd9, 0xfe, 0x99, 0xff, + 0x12, 0x01, 0x7c, 0x00, 0x7f, 0xff, 0x36, 0x00, 0x6c, 0xff, 0x52, 0xfe, + 0xe4, 0xff, 0x5f, 0x01, 0x0e, 0x01, 0x78, 0x00, 0xa1, 0xfe, 0x29, 0xff, + 0xa2, 0xff, 0x6b, 0x00, 0x12, 0x01, 0x9d, 0xff, 0x55, 0xfe, 0x38, 0xff, + 0x16, 0xff, 0x18, 0xff, 0x5f, 0x01, 0x10, 0x01, 0x29, 0xff, 0x51, 0xff, + 0x7b, 0xff, 0x8e, 0x00, 0x8e, 0x00, 0xc0, 0xff, 0xe1, 0xff, 0x0f, 0x00, + 0xa3, 0x00, 0x92, 0x00, 0xe7, 0xff, 0x26, 0xff, 0x5e, 0x00, 0xe5, 0x00, + 0xbd, 0xff, 0xf7, 0xff, 0x85, 0x00, 0x78, 0xff, 0xf6, 0xfe, 0x26, 0x00, + 0x03, 0x00, 0x57, 0xff, 0x75, 0x00, 0x87, 0x00, 0xdc, 0xff, 0x18, 0x00, + 0x8a, 0xff, 0x31, 0xfe, 0x90, 0xff, 0x8b, 0x00, 0xbd, 0x00, 0x9b, 0x00, + 0x25, 0x00, 0xd7, 0xfe, 0xf1, 0xfd, 0x26, 0x02, 0xb8, 0x03, 0xf3, 0xfe, + 0xe8, 0xfd, 0x0f, 0x00, 0x04, 0xff, 0xba, 0xff, 0x7e, 0x00, 0xf3, 0xff, + 0x26, 0x00, 0xb4, 0xff, 0x1e, 0xff, 0x96, 0xff, 0xa1, 0xff, 0x54, 0x00, + 0x4c, 0x00, 0x0b, 0xfd, 0x0b, 0xff, 0x0a, 0x03, 0x9b, 0x00, 0x29, 0xff, + 0x1a, 0x01, 0x52, 0x00, 0x5f, 0xfe, 0x8f, 0xff, 0x11, 0x01, 0x18, 0x00, + 0x50, 0xff, 0xed, 0xff, 0x0b, 0x00, 0xa4, 0x00, 0xc6, 0xff, 0x05, 0xff, + 0x98, 0x01, 0x01, 0x01, 0x99, 0xfd, 0x42, 0xff, 0x41, 0x02, 0x5a, 0x00, + 0x0c, 0x00, 0x4e, 0x01, 0x4f, 0x00, 0x76, 0xff, 0x79, 0x00, 0xa1, 0x00, + 0xca, 0x00, 0xa4, 0xff, 0x4b, 0x00, 0x51, 0x00, 0xf8, 0xfe, 0x1e, 0x00, + 0x51, 0x00, 0xe9, 0xfe, 0xed, 0xfe, 0xe7, 0xff, 0x4d, 0x00, 0xca, 0x00, + 0x54, 0x01, 0xea, 0xff, 0x65, 0xfd, 0xf0, 0xfd, 0x09, 0x01, 0xda, 0x02, + 0x03, 0x00, 0x35, 0xfd, 0xc2, 0xfe, 0x8e, 0xff, 0xf7, 0x00, 0xdb, 0x01, + 0x85, 0xff, 0x9e, 0xfd, 0xcd, 0xfd, 0xdb, 0xff, 0x66, 0x01, 0x4f, 0x01, + 0x97, 0xff, 0x66, 0xfd, 0xf6, 0xfe, 0xe1, 0x01, 0x4e, 0x02, 0x1c, 0xff, + 0xcd, 0xfd, 0x99, 0xff, 0x81, 0xff, 0x3e, 0x00, 0x90, 0x01, 0xdf, 0xff, + 0x4e, 0xff, 0x3e, 0x01, 0x14, 0x00, 0x0e, 0x00, 0x05, 0xff, 0x45, 0xfe, + 0xfa, 0x00, 0xc1, 0x02, 0x1e, 0xff, 0xa3, 0xfd, 0xb6, 0xff, 0x4c, 0x02, + 0xa9, 0x01, 0x01, 0xff, 0xe5, 0xff, 0x81, 0xff, 0xd6, 0xff, 0x9f, 0x01, + 0x94, 0x01, 0xb6, 0xff, 0xd8, 0xfe, 0xc4, 0xfe, 0x34, 0x00, 0xac, 0x01, + 0x7a, 0x02, 0x4b, 0x00, 0xfe, 0xfd, 0x4d, 0xfe, 0x24, 0x00, 0x1c, 0x01, + 0x74, 0x00, 0xd9, 0x00, 0x60, 0x00, 0xd1, 0xfd, 0x6a, 0xfd, 0x44, 0x01, + 0xd1, 0x01, 0x45, 0xfd, 0x67, 0x00, 0xaa, 0x01, 0xa5, 0xfd, 0xf0, 0xfe, + 0x35, 0x04, 0xd6, 0xff, 0x2e, 0xfd, 0xb9, 0x01, 0xbd, 0xfe, 0xb2, 0xfc, + 0x0b, 0x03, 0x50, 0x03, 0xfa, 0xfc, 0xc8, 0xfd, 0xcf, 0xfc, 0x99, 0xff, + 0xe6, 0xff, 0x87, 0x02, 0x93, 0x02, 0xe5, 0xfe, 0xaf, 0xfd, 0xb4, 0xfe, + 0xda, 0xff, 0x04, 0x00, 0x4f, 0x03, 0xfa, 0x01, 0x59, 0xfe, 0x1c, 0xfd, + 0x1f, 0x01, 0x70, 0x01, 0xf5, 0xfe, 0x6f, 0x00, 0xed, 0x01, 0x10, 0xff, + 0x96, 0xfe, 0x1c, 0x02, 0x8d, 0x02, 0xa3, 0xfc, 0x2d, 0xfe, 0x92, 0x04, + 0xa5, 0xfd, 0x12, 0xfc, 0x6b, 0x06, 0xad, 0x01, 0x89, 0xf8, 0xdc, 0x01, + 0x81, 0x04, 0x17, 0xfd, 0x9c, 0x00, 0x63, 0x02, 0x38, 0x01, 0x26, 0xfb, + 0x16, 0xfb, 0x9c, 0x04, 0x46, 0x04, 0xf6, 0xfe, 0xc2, 0xfd, 0xbe, 0xfe, + 0xc5, 0xfd, 0xd3, 0x00, 0xcb, 0x02, 0x6c, 0xff, 0x2b, 0xfe, 0x9b, 0x01, + 0xb1, 0xff, 0x00, 0xfe, 0x76, 0x00, 0xc2, 0x03, 0x43, 0xff, 0x33, 0xfc, + 0xfd, 0xfe, 0x25, 0x01, 0xa4, 0x01, 0xf9, 0xff, 0x30, 0x00, 0xc6, 0x01, + 0x2f, 0xfe, 0xde, 0xfc, 0x17, 0x02, 0xb4, 0x03, 0x6b, 0xfe, 0x51, 0xff, + 0x9c, 0x00, 0x76, 0xff, 0x87, 0xfd, 0x58, 0x00, 0x39, 0x05, 0xc8, 0xfe, + 0x1f, 0xfd, 0x00, 0x01, 0xb8, 0x00, 0x1d, 0xfa, 0x67, 0x01, 0x40, 0x09, + 0xf3, 0xfd, 0x28, 0xfc, 0xa3, 0x00, 0x7c, 0xff, 0xfb, 0x00, 0x1d, 0x01, + 0x5d, 0xff, 0xe0, 0xfb, 0x93, 0xff, 0x49, 0x05, 0x31, 0x01, 0xad, 0xfe, + 0xc4, 0xfe, 0x57, 0x00, 0xc1, 0x00, 0xd1, 0xfe, 0xfb, 0x00, 0x18, 0x01, + 0x8b, 0xfe, 0xbe, 0xff, 0x94, 0x00, 0x25, 0x00, 0x3b, 0xff, 0x22, 0xff, + 0xa9, 0x01, 0x26, 0x01, 0xff, 0xfe, 0x7a, 0xff, 0x03, 0xfd, 0x8c, 0x00, + 0x85, 0x04, 0xce, 0xfe, 0x43, 0xfe, 0x4e, 0x04, 0x3d, 0xfe, 0x91, 0xf9, + 0xa2, 0x02, 0x9c, 0x06, 0x23, 0x01, 0xc1, 0xf9, 0x9f, 0xfc, 0xb9, 0x02, + 0x61, 0x00, 0x0f, 0x01, 0x70, 0x02, 0x2f, 0xfe, 0xeb, 0xfe, 0x36, 0x01, + 0xc2, 0xff, 0x07, 0xff, 0xcb, 0xff, 0x64, 0x01, 0x68, 0x00, 0x41, 0x01, + 0x8c, 0xff, 0xeb, 0xfd, 0xd9, 0xff, 0x9d, 0x00, 0xad, 0xff, 0x7f, 0x02, + 0x98, 0x01, 0x3a, 0xfc, 0xac, 0xfe, 0x62, 0x01, 0x59, 0xff, 0x6d, 0xfe, + 0x5b, 0xfd, 0x1f, 0x02, 0x40, 0x06, 0x1a, 0xff, 0x5c, 0xf9, 0x6b, 0x00, + 0x5f, 0x04, 0x6f, 0xfa, 0xab, 0xff, 0xff, 0x0a, 0xe8, 0xfe, 0x44, 0xf9, + 0x44, 0x01, 0x0a, 0xfc, 0x80, 0xfe, 0xbe, 0x08, 0xd3, 0x02, 0x5d, 0xfb, + 0x89, 0xff, 0x7a, 0xfd, 0xff, 0xff, 0x53, 0x02, 0x3b, 0x03, 0xaa, 0xfe, + 0xa3, 0xfb, 0x4f, 0x02, 0xea, 0x02, 0x2e, 0xfd, 0xbb, 0x00, 0x2a, 0x02, + 0xe6, 0xfc, 0x5a, 0x01, 0x34, 0x05, 0xe8, 0x00, 0x5a, 0xfd, 0x4c, 0xfe, + 0x34, 0xfd, 0xae, 0x02, 0xfa, 0x05, 0x93, 0xfe, 0x2e, 0xfd, 0x90, 0xfc, + 0x1e, 0xfe, 0x3a, 0x05, 0x0e, 0x06, 0x67, 0xfd, 0x60, 0x00, 0x29, 0x01, + 0x44, 0xfa, 0x70, 0xfd, 0x15, 0x07, 0x69, 0x04, 0x3b, 0xfc, 0xed, 0xfe, + 0x32, 0x00, 0x21, 0xfd, 0xc5, 0x00, 0xc2, 0x02, 0xc7, 0x01, 0x9a, 0xfe, + 0x62, 0xfe, 0xe7, 0xfe, 0x24, 0xff, 0xd6, 0x02, 0x61, 0x07, 0xa8, 0x00, + 0xf3, 0xf7, 0x38, 0xf9, 0xf1, 0x04, 0x2c, 0x0a, 0x62, 0xff, 0x08, 0xfe, + 0x2f, 0xfc, 0x2c, 0xf7, 0xd4, 0x04, 0xe9, 0x08, 0x4e, 0xfb, 0xcc, 0xf9, + 0xde, 0x04, 0x6f, 0x01, 0x93, 0xfc, 0x5a, 0x05, 0x00, 0x04, 0x29, 0xf6, + 0xe9, 0xfb, 0x01, 0x07, 0xc0, 0x03, 0xe7, 0x02, 0x14, 0xfe, 0xcd, 0xfe, + 0xe6, 0xfd, 0x15, 0xfe, 0x20, 0x03, 0x9e, 0x01, 0xa6, 0x00, 0x30, 0x00, + 0xb4, 0xfe, 0x63, 0xff, 0x8e, 0x02, 0xdb, 0xfe, 0x4f, 0xfe, 0x31, 0x03, + 0x93, 0x00, 0x5a, 0x01, 0x84, 0xfe, 0x49, 0x00, 0xae, 0x00, 0x82, 0xfd, + 0xa7, 0x01, 0x54, 0x03, 0x35, 0xfd, 0xee, 0xfc, 0x2f, 0x00, 0x4c, 0x03, + 0x0b, 0x02, 0xa6, 0xfd, 0x6c, 0xfc, 0x5c, 0x04, 0x1d, 0x03, 0xf5, 0xfc, + 0xa6, 0x00, 0x3e, 0x00, 0xc3, 0xfb, 0xb9, 0x01, 0x4e, 0x04, 0xb1, 0x01, + 0x4e, 0xfe, 0x45, 0xfe, 0xe3, 0xfe, 0xd4, 0xfe, 0x42, 0x01, 0x64, 0x05, + 0x9d, 0x00, 0xe1, 0xfc, 0xf5, 0xfd, 0xa4, 0xff, 0x91, 0x00, 0x90, 0x01, + 0xba, 0x00, 0xbd, 0x00, 0xad, 0x00, 0x68, 0xfe, 0x72, 0xff, 0xa0, 0x00, + 0x9d, 0x00, 0x43, 0x01, 0xb0, 0xff, 0x34, 0xfd, 0x6e, 0x00, 0x2d, 0xff, + 0xc2, 0x02, 0xe9, 0x02, 0x83, 0xfb, 0x70, 0xff, 0x75, 0x01, 0xd3, 0xfd, + 0x12, 0xff, 0xeb, 0x04, 0x78, 0x00, 0xcb, 0xfd, 0xf5, 0xfe, 0x1b, 0xfe, + 0x95, 0x00, 0x8c, 0x00, 0x60, 0x03, 0x07, 0x02, 0x72, 0xfd, 0x10, 0xfd, + 0x09, 0xff, 0x23, 0x00, 0xd4, 0x00, 0x11, 0x04, 0xea, 0x01, 0x9b, 0xfb, + 0x39, 0xff, 0x0e, 0x02, 0x98, 0xfd, 0x1b, 0xfe, 0xa3, 0x04, 0x88, 0x01, + 0xe1, 0xfb, 0x3a, 0x00, 0x63, 0x02, 0xce, 0xfe, 0xae, 0x00, 0x8f, 0x02, + 0x95, 0xfe, 0x33, 0xfc, 0x1e, 0x00, 0xbf, 0x02, 0x0b, 0x01, 0x2b, 0x01, + 0x09, 0x01, 0x81, 0xfe, 0xe4, 0xfd, 0x93, 0xff, 0xe6, 0x01, 0x63, 0x00, + 0x61, 0x01, 0xe5, 0xfd, 0xc2, 0xfd, 0x0d, 0x04, 0x32, 0x05, 0x61, 0xfd, + 0x1d, 0xfb, 0x43, 0x02, 0xb3, 0x00, 0x97, 0xfe, 0xec, 0x02, 0x35, 0x01, + 0x18, 0xfd, 0x74, 0xfe, 0xb7, 0x02, 0xdb, 0x02, 0x40, 0xff, 0xea, 0xfd, + 0xcc, 0xfe, 0xdb, 0xfe, 0xf2, 0xff, 0xc2, 0x00, 0x19, 0x03, 0x1f, 0x04, + 0xe7, 0xfc, 0x3f, 0xfd, 0x79, 0x02, 0x8f, 0xff, 0x98, 0xfc, 0x02, 0x02, + 0xc7, 0x02, 0xfa, 0xff, 0x88, 0x01, 0x1c, 0xfe, 0xac, 0xfb, 0x4f, 0xff, + 0x35, 0x01, 0xbc, 0x02, 0x87, 0x00, 0xfe, 0xfd, 0xc1, 0xff, 0x40, 0x00, + 0x11, 0x00, 0x6a, 0xff, 0x12, 0x00, 0x5a, 0x02, 0x7b, 0x01, 0x8b, 0xfd, + 0xf2, 0xfd, 0xe6, 0x00, 0x9b, 0x00, 0xc2, 0xfc, 0x1c, 0x01, 0xdf, 0x01, + 0x30, 0xff, 0x3f, 0x03, 0x6e, 0x00, 0x32, 0xfd, 0x2a, 0xfc, 0x4f, 0xff, + 0x35, 0x04, 0x83, 0x05, 0xe0, 0x00, 0x6e, 0xfa, 0x02, 0xfc, 0xae, 0x01, + 0x3c, 0x03, 0xd9, 0x01, 0x36, 0x02, 0xb1, 0xff, 0x17, 0xfb, 0x3c, 0xfd, + 0xfb, 0x02, 0x8a, 0x02, 0x07, 0x02, 0xb7, 0xfe, 0x56, 0xfd, 0x87, 0xfe, + 0x49, 0x02, 0xf9, 0x02, 0x73, 0xff, 0x30, 0xfe, 0x9a, 0xff, 0xed, 0xff, + 0xc6, 0xff, 0xd9, 0x03, 0xca, 0x00, 0x63, 0xfb, 0xff, 0xfd, 0x5c, 0x01, + 0xa9, 0x00, 0x12, 0x03, 0x5d, 0x01, 0x89, 0xfb, 0x66, 0xfe, 0xf4, 0x01, + 0x7c, 0x00, 0x3a, 0x02, 0xd0, 0xff, 0x44, 0xfc, 0xf3, 0xff, 0x1d, 0x03, + 0x8d, 0x00, 0x38, 0xff, 0x1f, 0x00, 0xa4, 0xfd, 0x95, 0xfd, 0x2b, 0x03, + 0xf1, 0x04, 0x9c, 0xfa, 0xab, 0xfe, 0x58, 0x06, 0xde, 0xfb, 0x8a, 0xfc, + 0xd9, 0x05, 0x25, 0xff, 0x30, 0xfa, 0x1d, 0x00, 0x84, 0x04, 0x2b, 0x00, + 0x70, 0xff, 0x6e, 0x02, 0x2a, 0xfc, 0x1d, 0xfd, 0x35, 0x06, 0xe6, 0x01, + 0x72, 0xfe, 0xaf, 0x00, 0x1e, 0xfc, 0x45, 0xfb, 0x9b, 0x03, 0x36, 0x04, + 0xd5, 0xff, 0xb1, 0x00, 0x5e, 0xfc, 0x97, 0xfc, 0xa7, 0xff, 0x6e, 0x01, + 0x65, 0x03, 0x78, 0x01, 0x70, 0xfd, 0xbe, 0xff, 0x0d, 0xff, 0xfc, 0xfe, + 0x1d, 0x02, 0x5e, 0x01, 0xab, 0xfd, 0x33, 0xff, 0x7e, 0x00, 0x6c, 0xfd, + 0x82, 0x00, 0xe6, 0x02, 0xa1, 0xff, 0xc3, 0x03, 0x43, 0xff, 0x58, 0xf7, + 0xdc, 0xfe, 0xb7, 0x08, 0xda, 0x03, 0x5b, 0xfb, 0x24, 0xfa, 0x79, 0xff, + 0x46, 0x01, 0xad, 0x02, 0xde, 0x05, 0xc4, 0xfc, 0x67, 0xf9, 0xb6, 0x00, + 0x27, 0x03, 0xd4, 0xff, 0xc1, 0x01, 0x84, 0x03, 0x28, 0xfc, 0xc6, 0xf9, + 0x04, 0x02, 0xee, 0x03, 0xd9, 0x01, 0x92, 0xfd, 0xed, 0xfc, 0xb5, 0x02, + 0x4a, 0x01, 0x82, 0xfe, 0x35, 0x00, 0xa3, 0xfd, 0x05, 0x00, 0x19, 0x02, + 0x5e, 0x01, 0x2d, 0xff, 0x30, 0xfe, 0x55, 0x01, 0x7a, 0x01, 0xc4, 0xfe, + 0xd9, 0xff, 0x1d, 0x01, 0xb5, 0xff, 0xb6, 0xfe, 0xa2, 0xfd, 0xe8, 0x01, + 0xb7, 0x04, 0x02, 0xfa, 0x7f, 0xfd, 0x94, 0x05, 0x0a, 0xff, 0xad, 0xfc, + 0x2d, 0x02, 0x75, 0x02, 0xcd, 0xfb, 0x5d, 0x00, 0xb9, 0x02, 0xa3, 0xfd, + 0xdb, 0xfe, 0x76, 0xff, 0xf4, 0x02, 0xa6, 0xff, 0xe9, 0xfc, 0xe7, 0x02, + 0x00, 0x00, 0xae, 0xfa, 0xff, 0x02, 0xfb, 0x02, 0x12, 0xfd, 0x21, 0x02, + 0x6e, 0xff, 0xc6, 0xf9, 0xc1, 0x02, 0xa8, 0x04, 0x55, 0xff, 0xf2, 0x01, + 0x7a, 0xfd, 0x91, 0xf7, 0x76, 0x00, 0x89, 0x0b, 0x69, 0x03, 0xe5, 0xf8, + 0x84, 0xfb, 0x1c, 0x00, 0x5e, 0x00, 0x57, 0x04, 0xbb, 0x04, 0x54, 0xfc, + 0xef, 0xf5, 0x20, 0xfe, 0xf9, 0x0a, 0x87, 0x05, 0x9d, 0xfe, 0x51, 0xfd, + 0xc3, 0xf9, 0x10, 0xfa, 0x2f, 0x05, 0x6d, 0x08, 0x78, 0x00, 0x0f, 0xfd, + 0xdb, 0xfa, 0x0b, 0xfc, 0x49, 0x02, 0xd3, 0x06, 0xe2, 0xfc, 0x75, 0xfc, + 0xca, 0x04, 0xce, 0x00, 0x6f, 0xfb, 0x46, 0x00, 0x3f, 0xfd, 0x89, 0xfe, + 0xf5, 0x05, 0xa4, 0x05, 0xd0, 0xfd, 0x82, 0xf9, 0xbb, 0xfe, 0x76, 0x02, + 0x7b, 0xff, 0x46, 0x02, 0x43, 0x01, 0x23, 0x04, 0x8b, 0xfd, 0x55, 0xf4, + 0x01, 0x02, 0xf5, 0x07, 0x07, 0xfd, 0x6a, 0xff, 0xa4, 0x05, 0x0b, 0xfe, + 0x59, 0xfa, 0xd9, 0xff, 0x84, 0x03, 0x3b, 0xfe, 0xef, 0xfe, 0x8b, 0x00, + 0x70, 0x00, 0x06, 0x03, 0x0d, 0x03, 0x9e, 0xfb, 0xc1, 0xfb, 0x73, 0x03, + 0x19, 0x01, 0x7d, 0xfc, 0x25, 0x02, 0x9c, 0x03, 0xea, 0xfb, 0xd2, 0xfc, + 0x2c, 0x04, 0xc0, 0x01, 0x3c, 0xfe, 0x9c, 0x00, 0xd0, 0x00, 0x0d, 0xfe, + 0xc5, 0xfd, 0x12, 0x01, 0xd9, 0xfe, 0x2d, 0xfe, 0xd2, 0x04, 0x6f, 0x03, + 0x71, 0xfd, 0x1d, 0xfe, 0xa6, 0x03, 0x89, 0xfe, 0x8f, 0xf7, 0x9e, 0x03, + 0x25, 0x07, 0xdf, 0xfb, 0xd7, 0xff, 0xe7, 0x04, 0x68, 0xfc, 0xe7, 0xf8, + 0x97, 0x01, 0x7c, 0x0a, 0xe8, 0x05, 0xdd, 0xfa, 0xf0, 0xf5, 0x23, 0xfe, + 0x54, 0x08, 0xc3, 0x02, 0x24, 0xfd, 0xe1, 0x01, 0xc4, 0x01, 0xd5, 0xfc, + 0xae, 0xf9, 0x89, 0x02, 0x6b, 0x06, 0xd2, 0x00, 0x34, 0xfb, 0xc0, 0xfd, + 0xc0, 0x02, 0x24, 0xfe, 0xea, 0xfb, 0x60, 0x09, 0x8f, 0x07, 0x7c, 0xf9, + 0x0d, 0xfa, 0x37, 0x00, 0x44, 0xfd, 0x8d, 0x03, 0x26, 0x09, 0x51, 0xfd, + 0x5b, 0xf6, 0xdf, 0x01, 0xd6, 0x04, 0xc6, 0xfe, 0x28, 0x00, 0x80, 0x00, + 0x1c, 0x01, 0xdb, 0xfe, 0x8b, 0xff, 0xae, 0xff, 0x39, 0x01, 0x5c, 0x01, + 0x1d, 0x02, 0x46, 0xfd, 0x66, 0xfb, 0xbe, 0x04, 0xe5, 0x04, 0x57, 0xfe, + 0xde, 0xff, 0x98, 0xfc, 0x86, 0xfb, 0x81, 0x02, 0x4a, 0x04, 0xe1, 0xfe, + 0x73, 0xfd, 0x81, 0x04, 0x82, 0x03, 0x4c, 0xf8, 0xb0, 0xfd, 0x01, 0x05, + 0xbb, 0x00, 0xd9, 0xff, 0x3e, 0x02, 0xc8, 0xfd, 0x8f, 0xfc, 0x27, 0x02, + 0x5a, 0xff, 0xc7, 0xfc, 0xd0, 0x05, 0xc3, 0x04, 0x94, 0xfc, 0x83, 0x00, + 0x0a, 0x01, 0x3d, 0xf9, 0x77, 0xfd, 0xe0, 0x06, 0x85, 0x03, 0x03, 0xfd, + 0x2c, 0x05, 0x95, 0x00, 0x59, 0xf6, 0x59, 0xfd, 0x6b, 0x09, 0xc4, 0x02, + 0x4d, 0xfd, 0x0b, 0x01, 0xe6, 0xfd, 0xdf, 0xfa, 0xce, 0x01, 0x68, 0x04, + 0x05, 0x02, 0x39, 0x03, 0x2c, 0xfd, 0x19, 0xf8, 0x84, 0xfd, 0xe5, 0x04, + 0xd1, 0x09, 0x95, 0xfd, 0x6e, 0xf8, 0xa0, 0x03, 0x98, 0xff, 0xa6, 0xf9, + 0xcf, 0x06, 0xc2, 0x08, 0x1f, 0xfc, 0x2f, 0xf7, 0xbd, 0xfd, 0x15, 0x00, + 0xc9, 0x05, 0x51, 0x06, 0x23, 0xf8, 0x27, 0xfb, 0x1e, 0x07, 0x8c, 0x01, + 0xfd, 0x02, 0x5c, 0x02, 0x68, 0xf6, 0xcd, 0xfd, 0x84, 0x05, 0xd1, 0xff, + 0xf8, 0xfd, 0x85, 0x03, 0x08, 0x05, 0x14, 0xff, 0xe2, 0xf5, 0x66, 0xfd, + 0xd4, 0x08, 0x18, 0x0e, 0x3d, 0xfe, 0x50, 0xf5, 0xff, 0xf9, 0x81, 0xfc, + 0xa9, 0xfe, 0x44, 0x08, 0xee, 0x09, 0xfc, 0xf9, 0xd7, 0xf8, 0x5b, 0x00, + 0x34, 0x01, 0x8a, 0x01, 0xd1, 0x04, 0x96, 0x00, 0x7c, 0xfa, 0x5e, 0xfd, + 0x5b, 0xff, 0xe9, 0x02, 0x25, 0x08, 0x46, 0x01, 0x95, 0xfc, 0xb0, 0xfd, + 0x08, 0xff, 0x84, 0xff, 0xe9, 0xff, 0xb2, 0x02, 0xb9, 0xff, 0x9d, 0x00, + 0x4d, 0xfe, 0x23, 0xff, 0xe2, 0x02, 0x05, 0x02, 0xdd, 0xff, 0x5c, 0xfe, + 0x60, 0xfe, 0x5c, 0xff, 0xac, 0x02, 0x0a, 0x05, 0x7e, 0x01, 0xda, 0xf8, + 0x86, 0xfb, 0x81, 0x07, 0x50, 0x02, 0x2d, 0xfd, 0xd3, 0xfd, 0xe2, 0xfd, + 0xde, 0x04, 0xb6, 0x02, 0xf2, 0xfc, 0x73, 0x02, 0xb1, 0xfc, 0xcc, 0xf7, + 0xe2, 0x05, 0xd7, 0x0b, 0xa6, 0xff, 0x58, 0xf7, 0x78, 0xff, 0xcd, 0x02, + 0xc3, 0xfc, 0x14, 0x03, 0xbe, 0x07, 0x21, 0xfc, 0xbb, 0xf4, 0xdf, 0xfe, + 0x0a, 0x08, 0x18, 0x05, 0x0b, 0xff, 0x4b, 0xfe, 0xf2, 0xfd, 0xb8, 0xff, + 0xfd, 0xfd, 0x7c, 0xfd, 0x48, 0x04, 0x54, 0x05, 0x32, 0xfe, 0x73, 0xfc, + 0xcb, 0x02, 0x97, 0xfe, 0x5d, 0xfc, 0x70, 0x03, 0x78, 0x03, 0x3a, 0xfe, + 0x49, 0xfe, 0xa6, 0xfe, 0x6c, 0x02, 0xae, 0x05, 0x19, 0xf9, 0xf8, 0xf8, + 0xc2, 0xff, 0x21, 0x02, 0x44, 0x0a, 0xe7, 0x03, 0x6e, 0xf8, 0x48, 0xfb, + 0xfb, 0xff, 0x86, 0x01, 0x18, 0x00, 0xbd, 0x01, 0xc5, 0x05, 0xcc, 0x03, + 0x8c, 0xfa, 0x64, 0xf8, 0x07, 0x02, 0xa1, 0x01, 0x91, 0x01, 0x5a, 0x04, + 0x77, 0x01, 0xf2, 0xfa, 0x73, 0xfc, 0xec, 0x01, 0xcf, 0x01, 0xa3, 0xfd, + 0x64, 0x00, 0xf3, 0x07, 0x4b, 0x03, 0xdc, 0xf7, 0x56, 0xfa, 0xd3, 0x01, + 0x93, 0x01, 0xcb, 0x02, 0xcb, 0x00, 0x25, 0xfe, 0x67, 0x05, 0x95, 0xff, + 0xdc, 0xf7, 0xac, 0x00, 0xb5, 0x01, 0x47, 0xff, 0x78, 0x03, 0x26, 0xff, + 0x94, 0xfb, 0x10, 0x00, 0xd0, 0x01, 0x70, 0x02, 0x5d, 0x00, 0xc8, 0x02, + 0xdb, 0xfd, 0x36, 0xf8, 0x91, 0xfd, 0x3b, 0x08, 0x5b, 0x04, 0x62, 0xff, + 0xfc, 0xfb, 0x89, 0xfc, 0x34, 0x01, 0xc1, 0x00, 0x16, 0xfe, 0x08, 0x01, + 0xef, 0x03, 0x47, 0xfe, 0x2f, 0x00, 0x13, 0xfe, 0x91, 0xfe, 0xbe, 0x01, + 0x0e, 0x01, 0xbb, 0x01, 0x3b, 0xff, 0x2a, 0xfd, 0xb7, 0xfe, 0x14, 0xfe, + 0x46, 0x02, 0xb1, 0x04, 0x0e, 0x03, 0xe8, 0xfb, 0x8b, 0xfb, 0xa3, 0x01, + 0x47, 0x03, 0x79, 0x02, 0x78, 0xfb, 0xca, 0xfd, 0x28, 0x04, 0xcb, 0xf8, + 0x62, 0x01, 0x65, 0x0c, 0xca, 0x00, 0xb9, 0xfb, 0xec, 0xfd, 0x99, 0xf9, + 0x22, 0xf9, 0x7a, 0x07, 0x9d, 0x08, 0x9c, 0x00, 0xb4, 0xfb, 0xcb, 0xfd, + 0xfa, 0xf9, 0x37, 0xfd, 0x68, 0x0b, 0x44, 0x08, 0x86, 0xf5, 0xcf, 0xf5, + 0x4b, 0x03, 0x3a, 0x02, 0xa5, 0x03, 0xd0, 0x07, 0xbf, 0xfe, 0x95, 0xf5, + 0x77, 0xfa, 0x2a, 0x07, 0x22, 0x0a, 0x3b, 0xfe, 0xa3, 0xfa, 0x71, 0xfe, + 0xfb, 0x03, 0x0f, 0xff, 0x5b, 0xfd, 0x4c, 0x03, 0x08, 0x04, 0x3c, 0xfd, + 0xfd, 0xf6, 0x6f, 0xf8, 0x7c, 0x0a, 0x47, 0x0d, 0xa8, 0xfa, 0xb5, 0xf4, + 0x32, 0x00, 0x1d, 0x08, 0x63, 0x01, 0xee, 0xf9, 0x33, 0x03, 0x93, 0xfb, + 0x67, 0xfb, 0xf9, 0x02, 0x15, 0x01, 0x7d, 0x05, 0xb5, 0x03, 0x4e, 0xf9, + 0xfb, 0xf7, 0xc3, 0xfd, 0x05, 0xff, 0xc6, 0x07, 0x3b, 0x04, 0x83, 0xfb, + 0x34, 0xfc, 0x61, 0xfe, 0x17, 0x00, 0x3a, 0x08, 0x4b, 0x02, 0xf1, 0xf7, + 0x34, 0xff, 0xc2, 0x03, 0x65, 0xff, 0x3b, 0x01, 0x6f, 0x00, 0x59, 0xfd, + 0x4f, 0x00, 0x02, 0xfc, 0x23, 0xfb, 0x20, 0x02, 0xa3, 0x07, 0xd7, 0x03, + 0x51, 0xfb, 0xa6, 0xf9, 0x7d, 0xfa, 0x85, 0x01, 0x49, 0x09, 0x25, 0x06, + 0xb6, 0xf9, 0xa6, 0xfa, 0x61, 0x02, 0xf8, 0xfe, 0xb0, 0xfe, 0xa6, 0x05, + 0x76, 0x03, 0x19, 0xfd, 0xb2, 0xf8, 0xb7, 0xfb, 0x58, 0x03, 0x0b, 0x06, + 0xf3, 0x02, 0xb4, 0xfd, 0xfa, 0xfd, 0x87, 0xff, 0x60, 0xfc, 0x49, 0x03, + 0x86, 0x05, 0x01, 0x00, 0x43, 0xfd, 0xae, 0xfc, 0x3d, 0xfa, 0x29, 0x03, + 0x45, 0x09, 0x32, 0x05, 0x8d, 0xfc, 0x77, 0xec, 0x5c, 0xf8, 0xff, 0x1b, + 0x9c, 0x08, 0x40, 0xed, 0x8b, 0xfa, 0x6b, 0x05, 0x97, 0xfa, 0xd6, 0xfc, + 0xff, 0x06, 0x28, 0x06, 0x74, 0xfd, 0xdb, 0xfb, 0xc5, 0xfe, 0x12, 0xfe, + 0x4c, 0xfe, 0x20, 0x04, 0x29, 0x00, 0x89, 0x02, 0x78, 0x03, 0x35, 0xfc, + 0x6f, 0xf6, 0x70, 0xfe, 0x55, 0x0a, 0xea, 0x01, 0x9a, 0xfb, 0xcd, 0xfd, + 0xf3, 0xfc, 0x86, 0xfc, 0x2b, 0x01, 0x73, 0x01, 0xe0, 0x04, 0x44, 0x02, + 0x33, 0xfb, 0x90, 0xf3, 0x88, 0xfd, 0x5a, 0x0d, 0xf1, 0x0d, 0x00, 0x00, + 0xfd, 0xf6, 0xca, 0xf6, 0x85, 0xfb, 0x2b, 0x03, 0x30, 0x0d, 0xe0, 0x05, + 0xe1, 0x03, 0xa8, 0xf6, 0xd8, 0xf2, 0x6b, 0xff, 0xe6, 0x08, 0xae, 0x09, + 0xf5, 0x01, 0x51, 0xfe, 0xb8, 0xf7, 0x1a, 0xf2, 0xe9, 0xfe, 0xab, 0x15, + 0x75, 0x08, 0xa4, 0xf7, 0xad, 0xf7, 0x4a, 0xfc, 0xd3, 0x00, 0x10, 0xfe, + 0xc7, 0x05, 0x6a, 0x0c, 0x1e, 0xf9, 0x9a, 0xef, 0x9a, 0x03, 0xf2, 0x03, + 0xe8, 0x03, 0x3c, 0x03, 0xb2, 0xf6, 0x56, 0xfa, 0x29, 0x07, 0x56, 0xfd, + 0x13, 0xf9, 0x8e, 0x04, 0x6a, 0x07, 0xb5, 0xfb, 0x73, 0xf8, 0x0b, 0x01, + 0x83, 0x03, 0xf8, 0x00, 0xee, 0xfc, 0x62, 0xfd, 0xe4, 0x07, 0x88, 0x00, + 0x71, 0xf7, 0x81, 0x06, 0x04, 0x04, 0xeb, 0xf9, 0x91, 0x0c, 0x61, 0x02, + 0x36, 0xea, 0xcb, 0xfe, 0xc7, 0x13, 0xe7, 0xff, 0xc2, 0xf9, 0x9f, 0xfc, + 0x8b, 0xfc, 0x9b, 0xfe, 0xbf, 0x03, 0x29, 0x03, 0x04, 0xfe, 0x62, 0x03, + 0x68, 0x01, 0x4e, 0x00, 0xf9, 0xfd, 0xaf, 0x03, 0x8e, 0x06, 0x9f, 0xf6, + 0xd0, 0xf6, 0x04, 0x02, 0xb4, 0x02, 0xe3, 0x08, 0x99, 0x01, 0x53, 0xf8, + 0xec, 0xf9, 0x99, 0xf9, 0xda, 0x00, 0xf8, 0x07, 0x96, 0x03, 0x6b, 0x01, + 0xbc, 0xfa, 0x62, 0xf9, 0x40, 0x00, 0x5e, 0x01, 0x27, 0x04, 0x88, 0x09, + 0xed, 0xfd, 0x77, 0xf8, 0x95, 0xff, 0xbd, 0xff, 0xa2, 0x00, 0x94, 0x07, + 0x33, 0x01, 0x6b, 0x00, 0x5d, 0xfa, 0xe2, 0xfb, 0xf1, 0x00, 0x26, 0x06, + 0xee, 0x02, 0xa5, 0xfc, 0x9e, 0xf8, 0x84, 0xfe, 0xf6, 0x03, 0x14, 0x04, + 0xa0, 0x06, 0xfe, 0xf6, 0xe0, 0xf6, 0x49, 0x05, 0x3f, 0x05, 0x85, 0x03, + 0x93, 0xfd, 0x41, 0xfd, 0xa7, 0xfc, 0x8c, 0x02, 0xe2, 0x04, 0x41, 0x05, + 0x55, 0xff, 0x7b, 0xf8, 0xa7, 0xfe, 0xbe, 0x06, 0xaf, 0xf7, 0x81, 0xf9, + 0x3d, 0x0b, 0x0f, 0x0c, 0xe0, 0xfc, 0x62, 0xf1, 0xcb, 0xfa, 0xe0, 0x08, + 0xc8, 0x01, 0x5e, 0xfc, 0x16, 0x06, 0x6c, 0x00, 0xfe, 0xec, 0x42, 0x07, + 0xf1, 0x11, 0x18, 0xfd, 0xbe, 0xff, 0x72, 0xf9, 0x6b, 0xf4, 0x89, 0x05, + 0x0a, 0x0c, 0x0f, 0xfd, 0x6d, 0xff, 0xb2, 0xf6, 0xce, 0xfa, 0x8e, 0x05, + 0x09, 0x04, 0xb3, 0xfd, 0xef, 0x08, 0x08, 0xff, 0x0e, 0xef, 0x17, 0xf9, + 0x0c, 0x0b, 0x88, 0x02, 0xc7, 0xfc, 0x75, 0x04, 0x18, 0x08, 0x13, 0x01, + 0x63, 0xf3, 0x54, 0xfe, 0x29, 0x08, 0x67, 0x01, 0xfe, 0x05, 0xd3, 0x09, + 0xca, 0xfd, 0x42, 0xf7, 0xb1, 0xef, 0xcb, 0xff, 0xc3, 0x14, 0x23, 0x04, + 0x37, 0xec, 0xc0, 0xfe, 0x3f, 0x0e, 0x28, 0xfa, 0xb4, 0xfb, 0x6d, 0x0a, + 0xc9, 0x02, 0x50, 0xee, 0xad, 0xfb, 0xca, 0x07, 0x6e, 0x07, 0xe9, 0xff, + 0xa1, 0xff, 0xec, 0xff, 0x9e, 0xfe, 0x1e, 0xfd, 0xe5, 0x03, 0x79, 0x09, + 0x50, 0x06, 0x32, 0xf5, 0x3a, 0xf3, 0x3c, 0x05, 0x14, 0x01, 0xf8, 0x05, + 0x58, 0x07, 0x3c, 0xf1, 0xe1, 0xf6, 0x26, 0x0a, 0xb4, 0x02, 0xcf, 0xfd, + 0x8a, 0x06, 0x6b, 0xfe, 0xbd, 0xf5, 0x4a, 0x08, 0xeb, 0x07, 0x8a, 0x0c, + 0xf8, 0x01, 0xdd, 0xee, 0x72, 0xfa, 0x0d, 0x05, 0x77, 0x05, 0xe0, 0x02, + 0xb2, 0x02, 0x57, 0x00, 0x22, 0xf9, 0xf4, 0xf5, 0x02, 0x05, 0xef, 0x04, + 0x0b, 0xf6, 0x63, 0xf8, 0xbf, 0x09, 0xff, 0x08, 0xb1, 0xfe, 0xb5, 0xf8, + 0xaf, 0xf4, 0x3e, 0x00, 0xe5, 0x0b, 0x6e, 0x07, 0xd7, 0x07, 0x28, 0xfc, + 0xfe, 0xf3, 0xd7, 0xf9, 0x66, 0x01, 0xa2, 0x08, 0x50, 0x0a, 0x72, 0x0a, + 0xde, 0xf7, 0xaa, 0xf3, 0xd8, 0x00, 0x02, 0x03, 0xea, 0xfe, 0x24, 0x01, + 0x40, 0x05, 0x07, 0x07, 0x65, 0xfb, 0x32, 0xf7, 0x0c, 0x01, 0xb3, 0x06, + 0xc4, 0xfe, 0x05, 0xfb, 0xd7, 0x02, 0x01, 0x0d, 0x39, 0xff, 0x05, 0xef, + 0x68, 0xfa, 0x68, 0x04, 0x24, 0x06, 0x1e, 0x08, 0x41, 0xf6, 0x34, 0xf6, + 0x07, 0x0c, 0x4e, 0x02, 0xbd, 0xfa, 0xd4, 0x05, 0x26, 0xfc, 0x62, 0xf5, + 0x84, 0x0d, 0x20, 0x0a, 0xb8, 0x04, 0x57, 0xff, 0x25, 0xe7, 0x6a, 0xfa, + 0x1b, 0x1a, 0x6d, 0x03, 0xff, 0xf5, 0x28, 0x04, 0xd5, 0xf7, 0x66, 0xf5, + 0xfe, 0x09, 0xc2, 0x0b, 0x37, 0xf9, 0xfa, 0xf6, 0x44, 0xfb, 0x16, 0x0f, + 0x61, 0x03, 0x3f, 0xf5, 0x5c, 0xf5, 0x44, 0x03, 0xba, 0x12, 0x78, 0x06, + 0x83, 0xfd, 0x49, 0x02, 0x8d, 0xf6, 0x3a, 0xf4, 0xe0, 0x09, 0x9c, 0x01, + 0x98, 0xfb, 0xbf, 0x0e, 0xdc, 0xff, 0xfe, 0xee, 0xa9, 0x08, 0xed, 0xfc, + 0xa6, 0xf9, 0x4c, 0x09, 0x97, 0x0a, 0xf7, 0x00, 0x05, 0xf1, 0xd7, 0xee, + 0x3b, 0x04, 0x97, 0x1c, 0xdd, 0x04, 0x32, 0xeb, 0x34, 0x08, 0x70, 0x0a, + 0xec, 0xf2, 0xba, 0xf9, 0x4b, 0x11, 0xed, 0x0c, 0xa8, 0xef, 0xed, 0xec, + 0x78, 0x0b, 0xcb, 0x14, 0x9c, 0xfe, 0xb9, 0xfe, 0xd6, 0xf8, 0x5c, 0xe5, + 0xa8, 0xf6, 0x6e, 0x1f, 0xbe, 0x0e, 0x18, 0xf1, 0x97, 0xfb, 0x66, 0xfe, + 0x50, 0xf7, 0x4b, 0x02, 0x2b, 0x11, 0x4e, 0x09, 0xf5, 0xf6, 0x6a, 0xf9, + 0xef, 0x03, 0x79, 0x01, 0x0c, 0xfb, 0x9b, 0x06, 0x14, 0xf9, 0xe7, 0xe5, + 0x76, 0x12, 0x07, 0x1e, 0x4a, 0xf5, 0x55, 0xed, 0x8a, 0xfc, 0x02, 0x03, + 0x68, 0x00, 0x03, 0x05, 0x63, 0x0b, 0xeb, 0xfb, 0x31, 0xe8, 0x18, 0x04, + 0x33, 0x1f, 0x7c, 0xf9, 0x0f, 0xed, 0x80, 0x11, 0x3c, 0x0c, 0xd3, 0xf1, + 0x76, 0xf5, 0xaf, 0x0f, 0x48, 0x0a, 0xe4, 0xf1, 0xde, 0xf9, 0x03, 0x05, + 0x28, 0xfe, 0x66, 0x01, 0xec, 0x03, 0x0c, 0xf8, 0x5c, 0xfb, 0x57, 0x13, + 0x1d, 0x00, 0x24, 0xef, 0x1a, 0x02, 0x24, 0x07, 0xc8, 0xf9, 0x33, 0xfa, + 0x4e, 0x03, 0x50, 0x0b, 0xca, 0x0a, 0xb8, 0xf9, 0xeb, 0xf1, 0x84, 0x00, + 0xa1, 0x08, 0x23, 0xf3, 0x1d, 0xf9, 0xd1, 0x16, 0xfd, 0x10, 0xff, 0xf2, + 0xd6, 0xed, 0xa0, 0xfa, 0xbb, 0x00, 0x24, 0x05, 0x90, 0x0a, 0x84, 0x05, + 0x3e, 0x02, 0xd0, 0xf7, 0xbc, 0xfa, 0xf6, 0x03, 0xe4, 0x02, 0xbc, 0xfc, + 0xcb, 0x04, 0x1a, 0x03, 0x6d, 0x01, 0x02, 0x03, 0xa2, 0x04, 0xa9, 0xfd, + 0x5e, 0xf5, 0x4b, 0xfe, 0xa9, 0x09, 0x33, 0x09, 0x29, 0xf5, 0x48, 0xf8, + 0x1d, 0x0f, 0x7c, 0xfd, 0x33, 0xf3, 0x87, 0xff, 0x44, 0x03, 0x7b, 0x03, + 0x80, 0x06, 0x7c, 0xf8, 0xea, 0xf4, 0xfc, 0x06, 0xa4, 0x04, 0xa9, 0xfb, + 0xa2, 0x02, 0xa6, 0x05, 0xa3, 0x00, 0xf9, 0xf3, 0x60, 0x00, 0x6e, 0x06, + 0x97, 0xfd, 0x20, 0x06, 0x19, 0x03, 0x7a, 0xfb, 0x80, 0x08, 0x40, 0xfc, + 0x25, 0xef, 0x7e, 0x03, 0x95, 0x03, 0xb9, 0xf8, 0x71, 0x0f, 0xb0, 0x06, + 0x9b, 0xf3, 0x30, 0xf9, 0x19, 0xfd, 0x4e, 0xff, 0xd8, 0x05, 0x40, 0x07, + 0x14, 0x03, 0x1d, 0xfc, 0x5b, 0xf7, 0x5d, 0xfd, 0x16, 0x06, 0xc5, 0xfc, + 0xd5, 0xf5, 0xfc, 0x0f, 0x24, 0x10, 0x22, 0xf8, 0x09, 0xf9, 0xa4, 0x04, + 0xa9, 0xff, 0x8e, 0xff, 0xef, 0x04, 0x29, 0xff, 0x5d, 0xf8, 0x4e, 0x04, + 0x50, 0x04, 0x72, 0x03, 0x24, 0xf4, 0x0c, 0xf9, 0xa6, 0x08, 0x91, 0x06, + 0xd1, 0xfe, 0x6f, 0xfe, 0x1e, 0xf7, 0x1c, 0x05, 0x9c, 0x00, 0x9d, 0xf5, + 0x5c, 0x07, 0x34, 0x0b, 0x97, 0xf4, 0x8b, 0xf5, 0xf7, 0x04, 0x14, 0x0b, + 0xf5, 0x05, 0x0f, 0xf6, 0xca, 0xf3, 0xa0, 0x01, 0xde, 0x05, 0x69, 0xfb, + 0xb7, 0x09, 0x31, 0x06, 0xca, 0xfa, 0xd3, 0xfd, 0x6e, 0x02, 0x06, 0xf8, + 0x09, 0xfd, 0xb5, 0x06, 0x1e, 0x00, 0x0c, 0x08, 0xf8, 0x0a, 0x54, 0xfe, + 0x15, 0xf5, 0x00, 0xfa, 0x06, 0x02, 0x67, 0x0e, 0x0a, 0x04, 0x0d, 0xff, + 0x8f, 0xf7, 0x01, 0xef, 0xb2, 0xfc, 0xab, 0x0a, 0x79, 0x03, 0xc5, 0x07, + 0x10, 0x04, 0x94, 0xeb, 0xcc, 0xee, 0x41, 0x09, 0x94, 0x0e, 0x81, 0x06, + 0x0b, 0xfd, 0x30, 0xef, 0x2c, 0xf7, 0xea, 0x0b, 0xa5, 0x05, 0x1d, 0x00, + 0x3a, 0x0a, 0x69, 0xf7, 0x69, 0xef, 0x14, 0x0d, 0x3b, 0x03, 0x1c, 0xf7, + 0xfb, 0x02, 0x52, 0x01, 0xa4, 0x03, 0x3a, 0xff, 0x22, 0x02, 0xc4, 0x04, + 0x4c, 0xf8, 0x29, 0xfc, 0xff, 0x02, 0x31, 0x02, 0x69, 0x01, 0x68, 0xf8, + 0xe9, 0xfc, 0xec, 0x0a, 0x53, 0x02, 0x36, 0xf6, 0xf3, 0x02, 0xcd, 0x05, + 0x62, 0x00, 0xda, 0xf6, 0x08, 0xf8, 0xc4, 0x07, 0xe9, 0x0c, 0xde, 0xf7, + 0x20, 0xf0, 0xdb, 0x05, 0x4f, 0x01, 0xac, 0x00, 0x21, 0x0b, 0xb1, 0xf9, + 0x89, 0xf6, 0x6b, 0x0d, 0x71, 0x03, 0x9e, 0xf1, 0x45, 0xfc, 0xf7, 0x09, + 0x5c, 0xf9, 0xae, 0xf6, 0xd9, 0x05, 0xce, 0x07, 0x20, 0x05, 0xd7, 0xfe, + 0xf1, 0xf0, 0x54, 0xfb, 0x9e, 0x0a, 0xce, 0x02, 0x5d, 0xfa, 0x81, 0x07, + 0x33, 0x0f, 0x94, 0xf2, 0xb7, 0xf1, 0x64, 0x08, 0xbd, 0x0b, 0xa4, 0xfc, + 0x60, 0x02, 0xd6, 0xfc, 0xb9, 0xf5, 0x08, 0xfb, 0x2b, 0x08, 0x3e, 0x09, + 0xb0, 0xf3, 0x18, 0xf2, 0x66, 0x11, 0xb5, 0x09, 0xc4, 0xf3, 0x83, 0x01, + 0x56, 0x0a, 0x56, 0xf5, 0xab, 0xf9, 0xca, 0x0c, 0xcd, 0xf8, 0x9b, 0xe0, + 0x70, 0x05, 0xf2, 0x1f, 0xdd, 0x08, 0xf7, 0x01, 0xe3, 0xe7, 0x9f, 0xe5, + 0x86, 0x0a, 0xb1, 0x1b, 0x9d, 0x06, 0x44, 0xf4, 0x7d, 0xf6, 0xd1, 0xf7, + 0xfe, 0xff, 0x56, 0x09, 0x68, 0x12, 0xb4, 0xfe, 0x6f, 0xf7, 0xd3, 0xf4, + 0x06, 0xf5, 0x35, 0x07, 0xba, 0x11, 0xd6, 0x02, 0xb3, 0xfc, 0x8c, 0xfe, + 0x67, 0xfb, 0x0c, 0xf7, 0xa0, 0x03, 0xa5, 0x12, 0x31, 0xfd, 0xab, 0xf5, + 0x54, 0x03, 0x61, 0x00, 0xcd, 0xf5, 0x96, 0xfa, 0x8c, 0x0c, 0x35, 0x02, + 0x60, 0xfa, 0x9b, 0x03, 0x18, 0xfd, 0x75, 0xfa, 0x3a, 0xff, 0x02, 0x00, + 0xf2, 0xf6, 0x32, 0x04, 0xbe, 0x12, 0x8d, 0xff, 0x3f, 0xef, 0xf8, 0xf5, + 0xad, 0x08, 0x20, 0x04, 0xed, 0xff, 0xe7, 0x01, 0x9e, 0x01, 0x3c, 0xf2, + 0xd7, 0xf4, 0xee, 0x06, 0x43, 0x0b, 0x24, 0x0e, 0xda, 0x00, 0xfc, 0xed, + 0x07, 0xf6, 0xf6, 0x07, 0x22, 0x09, 0x94, 0x09, 0xc5, 0xff, 0xaf, 0xf2, + 0x5c, 0xfa, 0x21, 0x06, 0x22, 0xfd, 0x78, 0x0a, 0xb0, 0x11, 0x22, 0xf4, + 0xf5, 0xe6, 0xdb, 0x05, 0x13, 0x05, 0xc4, 0xeb, 0x1e, 0x0c, 0xd6, 0x14, + 0xe8, 0xef, 0x9e, 0xef, 0xe9, 0x0a, 0xdf, 0x0d, 0x7a, 0xfc, 0x46, 0xfc, + 0x5f, 0xf9, 0x2e, 0x01, 0xf5, 0x01, 0x85, 0xff, 0xfa, 0xfd, 0xa3, 0x04, + 0x03, 0x11, 0xfd, 0xf9, 0x05, 0xe8, 0x2a, 0x03, 0x3d, 0x0e, 0x7b, 0x06, + 0x2e, 0xfa, 0xc9, 0x00, 0x7d, 0x00, 0x0b, 0xfe, 0x6f, 0x05, 0xde, 0x05, + 0x3a, 0xf8, 0x48, 0xfd, 0x73, 0xf9, 0x27, 0xf3, 0x80, 0xfc, 0x26, 0x08, + 0x0d, 0x10, 0x91, 0x01, 0xcb, 0xed, 0x2f, 0xf3, 0x8f, 0x02, 0x6a, 0x00, + 0x99, 0x06, 0x59, 0x0d, 0x01, 0xf4, 0xac, 0xeb, 0x8f, 0x07, 0x9b, 0x08, + 0x46, 0xf3, 0xdd, 0xf8, 0x74, 0x14, 0x36, 0x0b, 0x65, 0xf3, 0x86, 0xf5, + 0x9f, 0x1e, 0x1c, 0x0e, 0xa2, 0xef, 0x0c, 0xf5, 0xb3, 0xf8, 0xfd, 0x02, + 0x5f, 0x13, 0x4c, 0x09, 0x9f, 0xf7, 0x42, 0x00, 0x9e, 0xfd, 0x58, 0xed, + 0x77, 0x02, 0x86, 0x15, 0x37, 0x05, 0x92, 0xf7, 0x61, 0x04, 0x97, 0xfa, + 0x47, 0xe9, 0xeb, 0x04, 0x48, 0x0d, 0xc8, 0xfb, 0x9b, 0xff, 0x28, 0x02, + 0xd4, 0xfc, 0xef, 0x00, 0xf2, 0x01, 0x2c, 0xfc, 0x2c, 0xfa, 0xbe, 0xfd, + 0xb4, 0xf4, 0x94, 0xff, 0x9f, 0xfe, 0x3f, 0x03, 0x5a, 0x09, 0x42, 0x06, + 0x4a, 0x00, 0xe5, 0xf8, 0x41, 0xf0, 0xaf, 0xf4, 0x2d, 0x0d, 0x40, 0x11, + 0xf6, 0xfe, 0x4e, 0xf5, 0x79, 0xfa, 0xfd, 0xfd, 0x8e, 0x0d, 0x43, 0x11, + 0x8a, 0xfa, 0x81, 0xf9, 0x96, 0xfd, 0x90, 0x01, 0x20, 0x02, 0xeb, 0x02, + 0x00, 0x05, 0xa8, 0xfb, 0x14, 0xf6, 0x32, 0x00, 0x51, 0x08, 0x4c, 0x0d, + 0x94, 0x00, 0xf8, 0xff, 0x32, 0xfa, 0xa3, 0xf5, 0xe9, 0x01, 0x2a, 0x0f, + 0x38, 0x06, 0xda, 0xf9, 0xd9, 0xfa, 0xa7, 0xf0, 0x33, 0x07, 0x4b, 0x0e, + 0x77, 0xf8, 0x78, 0xf7, 0x3f, 0x04, 0x29, 0xfb, 0x8a, 0xfa, 0x61, 0x04, + 0x08, 0x03, 0x64, 0x06, 0x6f, 0x01, 0x61, 0xf2, 0x2f, 0xf7, 0xb5, 0x02, + 0x39, 0x05, 0x6d, 0xfb, 0xc0, 0xfd, 0x0d, 0x07, 0xc2, 0x01, 0x8c, 0xf5, + 0x73, 0x02, 0x53, 0x06, 0x4a, 0x0f, 0x0a, 0x01, 0x25, 0xf6, 0x07, 0x03, + 0x87, 0x02, 0x6e, 0xf5, 0x14, 0x01, 0x98, 0x0f, 0x18, 0x06, 0x3a, 0xf8, + 0xe9, 0x01, 0xde, 0xfe, 0xc5, 0xf8, 0xc8, 0xfc, 0x1a, 0x04, 0xd6, 0x04, + 0x29, 0xf9, 0xd4, 0xfa, 0x56, 0x0c, 0x3e, 0x04, 0x71, 0xf5, 0x88, 0xfb, + 0x33, 0x04, 0x21, 0x09, 0xd2, 0x02, 0xb2, 0xfc, 0x14, 0xfd, 0xef, 0xfb, + 0x70, 0xf9, 0x14, 0x09, 0x6b, 0x07, 0x02, 0xfe, 0xe2, 0xfc, 0x29, 0x00, + 0x97, 0xf6, 0x0f, 0xfc, 0x71, 0x04, 0xd4, 0x07, 0x21, 0x03, 0xd4, 0xfa, + 0x8e, 0xfa, 0x2c, 0x07, 0x8e, 0x01, 0x2b, 0x07, 0x43, 0x03, 0x83, 0xf3, + 0x5a, 0xfa, 0x82, 0xfe, 0x99, 0x00, 0x58, 0x0b, 0xcb, 0x07, 0x1b, 0xfb, + 0x5e, 0xfa, 0x91, 0x03, 0x48, 0x02, 0xed, 0x01, 0x45, 0x02, 0x26, 0xf1, + 0x60, 0xf1, 0xad, 0x04, 0xc2, 0x08, 0x23, 0x08, 0x09, 0x03, 0x45, 0x06, + 0xff, 0x01, 0x24, 0xfc, 0x07, 0x00, 0xb8, 0xfd, 0x2d, 0xff, 0x3d, 0xfc, + 0x99, 0xfe, 0x4a, 0x05, 0x52, 0x08, 0xbd, 0xfd, 0x13, 0xf4, 0x9e, 0xf1, + 0x91, 0x03, 0x6a, 0x10, 0x7b, 0x09, 0x9e, 0xfb, 0x25, 0xfd, 0xdc, 0xf7, + 0x4d, 0xf6, 0x88, 0x00, 0xb9, 0x0a, 0x00, 0x0b, 0x9e, 0x08, 0xfd, 0xf4, + 0x6f, 0xf4, 0x27, 0x02, 0x82, 0x0b, 0x69, 0x06, 0x57, 0xfe, 0xb7, 0xfa, + 0xd1, 0xf9, 0x63, 0xfc, 0x53, 0x02, 0xa7, 0xff, 0xbc, 0xfd, 0x82, 0x06, + 0x55, 0x01, 0x3b, 0xfd, 0x8e, 0x02, 0x2a, 0x07, 0x91, 0xfd, 0x5e, 0x00, + 0x2e, 0x07, 0x87, 0xfe, 0xb9, 0xfa, 0x05, 0x09, 0x02, 0x08, 0x97, 0xff, + 0x36, 0x00, 0x76, 0x08, 0xd3, 0x00, 0x6b, 0xfe, 0xc4, 0xfe, 0x11, 0xfb, + 0xfe, 0xf6, 0x1c, 0x03, 0x32, 0x06, 0xf1, 0xf9, 0x89, 0xf7, 0x8c, 0xfe, + 0x13, 0x01, 0xe4, 0xfa, 0xd0, 0xfb, 0x0b, 0xff, 0x34, 0x04, 0xa7, 0x00, + 0xb4, 0xfa, 0x12, 0xfc, 0xe8, 0xfe, 0xc7, 0xfb, 0x59, 0x01, 0xc6, 0x04, + 0x45, 0x01, 0x7d, 0xfa, 0x5e, 0x03, 0xc7, 0x07, 0xd8, 0xfc, 0x5c, 0xfe, + 0xd8, 0xfd, 0x41, 0xf5, 0x5b, 0xfb, 0x92, 0x06, 0x91, 0x06, 0x38, 0x06, + 0x96, 0x01, 0x4e, 0x03, 0x1b, 0x03, 0xbb, 0x00, 0xb5, 0xfd, 0x89, 0x01, + 0x64, 0x07, 0xb4, 0x04, 0x9f, 0x05, 0xee, 0x00, 0xf7, 0xf4, 0x25, 0xff, + 0x35, 0x05, 0xa8, 0xfd, 0x40, 0x01, 0xca, 0x09, 0xb0, 0x05, 0xf6, 0xf9, + 0xb0, 0xfe, 0xd2, 0xfd, 0x0b, 0xf7, 0xee, 0xf8, 0xd1, 0x03, 0xab, 0x03, + 0x0a, 0xf8, 0xf5, 0xfb, 0xa9, 0x02, 0xa0, 0xfe, 0x5d, 0xfe, 0x23, 0xff, + 0x6e, 0x03, 0x7d, 0xfd, 0x40, 0xfd, 0xb1, 0x03, 0xfb, 0xfe, 0x68, 0xff, + 0x6a, 0xfd, 0x9e, 0x06, 0x53, 0x05, 0xca, 0x05, 0x5e, 0x05, 0x41, 0xfd, + 0xb2, 0xff, 0x3e, 0x01, 0x1b, 0xff, 0x0c, 0x01, 0x40, 0x05, 0x4e, 0xfb, + 0x86, 0xfd, 0x69, 0x04, 0xf6, 0x01, 0x2b, 0x0e, 0x3f, 0x05, 0x0f, 0xf2, + 0x92, 0xf5, 0x65, 0xff, 0x6b, 0x03, 0x69, 0x0d, 0x90, 0x02, 0x67, 0xf3, + 0x8a, 0xfb, 0x95, 0x04, 0x8e, 0xff, 0x8b, 0xff, 0xc4, 0x07, 0x60, 0x05, + 0xce, 0xfa, 0x73, 0xf3, 0x5c, 0xfa, 0xdf, 0x01, 0x48, 0x02, 0xc7, 0x05, + 0xdd, 0x01, 0x16, 0xfe, 0xc2, 0xf9, 0x7e, 0xfb, 0xa2, 0x04, 0xad, 0x07, + 0xaa, 0x05, 0x30, 0x07, 0xe1, 0x02, 0xfe, 0xf8, 0x04, 0xfb, 0x92, 0x02, + 0x00, 0x07, 0x90, 0x04, 0xf6, 0x03, 0xda, 0xfb, 0x0c, 0xf8, 0xc0, 0xfd, + 0xa3, 0x04, 0xfd, 0x01, 0xe2, 0xf8, 0x7e, 0xf7, 0xf1, 0x00, 0x10, 0xfb, + 0x9f, 0xfc, 0xbe, 0x04, 0x98, 0x05, 0xd0, 0xfe, 0x4d, 0xff, 0xb8, 0x00, + 0x03, 0x01, 0x54, 0x02, 0x99, 0x00, 0xe9, 0xfc, 0x1f, 0xfb, 0x39, 0x03, + 0x7a, 0x06, 0xab, 0x06, 0x4d, 0x04, 0x0a, 0x01, 0x53, 0xfa, 0x96, 0xf6, + 0xcd, 0xfd, 0x96, 0x05, 0x6b, 0x05, 0x0c, 0xff, 0xa5, 0x01, 0x00, 0x04, + 0x17, 0xfd, 0x21, 0xfa, 0x68, 0x03, 0xcd, 0x01, 0x48, 0xfb, 0xc1, 0xf9, + 0x4c, 0x00, 0xd2, 0x06, 0xe1, 0x02, 0x94, 0x05, 0x0a, 0x05, 0xa3, 0xf8, + 0x7b, 0xf9, 0x9b, 0xff, 0x7c, 0x05, 0x6f, 0x05, 0x1d, 0x02, 0x01, 0x08, + 0x8f, 0x00, 0xb3, 0xf7, 0x60, 0xfa, 0xde, 0x06, 0x05, 0x09, 0x26, 0x09, + 0x02, 0x02, 0x19, 0x04, 0x88, 0x01, 0x5d, 0xf8, 0x3a, 0xfa, 0x38, 0xfe, + 0x25, 0xff, 0x47, 0x03, 0xeb, 0x04, 0x30, 0x00, 0x3d, 0x00, 0x1d, 0xf7, + 0x0b, 0xfd, 0xd1, 0x00, 0xc8, 0x00, 0xf6, 0xfe, 0xde, 0xfe, 0x0c, 0x00, + 0x87, 0xfc, 0x7f, 0xf6, 0x34, 0xff, 0x9a, 0x07, 0xec, 0x02, 0x9c, 0x04, + 0x5f, 0x02, 0x65, 0xfd, 0xef, 0xff, 0xce, 0x03, 0x19, 0x03, 0x56, 0x06, + 0x49, 0x04, 0x3f, 0xff, 0x7e, 0xfe, 0x98, 0x01, 0x43, 0x04, 0x39, 0x04, + 0xca, 0x00, 0x98, 0x01, 0x30, 0xff, 0x43, 0x01, 0x32, 0xfd, 0x54, 0xfb, + 0x35, 0xfe, 0x99, 0x01, 0xfb, 0xff, 0x91, 0xfd, 0x88, 0xff, 0x51, 0x00, + 0x98, 0x01, 0x2b, 0x00, 0xb6, 0xfc, 0xf0, 0xf9, 0x5a, 0xfa, 0x24, 0xfe, + 0xd9, 0x01, 0x59, 0xfe, 0x21, 0xfe, 0x44, 0x02, 0x14, 0x00, 0x75, 0x00, + 0xd7, 0x01, 0xee, 0xff, 0x0f, 0xfd, 0x32, 0xfc, 0xf7, 0xfe, 0x3e, 0x01, + 0x92, 0x03, 0xd1, 0x02, 0x01, 0x01, 0x81, 0x00, 0x75, 0x01, 0x96, 0x01, + 0x92, 0x00, 0x43, 0xff, 0xfb, 0xff, 0x1e, 0x02, 0x8d, 0x02, 0xa6, 0x01, + 0x8a, 0x02, 0x4a, 0x01, 0x50, 0xfe, 0x23, 0xff, 0xe7, 0x02, 0x01, 0x03, + 0x22, 0x03, 0x97, 0x02, 0x78, 0x00, 0xd2, 0x00, 0xb0, 0xfe, 0xec, 0xfb, + 0xd9, 0xfe, 0x02, 0x02, 0x74, 0x04, 0x9f, 0x05, 0xea, 0x01, 0xf7, 0xfc, + 0xc9, 0xfd, 0x47, 0xff, 0x25, 0x00, 0xfb, 0x03, 0x74, 0xfe, 0xa3, 0xfe, + 0x36, 0x00, 0xca, 0x00, 0xdb, 0x03, 0xf9, 0x04, 0x09, 0x06, 0x1b, 0x03, + 0xd8, 0x01, 0x31, 0xfe, 0x15, 0xfd, 0x77, 0xfd, 0xa0, 0x01, 0xfe, 0x00, + 0xa5, 0xff, 0x01, 0xfe, 0xc6, 0x00, 0x79, 0x02, 0x8a, 0x00, 0x70, 0xff, + 0x1b, 0xfd, 0x8c, 0xfc, 0xc0, 0xfd, 0x1e, 0x02, 0x08, 0x04, 0x4c, 0x02, + 0x2f, 0x00, 0xd0, 0xfe, 0x6f, 0xff, 0xc4, 0x00, 0x08, 0x04, 0xd3, 0x02, + 0x72, 0x01, 0x86, 0xfe, 0x9c, 0xfc, 0x13, 0xfd, 0x86, 0xfd, 0x89, 0xfe, + 0xe0, 0xff, 0x90, 0x00, 0x18, 0xfe, 0xae, 0xfc, 0xe9, 0xfc, 0x9b, 0xfd, + 0xa8, 0xfd, 0x7c, 0xfb, 0x1c, 0xfa, 0x1c, 0xfa, 0x87, 0xf8, 0x70, 0xfc, + 0x69, 0x00, 0x7b, 0x01, 0x7c, 0xff, 0xf0, 0xfd, 0xd5, 0xfd, 0x58, 0xfc, + 0x10, 0xfd, 0x49, 0xfb, 0x28, 0xfb, 0x5b, 0xfb, 0xbc, 0xfc, 0xcd, 0xff, + 0x00, 0x00, 0x26, 0x00, 0x3b, 0xfe, 0x76, 0xfe, 0x07, 0xfe, 0xa1, 0xfe, + 0x4e, 0xfd, 0x07, 0xff, 0x98, 0xfe, 0x0b, 0x00, 0x51, 0x02, 0xc7, 0x02, + 0x2b, 0x03, 0x69, 0x01, 0x09, 0xfe, 0x5d, 0xfc, 0x68, 0xff, 0x9c, 0x00, + 0x39, 0x01, 0xe2, 0x07, 0x29, 0x09, 0x7a, 0x07, 0x40, 0x06, 0x68, 0x00, + 0x51, 0xfd, 0x0d, 0xfe, 0x6f, 0xfd, 0x1d, 0x02, 0x7b, 0x07, 0x76, 0x10, + 0xb1, 0x10, 0xf6, 0x09, 0x31, 0x03, 0x09, 0xff, 0x0d, 0x00, 0x21, 0x02, + 0x48, 0x07, 0xbb, 0x08, 0xfd, 0x06, 0xc7, 0x03, 0xa1, 0x04, 0x93, 0x03, + 0xad, 0x04, 0x63, 0x06, 0x4b, 0x07, 0xb1, 0x05, 0xff, 0x02, 0x52, 0xff, + 0xd8, 0xfb, 0xb2, 0xfa, 0x17, 0xfe, 0x2f, 0x02, 0x39, 0x04, 0xc3, 0x04, + 0xf6, 0x03, 0xe6, 0x00, 0xe0, 0xfe, 0xce, 0xfd, 0xd2, 0xfe, 0x61, 0xfe, + 0x81, 0xfe, 0x9a, 0xfd, 0x9c, 0xfd, 0x25, 0xfd, 0x92, 0xfd, 0x37, 0xfe, + 0xf7, 0xfe, 0x46, 0xff, 0xa3, 0xfd, 0xc3, 0xf9, 0xeb, 0xf6, 0xa4, 0xf3, + 0x8d, 0xf3, 0xa2, 0xf6, 0x61, 0xf9, 0x6f, 0xfb, 0x61, 0xfb, 0xfb, 0xfb, + 0x5f, 0xfc, 0x63, 0xfa, 0xcf, 0xf7, 0x7a, 0xf5, 0x1c, 0xf3, 0x2f, 0xf1, + 0x23, 0xf2, 0xc6, 0xf5, 0xb0, 0xf7, 0xc7, 0xfa, 0x66, 0xfb, 0xec, 0xfa, + 0xe7, 0xfc, 0x34, 0xfe, 0xb3, 0xfb, 0x19, 0xf9, 0x42, 0xf7, 0x38, 0xf8, + 0x10, 0xf9, 0x67, 0xfe, 0x4c, 0xff, 0x4a, 0x00, 0x28, 0x00, 0x7d, 0x00, + 0x7f, 0xfd, 0x2c, 0xfe, 0xc7, 0xff, 0xdf, 0x01, 0x86, 0x02, 0x9e, 0x03, + 0xb2, 0x03, 0x7d, 0x0b, 0xde, 0x12, 0xcf, 0x13, 0xdf, 0x13, 0xce, 0x0c, + 0x39, 0x06, 0x3b, 0x03, 0x7b, 0x02, 0xd5, 0x02, 0x3d, 0x08, 0x30, 0x0b, + 0x37, 0x0b, 0x55, 0x0b, 0xa9, 0x0a, 0xa7, 0x08, 0x28, 0x09, 0x2c, 0x07, + 0x65, 0x05, 0x9e, 0x05, 0xa8, 0x05, 0xcf, 0x07, 0x62, 0x09, 0xd3, 0x0b, + 0x9e, 0x0b, 0x7f, 0x08, 0xa8, 0x06, 0xf3, 0x05, 0x1d, 0x06, 0xf4, 0x05, + 0xf5, 0x07, 0xd2, 0x06, 0xcc, 0x04, 0x16, 0x07, 0xd7, 0x06, 0xae, 0x04, + 0x5a, 0x04, 0xfa, 0x00, 0xb7, 0xff, 0xa5, 0xfd, 0x9d, 0xfb, 0x02, 0xfc, + 0x34, 0xfc, 0x9e, 0xfc, 0x98, 0x00, 0xfa, 0x01, 0x86, 0xff, 0x2f, 0xfd, + 0xe5, 0xfa, 0xd4, 0xf6, 0x69, 0xf6, 0xe9, 0xf6, 0xa0, 0xf6, 0x77, 0xf2, + 0x3e, 0xf1, 0x9e, 0xee, 0xc4, 0xee, 0xb4, 0xee, 0x98, 0xef, 0x5a, 0xf0, + 0xe5, 0xee, 0xa0, 0xee, 0xfb, 0xef, 0x03, 0xf3, 0x6e, 0xf2, 0x97, 0xf1, + 0x6e, 0xf0, 0xf8, 0xef, 0xd1, 0xf0, 0x26, 0xf6, 0x30, 0xfb, 0x5e, 0xff, + 0x48, 0xfd, 0x67, 0xf9, 0x6f, 0xf5, 0x72, 0xf6, 0x7d, 0xf9, 0x25, 0xfe, + 0x02, 0x02, 0x75, 0x02, 0xad, 0x08, 0xed, 0x06, 0x98, 0x03, 0xc2, 0x00, + 0x07, 0xff, 0x1c, 0xfc, 0x53, 0xff, 0xce, 0x00, 0x61, 0x00, 0x9f, 0x01, + 0x0e, 0x00, 0xab, 0x00, 0xd6, 0xff, 0x56, 0x01, 0x55, 0x04, 0xd3, 0x07, + 0xcd, 0x09, 0x4c, 0x08, 0xd5, 0x02, 0x23, 0x06, 0xaf, 0x0a, 0xc7, 0x0e, + 0xfd, 0x12, 0xe1, 0x13, 0x7a, 0x13, 0x43, 0x13, 0x4f, 0x10, 0xc7, 0x0c, + 0x37, 0x0c, 0xde, 0x0b, 0xd6, 0x0a, 0xb9, 0x0c, 0x8d, 0x0d, 0xab, 0x0c, + 0xcd, 0x0b, 0x9e, 0x0a, 0x70, 0x08, 0x39, 0x06, 0x5f, 0x05, 0x0a, 0x05, + 0x58, 0x06, 0xd7, 0x06, 0x6f, 0x08, 0x2c, 0x09, 0x28, 0x0a, 0x39, 0x0b, + 0xfd, 0x09, 0xf9, 0x07, 0x51, 0x04, 0x91, 0x01, 0xf5, 0xff, 0x43, 0x01, + 0xb3, 0x01, 0xf5, 0xff, 0xde, 0xfc, 0x14, 0xfb, 0x6b, 0xf9, 0x74, 0xfa, + 0x09, 0xfa, 0xf2, 0xf5, 0x77, 0xf1, 0xfd, 0xeb, 0x43, 0xea, 0xe2, 0xe8, + 0x95, 0xea, 0xb7, 0xed, 0x89, 0xf2, 0x34, 0xf5, 0x0c, 0xf5, 0x50, 0xf3, + 0xc5, 0xed, 0xf5, 0xe7, 0x92, 0xe6, 0xb1, 0xe9, 0x1c, 0xee, 0xff, 0xf4, + 0x19, 0xf7, 0x14, 0xf5, 0xb8, 0xef, 0x2c, 0xf1, 0x48, 0xf5, 0xcc, 0xf9, + 0xb8, 0x01, 0x32, 0x01, 0xc6, 0xfb, 0xc1, 0xf5, 0xb1, 0xf0, 0xf8, 0xf1, + 0x47, 0xf8, 0xdb, 0x01, 0x98, 0x06, 0x0b, 0x07, 0xa4, 0x04, 0xd9, 0xff, + 0x35, 0xff, 0xc9, 0xfa, 0xc4, 0xfd, 0x1b, 0xff, 0xdc, 0xfc, 0x84, 0xfc, + 0x14, 0xfb, 0x8c, 0xfa, 0x89, 0x00, 0xf6, 0x04, 0xe7, 0x05, 0xaa, 0x06, + 0x04, 0x05, 0x37, 0x05, 0x99, 0x05, 0x65, 0x06, 0x04, 0x04, 0x88, 0x07, + 0x11, 0x08, 0x2d, 0x0f, 0x26, 0x15, 0x81, 0x18, 0x54, 0x19, 0x2d, 0x16, + 0x87, 0x13, 0x42, 0x11, 0x21, 0x10, 0xbc, 0x10, 0xd8, 0x11, 0xe3, 0x11, + 0x4b, 0x0d, 0x88, 0x0c, 0x00, 0x0d, 0x8a, 0x0d, 0x61, 0x10, 0x02, 0x10, + 0x48, 0x0f, 0x4c, 0x0b, 0xa4, 0x09, 0xe6, 0x05, 0x95, 0x04, 0x61, 0x03, + 0xc3, 0x04, 0x5f, 0x06, 0xb3, 0x07, 0x3c, 0x09, 0x36, 0x09, 0x22, 0x06, + 0x38, 0x02, 0x31, 0xfd, 0xf7, 0xfa, 0x9f, 0xfa, 0x21, 0xfb, 0xf3, 0xfa, + 0xf8, 0xf8, 0x48, 0xf7, 0x4f, 0xf5, 0x01, 0xf4, 0x2a, 0xf2, 0x7b, 0xf2, + 0x4f, 0xf1, 0x35, 0xee, 0xff, 0xea, 0xf2, 0xe8, 0xb9, 0xe6, 0xd4, 0xe9, + 0x31, 0xeb, 0x6d, 0xed, 0x37, 0xea, 0x9c, 0xe6, 0x99, 0xe8, 0x2e, 0xea, + 0x1d, 0xf2, 0x9f, 0xf6, 0x70, 0xfa, 0x93, 0xf5, 0x6f, 0xf3, 0xa8, 0xf1, + 0x20, 0xf6, 0x18, 0xff, 0x2d, 0x01, 0x18, 0x02, 0xb1, 0xfe, 0x96, 0xfa, + 0xc8, 0xfa, 0x13, 0xfb, 0xeb, 0xfc, 0x7d, 0x00, 0x2d, 0xfd, 0x6f, 0xfd, + 0xb3, 0xfb, 0x2c, 0xfa, 0xd8, 0xfa, 0x78, 0xf9, 0x73, 0xf6, 0x86, 0xf7, + 0x54, 0xf8, 0xbc, 0xfa, 0x50, 0xfe, 0xd9, 0xfd, 0x27, 0xff, 0x38, 0xff, + 0x41, 0x00, 0xc1, 0x00, 0xed, 0x03, 0xf1, 0x00, 0x26, 0x04, 0x3a, 0x08, + 0x7a, 0x0a, 0xbb, 0x0d, 0x74, 0x0f, 0xa8, 0x0e, 0xb6, 0x0d, 0x90, 0x0e, + 0xb4, 0x0e, 0x82, 0x11, 0x2f, 0x15, 0xe9, 0x17, 0xdb, 0x17, 0xf5, 0x17, + 0xaf, 0x12, 0x69, 0x12, 0x08, 0x11, 0x50, 0x12, 0x4e, 0x14, 0xe5, 0x13, + 0x16, 0x13, 0x8a, 0x0e, 0xa9, 0x0d, 0xae, 0x08, 0x0f, 0x0a, 0x49, 0x0c, + 0xf3, 0x0d, 0xcf, 0x0f, 0xfa, 0x0c, 0x46, 0x09, 0xc8, 0x04, 0xdf, 0x01, + 0xd4, 0xff, 0x1d, 0x00, 0xb0, 0x01, 0x7a, 0x01, 0x7f, 0x03, 0xf9, 0x00, + 0xb0, 0xff, 0x85, 0xfc, 0x69, 0xf7, 0xe5, 0xf9, 0x6f, 0xf7, 0x33, 0xf9, + 0xb0, 0xf7, 0xc7, 0xf3, 0x0b, 0xf0, 0xf6, 0xeb, 0x44, 0xed, 0xef, 0xed, + 0x7f, 0xef, 0x5a, 0xed, 0x66, 0xe8, 0x1d, 0xe3, 0x5b, 0xdc, 0xab, 0xdd, + 0xc9, 0xe2, 0x0b, 0xe8, 0x05, 0xf0, 0xbf, 0xf1, 0x34, 0xf2, 0x76, 0xf1, + 0x43, 0xf7, 0x53, 0xfb, 0xda, 0xf6, 0x60, 0x00, 0x5f, 0xfd, 0x71, 0x00, + 0xe6, 0x03, 0x2f, 0x02, 0x85, 0xff, 0x4d, 0xfb, 0xe3, 0xfa, 0xfb, 0xf6, + 0xea, 0xfa, 0xe1, 0xf8, 0x8d, 0xfb, 0xcf, 0xfb, 0x36, 0xfb, 0x2a, 0xf8, + 0xab, 0xf5, 0xeb, 0xf3, 0x7c, 0xf6, 0xc0, 0xf8, 0x1d, 0xfb, 0x0c, 0xfc, + 0xce, 0xf7, 0x63, 0xfd, 0xc4, 0x00, 0x63, 0x02, 0xe8, 0x03, 0x5d, 0x03, + 0x71, 0x02, 0xb3, 0x05, 0xe2, 0x08, 0x70, 0x09, 0x59, 0x0c, 0x72, 0x0d, + 0xc4, 0x0b, 0x76, 0x0d, 0xfd, 0x0e, 0xd4, 0x0f, 0x7a, 0x13, 0xe7, 0x16, + 0xf7, 0x17, 0xbd, 0x18, 0x78, 0x19, 0x72, 0x17, 0xf6, 0x15, 0xec, 0x16, + 0xbb, 0x16, 0x72, 0x18, 0x04, 0x18, 0xde, 0x15, 0x45, 0x13, 0xf4, 0x10, + 0x75, 0x0d, 0xea, 0x0b, 0x74, 0x09, 0x3a, 0x07, 0x5f, 0x09, 0x1d, 0x0a, + 0x04, 0x0b, 0x3d, 0x0a, 0xae, 0x07, 0x91, 0x03, 0x1d, 0x01, 0xb2, 0x00, + 0x60, 0xff, 0x95, 0x00, 0x80, 0x00, 0x43, 0xfd, 0x51, 0xfc, 0xe6, 0xf9, + 0xdc, 0xfb, 0x41, 0xfd, 0xc8, 0xfc, 0xa6, 0xfc, 0xc7, 0xf7, 0x8d, 0xf5, + 0x6c, 0xef, 0x72, 0xeb, 0x30, 0xe6, 0x7a, 0xe3, 0x07, 0xe1, 0x42, 0xe0, + 0x10, 0xe1, 0xdb, 0xe1, 0x03, 0xe5, 0xc8, 0xe7, 0x19, 0xeb, 0x38, 0xec, + 0x71, 0xee, 0xa3, 0xf0, 0xb2, 0xf7, 0xa3, 0xf8, 0x92, 0xfd, 0x40, 0xfd, + 0x4f, 0xfc, 0xe2, 0xfd, 0xda, 0xff, 0x0c, 0x03, 0x2b, 0x02, 0xc2, 0xff, + 0x76, 0xf9, 0x37, 0xf8, 0x5e, 0xf7, 0xe8, 0xfa, 0x51, 0xfa, 0x07, 0xf8, + 0xff, 0xf4, 0xd0, 0xf2, 0xee, 0xef, 0x08, 0xf1, 0x44, 0xf6, 0x89, 0xf7, + 0xb7, 0xf9, 0xeb, 0xfa, 0x55, 0xfb, 0xf3, 0xfc, 0x6e, 0x03, 0xf9, 0x06, + 0x58, 0x08, 0x72, 0x07, 0x06, 0x04, 0xdf, 0x02, 0xbe, 0x05, 0xc1, 0x08, + 0xcf, 0x0d, 0x7b, 0x0d, 0x05, 0x0e, 0xaa, 0x0a, 0xae, 0x09, 0x83, 0x08, + 0xd5, 0x0a, 0x02, 0x11, 0xca, 0x17, 0x89, 0x1b, 0x30, 0x1a, 0xa9, 0x19, + 0x06, 0x17, 0x42, 0x17, 0xa6, 0x17, 0x28, 0x17, 0x95, 0x19, 0xbe, 0x1a, + 0x74, 0x19, 0xc0, 0x17, 0x3d, 0x11, 0x66, 0x0c, 0x2e, 0x0b, 0x8f, 0x0c, + 0x08, 0x0d, 0x06, 0x0f, 0x2b, 0x0c, 0x8f, 0x08, 0xc1, 0x06, 0xc8, 0x04, + 0xfd, 0x02, 0x23, 0x02, 0xee, 0xfd, 0x98, 0xfc, 0x6e, 0xfc, 0xfc, 0xfc, + 0x8a, 0xff, 0xb1, 0x03, 0x87, 0x04, 0xc5, 0x04, 0x1e, 0x00, 0x00, 0xfc, + 0x26, 0xf9, 0x6d, 0xf7, 0x2b, 0xf3, 0x3b, 0xf0, 0x0d, 0xea, 0x9d, 0xe7, + 0x19, 0xe6, 0x00, 0xe4, 0xab, 0xe3, 0x43, 0xdf, 0x35, 0xdd, 0x33, 0xdd, + 0x7c, 0xdf, 0x62, 0xe3, 0x89, 0xe6, 0x74, 0xeb, 0xe0, 0xf1, 0x09, 0xf7, + 0xdc, 0xfb, 0x95, 0xff, 0x9e, 0x02, 0x66, 0x05, 0xe0, 0x07, 0xaa, 0x04, + 0x89, 0x05, 0xed, 0x00, 0x8e, 0xff, 0x4f, 0x01, 0x6d, 0xfe, 0xb4, 0xf9, + 0x37, 0xf5, 0xa7, 0xee, 0xa2, 0xec, 0x33, 0xee, 0x9d, 0xec, 0x9d, 0xeb, + 0x7e, 0xec, 0xac, 0xeb, 0xb8, 0xf1, 0xad, 0xf9, 0x64, 0xfb, 0xfd, 0xff, + 0x49, 0x03, 0xca, 0xff, 0x78, 0x04, 0x04, 0x06, 0x39, 0x07, 0xad, 0x0c, + 0xca, 0x0b, 0xf1, 0x09, 0xb8, 0x09, 0xb7, 0x0a, 0x22, 0x09, 0xd6, 0x09, + 0x31, 0x07, 0x60, 0x07, 0x9f, 0x0a, 0x07, 0x0f, 0x14, 0x12, 0x04, 0x14, + 0x44, 0x13, 0xe4, 0x11, 0x7f, 0x13, 0x35, 0x15, 0xa4, 0x18, 0x77, 0x1a, + 0x97, 0x1b, 0x71, 0x1a, 0x07, 0x19, 0xbc, 0x18, 0x76, 0x17, 0x3a, 0x17, + 0x81, 0x15, 0xfd, 0x13, 0xb3, 0x10, 0x0b, 0x0e, 0x08, 0x0c, 0xa5, 0x09, + 0xc0, 0x07, 0x11, 0x05, 0x9d, 0x03, 0x17, 0x02, 0x8a, 0x01, 0xad, 0x01, + 0x17, 0x01, 0xc8, 0x00, 0x2a, 0x00, 0xac, 0xff, 0xb9, 0x01, 0x9c, 0x02, + 0xea, 0x03, 0x13, 0x03, 0x7e, 0x02, 0x20, 0x02, 0xb0, 0x00, 0x4f, 0xfe, + 0xe2, 0xfa, 0x05, 0xf5, 0xb5, 0xf0, 0xfc, 0xec, 0x42, 0xe8, 0x5e, 0xe4, + 0xb8, 0xde, 0x10, 0xd9, 0x7c, 0xd4, 0xad, 0xd3, 0x48, 0xd4, 0x3c, 0xd6, + 0xbe, 0xdc, 0xea, 0xe1, 0x54, 0xec, 0x5e, 0xf6, 0xf8, 0xff, 0x39, 0x03, + 0x35, 0x05, 0x20, 0x05, 0x69, 0x07, 0x2f, 0x0b, 0x31, 0x0c, 0x7b, 0x0c, + 0xef, 0x09, 0x60, 0x07, 0xf3, 0x01, 0xad, 0xfd, 0x16, 0xf8, 0xef, 0xf2, + 0xf0, 0xed, 0x4b, 0xe9, 0xf1, 0xe5, 0xf3, 0xe4, 0x8a, 0xe4, 0x7c, 0xe9, + 0x23, 0xed, 0xf3, 0xf2, 0xeb, 0xf9, 0x8c, 0xfd, 0x1c, 0x02, 0x6b, 0x06, + 0x87, 0x08, 0x72, 0x09, 0x5a, 0x0a, 0x97, 0x08, 0x57, 0x08, 0xe6, 0x06, + 0x49, 0x06, 0x75, 0x05, 0x98, 0x06, 0x7c, 0x05, 0x59, 0x06, 0xb2, 0x06, + 0xf6, 0x05, 0x3f, 0x07, 0x4f, 0x07, 0xa2, 0x08, 0x73, 0x0b, 0xdf, 0x0e, + 0x26, 0x12, 0xda, 0x14, 0xf9, 0x15, 0xc0, 0x18, 0xff, 0x1b, 0x56, 0x1f, + 0xb7, 0x21, 0x6d, 0x21, 0x40, 0x1e, 0x53, 0x1b, 0x60, 0x17, 0xce, 0x12, + 0xde, 0x0f, 0x31, 0x0e, 0xdb, 0x0c, 0xbf, 0x0c, 0x30, 0x0a, 0xda, 0x06, + 0xa2, 0x03, 0x2b, 0x00, 0x5c, 0xfd, 0x27, 0xfd, 0x43, 0xfd, 0xe1, 0xfe, + 0x09, 0x01, 0x2f, 0x03, 0x76, 0x03, 0x10, 0x04, 0x86, 0x03, 0x53, 0x03, + 0x0f, 0x05, 0xcc, 0x04, 0xb4, 0x04, 0xec, 0x03, 0xfe, 0xff, 0x15, 0xfe, + 0xa8, 0xfa, 0x08, 0xf6, 0xd0, 0xf2, 0xdb, 0xee, 0x74, 0xea, 0x99, 0xe5, + 0xd9, 0xe0, 0x12, 0xdd, 0x15, 0xdc, 0x95, 0xd9, 0xe2, 0xd6, 0x94, 0xd3, + 0xd9, 0xd2, 0x4e, 0xd8, 0x57, 0xdf, 0x8a, 0xe8, 0xf1, 0xf4, 0xba, 0xfe, + 0xef, 0x05, 0xea, 0x0c, 0xbd, 0x0f, 0x67, 0x12, 0x05, 0x13, 0xd9, 0x0f, + 0x06, 0x08, 0x9b, 0x03, 0xa6, 0xfc, 0xaf, 0xf9, 0x9a, 0xf6, 0xc8, 0xf2, + 0xd0, 0xf1, 0xb1, 0xf0, 0x4c, 0xed, 0xad, 0xeb, 0x00, 0xec, 0xe7, 0xeb, + 0xc5, 0xee, 0xd7, 0xf1, 0xd6, 0xf3, 0xfd, 0xf6, 0x6d, 0xfc, 0x89, 0x00, + 0xbb, 0x04, 0x22, 0x09, 0xce, 0x0b, 0x20, 0x0e, 0x1f, 0x0f, 0xb8, 0x0c, + 0x1c, 0x0a, 0x4c, 0x07, 0x08, 0x04, 0x8c, 0x01, 0x3d, 0x00, 0x16, 0xfe, + 0x6d, 0xfe, 0x24, 0x00, 0x2b, 0x02, 0x2d, 0x04, 0xa5, 0x04, 0x6a, 0x06, + 0x7c, 0x0b, 0x45, 0x11, 0xa1, 0x17, 0xe1, 0x1c, 0x81, 0x20, 0xd7, 0x21, + 0x40, 0x23, 0xb1, 0x23, 0x30, 0x23, 0x0e, 0x22, 0x06, 0x1f, 0x1d, 0x1a, + 0x71, 0x14, 0x22, 0x0f, 0xbd, 0x0b, 0xf1, 0x08, 0xdc, 0x07, 0x91, 0x05, + 0x57, 0x03, 0xe5, 0xff, 0x95, 0xfd, 0xba, 0xfb, 0xc9, 0xfa, 0x16, 0xfb, + 0xc8, 0xfc, 0x64, 0xff, 0xda, 0x01, 0x37, 0x04, 0x90, 0x06, 0xe8, 0x07, + 0xfd, 0x08, 0x11, 0x09, 0x82, 0x07, 0x49, 0x05, 0x53, 0x03, 0xc7, 0xff, + 0xf1, 0xfc, 0x3a, 0xfa, 0x9c, 0xf5, 0x7a, 0xf2, 0xf3, 0xef, 0x50, 0xed, + 0x66, 0xec, 0x31, 0xea, 0xbf, 0xe4, 0x6b, 0xdf, 0x4b, 0xd9, 0x32, 0xd3, + 0x26, 0xd1, 0x71, 0xd0, 0x0d, 0xd4, 0x0d, 0xdb, 0x13, 0xe2, 0x0e, 0xea, + 0x73, 0xf3, 0x0f, 0xff, 0x06, 0x0a, 0x58, 0x12, 0x3b, 0x15, 0xb6, 0x14, + 0xf1, 0x13, 0x34, 0x11, 0xfd, 0x0a, 0x32, 0x04, 0xf4, 0xfb, 0x01, 0xf6, + 0x5b, 0xf2, 0xb3, 0xf0, 0x11, 0xf0, 0x24, 0xef, 0x21, 0xee, 0xe1, 0xeb, + 0x52, 0xeb, 0xa8, 0xee, 0xfe, 0xef, 0x34, 0xf2, 0xb5, 0xf4, 0x86, 0xf8, + 0x6e, 0xfe, 0x9c, 0x04, 0x3c, 0x09, 0xc4, 0x0c, 0x49, 0x0f, 0x95, 0x0f, + 0x78, 0x0e, 0x26, 0x0d, 0x0a, 0x0b, 0xd3, 0x07, 0x42, 0x01, 0xa5, 0xfb, + 0x13, 0xf9, 0xf9, 0xf7, 0x7c, 0xfa, 0x33, 0xfc, 0xb0, 0xfe, 0x13, 0x02, + 0x2b, 0x06, 0x29, 0x0a, 0xbd, 0x0d, 0xe2, 0x11, 0x0f, 0x19, 0x23, 0x1e, + 0xcb, 0x22, 0xa3, 0x25, 0x06, 0x25, 0xc1, 0x23, 0x5e, 0x22, 0x11, 0x1f, + 0x7a, 0x1b, 0xd3, 0x18, 0x9d, 0x14, 0xa9, 0x0e, 0x89, 0x08, 0xc2, 0x02, + 0xdd, 0xff, 0x04, 0xff, 0x9f, 0xfe, 0x79, 0xfe, 0x08, 0xfe, 0x4f, 0xfd, + 0x4c, 0xfd, 0x4d, 0xfe, 0xcf, 0xff, 0x56, 0x02, 0x3b, 0x05, 0x29, 0x06, + 0xa5, 0x07, 0x60, 0x08, 0x7f, 0x08, 0xda, 0x08, 0x4e, 0x09, 0x56, 0x07, + 0xba, 0x05, 0xe4, 0x03, 0xed, 0x00, 0x49, 0xfe, 0xc0, 0xf8, 0x42, 0xf2, + 0x39, 0xef, 0x9d, 0xee, 0x6d, 0xf0, 0x68, 0xf1, 0x41, 0xf2, 0x15, 0xed, + 0x41, 0xe7, 0x59, 0xe1, 0x80, 0xd5, 0x63, 0xd1, 0x2e, 0xcf, 0xd7, 0xce, + 0x9d, 0xd1, 0xaa, 0xd8, 0x32, 0xdd, 0xdd, 0xe8, 0x24, 0xf7, 0x72, 0x02, + 0x3a, 0x11, 0x95, 0x1a, 0x4c, 0x1b, 0xfc, 0x1d, 0x7e, 0x1b, 0x77, 0x15, + 0xeb, 0x0f, 0xe3, 0x08, 0x32, 0xfe, 0xab, 0xf5, 0x6d, 0xec, 0x88, 0xe7, + 0x62, 0xe5, 0x8b, 0xe5, 0x5b, 0xe7, 0x45, 0xe8, 0xcf, 0xea, 0xc9, 0xed, + 0x94, 0xf2, 0xcf, 0xf6, 0xa6, 0xfd, 0x79, 0x01, 0x1b, 0x06, 0x1b, 0x0b, + 0x2b, 0x0e, 0x9c, 0x10, 0xcc, 0x10, 0x46, 0x0f, 0x0b, 0x0f, 0x47, 0x0e, + 0xfa, 0x0a, 0xf3, 0x05, 0x9d, 0xfd, 0x91, 0xf6, 0xa6, 0xf4, 0x75, 0xf5, + 0xd5, 0xf8, 0x58, 0xfc, 0x56, 0x00, 0xb9, 0x03, 0x8e, 0x08, 0xdf, 0x0c, + 0x90, 0x11, 0x50, 0x16, 0xe2, 0x1a, 0xd6, 0x1d, 0xe6, 0x1f, 0xff, 0x20, + 0x9b, 0x21, 0x99, 0x20, 0xb0, 0x1e, 0x24, 0x1b, 0x29, 0x18, 0xad, 0x14, + 0x8e, 0x0f, 0x66, 0x0a, 0x91, 0x04, 0xb8, 0xff, 0x0a, 0xfd, 0x49, 0xfc, + 0xfa, 0xfa, 0x59, 0xfb, 0x60, 0xfc, 0x14, 0xfe, 0x20, 0x02, 0x5f, 0x06, + 0x58, 0x09, 0x78, 0x0a, 0x02, 0x0a, 0x69, 0x09, 0x2e, 0x09, 0x00, 0x09, + 0xba, 0x08, 0xf2, 0x07, 0xbf, 0x06, 0xf1, 0x04, 0x77, 0x02, 0x1f, 0x00, + 0x08, 0xfe, 0x0f, 0xfb, 0x73, 0xf8, 0x3b, 0xf5, 0xda, 0xf2, 0xc5, 0xef, + 0x4a, 0xf1, 0x3b, 0xf2, 0x80, 0xf4, 0xcd, 0xf2, 0x28, 0xf0, 0xaa, 0xeb, + 0x15, 0xe8, 0x56, 0xe5, 0xa2, 0xe2, 0x57, 0xdd, 0xcf, 0xd4, 0xcb, 0xcb, + 0xc6, 0xc7, 0xf5, 0xcc, 0x6d, 0xda, 0x80, 0xed, 0x9e, 0xfe, 0x27, 0x0e, + 0x0f, 0x19, 0xf2, 0x22, 0x51, 0x26, 0xc5, 0x25, 0xc1, 0x1d, 0x36, 0x13, + 0xa8, 0x08, 0xed, 0xfd, 0x92, 0xf4, 0x1a, 0xed, 0xf1, 0xe7, 0x25, 0xe5, + 0x96, 0xe5, 0x56, 0xe7, 0x53, 0xea, 0x75, 0xed, 0x6e, 0xf0, 0x73, 0xf4, + 0x8b, 0xf7, 0x12, 0xf9, 0x6e, 0xfc, 0x7e, 0xff, 0x0e, 0x04, 0x5c, 0x0a, + 0x9f, 0x0e, 0x5b, 0x11, 0x26, 0x13, 0xc9, 0x13, 0x73, 0x12, 0x59, 0x10, + 0x9c, 0x0a, 0x6e, 0x04, 0x4f, 0xfe, 0x98, 0xf8, 0xdb, 0xf4, 0xb5, 0xf3, + 0xa3, 0xf3, 0x71, 0xf7, 0xa6, 0xfc, 0xe0, 0x01, 0x8a, 0x08, 0xd3, 0x0e, + 0xda, 0x13, 0x5b, 0x18, 0x1b, 0x1b, 0x25, 0x1d, 0x2c, 0x1f, 0x2d, 0x20, + 0xb3, 0x1f, 0xb3, 0x1d, 0xd0, 0x1a, 0x84, 0x17, 0xd6, 0x13, 0x8b, 0x0e, + 0x3b, 0x09, 0x75, 0x04, 0x55, 0x00, 0x6d, 0xfd, 0x84, 0xfb, 0x21, 0xfb, + 0xa1, 0xfc, 0x61, 0xff, 0xab, 0x01, 0xed, 0x03, 0xbe, 0x05, 0x04, 0x08, + 0x36, 0x0a, 0x01, 0x0c, 0xeb, 0x0c, 0xb5, 0x0c, 0xe3, 0x09, 0x26, 0x07, + 0x62, 0x04, 0xaf, 0x02, 0x2d, 0x02, 0xd1, 0x01, 0xcf, 0x00, 0x2e, 0x00, + 0x4e, 0xff, 0x9b, 0xff, 0xd3, 0xff, 0x72, 0xfe, 0xfb, 0xfb, 0x5b, 0xf7, + 0xd9, 0xf1, 0x98, 0xed, 0xff, 0xec, 0x7d, 0xee, 0x7f, 0xf1, 0xbf, 0xf2, + 0x44, 0xf1, 0xd1, 0xeb, 0xf9, 0xe8, 0x16, 0xe2, 0x52, 0xda, 0x4b, 0xd1, + 0x74, 0xc7, 0xd3, 0xc2, 0x30, 0xc6, 0x7b, 0xd2, 0x39, 0xe6, 0x66, 0x00, + 0x28, 0x17, 0x7f, 0x27, 0x46, 0x30, 0x18, 0x31, 0xbb, 0x2c, 0x96, 0x25, + 0x02, 0x1b, 0xe8, 0x0d, 0x6d, 0xfd, 0xbd, 0xec, 0xa8, 0xdf, 0x72, 0xd9, + 0x02, 0xd9, 0x9c, 0xdb, 0x8c, 0xe0, 0xc4, 0xe6, 0x13, 0xed, 0x2c, 0xf3, + 0xed, 0xf8, 0xc4, 0xfd, 0x29, 0x02, 0x71, 0x06, 0xc6, 0x08, 0xd0, 0x0a, + 0xda, 0x0c, 0xff, 0x0e, 0x37, 0x11, 0x3b, 0x13, 0x16, 0x13, 0xb7, 0x11, + 0x94, 0x0e, 0x7c, 0x09, 0xd7, 0x03, 0xde, 0xfc, 0x13, 0xf7, 0xb0, 0xf2, + 0xf6, 0xf0, 0xdd, 0xf0, 0xde, 0xf4, 0x58, 0xfa, 0x68, 0x00, 0x92, 0x07, + 0x84, 0x0e, 0x01, 0x15, 0x2a, 0x1c, 0xcb, 0x20, 0x92, 0x22, 0xf5, 0x21, + 0x93, 0x1f, 0x85, 0x1c, 0x79, 0x19, 0x80, 0x15, 0x72, 0x10, 0xd4, 0x0b, + 0xdd, 0x06, 0xe9, 0x03, 0xea, 0x01, 0x54, 0x00, 0xea, 0xfe, 0xe4, 0xfc, + 0x0c, 0xfc, 0xe8, 0xfc, 0xe5, 0xff, 0x07, 0x03, 0xe8, 0x05, 0x9e, 0x07, + 0x50, 0x09, 0x31, 0x0c, 0x79, 0x0e, 0x6c, 0x0f, 0x5f, 0x0e, 0xe2, 0x0b, + 0x49, 0x0a, 0x06, 0x08, 0xb8, 0x05, 0x45, 0x03, 0x90, 0x00, 0xaa, 0xfe, + 0x3f, 0xfe, 0x6f, 0xfe, 0x58, 0xfe, 0x59, 0xfd, 0x81, 0xfc, 0xe0, 0xfa, + 0x8a, 0xf9, 0x53, 0xf8, 0x38, 0xf6, 0x3c, 0xf2, 0x2d, 0xf0, 0xb6, 0xee, + 0x02, 0xf0, 0x03, 0xf2, 0x97, 0xf3, 0x12, 0xf1, 0xd6, 0xec, 0x9f, 0xe6, + 0x4e, 0xdf, 0xc5, 0xd5, 0xb2, 0xca, 0x47, 0xc2, 0xa4, 0xbf, 0x15, 0xca, + 0x7d, 0xdb, 0xa0, 0xf6, 0xfd, 0x10, 0x70, 0x25, 0xfe, 0x2f, 0xa9, 0x32, + 0x62, 0x2f, 0xdb, 0x28, 0x93, 0x1e, 0xed, 0x10, 0x69, 0x01, 0x19, 0xf0, + 0x92, 0xdf, 0xec, 0xd5, 0x61, 0xd3, 0xc0, 0xd6, 0xf4, 0xde, 0xf1, 0xe6, + 0xa8, 0xf0, 0xbc, 0xf9, 0x7a, 0x00, 0x6e, 0x03, 0xda, 0x05, 0x74, 0x07, + 0x65, 0x08, 0xf3, 0x08, 0x2f, 0x08, 0xfa, 0x09, 0x67, 0x0b, 0x34, 0x0d, + 0x43, 0x0e, 0x6a, 0x0e, 0x45, 0x0e, 0xc4, 0x0d, 0x2c, 0x08, 0x1e, 0x01, + 0xa6, 0xfa, 0x63, 0xf5, 0x1b, 0xf3, 0xe8, 0xf2, 0xb4, 0xf3, 0xa9, 0xf7, + 0xd8, 0xfd, 0x52, 0x05, 0xa5, 0x0d, 0xb1, 0x15, 0xd8, 0x1b, 0x30, 0x20, + 0x4c, 0x22, 0xff, 0x20, 0xbe, 0x1e, 0x02, 0x1b, 0x20, 0x16, 0xdc, 0x11, + 0x61, 0x0d, 0xdc, 0x08, 0xcc, 0x05, 0x6d, 0x02, 0x4d, 0x00, 0x07, 0xff, + 0xbb, 0xfe, 0x6b, 0xfe, 0xdd, 0xfe, 0xd4, 0xff, 0x36, 0x01, 0x54, 0x03, + 0x42, 0x05, 0xd4, 0x06, 0xce, 0x08, 0x00, 0x0b, 0xc6, 0x0c, 0x42, 0x0e, + 0x91, 0x0e, 0x32, 0x0c, 0xc9, 0x09, 0x19, 0x07, 0x6b, 0x05, 0x0a, 0x05, + 0x39, 0x05, 0x5d, 0x03, 0x6b, 0x01, 0x07, 0xff, 0xbb, 0xfd, 0xeb, 0xfd, + 0x66, 0xfe, 0x08, 0xfe, 0xa4, 0xfc, 0x03, 0xfb, 0x20, 0xf8, 0xd3, 0xf5, + 0x6c, 0xf3, 0x6f, 0xf0, 0xcf, 0xee, 0x27, 0xee, 0x98, 0xee, 0x78, 0xf0, + 0x81, 0xf1, 0x7e, 0xf1, 0xfa, 0xef, 0x74, 0xec, 0x63, 0xe6, 0x07, 0xde, + 0x56, 0xd3, 0xb6, 0xc9, 0x58, 0xc4, 0x55, 0xc7, 0x92, 0xd4, 0x73, 0xeb, + 0x1b, 0x05, 0x5b, 0x1a, 0x66, 0x29, 0x9c, 0x30, 0x8a, 0x32, 0x49, 0x2d, + 0x4f, 0x26, 0x60, 0x18, 0x9d, 0x06, 0xa3, 0xf3, 0xc8, 0xe0, 0x75, 0xd4, + 0x9e, 0xd0, 0x7f, 0xd3, 0x6f, 0xda, 0xf7, 0xe4, 0x40, 0xef, 0x3a, 0xf9, + 0x7b, 0x02, 0x1f, 0x09, 0x0b, 0x0c, 0x9e, 0x0d, 0x0e, 0x0d, 0xb9, 0x0a, + 0xc8, 0x08, 0x7e, 0x06, 0x02, 0x04, 0x25, 0x05, 0xdc, 0x06, 0xdf, 0x09, + 0xf1, 0x0c, 0x8d, 0x0d, 0xdc, 0x0a, 0xca, 0x06, 0x42, 0x01, 0x5a, 0xfc, + 0xb6, 0xf9, 0x99, 0xf6, 0x54, 0xf5, 0x2c, 0xf7, 0x61, 0xfb, 0x54, 0x02, + 0x26, 0x0b, 0x1c, 0x13, 0x63, 0x1a, 0xb5, 0x20, 0x48, 0x22, 0xcf, 0x21, + 0xe1, 0x1f, 0x4b, 0x1a, 0xe2, 0x14, 0xde, 0x0e, 0x7f, 0x08, 0xca, 0x03, + 0xaf, 0x00, 0x8a, 0xfd, 0xe7, 0xfb, 0x83, 0xfc, 0x1e, 0xfd, 0x8e, 0xff, + 0xc6, 0x02, 0x4e, 0x04, 0x5b, 0x06, 0x26, 0x08, 0x39, 0x08, 0x62, 0x08, + 0xc6, 0x08, 0x0f, 0x09, 0x62, 0x0a, 0x51, 0x0b, 0x20, 0x0b, 0xf0, 0x0a, + 0xbc, 0x09, 0x3b, 0x08, 0xca, 0x06, 0x42, 0x05, 0x04, 0x03, 0x35, 0x01, + 0x4f, 0xff, 0x3c, 0xfe, 0xde, 0xfd, 0x1f, 0xfe, 0x58, 0xfe, 0xf6, 0xfe, + 0x10, 0xff, 0xc4, 0xfe, 0x68, 0xfe, 0x76, 0xfd, 0x4d, 0xfb, 0x45, 0xf7, + 0x03, 0xf2, 0x73, 0xec, 0xd0, 0xe9, 0xd2, 0xea, 0xbb, 0xee, 0x80, 0xf2, + 0xdf, 0xf3, 0x81, 0xf1, 0x3d, 0xed, 0x51, 0xe7, 0x2a, 0xe1, 0x1c, 0xdc, + 0x12, 0xd4, 0xb8, 0xcc, 0x06, 0xc8, 0x5b, 0xca, 0xc1, 0xd8, 0x52, 0xf1, + 0xf1, 0x0b, 0x88, 0x21, 0xfd, 0x2d, 0x55, 0x30, 0xb3, 0x2e, 0x8e, 0x2b, + 0xba, 0x24, 0xf6, 0x18, 0xda, 0x07, 0x34, 0xf3, 0x4c, 0xe0, 0xec, 0xd4, + 0xa9, 0xcf, 0xfe, 0xd2, 0x3d, 0xdb, 0x22, 0xe5, 0xaa, 0xf0, 0xa1, 0xfb, + 0x07, 0x04, 0xa9, 0x0a, 0xa5, 0x0e, 0x61, 0x0e, 0x9a, 0x0c, 0x9b, 0x0a, + 0x56, 0x07, 0xe1, 0x04, 0x53, 0x04, 0xf4, 0x03, 0x8c, 0x06, 0x29, 0x0b, + 0x33, 0x0f, 0x2a, 0x11, 0x5b, 0x10, 0x1c, 0x0b, 0xa8, 0x04, 0xf3, 0xfe, + 0xe6, 0xf9, 0x0b, 0xf7, 0x53, 0xf6, 0xd9, 0xf6, 0x59, 0xfa, 0x45, 0x01, + 0x82, 0x09, 0x60, 0x12, 0x3b, 0x1a, 0x81, 0x1f, 0x97, 0x21, 0xbd, 0x21, + 0xe8, 0x1e, 0x9a, 0x19, 0x37, 0x13, 0x42, 0x0c, 0xee, 0x05, 0x05, 0x01, + 0x72, 0xfd, 0xc3, 0xfa, 0x3a, 0xfa, 0xfb, 0xfa, 0x24, 0xfd, 0x08, 0x00, + 0xf0, 0x02, 0x73, 0x04, 0xbb, 0x05, 0x58, 0x06, 0x79, 0x07, 0xe7, 0x08, + 0x9b, 0x09, 0x9c, 0x09, 0x7d, 0x0a, 0xa6, 0x0a, 0x3a, 0x0b, 0x09, 0x0b, + 0x94, 0x09, 0xa8, 0x07, 0x8a, 0x05, 0x7a, 0x03, 0xf8, 0x01, 0x1d, 0x00, + 0x6a, 0xfe, 0xd8, 0xfc, 0xf6, 0xfb, 0x80, 0xfc, 0x8c, 0xfd, 0x21, 0xfe, + 0x40, 0xfe, 0x7b, 0xfd, 0x1b, 0xfc, 0xb6, 0xfa, 0x2a, 0xfa, 0x8a, 0xf8, + 0x4c, 0xf6, 0xa3, 0xf3, 0x45, 0xef, 0xf4, 0xec, 0x3a, 0xee, 0xeb, 0xf0, + 0x28, 0xf4, 0x9c, 0xf4, 0x56, 0xf1, 0xbb, 0xeb, 0x1e, 0xe6, 0x94, 0xdf, + 0x4a, 0xd9, 0x62, 0xd2, 0xe9, 0xcd, 0xcf, 0xce, 0x36, 0xd8, 0x49, 0xe9, + 0xad, 0xfd, 0x19, 0x11, 0x2d, 0x1f, 0x47, 0x28, 0xdf, 0x2b, 0x83, 0x2c, + 0x98, 0x27, 0xe1, 0x1e, 0x7e, 0x10, 0xd8, 0xff, 0xba, 0xee, 0x3e, 0xe1, + 0x1f, 0xd9, 0x3b, 0xd7, 0xe5, 0xd9, 0xce, 0xdf, 0x17, 0xe8, 0xae, 0xf1, + 0x2f, 0xfb, 0x12, 0x04, 0xf0, 0x09, 0x26, 0x0d, 0xe3, 0x0d, 0xfe, 0x0c, + 0x19, 0x0b, 0xc3, 0x08, 0x28, 0x07, 0x5e, 0x06, 0x26, 0x08, 0xb8, 0x0a, + 0xb1, 0x0d, 0x4d, 0x0f, 0xec, 0x0e, 0xd6, 0x0c, 0x0e, 0x09, 0x35, 0x04, + 0x11, 0xff, 0xc0, 0xfa, 0x91, 0xf7, 0xe4, 0xf6, 0xd6, 0xf8, 0x14, 0xfd, + 0x8d, 0x04, 0xf7, 0x0c, 0x71, 0x14, 0x3f, 0x1a, 0x26, 0x1e, 0xbc, 0x1e, + 0x81, 0x1d, 0xf5, 0x19, 0x07, 0x14, 0x33, 0x0e, 0xd7, 0x08, 0xc0, 0x03, + 0xd6, 0xff, 0x14, 0xfd, 0x07, 0xfb, 0x4f, 0xfb, 0x1d, 0xfd, 0xc1, 0xfe, + 0x13, 0x01, 0xe2, 0x02, 0xa4, 0x03, 0xdc, 0x04, 0xae, 0x06, 0xba, 0x07, + 0x5a, 0x08, 0xb3, 0x08, 0x77, 0x07, 0x45, 0x08, 0x25, 0x0a, 0x2f, 0x0b, + 0xae, 0x0b, 0x46, 0x09, 0x4e, 0x05, 0x5a, 0x02, 0x0e, 0x01, 0xb0, 0x00, + 0x96, 0x00, 0x59, 0xff, 0xad, 0xfd, 0xc7, 0xfc, 0x61, 0xfc, 0xa2, 0xfd, + 0x5b, 0xfe, 0x36, 0xfe, 0x1e, 0xfe, 0x6e, 0xfc, 0x20, 0xfb, 0x61, 0xfa, + 0x5a, 0xf8, 0xaf, 0xf6, 0x60, 0xf4, 0x1a, 0xf2, 0x70, 0xf0, 0x61, 0xf1, + 0x30, 0xf3, 0xc9, 0xf4, 0xb9, 0xf5, 0x27, 0xf3, 0x78, 0xee, 0xc0, 0xe8, + 0x3d, 0xe1, 0x16, 0xda, 0x0a, 0xd3, 0xeb, 0xce, 0x25, 0xcf, 0x54, 0xd6, + 0x51, 0xe3, 0x21, 0xf5, 0xfe, 0x07, 0xe3, 0x18, 0xb9, 0x25, 0x06, 0x2d, + 0xa5, 0x2e, 0x36, 0x2a, 0x33, 0x21, 0x3b, 0x13, 0x8e, 0x03, 0x1c, 0xf4, + 0x50, 0xe6, 0x54, 0xdc, 0x19, 0xd8, 0x6e, 0xd8, 0xdf, 0xdd, 0x01, 0xe7, + 0x1e, 0xf0, 0x68, 0xf9, 0x99, 0x02, 0x51, 0x08, 0xf1, 0x0b, 0x4e, 0x0d, + 0x00, 0x0c, 0x3b, 0x0a, 0x2e, 0x09, 0xb4, 0x07, 0xff, 0x06, 0xb4, 0x07, + 0x43, 0x09, 0x31, 0x0c, 0xb0, 0x0f, 0xcd, 0x10, 0xc2, 0x0f, 0xc8, 0x0b, + 0xce, 0x05, 0xa5, 0xff, 0xfe, 0xfa, 0xba, 0xf7, 0x00, 0xf7, 0x39, 0xf8, + 0xb2, 0xfb, 0x86, 0x01, 0xf9, 0x08, 0xf3, 0x10, 0x2e, 0x18, 0x80, 0x1d, + 0xe4, 0x1f, 0x48, 0x1f, 0x00, 0x1c, 0x9b, 0x16, 0x62, 0x10, 0xff, 0x09, + 0x0a, 0x04, 0x75, 0xff, 0xc2, 0xfb, 0x20, 0xfa, 0x53, 0xfa, 0xb0, 0xfb, + 0x91, 0xfd, 0xe8, 0xff, 0x95, 0x01, 0xb1, 0x02, 0x25, 0x04, 0x9a, 0x05, + 0xdb, 0x06, 0xd9, 0x07, 0x62, 0x08, 0x47, 0x08, 0x16, 0x09, 0xfa, 0x09, + 0xe6, 0x0a, 0xb1, 0x0a, 0xc6, 0x09, 0xb0, 0x07, 0x4c, 0x05, 0x30, 0x03, + 0xc4, 0x00, 0x76, 0xfe, 0x03, 0xfd, 0xde, 0xfb, 0xd8, 0xfb, 0x46, 0xfc, + 0xba, 0xfc, 0xe7, 0xfd, 0x32, 0xfe, 0x1c, 0xfe, 0xdb, 0xfd, 0x5d, 0xfd, + 0x69, 0xfc, 0xc2, 0xfb, 0xc9, 0xf9, 0x63, 0xf7, 0xda, 0xf4, 0x43, 0xf3, + 0x6c, 0xf2, 0x86, 0xf3, 0x32, 0xf4, 0x14, 0xf3, 0x9a, 0xf1, 0x7f, 0xec, + 0x2a, 0xe9, 0x9a, 0xe5, 0xd0, 0xe1, 0x47, 0xdd, 0x9d, 0xd7, 0xb5, 0xd2, + 0x57, 0xd1, 0x98, 0xd7, 0x22, 0xe4, 0x61, 0xf7, 0x0c, 0x0b, 0x33, 0x1b, + 0xb5, 0x25, 0x1c, 0x29, 0x6c, 0x29, 0x59, 0x25, 0x4f, 0x1e, 0x9b, 0x12, + 0x1a, 0x03, 0x4b, 0xf3, 0xc7, 0xe4, 0xd7, 0xdb, 0x84, 0xd8, 0x43, 0xdb, + 0xfb, 0xe1, 0x70, 0xeb, 0x65, 0xf4, 0x28, 0xfc, 0x0e, 0x03, 0x16, 0x08, + 0xeb, 0x0a, 0x8c, 0x0c, 0xea, 0x0b, 0x28, 0x0a, 0xa9, 0x08, 0x7b, 0x06, + 0x97, 0x05, 0xac, 0x07, 0x29, 0x0b, 0xd4, 0x0e, 0x04, 0x11, 0xc6, 0x10, + 0x06, 0x0e, 0xfa, 0x09, 0xac, 0x05, 0x64, 0x01, 0xb0, 0xfd, 0xad, 0xf9, + 0xc1, 0xf6, 0x65, 0xf6, 0xd8, 0xf9, 0xdb, 0x00, 0xf0, 0x09, 0xcd, 0x11, + 0xdb, 0x17, 0x5a, 0x1b, 0x55, 0x1d, 0x79, 0x1d, 0xb1, 0x1b, 0x08, 0x17, + 0x68, 0x10, 0x2e, 0x0a, 0xa3, 0x03, 0xd6, 0xfe, 0xec, 0xfb, 0xa0, 0xfa, + 0x42, 0xfa, 0xe3, 0xfb, 0xfe, 0xfd, 0x53, 0x00, 0x5e, 0x02, 0x44, 0x03, + 0x9a, 0x03, 0xf7, 0x03, 0x3e, 0x04, 0xc8, 0x04, 0xf9, 0x04, 0xca, 0x04, + 0x77, 0x05, 0x68, 0x06, 0xda, 0x07, 0xcc, 0x09, 0xa2, 0x0a, 0x3b, 0x0a, + 0x5c, 0x08, 0x16, 0x06, 0x49, 0x03, 0xbc, 0x00, 0x7d, 0xfe, 0x61, 0xfd, + 0x5f, 0xfc, 0x38, 0xfc, 0x61, 0xfc, 0x78, 0xfc, 0xaf, 0xfc, 0x58, 0xfd, + 0x5e, 0xfe, 0x9e, 0xfe, 0x6a, 0xfe, 0x6e, 0xfd, 0xc1, 0xfb, 0x5c, 0xfa, + 0x9a, 0xf8, 0xfe, 0xf6, 0x90, 0xf4, 0x90, 0xf2, 0xa9, 0xf1, 0xc6, 0xf1, + 0x68, 0xf2, 0x41, 0xf2, 0xb5, 0xef, 0x13, 0xec, 0xeb, 0xe6, 0xd0, 0xe1, + 0xa2, 0xdc, 0x97, 0xd7, 0x20, 0xd3, 0x6e, 0xd1, 0x5c, 0xd6, 0xee, 0xe2, + 0xac, 0xf5, 0x26, 0x09, 0xf6, 0x18, 0x68, 0x23, 0x4b, 0x28, 0x3d, 0x2a, + 0xcb, 0x28, 0x7c, 0x22, 0x53, 0x16, 0x09, 0x06, 0xa7, 0xf4, 0x75, 0xe6, + 0x3a, 0xde, 0xa7, 0xda, 0xe2, 0xdb, 0xfe, 0xdf, 0x57, 0xe7, 0x9c, 0xf0, + 0x9a, 0xfa, 0x72, 0x03, 0x67, 0x0a, 0x4f, 0x0e, 0xa5, 0x0f, 0x38, 0x0e, + 0x6f, 0x0b, 0x44, 0x08, 0xcf, 0x06, 0x9e, 0x06, 0x64, 0x08, 0x03, 0x0b, + 0x5d, 0x0e, 0x6f, 0x0e, 0x4c, 0x0e, 0x1c, 0x0d, 0x36, 0x0a, 0x5e, 0x07, + 0xf7, 0x02, 0x2b, 0xfd, 0xf1, 0xf8, 0x42, 0xf7, 0xa0, 0xf7, 0x6c, 0xfb, + 0x6f, 0x01, 0xb3, 0x07, 0xbd, 0x0e, 0xfa, 0x13, 0x37, 0x17, 0xa7, 0x19, + 0x90, 0x1a, 0x9b, 0x19, 0xc0, 0x16, 0x17, 0x11, 0x8e, 0x0a, 0xc3, 0x04, + 0x02, 0x00, 0xa9, 0xfd, 0xd9, 0xfc, 0x3c, 0xfc, 0x27, 0xfc, 0xbe, 0xfc, + 0x4d, 0xfd, 0x50, 0xff, 0xc7, 0x01, 0x27, 0x03, 0xdb, 0x03, 0x4e, 0x04, + 0x47, 0x03, 0x94, 0x03, 0x84, 0x04, 0x28, 0x05, 0x5d, 0x06, 0xb4, 0x06, + 0x86, 0x06, 0x99, 0x06, 0x9e, 0x06, 0x07, 0x06, 0x68, 0x06, 0x52, 0x06, + 0xf9, 0x04, 0x6b, 0x02, 0xed, 0xff, 0xa7, 0xfd, 0x62, 0xfc, 0x1a, 0xfc, + 0x1b, 0xfc, 0x36, 0xfc, 0xe8, 0xfc, 0xfd, 0xfc, 0xae, 0xfc, 0x59, 0xfd, + 0xee, 0xfd, 0x4a, 0xfe, 0xbb, 0xfe, 0x72, 0xfd, 0xa3, 0xfa, 0x50, 0xf7, + 0x84, 0xf4, 0x45, 0xf1, 0xc1, 0xf1, 0xb1, 0xf1, 0x93, 0xf1, 0x91, 0xee, + 0x28, 0xec, 0x5b, 0xe8, 0x21, 0xe4, 0x75, 0xe1, 0x23, 0xdb, 0x3c, 0xd6, + 0x00, 0xd3, 0x4c, 0xd5, 0x1d, 0xdc, 0xe0, 0xeb, 0x97, 0xfd, 0x92, 0x0f, + 0x29, 0x1e, 0x05, 0x27, 0xf5, 0x2a, 0x06, 0x2c, 0x6f, 0x28, 0xd3, 0x1f, + 0xbd, 0x12, 0x6d, 0x01, 0x1d, 0xf0, 0xa5, 0xe2, 0x14, 0xda, 0x1b, 0xd8, + 0xc0, 0xdb, 0x89, 0xe2, 0xcd, 0xeb, 0x63, 0xf5, 0x3d, 0xfd, 0x4f, 0x04, + 0x66, 0x0a, 0x18, 0x0e, 0xb9, 0x0f, 0xb2, 0x0e, 0xc0, 0x0a, 0xf0, 0x07, + 0x81, 0x07, 0x53, 0x08, 0xf5, 0x0a, 0xed, 0x0d, 0x8d, 0x0e, 0x8a, 0x0e, + 0xc1, 0x0d, 0x68, 0x0b, 0x55, 0x08, 0xaa, 0x04, 0xbf, 0xff, 0xda, 0xfa, + 0x3b, 0xf7, 0xa8, 0xf5, 0x06, 0xf7, 0x91, 0xfb, 0xf5, 0x01, 0xeb, 0x08, + 0xb5, 0x0f, 0x69, 0x15, 0x8e, 0x19, 0x6d, 0x1b, 0x4d, 0x1a, 0x9f, 0x16, + 0x27, 0x12, 0xa3, 0x0d, 0xca, 0x09, 0x04, 0x05, 0xd4, 0xff, 0xbc, 0xfb, + 0x80, 0xf9, 0x6b, 0xfa, 0x0b, 0xfc, 0xd4, 0xfd, 0xe1, 0xfe, 0x03, 0xff, + 0x89, 0xff, 0x2d, 0x00, 0x51, 0x01, 0x77, 0x02, 0xc4, 0x02, 0xd9, 0x02, + 0x13, 0x03, 0xb7, 0x03, 0xe4, 0x05, 0x10, 0x08, 0x60, 0x09, 0xc3, 0x09, + 0xcc, 0x08, 0xf4, 0x07, 0x85, 0x06, 0x6c, 0x05, 0xfd, 0x02, 0xe9, 0x00, + 0x67, 0xff, 0xa8, 0xfe, 0xd7, 0xfe, 0x51, 0xff, 0x99, 0xff, 0x44, 0xff, + 0x36, 0xff, 0x14, 0xff, 0x3a, 0xff, 0xb5, 0xfe, 0x28, 0xfe, 0x14, 0xfd, + 0x9a, 0xfc, 0x4f, 0xfc, 0xe0, 0xfb, 0xca, 0xf9, 0xe1, 0xf7, 0x9c, 0xf5, + 0x0b, 0xf4, 0xdb, 0xf3, 0x8c, 0xf3, 0x3e, 0xf2, 0xdb, 0xef, 0x1d, 0xec, + 0x74, 0xe8, 0xf9, 0xe4, 0x76, 0xe1, 0xdd, 0xdc, 0xd5, 0xd7, 0xe9, 0xd4, + 0x51, 0xd6, 0x78, 0xde, 0x10, 0xee, 0xc2, 0xff, 0xd7, 0x10, 0x77, 0x1d, + 0x9a, 0x24, 0xd8, 0x28, 0x62, 0x2a, 0x6d, 0x27, 0xd1, 0x1e, 0xfd, 0x11, + 0x98, 0x01, 0x18, 0xf0, 0x79, 0xe3, 0x8e, 0xdc, 0x79, 0xda, 0xcc, 0xdc, + 0xaf, 0xe2, 0xf3, 0xe8, 0xad, 0xf1, 0xcd, 0xfb, 0x0f, 0x04, 0x9f, 0x0a, + 0x89, 0x0e, 0x22, 0x0e, 0x38, 0x0b, 0x5a, 0x09, 0x4a, 0x07, 0x25, 0x07, + 0x5e, 0x08, 0x8d, 0x09, 0x85, 0x0a, 0x85, 0x0c, 0xda, 0x0d, 0xb2, 0x0d, + 0xca, 0x0c, 0x52, 0x0a, 0x6f, 0x06, 0xfe, 0x01, 0x70, 0xfc, 0x7c, 0xf7, + 0xb9, 0xf5, 0xa0, 0xf6, 0xea, 0xf8, 0xb1, 0xfe, 0x8d, 0x05, 0x70, 0x0c, + 0xc0, 0x12, 0x7c, 0x16, 0x76, 0x18, 0x76, 0x19, 0x83, 0x18, 0xd8, 0x14, + 0x8a, 0x0f, 0xb5, 0x09, 0x3f, 0x04, 0x52, 0x00, 0x59, 0xfd, 0x2f, 0xfb, + 0x25, 0xfa, 0x33, 0xfa, 0x02, 0xfb, 0x30, 0xfd, 0xbc, 0xff, 0x7d, 0x01, + 0x63, 0x02, 0x27, 0x02, 0x69, 0x01, 0x4d, 0x02, 0x62, 0x03, 0x5e, 0x03, + 0x06, 0x04, 0x25, 0x04, 0xfb, 0x04, 0x6b, 0x07, 0x1f, 0x0a, 0xe7, 0x0b, + 0x98, 0x0c, 0xfe, 0x0a, 0xc8, 0x07, 0x8e, 0x05, 0x65, 0x04, 0x82, 0x03, + 0xf1, 0x02, 0x28, 0x01, 0xd8, 0xfe, 0x81, 0xfd, 0xf4, 0xfc, 0x11, 0xfe, + 0x8a, 0xff, 0x86, 0x00, 0xd8, 0x00, 0xcf, 0x00, 0xdd, 0x00, 0xc8, 0x00, + 0xb0, 0x00, 0xea, 0xfe, 0x96, 0xfc, 0x95, 0xf8, 0x52, 0xf5, 0x15, 0xf2, + 0xd3, 0xf0, 0xae, 0xf0, 0x64, 0xf1, 0x1e, 0xf0, 0x60, 0xee, 0x86, 0xeb, + 0x2b, 0xe8, 0xd7, 0xe6, 0xe8, 0xe2, 0xf5, 0xdd, 0xdd, 0xd8, 0xd6, 0xd4, + 0x3a, 0xd6, 0x96, 0xdf, 0x94, 0xef, 0xcb, 0x02, 0x5b, 0x14, 0xe4, 0x20, + 0x95, 0x27, 0x16, 0x2a, 0x44, 0x29, 0x6b, 0x26, 0x22, 0x1e, 0xca, 0x0f, + 0xab, 0xfe, 0x2e, 0xed, 0xc7, 0xde, 0xe2, 0xd6, 0x6c, 0xd6, 0x5b, 0xdb, + 0xc3, 0xe2, 0x2c, 0xea, 0x04, 0xf1, 0x8a, 0xf9, 0x39, 0x02, 0x77, 0x09, + 0xb2, 0x0d, 0x28, 0x0e, 0x3e, 0x0c, 0x3f, 0x09, 0xab, 0x06, 0xbe, 0x05, + 0x2e, 0x07, 0xd7, 0x09, 0x7b, 0x0c, 0x5b, 0x0e, 0xf0, 0x0e, 0xdd, 0x0d, + 0x0f, 0x0c, 0x59, 0x09, 0x4e, 0x05, 0x96, 0x01, 0x5a, 0xfd, 0xaa, 0xf7, + 0x02, 0xf4, 0x1c, 0xf4, 0xc5, 0xf7, 0xd8, 0xfe, 0x2b, 0x06, 0x3c, 0x0c, + 0x1b, 0x11, 0x6d, 0x16, 0x7d, 0x18, 0xdf, 0x18, 0xa3, 0x17, 0xf8, 0x14, + 0x0c, 0x11, 0x5c, 0x0c, 0x42, 0x06, 0xd4, 0x00, 0x04, 0xfd, 0xe3, 0xfa, + 0x44, 0xfa, 0xa5, 0xfa, 0xbf, 0xfb, 0x5a, 0xfc, 0xcb, 0xfc, 0xc9, 0xfd, + 0x6e, 0xff, 0xdc, 0x00, 0xb5, 0x02, 0x45, 0x03, 0xf9, 0x03, 0xb8, 0x04, + 0xfc, 0x05, 0xf0, 0x06, 0xac, 0x09, 0x2c, 0x0c, 0x37, 0x0d, 0x81, 0x0d, + 0x28, 0x0c, 0x61, 0x0a, 0x92, 0x09, 0x61, 0x08, 0xef, 0x06, 0xc0, 0x04, + 0xc6, 0x01, 0xce, 0xff, 0xb9, 0xfe, 0x60, 0xfe, 0xe3, 0xfe, 0x69, 0xff, + 0xc6, 0xff, 0x3d, 0x00, 0x87, 0x00, 0xf2, 0x00, 0xfc, 0x01, 0x30, 0x01, + 0x50, 0x00, 0xd9, 0xfd, 0x03, 0xfc, 0x44, 0xfa, 0x1e, 0xf8, 0xb7, 0xf4, + 0x06, 0xf3, 0xef, 0xf1, 0xe2, 0xf1, 0x63, 0xf1, 0xbd, 0xee, 0x22, 0xec, + 0xdc, 0xe6, 0xa7, 0xe5, 0x5a, 0xe0, 0xba, 0xdc, 0x3b, 0xd8, 0xa1, 0xd3, + 0xa1, 0xd5, 0xf9, 0xdd, 0xca, 0xeb, 0x8f, 0xfd, 0xe6, 0x0c, 0x3b, 0x18, + 0x15, 0x20, 0x83, 0x27, 0xfe, 0x29, 0x71, 0x29, 0x3f, 0x21, 0x8c, 0x11, + 0x6f, 0x01, 0x45, 0xf2, 0x88, 0xe6, 0x83, 0xdf, 0x07, 0xdb, 0xec, 0xd8, + 0xf3, 0xdb, 0x51, 0xe2, 0x83, 0xea, 0x91, 0xf4, 0x02, 0xfd, 0xcb, 0x03, + 0xa2, 0x08, 0xb4, 0x09, 0x8d, 0x0a, 0x3e, 0x09, 0x06, 0x09, 0x92, 0x08, + 0x4f, 0x08, 0x35, 0x09, 0x4d, 0x0b, 0x2a, 0x0d, 0xde, 0x0e, 0xe7, 0x0e, + 0xed, 0x0d, 0x25, 0x0c, 0xcf, 0x09, 0x88, 0x06, 0xd7, 0x01, 0xc2, 0xfc, + 0x13, 0xf9, 0x29, 0xf7, 0x62, 0xf8, 0x69, 0xfb, 0xdc, 0xff, 0x2b, 0x04, + 0x54, 0x09, 0x24, 0x0f, 0xc8, 0x13, 0xfd, 0x16, 0xaf, 0x17, 0x50, 0x15, + 0x10, 0x12, 0x7e, 0x0e, 0x2e, 0x0b, 0xe9, 0x07, 0x3e, 0x05, 0x0c, 0x01, + 0xf3, 0xfd, 0x45, 0xfc, 0x27, 0xfc, 0xfa, 0xfc, 0x6e, 0xfe, 0xc1, 0xfe, + 0x0d, 0xff, 0xda, 0xfe, 0x11, 0xff, 0x0b, 0x00, 0xc1, 0x01, 0x00, 0x04, + 0xab, 0x05, 0xdb, 0x06, 0x26, 0x08, 0xf4, 0x09, 0xcf, 0x0b, 0xde, 0x0d, + 0xc5, 0x0e, 0x87, 0x0e, 0x99, 0x0d, 0x2a, 0x0c, 0x81, 0x0a, 0x87, 0x08, + 0x45, 0x06, 0x1b, 0x04, 0xca, 0x01, 0x40, 0x00, 0x91, 0xff, 0x7f, 0xfe, + 0x4a, 0xfe, 0x1a, 0xfe, 0x01, 0xfe, 0x0c, 0xff, 0x7e, 0xff, 0x3b, 0x00, + 0x40, 0x00, 0xb4, 0xff, 0x7f, 0xff, 0x83, 0xfe, 0xb9, 0xfc, 0xd2, 0xf9, + 0x0a, 0xf6, 0xc6, 0xf2, 0xab, 0xf1, 0xdd, 0xef, 0xde, 0xee, 0xec, 0xec, + 0x3b, 0xe9, 0x7a, 0xe7, 0xdf, 0xe4, 0xb0, 0xe1, 0xd6, 0xde, 0x96, 0xda, + 0x87, 0xd6, 0xdc, 0xd5, 0xa6, 0xdb, 0xe6, 0xe6, 0x98, 0xf7, 0x03, 0x07, + 0x34, 0x11, 0xd7, 0x18, 0x2d, 0x1d, 0xf7, 0x20, 0x79, 0x23, 0xcc, 0x20, + 0x92, 0x16, 0xb6, 0x08, 0xd3, 0xf8, 0x18, 0xed, 0x8e, 0xe6, 0x54, 0xe3, + 0x45, 0xe1, 0x69, 0xe1, 0x23, 0xe3, 0x33, 0xe8, 0xc2, 0xef, 0xe4, 0xf7, + 0x26, 0xfe, 0xde, 0x02, 0x8f, 0x04, 0x14, 0x05, 0x4a, 0x05, 0xe5, 0x04, + 0x4f, 0x05, 0xd3, 0x06, 0x8b, 0x08, 0x07, 0x0b, 0x08, 0x0d, 0x72, 0x0e, + 0x4c, 0x10, 0xce, 0x11, 0xbd, 0x11, 0x2e, 0x11, 0x94, 0x0d, 0x96, 0x08, + 0x5e, 0x03, 0x76, 0xff, 0x3c, 0xfc, 0xed, 0xfa, 0x71, 0xfb, 0xe4, 0xfc, + 0x6f, 0x00, 0x29, 0x04, 0x8d, 0x07, 0x63, 0x0b, 0x26, 0x0f, 0x6b, 0x11, + 0xb2, 0x12, 0x09, 0x12, 0xcb, 0x0f, 0x42, 0x0d, 0xd0, 0x0a, 0xd7, 0x07, + 0x8d, 0x05, 0x67, 0x03, 0xe6, 0x00, 0x9d, 0xff, 0xc3, 0xfe, 0xa1, 0xfe, + 0xa4, 0xff, 0x7b, 0x00, 0xc6, 0x00, 0x29, 0x01, 0xe6, 0x00, 0x59, 0x00, + 0x8c, 0x01, 0xa6, 0x02, 0x3d, 0x04, 0xa1, 0x05, 0x8a, 0x06, 0x67, 0x07, + 0x8d, 0x09, 0x61, 0x0b, 0x59, 0x0d, 0xac, 0x0e, 0x90, 0x0e, 0x9c, 0x0e, + 0x82, 0x0d, 0xbc, 0x0b, 0x15, 0x0a, 0xa3, 0x07, 0x89, 0x05, 0x55, 0x03, + 0x24, 0x01, 0xa3, 0xff, 0x9a, 0xfe, 0xfc, 0xfd, 0x6b, 0xfd, 0x82, 0xfd, + 0xf0, 0xfd, 0xa3, 0xfe, 0x09, 0x00, 0x9c, 0xff, 0x6d, 0xfe, 0xe9, 0xfc, + 0xdf, 0xfb, 0x8c, 0xf8, 0x51, 0xf6, 0x61, 0xf3, 0x0b, 0xf1, 0x8b, 0xf0, + 0x30, 0xee, 0x38, 0xec, 0xd7, 0xe8, 0x9e, 0xe6, 0xfa, 0xe3, 0x58, 0xe1, + 0xfd, 0xde, 0x46, 0xd9, 0x73, 0xd6, 0xe9, 0xd6, 0xee, 0xdc, 0x09, 0xe9, + 0x3e, 0xf6, 0x15, 0x01, 0x4b, 0x09, 0x6b, 0x11, 0x5a, 0x18, 0x61, 0x1e, + 0x40, 0x20, 0xa7, 0x1b, 0x4c, 0x12, 0xef, 0x07, 0xc5, 0xfc, 0x7e, 0xf4, + 0x55, 0xee, 0x7d, 0xe9, 0xd4, 0xe6, 0x56, 0xe6, 0x9f, 0xe7, 0x68, 0xeb, + 0x40, 0xf0, 0xcb, 0xf5, 0xe4, 0xfa, 0xa1, 0xfe, 0x50, 0x00, 0xfe, 0xff, + 0x25, 0x00, 0x67, 0x00, 0x0e, 0x03, 0x75, 0x05, 0x24, 0x08, 0x0c, 0x0a, + 0xa1, 0x0c, 0x19, 0x0f, 0x0f, 0x12, 0x2c, 0x14, 0xc2, 0x14, 0x74, 0x13, + 0x21, 0x10, 0xa6, 0x0b, 0x76, 0x06, 0x36, 0x02, 0xab, 0xff, 0x43, 0xfe, + 0x70, 0xfe, 0x8f, 0xfe, 0x24, 0x00, 0x73, 0x02, 0xcd, 0x05, 0xb2, 0x0a, + 0xe7, 0x0d, 0xc0, 0x0e, 0x61, 0x0e, 0xe6, 0x0c, 0x84, 0x0c, 0x59, 0x0c, + 0x38, 0x0a, 0xbb, 0x07, 0x3c, 0x05, 0x6e, 0x03, 0x39, 0x03, 0x48, 0x03, + 0xc8, 0x02, 0xb8, 0x03, 0x6c, 0x03, 0x9f, 0x03, 0x15, 0x03, 0x3e, 0x02, + 0xbb, 0x01, 0x21, 0x01, 0x98, 0x00, 0x0d, 0x00, 0xf2, 0xff, 0x6c, 0x01, + 0xd6, 0x02, 0x25, 0x05, 0x7c, 0x07, 0xd0, 0x09, 0x5a, 0x0c, 0x15, 0x0e, + 0xb3, 0x0f, 0x7f, 0x10, 0x60, 0x10, 0x42, 0x0f, 0x72, 0x0d, 0xe2, 0x0a, + 0xb3, 0x08, 0xea, 0x05, 0xef, 0x03, 0x94, 0x01, 0x1e, 0x00, 0x21, 0xff, + 0xc4, 0xfe, 0xd0, 0xfe, 0xbb, 0xfe, 0x47, 0xfe, 0x49, 0xfe, 0xac, 0xfd, + 0x54, 0xfd, 0x08, 0xfc, 0x71, 0xfa, 0x2e, 0xf8, 0xe9, 0xf5, 0x34, 0xf4, + 0xce, 0xf2, 0x79, 0xf1, 0x6a, 0xf0, 0xb0, 0xee, 0x63, 0xec, 0x58, 0xeb, + 0x27, 0xe9, 0x42, 0xe7, 0x9d, 0xe3, 0xdc, 0xde, 0x55, 0xda, 0x51, 0xd7, + 0x89, 0xd7, 0xd8, 0xdc, 0x99, 0xe5, 0x96, 0xf1, 0xbe, 0xfb, 0x22, 0x04, + 0xe5, 0x0a, 0x5b, 0x11, 0x21, 0x18, 0xbc, 0x1b, 0x70, 0x19, 0xe3, 0x11, + 0xfb, 0x06, 0x43, 0xfe, 0x95, 0xf7, 0xb2, 0xf3, 0xc6, 0xef, 0xaf, 0xec, + 0x42, 0xeb, 0x54, 0xec, 0xd0, 0xef, 0x2f, 0xf3, 0xa9, 0xf7, 0x63, 0xfb, + 0xeb, 0xfd, 0xb9, 0xfe, 0x79, 0xfe, 0x20, 0xfe, 0xc0, 0xfe, 0xf2, 0xff, + 0x97, 0x01, 0x65, 0x03, 0x85, 0x06, 0xd2, 0x09, 0x2a, 0x0d, 0xc9, 0x0f, + 0xc2, 0x11, 0x8b, 0x13, 0xbe, 0x14, 0xdd, 0x12, 0xfa, 0x0f, 0xdb, 0x0b, + 0xa2, 0x08, 0x0a, 0x07, 0x4c, 0x05, 0xae, 0x03, 0x3c, 0x02, 0x15, 0x02, + 0xaa, 0x03, 0x8b, 0x05, 0x3f, 0x07, 0x03, 0x08, 0xe4, 0x08, 0x26, 0x09, + 0xce, 0x09, 0x6d, 0x09, 0x36, 0x08, 0x87, 0x07, 0x33, 0x06, 0x9d, 0x05, + 0x4d, 0x04, 0x9e, 0x03, 0xf6, 0x02, 0x9a, 0x03, 0x63, 0x04, 0x1a, 0x05, + 0x2d, 0x05, 0x35, 0x05, 0xc2, 0x04, 0x1b, 0x04, 0x9e, 0x03, 0x0a, 0x03, + 0x42, 0x02, 0xe0, 0x01, 0x74, 0x01, 0x53, 0x01, 0x73, 0x02, 0x48, 0x04, + 0x3c, 0x06, 0x73, 0x08, 0xe5, 0x09, 0x4a, 0x0b, 0x9c, 0x0c, 0x70, 0x0d, + 0xcd, 0x0d, 0x8b, 0x0d, 0x90, 0x0c, 0xf6, 0x0a, 0xba, 0x09, 0xfb, 0x07, + 0x62, 0x06, 0x30, 0x05, 0xf9, 0x03, 0xad, 0x02, 0xb3, 0x01, 0x78, 0x00, + 0x90, 0xff, 0xe0, 0xfe, 0xa4, 0xfe, 0x6a, 0xfd, 0x43, 0xfd, 0x76, 0xfb, + 0x7c, 0xf9, 0x2a, 0xf8, 0xb3, 0xf5, 0xf5, 0xf4, 0x81, 0xf3, 0xb9, 0xf2, + 0x2a, 0xf0, 0x5c, 0xee, 0xf5, 0xec, 0x79, 0xeb, 0xcc, 0xea, 0x4f, 0xe8, + 0x0c, 0xe5, 0x4f, 0xe1, 0x44, 0xdd, 0x23, 0xdb, 0x22, 0xdc, 0x8d, 0xdf, + 0x78, 0xe6, 0x03, 0xee, 0x6a, 0xf4, 0x09, 0xfc, 0xb2, 0x02, 0x07, 0x09, + 0xfe, 0x0e, 0xf9, 0x10, 0x22, 0x10, 0xab, 0x0c, 0x66, 0x07, 0xb5, 0x00, + 0x8c, 0xfb, 0x5b, 0xf7, 0xcf, 0xf4, 0x1d, 0xf4, 0x54, 0xf3, 0xfd, 0xf2, + 0xf4, 0xf3, 0x79, 0xf6, 0xbc, 0xf9, 0xb9, 0xfc, 0x45, 0xfe, 0x39, 0xfe, + 0x90, 0xfd, 0xcc, 0xfd, 0x4b, 0xfe, 0x24, 0xfe, 0xc5, 0xfe, 0x5e, 0xff, + 0x54, 0x01, 0xe0, 0x03, 0xf4, 0x06, 0xdc, 0x09, 0xeb, 0x0c, 0x95, 0x0f, + 0xd2, 0x10, 0x76, 0x11, 0xec, 0x10, 0x23, 0x10, 0x63, 0x0e, 0x8c, 0x0c, + 0x24, 0x0a, 0x35, 0x08, 0x44, 0x07, 0x26, 0x06, 0x01, 0x06, 0xd7, 0x05, + 0x55, 0x06, 0x4f, 0x07, 0x15, 0x08, 0x61, 0x08, 0xbe, 0x08, 0x4c, 0x08, + 0xd4, 0x07, 0xa3, 0x06, 0x29, 0x05, 0x18, 0x04, 0xfb, 0x02, 0x41, 0x02, + 0x3f, 0x01, 0x30, 0x01, 0x35, 0x01, 0x0c, 0x02, 0xdd, 0x02, 0x4c, 0x03, + 0x94, 0x04, 0x3b, 0x05, 0x8d, 0x05, 0x62, 0x05, 0x43, 0x04, 0xf7, 0x03, + 0xb7, 0x03, 0xda, 0x03, 0x77, 0x03, 0xa6, 0x03, 0x34, 0x04, 0xe8, 0x04, + 0x4f, 0x06, 0x3d, 0x07, 0xc7, 0x08, 0x14, 0x0a, 0xf2, 0x0a, 0x35, 0x0b, + 0xf6, 0x0a, 0xae, 0x0a, 0x48, 0x0a, 0x50, 0x09, 0xec, 0x07, 0x55, 0x06, + 0x08, 0x05, 0x30, 0x04, 0xdf, 0x03, 0xfa, 0x02, 0x2e, 0x02, 0x38, 0x01, + 0x29, 0x00, 0xb2, 0xff, 0x10, 0xff, 0x7b, 0xfe, 0x93, 0xfd, 0x55, 0xfc, + 0x24, 0xfb, 0x75, 0xf9, 0x0a, 0xf8, 0x73, 0xf6, 0x08, 0xf5, 0x8b, 0xf3, + 0x93, 0xf1, 0xe1, 0xef, 0x4d, 0xee, 0xc0, 0xed, 0x70, 0xed, 0x02, 0xed, + 0xff, 0xeb, 0x30, 0xeb, 0x2b, 0xea, 0xec, 0xe8, 0x9f, 0xe8, 0x3b, 0xe9, + 0x36, 0xeb, 0x22, 0xee, 0xf1, 0xf0, 0x1e, 0xf4, 0x5b, 0xf7, 0xbb, 0xfa, + 0xae, 0xfd, 0x81, 0xff, 0xa4, 0x00, 0x59, 0x00, 0x86, 0xff, 0x84, 0xfd, + 0xcd, 0xfa, 0xa2, 0xf8, 0x35, 0xf7, 0x7c, 0xf7, 0xdc, 0xf7, 0x6a, 0xf8, + 0xc5, 0xf8, 0xe7, 0xf9, 0x4f, 0xfc, 0xb5, 0xfe, 0xd7, 0x00, 0xd8, 0x01, + 0x93, 0x01, 0x2e, 0x01, 0xac, 0x00, 0x76, 0x00, 0x46, 0x00, 0x31, 0x00, + 0x99, 0x00, 0x11, 0x01, 0xdd, 0x01, 0x0b, 0x03, 0x78, 0x04, 0x4a, 0x06, + 0xce, 0x07, 0xcd, 0x08, 0x1c, 0x09, 0xe6, 0x08, 0x3c, 0x08, 0xd4, 0x07, + 0x98, 0x07, 0x4e, 0x07, 0xad, 0x06, 0xf8, 0x05, 0x89, 0x05, 0xa4, 0x05, + 0xf2, 0x05, 0x3d, 0x06, 0x5d, 0x06, 0x72, 0x06, 0xcf, 0x06, 0xbc, 0x06, + 0x85, 0x06, 0x58, 0x06, 0xfa, 0x05, 0x93, 0x05, 0x0b, 0x05, 0x72, 0x04, + 0x00, 0x04, 0xca, 0x03, 0x92, 0x03, 0xdf, 0x03, 0x81, 0x04, 0xf5, 0x04, + 0x87, 0x05, 0xc8, 0x05, 0x1e, 0x06, 0x92, 0x06, 0xbb, 0x06, 0xa2, 0x06, + 0x51, 0x06, 0x5e, 0x06, 0x5c, 0x06, 0x18, 0x06, 0x23, 0x06, 0x3a, 0x06, + 0xac, 0x06, 0x3e, 0x07, 0x7e, 0x07, 0xd4, 0x07, 0x21, 0x08, 0xb9, 0x08, + 0x09, 0x09, 0xef, 0x08, 0x95, 0x08, 0x1d, 0x08, 0xe5, 0x07, 0x63, 0x07, + 0xc9, 0x06, 0x54, 0x06, 0x12, 0x06, 0x1b, 0x06, 0x09, 0x06, 0xbf, 0x05, + 0x7e, 0x05, 0x67, 0x05, 0x57, 0x05, 0xe3, 0x04, 0x30, 0x04, 0x63, 0x03, + 0xb2, 0x02, 0x07, 0x02, 0x08, 0x01, 0xc7, 0xff, 0x9a, 0xfe, 0x5d, 0xfd, + 0x65, 0xfc, 0x4b, 0xfb, 0x34, 0xfa, 0x50, 0xf9, 0x6a, 0xf8, 0x7c, 0xf7, + 0x74, 0xf6, 0x53, 0xf5, 0x47, 0xf4, 0x1f, 0xf3, 0xca, 0xf1, 0x90, 0xf0, + 0x83, 0xef, 0x07, 0xef, 0xf8, 0xee, 0x34, 0xef, 0xac, 0xef, 0x29, 0xf0, + 0xc6, 0xf0, 0xc1, 0xf0, 0xea, 0xef, 0x96, 0xee, 0x6f, 0xed, 0xcb, 0xec, + 0xac, 0xec, 0x8f, 0xec, 0x41, 0xec, 0x75, 0xec, 0xc1, 0xed, 0xad, 0xef, + 0x69, 0xf1, 0x72, 0xf2, 0x55, 0xf3, 0x9c, 0xf4, 0x06, 0xf6, 0xa3, 0xf6, + 0x80, 0xf6, 0x6f, 0xf6, 0x41, 0xf7, 0xac, 0xf8, 0xb3, 0xf9, 0x3e, 0xfa, + 0x0f, 0xfb, 0xd5, 0xfc, 0x4a, 0xff, 0x59, 0x01, 0xa4, 0x02, 0xb7, 0x03, + 0xd7, 0x04, 0xfa, 0x05, 0x6f, 0x06, 0x5c, 0x06, 0x18, 0x06, 0xb1, 0x05, + 0xad, 0x05, 0xd3, 0x05, 0x06, 0x06, 0x9f, 0x06, 0x6c, 0x07, 0x65, 0x08, + 0x39, 0x09, 0xe6, 0x09, 0x6b, 0x0a, 0xab, 0x0a, 0xce, 0x0a, 0xc3, 0x0a, + 0x76, 0x0a, 0x37, 0x0a, 0x15, 0x0a, 0xe7, 0x09, 0xbf, 0x09, 0xa2, 0x09, + 0xe0, 0x09, 0x73, 0x0a, 0xf5, 0x0a, 0x60, 0x0b, 0x9f, 0x0b, 0x54, 0x0c, + 0x2f, 0x0d, 0xb5, 0x0d, 0xc8, 0x0d, 0x7d, 0x0d, 0x8d, 0x0d, 0xba, 0x0d, + 0xc3, 0x0d, 0x92, 0x0d, 0x41, 0x0d, 0x46, 0x0d, 0x62, 0x0d, 0x7c, 0x0d, + 0x60, 0x0d, 0x2e, 0x0d, 0x38, 0x0d, 0x2d, 0x0d, 0x02, 0x0d, 0xa4, 0x0c, + 0x1c, 0x0c, 0xbc, 0x0b, 0x72, 0x0b, 0x3e, 0x0b, 0xe0, 0x0a, 0x46, 0x0a, + 0xb4, 0x09, 0x19, 0x09, 0xb5, 0x08, 0x37, 0x08, 0x5d, 0x07, 0x7b, 0x06, + 0xb5, 0x05, 0x1e, 0x05, 0x72, 0x04, 0x8f, 0x03, 0x71, 0x02, 0x61, 0x01, + 0x6f, 0x00, 0x40, 0xff, 0xaf, 0xfd, 0x0d, 0xfc, 0x90, 0xfa, 0x3d, 0xf9, + 0xe7, 0xf7, 0x4b, 0xf6, 0xc3, 0xf4, 0x72, 0xf3, 0x56, 0xf2, 0x4d, 0xf1, + 0x16, 0xf0, 0xf2, 0xee, 0xa2, 0xed, 0x79, 0xec, 0x34, 0xeb, 0xa4, 0xe9, + 0x68, 0xe8, 0xa8, 0xe7, 0xc0, 0xe7, 0x24, 0xe8, 0x49, 0xe8, 0x43, 0xe8, + 0x2d, 0xe8, 0x9b, 0xe8, 0xd0, 0xe8, 0x4e, 0xe8, 0x86, 0xe7, 0x22, 0xe7, + 0xce, 0xe7, 0x8f, 0xe8, 0xfc, 0xe8, 0x98, 0xe9, 0x01, 0xeb, 0xbf, 0xed, + 0x0a, 0xf0, 0xe9, 0xf0, 0x52, 0xf1, 0x5f, 0xf2, 0x3f, 0xf4, 0x99, 0xf5, + 0xef, 0xf5, 0x12, 0xf6, 0x59, 0xf7, 0xf5, 0xf9, 0x29, 0xfc, 0x7d, 0xfd, + 0xec, 0xfe, 0x24, 0x01, 0x03, 0x04, 0x69, 0x06, 0xb9, 0x07, 0x6a, 0x08, + 0x4d, 0x09, 0x6f, 0x0a, 0x31, 0x0b, 0x1e, 0x0b, 0xbd, 0x0a, 0xd5, 0x0a, + 0x6d, 0x0b, 0x41, 0x0c, 0xd8, 0x0c, 0x77, 0x0d, 0x66, 0x0e, 0xa0, 0x0f, + 0xef, 0x10, 0xac, 0x11, 0xdd, 0x11, 0xb0, 0x11, 0x63, 0x11, 0x42, 0x11, + 0xba, 0x10, 0xcc, 0x0f, 0xd8, 0x0e, 0x26, 0x0e, 0xff, 0x0d, 0xd5, 0x0d, + 0x78, 0x0d, 0x2a, 0x0d, 0x45, 0x0d, 0xf1, 0x0d, 0x99, 0x0e, 0xbd, 0x0e, + 0x7c, 0x0e, 0x3f, 0x0e, 0x52, 0x0e, 0x1e, 0x0e, 0x5a, 0x0d, 0x4c, 0x0c, + 0x6a, 0x0b, 0x25, 0x0b, 0x05, 0x0b, 0x7f, 0x0a, 0xfb, 0x09, 0xd7, 0x09, + 0x2c, 0x0a, 0x7e, 0x0a, 0x55, 0x0a, 0xd1, 0x09, 0x78, 0x09, 0x6e, 0x09, + 0x28, 0x09, 0x5c, 0x08, 0x71, 0x07, 0xb8, 0x06, 0x61, 0x06, 0x02, 0x06, + 0x42, 0x05, 0x7e, 0x04, 0x0f, 0x04, 0xf4, 0x03, 0xcf, 0x03, 0x43, 0x03, + 0x96, 0x02, 0x0d, 0x02, 0xb6, 0x01, 0x27, 0x01, 0x0c, 0x00, 0xd7, 0xfe, + 0xab, 0xfd, 0xb7, 0xfc, 0xa8, 0xfb, 0x2e, 0xfa, 0xbe, 0xf8, 0x7c, 0xf7, + 0x8e, 0xf6, 0xa9, 0xf5, 0x5f, 0xf4, 0x01, 0xf3, 0xab, 0xf1, 0xc5, 0xf0, + 0xd1, 0xef, 0x8d, 0xee, 0x0f, 0xed, 0xa2, 0xeb, 0x67, 0xea, 0x34, 0xe9, + 0xff, 0xe7, 0x51, 0xe7, 0x76, 0xe7, 0x1d, 0xe8, 0x61, 0xe8, 0x33, 0xe8, + 0x56, 0xe8, 0xb2, 0xe8, 0xe5, 0xe8, 0x5c, 0xe8, 0x87, 0xe7, 0x8d, 0xe7, + 0x8f, 0xe8, 0x49, 0xe9, 0x85, 0xe9, 0x1e, 0xea, 0xe1, 0xeb, 0x7d, 0xee, + 0x8e, 0xf0, 0x6d, 0xf1, 0x0d, 0xf2, 0x90, 0xf3, 0xa7, 0xf5, 0xf1, 0xf6, + 0x5d, 0xf7, 0xee, 0xf7, 0x9f, 0xf9, 0x14, 0xfc, 0x13, 0xfe, 0x62, 0xff, + 0xfd, 0x00, 0x81, 0x03, 0x8c, 0x06, 0xe3, 0x08, 0x17, 0x0a, 0xe9, 0x0a, + 0xf7, 0x0b, 0x29, 0x0d, 0x8a, 0x0d, 0x19, 0x0d, 0xae, 0x0c, 0xdf, 0x0c, + 0xaa, 0x0d, 0x5e, 0x0e, 0xbf, 0x0e, 0x5b, 0x0f, 0x62, 0x10, 0xcd, 0x11, + 0xba, 0x12, 0xd8, 0x12, 0x92, 0x12, 0x38, 0x12, 0x28, 0x12, 0xb3, 0x11, + 0xc5, 0x10, 0xdd, 0x0f, 0x17, 0x0f, 0xd6, 0x0e, 0x9a, 0x0e, 0x3f, 0x0e, + 0xe9, 0x0d, 0xbc, 0x0d, 0xf1, 0x0d, 0x02, 0x0e, 0xe9, 0x0d, 0x92, 0x0d, + 0x0a, 0x0d, 0xce, 0x0c, 0x6a, 0x0c, 0xd7, 0x0b, 0x1c, 0x0b, 0x59, 0x0a, + 0xbf, 0x09, 0x5b, 0x09, 0x23, 0x09, 0xeb, 0x08, 0xb4, 0x08, 0x97, 0x08, + 0x80, 0x08, 0x5d, 0x08, 0x1d, 0x08, 0xb9, 0x07, 0x55, 0x07, 0xe4, 0x06, + 0x5f, 0x06, 0xe6, 0x05, 0x69, 0x05, 0xed, 0x04, 0x79, 0x04, 0x0a, 0x04, + 0xac, 0x03, 0x64, 0x03, 0x01, 0x03, 0x82, 0x02, 0xf6, 0x01, 0x89, 0x01, + 0x34, 0x01, 0xc8, 0x00, 0x36, 0x00, 0x81, 0xff, 0xe4, 0xfe, 0x57, 0xfe, + 0x99, 0xfd, 0xab, 0xfc, 0xb0, 0xfb, 0xd9, 0xfa, 0x07, 0xfa, 0x1f, 0xf9, + 0x01, 0xf8, 0xe1, 0xf6, 0xdf, 0xf5, 0xdd, 0xf4, 0xcf, 0xf3, 0xc2, 0xf2, + 0xb0, 0xf1, 0xa1, 0xf0, 0x9d, 0xef, 0xaf, 0xee, 0xa5, 0xed, 0x7d, 0xec, + 0x24, 0xeb, 0xd3, 0xe9, 0x46, 0xe9, 0x76, 0xe9, 0x16, 0xea, 0x0c, 0xea, + 0xb7, 0xe9, 0x01, 0xea, 0x7d, 0xea, 0xbc, 0xea, 0x04, 0xea, 0xf5, 0xe8, + 0xfb, 0xe8, 0x2b, 0xea, 0x4a, 0xeb, 0x2d, 0xeb, 0x3e, 0xeb, 0xda, 0xec, + 0x97, 0xef, 0xe5, 0xf1, 0x73, 0xf2, 0x6f, 0xf2, 0x95, 0xf3, 0xca, 0xf5, + 0x4c, 0xf7, 0x59, 0xf7, 0xa2, 0xf7, 0x94, 0xf9, 0x97, 0xfc, 0xcb, 0xfe, + 0xc7, 0xff, 0xd1, 0x00, 0x29, 0x03, 0x33, 0x06, 0x55, 0x08, 0x3e, 0x09, + 0xd2, 0x09, 0xe0, 0x0a, 0xf7, 0x0b, 0x7e, 0x0c, 0x5f, 0x0c, 0x08, 0x0c, + 0x14, 0x0c, 0xc4, 0x0c, 0x9c, 0x0d, 0x05, 0x0e, 0x24, 0x0e, 0xac, 0x0e, + 0xd6, 0x0f, 0xef, 0x10, 0x31, 0x11, 0xb4, 0x10, 0x2c, 0x10, 0x1a, 0x10, + 0x15, 0x10, 0x89, 0x0f, 0x85, 0x0e, 0xce, 0x0d, 0xc5, 0x0d, 0xda, 0x0d, + 0x80, 0x0d, 0xdf, 0x0c, 0x81, 0x0c, 0xc0, 0x0c, 0x0a, 0x0d, 0xe2, 0x0c, + 0x7a, 0x0c, 0x1d, 0x0c, 0x04, 0x0c, 0xe3, 0x0b, 0x77, 0x0b, 0xd7, 0x0a, + 0x43, 0x0a, 0xec, 0x09, 0x9a, 0x09, 0x49, 0x09, 0x05, 0x09, 0xea, 0x08, + 0xed, 0x08, 0xe4, 0x08, 0xce, 0x08, 0xa1, 0x08, 0x66, 0x08, 0x1f, 0x08, + 0xcc, 0x07, 0x69, 0x07, 0xf5, 0x06, 0x84, 0x06, 0x0f, 0x06, 0x9a, 0x05, + 0x32, 0x05, 0xd7, 0x04, 0x78, 0x04, 0xf7, 0x03, 0x70, 0x03, 0xf4, 0x02, + 0x87, 0x02, 0x23, 0x02, 0x9f, 0x01, 0x1e, 0x01, 0x94, 0x00, 0x00, 0x00, + 0x4e, 0xff, 0x69, 0xfe, 0x7c, 0xfd, 0x98, 0xfc, 0xbf, 0xfb, 0xc3, 0xfa, + 0x95, 0xf9, 0x80, 0xf8, 0x79, 0xf7, 0x98, 0xf6, 0x9f, 0xf5, 0x79, 0xf4, + 0x65, 0xf3, 0x71, 0xf2, 0x80, 0xf1, 0x75, 0xf0, 0x57, 0xef, 0x36, 0xee, + 0x0e, 0xed, 0xea, 0xeb, 0x9a, 0xea, 0x7e, 0xe9, 0x1c, 0xe9, 0x57, 0xe9, + 0xcf, 0xe9, 0xfb, 0xe9, 0xea, 0xe9, 0x22, 0xea, 0x7c, 0xea, 0x64, 0xea, + 0xb4, 0xe9, 0xfb, 0xe8, 0x1e, 0xe9, 0x0b, 0xea, 0xcd, 0xea, 0xed, 0xea, + 0x75, 0xeb, 0x60, 0xed, 0xec, 0xef, 0xc2, 0xf1, 0x6b, 0xf2, 0xd6, 0xf2, + 0x45, 0xf4, 0x34, 0xf6, 0x42, 0xf7, 0x77, 0xf7, 0x24, 0xf8, 0x3a, 0xfa, + 0xcf, 0xfc, 0x85, 0xfe, 0xad, 0xff, 0x5a, 0x01, 0xdb, 0x03, 0x75, 0x06, + 0x4e, 0x08, 0x78, 0x09, 0x8d, 0x0a, 0xa6, 0x0b, 0x54, 0x0c, 0x6e, 0x0c, + 0x5f, 0x0c, 0x58, 0x0c, 0x6a, 0x0c, 0x9f, 0x0c, 0x16, 0x0d, 0xc5, 0x0d, + 0x8a, 0x0e, 0x3b, 0x0f, 0xef, 0x0f, 0xc0, 0x10, 0x38, 0x11, 0x24, 0x11, + 0x9a, 0x10, 0xfc, 0x0f, 0x9a, 0x0f, 0x27, 0x0f, 0x80, 0x0e, 0xc8, 0x0d, + 0x5c, 0x0d, 0x3a, 0x0d, 0x0a, 0x0d, 0xce, 0x0c, 0xa1, 0x0c, 0x9c, 0x0c, + 0xa0, 0x0c, 0x94, 0x0c, 0x77, 0x0c, 0x3d, 0x0c, 0x09, 0x0c, 0xb1, 0x0b, + 0x33, 0x0b, 0xaa, 0x0a, 0x2c, 0x0a, 0xa6, 0x09, 0x13, 0x09, 0xbd, 0x08, + 0xa5, 0x08, 0xbc, 0x08, 0xc5, 0x08, 0x86, 0x08, 0x50, 0x08, 0x44, 0x08, + 0x3a, 0x08, 0xe9, 0x07, 0x54, 0x07, 0xc9, 0x06, 0x68, 0x06, 0x1e, 0x06, + 0xa9, 0x05, 0x0d, 0x05, 0x97, 0x04, 0x51, 0x04, 0x10, 0x04, 0x94, 0x03, + 0xf0, 0x02, 0x6a, 0x02, 0x15, 0x02, 0xbf, 0x01, 0x41, 0x01, 0xaf, 0x00, + 0x17, 0x00, 0x8b, 0xff, 0xe3, 0xfe, 0x09, 0xfe, 0x24, 0xfd, 0x41, 0xfc, + 0x65, 0xfb, 0x7c, 0xfa, 0x7e, 0xf9, 0x86, 0xf8, 0x84, 0xf7, 0x7e, 0xf6, + 0x86, 0xf5, 0x8e, 0xf4, 0xa2, 0xf3, 0xaa, 0xf2, 0xb4, 0xf1, 0xc9, 0xf0, + 0xfd, 0xef, 0x1c, 0xef, 0x0a, 0xee, 0xd2, 0xec, 0xaf, 0xeb, 0xac, 0xea, + 0xe4, 0xe9, 0xb4, 0xe9, 0xed, 0xe9, 0x71, 0xea, 0xad, 0xea, 0xaa, 0xea, + 0xdd, 0xea, 0x20, 0xeb, 0x1f, 0xeb, 0xa4, 0xea, 0x31, 0xea, 0x98, 0xea, + 0x8b, 0xeb, 0x5a, 0xec, 0x9f, 0xec, 0x31, 0xed, 0x1b, 0xef, 0x7f, 0xf1, + 0x0f, 0xf3, 0x95, 0xf3, 0x2e, 0xf4, 0xe9, 0xf5, 0xf0, 0xf7, 0xef, 0xf8, + 0x32, 0xf9, 0x28, 0xfa, 0x71, 0xfc, 0xec, 0xfe, 0x62, 0x00, 0x43, 0x01, + 0xdc, 0x02, 0x6a, 0x05, 0xd7, 0x07, 0x4c, 0x09, 0x0f, 0x0a, 0xf1, 0x0a, + 0x0e, 0x0c, 0xe6, 0x0c, 0xef, 0x0c, 0x9c, 0x0c, 0x8c, 0x0c, 0xdc, 0x0c, + 0x61, 0x0d, 0xc2, 0x0d, 0x11, 0x0e, 0x9b, 0x0e, 0x51, 0x0f, 0x07, 0x10, + 0x57, 0x10, 0x44, 0x10, 0xfe, 0x0f, 0xa8, 0x0f, 0x58, 0x0f, 0xe6, 0x0e, + 0x35, 0x0e, 0x8c, 0x0d, 0x0d, 0x0d, 0xe4, 0x0c, 0xbc, 0x0c, 0x55, 0x0c, + 0xf3, 0x0b, 0xcc, 0x0b, 0xde, 0x0b, 0xf8, 0x0b, 0xd3, 0x0b, 0x84, 0x0b, + 0x52, 0x0b, 0x3b, 0x0b, 0x0c, 0x0b, 0x7d, 0x0a, 0xc1, 0x09, 0x40, 0x09, + 0xfe, 0x08, 0xd6, 0x08, 0x8b, 0x08, 0x44, 0x08, 0x24, 0x08, 0x32, 0x08, + 0x43, 0x08, 0xff, 0x07, 0xac, 0x07, 0x8b, 0x07, 0x67, 0x07, 0x24, 0x07, + 0xa7, 0x06, 0x21, 0x06, 0xc2, 0x05, 0x7c, 0x05, 0x2b, 0x05, 0xa4, 0x04, + 0x1a, 0x04, 0xab, 0x03, 0x44, 0x03, 0xd3, 0x02, 0x4e, 0x02, 0xd3, 0x01, + 0x7f, 0x01, 0x23, 0x01, 0xb2, 0x00, 0x02, 0x00, 0x57, 0xff, 0xaf, 0xfe, + 0xf6, 0xfd, 0x23, 0xfd, 0x1c, 0xfc, 0x16, 0xfb, 0x25, 0xfa, 0x40, 0xf9, + 0x3b, 0xf8, 0x0f, 0xf7, 0x1a, 0xf6, 0x40, 0xf5, 0x99, 0xf4, 0xda, 0xf3, + 0xc5, 0xf2, 0xd8, 0xf1, 0x10, 0xf1, 0x65, 0xf0, 0x9d, 0xef, 0x44, 0xee, + 0xcf, 0xec, 0x9f, 0xeb, 0x92, 0xea, 0xdc, 0xe9, 0x73, 0xe9, 0xd1, 0xe9, + 0x9a, 0xea, 0x4c, 0xeb, 0xae, 0xeb, 0xae, 0xeb, 0x1d, 0xec, 0x38, 0xec, + 0xb6, 0xeb, 0x33, 0xeb, 0x1e, 0xeb, 0xcd, 0xeb, 0x9d, 0xec, 0xec, 0xec, + 0x7f, 0xed, 0x25, 0xef, 0x98, 0xf1, 0x52, 0xf3, 0x11, 0xf4, 0xe9, 0xf4, + 0x65, 0xf6, 0x51, 0xf8, 0x91, 0xf9, 0xee, 0xf9, 0xd1, 0xfa, 0xb5, 0xfc, + 0xc8, 0xfe, 0x2a, 0x00, 0x38, 0x01, 0xd0, 0x02, 0xf6, 0x04, 0x5f, 0x07, + 0x23, 0x09, 0x4b, 0x0a, 0x6b, 0x0b, 0x5e, 0x0c, 0x2e, 0x0d, 0xbb, 0x0d, + 0xb3, 0x0d, 0x68, 0x0d, 0x41, 0x0d, 0x8e, 0x0d, 0x01, 0x0e, 0x52, 0x0e, + 0x85, 0x0e, 0xb0, 0x0e, 0x33, 0x0f, 0xea, 0x0f, 0x1c, 0x10, 0xb3, 0x0f, + 0x35, 0x0f, 0x09, 0x0f, 0x12, 0x0f, 0xda, 0x0e, 0x07, 0x0e, 0x36, 0x0d, + 0xdb, 0x0c, 0xbd, 0x0c, 0x4b, 0x0c, 0x9d, 0x0b, 0x0d, 0x0b, 0xfc, 0x0a, + 0x86, 0x0b, 0xc4, 0x0b, 0x93, 0x0b, 0x3d, 0x0b, 0x0d, 0x0b, 0x32, 0x0b, + 0x1e, 0x0b, 0x7b, 0x0a, 0x8a, 0x09, 0xdd, 0x08, 0xac, 0x08, 0x8c, 0x08, + 0x4e, 0x08, 0xf6, 0x07, 0xc5, 0x07, 0xfa, 0x07, 0x10, 0x08, 0xde, 0x07, + 0x7e, 0x07, 0x1b, 0x07, 0xfa, 0x06, 0xd6, 0x06, 0x62, 0x06, 0xc9, 0x05, + 0x38, 0x05, 0xc6, 0x04, 0x64, 0x04, 0xdf, 0x03, 0x50, 0x03, 0xc1, 0x02, + 0x54, 0x02, 0x00, 0x02, 0x8f, 0x01, 0x1a, 0x01, 0xad, 0x00, 0x3d, 0x00, + 0xcd, 0xff, 0x25, 0xff, 0x82, 0xfe, 0xd4, 0xfd, 0x0f, 0xfd, 0x45, 0xfc, + 0x5e, 0xfb, 0x5b, 0xfa, 0x5a, 0xf9, 0x4c, 0xf8, 0x5b, 0xf7, 0x3a, 0xf6, + 0x13, 0xf5, 0xfa, 0xf3, 0xf7, 0xf2, 0x49, 0xf2, 0x8c, 0xf1, 0xef, 0xf0, + 0x38, 0xf0, 0x77, 0xef, 0xc9, 0xee, 0xc9, 0xed, 0xd1, 0xec, 0x6e, 0xeb, + 0x4e, 0xea, 0xbc, 0xe9, 0xcb, 0xe9, 0x5f, 0xea, 0xaf, 0xea, 0x01, 0xeb, + 0x69, 0xeb, 0x1a, 0xec, 0xda, 0xec, 0xc2, 0xec, 0x53, 0xec, 0x5b, 0xec, + 0xdf, 0xec, 0xa6, 0xed, 0xcd, 0xed, 0xef, 0xed, 0xe1, 0xee, 0xc3, 0xf0, + 0xd0, 0xf2, 0x18, 0xf4, 0x21, 0xf5, 0xa0, 0xf6, 0x56, 0xf8, 0xd5, 0xf9, + 0xe1, 0xfa, 0x0b, 0xfc, 0xd2, 0xfd, 0xd0, 0xff, 0x49, 0x01, 0x65, 0x02, + 0x8c, 0x03, 0x41, 0x05, 0x11, 0x07, 0xb4, 0x08, 0x18, 0x0a, 0x4c, 0x0b, + 0x5c, 0x0c, 0x0d, 0x0d, 0xab, 0x0d, 0xf7, 0x0d, 0x53, 0x0e, 0xb3, 0x0e, + 0xf3, 0x0e, 0x35, 0x0f, 0x83, 0x0f, 0xdf, 0x0f, 0x28, 0x10, 0x6f, 0x10, + 0x9e, 0x10, 0x98, 0x10, 0x63, 0x10, 0xe9, 0x0f, 0x7f, 0x0f, 0x23, 0x0f, + 0x86, 0x0e, 0x1a, 0x0e, 0xb6, 0x0d, 0xb7, 0x0d, 0x89, 0x0d, 0xf0, 0x0c, + 0x46, 0x0c, 0xa5, 0x0b, 0x73, 0x0b, 0x05, 0x0b, 0x87, 0x0a, 0x2d, 0x0a, + 0x27, 0x0a, 0x3e, 0x0a, 0xfe, 0x09, 0x7d, 0x09, 0xfe, 0x08, 0xc5, 0x08, + 0x3c, 0x08, 0x82, 0x07, 0xe5, 0x06, 0x9e, 0x06, 0x77, 0x06, 0x19, 0x06, + 0x9b, 0x05, 0x5f, 0x05, 0x66, 0x05, 0x5b, 0x05, 0x13, 0x05, 0xc1, 0x04, + 0x73, 0x04, 0x45, 0x04, 0x0b, 0x04, 0xa6, 0x03, 0x73, 0x03, 0x25, 0x03, + 0xba, 0x02, 0x35, 0x02, 0x73, 0x01, 0xc7, 0x00, 0x50, 0x00, 0xdd, 0xff, + 0x74, 0xff, 0x04, 0xff, 0xfc, 0xfe, 0x9f, 0xfe, 0x20, 0xfe, 0x5f, 0xfd, + 0x66, 0xfc, 0x5b, 0xfb, 0x2c, 0xfa, 0xc5, 0xf8, 0x2a, 0xf7, 0xd1, 0xf5, + 0xd0, 0xf4, 0x86, 0xf3, 0x2c, 0xf3, 0x2a, 0xf2, 0x4f, 0xf1, 0x2a, 0xf0, + 0x5c, 0xef, 0xf5, 0xee, 0x3e, 0xee, 0x05, 0xed, 0x10, 0xeb, 0x01, 0xe9, + 0x0d, 0xe7, 0xf0, 0xe5, 0x1a, 0xe4, 0x9f, 0xe2, 0xee, 0xe1, 0x12, 0xe3, + 0x72, 0xe6, 0xbe, 0xea, 0xf6, 0xed, 0xf0, 0xf0, 0xfa, 0xf2, 0x3e, 0xf5, + 0x75, 0xf8, 0xc0, 0xf9, 0xe4, 0xf9, 0x32, 0xf9, 0xfd, 0xf6, 0x4f, 0xf7, + 0x21, 0xf7, 0x91, 0xf8, 0x28, 0xfa, 0x63, 0xfb, 0x5c, 0xfe, 0xd6, 0x00, + 0x56, 0x03, 0xae, 0x05, 0x30, 0x07, 0x5a, 0x08, 0xa6, 0x09, 0x94, 0x09, + 0x2e, 0x09, 0xa4, 0x07, 0x8c, 0x06, 0xc6, 0x05, 0x6a, 0x05, 0xea, 0x05, + 0xf4, 0x06, 0x18, 0x08, 0x92, 0x09, 0x3b, 0x0b, 0x3d, 0x0c, 0x24, 0x0e, + 0xf9, 0x0e, 0x01, 0x10, 0x44, 0x10, 0x44, 0x0f, 0xab, 0x0d, 0xa4, 0x0c, + 0x34, 0x0c, 0x59, 0x0c, 0xa3, 0x0c, 0x4b, 0x0c, 0x74, 0x0c, 0xed, 0x0b, + 0x60, 0x0c, 0x05, 0x0d, 0xbc, 0x0c, 0x58, 0x0d, 0xc8, 0x0c, 0xe9, 0x0b, + 0x13, 0x0b, 0x4e, 0x09, 0xf5, 0x07, 0xe8, 0x06, 0xcd, 0x05, 0x28, 0x05, + 0xcf, 0x03, 0x63, 0x04, 0x16, 0x04, 0x17, 0x04, 0x6c, 0x05, 0x9c, 0x04, + 0x26, 0x05, 0xdf, 0x03, 0x22, 0x03, 0xe9, 0x01, 0x52, 0x01, 0x0e, 0x00, + 0xcd, 0xfe, 0x08, 0xfe, 0xab, 0xfd, 0x26, 0xfe, 0x34, 0xfe, 0xa5, 0xfe, + 0x30, 0xff, 0xc5, 0x00, 0xc1, 0x01, 0xe3, 0x02, 0xf6, 0x02, 0x13, 0x03, + 0x76, 0x03, 0x60, 0x03, 0x6a, 0x03, 0xf0, 0x02, 0x72, 0x02, 0x7f, 0x02, + 0x4b, 0x02, 0x4b, 0x02, 0xab, 0x02, 0xe3, 0x02, 0x7c, 0x03, 0x35, 0x03, + 0xaf, 0x02, 0xc3, 0x01, 0xf0, 0x00, 0x22, 0x00, 0x20, 0xff, 0xfa, 0xfd, + 0x97, 0xfc, 0xc9, 0xfb, 0xbc, 0xfa, 0x90, 0xfa, 0x11, 0xfa, 0x8b, 0xf9, + 0xd8, 0xf8, 0xc9, 0xf7, 0x72, 0xf6, 0x41, 0xf4, 0x6d, 0xf2, 0xbd, 0xf0, + 0x26, 0xef, 0x20, 0xee, 0xe8, 0xeb, 0x92, 0xea, 0x5e, 0xe8, 0x2b, 0xe7, + 0x4e, 0xe6, 0x3e, 0xe5, 0x75, 0xe4, 0xc6, 0xe2, 0xd3, 0xe1, 0x5c, 0xe1, + 0x7c, 0xe3, 0x15, 0xe7, 0x20, 0xee, 0xd5, 0xf3, 0xbe, 0xf9, 0xe9, 0xfc, + 0x7d, 0xff, 0xc1, 0x01, 0x6c, 0x04, 0x57, 0x07, 0xa7, 0x07, 0x23, 0x07, + 0xff, 0x03, 0xc4, 0x00, 0x9f, 0x00, 0x40, 0x01, 0xba, 0x02, 0x96, 0x03, + 0x36, 0x04, 0x84, 0x03, 0x7f, 0x04, 0x75, 0x05, 0x4e, 0x05, 0xaf, 0x06, + 0xe5, 0x04, 0x0e, 0x05, 0x28, 0x02, 0xd9, 0x00, 0x3e, 0x00, 0xa9, 0xff, + 0x04, 0x01, 0x7d, 0x01, 0x5d, 0x02, 0xcf, 0x03, 0x0c, 0x06, 0x07, 0x09, + 0x67, 0x0b, 0x8c, 0x0c, 0x61, 0x0d, 0x95, 0x0d, 0x8e, 0x0e, 0xbe, 0x0f, + 0x92, 0x0f, 0xa0, 0x0e, 0xcf, 0x0c, 0xc0, 0x0b, 0xf6, 0x0b, 0x55, 0x0d, + 0x09, 0x0d, 0x9f, 0x0c, 0x5f, 0x0b, 0xcf, 0x0a, 0x14, 0x0a, 0x86, 0x09, + 0xc2, 0x09, 0x09, 0x09, 0xd3, 0x08, 0xfa, 0x06, 0x3a, 0x05, 0x67, 0x03, + 0x9c, 0x02, 0xc9, 0x03, 0x38, 0x04, 0x56, 0x03, 0x80, 0x02, 0x75, 0x00, + 0xb5, 0x00, 0xd5, 0x00, 0x63, 0x02, 0x5d, 0x02, 0x5e, 0x02, 0xb3, 0x01, + 0x69, 0x01, 0x50, 0x02, 0x4f, 0x03, 0x3e, 0x04, 0x06, 0x05, 0x88, 0x05, + 0x09, 0x06, 0xd1, 0x06, 0xe5, 0x06, 0x4e, 0x07, 0x6c, 0x07, 0x73, 0x07, + 0x80, 0x07, 0x2e, 0x07, 0x22, 0x06, 0x99, 0x05, 0x56, 0x04, 0x4c, 0x03, + 0xc0, 0x02, 0x8e, 0x02, 0xe5, 0x01, 0x06, 0x01, 0x76, 0xff, 0x4a, 0xfe, + 0x8c, 0xfd, 0xab, 0xfd, 0xff, 0xfd, 0x65, 0xfd, 0x97, 0xfc, 0xb6, 0xfa, + 0xeb, 0xf9, 0x86, 0xf9, 0x5e, 0xf8, 0xb0, 0xf7, 0x53, 0xf6, 0x3a, 0xf4, + 0x44, 0xf3, 0x1a, 0xf1, 0xbb, 0xee, 0x3e, 0xee, 0x1e, 0xeb, 0x2d, 0xec, + 0xa4, 0xea, 0x0c, 0xea, 0xfe, 0xeb, 0x44, 0xe9, 0x65, 0xeb, 0x2a, 0xeb, + 0x67, 0xe9, 0xe7, 0xea, 0x7a, 0xe9, 0xb0, 0xe9, 0x8a, 0xe8, 0xf9, 0xe7, + 0x0c, 0xe6, 0x07, 0xe9, 0x32, 0xef, 0x7e, 0xf4, 0xa4, 0xfa, 0xb7, 0xfd, + 0xba, 0xff, 0xf6, 0x05, 0xe2, 0x0a, 0xfa, 0x0d, 0x98, 0x0d, 0x84, 0x0a, + 0x08, 0x08, 0xa6, 0x07, 0x27, 0x07, 0x44, 0x03, 0x2b, 0xff, 0xbb, 0xfb, + 0x0b, 0xfc, 0x8c, 0xff, 0x19, 0x01, 0x04, 0x01, 0x70, 0x01, 0x14, 0x02, + 0x9d, 0x04, 0x6c, 0x06, 0xec, 0x06, 0x21, 0x06, 0xbf, 0x04, 0x41, 0x02, + 0xfa, 0x00, 0x97, 0x00, 0x33, 0x02, 0xf1, 0x03, 0xdd, 0x04, 0x3e, 0x05, + 0xaf, 0x06, 0xa0, 0x09, 0x32, 0x0d, 0x5a, 0x0f, 0x2a, 0x10, 0x79, 0x0f, + 0x7f, 0x10, 0x7d, 0x11, 0x87, 0x10, 0x2b, 0x0e, 0xfd, 0x0a, 0xe1, 0x09, + 0xf8, 0x09, 0x44, 0x0a, 0x4f, 0x09, 0x83, 0x07, 0xa9, 0x06, 0x27, 0x07, + 0x19, 0x07, 0xe0, 0x07, 0xbf, 0x08, 0x9e, 0x08, 0xaf, 0x07, 0x0e, 0x05, + 0xc7, 0x02, 0x50, 0x02, 0x94, 0x02, 0xd2, 0x02, 0xe2, 0x01, 0x9c, 0xff, + 0x43, 0xff, 0xdb, 0xfe, 0x83, 0x00, 0xd6, 0x01, 0x76, 0x03, 0xdb, 0x04, + 0x9b, 0x05, 0x6d, 0x05, 0xdb, 0x05, 0x11, 0x06, 0x99, 0x06, 0x7b, 0x07, + 0xc1, 0x07, 0x58, 0x07, 0xeb, 0x05, 0x35, 0x05, 0xd4, 0x04, 0xd4, 0x05, + 0xd7, 0x07, 0x09, 0x08, 0x19, 0x07, 0xb0, 0x06, 0x9a, 0x05, 0x2f, 0x05, + 0xa5, 0x04, 0x3e, 0x03, 0xb9, 0x01, 0x14, 0x00, 0x5e, 0xfe, 0x66, 0xfc, + 0xf0, 0xfa, 0xf8, 0xf9, 0x04, 0xfa, 0xba, 0xf9, 0x37, 0xf9, 0xdb, 0xf8, + 0x1b, 0xf8, 0x1b, 0xf8, 0x0e, 0xf8, 0x2b, 0xf7, 0x82, 0xf6, 0x79, 0xf5, + 0x33, 0xf4, 0x23, 0xf2, 0x11, 0xf0, 0x5e, 0xee, 0x27, 0xee, 0xd1, 0xed, + 0xa9, 0xed, 0x65, 0xec, 0xe2, 0xeb, 0xa9, 0xec, 0x5d, 0xee, 0x90, 0xef, + 0x08, 0xef, 0xfc, 0xed, 0x85, 0xeb, 0x55, 0xeb, 0x72, 0xe8, 0xe5, 0xe7, + 0xfd, 0xe5, 0xb3, 0xe6, 0x98, 0xe9, 0x39, 0xf0, 0x80, 0xf6, 0x12, 0xfc, + 0x01, 0x02, 0x8f, 0x05, 0xa0, 0x0b, 0xbb, 0x10, 0x34, 0x13, 0xd5, 0x12, + 0x85, 0x0f, 0x27, 0x0b, 0xa1, 0x07, 0x5c, 0x03, 0xff, 0x00, 0xee, 0xfd, + 0x8d, 0xfb, 0xc2, 0xfa, 0x46, 0xfa, 0x7a, 0xfc, 0xf6, 0xfe, 0xb5, 0x01, + 0xd2, 0x03, 0xed, 0x05, 0xed, 0x06, 0xbf, 0x06, 0x5a, 0x06, 0xe2, 0x04, + 0x6c, 0x03, 0xd6, 0x03, 0xf3, 0x02, 0x53, 0x02, 0x04, 0x02, 0x6e, 0x01, + 0xbc, 0x03, 0x32, 0x07, 0xe6, 0x0a, 0xdc, 0x0c, 0x24, 0x0e, 0x56, 0x0f, + 0xfa, 0x10, 0x4f, 0x12, 0x76, 0x13, 0x1f, 0x11, 0x49, 0x0e, 0x2e, 0x0d, + 0xe0, 0x0a, 0xba, 0x09, 0xd4, 0x07, 0x71, 0x04, 0xad, 0x03, 0xfe, 0x03, + 0xdc, 0x04, 0x29, 0x05, 0xc6, 0x05, 0x79, 0x05, 0xc4, 0x06, 0x19, 0x07, + 0x8e, 0x06, 0x53, 0x05, 0x58, 0x04, 0xfb, 0x02, 0x6a, 0x01, 0xa3, 0xff, + 0xc3, 0xfc, 0x43, 0xfc, 0xe2, 0xfc, 0xff, 0xfc, 0xdf, 0xfd, 0x08, 0xff, + 0x63, 0x00, 0x59, 0x03, 0x95, 0x04, 0x2a, 0x06, 0x2b, 0x07, 0x0c, 0x08, + 0xe1, 0x08, 0x4f, 0x08, 0x48, 0x07, 0x3a, 0x06, 0xf1, 0x04, 0x32, 0x04, + 0x4a, 0x04, 0xb7, 0x03, 0xd4, 0x03, 0x61, 0x03, 0xb9, 0x02, 0x3d, 0x03, + 0x89, 0x03, 0xb2, 0x03, 0xd6, 0x02, 0xbc, 0x01, 0x39, 0x00, 0x01, 0xff, + 0xa2, 0xfd, 0x6d, 0xfc, 0x1c, 0xfb, 0x6d, 0xfa, 0x1b, 0xf9, 0x62, 0xf8, + 0x2b, 0xf8, 0xbf, 0xf8, 0x29, 0xf9, 0x40, 0xf9, 0xc1, 0xf8, 0x8c, 0xf8, + 0xa7, 0xf8, 0xd1, 0xf7, 0x9a, 0xf6, 0x62, 0xf4, 0x33, 0xf2, 0xdb, 0xf1, + 0x87, 0xf1, 0x13, 0xf1, 0x66, 0xf0, 0x7c, 0xef, 0x89, 0xef, 0x09, 0xf0, + 0xa9, 0xf1, 0x2c, 0xf2, 0x13, 0xf1, 0x2f, 0xf2, 0x11, 0xf0, 0x66, 0xef, + 0x0b, 0xef, 0xfc, 0xeb, 0xeb, 0xe8, 0xd0, 0xe7, 0xc0, 0xe7, 0xdf, 0xeb, + 0x58, 0xf4, 0x95, 0xf8, 0x14, 0xfc, 0xdd, 0xff, 0x63, 0x05, 0x4c, 0x0d, + 0x5e, 0x15, 0xfe, 0x15, 0x51, 0x14, 0x6b, 0x11, 0x66, 0x0e, 0xd2, 0x0c, + 0x87, 0x09, 0x5d, 0x05, 0x2e, 0x01, 0x9d, 0xfd, 0xa5, 0xfa, 0xf8, 0xf9, + 0x7b, 0xfa, 0x23, 0xfd, 0x72, 0xff, 0xdb, 0x00, 0x5b, 0x02, 0x03, 0x04, + 0x2e, 0x06, 0x0f, 0x07, 0x92, 0x06, 0xa0, 0x05, 0x71, 0x04, 0xe0, 0x02, + 0xf0, 0x01, 0xec, 0x00, 0xd9, 0x00, 0x84, 0x01, 0x0f, 0x02, 0x34, 0x03, + 0xcd, 0x05, 0xb0, 0x08, 0x2b, 0x0b, 0xd5, 0x0c, 0x24, 0x0e, 0xb8, 0x0e, + 0x9a, 0x0f, 0x26, 0x0f, 0x03, 0x0e, 0xe0, 0x0c, 0xb6, 0x0a, 0x96, 0x08, + 0xa9, 0x06, 0xbc, 0x04, 0x42, 0x04, 0x4b, 0x03, 0x49, 0x02, 0x7c, 0x02, + 0xeb, 0x02, 0xfc, 0x03, 0x46, 0x04, 0xf6, 0x03, 0x6d, 0x03, 0x7e, 0x03, + 0x0b, 0x03, 0xfc, 0x01, 0xcc, 0x00, 0xa9, 0xff, 0x44, 0xfe, 0xbf, 0xfd, + 0xed, 0xfc, 0x01, 0xfd, 0x34, 0xfe, 0x3e, 0xff, 0x4c, 0x00, 0x01, 0x01, + 0x10, 0x03, 0x3e, 0x05, 0xfb, 0x05, 0xad, 0x07, 0xcc, 0x07, 0xe5, 0x07, + 0xd9, 0x08, 0xf8, 0x07, 0xa0, 0x06, 0xfd, 0x05, 0xa2, 0x04, 0xb6, 0x04, + 0x0d, 0x03, 0x07, 0x02, 0x87, 0x01, 0x38, 0x00, 0x1f, 0x00, 0x86, 0xff, + 0xc4, 0xfe, 0x9c, 0xfe, 0x3f, 0xfe, 0x57, 0xfd, 0x30, 0xfc, 0x29, 0xfb, + 0x36, 0xfb, 0x77, 0xfb, 0xe0, 0xfa, 0x99, 0xf9, 0x84, 0xf8, 0x9f, 0xf8, + 0x47, 0xf9, 0xef, 0xf9, 0x9f, 0xf9, 0x9b, 0xf8, 0x2d, 0xf8, 0xd8, 0xf6, + 0x49, 0xf6, 0x37, 0xf5, 0x81, 0xf4, 0x6f, 0xf3, 0x41, 0xf2, 0xbd, 0xf0, + 0x41, 0xef, 0x38, 0xef, 0xe6, 0xef, 0x38, 0xf0, 0x63, 0xf0, 0x55, 0xef, + 0xeb, 0xed, 0xe7, 0xed, 0x53, 0xee, 0xaf, 0xeb, 0xef, 0xea, 0x28, 0xe9, + 0x2b, 0xe9, 0xa3, 0xee, 0x1e, 0xf4, 0x2d, 0xf9, 0x6c, 0xfe, 0x85, 0x01, + 0x05, 0x07, 0xe3, 0x0d, 0xb6, 0x14, 0x55, 0x18, 0xfd, 0x17, 0xc8, 0x14, + 0xdd, 0x10, 0xaf, 0x0d, 0x1e, 0x0b, 0x8a, 0x07, 0x64, 0x02, 0x2a, 0xfe, + 0x8e, 0xf8, 0x83, 0xf6, 0xf7, 0xf6, 0x3e, 0xf8, 0x3a, 0xfb, 0x31, 0xfe, + 0x0e, 0xff, 0x7f, 0x01, 0x52, 0x03, 0xd4, 0x04, 0xb8, 0x06, 0xb8, 0x06, + 0x51, 0x06, 0xfc, 0x04, 0xb7, 0x03, 0xc7, 0x02, 0x42, 0x01, 0x93, 0x00, + 0x6c, 0x00, 0x98, 0x01, 0xcc, 0x03, 0xab, 0x05, 0xb2, 0x07, 0x0b, 0x09, + 0xc3, 0x0a, 0xd3, 0x0c, 0x62, 0x0e, 0xcd, 0x0f, 0xe3, 0x0f, 0x2a, 0x0f, + 0x19, 0x0d, 0x5c, 0x0a, 0xc6, 0x08, 0x3d, 0x07, 0xb7, 0x05, 0xa7, 0x04, + 0xe9, 0x02, 0x2d, 0x01, 0xe3, 0xff, 0x65, 0x00, 0x6b, 0x01, 0x15, 0x02, + 0x2b, 0x02, 0xe4, 0x00, 0x4c, 0x00, 0xc7, 0x00, 0x2e, 0x01, 0x8c, 0x00, + 0xe8, 0xff, 0x7a, 0xfe, 0x1b, 0xfd, 0x0e, 0xfd, 0x09, 0xfd, 0xa3, 0xfd, + 0x31, 0xfe, 0xf2, 0xfe, 0x0f, 0x00, 0xa7, 0x01, 0x65, 0x03, 0xe8, 0x04, + 0x20, 0x06, 0xb0, 0x07, 0x81, 0x09, 0x53, 0x0a, 0x88, 0x0a, 0x63, 0x0a, + 0xd3, 0x08, 0x58, 0x08, 0x93, 0x08, 0xfa, 0x06, 0x4d, 0x05, 0xe3, 0x02, + 0xd1, 0xff, 0x52, 0xfe, 0xd2, 0xfd, 0xfb, 0xfc, 0xd7, 0xfb, 0x85, 0xfa, + 0x26, 0xf9, 0xf2, 0xf8, 0x19, 0xf9, 0x52, 0xfa, 0x99, 0xfa, 0x82, 0xfa, + 0xa0, 0xfa, 0x1d, 0xfb, 0x24, 0xfb, 0x78, 0xfb, 0x27, 0xfb, 0x7e, 0xfa, + 0x14, 0xfa, 0xf7, 0xf8, 0x9a, 0xf7, 0x3b, 0xf6, 0x9a, 0xf4, 0x35, 0xf3, + 0x8e, 0xf2, 0xd7, 0xf0, 0x4e, 0xf2, 0x54, 0xf1, 0xf9, 0xf1, 0xb4, 0xf2, + 0x39, 0xf2, 0x3b, 0xf3, 0x5a, 0xf3, 0xd6, 0xf3, 0x35, 0xf3, 0x2d, 0xf2, + 0x36, 0xef, 0xaf, 0xec, 0x47, 0xea, 0xa2, 0xea, 0x65, 0xeb, 0x36, 0xf1, + 0x3e, 0xf5, 0xcf, 0xf7, 0x09, 0xfd, 0xd9, 0x00, 0x05, 0x09, 0xb9, 0x13, + 0x5a, 0x18, 0x75, 0x18, 0xb9, 0x16, 0xa2, 0x14, 0x59, 0x14, 0xa9, 0x12, + 0x28, 0x0e, 0x9a, 0x06, 0x43, 0xff, 0x01, 0xfa, 0xbb, 0xf6, 0x54, 0xf5, + 0xad, 0xf4, 0x02, 0xf5, 0x01, 0xf6, 0x54, 0xf8, 0xe0, 0xfb, 0x94, 0xff, + 0x7d, 0x03, 0x46, 0x06, 0x49, 0x08, 0x64, 0x09, 0xfa, 0x09, 0x26, 0x09, + 0xed, 0x06, 0x55, 0x04, 0x4c, 0x02, 0xfe, 0x00, 0xbe, 0xff, 0x66, 0xff, + 0x55, 0xff, 0xe6, 0xfe, 0x67, 0x00, 0x25, 0x03, 0x75, 0x07, 0xe4, 0x0a, + 0x9e, 0x0d, 0x72, 0x0e, 0x97, 0x0f, 0x99, 0x11, 0xf1, 0x11, 0x53, 0x10, + 0xe9, 0x0d, 0x7d, 0x0b, 0x1a, 0x09, 0xf6, 0x05, 0x14, 0x02, 0x96, 0xfe, + 0x1a, 0xfd, 0x04, 0xfd, 0x3f, 0xfc, 0x16, 0xfc, 0xf1, 0xfb, 0x64, 0xfc, + 0xd2, 0xfd, 0xbc, 0xfe, 0x8e, 0x00, 0xb2, 0x01, 0xb0, 0x01, 0x50, 0x00, + 0xd5, 0xfe, 0x81, 0xfe, 0x7c, 0xfe, 0xd2, 0xff, 0xaf, 0xfe, 0xd1, 0xfc, + 0x40, 0xfd, 0x4c, 0xfe, 0x34, 0x01, 0x23, 0x04, 0x73, 0x06, 0x1e, 0x08, + 0x8b, 0x09, 0xdb, 0x0b, 0x73, 0x0d, 0xc1, 0x0e, 0xf1, 0x0e, 0xd8, 0x0d, + 0x37, 0x0b, 0x99, 0x08, 0xdb, 0x05, 0x11, 0x02, 0x3b, 0xff, 0x39, 0xfc, + 0x1d, 0xf9, 0x29, 0xf7, 0x0e, 0xf6, 0x48, 0xf4, 0x29, 0xf5, 0x53, 0xf6, + 0xbc, 0xf7, 0x33, 0xfa, 0x3e, 0xfb, 0x9f, 0xfc, 0x37, 0xfe, 0x89, 0xff, + 0xf1, 0x00, 0x6c, 0x01, 0xca, 0x00, 0xed, 0xff, 0x92, 0xfe, 0xd0, 0xfc, + 0xfe, 0xfa, 0xf2, 0xf8, 0x5e, 0xf6, 0xf8, 0xf4, 0x5b, 0xf4, 0x90, 0xf4, + 0x58, 0xf4, 0xa5, 0xf3, 0x6c, 0xf5, 0x56, 0xf6, 0x27, 0xf7, 0x39, 0xf8, + 0x25, 0xf6, 0x50, 0xf6, 0x33, 0xf6, 0x02, 0xf5, 0x02, 0xf3, 0x72, 0xef, + 0xef, 0xec, 0x35, 0xe8, 0x0b, 0xe9, 0xb6, 0xea, 0x93, 0xec, 0x82, 0xf1, + 0x4f, 0xf5, 0x25, 0xf9, 0x80, 0x00, 0x11, 0x09, 0x31, 0x0f, 0x8c, 0x15, + 0x57, 0x18, 0x3b, 0x18, 0xa2, 0x18, 0xc3, 0x17, 0xf1, 0x14, 0x03, 0x11, + 0x74, 0x0b, 0xc9, 0x04, 0xd5, 0xfe, 0xab, 0xf9, 0x58, 0xf6, 0xc8, 0xf4, + 0xd7, 0xf3, 0x8a, 0xf4, 0x65, 0xf5, 0xc9, 0xf6, 0x11, 0xfa, 0x9c, 0xfd, + 0xa2, 0x00, 0x15, 0x04, 0x52, 0x05, 0x6f, 0x05, 0x4d, 0x05, 0x71, 0x04, + 0xd1, 0x03, 0x99, 0x02, 0x71, 0x00, 0x54, 0xfe, 0xf0, 0xfc, 0xaa, 0xfc, + 0xe9, 0xfc, 0x10, 0xfe, 0xe1, 0xff, 0xd3, 0x02, 0x25, 0x07, 0xdf, 0x09, + 0x39, 0x0c, 0x2b, 0x0f, 0xaf, 0x10, 0x33, 0x13, 0xe6, 0x13, 0x5e, 0x12, + 0x9c, 0x0f, 0x9d, 0x0c, 0x82, 0x09, 0x62, 0x06, 0x5b, 0x03, 0x7e, 0x00, + 0x27, 0xfd, 0x12, 0xfa, 0x2d, 0xf8, 0x76, 0xf7, 0x52, 0xf9, 0x0a, 0xfb, + 0x74, 0xfb, 0x90, 0xfa, 0xc1, 0xfb, 0x0f, 0xfe, 0xec, 0xff, 0xf4, 0x00, + 0xcf, 0x00, 0x06, 0x00, 0xf3, 0x00, 0xf7, 0x00, 0x3e, 0x00, 0xc1, 0x00, + 0x3c, 0x01, 0xa3, 0x02, 0xa9, 0x03, 0x33, 0x04, 0x00, 0x06, 0x5f, 0x08, + 0xa5, 0x0a, 0x59, 0x0c, 0x39, 0x0d, 0x07, 0x0d, 0xbe, 0x0d, 0x53, 0x0d, + 0x46, 0x0b, 0x77, 0x09, 0xd0, 0x06, 0xb6, 0x03, 0x54, 0x01, 0x6f, 0xfe, + 0x7e, 0xfa, 0x7b, 0xf8, 0x2b, 0xf7, 0x72, 0xf6, 0xa8, 0xf6, 0x03, 0xf7, + 0x90, 0xf7, 0xee, 0xf8, 0x8d, 0xfa, 0x88, 0xfc, 0xdc, 0xfe, 0x65, 0x01, + 0x6c, 0x02, 0x92, 0x02, 0xa2, 0x02, 0xd4, 0x02, 0xb7, 0x02, 0xa8, 0x02, + 0x8a, 0x00, 0x81, 0xfe, 0x4d, 0xfc, 0x55, 0xf9, 0xe1, 0xf8, 0x10, 0xf8, + 0xfa, 0xf6, 0x01, 0xf7, 0x18, 0xf5, 0x62, 0xf4, 0x9c, 0xf4, 0x00, 0xf5, + 0x83, 0xf5, 0x35, 0xf4, 0xfd, 0xf3, 0x08, 0xf3, 0x74, 0xf2, 0x61, 0xf1, + 0xf9, 0xee, 0xf4, 0xec, 0x23, 0xeb, 0x73, 0xeb, 0xbd, 0xec, 0x22, 0xf0, + 0x48, 0xf2, 0x54, 0xf6, 0xb6, 0xf9, 0x69, 0xff, 0xce, 0x06, 0x63, 0x0c, + 0x65, 0x11, 0xf6, 0x14, 0x5d, 0x17, 0x6a, 0x17, 0x20, 0x17, 0x5f, 0x15, + 0x5c, 0x12, 0x77, 0x0f, 0x74, 0x0a, 0x90, 0x03, 0x87, 0xfd, 0x1e, 0xf9, + 0x45, 0xf7, 0x15, 0xf5, 0x87, 0xf3, 0x78, 0xf1, 0x28, 0xf0, 0x72, 0xf2, + 0xdd, 0xf5, 0x37, 0xf8, 0x10, 0xfb, 0x6e, 0xfc, 0x49, 0xfe, 0x4c, 0x00, + 0xec, 0x01, 0xaa, 0x02, 0xcf, 0x02, 0xf3, 0x01, 0xd8, 0x00, 0xd3, 0xff, + 0x29, 0xff, 0x12, 0xff, 0x3a, 0xff, 0x9a, 0xff, 0x8d, 0x00, 0x2b, 0x02, + 0xaa, 0x04, 0xc8, 0x06, 0xfb, 0x09, 0xdb, 0x0c, 0x21, 0x0f, 0x13, 0x11, + 0x5b, 0x11, 0x8a, 0x11, 0x86, 0x11, 0x63, 0x10, 0x19, 0x0e, 0x25, 0x0b, + 0x8e, 0x07, 0xd7, 0x03, 0x3d, 0x00, 0x26, 0xfd, 0x88, 0xfa, 0xc0, 0xf8, + 0xdd, 0xf6, 0x26, 0xf5, 0x2c, 0xf5, 0xc5, 0xf5, 0x99, 0xf7, 0xf1, 0xf9, + 0xb9, 0xfb, 0x2f, 0xfd, 0x4d, 0xfe, 0xf3, 0xff, 0xf7, 0x02, 0x35, 0x05, + 0x1e, 0x06, 0x5f, 0x06, 0x06, 0x05, 0xe9, 0x04, 0x13, 0x07, 0x32, 0x08, + 0x50, 0x08, 0x1a, 0x08, 0xd0, 0x06, 0x29, 0x07, 0x76, 0x08, 0xb5, 0x09, + 0xd2, 0x09, 0x62, 0x09, 0x4d, 0x08, 0x68, 0x07, 0x2c, 0x06, 0xbb, 0x04, + 0x19, 0x04, 0x81, 0x02, 0x58, 0x00, 0x4c, 0xfd, 0xec, 0xfa, 0x0c, 0xfa, + 0x2c, 0xf9, 0x14, 0xf9, 0x58, 0xf9, 0x92, 0xf8, 0xc9, 0xf8, 0x83, 0xfa, + 0x74, 0xfc, 0x48, 0xfe, 0xdc, 0xff, 0x57, 0x01, 0xc3, 0x02, 0x50, 0x04, + 0x58, 0x05, 0x0a, 0x05, 0x02, 0x04, 0x7a, 0x03, 0x25, 0x03, 0x91, 0x00, + 0xc9, 0xfe, 0x53, 0xfc, 0x9e, 0xf8, 0xf1, 0xf7, 0xb4, 0xf6, 0xac, 0xf3, + 0xf9, 0xf2, 0xea, 0xf1, 0xaf, 0xef, 0xe7, 0xef, 0x57, 0xf0, 0x08, 0xef, + 0x6e, 0xef, 0xb2, 0xee, 0x36, 0xed, 0xac, 0xee, 0x29, 0xee, 0x7b, 0xed, + 0xf2, 0xec, 0x30, 0xee, 0x17, 0xf2, 0x7f, 0xf7, 0x16, 0xfb, 0x04, 0xfe, + 0x9d, 0x00, 0xae, 0x05, 0x0b, 0x0d, 0x03, 0x13, 0xed, 0x15, 0xb7, 0x16, + 0x2f, 0x16, 0xd3, 0x14, 0x83, 0x14, 0x83, 0x13, 0xf5, 0x0f, 0xeb, 0x0a, + 0x38, 0x04, 0xfc, 0xfc, 0x40, 0xf9, 0x7e, 0xf6, 0x8b, 0xf3, 0x9c, 0xf0, + 0x3e, 0xee, 0xcf, 0xec, 0xf8, 0xed, 0xb9, 0xf0, 0x21, 0xf3, 0x20, 0xf6, + 0xd7, 0xf8, 0xb2, 0xfb, 0x25, 0xff, 0xb5, 0x01, 0xe0, 0x02, 0x2b, 0x03, + 0xa6, 0x03, 0x4a, 0x05, 0x86, 0x05, 0x40, 0x04, 0xa0, 0x01, 0x05, 0xff, + 0xc8, 0xff, 0x07, 0x02, 0x50, 0x03, 0x7f, 0x03, 0xfe, 0x03, 0x93, 0x05, + 0x99, 0x08, 0x22, 0x0c, 0xe1, 0x0e, 0xa2, 0x10, 0xac, 0x11, 0x90, 0x11, + 0x3e, 0x10, 0xa5, 0x0e, 0xf3, 0x0d, 0x0f, 0x0c, 0x2c, 0x08, 0xb2, 0x03, + 0xe6, 0xfe, 0xef, 0xfa, 0xab, 0xf8, 0x93, 0xf6, 0x71, 0xf4, 0x87, 0xf3, + 0xd7, 0xf2, 0x98, 0xf2, 0xdd, 0xf4, 0xea, 0xf7, 0x70, 0xfb, 0xce, 0xfe, + 0xc3, 0x00, 0xa2, 0x03, 0x69, 0x06, 0xcc, 0x09, 0xc7, 0x0b, 0xf1, 0x0b, + 0x4f, 0x0c, 0x34, 0x0c, 0xfe, 0x0b, 0x07, 0x0b, 0xcf, 0x09, 0x1b, 0x08, + 0xbe, 0x07, 0x98, 0x06, 0xfe, 0x04, 0x6d, 0x04, 0xca, 0x03, 0x28, 0x04, + 0x90, 0x04, 0xcc, 0x03, 0xec, 0x02, 0xf5, 0x02, 0x0b, 0x03, 0xc7, 0x02, + 0x6e, 0x02, 0xe3, 0x00, 0xaa, 0xff, 0x59, 0xff, 0x3a, 0xfe, 0x60, 0xfd, + 0xe2, 0xfc, 0x57, 0xfc, 0x20, 0xfc, 0xf0, 0xfb, 0x4a, 0xfc, 0x1e, 0xfd, + 0x62, 0xfe, 0xab, 0xff, 0x35, 0x00, 0x3b, 0x00, 0x0a, 0x01, 0xcb, 0x01, + 0x41, 0x02, 0xf6, 0x01, 0x94, 0x00, 0xe4, 0xfe, 0x89, 0xfd, 0xdf, 0xfb, + 0x7d, 0xfa, 0x7a, 0xf8, 0xd9, 0xf5, 0xc5, 0xf3, 0xcf, 0xf1, 0x99, 0xf0, + 0x9d, 0xef, 0x0e, 0xef, 0x2b, 0xef, 0x0a, 0xee, 0xe7, 0xed, 0xdc, 0xec, + 0xcf, 0xec, 0x86, 0xee, 0xea, 0xee, 0x65, 0xef, 0xa6, 0xef, 0x71, 0xf2, + 0x55, 0xf6, 0xeb, 0xf9, 0xf9, 0xfd, 0x88, 0x00, 0x9b, 0x03, 0xcc, 0x09, + 0x29, 0x0e, 0xca, 0x10, 0x12, 0x12, 0xd1, 0x12, 0x1f, 0x13, 0xf5, 0x12, + 0xf1, 0x11, 0x9f, 0x0d, 0x64, 0x09, 0xf5, 0x05, 0xc1, 0x01, 0x93, 0xfd, + 0x5a, 0xf9, 0xb7, 0xf4, 0xb3, 0xf1, 0xb8, 0xf0, 0x9e, 0xf0, 0x91, 0xf0, + 0x6d, 0xf0, 0x50, 0xf1, 0xd3, 0xf3, 0x80, 0xf8, 0xce, 0xfb, 0x15, 0xfe, + 0x27, 0xff, 0x53, 0x00, 0xd7, 0x02, 0x69, 0x05, 0xf7, 0x05, 0x8e, 0x05, + 0x7f, 0x04, 0x06, 0x03, 0x8a, 0x02, 0x60, 0x02, 0x8b, 0x02, 0x33, 0x03, + 0x4e, 0x03, 0x9b, 0x03, 0x7d, 0x04, 0x8d, 0x06, 0x54, 0x09, 0x43, 0x0c, + 0xfc, 0x0d, 0x64, 0x0e, 0xd6, 0x0e, 0x45, 0x0f, 0x29, 0x10, 0x98, 0x0f, + 0x0a, 0x0e, 0xcc, 0x0a, 0x31, 0x07, 0x62, 0x04, 0x18, 0x01, 0x73, 0xfe, + 0x9b, 0xfb, 0x0c, 0xf8, 0xf5, 0xf6, 0x6c, 0xf6, 0x9b, 0xf5, 0x81, 0xf6, + 0x84, 0xf7, 0xbe, 0xf9, 0xa9, 0xfc, 0x18, 0xff, 0x7b, 0x00, 0xeb, 0x02, + 0x1b, 0x06, 0xd8, 0x07, 0x33, 0x09, 0x98, 0x09, 0x85, 0x09, 0x87, 0x09, + 0xaa, 0x09, 0x52, 0x08, 0x6a, 0x07, 0x1d, 0x07, 0xce, 0x05, 0x23, 0x05, + 0x06, 0x05, 0x30, 0x04, 0x62, 0x04, 0x4b, 0x05, 0x6a, 0x04, 0x75, 0x04, + 0xf6, 0x04, 0x1c, 0x04, 0x17, 0x04, 0x12, 0x04, 0x7f, 0x02, 0x9d, 0x01, + 0x0c, 0x01, 0x3e, 0xff, 0x1b, 0xfe, 0xec, 0xfc, 0xf6, 0xfb, 0xa3, 0xfb, + 0x6d, 0xfb, 0x86, 0xfb, 0xaf, 0xfb, 0x30, 0xfc, 0x86, 0xfd, 0xcc, 0xfe, + 0x31, 0x00, 0x5e, 0x01, 0x7b, 0x01, 0x53, 0x01, 0x89, 0x02, 0x05, 0x02, + 0x85, 0x00, 0x03, 0xff, 0xd3, 0xfc, 0x20, 0xfb, 0x34, 0xfa, 0x21, 0xf7, + 0xaa, 0xf4, 0xa0, 0xf1, 0x11, 0xf1, 0x2e, 0xf1, 0xd9, 0xef, 0x5e, 0xef, + 0x2f, 0xed, 0xb2, 0xec, 0x90, 0xee, 0xef, 0xef, 0x32, 0xf0, 0x71, 0xef, + 0xbe, 0xed, 0xf4, 0xed, 0x57, 0xf1, 0xc0, 0xf4, 0xec, 0xf7, 0xd5, 0xfa, + 0x82, 0xfb, 0x15, 0xfe, 0xe2, 0x03, 0x43, 0x09, 0x9c, 0x0d, 0x72, 0x10, + 0xce, 0x10, 0x21, 0x11, 0x1f, 0x12, 0xf0, 0x11, 0xc1, 0x10, 0xf2, 0x0e, + 0x20, 0x0b, 0xfd, 0x04, 0xef, 0xff, 0xb8, 0xfc, 0xe6, 0xf9, 0x08, 0xf7, + 0x0a, 0xf3, 0x3f, 0xef, 0x8a, 0xee, 0x3a, 0xf0, 0xf6, 0xf0, 0xc1, 0xf1, + 0x90, 0xf3, 0x84, 0xf6, 0x67, 0xfa, 0x06, 0xfe, 0x2e, 0xff, 0x21, 0x00, + 0x4c, 0x02, 0x37, 0x05, 0xbd, 0x06, 0x17, 0x06, 0x7b, 0x04, 0x01, 0x03, + 0x24, 0x03, 0xeb, 0x03, 0x6f, 0x03, 0x2a, 0x03, 0x21, 0x03, 0x5b, 0x03, + 0x0a, 0x04, 0x17, 0x06, 0xf1, 0x08, 0x0f, 0x0c, 0x83, 0x0d, 0x47, 0x0d, + 0x8a, 0x0d, 0x64, 0x0f, 0x4e, 0x11, 0xcb, 0x11, 0x12, 0x0f, 0x4d, 0x0b, + 0xd3, 0x08, 0x14, 0x07, 0x51, 0x05, 0x3e, 0x02, 0xb6, 0xfd, 0x4b, 0xfa, + 0x83, 0xf8, 0x8f, 0xf7, 0xfb, 0xf6, 0x6c, 0xf6, 0x58, 0xf6, 0xae, 0xf7, + 0x85, 0xf9, 0x16, 0xfb, 0x73, 0xfd, 0x0e, 0x00, 0xab, 0x02, 0xc4, 0x04, + 0x0e, 0x06, 0xb6, 0x07, 0xe2, 0x08, 0x8b, 0x09, 0x34, 0x0a, 0x97, 0x09, + 0x02, 0x09, 0x8f, 0x08, 0xbe, 0x07, 0xa3, 0x06, 0x59, 0x05, 0xf9, 0x04, + 0xaa, 0x04, 0x14, 0x04, 0x58, 0x03, 0x6d, 0x02, 0x59, 0x02, 0x98, 0x02, + 0x9a, 0x02, 0x6f, 0x02, 0xb9, 0x01, 0x0a, 0x01, 0x18, 0x01, 0xa9, 0x00, + 0x02, 0x00, 0x90, 0xff, 0xd7, 0xfe, 0x29, 0xfe, 0x54, 0xfe, 0x9b, 0xfe, + 0x3a, 0xfe, 0xa9, 0xfe, 0x69, 0xff, 0xe7, 0xff, 0xac, 0x00, 0x56, 0x01, + 0xb0, 0x01, 0x72, 0x01, 0xf4, 0x00, 0xd5, 0xff, 0xfe, 0xfe, 0xf6, 0xfd, + 0x6a, 0xfc, 0x26, 0xfa, 0x75, 0xf7, 0xe7, 0xf5, 0xab, 0xf4, 0xb6, 0xf2, + 0x7a, 0xf1, 0x15, 0xf0, 0x52, 0xef, 0xb4, 0xee, 0xf4, 0xee, 0x97, 0xee, + 0x49, 0xee, 0xa4, 0xef, 0xb5, 0xef, 0x5c, 0xf0, 0xe2, 0xf1, 0xd8, 0xf1, + 0x33, 0xf2, 0x18, 0xf3, 0x5f, 0xf5, 0x7e, 0xf9, 0xf4, 0xfd, 0xe1, 0xff, + 0x6c, 0x00, 0xfa, 0x02, 0x3c, 0x07, 0xf9, 0x0d, 0xce, 0x11, 0x0f, 0x11, + 0xb8, 0x0f, 0xc5, 0x0f, 0x12, 0x10, 0xdc, 0x10, 0x33, 0x0f, 0xc2, 0x09, + 0x5e, 0x05, 0x15, 0x01, 0xd7, 0xfc, 0x09, 0xf9, 0x84, 0xf6, 0xcc, 0xf3, + 0xe5, 0xf0, 0x86, 0xee, 0xd5, 0xec, 0xf6, 0xed, 0xb3, 0xf0, 0xa3, 0xf3, + 0xb2, 0xf4, 0x46, 0xf6, 0x2b, 0xf9, 0x38, 0xfd, 0x4d, 0x01, 0xef, 0x02, + 0xfc, 0x03, 0x0e, 0x05, 0xc6, 0x06, 0xbb, 0x07, 0x83, 0x07, 0x24, 0x06, + 0x9c, 0x05, 0x56, 0x06, 0x16, 0x06, 0x6d, 0x05, 0x22, 0x05, 0xdd, 0x05, + 0x90, 0x07, 0x13, 0x09, 0xef, 0x09, 0x37, 0x0b, 0x82, 0x0c, 0xfe, 0x0d, + 0x68, 0x0f, 0xfc, 0x0f, 0x8d, 0x0f, 0x61, 0x0e, 0xea, 0x0c, 0x82, 0x0b, + 0x97, 0x09, 0xd3, 0x06, 0x6b, 0x03, 0x00, 0x00, 0x82, 0xfd, 0x82, 0xfb, + 0x1c, 0xf9, 0x30, 0xf7, 0x8f, 0xf6, 0x13, 0xf6, 0x8a, 0xf6, 0xd9, 0xf7, + 0xbb, 0xf8, 0xbe, 0xfa, 0xb1, 0xfd, 0xcc, 0xff, 0x14, 0x02, 0x69, 0x04, + 0x0a, 0x06, 0x2e, 0x08, 0x06, 0x0a, 0x99, 0x0a, 0xbd, 0x0a, 0x8d, 0x0a, + 0x42, 0x0a, 0x85, 0x09, 0x40, 0x08, 0xc3, 0x06, 0x97, 0x05, 0xaf, 0x04, + 0x25, 0x03, 0xd7, 0x01, 0x7e, 0x00, 0x01, 0x00, 0xb2, 0x00, 0x96, 0x00, + 0x26, 0x00, 0xad, 0xff, 0xbb, 0xff, 0xce, 0x00, 0xb4, 0x01, 0xbc, 0x01, + 0x95, 0x01, 0x49, 0x01, 0x59, 0x01, 0x9c, 0x01, 0xbf, 0x01, 0x97, 0x01, + 0x83, 0x01, 0x5c, 0x01, 0x9a, 0x00, 0x92, 0x00, 0x80, 0x00, 0x5f, 0x00, + 0xe8, 0xff, 0xe4, 0xfe, 0x0c, 0xfe, 0x1b, 0xfd, 0xcf, 0xfb, 0x2d, 0xfb, + 0x94, 0xf9, 0x73, 0xf8, 0x06, 0xf7, 0x07, 0xf5, 0x4c, 0xf3, 0xaa, 0xf2, + 0x59, 0xf1, 0xe1, 0xf0, 0x3a, 0xf0, 0xea, 0xee, 0x53, 0xee, 0xe9, 0xee, + 0x33, 0xef, 0xe1, 0xef, 0x47, 0xf0, 0x15, 0xf0, 0xc3, 0xf0, 0x7c, 0xf1, + 0xb3, 0xf3, 0x76, 0xf6, 0x6d, 0xf8, 0x4f, 0xfb, 0x27, 0xfe, 0x5f, 0x00, + 0xf0, 0x04, 0xa8, 0x08, 0x9e, 0x0c, 0xf1, 0x0e, 0xb1, 0x0f, 0xcd, 0x10, + 0x59, 0x11, 0x43, 0x12, 0xad, 0x11, 0x5a, 0x0e, 0xf8, 0x0a, 0x50, 0x07, + 0xf4, 0x03, 0xb5, 0x00, 0x73, 0xfc, 0x2f, 0xf8, 0x59, 0xf4, 0x35, 0xf2, + 0xc7, 0xf0, 0xb2, 0xef, 0x1e, 0xef, 0x15, 0xef, 0x0e, 0xf1, 0x8d, 0xf3, + 0x88, 0xf5, 0x74, 0xf8, 0x69, 0xfa, 0xf1, 0xfc, 0xd0, 0x00, 0xc4, 0x02, + 0xfc, 0x03, 0x3d, 0x05, 0x18, 0x06, 0x7f, 0x06, 0x28, 0x07, 0x77, 0x07, + 0x9c, 0x06, 0x65, 0x06, 0xfa, 0x06, 0x0a, 0x07, 0x23, 0x07, 0x64, 0x07, + 0xc1, 0x08, 0x3c, 0x0a, 0x78, 0x0b, 0x18, 0x0c, 0xa1, 0x0c, 0xae, 0x0d, + 0x09, 0x0f, 0x4d, 0x0f, 0x48, 0x0e, 0x7d, 0x0d, 0x63, 0x0c, 0xb2, 0x0a, + 0xb4, 0x08, 0x61, 0x06, 0x99, 0x03, 0xf1, 0x00, 0x42, 0xfe, 0x16, 0xfc, + 0x18, 0xfa, 0x51, 0xf8, 0x00, 0xf7, 0x4d, 0xf6, 0xa3, 0xf6, 0x3c, 0xf7, + 0x1e, 0xf8, 0xb7, 0xf9, 0x5b, 0xfb, 0x65, 0xfd, 0xef, 0xff, 0xcf, 0x01, + 0xe2, 0x03, 0xd1, 0x05, 0x03, 0x07, 0xf8, 0x07, 0xad, 0x08, 0x00, 0x09, + 0xac, 0x08, 0x35, 0x08, 0x35, 0x07, 0xf4, 0x05, 0x14, 0x05, 0xf5, 0x03, + 0xd1, 0x02, 0xa9, 0x01, 0x7d, 0x00, 0xdc, 0xff, 0x7c, 0xff, 0x71, 0xff, + 0x8e, 0xff, 0x96, 0xff, 0xf3, 0xff, 0x1d, 0x00, 0x16, 0x00, 0xc7, 0x00, + 0x85, 0x01, 0x3e, 0x02, 0x84, 0x02, 0x88, 0x01, 0x73, 0x01, 0x2b, 0x02, + 0xac, 0x02, 0xa5, 0x02, 0x24, 0x02, 0x6c, 0x01, 0x5c, 0x01, 0x65, 0x01, + 0x4a, 0x01, 0xd4, 0x00, 0x3d, 0x00, 0x70, 0xff, 0x51, 0xfe, 0xdc, 0xfc, + 0xb3, 0xfb, 0x40, 0xfb, 0xa0, 0xf9, 0xc3, 0xf7, 0xf8, 0xf5, 0xf7, 0xf3, + 0xd3, 0xf3, 0x62, 0xf3, 0x04, 0xf2, 0x74, 0xf1, 0x43, 0xf0, 0x07, 0xf0, + 0xde, 0xf0, 0x24, 0xf1, 0x22, 0xf1, 0x79, 0xf1, 0x6d, 0xf2, 0xd4, 0xf2, + 0x90, 0xf4, 0xf0, 0xf5, 0x12, 0xf6, 0x56, 0xf8, 0x9e, 0xfa, 0x08, 0xfc, + 0xb2, 0xfe, 0x42, 0x01, 0x33, 0x03, 0x80, 0x06, 0x18, 0x09, 0x20, 0x0a, + 0x27, 0x0c, 0x95, 0x0e, 0x10, 0x0f, 0x34, 0x0f, 0xba, 0x0e, 0x24, 0x0c, + 0x29, 0x0b, 0xe2, 0x09, 0xad, 0x06, 0x7c, 0x03, 0x46, 0xff, 0xf2, 0xfb, + 0xc0, 0xf9, 0x55, 0xf7, 0x33, 0xf4, 0x5e, 0xf2, 0x04, 0xf2, 0x8b, 0xf1, + 0x6b, 0xf1, 0xf5, 0xf1, 0x27, 0xf3, 0x1f, 0xf6, 0x61, 0xf9, 0xb4, 0xfa, + 0x2a, 0xfb, 0xec, 0xfe, 0x55, 0x02, 0xa1, 0x04, 0x05, 0x05, 0x63, 0x05, + 0x4a, 0x06, 0x3c, 0x08, 0xd5, 0x08, 0x72, 0x07, 0x83, 0x06, 0x79, 0x06, + 0x4d, 0x07, 0xe0, 0x06, 0x6c, 0x06, 0x43, 0x06, 0xe6, 0x06, 0xf9, 0x07, + 0x48, 0x08, 0x77, 0x08, 0x96, 0x09, 0xc6, 0x0a, 0xe1, 0x0b, 0xfb, 0x0b, + 0x24, 0x0b, 0x65, 0x0a, 0xcc, 0x0a, 0x74, 0x0a, 0x03, 0x09, 0x73, 0x06, + 0xe6, 0x03, 0x1f, 0x02, 0xf7, 0x00, 0x17, 0xff, 0x95, 0xfc, 0x63, 0xfa, + 0x90, 0xf9, 0x2c, 0xf9, 0x48, 0xf8, 0xb6, 0xf7, 0x12, 0xf8, 0x5f, 0xf9, + 0x99, 0xfa, 0x8f, 0xfb, 0x60, 0xfc, 0xa0, 0xfd, 0x74, 0xff, 0x75, 0x01, + 0x90, 0x02, 0x85, 0x02, 0x1f, 0x03, 0xb5, 0x03, 0xee, 0x03, 0x9a, 0x04, + 0xe7, 0x03, 0x89, 0x02, 0x77, 0x02, 0x4c, 0x02, 0xcd, 0x01, 0x7f, 0x01, + 0x5d, 0x01, 0xf1, 0x00, 0x44, 0x01, 0x92, 0x01, 0x92, 0x01, 0x7e, 0x02, + 0x58, 0x03, 0x0d, 0x04, 0x68, 0x04, 0x90, 0x04, 0xe9, 0x04, 0x9c, 0x05, + 0x24, 0x06, 0x1f, 0x06, 0x5a, 0x05, 0x90, 0x04, 0x25, 0x04, 0xec, 0x03, + 0x2b, 0x03, 0xd8, 0x01, 0x94, 0x00, 0x6b, 0xff, 0x81, 0xfe, 0x78, 0xfd, + 0x2e, 0xfc, 0x67, 0xfb, 0xa1, 0xfa, 0x33, 0xf9, 0x83, 0xf8, 0xb4, 0xf7, + 0xef, 0xf6, 0x01, 0xf7, 0xf8, 0xf5, 0xf6, 0xf4, 0xc7, 0xf4, 0x26, 0xf4, + 0xea, 0xf3, 0x1a, 0xf3, 0x4f, 0xf2, 0xf6, 0xf1, 0x6b, 0xf2, 0x0c, 0xf3, + 0x03, 0xf3, 0xd5, 0xf2, 0xe3, 0xf3, 0xd9, 0xf5, 0xbf, 0xf7, 0x01, 0xfa, + 0xce, 0xfb, 0x42, 0xfd, 0x70, 0xff, 0xc5, 0x02, 0xe7, 0x04, 0xb4, 0x06, + 0xe8, 0x08, 0x18, 0x09, 0x55, 0x09, 0x0d, 0x0a, 0xca, 0x09, 0x19, 0x0a, + 0x67, 0x09, 0x54, 0x07, 0xbf, 0x04, 0x20, 0x03, 0xbc, 0x02, 0x65, 0x02, + 0xee, 0x00, 0x07, 0xff, 0xa8, 0xfd, 0x7b, 0xfd, 0x05, 0xfe, 0x4e, 0xfe, + 0x48, 0xfe, 0xfc, 0xfd, 0x16, 0xfe, 0xf0, 0xfd, 0xf2, 0xfd, 0xce, 0xfd, + 0xad, 0xfd, 0xb3, 0xfd, 0xe4, 0xfc, 0x8c, 0xfb, 0x96, 0xfa, 0xb2, 0xf9, + 0x72, 0xf9, 0xcf, 0xf9, 0x5d, 0xf9, 0xf5, 0xf8, 0x70, 0xf9, 0x26, 0xfa, + 0xa0, 0xfb, 0xd9, 0xfd, 0xb1, 0xff, 0xb1, 0x01, 0x44, 0x04, 0xb3, 0x06, + 0xa2, 0x08, 0x15, 0x0b, 0x6e, 0x0d, 0x4d, 0x0f, 0x7f, 0x10, 0xe1, 0x10, + 0xc7, 0x10, 0x99, 0x10, 0x37, 0x10, 0x2a, 0x0f, 0x83, 0x0d, 0x90, 0x0b, + 0x3b, 0x09, 0xe0, 0x06, 0x2f, 0x05, 0xc5, 0x03, 0xe8, 0x01, 0xed, 0xff, + 0x9c, 0xfe, 0xe8, 0xfd, 0xa8, 0xfd, 0x6e, 0xfd, 0x0c, 0xfd, 0x1b, 0xfd, + 0x6e, 0xfd, 0x90, 0xfd, 0xa2, 0xfd, 0x12, 0xfe, 0x43, 0xfe, 0xe3, 0xfd, + 0xab, 0xfd, 0x41, 0xfd, 0xcd, 0xfc, 0xb0, 0xfc, 0x35, 0xfc, 0x83, 0xfb, + 0x34, 0xfb, 0x57, 0xfb, 0x57, 0xfb, 0x9d, 0xfb, 0x15, 0xfc, 0xe0, 0xfc, + 0x02, 0xfe, 0xe8, 0xfe, 0x38, 0x00, 0xa0, 0x01, 0x0c, 0x03, 0x81, 0x04, + 0xb4, 0x05, 0xdc, 0x06, 0xff, 0x07, 0xd2, 0x08, 0x3a, 0x09, 0x4b, 0x09, + 0x6a, 0x09, 0x2c, 0x09, 0xad, 0x08, 0x0c, 0x08, 0x46, 0x07, 0xf5, 0x05, + 0x7c, 0x04, 0x4a, 0x03, 0xa8, 0x01, 0x2e, 0x00, 0x39, 0xff, 0xe8, 0xfc, + 0xfd, 0xfa, 0xf1, 0xf9, 0xe4, 0xf7, 0xc3, 0xf6, 0x4f, 0xf5, 0xef, 0xf2, + 0xf2, 0xf1, 0xce, 0xf0, 0x3e, 0xef, 0xfc, 0xed, 0xc0, 0xeb, 0xc5, 0xea, + 0xbf, 0xe9, 0x3a, 0xe9, 0xbc, 0xe9, 0x1d, 0xea, 0x40, 0xeb, 0x5e, 0xec, + 0xfb, 0xed, 0x41, 0xf1, 0x5e, 0xf5, 0xb6, 0xf8, 0xa4, 0xfc, 0xd8, 0x00, + 0xff, 0x04, 0x82, 0x08, 0xcd, 0x0b, 0xd4, 0x0e, 0x26, 0x12, 0x58, 0x14, + 0xb7, 0x14, 0x2e, 0x14, 0x95, 0x13, 0xf3, 0x12, 0xa7, 0x11, 0x1f, 0x0f, + 0x88, 0x0c, 0xca, 0x0a, 0x3a, 0x08, 0xe6, 0x04, 0xd4, 0x01, 0x57, 0x00, + 0xac, 0xff, 0x79, 0xff, 0x1d, 0xfe, 0x8a, 0xfb, 0xa6, 0xfa, 0x17, 0xfb, + 0xaf, 0xfb, 0xb6, 0xfb, 0x37, 0xfb, 0x09, 0xfa, 0xc3, 0xf8, 0xbb, 0xf7, + 0x04, 0xf7, 0xd7, 0xf6, 0x29, 0xf6, 0xf8, 0xf4, 0xe1, 0xf2, 0x8e, 0xf1, + 0x03, 0xf2, 0x2e, 0xf3, 0x5a, 0xf4, 0x7e, 0xf5, 0x7b, 0xf6, 0xf5, 0xf7, + 0x30, 0xfb, 0x54, 0xff, 0x63, 0x03, 0x3f, 0x07, 0x4b, 0x0a, 0x15, 0x0d, + 0x8d, 0x10, 0xe2, 0x13, 0x8b, 0x16, 0x3a, 0x18, 0x94, 0x18, 0xb1, 0x18, + 0xf7, 0x17, 0x58, 0x16, 0xa8, 0x14, 0xc7, 0x12, 0x54, 0x10, 0x4e, 0x0d, + 0xae, 0x09, 0x0e, 0x06, 0xb0, 0x03, 0xcd, 0x01, 0x90, 0xff, 0x75, 0xfd, + 0x7a, 0xfb, 0x9f, 0xfa, 0x31, 0xfa, 0x99, 0xf9, 0x98, 0xf9, 0x20, 0xfa, + 0x78, 0xfa, 0xaa, 0xfa, 0xaa, 0xfa, 0x54, 0xfa, 0xd4, 0xfa, 0xee, 0xfb, + 0x27, 0xfc, 0x22, 0xfb, 0x3e, 0xfa, 0x43, 0xfa, 0x97, 0xfa, 0xd5, 0xfa, + 0xc7, 0xfa, 0xb5, 0xfa, 0x03, 0xfb, 0x98, 0xfb, 0x1f, 0xfc, 0x3e, 0xfd, + 0x05, 0xff, 0xc5, 0x00, 0x02, 0x02, 0xc7, 0x02, 0xe8, 0x03, 0xea, 0x05, + 0x0d, 0x08, 0x2a, 0x09, 0xd2, 0x09, 0x31, 0x0a, 0x10, 0x0a, 0x60, 0x0a, + 0x8a, 0x0a, 0x50, 0x0a, 0xbc, 0x09, 0x1e, 0x08, 0x49, 0x06, 0xac, 0x04, + 0x3e, 0x03, 0x9d, 0x01, 0xe8, 0xff, 0x98, 0xfd, 0x4b, 0xfb, 0x4e, 0xf9, + 0x9c, 0xf7, 0xe6, 0xf5, 0x61, 0xf4, 0x52, 0xf2, 0x1c, 0xf0, 0xf0, 0xee, + 0xa6, 0xed, 0x2a, 0xec, 0x2d, 0xea, 0x8a, 0xe8, 0xee, 0xe6, 0x63, 0xe6, + 0x99, 0xe6, 0x1e, 0xe7, 0xe8, 0xe7, 0x9e, 0xe8, 0x9b, 0xea, 0x88, 0xed, + 0x99, 0xf1, 0x09, 0xf6, 0x1b, 0xfa, 0x66, 0xfe, 0x36, 0x03, 0xd4, 0x06, + 0xc3, 0x0a, 0xd6, 0x0f, 0xb8, 0x13, 0x4d, 0x16, 0x9e, 0x16, 0x0e, 0x16, + 0xc4, 0x16, 0x55, 0x17, 0x2d, 0x16, 0xd3, 0x13, 0xb9, 0x10, 0x42, 0x0d, + 0x05, 0x0b, 0xb9, 0x08, 0x1d, 0x06, 0x35, 0x04, 0x40, 0x02, 0xe3, 0xff, + 0x0f, 0xfe, 0x20, 0xfd, 0xfe, 0xfc, 0x0f, 0xfd, 0x61, 0xfc, 0x40, 0xfb, + 0x50, 0xfa, 0xf4, 0xf9, 0xe1, 0xf9, 0x50, 0xf9, 0x55, 0xf8, 0x5a, 0xf6, + 0xfb, 0xf4, 0x15, 0xf4, 0x6b, 0xf3, 0xf1, 0xf2, 0x20, 0xf2, 0x96, 0xf1, + 0xdd, 0xf1, 0x22, 0xf3, 0xe3, 0xf4, 0x90, 0xf7, 0x7a, 0xf9, 0xa5, 0xfb, + 0x20, 0xff, 0x41, 0x03, 0xf9, 0x06, 0x19, 0x0b, 0x79, 0x0e, 0x07, 0x11, + 0x38, 0x13, 0xfc, 0x14, 0x30, 0x17, 0xe7, 0x18, 0x33, 0x19, 0x60, 0x17, + 0xed, 0x14, 0x69, 0x13, 0x31, 0x12, 0x3e, 0x10, 0x73, 0x0d, 0xbd, 0x09, + 0x31, 0x06, 0xcf, 0x03, 0xbd, 0x01, 0xfa, 0xff, 0x7a, 0xfe, 0xb9, 0xfc, + 0x58, 0xfb, 0x7c, 0xfa, 0x82, 0xfa, 0x86, 0xfa, 0x7f, 0xfa, 0xde, 0xfa, + 0xf8, 0xfa, 0x55, 0xfb, 0x6f, 0xfb, 0x29, 0xfb, 0x18, 0xfb, 0x65, 0xfb, + 0x76, 0xfb, 0xe5, 0xfa, 0x99, 0xfa, 0x19, 0xfa, 0x84, 0xf9, 0x9a, 0xf9, + 0xdb, 0xf9, 0x87, 0xfa, 0x17, 0xfb, 0x59, 0xfb, 0x34, 0xfc, 0xd0, 0xfc, + 0x69, 0xfe, 0xeb, 0x00, 0x9f, 0x02, 0xe7, 0x03, 0x4a, 0x05, 0x14, 0x06, + 0xd3, 0x07, 0xd3, 0x09, 0xa1, 0x0a, 0x2f, 0x0b, 0x79, 0x0b, 0x2f, 0x0b, + 0x93, 0x0a, 0xe0, 0x09, 0xd1, 0x08, 0x1c, 0x08, 0xe7, 0x06, 0x53, 0x04, + 0x81, 0x01, 0x46, 0xff, 0x80, 0xfd, 0x33, 0xfc, 0x43, 0xfa, 0xd1, 0xf7, + 0x3d, 0xf5, 0x2e, 0xf3, 0x04, 0xf1, 0xdd, 0xef, 0x5b, 0xef, 0xdf, 0xed, + 0xfb, 0xeb, 0xb8, 0xe9, 0x0f, 0xe8, 0x57, 0xe7, 0x71, 0xe7, 0x97, 0xe8, + 0x26, 0xe9, 0xbc, 0xe8, 0x3f, 0xe9, 0xff, 0xea, 0xfb, 0xed, 0x51, 0xf3, + 0x87, 0xf7, 0x84, 0xf9, 0xd5, 0xfc, 0x2c, 0x01, 0xb2, 0x05, 0x78, 0x0a, + 0x8c, 0x0e, 0xfa, 0x10, 0x4d, 0x13, 0xbd, 0x14, 0x04, 0x15, 0xba, 0x15, + 0x21, 0x16, 0xa7, 0x15, 0xc2, 0x13, 0xd7, 0x10, 0x67, 0x0e, 0x55, 0x0c, + 0x3b, 0x0a, 0x38, 0x08, 0xd3, 0x05, 0x7b, 0x03, 0x8b, 0x01, 0xf6, 0xff, + 0xd3, 0xfe, 0xf4, 0xfd, 0x4c, 0xfd, 0x90, 0xfc, 0x34, 0xfc, 0x48, 0xfb, + 0xf7, 0xf9, 0x63, 0xf9, 0x64, 0xf9, 0xcd, 0xf8, 0x91, 0xf7, 0xf6, 0xf5, + 0xdf, 0xf4, 0xb1, 0xf4, 0x0b, 0xf4, 0x49, 0xf3, 0x46, 0xf3, 0x03, 0xf4, + 0xde, 0xf4, 0x67, 0xf5, 0x98, 0xf6, 0x07, 0xf9, 0x4f, 0xfc, 0x56, 0xff, + 0x06, 0x02, 0x8c, 0x04, 0xab, 0x07, 0x4f, 0x0b, 0xb3, 0x0e, 0x82, 0x11, + 0x13, 0x13, 0x2f, 0x14, 0x7c, 0x15, 0x38, 0x16, 0x3f, 0x16, 0x77, 0x15, + 0xd0, 0x13, 0x29, 0x12, 0x8b, 0x10, 0xd5, 0x0d, 0xde, 0x0a, 0x63, 0x08, + 0x6f, 0x06, 0x8f, 0x04, 0xa1, 0x01, 0x26, 0xff, 0xbf, 0xfd, 0x27, 0xfd, + 0x61, 0xfc, 0x56, 0xfb, 0xc2, 0xfa, 0x73, 0xfa, 0xfa, 0xfa, 0x39, 0xfb, + 0xcd, 0xfa, 0x22, 0xfb, 0x96, 0xfb, 0x5f, 0xfb, 0x77, 0xfb, 0x29, 0xfb, + 0xbe, 0xfa, 0xf3, 0xfa, 0x9f, 0xfa, 0x1a, 0xfa, 0xe5, 0xf9, 0xab, 0xf9, + 0xe2, 0xf9, 0x67, 0xfa, 0x5c, 0xfa, 0xdc, 0xfa, 0x1a, 0xfc, 0x57, 0xfd, + 0xc6, 0xfe, 0x11, 0x00, 0x37, 0x01, 0x05, 0x03, 0x1e, 0x05, 0xe0, 0x06, + 0x45, 0x08, 0x10, 0x09, 0x0b, 0x0a, 0xff, 0x0a, 0x59, 0x0b, 0xaf, 0x0b, + 0x54, 0x0b, 0x51, 0x0a, 0x13, 0x09, 0x48, 0x07, 0x86, 0x05, 0xbe, 0x03, + 0x00, 0x02, 0x27, 0x00, 0x1b, 0xfd, 0xca, 0xf9, 0xf2, 0xf7, 0x8c, 0xf6, + 0x61, 0xf4, 0xf8, 0xf2, 0x70, 0xf0, 0x80, 0xed, 0xe4, 0xec, 0xb2, 0xeb, + 0x8a, 0xea, 0xc4, 0xe9, 0xfb, 0xe7, 0xd5, 0xe6, 0x6f, 0xe7, 0xad, 0xe8, + 0xd8, 0xe9, 0x8c, 0xeb, 0x7d, 0xec, 0x7c, 0xee, 0x51, 0xf2, 0xaf, 0xf5, + 0x3d, 0xfa, 0x37, 0xfe, 0x0d, 0x01, 0xcc, 0x04, 0x90, 0x08, 0xdc, 0x0b, + 0x40, 0x0f, 0x29, 0x12, 0x60, 0x13, 0xdb, 0x13, 0xb9, 0x13, 0x9f, 0x13, + 0x64, 0x13, 0x79, 0x12, 0xe4, 0x10, 0x94, 0x0e, 0xc1, 0x0b, 0xab, 0x09, + 0x2b, 0x08, 0x85, 0x06, 0x11, 0x05, 0x12, 0x03, 0x21, 0x01, 0x5c, 0x00, + 0xca, 0xff, 0xaf, 0xfe, 0xcf, 0xfd, 0x85, 0xfd, 0x60, 0xfd, 0xdd, 0xfc, + 0xb6, 0xfb, 0x23, 0xfa, 0x25, 0xf9, 0xef, 0xf8, 0xb9, 0xf8, 0xeb, 0xf7, + 0x0e, 0xf6, 0x7c, 0xf4, 0xd6, 0xf3, 0x06, 0xf4, 0xe6, 0xf4, 0x86, 0xf5, + 0xea, 0xf5, 0xfc, 0xf6, 0x23, 0xf8, 0xb1, 0xf9, 0x8d, 0xfc, 0x9b, 0x00, + 0x53, 0x04, 0x87, 0x06, 0xf1, 0x07, 0xf4, 0x09, 0x86, 0x0d, 0x4d, 0x11, + 0x7e, 0x13, 0x28, 0x14, 0xd2, 0x13, 0x70, 0x13, 0x84, 0x13, 0x36, 0x13, + 0x96, 0x12, 0x2b, 0x11, 0xb3, 0x0e, 0xb0, 0x0b, 0xe6, 0x08, 0xec, 0x06, + 0x92, 0x05, 0x23, 0x04, 0x26, 0x02, 0xb6, 0xff, 0xa8, 0xfd, 0xad, 0xfc, + 0x81, 0xfc, 0xc3, 0xfc, 0x8a, 0xfc, 0xe9, 0xfb, 0x66, 0xfb, 0x7d, 0xfb, + 0x98, 0xfb, 0xa4, 0xfb, 0x44, 0xfc, 0x73, 0xfc, 0xd5, 0xfb, 0x2a, 0xfb, + 0x7d, 0xfa, 0x10, 0xfa, 0x6f, 0xfa, 0x6d, 0xfa, 0xe9, 0xf9, 0x78, 0xf9, + 0x0a, 0xf9, 0x67, 0xf9, 0x2e, 0xfa, 0xe5, 0xfa, 0x12, 0xfc, 0x4e, 0xfd, + 0x7d, 0xfe, 0xd7, 0xff, 0x58, 0x01, 0xf4, 0x02, 0x36, 0x05, 0x6c, 0x07, + 0x1e, 0x08, 0xd5, 0x08, 0x2e, 0x0a, 0xd2, 0x0a, 0x13, 0x0b, 0x43, 0x0b, + 0x9d, 0x0a, 0x8c, 0x09, 0x5a, 0x08, 0x5d, 0x06, 0x32, 0x04, 0xdf, 0x02, + 0xf8, 0x00, 0x9e, 0xfe, 0x23, 0xfc, 0x7f, 0xf9, 0x4f, 0xf7, 0x37, 0xf5, + 0xce, 0xf3, 0xf4, 0xf1, 0x08, 0xf0, 0x6d, 0xee, 0x72, 0xec, 0x42, 0xeb, + 0xf1, 0xe9, 0xb4, 0xe8, 0xd8, 0xe8, 0xc6, 0xe8, 0x32, 0xe9, 0x61, 0xe9, + 0xda, 0xe9, 0x40, 0xec, 0xfb, 0xee, 0x86, 0xf1, 0xdd, 0xf4, 0x24, 0xf8, + 0x13, 0xfb, 0x74, 0xfe, 0x46, 0x02, 0x33, 0x06, 0x1b, 0x0a, 0xd9, 0x0c, + 0x3c, 0x0e, 0xc2, 0x0f, 0x70, 0x11, 0xb2, 0x12, 0x19, 0x13, 0x5c, 0x12, + 0x35, 0x11, 0x15, 0x10, 0x9f, 0x0e, 0x0b, 0x0d, 0x4f, 0x0b, 0xa5, 0x09, + 0x2c, 0x08, 0x3c, 0x06, 0x43, 0x04, 0x28, 0x03, 0x87, 0x02, 0xdb, 0x01, + 0xd8, 0x00, 0x34, 0xff, 0x20, 0xfe, 0x31, 0xfe, 0x53, 0xfe, 0x97, 0xfd, + 0xf4, 0xfb, 0x89, 0xfa, 0xc3, 0xf9, 0x6f, 0xf9, 0xd2, 0xf8, 0x1f, 0xf8, + 0xd5, 0xf6, 0xd4, 0xf5, 0x1d, 0xf5, 0x25, 0xf5, 0x66, 0xf6, 0xf2, 0xf6, + 0x87, 0xf7, 0x0a, 0xf8, 0x26, 0xf9, 0xad, 0xfb, 0xaa, 0xfe, 0x5a, 0x01, + 0x75, 0x03, 0x69, 0x05, 0xd2, 0x07, 0x68, 0x0a, 0xe2, 0x0c, 0x27, 0x0f, + 0xae, 0x10, 0x55, 0x11, 0x8f, 0x11, 0x94, 0x11, 0x97, 0x11, 0x78, 0x11, + 0x79, 0x10, 0x7d, 0x0e, 0x78, 0x0c, 0xf1, 0x0a, 0x19, 0x09, 0x43, 0x07, + 0x71, 0x05, 0x80, 0x03, 0xdf, 0x01, 0x76, 0x00, 0x2f, 0xff, 0x17, 0xfe, + 0xa3, 0xfd, 0x22, 0xfd, 0x6d, 0xfc, 0x56, 0xfc, 0x54, 0xfc, 0x66, 0xfc, + 0xdb, 0xfb, 0x64, 0xfb, 0xd0, 0xfb, 0xfe, 0xfb, 0xa1, 0xfb, 0x02, 0xfb, + 0x24, 0xfa, 0xf0, 0xf9, 0x1b, 0xfa, 0x0f, 0xfa, 0x8c, 0xf9, 0x22, 0xf9, + 0x5f, 0xf9, 0xb3, 0xf9, 0x2a, 0xfa, 0x0c, 0xfb, 0x47, 0xfc, 0x58, 0xfd, + 0x97, 0xfe, 0xe1, 0xff, 0x47, 0x01, 0x55, 0x03, 0x52, 0x05, 0x92, 0x06, + 0x72, 0x07, 0x80, 0x08, 0x8c, 0x09, 0x5a, 0x0a, 0xdd, 0x0a, 0x5f, 0x0a, + 0x5b, 0x09, 0x21, 0x08, 0x5d, 0x07, 0x4b, 0x06, 0x19, 0x04, 0x1f, 0x02, + 0xff, 0xff, 0xbf, 0xfd, 0xd6, 0xfb, 0x4f, 0xf9, 0x5f, 0xf7, 0xd5, 0xf5, + 0xae, 0xf3, 0x77, 0xf1, 0x9b, 0xef, 0x3a, 0xee, 0x6c, 0xed, 0xf1, 0xeb, + 0x33, 0xea, 0xe6, 0xe8, 0x03, 0xe9, 0x9b, 0xe9, 0x89, 0xea, 0x9a, 0xeb, + 0x9d, 0xeb, 0x00, 0xed, 0xef, 0xef, 0x88, 0xf3, 0x68, 0xf7, 0xda, 0xf9, + 0xc8, 0xfb, 0x2b, 0xff, 0x33, 0x03, 0xe3, 0x06, 0xbb, 0x0a, 0xc6, 0x0c, + 0x67, 0x0d, 0xce, 0x0e, 0x02, 0x10, 0x84, 0x11, 0x64, 0x12, 0xa0, 0x11, + 0xd8, 0x0f, 0x0e, 0x0e, 0x01, 0x0d, 0xaf, 0x0c, 0xdc, 0x0b, 0xbe, 0x09, + 0x27, 0x07, 0x29, 0x05, 0x47, 0x04, 0x40, 0x04, 0x8f, 0x03, 0xdd, 0x01, + 0xa8, 0x00, 0x88, 0xff, 0xcc, 0xfe, 0xb5, 0xfe, 0xa4, 0xfe, 0x3b, 0xfe, + 0x93, 0xfc, 0xaa, 0xfa, 0xcd, 0xf9, 0xf5, 0xf9, 0xcf, 0xf9, 0x06, 0xf9, + 0x6a, 0xf7, 0x80, 0xf6, 0x74, 0xf6, 0x86, 0xf6, 0xff, 0xf6, 0xb4, 0xf7, + 0x44, 0xf8, 0x98, 0xf9, 0xce, 0xfa, 0xd2, 0xfb, 0x5b, 0xfe, 0xfc, 0x00, + 0x45, 0x03, 0x94, 0x05, 0x32, 0x07, 0x1d, 0x09, 0x9d, 0x0b, 0x42, 0x0d, + 0x72, 0x0e, 0x66, 0x0f, 0x23, 0x10, 0x81, 0x10, 0x0b, 0x10, 0x03, 0x0f, + 0x1b, 0x0e, 0x7a, 0x0d, 0x55, 0x0c, 0xc9, 0x0a, 0x9b, 0x08, 0x96, 0x06, + 0x18, 0x05, 0xb7, 0x03, 0x79, 0x02, 0x35, 0x01, 0xe1, 0xff, 0xb7, 0xfe, + 0xad, 0xfd, 0xf5, 0xfc, 0x0d, 0xfd, 0x27, 0xfd, 0xb2, 0xfc, 0xf9, 0xfb, + 0x76, 0xfb, 0x98, 0xfb, 0x0a, 0xfc, 0xf8, 0xfb, 0x3b, 0xfb, 0xd0, 0xfa, + 0xbc, 0xfa, 0x56, 0xfa, 0x1e, 0xfa, 0x01, 0xfa, 0xe7, 0xf9, 0xbe, 0xf9, + 0xba, 0xf9, 0x05, 0xfa, 0x95, 0xfa, 0x5a, 0xfb, 0x28, 0xfc, 0x23, 0xfd, + 0x5a, 0xfe, 0x02, 0x00, 0xc9, 0x01, 0xf1, 0x02, 0x27, 0x04, 0xc6, 0x05, + 0x72, 0x07, 0xeb, 0x08, 0xe7, 0x09, 0x0c, 0x0a, 0x06, 0x0a, 0x15, 0x0a, + 0xc5, 0x09, 0x39, 0x09, 0xc8, 0x07, 0x3b, 0x06, 0x0c, 0x04, 0xfe, 0x01, + 0x7e, 0x00, 0x51, 0xfe, 0x15, 0xfc, 0xb9, 0xf9, 0x08, 0xf7, 0x22, 0xf5, + 0x95, 0xf3, 0xc3, 0xf1, 0x14, 0xf0, 0x5f, 0xee, 0x8a, 0xec, 0x42, 0xeb, + 0x93, 0xea, 0xd0, 0xe9, 0x08, 0xea, 0x63, 0xea, 0xb9, 0xea, 0x8d, 0xeb, + 0xca, 0xec, 0x0d, 0xef, 0xe6, 0xf1, 0x88, 0xf4, 0x42, 0xf7, 0x35, 0xfa, + 0x1d, 0xfd, 0x79, 0x00, 0x9e, 0x03, 0x6d, 0x06, 0x3c, 0x09, 0xb6, 0x0b, + 0x19, 0x0d, 0x32, 0x0e, 0xdc, 0x0e, 0x26, 0x0f, 0xf6, 0x0f, 0x19, 0x10, + 0x76, 0x0f, 0x9e, 0x0d, 0x79, 0x0b, 0xd3, 0x0a, 0xdb, 0x0a, 0xf5, 0x09, + 0x15, 0x08, 0x29, 0x06, 0xd2, 0x04, 0x22, 0x04, 0xdc, 0x03, 0x01, 0x03, + 0x17, 0x02, 0xf7, 0x00, 0x07, 0x00, 0x56, 0xff, 0x52, 0xfe, 0xca, 0xfd, + 0x57, 0xfd, 0x4b, 0xfc, 0xe8, 0xfa, 0xa3, 0xf9, 0x0a, 0xf9, 0xcc, 0xf8, + 0x3d, 0xf8, 0x37, 0xf7, 0xe6, 0xf6, 0x44, 0xf7, 0x92, 0xf7, 0x15, 0xf8, + 0x7c, 0xf8, 0xc0, 0xf9, 0x9e, 0xfb, 0x29, 0xfd, 0xd5, 0xfe, 0xb7, 0x00, + 0xbc, 0x02, 0x0b, 0x05, 0xe4, 0x06, 0x9b, 0x08, 0xde, 0x0a, 0x9d, 0x0c, + 0x41, 0x0d, 0xfa, 0x0d, 0x91, 0x0e, 0xf3, 0x0e, 0x52, 0x0f, 0xd5, 0x0e, + 0xa8, 0x0d, 0x9d, 0x0c, 0x31, 0x0b, 0xed, 0x09, 0x1d, 0x09, 0x90, 0x07, + 0xcd, 0x05, 0xfb, 0x03, 0x52, 0x02, 0x7f, 0x01, 0xa5, 0x00, 0xad, 0xff, + 0xd3, 0xfe, 0xd2, 0xfd, 0x56, 0xfd, 0xed, 0xfc, 0x9d, 0xfc, 0xb1, 0xfc, + 0x90, 0xfc, 0x18, 0xfc, 0x97, 0xfb, 0x29, 0xfb, 0x22, 0xfb, 0x57, 0xfb, + 0xf2, 0xfa, 0x4f, 0xfa, 0xc3, 0xf9, 0x6b, 0xf9, 0x89, 0xf9, 0xc4, 0xf9, + 0xd5, 0xf9, 0xe1, 0xf9, 0x07, 0xfa, 0xc5, 0xfa, 0xfe, 0xfb, 0x0d, 0xfd, + 0x2b, 0xfe, 0xc7, 0xff, 0x11, 0x01, 0x6c, 0x02, 0x2d, 0x04, 0xd9, 0x05, + 0x5a, 0x07, 0x7b, 0x08, 0x28, 0x09, 0xd0, 0x09, 0x4e, 0x0a, 0x5b, 0x0a, + 0xf7, 0x09, 0x17, 0x09, 0xc5, 0x07, 0x34, 0x06, 0x71, 0x04, 0xb1, 0x02, + 0x09, 0x01, 0x7a, 0xfe, 0xcd, 0xfb, 0xab, 0xf9, 0xd9, 0xf7, 0x9e, 0xf5, + 0xe4, 0xf3, 0xae, 0xf1, 0xce, 0xef, 0x56, 0xee, 0xa6, 0xec, 0x5f, 0xeb, + 0x17, 0xeb, 0xe5, 0xea, 0x3a, 0xea, 0x54, 0xea, 0x7e, 0xeb, 0xc3, 0xec, + 0x51, 0xee, 0x4e, 0xf0, 0x6e, 0xf2, 0x28, 0xf5, 0xf2, 0xf7, 0xe4, 0xfa, + 0xf3, 0xfd, 0xa8, 0x00, 0x18, 0x03, 0x40, 0x06, 0x6c, 0x08, 0x41, 0x0a, + 0xdc, 0x0b, 0xc4, 0x0c, 0x58, 0x0d, 0xdb, 0x0d, 0xf9, 0x0d, 0xd2, 0x0d, + 0x76, 0x0d, 0x49, 0x0c, 0x00, 0x0b, 0x27, 0x0a, 0x9d, 0x09, 0x42, 0x09, + 0x21, 0x08, 0x87, 0x06, 0x93, 0x05, 0x1a, 0x05, 0xc4, 0x04, 0x58, 0x04, + 0x46, 0x03, 0x73, 0x02, 0xda, 0x01, 0xf2, 0x00, 0x08, 0x00, 0x5d, 0xff, + 0x80, 0xfe, 0x61, 0xfd, 0x1a, 0xfc, 0xe6, 0xfa, 0x10, 0xfa, 0x2f, 0xf9, + 0x1d, 0xf8, 0x94, 0xf7, 0x64, 0xf7, 0x4b, 0xf7, 0x78, 0xf7, 0x81, 0xf7, + 0xfd, 0xf7, 0x7f, 0xf9, 0x36, 0xfb, 0xd3, 0xfc, 0x40, 0xfe, 0xc7, 0xff, + 0x1c, 0x02, 0x51, 0x04, 0x44, 0x06, 0x6a, 0x08, 0x1e, 0x0a, 0x69, 0x0b, + 0x7a, 0x0c, 0x33, 0x0d, 0x0e, 0x0e, 0xbb, 0x0e, 0xb9, 0x0e, 0x06, 0x0e, + 0xad, 0x0c, 0xc1, 0x0b, 0x52, 0x0b, 0x4e, 0x0a, 0xd1, 0x08, 0xc6, 0x06, + 0x1b, 0x05, 0x2d, 0x04, 0x1d, 0x03, 0x0c, 0x02, 0xd2, 0x00, 0xe4, 0xff, + 0x44, 0xff, 0x93, 0xfe, 0x16, 0xfe, 0x04, 0xfe, 0xfe, 0xfd, 0x8a, 0xfd, + 0xe3, 0xfc, 0x8d, 0xfc, 0xab, 0xfc, 0x9a, 0xfc, 0xf2, 0xfb, 0x40, 0xfb, + 0xd6, 0xfa, 0x84, 0xfa, 0x15, 0xfa, 0xa0, 0xf9, 0x50, 0xf9, 0x2d, 0xf9, + 0x17, 0xf9, 0x0c, 0xf9, 0x8a, 0xf9, 0x51, 0xfa, 0x28, 0xfb, 0x07, 0xfc, + 0x1c, 0xfd, 0x91, 0xfe, 0x2c, 0x00, 0xc2, 0x01, 0x26, 0x03, 0xad, 0x04, + 0x14, 0x06, 0x4b, 0x07, 0x7b, 0x08, 0x1f, 0x09, 0x48, 0x09, 0x30, 0x09, + 0xe8, 0x08, 0x69, 0x08, 0x66, 0x07, 0xca, 0x05, 0x4d, 0x04, 0xa6, 0x02, + 0xba, 0x00, 0x9d, 0xfe, 0x6c, 0xfc, 0x57, 0xfa, 0x4f, 0xf8, 0x65, 0xf6, + 0x5b, 0xf4, 0x1f, 0xf2, 0x93, 0xf0, 0x2c, 0xef, 0xd6, 0xed, 0x98, 0xec, + 0x91, 0xeb, 0xff, 0xea, 0x65, 0xeb, 0x27, 0xec, 0x83, 0xec, 0x8b, 0xed, + 0xec, 0xee, 0xff, 0xf0, 0xa7, 0xf3, 0xfa, 0xf5, 0x89, 0xf8, 0x2c, 0xfb, + 0xb5, 0xfd, 0x88, 0x00, 0x2c, 0x03, 0x5e, 0x05, 0x60, 0x07, 0x0b, 0x09, + 0x03, 0x0a, 0x12, 0x0b, 0xc9, 0x0b, 0x1c, 0x0c, 0x55, 0x0c, 0xec, 0x0b, + 0x17, 0x0b, 0xcd, 0x0a, 0x62, 0x0a, 0x9f, 0x09, 0x22, 0x09, 0x4a, 0x08, + 0x91, 0x07, 0x1d, 0x07, 0xa5, 0x06, 0x4b, 0x06, 0xfa, 0x05, 0x46, 0x05, + 0xac, 0x04, 0x38, 0x04, 0xa3, 0x03, 0x25, 0x03, 0x56, 0x02, 0x2f, 0x01, + 0x4c, 0x00, 0x22, 0xff, 0xdf, 0xfd, 0xd9, 0xfc, 0xd4, 0xfb, 0xbc, 0xfa, + 0x97, 0xf9, 0x93, 0xf8, 0xfb, 0xf7, 0xd5, 0xf7, 0xd8, 0xf7, 0x15, 0xf8, + 0x71, 0xf8, 0x07, 0xf9, 0x52, 0xfa, 0xf4, 0xfb, 0x5e, 0xfd, 0xfc, 0xfe, + 0xe7, 0x00, 0xe3, 0x02, 0xc5, 0x04, 0x70, 0x06, 0xf4, 0x07, 0x5c, 0x09, + 0xbe, 0x0a, 0xe3, 0x0b, 0x5e, 0x0c, 0x5f, 0x0c, 0x2e, 0x0c, 0x17, 0x0c, + 0xe7, 0x0b, 0x2c, 0x0b, 0x11, 0x0a, 0xd4, 0x08, 0xb3, 0x07, 0xa7, 0x06, + 0x92, 0x05, 0x93, 0x04, 0xb1, 0x03, 0xdb, 0x02, 0xb7, 0x01, 0xf4, 0x00, + 0xb3, 0x00, 0x7d, 0x00, 0x24, 0x00, 0xa3, 0xff, 0x2f, 0xff, 0xf3, 0xfe, + 0xc5, 0xfe, 0x5a, 0xfe, 0xd4, 0xfd, 0x49, 0xfd, 0xdf, 0xfc, 0x35, 0xfc, + 0x52, 0xfb, 0x8c, 0xfa, 0xfe, 0xf9, 0x94, 0xf9, 0x31, 0xf9, 0xce, 0xf8, + 0xa5, 0xf8, 0xbf, 0xf8, 0xe5, 0xf8, 0x5e, 0xf9, 0x59, 0xfa, 0x87, 0xfb, + 0xaf, 0xfc, 0xc5, 0xfd, 0xf3, 0xfe, 0x79, 0x00, 0x2a, 0x02, 0xdf, 0x03, + 0x2a, 0x05, 0x14, 0x06, 0xdf, 0x06, 0x68, 0x07, 0xc9, 0x07, 0x1e, 0x08, + 0xf4, 0x07, 0x2d, 0x07, 0xe3, 0x05, 0x84, 0x04, 0x5f, 0x03, 0x11, 0x02, + 0x5b, 0x00, 0x74, 0xfe, 0x62, 0xfc, 0x2f, 0xfa, 0xc4, 0xf8, 0x5a, 0xf7, + 0x73, 0xf5, 0xf3, 0xf3, 0x3f, 0xf2, 0x92, 0xf0, 0x6e, 0xef, 0xa7, 0xee, + 0x0c, 0xee, 0xdf, 0xed, 0x9a, 0xed, 0x81, 0xed, 0x25, 0xee, 0x1e, 0xef, + 0xaf, 0xf0, 0x9b, 0xf2, 0x42, 0xf4, 0x0e, 0xf6, 0x47, 0xf8, 0xa5, 0xfa, + 0x42, 0xfd, 0xfe, 0xff, 0x01, 0x02, 0xcb, 0x03, 0xba, 0x05, 0x28, 0x07, + 0xa5, 0x08, 0xdf, 0x09, 0x94, 0x0a, 0xcf, 0x0a, 0x82, 0x0a, 0x46, 0x0a, + 0x5e, 0x0a, 0x7e, 0x0a, 0xf4, 0x09, 0xf3, 0x08, 0xfb, 0x07, 0x65, 0x07, + 0x3a, 0x07, 0x4c, 0x07, 0xfd, 0x06, 0x2a, 0x06, 0x0d, 0x05, 0xc8, 0x04, + 0x22, 0x05, 0xe8, 0x04, 0x6c, 0x04, 0x9c, 0x03, 0xd8, 0x02, 0x2b, 0x02, + 0x51, 0x01, 0x6b, 0x00, 0xbf, 0xff, 0xe5, 0xfe, 0xb4, 0xfd, 0x63, 0xfc, + 0x0d, 0xfb, 0x55, 0xfa, 0x45, 0xfa, 0xc8, 0xf9, 0x38, 0xf9, 0xe4, 0xf8, + 0x13, 0xf9, 0xce, 0xf9, 0x9d, 0xfa, 0x9d, 0xfb, 0xe8, 0xfc, 0x55, 0xfe, + 0xec, 0xff, 0x91, 0x01, 0x00, 0x03, 0xa6, 0x04, 0x69, 0x06, 0xf4, 0x07, + 0x4d, 0x09, 0x0b, 0x0a, 0x7b, 0x0a, 0x04, 0x0b, 0x55, 0x0b, 0x4f, 0x0b, + 0x24, 0x0b, 0x72, 0x0a, 0x8c, 0x09, 0x9f, 0x08, 0x9a, 0x07, 0xb9, 0x06, + 0xdc, 0x05, 0xf3, 0x04, 0xfe, 0x03, 0xd5, 0x02, 0xf9, 0x01, 0x95, 0x01, + 0x2d, 0x01, 0xe1, 0x00, 0x7f, 0x00, 0xd4, 0xff, 0x6a, 0xff, 0x63, 0xff, + 0x2d, 0xff, 0xf4, 0xfe, 0x7e, 0xfe, 0xb8, 0xfd, 0x24, 0xfd, 0x8f, 0xfc, + 0xde, 0xfb, 0x72, 0xfb, 0xc6, 0xfa, 0xd6, 0xf9, 0x35, 0xf9, 0xd8, 0xf8, + 0xc2, 0xf8, 0xcc, 0xf8, 0xec, 0xf8, 0x31, 0xf9, 0xae, 0xf9, 0x95, 0xfa, + 0xa7, 0xfb, 0x00, 0xfd, 0x64, 0xfe, 0xa5, 0xff, 0x08, 0x01, 0x74, 0x02, + 0xec, 0x03, 0x2b, 0x05, 0x0f, 0x06, 0xb7, 0x06, 0xe4, 0x06, 0xdf, 0x06, + 0xdd, 0x06, 0x21, 0x06, 0x25, 0x05, 0x28, 0x04, 0xa9, 0x02, 0x36, 0x01, + 0x83, 0xff, 0xb6, 0xfd, 0x24, 0xfc, 0x85, 0xfa, 0xf8, 0xf8, 0x29, 0xf7, + 0x55, 0xf5, 0xe2, 0xf3, 0xb6, 0xf2, 0x7f, 0xf1, 0x8a, 0xf0, 0xa6, 0xef, + 0x15, 0xef, 0xfb, 0xee, 0xfc, 0xee, 0x9a, 0xef, 0x7e, 0xf0, 0x2d, 0xf1, + 0x89, 0xf2, 0x2c, 0xf4, 0xcd, 0xf5, 0xd1, 0xf7, 0xf0, 0xf9, 0xe8, 0xfb, + 0x02, 0xfe, 0xd8, 0xff, 0x80, 0x01, 0x7d, 0x03, 0x16, 0x05, 0x5c, 0x06, + 0x54, 0x07, 0x88, 0x07, 0xdb, 0x07, 0xb1, 0x08, 0x19, 0x09, 0x11, 0x09, + 0x92, 0x08, 0xcc, 0x07, 0x9e, 0x07, 0xeb, 0x07, 0xde, 0x07, 0xa7, 0x07, + 0xfe, 0x06, 0x69, 0x06, 0x7d, 0x06, 0xb0, 0x06, 0xb7, 0x06, 0x72, 0x06, + 0xc4, 0x05, 0x5e, 0x05, 0x43, 0x05, 0xd1, 0x04, 0x1c, 0x04, 0x58, 0x03, + 0x80, 0x02, 0x94, 0x01, 0x74, 0x00, 0x44, 0xff, 0x84, 0xfe, 0xb6, 0xfd, + 0x72, 0xfc, 0x49, 0xfb, 0xae, 0xfa, 0x81, 0xfa, 0x60, 0xfa, 0x25, 0xfa, + 0xfd, 0xf9, 0x52, 0xfa, 0x49, 0xfb, 0x6a, 0xfc, 0x84, 0xfd, 0x66, 0xfe, + 0x9a, 0xff, 0x26, 0x01, 0x96, 0x02, 0xe3, 0x03, 0x41, 0x05, 0x8d, 0x06, + 0x79, 0x07, 0x20, 0x08, 0x8c, 0x08, 0x2f, 0x09, 0xc8, 0x09, 0xbf, 0x09, + 0x40, 0x09, 0xbd, 0x08, 0x66, 0x08, 0x0e, 0x08, 0x6b, 0x07, 0x98, 0x06, + 0xe7, 0x05, 0x37, 0x05, 0x60, 0x04, 0xb4, 0x03, 0x2c, 0x03, 0xdf, 0x02, + 0x5c, 0x02, 0x9c, 0x01, 0x10, 0x01, 0x9e, 0x00, 0x66, 0x00, 0x1f, 0x00, + 0x76, 0xff, 0xbe, 0xfe, 0x1e, 0xfe, 0x80, 0xfd, 0x09, 0xfd, 0x63, 0xfc, + 0xa2, 0xfb, 0xdc, 0xfa, 0x11, 0xfa, 0x94, 0xf9, 0x65, 0xf9, 0x2c, 0xf9, + 0xd6, 0xf8, 0xc4, 0xf8, 0x0c, 0xf9, 0x93, 0xf9, 0x54, 0xfa, 0x26, 0xfb, + 0x1e, 0xfc, 0x38, 0xfd, 0x52, 0xfe, 0x95, 0xff, 0xee, 0x00, 0x42, 0x02, + 0x5e, 0x03, 0x2a, 0x04, 0xd5, 0x04, 0x62, 0x05, 0xd5, 0x05, 0xd1, 0x05, + 0x57, 0x05, 0xa4, 0x04, 0xe4, 0x03, 0xe6, 0x02, 0xdf, 0x01, 0x35, 0x00, + 0xa2, 0xfe, 0xa0, 0xfd, 0x09, 0xfc, 0x51, 0xfa, 0xe3, 0xf8, 0x5f, 0xf7, + 0x2c, 0xf6, 0x26, 0xf5, 0x58, 0xf3, 0x3c, 0xf2, 0xaf, 0xf1, 0xc9, 0xf0, + 0x83, 0xf0, 0x81, 0xf0, 0x6b, 0xf0, 0x20, 0xf1, 0xc4, 0xf1, 0x7a, 0xf2, + 0xb8, 0xf3, 0x89, 0xf5, 0x65, 0xf7, 0x09, 0xf9, 0xcd, 0xfa, 0x6f, 0xfc, + 0x4c, 0xfe, 0x6a, 0x00, 0x42, 0x02, 0xa6, 0x03, 0xe3, 0x04, 0xce, 0x05, + 0x54, 0x06, 0xf9, 0x06, 0xa9, 0x07, 0x11, 0x08, 0x16, 0x08, 0x83, 0x07, + 0x2e, 0x07, 0x30, 0x07, 0x36, 0x07, 0x3e, 0x07, 0x0b, 0x07, 0x92, 0x06, + 0x85, 0x06, 0x90, 0x06, 0x81, 0x06, 0xa1, 0x06, 0xba, 0x06, 0xb0, 0x06, + 0x77, 0x06, 0xea, 0x05, 0x72, 0x05, 0x6a, 0x05, 0x22, 0x05, 0x60, 0x04, + 0x26, 0x03, 0x11, 0x02, 0x49, 0x01, 0x55, 0x00, 0x39, 0xff, 0x4a, 0xfe, + 0x9b, 0xfd, 0xaa, 0xfc, 0xa3, 0xfb, 0xf4, 0xfa, 0x85, 0xfa, 0xec, 0xfa, + 0x8c, 0xfb, 0xa5, 0xfb, 0xbc, 0xfb, 0x1f, 0xfc, 0x36, 0xfd, 0xc3, 0xfe, + 0x1b, 0x00, 0x47, 0x01, 0x44, 0x02, 0x1e, 0x03, 0x3d, 0x04, 0x61, 0x05, + 0x47, 0x06, 0x37, 0x07, 0xe1, 0x07, 0xf6, 0x07, 0xc2, 0x07, 0x8d, 0x07, + 0xac, 0x07, 0xf7, 0x07, 0xac, 0x07, 0xeb, 0x06, 0x27, 0x06, 0x75, 0x05, + 0x08, 0x05, 0xdb, 0x04, 0x88, 0x04, 0x07, 0x04, 0x70, 0x03, 0xea, 0x02, + 0x60, 0x02, 0xff, 0x01, 0xf9, 0x01, 0xd1, 0x01, 0x47, 0x01, 0x92, 0x00, + 0xdb, 0xff, 0x1d, 0xff, 0xbe, 0xfe, 0x43, 0xfe, 0x8e, 0xfd, 0x8d, 0xfc, + 0xa2, 0xfb, 0xc6, 0xfa, 0x2d, 0xfa, 0x9d, 0xf9, 0x43, 0xf9, 0x38, 0xf9, + 0x0a, 0xf9, 0xdd, 0xf8, 0xfe, 0xf8, 0x7e, 0xf9, 0x64, 0xfa, 0x9e, 0xfb, + 0x98, 0xfc, 0x82, 0xfd, 0x80, 0xfe, 0x9b, 0xff, 0xe2, 0x00, 0x31, 0x02, + 0x63, 0x03, 0xf2, 0x03, 0x35, 0x04, 0x3e, 0x04, 0x53, 0x04, 0x6d, 0x04, + 0x4c, 0x04, 0xa9, 0x03, 0x6e, 0x02, 0x12, 0x01, 0x2a, 0x00, 0x54, 0xff, + 0x43, 0xfe, 0xf8, 0xfc, 0x30, 0xfb, 0xe8, 0xf9, 0xcc, 0xf8, 0xaf, 0xf7, + 0x6f, 0xf6, 0x5e, 0xf5, 0x0c, 0xf4, 0xf5, 0xf2, 0x77, 0xf2, 0x0c, 0xf2, + 0xcf, 0xf1, 0xda, 0xf1, 0x08, 0xf2, 0x5f, 0xf2, 0xf2, 0xf2, 0x39, 0xf4, + 0xe0, 0xf5, 0x38, 0xf7, 0x9f, 0xf8, 0x1a, 0xfa, 0xcd, 0xfb, 0xcd, 0xfd, + 0xd3, 0xff, 0x4e, 0x01, 0x77, 0x02, 0x99, 0x03, 0x7f, 0x04, 0x89, 0x05, + 0xaf, 0x06, 0xd8, 0x06, 0x88, 0x06, 0x64, 0x06, 0x74, 0x06, 0xda, 0x06, + 0xae, 0x06, 0x08, 0x06, 0x8b, 0x05, 0x4f, 0x05, 0x7d, 0x05, 0xc7, 0x05, + 0xc8, 0x05, 0x90, 0x05, 0x8b, 0x05, 0xa9, 0x05, 0xed, 0x05, 0x2b, 0x06, + 0x3f, 0x06, 0x6b, 0x06, 0x26, 0x06, 0x83, 0x05, 0xcd, 0x04, 0x68, 0x04, + 0x4a, 0x04, 0xde, 0x03, 0x73, 0x02, 0x03, 0x01, 0xeb, 0xff, 0x64, 0xff, + 0xde, 0xfe, 0xba, 0xfd, 0xaf, 0xfc, 0x48, 0xfc, 0x5f, 0xfc, 0x1f, 0xfc, + 0x79, 0xfb, 0xa4, 0xfb, 0x9a, 0xfc, 0xe8, 0xfd, 0xe0, 0xfe, 0xfd, 0xfe, + 0x6b, 0xff, 0xb3, 0x00, 0x67, 0x02, 0xdf, 0x03, 0xa4, 0x04, 0x3c, 0x05, + 0xcb, 0x05, 0x30, 0x06, 0xa9, 0x06, 0x1d, 0x07, 0xa2, 0x07, 0xc7, 0x07, + 0x29, 0x07, 0x54, 0x06, 0xac, 0x05, 0x9b, 0x05, 0xc8, 0x05, 0x80, 0x05, + 0xb0, 0x04, 0xa8, 0x03, 0x2e, 0x03, 0xf2, 0x02, 0xfd, 0x02, 0xfd, 0x02, + 0xb1, 0x02, 0x2e, 0x02, 0xa0, 0x01, 0x28, 0x01, 0xf4, 0x00, 0x04, 0x01, + 0xcd, 0x00, 0x09, 0x00, 0xff, 0xfe, 0xf3, 0xfd, 0x62, 0xfd, 0xff, 0xfc, + 0x6f, 0xfc, 0xa3, 0xfb, 0xac, 0xfa, 0xf0, 0xf9, 0x8a, 0xf9, 0x65, 0xf9, + 0x6f, 0xf9, 0x9b, 0xf9, 0x06, 0xfa, 0x5f, 0xfa, 0xd8, 0xfa, 0xb3, 0xfb, + 0xc7, 0xfc, 0x12, 0xfe, 0x54, 0xff, 0x54, 0x00, 0x34, 0x01, 0xec, 0x01, + 0xbf, 0x02, 0x74, 0x03, 0x0a, 0x04, 0x47, 0x04, 0xf4, 0x03, 0x7a, 0x03, + 0x18, 0x03, 0x77, 0x02, 0xb2, 0x01, 0xa7, 0x00, 0x86, 0xff, 0x71, 0xfe, + 0x36, 0xfd, 0xec, 0xfb, 0x9c, 0xfa, 0x72, 0xf9, 0x74, 0xf8, 0x5a, 0xf7, + 0xde, 0xf5, 0x8d, 0xf4, 0xb6, 0xf3, 0x0b, 0xf3, 0xa8, 0xf2, 0x75, 0xf2, + 0x3f, 0xf2, 0xe9, 0xf1, 0x3c, 0xf2, 0x34, 0xf3, 0x89, 0xf4, 0xf9, 0xf5, + 0xff, 0xf6, 0xfb, 0xf7, 0x5d, 0xf9, 0x92, 0xfb, 0xb1, 0xfd, 0x44, 0xff, + 0x58, 0x00, 0x7c, 0x01, 0xb9, 0x02, 0xee, 0x03, 0xf1, 0x04, 0x85, 0x05, + 0xc2, 0x05, 0xe8, 0x05, 0xd8, 0x05, 0xc4, 0x05, 0xd2, 0x05, 0xe1, 0x05, + 0xa8, 0x05, 0x47, 0x05, 0x0d, 0x05, 0x16, 0x05, 0x58, 0x05, 0xa0, 0x05, + 0xb6, 0x05, 0xae, 0x05, 0xee, 0x05, 0x3e, 0x06, 0x9b, 0x06, 0xe2, 0x06, + 0xc9, 0x06, 0xb2, 0x06, 0x74, 0x06, 0x1d, 0x06, 0xce, 0x05, 0x2c, 0x05, + 0x4d, 0x04, 0x7c, 0x03, 0x66, 0x02, 0x5d, 0x01, 0x7d, 0x00, 0x8e, 0xff, + 0xaf, 0xfe, 0xbc, 0xfd, 0xf7, 0xfc, 0x74, 0xfc, 0x64, 0xfc, 0x71, 0xfc, + 0x43, 0xfc, 0x83, 0xfc, 0x39, 0xfd, 0x06, 0xfe, 0xc4, 0xfe, 0x9f, 0xff, + 0x9a, 0x00, 0x76, 0x01, 0x85, 0x02, 0x97, 0x03, 0x6f, 0x04, 0x06, 0x05, + 0x7b, 0x05, 0xeb, 0x05, 0x46, 0x06, 0x6a, 0x06, 0x5d, 0x06, 0x19, 0x06, + 0xe2, 0x05, 0x9b, 0x05, 0x05, 0x05, 0xaf, 0x04, 0x4f, 0x04, 0x20, 0x04, + 0xc3, 0x03, 0x42, 0x03, 0x01, 0x03, 0xd8, 0x02, 0xeb, 0x02, 0xc0, 0x02, + 0x81, 0x02, 0x73, 0x02, 0x3b, 0x02, 0xde, 0x01, 0x78, 0x01, 0x24, 0x01, + 0xca, 0x00, 0x39, 0x00, 0x74, 0xff, 0x7c, 0xfe, 0x9a, 0xfd, 0x31, 0xfd, + 0xa2, 0xfc, 0xbf, 0xfb, 0x04, 0xfb, 0x6c, 0xfa, 0x36, 0xfa, 0x0a, 0xfa, + 0x3a, 0xfa, 0x79, 0xfa, 0xb5, 0xfa, 0x38, 0xfb, 0xd9, 0xfb, 0xc2, 0xfc, + 0xe8, 0xfd, 0xdd, 0xfe, 0xa0, 0xff, 0x6e, 0x00, 0x4b, 0x01, 0x13, 0x02, + 0xaf, 0x02, 0xf5, 0x02, 0x0c, 0x03, 0xff, 0x02, 0xb6, 0x02, 0x61, 0x02, + 0xcc, 0x01, 0xf8, 0x00, 0x25, 0x00, 0x36, 0xff, 0x41, 0xfe, 0x0b, 0xfd, + 0x10, 0xfc, 0x45, 0xfb, 0x14, 0xfa, 0xca, 0xf8, 0x87, 0xf7, 0x54, 0xf6, + 0x7c, 0xf5, 0xd3, 0xf4, 0xcd, 0xf3, 0xe8, 0xf2, 0x8e, 0xf2, 0x74, 0xf2, + 0xa0, 0xf2, 0x11, 0xf3, 0x6a, 0xf3, 0x33, 0xf4, 0x26, 0xf5, 0xa2, 0xf6, + 0x51, 0xf8, 0x96, 0xf9, 0x64, 0xfb, 0xf3, 0xfc, 0x47, 0xfe, 0xfc, 0xff, + 0x99, 0x01, 0xdc, 0x02, 0xd5, 0x03, 0x7b, 0x04, 0xf5, 0x04, 0x80, 0x05, + 0xc7, 0x05, 0xc7, 0x05, 0xca, 0x05, 0xa3, 0x05, 0x4e, 0x05, 0x0d, 0x05, + 0xda, 0x04, 0xd7, 0x04, 0xef, 0x04, 0xe9, 0x04, 0xe9, 0x04, 0x0a, 0x05, + 0x68, 0x05, 0xc2, 0x05, 0xfb, 0x05, 0x5a, 0x06, 0x95, 0x06, 0xbe, 0x06, + 0xae, 0x06, 0x92, 0x06, 0x51, 0x06, 0x04, 0x06, 0x7f, 0x05, 0xbf, 0x04, + 0xce, 0x03, 0xc5, 0x02, 0xe0, 0x01, 0xd8, 0x00, 0xc7, 0xff, 0xf9, 0xfe, + 0xfe, 0xfd, 0x23, 0xfd, 0xb3, 0xfc, 0x6f, 0xfc, 0x50, 0xfc, 0x6e, 0xfc, + 0x7a, 0xfc, 0x0c, 0xfd, 0xe7, 0xfd, 0xb2, 0xfe, 0xa3, 0xff, 0x79, 0x00, + 0x62, 0x01, 0x7c, 0x02, 0xa0, 0x03, 0x53, 0x04, 0xf8, 0x04, 0x6f, 0x05, + 0xf3, 0x05, 0x59, 0x06, 0x38, 0x06, 0x24, 0x06, 0x1b, 0x06, 0xc2, 0x05, + 0x5f, 0x05, 0xdf, 0x04, 0x6d, 0x04, 0x2d, 0x04, 0xd8, 0x03, 0x71, 0x03, + 0x21, 0x03, 0xf0, 0x02, 0x06, 0x03, 0xde, 0x02, 0xb3, 0x02, 0xb3, 0x02, + 0xb0, 0x02, 0x83, 0x02, 0x60, 0x02, 0x08, 0x02, 0xa2, 0x01, 0x42, 0x01, + 0x91, 0x00, 0xe4, 0xff, 0x0f, 0xff, 0x18, 0xfe, 0x50, 0xfd, 0x85, 0xfc, + 0x80, 0xfb, 0xcb, 0xfa, 0x34, 0xfa, 0xb9, 0xf9, 0x93, 0xf9, 0x71, 0xf9, + 0xa3, 0xf9, 0x1c, 0xfa, 0xc5, 0xfa, 0x7d, 0xfb, 0x50, 0xfc, 0x78, 0xfd, + 0x8d, 0xfe, 0x8d, 0xff, 0x85, 0x00, 0x60, 0x01, 0x26, 0x02, 0xbd, 0x02, + 0x1f, 0x03, 0x39, 0x03, 0x18, 0x03, 0xc3, 0x02, 0x4e, 0x02, 0xc2, 0x01, + 0x30, 0x01, 0x44, 0x00, 0x2f, 0xff, 0x43, 0xfe, 0x60, 0xfd, 0x8d, 0xfc, + 0xbe, 0xfb, 0xcf, 0xfa, 0xb1, 0xf9, 0x7e, 0xf8, 0x8f, 0xf7, 0xb8, 0xf6, + 0x1b, 0xf6, 0x76, 0xf5, 0x76, 0xf4, 0x3a, 0xf3, 0x17, 0xf3, 0x85, 0xf3, + 0x08, 0xf4, 0xf7, 0xf3, 0xd6, 0xf3, 0x9f, 0xf4, 0xb0, 0xf5, 0x2d, 0xf7, + 0x8f, 0xf8, 0x91, 0xf9, 0xef, 0xfa, 0x8b, 0xfc, 0xdb, 0xfd, 0x56, 0xff, + 0x7b, 0x00, 0xb6, 0x01, 0x15, 0x03, 0xcd, 0x03, 0xff, 0x03, 0x5e, 0x04, + 0xa8, 0x04, 0x2d, 0x05, 0x99, 0x05, 0x72, 0x05, 0x13, 0x05, 0xce, 0x04, + 0xc2, 0x04, 0xf0, 0x04, 0x16, 0x05, 0x4a, 0x05, 0x4f, 0x05, 0x2f, 0x05, + 0x40, 0x05, 0x8a, 0x05, 0xd7, 0x05, 0x1f, 0x06, 0x83, 0x06, 0x86, 0x06, + 0x23, 0x06, 0xc4, 0x05, 0x79, 0x05, 0x71, 0x05, 0x23, 0x05, 0x59, 0x04, + 0xff, 0x02, 0x20, 0x02, 0x7a, 0x01, 0xa5, 0x00, 0xcf, 0xff, 0x00, 0xff, + 0x5b, 0xfe, 0xa5, 0xfd, 0x28, 0xfd, 0xd1, 0xfc, 0xcf, 0xfc, 0x42, 0xfd, + 0xbc, 0xfd, 0x1d, 0xfe, 0x7a, 0xfe, 0x15, 0xff, 0x23, 0x00, 0x3e, 0x01, + 0x39, 0x02, 0xfa, 0x02, 0xaa, 0x03, 0x3f, 0x04, 0xbc, 0x04, 0x1e, 0x05, + 0x97, 0x05, 0xe1, 0x05, 0xdc, 0x05, 0x7f, 0x05, 0xfd, 0x04, 0xb1, 0x04, + 0x93, 0x04, 0x62, 0x04, 0xf7, 0x03, 0x81, 0x03, 0x0f, 0x03, 0xce, 0x02, + 0xb0, 0x02, 0xa9, 0x02, 0xb0, 0x02, 0xaa, 0x02, 0x7f, 0x02, 0x4a, 0x02, + 0x4a, 0x02, 0x3d, 0x02, 0x11, 0x02, 0xc6, 0x01, 0x49, 0x01, 0xc6, 0x00, + 0x2f, 0x00, 0x72, 0xff, 0xa9, 0xfe, 0xd6, 0xfd, 0x18, 0xfd, 0x62, 0xfc, + 0x9b, 0xfb, 0xbd, 0xfa, 0x35, 0xfa, 0xfc, 0xf9, 0xf5, 0xf9, 0xf7, 0xf9, + 0x0b, 0xfa, 0x5b, 0xfa, 0xf5, 0xfa, 0xc2, 0xfb, 0xb0, 0xfc, 0x96, 0xfd, + 0x92, 0xfe, 0x90, 0xff, 0x73, 0x00, 0x50, 0x01, 0x0c, 0x02, 0x7a, 0x02, + 0xe9, 0x02, 0x16, 0x03, 0x19, 0x03, 0xdf, 0x02, 0x54, 0x02, 0xd4, 0x01, + 0x36, 0x01, 0x73, 0x00, 0x95, 0xff, 0x9a, 0xfe, 0xb9, 0xfd, 0xc2, 0xfc, + 0xbb, 0xfb, 0xae, 0xfa, 0xc1, 0xf9, 0x10, 0xf9, 0x12, 0xf8, 0x2c, 0xf7, + 0x2e, 0xf6, 0x48, 0xf5, 0xdd, 0xf4, 0xa2, 0xf4, 0x6f, 0xf4, 0x30, 0xf4, + 0x0f, 0xf4, 0x42, 0xf4, 0xca, 0xf4, 0x96, 0xf5, 0x91, 0xf6, 0x64, 0xf7, + 0x4b, 0xf8, 0x5e, 0xf9, 0x91, 0xfa, 0xb7, 0xfb, 0x0e, 0xfd, 0x88, 0xfe, + 0x85, 0xff, 0x36, 0x00, 0xcc, 0x00, 0x8e, 0x01, 0x96, 0x02, 0x4b, 0x03, + 0x80, 0x03, 0x8a, 0x03, 0x86, 0x03, 0xd2, 0x03, 0x31, 0x04, 0x65, 0x04, + 0x6d, 0x04, 0x8b, 0x04, 0xb2, 0x04, 0xca, 0x04, 0x07, 0x05, 0x60, 0x05, + 0x95, 0x05, 0xf0, 0x05, 0x39, 0x06, 0x2f, 0x06, 0x1e, 0x06, 0x38, 0x06, + 0x55, 0x06, 0x39, 0x06, 0xc9, 0x05, 0x36, 0x05, 0xb5, 0x04, 0x23, 0x04, + 0x92, 0x03, 0xc7, 0x02, 0xf4, 0x01, 0x35, 0x01, 0x7d, 0x00, 0xeb, 0xff, + 0x38, 0xff, 0xb4, 0xfe, 0x62, 0xfe, 0x49, 0xfe, 0x4c, 0xfe, 0x44, 0xfe, + 0x4a, 0xfe, 0xb5, 0xfe, 0x64, 0xff, 0x0a, 0x00, 0x67, 0x00, 0xf5, 0x00, + 0xc1, 0x01, 0x84, 0x02, 0x2a, 0x03, 0xa6, 0x03, 0x0e, 0x04, 0x88, 0x04, + 0xe0, 0x04, 0x20, 0x05, 0x1a, 0x05, 0x05, 0x05, 0xec, 0x04, 0xd2, 0x04, + 0x88, 0x04, 0x2e, 0x04, 0xd9, 0x03, 0x7e, 0x03, 0x2e, 0x03, 0xd8, 0x02, + 0x9a, 0x02, 0x5d, 0x02, 0x1d, 0x02, 0xdd, 0x01, 0xb2, 0x01, 0x96, 0x01, + 0x6e, 0x01, 0x35, 0x01, 0xf4, 0x00, 0x97, 0x00, 0x69, 0x00, 0x21, 0x00, + 0xa5, 0xff, 0x07, 0xff, 0x53, 0xfe, 0xda, 0xfd, 0x77, 0xfd, 0xee, 0xfc, + 0x47, 0xfc, 0x9c, 0xfb, 0x30, 0xfb, 0xff, 0xfa, 0xf1, 0xfa, 0xf3, 0xfa, + 0x05, 0xfb, 0x33, 0xfb, 0x8d, 0xfb, 0x21, 0xfc, 0xe3, 0xfc, 0xa6, 0xfd, + 0x7a, 0xfe, 0x4e, 0xff, 0x1a, 0x00, 0xda, 0x00, 0x8a, 0x01, 0x10, 0x02, + 0x8b, 0x02, 0xec, 0x02, 0x16, 0x03, 0x1b, 0x03, 0xb3, 0x02, 0x29, 0x02, + 0xcd, 0x01, 0x42, 0x01, 0xc1, 0x00, 0xe9, 0xff, 0xc2, 0xfe, 0xbb, 0xfd, + 0x23, 0xfd, 0x73, 0xfc, 0xa8, 0xfb, 0xa6, 0xfa, 0x6e, 0xf9, 0xa2, 0xf8, + 0xea, 0xf7, 0x47, 0xf7, 0xc0, 0xf6, 0x3d, 0xf6, 0xb2, 0xf5, 0x25, 0xf5, + 0xf1, 0xf4, 0x29, 0xf5, 0xc5, 0xf5, 0x2a, 0xf6, 0x67, 0xf6, 0xfb, 0xf6, + 0xb1, 0xf7, 0xb7, 0xf8, 0x3b, 0xfa, 0x4b, 0xfb, 0x18, 0xfc, 0xea, 0xfc, + 0xdb, 0xfd, 0x26, 0xff, 0x44, 0x00, 0xce, 0x00, 0xfd, 0x00, 0x96, 0x01, + 0x4c, 0x02, 0xca, 0x02, 0xad, 0x02, 0x82, 0x02, 0xc9, 0x02, 0x18, 0x03, + 0x52, 0x03, 0x3f, 0x03, 0x47, 0x03, 0x84, 0x03, 0xa0, 0x03, 0x02, 0x04, + 0x6b, 0x04, 0xdc, 0x04, 0x33, 0x05, 0x52, 0x05, 0x6b, 0x05, 0x9f, 0x05, + 0xf7, 0x05, 0x58, 0x06, 0x47, 0x06, 0xe0, 0x05, 0x4f, 0x05, 0xef, 0x04, + 0xb1, 0x04, 0x43, 0x04, 0xbf, 0x03, 0xdb, 0x02, 0xf0, 0x01, 0x4c, 0x01, + 0xc6, 0x00, 0x72, 0x00, 0x05, 0x00, 0xa6, 0xff, 0x65, 0xff, 0x41, 0xff, + 0x64, 0xff, 0xa0, 0xff, 0x1d, 0x00, 0xa4, 0x00, 0x26, 0x01, 0xa6, 0x01, + 0x39, 0x02, 0xf4, 0x02, 0xb5, 0x03, 0x42, 0x04, 0xb8, 0x04, 0x09, 0x05, + 0x43, 0x05, 0x66, 0x05, 0x75, 0x05, 0x6e, 0x05, 0x1d, 0x05, 0xc4, 0x04, + 0x74, 0x04, 0xe7, 0x03, 0x90, 0x03, 0x28, 0x03, 0x85, 0x02, 0x2b, 0x02, + 0xe5, 0x01, 0x95, 0x01, 0x65, 0x01, 0x26, 0x01, 0xe9, 0x00, 0xfb, 0x00, + 0x07, 0x01, 0x00, 0x01, 0xe9, 0x00, 0xbd, 0x00, 0x94, 0x00, 0x59, 0x00, + 0x3a, 0x00, 0xdf, 0xff, 0x5a, 0xff, 0xd7, 0xfe, 0x40, 0xfe, 0xaf, 0xfd, + 0x1c, 0xfd, 0x94, 0xfc, 0x1b, 0xfc, 0xb1, 0xfb, 0x61, 0xfb, 0x18, 0xfb, + 0x18, 0xfb, 0x56, 0xfb, 0xb1, 0xfb, 0x1c, 0xfc, 0x9e, 0xfc, 0x45, 0xfd, + 0x13, 0xfe, 0xd8, 0xfe, 0x94, 0xff, 0x67, 0x00, 0x10, 0x01, 0x8e, 0x01, + 0xf4, 0x01, 0x24, 0x02, 0x48, 0x02, 0x48, 0x02, 0x01, 0x02, 0x98, 0x01, + 0x02, 0x01, 0x6b, 0x00, 0xc7, 0xff, 0x11, 0xff, 0x6f, 0xfe, 0x93, 0xfd, + 0xa6, 0xfc, 0x08, 0xfc, 0x4f, 0xfb, 0xb0, 0xfa, 0xff, 0xf9, 0x7e, 0xf9, + 0xef, 0xf8, 0x45, 0xf8, 0xcd, 0xf7, 0xa0, 0xf7, 0x54, 0xf7, 0x1d, 0xf7, + 0xd2, 0xf6, 0xda, 0xf6, 0x1e, 0xf7, 0x73, 0xf7, 0xca, 0xf7, 0x38, 0xf8, + 0xe6, 0xf8, 0x81, 0xf9, 0x8d, 0xfa, 0x62, 0xfb, 0x38, 0xfc, 0x25, 0xfd, + 0x02, 0xfe, 0xad, 0xfe, 0x7a, 0xff, 0x3e, 0x00, 0xe5, 0x00, 0x69, 0x01, + 0xb4, 0x01, 0xfc, 0x01, 0x47, 0x02, 0x7d, 0x02, 0xae, 0x02, 0xcb, 0x02, + 0x1d, 0x03, 0x2c, 0x03, 0x01, 0x03, 0x40, 0x03, 0x8a, 0x03, 0xdf, 0x03, + 0x34, 0x04, 0x4c, 0x04, 0x5a, 0x04, 0x7f, 0x04, 0xc4, 0x04, 0x06, 0x05, + 0x2a, 0x05, 0x1a, 0x05, 0xe5, 0x04, 0x98, 0x04, 0x52, 0x04, 0x1d, 0x04, + 0xc4, 0x03, 0x56, 0x03, 0xfe, 0x02, 0x5c, 0x02, 0xc1, 0x01, 0x5c, 0x01, + 0xf5, 0x00, 0xbd, 0x00, 0x88, 0x00, 0x57, 0x00, 0x1e, 0x00, 0x20, 0x00, + 0x51, 0x00, 0x89, 0x00, 0xdb, 0x00, 0x3d, 0x01, 0xb3, 0x01, 0x42, 0x02, + 0xa2, 0x02, 0xf8, 0x02, 0x6a, 0x03, 0xee, 0x03, 0x6f, 0x04, 0xb9, 0x04, + 0xd6, 0x04, 0xc7, 0x04, 0xce, 0x04, 0xdf, 0x04, 0xbc, 0x04, 0xad, 0x04, + 0x7a, 0x04, 0x20, 0x04, 0xb1, 0x03, 0x5c, 0x03, 0x40, 0x03, 0x12, 0x03, + 0xd0, 0x02, 0xa7, 0x02, 0x4f, 0x02, 0x0f, 0x02, 0xfd, 0x01, 0xd6, 0x01, + 0x9d, 0x01, 0x63, 0x01, 0x19, 0x01, 0xb7, 0x00, 0x3a, 0x00, 0xd2, 0xff, + 0x7c, 0xff, 0x0b, 0xff, 0x84, 0xfe, 0xb8, 0xfd, 0x46, 0xfd, 0xfb, 0xfc, + 0x97, 0xfc, 0x49, 0xfc, 0xf0, 0xfb, 0xd2, 0xfb, 0xd3, 0xfb, 0xf4, 0xfb, + 0x2b, 0xfc, 0x6f, 0xfc, 0xcc, 0xfc, 0x49, 0xfd, 0xd2, 0xfd, 0x3f, 0xfe, + 0xbb, 0xfe, 0x4d, 0xff, 0xe8, 0xff, 0x56, 0x00, 0xa5, 0x00, 0xfa, 0x00, + 0x2a, 0x01, 0x48, 0x01, 0x5c, 0x01, 0x4e, 0x01, 0x29, 0x01, 0x03, 0x01, + 0xcc, 0x00, 0x88, 0x00, 0x3c, 0x00, 0xc8, 0xff, 0x7f, 0xff, 0x25, 0xff, + 0x9f, 0xfe, 0x1b, 0xfe, 0xa0, 0xfd, 0x08, 0xfd, 0x92, 0xfc, 0xee, 0xfb, + 0x36, 0xfb, 0xbc, 0xfa, 0x24, 0xfa, 0x7d, 0xf9, 0xd9, 0xf8, 0x5c, 0xf8, + 0xf3, 0xf7, 0x91, 0xf7, 0x4c, 0xf7, 0x0a, 0xf7, 0x22, 0xf7, 0x60, 0xf7, + 0x7f, 0xf7, 0xda, 0xf7, 0x4c, 0xf8, 0xf3, 0xf8, 0x88, 0xf9, 0x8d, 0xfa, + 0x56, 0xfb, 0xfd, 0xfb, 0xa7, 0xfc, 0x06, 0xfd, 0x38, 0xfe, 0x32, 0xff, + 0x8a, 0xff, 0xf5, 0xff, 0x52, 0x00, 0xbd, 0x00, 0x23, 0x01, 0xb7, 0x01, + 0xfc, 0x01, 0x2d, 0x02, 0x73, 0x02, 0x96, 0x02, 0xe2, 0x02, 0x2b, 0x03, + 0x84, 0x03, 0xd3, 0x03, 0x0d, 0x04, 0x1f, 0x04, 0x53, 0x04, 0x5c, 0x04, + 0x88, 0x04, 0xc1, 0x04, 0x9e, 0x04, 0x78, 0x04, 0x55, 0x04, 0x28, 0x04, + 0xc8, 0x03, 0x63, 0x03, 0x39, 0x03, 0xf0, 0x02, 0x6d, 0x02, 0xc8, 0x01, + 0x64, 0x01, 0x40, 0x01, 0x17, 0x01, 0xcf, 0x00, 0x78, 0x00, 0x5c, 0x00, + 0x68, 0x00, 0x53, 0x00, 0x7a, 0x00, 0xae, 0x00, 0xe5, 0x00, 0x4d, 0x01, + 0x85, 0x01, 0xb6, 0x01, 0x1e, 0x02, 0x7b, 0x02, 0xeb, 0x02, 0x45, 0x03, + 0x84, 0x03, 0xa9, 0x03, 0xc4, 0x03, 0xd8, 0x03, 0xe0, 0x03, 0xe4, 0x03, + 0xe5, 0x03, 0xc1, 0x03, 0x50, 0x03, 0x0f, 0x03, 0xef, 0x02, 0xd9, 0x02, + 0xaa, 0x02, 0x6d, 0x02, 0x27, 0x02, 0xfe, 0x01, 0xd6, 0x01, 0xa6, 0x01, + 0x93, 0x01, 0x7f, 0x01, 0x51, 0x01, 0xea, 0x00, 0x80, 0x00, 0x37, 0x00, + 0x03, 0x00, 0xbc, 0xff, 0x4b, 0xff, 0xcc, 0xfe, 0x4f, 0xfe, 0xd8, 0xfd, + 0x9e, 0xfd, 0x82, 0xfd, 0x6a, 0xfd, 0x3f, 0xfd, 0x07, 0xfd, 0x09, 0xfd, + 0x2d, 0xfd, 0x89, 0xfd, 0xec, 0xfd, 0x43, 0xfe, 0x7f, 0xfe, 0xc2, 0xfe, + 0x14, 0xff, 0x8b, 0xff, 0x12, 0x00, 0x60, 0x00, 0x83, 0x00, 0x99, 0x00, + 0xde, 0x00, 0x20, 0x01, 0x33, 0x01, 0x24, 0x01, 0x16, 0x01, 0x35, 0x01, + 0x26, 0x01, 0xf4, 0x00, 0xbc, 0x00, 0x8a, 0x00, 0x78, 0x00, 0x34, 0x00, + 0xef, 0xff, 0xca, 0xff, 0x93, 0xff, 0xe9, 0xfe, 0x6f, 0xfe, 0x42, 0xfe, + 0xe5, 0xfd, 0x86, 0xfd, 0xd0, 0xfc, 0x1e, 0xfc, 0x7f, 0xfb, 0x30, 0xfb, + 0xcb, 0xfa, 0x26, 0xfa, 0xbd, 0xf9, 0x59, 0xf9, 0xed, 0xf8, 0xee, 0xf8, + 0xbc, 0xf8, 0x8b, 0xf8, 0x8d, 0xf8, 0x70, 0xf8, 0x94, 0xf8, 0xc8, 0xf8, + 0x0c, 0xf9, 0x3f, 0xf9, 0x67, 0xf9, 0x97, 0xf9, 0x29, 0xfa, 0xe5, 0xfa, + 0x61, 0xfb, 0xbb, 0xfb, 0x17, 0xfc, 0xa1, 0xfc, 0x7f, 0xfd, 0x17, 0xfe, + 0x58, 0xfe, 0xc8, 0xfe, 0x7c, 0xff, 0xf2, 0xff, 0xf5, 0xff, 0x59, 0x00, + 0xe7, 0x00, 0x4e, 0x01, 0x7e, 0x01, 0x90, 0x01, 0xb6, 0x01, 0x05, 0x02, + 0x9d, 0x02, 0xbc, 0x02, 0xbf, 0x02, 0xbf, 0x02, 0xe4, 0x02, 0x16, 0x03, + 0x31, 0x03, 0x3d, 0x03, 0x22, 0x03, 0x0c, 0x03, 0xf4, 0x02, 0xe9, 0x02, + 0xe0, 0x02, 0xae, 0x02, 0x7c, 0x02, 0x53, 0x02, 0x45, 0x02, 0x1f, 0x02, + 0x09, 0x02, 0xef, 0x01, 0xde, 0x01, 0xe8, 0x01, 0xe2, 0x01, 0xd6, 0x01, + 0xd1, 0x01, 0xef, 0x01, 0xfd, 0x01, 0xe5, 0x01, 0xfd, 0x01, 0x1c, 0x02, + 0x0b, 0x02, 0x0d, 0x02, 0xf3, 0x01, 0xf7, 0x01, 0x39, 0x02, 0x40, 0x02, + 0x39, 0x02, 0x59, 0x02, 0x7a, 0x02, 0x9d, 0x02, 0xcb, 0x02, 0x12, 0x03, + 0x3d, 0x03, 0x5e, 0x03, 0x62, 0x03, 0x72, 0x03, 0x81, 0x03, 0x8a, 0x03, + 0x70, 0x03, 0x37, 0x03, 0x1b, 0x03, 0xc1, 0x02, 0x71, 0x02, 0x17, 0x02, + 0xd2, 0x01, 0x80, 0x01, 0x29, 0x01, 0xe9, 0x00, 0x83, 0x00, 0x37, 0x00, + 0xf9, 0xff, 0xe2, 0xff, 0xe2, 0xff, 0xbf, 0xff, 0x8a, 0xff, 0x5b, 0xff, + 0x3f, 0xff, 0x51, 0xff, 0x4c, 0xff, 0x3a, 0xff, 0x3f, 0xff, 0x29, 0xff, + 0x1d, 0xff, 0x14, 0xff, 0x0e, 0xff, 0x3a, 0xff, 0x65, 0xff, 0x70, 0xff, + 0x86, 0xff, 0x9f, 0xff, 0xb4, 0xff, 0xd9, 0xff, 0x2d, 0x00, 0x6b, 0x00, + 0xa6, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0xc4, 0x00, 0xe1, 0x00, 0x0d, 0x01, + 0x03, 0x01, 0xeb, 0x00, 0xb3, 0x00, 0x83, 0x00, 0x51, 0x00, 0x3e, 0x00, + 0x09, 0x00, 0xc0, 0xff, 0x82, 0xff, 0x39, 0xff, 0xcf, 0xfe, 0x85, 0xfe, + 0x4a, 0xfe, 0x08, 0xfe, 0xd3, 0xfd, 0x5e, 0xfd, 0x24, 0xfd, 0xf1, 0xfc, + 0xba, 0xfc, 0x95, 0xfc, 0x68, 0xfc, 0x07, 0xfc, 0xaf, 0xfb, 0x85, 0xfb, + 0x79, 0xfb, 0x50, 0xfb, 0x1c, 0xfb, 0xe7, 0xfa, 0xc9, 0xfa, 0xeb, 0xfa, + 0x03, 0xfb, 0x15, 0xfb, 0x00, 0xfb, 0x5e, 0xfb, 0x5d, 0xfb, 0xa6, 0xfb, + 0xf8, 0xfb, 0xeb, 0xfb, 0x10, 0xfc, 0x42, 0xfc, 0x71, 0xfc, 0xb5, 0xfc, + 0xa5, 0xfc, 0x93, 0xfc, 0x92, 0xfc, 0xd3, 0xfc, 0x48, 0xfd, 0xfb, 0xfc, + 0x37, 0xfd, 0x43, 0xfd, 0xb9, 0xfd, 0x13, 0xfe, 0x4b, 0xfe, 0xda, 0xfe, + 0x6b, 0xff, 0xc3, 0xff, 0xf4, 0xff, 0x3c, 0x00, 0x9b, 0x00, 0xe6, 0x00, + 0xfe, 0x00, 0xf0, 0x00, 0xd3, 0x00, 0xe5, 0x00, 0xa3, 0x00, 0x80, 0x00, + 0x90, 0x00, 0x9e, 0x00, 0x90, 0x00, 0x5e, 0x00, 0x75, 0x00, 0x7a, 0x00, + 0x74, 0x00, 0x62, 0x00, 0x40, 0x00, 0x38, 0x00, 0x23, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, 0xf8, 0xff, 0xf7, 0xff, 0xf7, 0xff, + 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xf9, 0xff, + 0xf9, 0xff, 0xf9, 0xff, 0xf9, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x09, 0x00, 0x09, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, + 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, + 0xfa, 0xff, 0xfa, 0xff, 0xfa, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, + 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, 0xfb, 0xff, + 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfd, 0xff, 0xfd, 0xff, 0xfd, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfb, 0xff, + 0xfb, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfd, 0xff, 0xfd, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00 +}; +uint32_t left_channel_bin_len = 47666; \ No newline at end of file diff --git a/examples/stellar_unicorn/stellar_eighties_super_computer.cpp b/examples/stellar_unicorn/stellar_eighties_super_computer.cpp new file mode 100644 index 00000000..e8b1c961 --- /dev/null +++ b/examples/stellar_unicorn/stellar_eighties_super_computer.cpp @@ -0,0 +1,67 @@ +#include +#include +#include +#include "pico/stdlib.h" + +#include "libraries/pico_graphics/pico_graphics.hpp" +#include "stellar_unicorn.hpp" + +using namespace pimoroni; + +PicoGraphics_PenRGB888 graphics(16, 16, nullptr); +StellarUnicorn stellar_unicorn; + +float lifetime[16][16]; +float age[16][16]; + +int main() { + + stdio_init_all(); + + for(int y = 0; y < 16; y++) { + for(int x = 0; x < 16; x++) { + lifetime[x][y] = 1.0f + ((rand() % 10) / 100.0f); + age[x][y] = ((rand() % 100) / 100.0f) * lifetime[x][y]; + } + } + + stellar_unicorn.init(); + + while(true) { + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_BRIGHTNESS_UP)) { + stellar_unicorn.adjust_brightness(+0.01); + } + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_BRIGHTNESS_DOWN)) { + stellar_unicorn.adjust_brightness(-0.01); + } + + graphics.set_pen(0, 0, 0); + graphics.clear(); + + for(int y = 0; y < 16; y++) { + for(int x = 0; x < 16; x++) { + if(age[x][y] < lifetime[x][y] * 0.3f) { + graphics.set_pen(230, 150, 0); + graphics.pixel(Point(x, y)); + }else if(age[x][y] < lifetime[x][y] * 0.5f) { + float decay = (lifetime[x][y] * 0.5f - age[x][y]) * 5.0f; + graphics.set_pen(decay * 230, decay * 150, 0); + graphics.pixel(Point(x, y)); + } + + if(age[x][y] >= lifetime[x][y]) { + age[x][y] = 0.0f; + lifetime[x][y] = 1.0f + ((rand() % 10) / 100.0f); + } + + age[x][y] += 0.01f; + } + } + + stellar_unicorn.update(&graphics); + + sleep_ms(10); + } + + return 0; +} diff --git a/examples/stellar_unicorn/stellar_fire_effect.cpp b/examples/stellar_unicorn/stellar_fire_effect.cpp new file mode 100644 index 00000000..06008e3b --- /dev/null +++ b/examples/stellar_unicorn/stellar_fire_effect.cpp @@ -0,0 +1,115 @@ +#include +#include +#include +#include +#include "pico/stdlib.h" + +#include "libraries/pico_graphics/pico_graphics.hpp" +#include "stellar_unicorn.hpp" + +using namespace pimoroni; + +PicoGraphics_PenRGB888 graphics(16, 16, nullptr); +StellarUnicorn stellar_unicorn; + +// extra row of pixels for sourcing flames and averaging +int width = 16; +int height = 17; + +// a buffer that's at least big enough to store 55 x 15 values (to allow for both orientations) +float heat[2000] = {0.0f}; + +void set(int x, int y, float v) { + heat[x + y * width] = v; +} + +float get(int x, int y) { + /*if(x < 0 || x >= width || y < 0 || y >= height) { + return 0.0f; + }*/ + x = x < 0 ? 0 : x; + x = x >= width ? width - 1 : x; + + return heat[x + y * width]; +} + +int main() { + + stdio_init_all(); + + stellar_unicorn.init(); + stellar_unicorn.set_brightness(0.2); + + bool landscape = true; +/* + while(true) { + stellar_unicorn.set_pixel(0, 0, 255, 0, 0); + stellar_unicorn.set_pixel(1, 1, 0, 255, 0); + stellar_unicorn.set_pixel(2, 2, 0, 0, 255); + }*/ + + while(true) { + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_BRIGHTNESS_UP)) { + stellar_unicorn.adjust_brightness(+0.01); + } + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_BRIGHTNESS_DOWN)) { + stellar_unicorn.adjust_brightness(-0.01); + } + + + for(int y = 0; y < height; y++) { + for(int x = 0; x < width; x++) { + float value = get(x, y); + + graphics.set_pen(0, 0, 0); + if(value > 0.5f) { + graphics.set_pen(255, 255, 180); + }else if(value > 0.4f) { + graphics.set_pen(220, 160, 0); + }else if(value > 0.3f) { + graphics.set_pen(180, 30, 0); + }else if(value > 0.22f) { + graphics.set_pen(20, 20, 20); + } + + if(landscape) { + graphics.pixel(Point(x, y)); + }else{ + graphics.pixel(Point(y, x)); + } + + // update this pixel by averaging the below pixels + float average = (get(x, y) + get(x, y + 2) + get(x, y + 1) + get(x - 1, y + 1) + get(x + 1, y + 1)) / 5.0f; + + // damping factor to ensure flame tapers out towards the top of the displays + average *= 0.95f; + + // update the heat map with our newly averaged value + set(x, y, average); + } + } + + stellar_unicorn.update(&graphics); + + // clear the bottom row and then add a new fire seed to it + for(int x = 0; x < width; x++) { + set(x, height - 1, 0.0f); + } + + // add a new random heat source + int source_count = landscape ? 5 : 1; + for(int c = 0; c < source_count; c++) { + int px = (rand() % (width - 4)) + 2; + set(px , height - 2, 1.0f); + set(px + 1, height - 2, 1.0f); + set(px - 1, height - 2, 1.0f); + set(px , height - 1, 1.0f); + set(px + 1, height - 1, 1.0f); + set(px - 1, height - 1, 1.0f); + } + + sleep_ms(20); + } + + return 0; +} diff --git a/examples/stellar_unicorn/stellar_lava_lamp.cpp b/examples/stellar_unicorn/stellar_lava_lamp.cpp new file mode 100644 index 00000000..97217b8d --- /dev/null +++ b/examples/stellar_unicorn/stellar_lava_lamp.cpp @@ -0,0 +1,148 @@ +#include +#include +#include +#include "pico/stdlib.h" + +#include "libraries/pico_graphics/pico_graphics.hpp" +#include "stellar_unicorn.hpp" + +using namespace pimoroni; + +PicoGraphics_PenRGB888 graphics(16, 16, nullptr); +StellarUnicorn stellar_unicorn; + +// HSV Conversion expects float inputs in the range of 0.00-1.00 for each channel +// Outputs are rgb in the range 0-255 for each channel +void from_hsv(float h, float s, float v, uint8_t &r, uint8_t &g, uint8_t &b) { + float i = floor(h * 6.0f); + float f = h * 6.0f - i; + v *= 255.0f; + uint8_t p = v * (1.0f - s); + uint8_t q = v * (1.0f - f * s); + uint8_t t = v * (1.0f - (1.0f - f) * s); + + switch (int(i) % 6) { + case 0: r = v; g = t; b = p; break; + case 1: r = q; g = v; b = p; break; + case 2: r = p; g = v; b = t; break; + case 3: r = p; g = q; b = v; break; + case 4: r = t; g = p; b = v; break; + case 5: r = v; g = p; b = q; break; + } +} + +struct blob_t { + float x, y; + float r; + float dx, dy; +}; + +constexpr int blob_count = 20; + +int main() { + + stdio_init_all(); + + stellar_unicorn.init(); + stellar_unicorn.set_brightness(0.5); + + // randomise blob start positions, directions, and size + std::array blobs; + for(auto &blob : blobs) { + blob.x = rand() % 16; + blob.y = rand() % 16; + blob.r = ((rand() % 40) / 10.0f) + 5.0f; + blob.dx = ((rand() % 2) / 10.0f) - 0.05f; + blob.dy = ((rand() % 3) / 10.0f) - 0.1f; + } + + float hue = 0.0f; + + while(true) { + // allow user to adjust brightness + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_BRIGHTNESS_UP)) { + stellar_unicorn.adjust_brightness(+0.01); + } + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_BRIGHTNESS_DOWN)) { + stellar_unicorn.adjust_brightness(-0.01); + } + + uint start_ms = to_ms_since_boot(get_absolute_time()); + + // calculate the influence of each blob on the liquid based + // on their distance to each pixel. this causes blobs to + // "merge" into each other when we use fixed thresholds to + // determine which colour to draw with + float liquid[16][16] = {0.0f}; + for(auto &blob : blobs) { + float r_sq = blob.r * blob.r; + for(int y = 0; y < 16; y++) { + for(int x = 0; x < 16; x++) { + float d_sq = (x - blob.x) * (x - blob.x) + (y - blob.y) * (y - blob.y); + if(d_sq <= r_sq) { + // add this blobs influence to this pixel + liquid[x][y] += 1.0f - (d_sq / r_sq); + } + } + } + } + + // update the blob positions + for(auto &blob : blobs) { + blob.x += blob.dx; + blob.y += blob.dy; + + // if we hit the edge then bounce! + if(blob.x < 0.0f || blob.x >= 11.0f) { + blob.dx *= -1.0f; + } + if(blob.y < 0.0f || blob.y >= 53.0f) { + blob.dy *= -1.0f; + } + } + + // rotate the hue + hue += 0.001f; + + // calculate dark, medium, and bright shades for rendering the + // lava + uint8_t dark_r, dark_g, dark_b; + from_hsv(hue, 1.0f, 0.3f, dark_r, dark_g, dark_b); + uint8_t mid_r, mid_g, mid_b; + from_hsv(hue, 1.0f, 0.6f, mid_r, mid_g, mid_b); + uint8_t bright_r, bright_g, bright_b; + from_hsv(hue, 1.0f, 1.0f, bright_r, bright_g, bright_b); + + // clear the canvas + graphics.set_pen(0, 0, 0); + graphics.clear(); + + // render the lava + for(int y = 0; y < 16; y++) { + for(int x = 0; x < 16; x++) { + float v = liquid[x][y]; + + // select a colour for this pixel based on how much + // "blobfluence" there is at this position in the liquid + if(v >= 1.5f) { + graphics.set_pen(bright_r, bright_g, bright_b); + graphics.pixel(Point(y, x)); + }else if(v >= 1.25f) { + graphics.set_pen(mid_r, mid_g, mid_b); + graphics.pixel(Point(y, x)); + }else if(v >= 1.0f) { + graphics.set_pen(dark_r, dark_g, dark_b); + graphics.pixel(Point(y, x)); + } + } + } + + uint end_ms = to_ms_since_boot(get_absolute_time()); + + printf("rendering took %dms\n", end_ms - start_ms); + + stellar_unicorn.update(&graphics); + } + + return 0; +} diff --git a/examples/stellar_unicorn/stellar_rainbow.cpp b/examples/stellar_unicorn/stellar_rainbow.cpp new file mode 100644 index 00000000..f6e5e3a4 --- /dev/null +++ b/examples/stellar_unicorn/stellar_rainbow.cpp @@ -0,0 +1,184 @@ +#include +#include +#include +#include "pico/stdlib.h" + +#include "libraries/pico_graphics/pico_graphics.hpp" +#include "stellar_unicorn.hpp" + +using namespace pimoroni; + +PicoGraphics_PenRGB888 graphics(16, 16, nullptr); +StellarUnicorn stellar_unicorn; + +// HSV Conversion expects float inputs in the range of 0.00-1.00 for each channel +// Outputs are rgb in the range 0-255 for each channel +void from_hsv(float h, float s, float v, uint8_t &r, uint8_t &g, uint8_t &b) { + float i = floor(h * 6.0f); + float f = h * 6.0f - i; + v *= 255.0f; + uint8_t p = v * (1.0f - s); + uint8_t q = v * (1.0f - f * s); + uint8_t t = v * (1.0f - (1.0f - f) * s); + + switch (int(i) % 6) { + case 0: r = v; g = t; b = p; break; + case 1: r = q; g = v; b = p; break; + case 2: r = p; g = v; b = t; break; + case 3: r = p; g = q; b = v; break; + case 4: r = t; g = p; b = v; break; + case 5: r = v; g = p; b = q; break; + } +} + +void text(std::string t, Point p, float s = 1.0f, float a = 1.0f) { + int w = graphics.measure_text(t, s); + p.x += (53 / 2) - (w / 2); + p.y += (11 / 2); + graphics.text(t, Point(p.x, p.y), -1, s, a); + //graphics.text(t, Point(p.x + 1, p.y), -1, s, a); + //graphics.text(t, Point(p.x + 1, p.y + 1), -1, s, a); + //graphics.text(t, Point(p.x, p.y + 1), -1, s, a); +} + +struct star_t { + float dx, dy, x, y, a; + + uint8_t brightness() { + int b = a / 5; + return b > 15 ? 15 : b; + } +}; + +void init_star(star_t &s) { + s.x = ((rand() % 100) / 5.0f) - 10.0f; + s.y = ((rand() % 100) / 10.0f) - 5.0f; + + s.dx = s.x / 10.0f; + s.dy = s.y / 10.0f; + s.a = 0; +} + +void step_star(star_t &s) { + s.x += s.dx; + s.y += s.dy; + s.a++; + + if(s.a > 100) { + init_star(s); + } +} + + +int main() { + + stdio_init_all(); + + uint8_t hue_map[16][3]; + for(int i = 0; i < 16; i++) { + from_hsv(i / 16.0f, 1.0f, 1.0f, hue_map[i][0], hue_map[i][1], hue_map[i][2]); + } + + star_t stars[100]; + for(int i = 0; i < 100; i++) { + init_star(stars[i]); + stars[i].a = i; + } + + gpio_set_function(28, GPIO_FUNC_SIO); + gpio_set_dir(28, GPIO_OUT); + + for(int i = 0; i < 10; i++) { + gpio_put(28, !gpio_get(28)); + sleep_ms(100); + } + sleep_ms(1000); + + gpio_put(28,true); + + stellar_unicorn.init(); + + + + float i = 0; + + float hue_offset = 0.0f; + + bool animate = true; + + float stripe_width = 3.0f; + float speed = 1.0f; + float curve = 0.0f; + + while(true) { + + if(animate) { + i += speed; + } + + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_VOLUME_UP)) { + curve += 0.05; + if(hue_offset > 1.0f) hue_offset = 1.0f; + } + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_VOLUME_DOWN)) { + curve -= 0.05; + if(hue_offset < 0.0f) hue_offset = 0.0f; + } + + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_BRIGHTNESS_UP)) { + stellar_unicorn.adjust_brightness(+0.01); + } + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_BRIGHTNESS_DOWN)) { + stellar_unicorn.adjust_brightness(-0.01); + } + + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_SLEEP)) { + animate = false; + } + + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_A)) { + speed += 0.05f; + speed = speed >= 10.0f ? 10.0f : speed; + animate = true; + } + + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_B)) { + speed -= 0.05f; + speed = speed <= 0.0f ? 0.0f : speed; + animate = true; + } + + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_C)) { + stripe_width += 0.05f; + stripe_width = stripe_width >= 10.0f ? 10.0f : stripe_width; + } + + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_D)) { + stripe_width -= 0.05f; + stripe_width = stripe_width <= 1.0f ? 1.0f : stripe_width; + } + + for(int x = 0; x < 16; x++) { + for(int y = 0; y < 16; y++) { + int v = ((sin((x + y) / stripe_width + (sin((y * 3.1415927f * 2.0f) / 11.0f) * curve) + i / 15.0f) + 1.5f) / 2.5f) * 255.0f; + + uint8_t r = (hue_map[x][0] * v) / 256; + uint8_t g = (hue_map[x][1] * v) / 256; + uint8_t b = (hue_map[x][2] * v) / 256; + + graphics.set_pen(r, g, b); + graphics.pixel(Point(x, y)); + } + } + stellar_unicorn.update(&graphics); + + printf("%d\n", stellar_unicorn.light()); + sleep_ms(20); + } + + + + printf("done\n"); + + return 0; +} diff --git a/examples/stellar_unicorn/stellar_rainbow_text.cpp b/examples/stellar_unicorn/stellar_rainbow_text.cpp new file mode 100644 index 00000000..f7dc0e37 --- /dev/null +++ b/examples/stellar_unicorn/stellar_rainbow_text.cpp @@ -0,0 +1,102 @@ +#include +#include +#include +#include "pico/stdlib.h" + +#include "libraries/pico_graphics/pico_graphics.hpp" +#include "stellar_unicorn.hpp" + +using namespace pimoroni; + +PicoGraphics_PenRGB888 graphics(16, 16, nullptr); +StellarUnicorn stellar_unicorn; + +// HSV Conversion expects float inputs in the range of 0.00-1.00 for each channel +// Outputs are rgb in the range 0-255 for each channel +void from_hsv(float h, float s, float v, uint8_t &r, uint8_t &g, uint8_t &b) { + float i = floor(h * 6.0f); + float f = h * 6.0f - i; + v *= 255.0f; + uint8_t p = v * (1.0f - s); + uint8_t q = v * (1.0f - f * s); + uint8_t t = v * (1.0f - (1.0f - f) * s); + + switch (int(i) % 6) { + case 0: r = v; g = t; b = p; break; + case 1: r = q; g = v; b = p; break; + case 2: r = p; g = v; b = t; break; + case 3: r = p; g = q; b = v; break; + case 4: r = t; g = p; b = v; break; + case 5: r = v; g = p; b = q; break; + } +} + +void text(std::string t, Point p, float s = 1.0f, float a = 1.0f) { + int w = graphics.measure_text(t, s); + p.x += (16 / 2) - (w / 2); + p.y += (16 / 2); + graphics.text(t, Point(p.x, p.y), -1, s, a); + graphics.text(t, Point(p.x + 1, p.y), -1, s, a); + graphics.text(t, Point(p.x + 1, p.y + 1), -1, s, a); + graphics.text(t, Point(p.x, p.y + 1), -1, s, a); +} + + +int main() { + uint8_t hue_map[16][3]; + for(int i = 0; i < 16; i++) { + from_hsv(i / 16.0f, 1.0f, 0.5f, hue_map[i][0], hue_map[i][1], hue_map[i][2]); + } + + stellar_unicorn.init(); + + graphics.set_font("sans"); + uint i = 0; + + while(true) { + + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_BRIGHTNESS_UP)) { + stellar_unicorn.adjust_brightness(+0.01); + } + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_BRIGHTNESS_DOWN)) { + stellar_unicorn.adjust_brightness(-0.01); + } + + i++; + + graphics.set_pen(0, 0, 0); + graphics.clear(); + + float s = 0.4f;//0.65f + (sin(i / 25.0f) * 0.15f); + float a = 1.0f;// (sin(i / 25.0f) * 100.0f); + + float x = (sin((i) / 50.0f) * 45.0f); + float y = (cos((i) / 40.0f) * 2.5f); + graphics.set_pen(255, 255, 255); + text("Galactic Unicorn", Point(x, y), s, a); + uint8_t *p = (uint8_t *)graphics.frame_buffer; + for(size_t i = 0; i < 16 * 16; i++) { + int x = i % 16; + int y = i / 16; + uint r = *p++; + uint g = *p++; + uint b = *p++; + p++; + + if(r > 0) { + r = hue_map[x][0]; + g = hue_map[x][1]; + b = hue_map[x][2]; + } + + graphics.set_pen(r, g, b); + graphics.pixel(Point(x, y)); + } + + stellar_unicorn.update(&graphics); + } + + printf("done\n"); + + return 0; +} diff --git a/examples/stellar_unicorn/stellar_scroll_text.cpp b/examples/stellar_unicorn/stellar_scroll_text.cpp new file mode 100644 index 00000000..3df84a19 --- /dev/null +++ b/examples/stellar_unicorn/stellar_scroll_text.cpp @@ -0,0 +1,76 @@ +#include +#include +#include +#include "pico/stdlib.h" + +#include "libraries/pico_graphics/pico_graphics.hpp" +#include "stellar_unicorn.hpp" + +using namespace pimoroni; + +PicoGraphics_PenRGB888 graphics(16, 16, nullptr); +StellarUnicorn stellar_unicorn; + +std::string message = "Pirate. Monkey. Robot. Ninja."; + +// HSV Conversion expects float inputs in the range of 0.00-1.00 for each channel +// Outputs are rgb in the range 0-255 for each channel +void from_hsv(float h, float s, float v, uint8_t &r, uint8_t &g, uint8_t &b) { + float i = floor(h * 6.0f); + float f = h * 6.0f - i; + v *= 255.0f; + uint8_t p = v * (1.0f - s); + uint8_t q = v * (1.0f - f * s); + uint8_t t = v * (1.0f - (1.0f - f) * s); + + switch (int(i) % 6) { + case 0: r = v; g = t; b = p; break; + case 1: r = q; g = v; b = p; break; + case 2: r = p; g = v; b = t; break; + case 3: r = p; g = q; b = v; break; + case 4: r = t; g = p; b = v; break; + case 5: r = v; g = p; b = q; break; + } +} + + +int main() { + + stdio_init_all(); + + stellar_unicorn.init(); + + float scroll = -16.0f; + + while(true) { + //uint time_ms = to_ms_since_boot(get_absolute_time()); + + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_BRIGHTNESS_UP)) { + stellar_unicorn.adjust_brightness(+0.01); + } + if(stellar_unicorn.is_pressed(stellar_unicorn.SWITCH_BRIGHTNESS_DOWN)) { + stellar_unicorn.adjust_brightness(-0.01); + } + + int width = graphics.measure_text(message, 1); + scroll += 0.125f; + + if(scroll > width) { + scroll = -16.0f; + } + + graphics.set_pen(0, 0, 0); + graphics.clear(); + + uint8_t r = 0, g = 0, b = 0; + from_hsv(scroll / 100.0f, 1.0f, 0.5f, r, g, b); + graphics.set_pen(r, g, b); + graphics.text(message, Point(0 - scroll, 5), -1, 0.55); + + stellar_unicorn.update(&graphics); + + sleep_ms(10); + } + + return 0; +} diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt index e5bca9d3..7d7550db 100644 --- a/libraries/CMakeLists.txt +++ b/libraries/CMakeLists.txt @@ -42,3 +42,4 @@ add_subdirectory(galactic_unicorn) add_subdirectory(gfx_pack) add_subdirectory(interstate75) add_subdirectory(cosmic_unicorn) +add_subdirectory(stellar_unicorn) diff --git a/libraries/adcfft/adcfft.cpp b/libraries/adcfft/adcfft.cpp index e5433d57..a28fdd1d 100644 --- a/libraries/adcfft/adcfft.cpp +++ b/libraries/adcfft/adcfft.cpp @@ -47,7 +47,7 @@ void ADCFFT::init() { // Initialize the ADC harware // (resets it, enables the clock, spins until the hardware is ready) - adc_init(); + if (!(adc_hw->cs & ADC_CS_EN_BITS)) adc_init(); // Select analog mux input (0...3 are GPIO 26, 27, 28, 29; 4 is temp sensor) adc_select_input(adc_channel); diff --git a/libraries/cosmic_unicorn/cosmic_unicorn.cpp b/libraries/cosmic_unicorn/cosmic_unicorn.cpp index f16f3aa6..2db59201 100644 --- a/libraries/cosmic_unicorn/cosmic_unicorn.cpp +++ b/libraries/cosmic_unicorn/cosmic_unicorn.cpp @@ -38,10 +38,6 @@ // // .. and back to the start -static uint16_t r_gamma_lut[256] = {0}; -static uint16_t g_gamma_lut[256] = {0}; -static uint16_t b_gamma_lut[256] = {0}; - static uint32_t dma_channel; static uint32_t dma_ctrl_channel; static uint32_t audio_dma_channel; @@ -122,19 +118,6 @@ namespace pimoroni { // Tear down the old GU instance's hardware resources partial_teardown(); } - - - // create 14-bit gamma luts - for(uint16_t v = 0; v < 256; v++) { - // gamma correct the provided 0-255 brightness value onto a - // 0-65535 range for the pwm counter - float r_gamma = 1.8f; - r_gamma_lut[v] = (uint16_t)(powf((float)(v) / 255.0f, r_gamma) * (float(1U << (BCD_FRAME_COUNT)) - 1.0f) + 0.5f); - float g_gamma = 1.8f; - g_gamma_lut[v] = (uint16_t)(powf((float)(v) / 255.0f, g_gamma) * (float(1U << (BCD_FRAME_COUNT)) - 1.0f) + 0.5f); - float b_gamma = 1.8f; - b_gamma_lut[v] = (uint16_t)(powf((float)(v) / 255.0f, b_gamma) * (float(1U << (BCD_FRAME_COUNT)) - 1.0f) + 0.5f); - } // for each row: // for each bcd frame: @@ -166,7 +149,7 @@ namespace pimoroni { } // setup light sensor adc - adc_init(); + if (!(adc_hw->cs & ADC_CS_EN_BITS)) adc_init(); adc_gpio_init(LIGHT_SENSOR); gpio_init(COLUMN_CLOCK); gpio_set_dir(COLUMN_CLOCK, GPIO_OUT); gpio_put(COLUMN_CLOCK, false); @@ -476,9 +459,9 @@ namespace pimoroni { g = (g * this->brightness) >> 8; b = (b * this->brightness) >> 8; - uint16_t gamma_r = r_gamma_lut[r]; - uint16_t gamma_g = g_gamma_lut[g]; - uint16_t gamma_b = b_gamma_lut[b]; + uint16_t gamma_r = GAMMA_14BIT[r]; + uint16_t gamma_g = GAMMA_14BIT[g]; + uint16_t gamma_b = GAMMA_14BIT[b]; // for each row: // for each bcd frame: diff --git a/libraries/cosmic_unicorn/cosmic_unicorn.hpp b/libraries/cosmic_unicorn/cosmic_unicorn.hpp index c8efd878..cc60fc0a 100644 --- a/libraries/cosmic_unicorn/cosmic_unicorn.hpp +++ b/libraries/cosmic_unicorn/cosmic_unicorn.hpp @@ -2,6 +2,7 @@ #include "hardware/pio.h" #include "pico_graphics.hpp" +#include "common/pimoroni_common.hpp" #include "../pico_synth/pico_synth.hpp" namespace pimoroni { diff --git a/libraries/galactic_unicorn/galactic_unicorn.cpp b/libraries/galactic_unicorn/galactic_unicorn.cpp index 3a9779ac..c9587e18 100644 --- a/libraries/galactic_unicorn/galactic_unicorn.cpp +++ b/libraries/galactic_unicorn/galactic_unicorn.cpp @@ -38,10 +38,6 @@ // // .. and back to the start -static uint16_t r_gamma_lut[256] = {0}; -static uint16_t g_gamma_lut[256] = {0}; -static uint16_t b_gamma_lut[256] = {0}; - static uint32_t dma_channel; static uint32_t dma_ctrl_channel; static uint32_t audio_dma_channel; @@ -122,19 +118,6 @@ namespace pimoroni { // Tear down the old GU instance's hardware resources partial_teardown(); } - - - // create 14-bit gamma luts - for(uint16_t v = 0; v < 256; v++) { - // gamma correct the provided 0-255 brightness value onto a - // 0-65535 range for the pwm counter - float r_gamma = 1.8f; - r_gamma_lut[v] = (uint16_t)(powf((float)(v) / 255.0f, r_gamma) * (float(1U << (BCD_FRAME_COUNT)) - 1.0f) + 0.5f); - float g_gamma = 1.8f; - g_gamma_lut[v] = (uint16_t)(powf((float)(v) / 255.0f, g_gamma) * (float(1U << (BCD_FRAME_COUNT)) - 1.0f) + 0.5f); - float b_gamma = 1.8f; - b_gamma_lut[v] = (uint16_t)(powf((float)(v) / 255.0f, b_gamma) * (float(1U << (BCD_FRAME_COUNT)) - 1.0f) + 0.5f); - } // for each row: // for each bcd frame: @@ -166,7 +149,7 @@ namespace pimoroni { } // setup light sensor adc - adc_init(); + if (!(adc_hw->cs & ADC_CS_EN_BITS)) adc_init(); adc_gpio_init(LIGHT_SENSOR); gpio_init(COLUMN_CLOCK); gpio_set_dir(COLUMN_CLOCK, GPIO_OUT); gpio_put(COLUMN_CLOCK, false); @@ -470,9 +453,9 @@ namespace pimoroni { g = (g * this->brightness) >> 8; b = (b * this->brightness) >> 8; - uint16_t gamma_r = r_gamma_lut[r]; - uint16_t gamma_g = g_gamma_lut[g]; - uint16_t gamma_b = b_gamma_lut[b]; + uint16_t gamma_r = GAMMA_14BIT[r]; + uint16_t gamma_g = GAMMA_14BIT[g]; + uint16_t gamma_b = GAMMA_14BIT[b]; // for each row: // for each bcd frame: diff --git a/libraries/galactic_unicorn/galactic_unicorn.hpp b/libraries/galactic_unicorn/galactic_unicorn.hpp index 3e598287..44a9a7bc 100644 --- a/libraries/galactic_unicorn/galactic_unicorn.hpp +++ b/libraries/galactic_unicorn/galactic_unicorn.hpp @@ -2,6 +2,7 @@ #include "hardware/pio.h" #include "pico_graphics.hpp" +#include "common/pimoroni_common.hpp" #include "../pico_synth/pico_synth.hpp" namespace pimoroni { diff --git a/libraries/stellar_unicorn/CMakeLists.txt b/libraries/stellar_unicorn/CMakeLists.txt new file mode 100644 index 00000000..7438151a --- /dev/null +++ b/libraries/stellar_unicorn/CMakeLists.txt @@ -0,0 +1 @@ +include(stellar_unicorn.cmake) \ No newline at end of file diff --git a/libraries/stellar_unicorn/README.md b/libraries/stellar_unicorn/README.md new file mode 100644 index 00000000..926603f7 --- /dev/null +++ b/libraries/stellar_unicorn/README.md @@ -0,0 +1,259 @@ +# Stellar Unicorn (C/C++) + +Stellar Unicorn offers 16x16 bright RGB LEDs driven by Pico W's PIO in addition to a 1W amplifier + speaker, a collection of system and user buttons, and two Qw/ST connectors for adding external sensors and devices. Woha! + +You can buy one here: https://shop.pimoroni.com/products/stellar-unicorn + +## These are not your everyday RGB LEDs! + +Internally Stellar Unicorn applies gamma correction to the supplied image data and updates the display with 14-bit precision resulting in extremely linear visual output - including at the low end. + +The display is refreshed around 300 times per second (300fps!) allowing for rock solid stability even when being filmed, no smearing or flickering even when in motion. + +No strobing or brightness stepping here folks - it's the perfect backdrop for your tricked out streaming setup! + +## Getting started + +The Stellar Unicorn library provides a collection of methods that allow you to easily access all of the features on the board. + +Drawing is primarily handled via our [PicoGraphics](https://github.com/pimoroni/pimoroni-pico/tree/main/libraries/pico_graphics) library which provides a comprehensive selection of drawing methods - once your drawing work is complete you pass the PicoGraphics object to Stellar Unicorn to have it displayed on the screen. + +- [Example Program](#example-program) +- [Interleaved Framebuffer](#interleaved-framebuffer) +- [Function Reference](#function-reference) + - [System State](#system-state) + - [`void init()`](#void-init) + - [`void set_brightness(float value)`](#void-set_brightnessfloat-value) + - [`float get_brightness()`](#float-get_brightness) + - [`void adjust_brightness(float delta)`](#void-adjust_brightnessfloat-delta) + - [`void set_volume(float value)`](#void-set_volumefloat-value) + - [`float get_volume()`](#float-get_volume) + - [`void adjust_volume(float delta)`](#void-adjust_volumefloat-delta) + - [`uint16_t light()`](#uint16_t-light) + - [`bool is_pressed(uint8_t button)`](#bool-is_presseduint8_t-button) + - [Drawing](#drawing) + - [`void update(PicoGraphics *graphics)`](#void-updatepicographics-graphics) + - [`void clear()`](#void-clear) + - [`void set_pixel(int x, int y, uint8_t r, uint8_t g, uint8_t b)`](#void-set_pixelint-x-int-y-uint8_t-r-uint8_t-g-uint8_t-b) + - [Audio](#audio) + - [`void play_sample(uint8_t *data, uint32_t length)`](#void-play_sampleuint8_t-data-uint32_t-length) + - [`AudioChannel& synth_channel(uint channel)`](#audiochannel-synth_channeluint-channel) + - [`void play_synth()`](#void-play_synth) + - [`void stop_playing()`](#void-stop_playing) + - [Constants](#constants) + - [`WIDTH` \& `HEIGHT`](#width--height) + +# Example Program + +The following example shows how to scroll a simple message across the display. + +```c++ +#include +#include + +#include "libraries/pico_graphics/pico_graphics.hpp" +#include "stellar_unicorn.hpp" + +using namespace pimoroni; + +// create a PicoGraphics framebuffer to draw into +PicoGraphics_PenRGB888 graphics(StellarUnicorn::WIDTH, StellarUnicorn::HEIGHT, nullptr); + +// create our StellarUnicorn object +StellarUnicorn stellar_unicorn; + +// message to scroll +std::string message = "Pirate. Monkey. Robot. Ninja."; + +int main() { + + stdio_init_all(); + + // initialise the StellarUnicorn object + stellar_unicorn.init(); + + // start position for scrolling (off the side of the display) + float scroll = -(float)StellarUnicorn::WIDTH; + + while(true) { + // determine the scroll position of the text + int width = graphics.measure_text(message, 1); + scroll += 0.25f; + if(scroll > width) { + scroll = -(float)StellarUnicorn::WIDTH; + } + + // clear the graphics object + graphics.set_pen(0, 0, 0); + graphics.clear(); + + // draw the text + graphics.set_pen(255, 255, 0); // a nice yellow + graphics.text(message, Point(0 - scroll, 5), -1, 0.55); + + // update the display + stellar_unicorn.update(&graphics); + + sleep_ms(10); + } + + return 0; +} +``` + +# Interleaved Framebuffer + +Stellar Unicorn takes advantage of the RP2040's PIOs to drive screen updates - this is what gives it the performance it needs to render with 14-bit precision at over 300 frames per second. + +The PIO is a powerful, but limited, tool. It has no way to access memory at random and minimal support for decision making and branching. All it can really do is process a stream of data/instructions in order. + +This means that we need to be clever about the way we pass data into the PIO program, the information needs to be delivered in the exact order that the PIO will need to process it. To achieve this we "interleave" our framebuffer - each frame of BCM data is passed one after another with values for the current row, pixel count, and timing inserted as needed: + + row 0 data: + for each bcd frame: + bit : data + 0: 00110110 // row pixel count (minus one) + 1 - 53: xxxxxbgr, xxxxxbgr, xxxxxbgr, ... // pixel data + 54 - 55: xxxxxxxx, xxxxxxxx // dummy bytes to dword align + 56: xxxxrrrr // row select bits + 57 - 59: tttttttt, tttttttt, tttttttt // bcd tick count (0-65536) + + row 1 data: + ... + +If you're working with our library then you don't need to worry about any of these details, they are handled for you. + +# Function Reference + +## System State + +### `void init()` + +Initialise the Stellar Unicorn hardware, interleaved framebuffer, and PIO programs. This function must be called before attempting to do anything else with Stellar Unicorn. + +### `void set_brightness(float value)` + +Set the brightness - `value` is supplied as a floating point value between `0.0` and `1.0`. + +### `float get_brightness()` + +Returns the current brightness as a value between `0.0` to `1.0`. + +### `void adjust_brightness(float delta)` + +Adjust the brightness of the display - `delta` is supplied as a floating point value and will be added to the current brightness (and then clamped to the range `0.0` to `1.0`). + +For example: + +```c++ +stellar.set_brightness(0.5f); +stellar.adjust_brightness(0.1f); // brightness is now 0.6 +stellar.adjust_brightness(0.7f); // brightness is now 1.0 +stellar.adjust_brightness(-0.2f); // brightness is now 0.8 +``` + +### `void set_volume(float value)` + +Set the volume - `value` is supplied as a floating point value between `0.0` and `1.0`. + +### `float get_volume()` + +Returns the current volume as a value between `0.0` and `1.0`. + +### `void adjust_volume(float delta)` + +Adjust the volume - `delta` is supplied as a floating point value and will be added to the current volume (and then clamped to the range `0.0` to `1.0`). + +For example: + +```c++ +stellar.set_volume(0.5f); +stellar.adjust_volume(0.1f); // volume is now 0.6 +stellar.adjust_volume(0.7f); // volume is now 1.0 +stellar.adjust_volume(-0.2f); // volume is now 0.8 +``` + +### `uint16_t light()` + +Get the current value seen by the onboard light sensor as a value between `0` and `4095`. + +### `bool is_pressed(uint8_t button)` + +Returns true if the requested `button` is currently pressed. + +There are a set of constants on the StellarUnicorn class that represent each of the buttons. The brightness, sleep, and volume buttons are not tied to hardware functions (they are implemented entirely in software) so can also be used for user functions if preferred. + +```c++ +static const uint8_t SWITCH_A = 0; +static const uint8_t SWITCH_B = 1; +static const uint8_t SWITCH_C = 3; +static const uint8_t SWITCH_D = 6; +static const uint8_t SWITCH_SLEEP = 27; +static const uint8_t SWITCH_VOLUME_UP = 7; +static const uint8_t SWITCH_VOLUME_DOWN = 8; +static const uint8_t SWITCH_BRIGHTNESS_UP = 21; +static const uint8_t SWITCH_BRIGHTNESS_DOWN = 26; +``` + +For example: + +```c++ +while(!stellar.is_pressed(StellarUnicorn::SWITCH_A)) { + // wait for switch A to be pressed +} +printf("We did it! We pressed switch A! Heck yeah!"); +``` + +## Drawing + +### `void update(PicoGraphics *graphics)` + +**This is our recommended way to update the image on Stellar Unicorn.** The PicoGraphics library provides a collection of powerful drawing methods to make things simple. + +The image on the PicoGraphics object provided is copied to the interleaved framebuffer with gamma correction applied. This lets you have multiple PicoGraphics objects on the go at once and switch between them by changing which gets passed into this function. + +If however you'd rather twiddle individual pixels (for example you're producing some sort of algorithmic output) then you can simply use the `clear()` and `set_pixel()` methods mentioned below. + +### `void clear()` + +Clear the contents of the interleaved framebuffer. This will make your Stellar Unicorn display turn off when the next frame is displayed. + +If you're using PicoGraphics to build your image (recommended!) then you won't need to call this method as you'll overwrite the entire display when you call `update()` anyway. + +### `void set_pixel(int x, int y, uint8_t r, uint8_t g, uint8_t b)` + +Set a single pixel to the specified colour. The newly set colour will be shown at the next frame. Pixel coordinates go from `0` to `52` along the `x` axis and from `0` to `10` on the `y` axis. Colour values are specified as a `0` to `255` RGB triplet - the supplied colour will be gamma corrected automatically. + + When drawing a full image it's recommended that you keep the time between each `set_pixel` call short to ensure your image gets displayed on the next frame. Otherwise you can get scanning-like visual artefacts (unless that is your intention of course!) + +## Audio + +Audio functionality is supported by our [PicoSynth library](https://github.com/pimoroni/pimoroni-pico/tree/main/libraries/pico_synth) which allows you to create multiple voice channels with ADSR (attack decay sustain release) envelopes. It provides a similar set of functionality to the classic SID chip in the Commodore 64. + +### `void play_sample(uint8_t *data, uint32_t length)` + +Play the provided 16-bit audio sample. `data` must point to a buffer that contains 16-bit PCM data and `length` must be the number of samples. + +### `AudioChannel& synth_channel(uint channel)` + +Gets an `AudioChannel` object which can then be configured with voice, ADSR envelope, etc. + +### `void play_synth()` + +Start the synth playing. + +### `void stop_playing()` + +Stops any currently playing audio. + +## Constants + +### `WIDTH` & `HEIGHT` + +The width and height of Stellar Unicorn are available in constants `WIDTH` and `HEIGHT`. + +For example: + +```c++ +int num_pixels = StellarUnicorn::WIDTH * StellarUnicorn::HEIGHT; +``` \ No newline at end of file diff --git a/libraries/stellar_unicorn/audio_i2s.pio b/libraries/stellar_unicorn/audio_i2s.pio new file mode 100644 index 00000000..d0f99d49 --- /dev/null +++ b/libraries/stellar_unicorn/audio_i2s.pio @@ -0,0 +1,63 @@ +; +; Copyright (c) 2020 Raspberry Pi (Trading) Ltd. +; +; SPDX-License-Identifier: BSD-3-Clause +; + +; Transmit a mono or stereo I2S audio stream as stereo +; This is 16 bits per sample; can be altered by modifying the "set" params, +; or made programmable by replacing "set x" with "mov x, y" and using Y as a config register. +; +; Autopull must be enabled, with threshold set to 32. +; Since I2S is MSB-first, shift direction should be to left. +; Hence the format of the FIFO word is: +; +; | 31 : 16 | 15 : 0 | +; | sample ws=0 | sample ws=1 | +; +; Data is output at 1 bit per clock. Use clock divider to adjust frequency. +; Fractional divider will probably be needed to get correct bit clock period, +; but for common syslck freqs this should still give a constant word select period. +; +; One output pin is used for the data output. +; Two side-set pins are used. Bit 0 is clock, bit 1 is word select. + +; Send 16 bit words to the PIO for mono, 32 bit words for stereo + +.program audio_i2s +.side_set 2 + + ; /--- LRCLK + ; |/-- BCLK +bitloop1: ; || + out pins, 1 side 0b10 + jmp x-- bitloop1 side 0b11 + out pins, 1 side 0b00 + set x, 14 side 0b01 + +bitloop0: + out pins, 1 side 0b00 + jmp x-- bitloop0 side 0b01 + out pins, 1 side 0b10 +public entry_point: + set x, 14 side 0b11 + +% c-sdk { + +static inline void audio_i2s_program_init(PIO pio, uint sm, uint offset, uint data_pin, uint clock_pin_base) { + pio_sm_config sm_config = audio_i2s_program_get_default_config(offset); + + sm_config_set_out_pins(&sm_config, data_pin, 1); + sm_config_set_sideset_pins(&sm_config, clock_pin_base); + sm_config_set_out_shift(&sm_config, false, true, 32); + + pio_sm_init(pio, sm, offset, &sm_config); + + uint pin_mask = (1u << data_pin) | (3u << clock_pin_base); + pio_sm_set_pindirs_with_mask(pio, sm, pin_mask, pin_mask); + pio_sm_set_pins_with_mask(pio, sm, 0, pin_mask); // clear pins + + pio_sm_exec(pio, sm, pio_encode_jmp(offset + audio_i2s_offset_entry_point)); +} + +%} \ No newline at end of file diff --git a/libraries/stellar_unicorn/stellar_unicorn.cmake b/libraries/stellar_unicorn/stellar_unicorn.cmake new file mode 100644 index 00000000..1cce9ef5 --- /dev/null +++ b/libraries/stellar_unicorn/stellar_unicorn.cmake @@ -0,0 +1,15 @@ +add_library(stellar_unicorn INTERFACE) + +pico_generate_pio_header(stellar_unicorn ${CMAKE_CURRENT_LIST_DIR}/stellar_unicorn.pio) +pico_generate_pio_header(stellar_unicorn ${CMAKE_CURRENT_LIST_DIR}/audio_i2s.pio) + + +target_sources(stellar_unicorn INTERFACE + ${CMAKE_CURRENT_LIST_DIR}/stellar_unicorn.cpp + ${CMAKE_CURRENT_LIST_DIR}/../pico_synth/pico_synth.cpp +) + +target_include_directories(stellar_unicorn INTERFACE ${CMAKE_CURRENT_LIST_DIR}) + +# Pull in pico libraries that we need +target_link_libraries(stellar_unicorn INTERFACE pico_stdlib pico_graphics hardware_adc hardware_pio hardware_dma) diff --git a/libraries/stellar_unicorn/stellar_unicorn.cpp b/libraries/stellar_unicorn/stellar_unicorn.cpp new file mode 100644 index 00000000..3b4bde04 --- /dev/null +++ b/libraries/stellar_unicorn/stellar_unicorn.cpp @@ -0,0 +1,569 @@ +#include + +#include "hardware/dma.h" +#include "hardware/irq.h" +#include "hardware/adc.h" +#include "hardware/clocks.h" + + +#include "stellar_unicorn.pio.h" +#include "audio_i2s.pio.h" + +#include "stellar_unicorn.hpp" + +// pixel data is stored as a stream of bits delivered in the +// order the PIO needs to manage the shift registers, row +// selects, delays, and latching/blanking +// +// the pins used are: +// +// - 13: column clock (sideset) +// - 14: column data (out base) +// - 15: column latch +// - 16: column blank +// - 17: row select bit 0 +// - 18: row select bit 1 +// - 19: row select bit 2 +// - 20: row select bit 3 +// +// the framebuffer data is structured like this: +// +// for each row: +// for each bcd frame: +// 0: 00111111 // row pixel count (minus one) +// 1: xxxxrrrr // row select bits +// 2 - 65: xxxxxbgr, xxxxxbgr, xxxxxbgr, ... // pixel data +// 66 - 67: xxxxxxxx, xxxxxxxx, // dummy bytes to dword align +// 68 - 71: tttttttt, tttttttt, tttttttt // bcd tick count (0-65536) +// +// .. and back to the start + +static uint32_t dma_channel; +static uint32_t dma_ctrl_channel; +static uint32_t audio_dma_channel; + +namespace pimoroni { + + StellarUnicorn* StellarUnicorn::unicorn = nullptr; + PIO StellarUnicorn::bitstream_pio = pio0; + uint StellarUnicorn::bitstream_sm = 0; + uint StellarUnicorn::bitstream_sm_offset = 0; + PIO StellarUnicorn::audio_pio = pio0; + uint StellarUnicorn::audio_sm = 0; + uint StellarUnicorn::audio_sm_offset = 0; + + // once the dma transfer of the scanline is complete we move to the + // next scanline (or quit if we're finished) + void __isr StellarUnicorn::dma_complete() { + if(unicorn != nullptr && dma_channel_get_irq0_status(audio_dma_channel)) { + unicorn->next_audio_sequence(); + } + } + + StellarUnicorn::~StellarUnicorn() { + if(unicorn == this) { + partial_teardown(); + + dma_channel_unclaim(dma_ctrl_channel); // This works now the teardown behaves correctly + dma_channel_unclaim(dma_channel); // This works now the teardown behaves correctly + pio_sm_unclaim(bitstream_pio, bitstream_sm); + pio_remove_program(bitstream_pio, &stellar_unicorn_program, bitstream_sm_offset); + + dma_channel_unclaim(audio_dma_channel); // This works now the teardown behaves correctly + pio_sm_unclaim(audio_pio, audio_sm); + pio_remove_program(audio_pio, &audio_i2s_program, audio_sm_offset); + irq_remove_handler(DMA_IRQ_0, dma_complete); + + unicorn = nullptr; + } + } + + void StellarUnicorn::partial_teardown() { + // Stop the bitstream SM + pio_sm_set_enabled(bitstream_pio, bitstream_sm, false); + + // Make sure the display is off and switch it to an invisible row, to be safe + const uint pins_to_set = 1 << COLUMN_BLANK | 0b1111 << ROW_BIT_0; + pio_sm_set_pins_with_mask(bitstream_pio, bitstream_sm, pins_to_set, pins_to_set); + + + dma_hw->ch[dma_ctrl_channel].al1_ctrl = (dma_hw->ch[dma_ctrl_channel].al1_ctrl & ~DMA_CH0_CTRL_TRIG_CHAIN_TO_BITS) | (dma_ctrl_channel << DMA_CH0_CTRL_TRIG_CHAIN_TO_LSB); + dma_hw->ch[dma_channel].al1_ctrl = (dma_hw->ch[dma_channel].al1_ctrl & ~DMA_CH0_CTRL_TRIG_CHAIN_TO_BITS) | (dma_channel << DMA_CH0_CTRL_TRIG_CHAIN_TO_LSB); + // Abort any in-progress DMA transfer + dma_safe_abort(dma_ctrl_channel); + //dma_channel_abort(dma_ctrl_channel); + //dma_channel_abort(dma_channel); + dma_safe_abort(dma_channel); + + + // Stop the audio SM + pio_sm_set_enabled(audio_pio, audio_sm, false); + + // Reset the I2S pins to avoid popping when audio is suddenly stopped + const uint pins_to_clear = 1 << I2S_DATA | 1 << I2S_BCLK | 1 << I2S_LRCLK; + pio_sm_set_pins_with_mask(audio_pio, audio_sm, 0, pins_to_clear); + + // Abort any in-progress DMA transfer + dma_safe_abort(audio_dma_channel); + } + + uint16_t StellarUnicorn::light() { + adc_select_input(2); + return adc_read(); + } + + void StellarUnicorn::init() { + + if(unicorn != nullptr) { + // Tear down the old GU instance's hardware resources + partial_teardown(); + } + + // for each row: + // for each bcd frame: + // 0: 00011111 // row pixel count (minus one) + // 1 - 16: xxxxxbgr, xxxxxbgr, xxxxxbgr, ... // pixel data + // 17 - 19: xxxxxxxx, xxxxxxxx, xxxxxxxx // dummy bytes to dword align + // 20: xxxrrrrr // row select bits + // 21 - 23: tttttttt, tttttttt, tttttttt // bcd tick count (0-65536) + // + // .. and back to the start + + + // initialise the bcd timing values and row selects in the bitstream + for(uint8_t row = 0; row < 16; row++) { + for(uint8_t frame = 0; frame < BCD_FRAME_COUNT; frame++) { + // find the offset of this row and frame in the bitstream + uint8_t *p = &bitstream[row * ROW_BYTES + (BCD_FRAME_BYTES * frame)]; + + p[ 0] = 16 - 1; // row pixel count + p[ 1] = row; // row select + + // set the number of bcd ticks for this frame + uint32_t bcd_ticks = (1 << frame); + p[20] = (bcd_ticks & 0xff) >> 0; + p[21] = (bcd_ticks & 0xff00) >> 8; + p[22] = (bcd_ticks & 0xff0000) >> 16; + p[23] = (bcd_ticks & 0xff000000) >> 24; + } + } + + // setup light sensor adc + if (!(adc_hw->cs & ADC_CS_EN_BITS)) adc_init(); + adc_gpio_init(LIGHT_SENSOR); + + gpio_init(COLUMN_CLOCK); gpio_set_dir(COLUMN_CLOCK, GPIO_OUT); gpio_put(COLUMN_CLOCK, false); + gpio_init(COLUMN_DATA); gpio_set_dir(COLUMN_DATA, GPIO_OUT); gpio_put(COLUMN_DATA, false); + gpio_init(COLUMN_LATCH); gpio_set_dir(COLUMN_LATCH, GPIO_OUT); gpio_put(COLUMN_LATCH, false); + gpio_init(COLUMN_BLANK); gpio_set_dir(COLUMN_BLANK, GPIO_OUT); gpio_put(COLUMN_BLANK, true); + + // initialise the row select, and set them to a non-visible row to avoid flashes during setup + gpio_init(ROW_BIT_0); gpio_set_dir(ROW_BIT_0, GPIO_OUT); gpio_put(ROW_BIT_0, true); + gpio_init(ROW_BIT_1); gpio_set_dir(ROW_BIT_1, GPIO_OUT); gpio_put(ROW_BIT_1, true); + gpio_init(ROW_BIT_2); gpio_set_dir(ROW_BIT_2, GPIO_OUT); gpio_put(ROW_BIT_2, true); + gpio_init(ROW_BIT_3); gpio_set_dir(ROW_BIT_3, GPIO_OUT); gpio_put(ROW_BIT_3, true); + + sleep_ms(100); + + // configure full output current in register 2 + + uint16_t reg1 = 0b1111111111001110; + + // clock the register value to the first 11 driver chips + for(int j = 0; j < 11; j++) { + for(int i = 0; i < 16; i++) { + if(reg1 & (1U << (15 - i))) { + gpio_put(COLUMN_DATA, true); + }else{ + gpio_put(COLUMN_DATA, false); + } + sleep_us(10); + gpio_put(COLUMN_CLOCK, true); + sleep_us(10); + gpio_put(COLUMN_CLOCK, false); + } + } + + // clock the last chip and latch the value + for(int i = 0; i < 16; i++) { + if(reg1 & (1U << (15 - i))) { + gpio_put(COLUMN_DATA, true); + }else{ + gpio_put(COLUMN_DATA, false); + } + + sleep_us(10); + gpio_put(COLUMN_CLOCK, true); + sleep_us(10); + gpio_put(COLUMN_CLOCK, false); + + if(i == 4) { + gpio_put(COLUMN_LATCH, true); + } + } + gpio_put(COLUMN_LATCH, false); + + // reapply the blank as the above seems to cause a slight glow. + // Note, this will produce a brief flash if a visible row is selected (which it shouldn't be) + gpio_put(COLUMN_BLANK, false); + sleep_us(10); + gpio_put(COLUMN_BLANK, true); + + gpio_init(MUTE); gpio_set_dir(MUTE, GPIO_OUT); gpio_put(MUTE, true); + + // setup button inputs + gpio_init(SWITCH_A); gpio_pull_up(SWITCH_A); + gpio_init(SWITCH_B); gpio_pull_up(SWITCH_B); + gpio_init(SWITCH_C); gpio_pull_up(SWITCH_C); + gpio_init(SWITCH_D); gpio_pull_up(SWITCH_D); + + gpio_init(SWITCH_SLEEP); gpio_pull_up(SWITCH_SLEEP); + + gpio_init(SWITCH_BRIGHTNESS_UP); gpio_pull_up(SWITCH_BRIGHTNESS_UP); + gpio_init(SWITCH_BRIGHTNESS_DOWN); gpio_pull_up(SWITCH_BRIGHTNESS_DOWN); + + gpio_init(SWITCH_VOLUME_UP); gpio_pull_up(SWITCH_VOLUME_UP); + gpio_init(SWITCH_VOLUME_DOWN); gpio_pull_up(SWITCH_VOLUME_DOWN); + + // setup the pio if it has not previously been set up + bitstream_pio = pio0; + if(unicorn == nullptr) { + bitstream_sm = pio_claim_unused_sm(bitstream_pio, true); + bitstream_sm_offset = pio_add_program(bitstream_pio, &stellar_unicorn_program); + } + + pio_gpio_init(bitstream_pio, COLUMN_CLOCK); + pio_gpio_init(bitstream_pio, COLUMN_DATA); + pio_gpio_init(bitstream_pio, COLUMN_LATCH); + pio_gpio_init(bitstream_pio, COLUMN_BLANK); + + pio_gpio_init(bitstream_pio, ROW_BIT_0); + pio_gpio_init(bitstream_pio, ROW_BIT_1); + pio_gpio_init(bitstream_pio, ROW_BIT_2); + pio_gpio_init(bitstream_pio, ROW_BIT_3); + + // set the blank and row pins to be high, then set all led driving pins as outputs. + // This order is important to avoid a momentary flash + const uint pins_to_set = 1 << COLUMN_BLANK | 0b1111 << ROW_BIT_0; + pio_sm_set_pins_with_mask(bitstream_pio, bitstream_sm, pins_to_set, pins_to_set); + pio_sm_set_consecutive_pindirs(bitstream_pio, bitstream_sm, COLUMN_CLOCK, 8, true); + + pio_sm_config c = stellar_unicorn_program_get_default_config(bitstream_sm_offset); + + // osr shifts right, autopull on, autopull threshold 8 + sm_config_set_out_shift(&c, true, true, 32); + + // configure out, set, and sideset pins + sm_config_set_out_pins(&c, ROW_BIT_0, 4); + sm_config_set_set_pins(&c, COLUMN_DATA, 3); + sm_config_set_sideset_pins(&c, COLUMN_CLOCK); + + // join fifos as only tx needed (gives 8 deep fifo instead of 4) + sm_config_set_fifo_join(&c, PIO_FIFO_JOIN_TX); + + // setup dma transfer for pixel data to the pio + //if(unicorn == nullptr) { + dma_channel = dma_claim_unused_channel(true); + dma_ctrl_channel = dma_claim_unused_channel(true); + //} + dma_channel_config ctrl_config = dma_channel_get_default_config(dma_ctrl_channel); + channel_config_set_transfer_data_size(&ctrl_config, DMA_SIZE_32); + channel_config_set_read_increment(&ctrl_config, false); + channel_config_set_write_increment(&ctrl_config, false); + channel_config_set_chain_to(&ctrl_config, dma_channel); + + dma_channel_configure( + dma_ctrl_channel, + &ctrl_config, + &dma_hw->ch[dma_channel].read_addr, + &bitstream_addr, + 1, + false + ); + + + dma_channel_config config = dma_channel_get_default_config(dma_channel); + channel_config_set_transfer_data_size(&config, DMA_SIZE_32); + channel_config_set_bswap(&config, false); // byte swap to reverse little endian + channel_config_set_dreq(&config, pio_get_dreq(bitstream_pio, bitstream_sm, true)); + channel_config_set_chain_to(&config, dma_ctrl_channel); + + dma_channel_configure( + dma_channel, + &config, + &bitstream_pio->txf[bitstream_sm], + NULL, + BITSTREAM_LENGTH / 4, + false); + + pio_sm_init(bitstream_pio, bitstream_sm, bitstream_sm_offset, &c); + + pio_sm_set_enabled(bitstream_pio, bitstream_sm, true); + + // start the control channel + dma_start_channel_mask(1u << dma_ctrl_channel); + + + // setup audio pio program + audio_pio = pio0; + if(unicorn == nullptr) { + audio_sm = pio_claim_unused_sm(audio_pio, true); + audio_sm_offset = pio_add_program(audio_pio, &audio_i2s_program); + } + + pio_gpio_init(audio_pio, I2S_DATA); + pio_gpio_init(audio_pio, I2S_BCLK); + pio_gpio_init(audio_pio, I2S_LRCLK); + + audio_i2s_program_init(audio_pio, audio_sm, audio_sm_offset, I2S_DATA, I2S_BCLK); + uint32_t system_clock_frequency = clock_get_hz(clk_sys); + uint32_t divider = system_clock_frequency * 4 / SYSTEM_FREQ; // avoid arithmetic overflow + pio_sm_set_clkdiv_int_frac(audio_pio, audio_sm, divider >> 8u, divider & 0xffu); + + audio_dma_channel = dma_claim_unused_channel(true); + dma_channel_config audio_config = dma_channel_get_default_config(audio_dma_channel); + channel_config_set_transfer_data_size(&audio_config, DMA_SIZE_16); + //channel_config_set_bswap(&audio_config, false); // byte swap to reverse little endian + channel_config_set_dreq(&audio_config, pio_get_dreq(audio_pio, audio_sm, true)); + dma_channel_configure(audio_dma_channel, &audio_config, &audio_pio->txf[audio_sm], NULL, 0, false); + + dma_channel_set_irq0_enabled(audio_dma_channel, true); + + if(unicorn == nullptr) { + irq_add_shared_handler(DMA_IRQ_0, dma_complete, PICO_SHARED_IRQ_HANDLER_DEFAULT_ORDER_PRIORITY); + irq_set_enabled(DMA_IRQ_0, true); + } + + unicorn = this; + } + + void StellarUnicorn::clear() { + if(unicorn == this) { + for(uint8_t y = 0; y < HEIGHT; y++) { + for(uint8_t x = 0; x < WIDTH; x++) { + set_pixel(x, y, 0, 0, 0); + } + } + } + } + + void StellarUnicorn::dma_safe_abort(uint channel) { + // Tear down the DMA channel. + // This is copied from: https://github.com/raspberrypi/pico-sdk/pull/744/commits/5e0e8004dd790f0155426e6689a66e08a83cd9fc + uint32_t irq0_save = dma_hw->inte0 & (1u << channel); + hw_clear_bits(&dma_hw->inte0, irq0_save); + + dma_hw->abort = 1u << channel; + + // To fence off on in-flight transfers, the BUSY bit should be polled + // rather than the ABORT bit, because the ABORT bit can clear prematurely. + while (dma_hw->ch[channel].ctrl_trig & DMA_CH0_CTRL_TRIG_BUSY_BITS) tight_loop_contents(); + + // Clear the interrupt (if any) and restore the interrupt masks. + dma_hw->ints0 = 1u << channel; + hw_set_bits(&dma_hw->inte0, irq0_save); + } + + void StellarUnicorn::play_sample(uint8_t *data, uint32_t length) { + stop_playing(); + + if(unicorn == this) { + // Restart the audio SM and start a new DMA transfer + pio_sm_set_enabled(audio_pio, audio_sm, true); + dma_channel_transfer_from_buffer_now(audio_dma_channel, data, length / 2); + play_mode = PLAYING_BUFFER; + } + } + + void StellarUnicorn::play_synth() { + if(play_mode != PLAYING_SYNTH) { + stop_playing(); + } + + if(unicorn == this && play_mode == NOT_PLAYING) { + // Nothing is playing, so we can set up the first buffer straight away + current_buffer = 0; + + populate_next_synth(); + + // Restart the audio SM and start a new DMA transfer + pio_sm_set_enabled(audio_pio, audio_sm, true); + + play_mode = PLAYING_SYNTH; + + next_audio_sequence(); + } + } + + void StellarUnicorn::next_audio_sequence() { + // Clear any interrupt request caused by our channel + //dma_channel_acknowledge_irq0(audio_dma_channel); + // NOTE Temporary replacement of the above until this reaches pico-sdk main: + // https://github.com/raspberrypi/pico-sdk/issues/974 + dma_hw->ints0 = 1u << audio_dma_channel; + + if(play_mode == PLAYING_SYNTH) { + + dma_channel_transfer_from_buffer_now(audio_dma_channel, tone_buffers[current_buffer], TONE_BUFFER_SIZE); + current_buffer = (current_buffer + 1) % NUM_TONE_BUFFERS; + + populate_next_synth(); + } + else { + play_mode = NOT_PLAYING; + } + } + + void StellarUnicorn::populate_next_synth() { + int16_t *samples = tone_buffers[current_buffer]; + for(uint i = 0; i < TONE_BUFFER_SIZE; i++) { + samples[i] = synth.get_audio_frame(); + } + } + + void StellarUnicorn::stop_playing() { + if(unicorn == this) { + // Stop the audio SM + pio_sm_set_enabled(audio_pio, audio_sm, false); + + // Reset the I2S pins to avoid popping when audio is suddenly stopped + const uint pins_to_clear = 1 << I2S_DATA | 1 << I2S_BCLK | 1 << I2S_LRCLK; + pio_sm_set_pins_with_mask(audio_pio, audio_sm, 0, pins_to_clear); + + // Abort any in-progress DMA transfer + dma_safe_abort(audio_dma_channel); + + play_mode = NOT_PLAYING; + } + } + + AudioChannel& StellarUnicorn::synth_channel(uint channel) { + assert(channel < PicoSynth::CHANNEL_COUNT); + return synth.channels[channel]; + } + + void StellarUnicorn::set_pixel(int x, int y, uint8_t r, uint8_t g, uint8_t b) { + x = (WIDTH - 1) - x; + y = (HEIGHT - 1) - y; + + r = (r * this->brightness) >> 8; + g = (g * this->brightness) >> 8; + b = (b * this->brightness) >> 8; + + uint16_t gamma_r = GAMMA_14BIT[r]; + uint16_t gamma_g = GAMMA_14BIT[g]; + uint16_t gamma_b = GAMMA_14BIT[b]; + + // for each row: + // for each bcd frame: + // 0: 00011111 // row pixel count (minus one) + // 1 - 32: xxxxxbgr, xxxxxbgr, xxxxxbgr, ... // pixel data + // 33 - 35: xxxxxxxx, xxxxxxxx, xxxxxxxx // dummy bytes to dword align + // 36: xxxxrrrr // row select bits + // 37 - 39: tttttttt, tttttttt, tttttttt // bcd tick count (0-65536) + // + // .. and back to the start + + // set the appropriate bits in the separate bcd frames + for(uint8_t frame = 0; frame < BCD_FRAME_COUNT; frame++) { + uint8_t *p = &bitstream[y * ROW_BYTES + (BCD_FRAME_BYTES * frame) + 2 + x]; + + uint8_t red_bit = gamma_r & 0b1; + uint8_t green_bit = gamma_g & 0b1; + uint8_t blue_bit = gamma_b & 0b1; + + *p = (blue_bit << 0) | (green_bit << 1) | (red_bit << 2); + + gamma_r >>= 1; + gamma_g >>= 1; + gamma_b >>= 1; + } + } + + void StellarUnicorn::set_brightness(float value) { + value = value < 0.0f ? 0.0f : value; + value = value > 1.0f ? 1.0f : value; + this->brightness = floor(value * 256.0f); + } + + float StellarUnicorn::get_brightness() { + return this->brightness / 255.0f; + } + + void StellarUnicorn::adjust_brightness(float delta) { + this->set_brightness(this->get_brightness() + delta); + } + + void StellarUnicorn::set_volume(float value) { + value = value < 0.0f ? 0.0f : value; + value = value > 1.0f ? 1.0f : value; + this->volume = floor(value * 255.0f); + this->synth.volume = this->volume * 255.0f; + } + + float StellarUnicorn::get_volume() { + return this->volume / 255.0f; + } + + void StellarUnicorn::adjust_volume(float delta) { + this->set_volume(this->get_volume() + delta); + } + + void StellarUnicorn::update(PicoGraphics *graphics) { + if(unicorn == this) { + if(graphics->pen_type == PicoGraphics::PEN_RGB888) { + uint32_t *p = (uint32_t *)graphics->frame_buffer; + + for(int y = 0; y < 16; y++) { + for(int x = 0; x < 16; x++) { + uint32_t col = *p; + uint8_t r = (col & 0xff0000) >> 16; + uint8_t g = (col & 0x00ff00) >> 8; + uint8_t b = (col & 0x0000ff) >> 0; + p++; + + set_pixel(x, y, r, g, b); + } + } + } + else if(graphics->pen_type == PicoGraphics::PEN_RGB565) { + uint16_t *p = (uint16_t *)graphics->frame_buffer; + for(int y = 0; y < 16; y++) { + for(int x = 0; x < 16; x++) { + uint16_t col = __builtin_bswap16(*p); + uint8_t r = (col & 0b1111100000000000) >> 8; + uint8_t g = (col & 0b0000011111100000) >> 3; + uint8_t b = (col & 0b0000000000011111) << 3; + p++; + + set_pixel(x, y, r, g, b); + } + } + } + else if(graphics->pen_type == PicoGraphics::PEN_P8 || graphics->pen_type == PicoGraphics::PEN_P4) { + int offset = 0; + graphics->frame_convert(PicoGraphics::PEN_RGB888, [this, offset](void *data, size_t length) mutable { + uint32_t *p = (uint32_t *)data; + for(auto i = 0u; i < length / 4; i++) { + int x = offset % 16; + int y = offset / 16; + + uint32_t col = *p; + uint8_t r = (col & 0xff0000) >> 16; + uint8_t g = (col & 0x00ff00) >> 8; + uint8_t b = (col & 0x0000ff) >> 0; + + set_pixel(x, y, r, g, b); + offset++; + p++; + } + }); + } + } + } + + bool StellarUnicorn::is_pressed(uint8_t button) { + return !gpio_get(button); + } + +} diff --git a/libraries/stellar_unicorn/stellar_unicorn.hpp b/libraries/stellar_unicorn/stellar_unicorn.hpp new file mode 100644 index 00000000..747fb9de --- /dev/null +++ b/libraries/stellar_unicorn/stellar_unicorn.hpp @@ -0,0 +1,126 @@ +#pragma once + +#include "hardware/pio.h" +#include "pico_graphics.hpp" +#include "common/pimoroni_common.hpp" +#include "../pico_synth/pico_synth.hpp" + +namespace pimoroni { + + class StellarUnicorn { + public: + static const int WIDTH = 16; + static const int HEIGHT = 16; + + // pin assignments + static const uint8_t COLUMN_CLOCK = 13; + static const uint8_t COLUMN_DATA = 14; + static const uint8_t COLUMN_LATCH = 15; + static const uint8_t COLUMN_BLANK = 16; + + static const uint8_t ROW_BIT_0 = 17; + static const uint8_t ROW_BIT_1 = 18; + static const uint8_t ROW_BIT_2 = 19; + static const uint8_t ROW_BIT_3 = 20; + + static const uint8_t LIGHT_SENSOR = 28; + + static const uint8_t MUTE = 22; + + static const uint8_t I2S_DATA = 9; + static const uint8_t I2S_BCLK = 10; + static const uint8_t I2S_LRCLK = 11; + + static const uint8_t I2C_SDA = 4; + static const uint8_t I2C_SCL = 5; + + static const uint8_t SWITCH_A = 0; + static const uint8_t SWITCH_B = 1; + static const uint8_t SWITCH_C = 3; + static const uint8_t SWITCH_D = 6; + + static const uint8_t SWITCH_SLEEP = 27; + + static const uint8_t SWITCH_VOLUME_UP = 7; + static const uint8_t SWITCH_VOLUME_DOWN = 8; + static const uint8_t SWITCH_BRIGHTNESS_UP = 21; + static const uint8_t SWITCH_BRIGHTNESS_DOWN = 26; + + private: + static const uint32_t ROW_COUNT = 16; + static const uint32_t BCD_FRAME_COUNT = 14; + static const uint32_t BCD_FRAME_BYTES = 24; + static const uint32_t ROW_BYTES = BCD_FRAME_COUNT * BCD_FRAME_BYTES; + static const uint32_t BITSTREAM_LENGTH = (ROW_COUNT * ROW_BYTES); + static const uint SYSTEM_FREQ = 22050; + + private: + static PIO bitstream_pio; + static uint bitstream_sm; + static uint bitstream_sm_offset; + + static PIO audio_pio; + static uint audio_sm; + static uint audio_sm_offset; + + uint16_t brightness = 256; + uint16_t volume = 127; + + // must be aligned for 32bit dma transfer + alignas(4) uint8_t bitstream[BITSTREAM_LENGTH] = {0}; + const uint32_t bitstream_addr = (uint32_t)bitstream; + static StellarUnicorn* unicorn; + static void dma_complete(); + + static const uint NUM_TONE_BUFFERS = 2; + static const uint TONE_BUFFER_SIZE = 4; + int16_t tone_buffers[NUM_TONE_BUFFERS][TONE_BUFFER_SIZE] = {0}; + uint current_buffer = 0; + + PicoSynth synth; + + enum PlayMode { + PLAYING_BUFFER, + //PLAYING_TONE, + PLAYING_SYNTH, + NOT_PLAYING + }; + PlayMode play_mode = NOT_PLAYING; + + public: + ~StellarUnicorn(); + + void init(); + static inline void pio_program_init(PIO pio, uint sm, uint offset); + + void clear(); + + void update(PicoGraphics *graphics); + + void set_brightness(float value); + float get_brightness(); + void adjust_brightness(float delta); + + void set_volume(float value); + float get_volume(); + void adjust_volume(float delta); + + void set_pixel(int x, int y, uint8_t r, uint8_t g, uint8_t b); + + uint16_t light(); + + bool is_pressed(uint8_t button); + + void play_sample(uint8_t *data, uint32_t length); + void play_synth(); + void stop_playing(); + AudioChannel& synth_channel(uint channel); + + private: + void partial_teardown(); + void dma_safe_abort(uint channel); + void next_audio_sequence(); + void populate_next_synth(); + }; + +} \ No newline at end of file diff --git a/libraries/stellar_unicorn/stellar_unicorn.pio b/libraries/stellar_unicorn/stellar_unicorn.pio new file mode 100644 index 00000000..5b40713c --- /dev/null +++ b/libraries/stellar_unicorn/stellar_unicorn.pio @@ -0,0 +1,79 @@ +.program stellar_unicorn +.side_set 1 opt + +; out pins: +; +; - 3: row select bit 0 +; - 4: row select bit 1 +; - 5: row select bit 2 +; - 6: row select bit 3 + +; set pins: +; +; - 0: column data (base) +; - 1: column latch +; - 2: column blank + +; sideset pin: +; +; - 0: column clock + +; for each row: +; for each bcd frame: +; 0: 00011111 // row pixel count (minus one) +; 1: xxxxrrrr // row select bits +; 2 - 65: xxxxxbgr, xxxxxbgr, xxxxxbgr, ... // pixel data +; 66 - 67: xxxxxxxx, xxxxxxxx // dummy bytes to dword align +; 68 - 71: tttttttt, tttttttt, tttttttt // bcd tick count (0-65536) +; +; .. and back to the start + + +.wrap_target + +; loop over row pixels + out y, 8 ; get row pixel count (minus 1 because test is pre decrement) + out pins, 8 ; output row select +pixels: + + ; red bit + out x, 1 side 0 [1] ; pull in blue bit from OSR into register x, clear clock + set pins, 0b100 ; clear data bit, blank high + jmp !x endb ; if bit was zero jump + set pins, 0b101 ; set data bit, blank high + endb: + nop side 1 [2] ; clock in bit + + ; green bit + out x, 1 side 0 [1] ; pull in green bit from OSR into register X, clear clock + set pins, 0b100 ; clear data bit, blank high + jmp !x endg ; if bit was zero jump + set pins, 0b101 ; set data bit, blank high + endg: + nop side 1 [2] ; clock in bit + + ; blue bit + out x, 1 side 0 [1] ; pull in red bit from OSR into register X, clear clock + set pins, 0b100 ; clear data bit, blank high + jmp !x endr ; if bit was zero jump + set pins, 0b101 ; set data bit, blank high + endr: + out null, 5 side 1 [2] ; clock in bit + + ;out null, 5 side 0 ; discard the five dummy bits for this pixel + + jmp y-- pixels + + out null, 16 ; discard dummy bytes + + set pins, 0b110 [5] ; latch high, blank high + set pins, 0b000 ; blank low (enable output) + +; loop over bcd delay period + out y, 32 ; get bcd delay counter value +bcd_delay: + jmp y-- bcd_delay + + set pins 0b100 ; blank high (disable output) + +.wrap \ No newline at end of file diff --git a/micropython/examples/cosmic_unicorn/feature_test_with_audio.py b/micropython/examples/cosmic_unicorn/feature_test_with_audio.py index fdb89c6f..70fb2c1a 100644 --- a/micropython/examples/cosmic_unicorn/feature_test_with_audio.py +++ b/micropython/examples/cosmic_unicorn/feature_test_with_audio.py @@ -152,8 +152,6 @@ tone_b = 0 # The current synth beat beat = 0 -text = "" - def next_beat(): global beat @@ -312,6 +310,8 @@ while True: # print("white gradient") gradient(255, 255, 255) + text = "" + if cu.is_pressed(CosmicUnicorn.SWITCH_A): text = "PlaySyn" diff --git a/micropython/examples/stellar_unicorn/README.md b/micropython/examples/stellar_unicorn/README.md new file mode 100644 index 00000000..1f32f55d --- /dev/null +++ b/micropython/examples/stellar_unicorn/README.md @@ -0,0 +1,178 @@ +# Stellar Unicorn MicroPython Examples + +- [About Stellar Unicorn](#about-stellar-unicorn) +- [Stellar Unicorn and PicoGraphics](#stellar-unicorn-and-picographics) +- [Examples](#examples) + - [Clock](#clock) + - [Eighties Super Computer](#eighties-super-computer) + - [Feature Test](#feature-test) + - [Feature Test With Audio](#feature-test-with-audio) + - [Fire Effect](#fire-effect) + - [Lava Lamp](#lava-lamp) + - [Nostalgia Prompt](#nostalgia-prompt) + - [Rainbow](#rainbow) + - [Scrolling Text](#scrolling-text) + - [Today](#today) +- [Wireless Examples](#wireless-examples) + - [Cheerlights History](#cheerlights-history) + - [Stellar Paint](#stellar-paint) + - [Exchange Ticker](#exchange-ticker) + - [HTTP Text](#http-text) + - [Weather](#weather) +- [NumPy examples](#numpy-examples) +- [Other Examples](#other-examples) + - [Launch (Demo Reel)](#launch-demo-reel) +- [Other Resources](#other-resources) + +## About Stellar Unicorn + +Stellar Unicorn offers 16x16 bright RGB LEDs driven by Pico W's PIO in addition to a 1W amplifier + speaker, a collection of system and user buttons, and two Qw/ST connectors for adding external sensors and devices. Woha! + +- :link: [Stellar Unicorn store page](https://shop.pimoroni.com/products/stellar-unicorn) + +Stellar Unicorn ships with MicroPython firmware pre-loaded, but you can download the most recent version at the link below (you'll want the `stellar-unicorn` image). + +- [MicroPython releases](https://github.com/pimoroni/pimoroni-pico/releases) +- [Installing MicroPython](../../../setting-up-micropython.md) + +## Stellar Unicorn and PicoGraphics + +The easiest way to start displaying cool stuff on Stellar Unicorn is using our Stellar Unicorn module (which contains a bunch of helpful functions for interacting with the buttons, adjusting brightness and suchlike) and our PicoGraphics library, which is chock full of useful functions for drawing on the LED matrix. + +- [Stellar Unicorn function reference](../../modules/stellar_unicorn/README.md) +- [PicoGraphics function reference](../../modules/picographics/README.md) + +## Examples + +### Clock + +[clock.py](clock.py) + +Clock example with (optional) NTP synchronization. You can adjust the brightness with LUX + and -, and resync the time by pressing A. + +### Eighties Super Computer + +[eighties_super_computer.py](eighties_super_computer.py) + +Random LEDs blink on and off mimicking the look of a movie super computer doing its work in the eighties. You can adjust the brightness with LUX + and -. + +### Feature Test + +[feature_test.py](feature_test.py) + +Displays some text, gradients and colours and demonstrates button use. You can adjust the brightness with LUX + and -. + +### Feature Test With Audio + +[feature_test_with_audio.py](feature_test_with_audio.py) + +Displays some text, gradients and colours and demonstrates button use. Also demonstrates some of the audio / synth features. +- Button A plays a synth tune +- Button B plays a solo channel of the synth tune +- Button C plays a sinewave (it's frequency can be adjusted with VOL + and -) +- Button D plays a second sinewave (it's frequency can be adjusted with LUX + and -) +- Sleep button stops the sounds + +### Fire Effect + +[fire_effect.py](fire_effect.py) + +A pretty, procedural fire effect. Switch between landscape fire and vertical fire using the A and B buttons! You can adjust the brightness with LUX + and -. + +### Lava Lamp + +[lava_lamp.py](lava_lamp.py) + +A 70s-tastic, procedural rainbow lava lamp. You can adjust the brightness with LUX + and -. + +### Nostalgia Prompt + +[nostalgia_prompt.py](nostalgia_prompt.py) + +A collection of copies of classic terminal styles including C64, MS-DOS, Spectrum, and more. Images and text are drawn pixel by pixel from a pattern of Os and Xs. You can adjust the brightness with LUX + and -. + +### Rainbow + +[rainbow.py](rainbow.py) + +Some good old fashioned rainbows! You can adjust the cycling speed with A and B, stripe width with C and D, hue with VOL + and -, and the brightness with LUX + and -. The sleep button stops the animation (can be started again with A or B). + +### Scrolling Text + +[scrolling_text.py](scrolling_text.py) + +Display scrolling wisdom, quotes or greetz. You can adjust the brightness with LUX + and -. + +### Today + +[today.py](today.py) + +Calendar example with (optional) NTP synchronization. You can adjust the brightness with LUX + and -, and resync the date by pressing C. + +## Wireless Examples + +These examples need `WIFI_CONFIG.py` and `network_manager.py` (from the `common` directory) to be saved to your Pico W. Open up `WIFI_CONFIG.py` in Thonny to add your wifi details (and save it when you're done). + +- [micropython/examples/common](../../examples/common) + +### Cheerlights History + +[cheerlights_history.py](cheerlights_history.py) + +Updates one pixel every two minutes to display the most recent #Cheerlights colour. Discover the most popular colours over time, or use it as an avant garde (but colourful) 16 hour clock! Find out more about the Cheerlights API at https://cheerlights.com/ + +You can adjust the brightness with LUX + and -. + +### Stellar Paint + +[stellar_paint](stellar_paint) + +Draw on your Stellar Unicorn from another device in real time, over wifi! + +This example needs the `micropython-phew` and `microdot` libraries (you can install these using Thonny's 'Tools > Manage Packages'). + +### Exchange Ticker + +[exchange_ticker.py](exchange_ticker.py) + +This example uses the Coinbase open API to collect the current exchange rates of various cryptocurrencies. + +Press A to change to a different base exchange currency. + +### HTTP Text + +[http_text](http_text) + +Display scrolling wisdom, quotes or greetz... from another computer or device! + +You can adjust the brightness with LUX + and -. + +Requires `logging.mpy` and `tinyweb` from [micropython/examples/common](../../examples/common) - copy these into the `lib` folder on your Pico W. You'll also need `index.html` to be saved alongside `html_text.py`. + +### Weather + +[weather](weather) + +Display current weather data from the [Open-Meteo](https://open-meteo.com/) weather API. + +## NumPy examples + +[numpy](numpy) + +The examples in the folder use `numpy`-like array functions contained in the `ulab` library for super fast graphical effects. + +## Other Examples + +### Launch (Demo Reel) + +[launch](launch) + +If you want to get the demo reel that Stellar Unicorn ships with back, copy the contents of this `launch` folder to your Pico W. + +## Other Resources + +Here are some cool Stellar Unicorn community projects and resources that you might find useful / inspirational! Note that code at the links below has not been tested by us and we're not able to offer support with it. + +- :link: [Green Energy Display with Stellar Unicorn](https://www.hackster.io/andreas-motzek/clock-and-green-energy-display-with-stellar-unicorn-641dcb) +- :link: [stellar-emoji-react - paint emojis from a computer, phone or tablet](https://github.com/chriscareycode/stellar-unicorn/tree/main/stellar-emoji-react) +- :link: [stellar-paste - paste images from the clipboard to Stellar Unicorn](https://github.com/chriscareycode/stellar-unicorn/tree/main/stellar-paste) diff --git a/micropython/examples/stellar_unicorn/cheerlights_history.py b/micropython/examples/stellar_unicorn/cheerlights_history.py new file mode 100644 index 00000000..f66f569e --- /dev/null +++ b/micropython/examples/stellar_unicorn/cheerlights_history.py @@ -0,0 +1,151 @@ +# This Stellar Unicorn example updates a pixel every two(ish) minutes +# to display the most recent #cheerlights colour. Discover the most popular +# colours over time, or use it as an avant garde (but colourful) 16 hour clock! +# Find out more about the Cheerlights API at https://cheerlights.com/ +# +# To run this example you'll need WIFI_CONFIG.py and network_manager.py from +# the pimoroni-pico micropython/examples/common folder + +import WIFI_CONFIG +from network_manager import NetworkManager +import uasyncio +import urequests +import time +import random +from machine import Timer, Pin +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY, PEN_P8 as PEN + +URL = 'http://api.thingspeak.com/channels/1417/field/1/last.txt' + +UPDATE_INTERVAL = 60 * 60 / 16 # refresh interval in secs. Be nice to free APIs! +# Calculated as 60 minutes * 60 seconds divided by number of pixels per row +# so that a row of LEDs equates (approximately) to an hour + +CHEERLIGHTS_COLOR_VALUES = [ + (0x00, 0x00, 0x00), # Black/Unlit + (0xFF, 0x00, 0x00), + (0x00, 0x80, 0x00), + (0x00, 0x00, 0xFF), + (0x00, 0xFF, 0xFF), + (0xFF, 0xFF, 0xFF), + (0xFD, 0xF5, 0xE6), + (0x80, 0x00, 0x80), + (0xFF, 0x00, 0xFF), + (0xFF, 0xFF, 0x00), + (0xFF, 0xA5, 0x00), + (0xFF, 0xC0, 0xCB), +] + +CHEERLIGHTS_COLOR_NAMES = [ + "black", # Black/Unlit, not part of cheerlights colours + "red", + "green", + "blue", + "cyan", + "white", + "oldlace", + "purple", + "magenta", + "yellow", + "orange", + "pink" +] + + +def status_handler(mode, status, ip): + # reports wifi connection status + print(mode, status, ip) + print('Connecting to wifi...') + if status is not None: + if status: + print('Wifi connection successful!') + else: + print('Wifi connection failed!') + + +def get_data(): + global index + # open the json file + if UPDATE_INTERVAL >= 60: + print(f'Requesting URL: {URL}') + r = urequests.get(URL) + name = r.content.decode("utf-8").strip() + r.close() + print('Data obtained!') + + else: + print("Random test colour!") + # For sped-up testing we don't want to hit the API at all + name = random.choice(CHEERLIGHTS_COLOR_NAMES[1:]) + + # flash the onboard LED after getting data + pico_led.value(True) + time.sleep(0.2) + pico_led.value(False) + + # add the new hex colour to the end of the array + if index == (width * height): + index = 0 + graphics.clear() + + colour_array[index] = CHEERLIGHTS_COLOR_NAMES.index(name) + index += 1 + print(f'Colour added to array: {name}') + + su.update(graphics) + print("LEDs updated!") + + +su = StellarUnicorn() +width = StellarUnicorn.WIDTH +height = StellarUnicorn.HEIGHT + +# set up a buffer to store the colours +colour_array = bytearray(width * height) + +# We'll use palette mode, so just make the colour list the display buffer +graphics = PicoGraphics(DISPLAY, pen_type=PEN, buffer=colour_array) + +# Set up the palette with cheerlights colour values +graphics.set_palette(CHEERLIGHTS_COLOR_VALUES) +graphics.set_pen(0) +graphics.clear() + +# Keep track of the pixel we're lighting +index = 0 + +su.set_brightness(0.5) + +# set up the Pico W's onboard LED +pico_led = Pin('LED', Pin.OUT) + +# set up wifi +try: + network_manager = NetworkManager(WIFI_CONFIG.COUNTRY, status_handler=status_handler) + uasyncio.get_event_loop().run_until_complete(network_manager.client(WIFI_CONFIG.SSID, WIFI_CONFIG.PSK)) +except Exception as e: + print(f'Wifi connection failed! {e}') + +# get the first lot of data +get_data() + +# start timer (the timer will call the function to update our data every UPDATE_INTERVAL) +timer = Timer(-1) +timer.init(period=int(UPDATE_INTERVAL * 1000), mode=Timer.PERIODIC, callback=lambda t: get_data()) + +while True: + # adjust brightness with LUX + and - + # LEDs take a couple of secs to update, so adjust in big (10%) steps + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.1) + su.update(graphics) + print(f"Brightness set to {su.get_brightness()}") + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.1) + su.update(graphics) + print(f"Brightness set to {su.get_brightness()}") + + # pause for a moment (important or the USB serial device will fail) + time.sleep(0.001) diff --git a/micropython/examples/stellar_unicorn/clock.py b/micropython/examples/stellar_unicorn/clock.py new file mode 100644 index 00000000..20339f1d --- /dev/null +++ b/micropython/examples/stellar_unicorn/clock.py @@ -0,0 +1,229 @@ +# Clock example with NTP synchronization +# +# Create a secrets.py with your Wifi details to be able to get the time +# when the Stellar Unicorn isn't connected to Thonny. +# +# secrets.py should contain: +# WIFI_SSID = "Your WiFi SSID" +# WIFI_PASSWORD = "Your WiFi password" +# +# Clock synchronizes time on start, and resynchronizes if you press the A button + +import time +import math +import machine +import network +import ntptime +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY + +try: + from secrets import WIFI_SSID, WIFI_PASSWORD + wifi_available = True +except ImportError: + print("Create secrets.py with your WiFi credentials to get time from NTP") + wifi_available = False + + +# constants for controlling the background colour throughout the day +MIDDAY_HUE = 1.1 +MIDNIGHT_HUE = 0.8 +HUE_OFFSET = -0.1 + +MIDDAY_SATURATION = 1.0 +MIDNIGHT_SATURATION = 1.0 + +MIDDAY_VALUE = 0.8 +MIDNIGHT_VALUE = 0.3 + + +# create stellar object and graphics surface for drawing +su = StellarUnicorn() +graphics = PicoGraphics(DISPLAY) + +# create the rtc object +rtc = machine.RTC() + +width = StellarUnicorn.WIDTH +height = StellarUnicorn.HEIGHT + +# set up some pens to use later +WHITE = graphics.create_pen(255, 255, 255) +BLACK = graphics.create_pen(0, 0, 0) + + +@micropython.native # noqa: F821 +def from_hsv(h, s, v): + i = math.floor(h * 6.0) + f = h * 6.0 - i + v *= 255.0 + p = v * (1.0 - s) + q = v * (1.0 - f * s) + t = v * (1.0 - (1.0 - f) * s) + + i = int(i) % 6 + if i == 0: + return int(v), int(t), int(p) + if i == 1: + return int(q), int(v), int(p) + if i == 2: + return int(p), int(v), int(t) + if i == 3: + return int(p), int(q), int(v) + if i == 4: + return int(t), int(p), int(v) + if i == 5: + return int(v), int(p), int(q) + + +# function for drawing a gradient background +def gradient_background(start_hue, start_sat, start_val, end_hue, end_sat, end_val): + half_width = width // 2 + for x in range(0, half_width): + hue = ((end_hue - start_hue) * (x / half_width)) + start_hue + sat = ((end_sat - start_sat) * (x / half_width)) + start_sat + val = ((end_val - start_val) * (x / half_width)) + start_val + colour = from_hsv(hue, sat, val) + graphics.set_pen(graphics.create_pen(int(colour[0]), int(colour[1]), int(colour[2]))) + for y in range(0, height): + graphics.pixel(x, y) + graphics.pixel(width - x - 1, y) + + colour = from_hsv(end_hue, end_sat, end_val) + graphics.set_pen(graphics.create_pen(int(colour[0]), int(colour[1]), int(colour[2]))) + for y in range(0, height): + graphics.pixel(half_width, y) + + +# function for drawing outlined text +def outline_text(text, x, y): + graphics.set_pen(BLACK) + graphics.text(text, x - 1, y - 1, -1, 1) + graphics.text(text, x, y - 1, -1, 1) + graphics.text(text, x + 1, y - 1, -1, 1) + graphics.text(text, x - 1, y, -1, 1) + graphics.text(text, x + 1, y, -1, 1) + graphics.text(text, x - 1, y + 1, -1, 1) + graphics.text(text, x, y + 1, -1, 1) + graphics.text(text, x + 1, y + 1, -1, 1) + + graphics.set_pen(WHITE) + graphics.text(text, x, y, -1, 1) + + +# Connect to wifi and synchronize the RTC time from NTP +def sync_time(): + if not wifi_available: + return + + # Start connection + wlan = network.WLAN(network.STA_IF) + wlan.active(True) + wlan.connect(WIFI_SSID, WIFI_PASSWORD) + + # Wait for connect success or failure + max_wait = 100 + while max_wait > 0: + if wlan.status() < 0 or wlan.status() >= 3: + break + max_wait -= 1 + print('waiting for connection...') + time.sleep(0.2) + + redraw_display_if_reqd() + su.update(graphics) + + if max_wait > 0: + print("Connected") + + try: + ntptime.settime() + print("Time set") + except OSError: + pass + + wlan.disconnect() + wlan.active(False) + + +# NTP synchronizes the time to UTC, this allows you to adjust the displayed time +# by one hour increments from UTC by pressing the volume up/down buttons +# +# We use the IRQ method to detect the button presses to avoid incrementing/decrementing +# multiple times when the button is held. +utc_offset = 0 + +up_button = machine.Pin(StellarUnicorn.SWITCH_VOLUME_UP, machine.Pin.IN, machine.Pin.PULL_UP) +down_button = machine.Pin(StellarUnicorn.SWITCH_VOLUME_DOWN, machine.Pin.IN, machine.Pin.PULL_UP) + + +def adjust_utc_offset(pin): + global utc_offset + if pin == up_button: + utc_offset += 1 + if pin == down_button: + utc_offset -= 1 + + +up_button.irq(trigger=machine.Pin.IRQ_FALLING, handler=adjust_utc_offset) +down_button.irq(trigger=machine.Pin.IRQ_FALLING, handler=adjust_utc_offset) + + +year, month, day, wd, hour, minute, second, _ = rtc.datetime() + +last_second = second + + +# Check whether the RTC time has changed and if so redraw the display +def redraw_display_if_reqd(): + global year, month, day, wd, hour, minute, second, last_second + + year, month, day, wd, hour, minute, second, _ = rtc.datetime() + if second != last_second: + hour = (hour + utc_offset) % 24 + time_through_day = (((hour * 60) + minute) * 60) + second + percent_through_day = time_through_day / 86400 + percent_to_midday = 1.0 - ((math.cos(percent_through_day * math.pi * 2) + 1) / 2) + print(percent_to_midday) + + hue = ((MIDDAY_HUE - MIDNIGHT_HUE) * percent_to_midday) + MIDNIGHT_HUE + sat = ((MIDDAY_SATURATION - MIDNIGHT_SATURATION) * percent_to_midday) + MIDNIGHT_SATURATION + val = ((MIDDAY_VALUE - MIDNIGHT_VALUE) * percent_to_midday) + MIDNIGHT_VALUE + + gradient_background(hue, sat, val, + hue + HUE_OFFSET, sat, val) + + clock = "{:02}:{:02}:{:02}".format(hour, minute, second) + + # calculate text position so that it is centred + w = graphics.measure_text(clock, 1) + x = int(width / 2 - w / 2 + 1) + y = 5 + + outline_text(clock, x, y) + + last_second = second + + +# set the font +graphics.set_font("bitmap6") +su.set_brightness(0.5) + +sync_time() + +while True: + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_A): + sync_time() + + redraw_display_if_reqd() + + # update the display + su.update(graphics) + + time.sleep(0.01) diff --git a/micropython/examples/stellar_unicorn/eighties_super_computer.py b/micropython/examples/stellar_unicorn/eighties_super_computer.py new file mode 100644 index 00000000..351f301e --- /dev/null +++ b/micropython/examples/stellar_unicorn/eighties_super_computer.py @@ -0,0 +1,79 @@ +import time +import random +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY + +''' +Random LEDs blink on and off mimicking the look of a movie +super computer doing its work in the eighties. + +You can adjust the brightness with LUX + and -. +''' + +su = StellarUnicorn() +graphics = PicoGraphics(DISPLAY) + +colour = (230, 150, 0) + + +@micropython.native # noqa: F821 +def setup(): + global width, height, lifetime, age + width = StellarUnicorn.WIDTH + height = StellarUnicorn.HEIGHT + lifetime = [[0.0 for y in range(height)] for x in range(width)] + age = [[0.0 for y in range(height)] for x in range(width)] + for y in range(height): + for x in range(width): + lifetime[x][y] = 1.0 + random.uniform(0.0, 0.1) + age[x][y] = random.uniform(0.0, 1.0) * lifetime[x][y] + + +@micropython.native # noqa: F821 +def draw(): + for y in range(height): + for x in range(width): + if age[x][y] < lifetime[x][y] * 0.3: + graphics.set_pen(graphics.create_pen(colour[0], colour[1], colour[2])) + elif age[x][y] < lifetime[x][y] * 0.5: + decay = (lifetime[x][y] * 0.5 - age[x][y]) * 5.0 + graphics.set_pen(graphics.create_pen(int(decay * colour[0]), int(decay * colour[1]), int(decay * colour[2]))) + else: + graphics.set_pen(0) + graphics.pixel(x, y) + + su.update(graphics) + + +@micropython.native # noqa: F821 +def update(): + for y in range(height): + for x in range(width): + if age[x][y] >= lifetime[x][y]: + age[x][y] = 0.0 + lifetime[x][y] = 1.0 + random.uniform(0.0, 0.1) + + age[x][y] += 0.025 + + +setup() + +su.set_brightness(0.5) + +while True: + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + start = time.ticks_ms() + + draw() + update() + + # pause for a moment (important or the USB serial device will fail) + time.sleep(0.001) + + print("total took: {} ms".format(time.ticks_ms() - start)) diff --git a/micropython/examples/stellar_unicorn/exchange_ticker.py b/micropython/examples/stellar_unicorn/exchange_ticker.py new file mode 100644 index 00000000..cccf17d6 --- /dev/null +++ b/micropython/examples/stellar_unicorn/exchange_ticker.py @@ -0,0 +1,148 @@ +""" +This example uses the Coinbase open API to collect the current exchange rates. +Use Switch A to change to a different base exchange currency. +""" + +import WIFI_CONFIG +from network_manager import NetworkManager +import uasyncio +import urequests +import time +import math +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY +import gc + +URL = 'https://api.coinbase.com/v2/exchange-rates?currency={0}' + +currencies = {"Bitcoin": "BTC", "Ethereun": "ETH", "Pound": "GBP", "Dollar": "USD", "Dogecoin": "DOGE"} +currency_keys = list(currencies.keys()) + +ref_currency_name = "" +currency_name = "" +currency_symbol = "" +currency_rate = "" +rate_keys = [] + +# display options +line_1_line = -2 +line_2_line = 9 +line_3_line = 20 + +ref_currency_index = 0 + +cycles_per_sequence = 120 + +su = StellarUnicorn() +graphics = PicoGraphics(DISPLAY) + + +# for Handling the wifi connection +def status_handler(mode, status, ip): + # reports wifi connection status + print(mode, status, ip) + print('Connecting to wifi...') + if status is not None: + if status: + print('Wifi connection successful!') + else: + print('Wifi connection failed!') + + +try: + network_manager = NetworkManager(WIFI_CONFIG.COUNTRY, status_handler=status_handler) + uasyncio.get_event_loop().run_until_complete(network_manager.client(WIFI_CONFIG.SSID, WIFI_CONFIG.PSK)) +except Exception as e: + print(f'Wifi connection failed! {e}') + + +def get_data(currency_selected): + + graphics.set_pen(graphics.create_pen(20, 20, 20)) + graphics.clear() + graphics.set_pen(graphics.create_pen(100, 100, 100)) + graphics.text("Get", 0, 10, scale=1, spacing=1) + graphics.text("data", 8, 16, scale=1, spacing=1) + su.update(graphics) + gc.collect() + # open the json file + print('Requesting URL:') + print(URL.format(currencies[currency_selected])) + r = urequests.get(URL.format(currencies[currency_selected])) + gc.collect() + # open the json data + data_obj = r.json() + print('Data obtained!') + r.close() + return data_obj + + +def calculate_xpos(length, cycle): + cycle_phase = math.cos(math.pi * cycle / (cycles_per_sequence / 2)) + pos_x = int((-(length / 2) * 10) - (length / 2) * 10 * cycle_phase) + return pos_x + + +def update_display(cycle): + + graphics.set_pen(graphics.create_pen(20, 20, 20)) + graphics.clear() + graphics.set_pen(graphics.create_pen(100, 0, 0)) + graphics.text(ref_currency_name, calculate_xpos((len(ref_currency_name)), cycle), line_1_line, scale=2, spacing=1) + graphics.set_pen(graphics.create_pen(100, 100, 0)) + if len(currency_symbol) > 3: + graphics.text(currency_symbol, calculate_xpos((len(currency_symbol)), cycle), line_2_line, scale=2, spacing=1) + else: + graphics.text(currency_symbol, 0, line_2_line, scale=2, spacing=1) + graphics.set_pen(graphics.create_pen(0, 100, 100)) + graphics.text(currency_rate, calculate_xpos((len(currency_rate)), cycle), line_3_line, scale=2, spacing=1) + + +def update_base_currency(index): + fetched_data = 0 + global rates, rate_keys, currency_symbol, currency_rate, ref_currency_name + fetched_data = get_data(currency_keys[index]) + rates = fetched_data['data']['rates'] + rate_keys = list(rates.keys()) + currency_symbol = rate_keys[index] + currency_rate = str(rates[rate_keys[index]]) + ref_currency_name = "{0}-{1}".format(currency_keys[index], currencies[currency_keys[index]]) + gc.collect() + + +update_base_currency(ref_currency_index) +update_display(0) +su.update(graphics) +cycle_count = 0 +symbol_index = 0 +print("Display {0} {1}".format(currency_symbol, currency_rate)) + +while 1: + if cycle_count > 4 * cycles_per_sequence: + cycle_count = 0 + symbol_index += 1 + if symbol_index > len(currency_keys): + symbol_index = 0 + print("Display {0} {1}".format(currency_symbol, currency_rate)) + currency_symbol = rate_keys[symbol_index] + currency_rate = rates[rate_keys[symbol_index]] + + if (su.is_pressed(StellarUnicorn.SWITCH_A)): + ref_currency_index += 1 + if (ref_currency_index > len(currency_keys)): + ref_currency_index = 0 + update_base_currency(ref_currency_index) + + if (su.is_pressed(StellarUnicorn.SWITCH_B)): + cycle_count = 0 + symbol_index += 1 + + if symbol_index > len(rate_keys): + symbol_index = 0 + currency_symbol = rate_keys[symbol_index] + currency_rate = rates[rate_keys[symbol_index]] + + update_display(cycle_count) + su.update(graphics) + cycle_count += 1 + time.sleep(0.1) diff --git a/micropython/examples/stellar_unicorn/feature_test.py b/micropython/examples/stellar_unicorn/feature_test.py new file mode 100644 index 00000000..868d832b --- /dev/null +++ b/micropython/examples/stellar_unicorn/feature_test.py @@ -0,0 +1,123 @@ +import time +import math +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY + +''' +Displays some text, gradients and colours and demonstrates button use. + +You can adjust the brightness with LUX + and -. +''' + +su = StellarUnicorn() +graphics = PicoGraphics(DISPLAY) + +width = StellarUnicorn.WIDTH +height = StellarUnicorn.HEIGHT + + +def gradient(r, g, b): + for y in range(0, height): + for x in range(0, width): + graphics.set_pen(graphics.create_pen(int((r * x) / 16), int((g * x) / 16), int((b * x) / 16))) + graphics.pixel(x, y) + + +def grid(r, g, b): + for y in range(0, height): + for x in range(0, width): + if (x + y) % 2 == 0: + graphics.set_pen(graphics.create_pen(r, g, b)) + else: + graphics.set_pen(0) + graphics.pixel(x, y) + + +def outline_text(text): + ms = time.ticks_ms() + + graphics.set_font("bitmap8") + v = int((math.sin(ms / 100.0) + 1.0) * 127.0) + w = graphics.measure_text(text, 1) + + x = int(16 / 2 - w / 2 + 1) + y = 12 + + graphics.set_pen(0) + graphics.text(text, x - 1, y - 1, -1, 1) + graphics.text(text, x, y - 1, -1, 1) + graphics.text(text, x + 1, y - 1, -1, 1) + graphics.text(text, x - 1, y, -1, 1) + graphics.text(text, x + 1, y, -1, 1) + graphics.text(text, x - 1, y + 1, -1, 1) + graphics.text(text, x, y + 1, -1, 1) + graphics.text(text, x + 1, y + 1, -1, 1) + + graphics.set_pen(graphics.create_pen(v, v, v)) + graphics.text(text, x, y, -1, 1) + + +su.set_brightness(0.5) + +while True: + + time_ms = time.ticks_ms() + test = (time_ms // 1000) % 5 + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + graphics.set_pen(graphics.create_pen(0, 0, 0)) + graphics.clear() + + if test == 0: + print("grid pattern") + grid(255, 255, 255) + elif test == 1: + print("red gradient") + gradient(255, 0, 0) + elif test == 2: + print("green gradient") + gradient(0, 255, 0) + elif test == 3: + print("blue gradient") + gradient(0, 0, 255) + elif test == 4: + print("white gradient") + gradient(255, 255, 255) + + text = "" + + if su.is_pressed(StellarUnicorn.SWITCH_A): + text = "Button A" + + if su.is_pressed(StellarUnicorn.SWITCH_B): + text = "Button B" + + if su.is_pressed(StellarUnicorn.SWITCH_C): + text = "Button C" + + if su.is_pressed(StellarUnicorn.SWITCH_D): + text = "Button D" + + if su.is_pressed(StellarUnicorn.SWITCH_VOLUME_UP): + text = "Louder!" + + if su.is_pressed(StellarUnicorn.SWITCH_VOLUME_DOWN): + text = "Quieter" + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + text = "Brighter!" + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + text = "Darker" + + if su.is_pressed(StellarUnicorn.SWITCH_SLEEP): + text = "Zzz... zzz..." + + outline_text(text) + + su.update(graphics) diff --git a/micropython/examples/stellar_unicorn/feature_test_with_audio.py b/micropython/examples/stellar_unicorn/feature_test_with_audio.py new file mode 100644 index 00000000..1c67de43 --- /dev/null +++ b/micropython/examples/stellar_unicorn/feature_test_with_audio.py @@ -0,0 +1,347 @@ +import gc +import time +import math +from machine import Timer +from stellar import StellarUnicorn, Channel +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY + +''' +Displays some text, gradients and colours and demonstrates button use. +Also demonstrates some of the audio / synth features. + +- Button A plays a synth tune +- Button B plays a solo channel of the synth tune +- Button C plays a sinewave (it's frequency can be adjusted with VOL + and -) +- Button D plays a second sinewave (it's frequency can be adjusted with LUX + and -) +- Sleep button stops the sounds +''' + +gc.collect() + +su = StellarUnicorn() +graphics = PicoGraphics(DISPLAY) + +width = StellarUnicorn.WIDTH +height = StellarUnicorn.HEIGHT + +SONG_LENGTH = 384 +HAT = 20000 +BASS = 500 +SNARE = 6000 +SUB = 50 + +melody_notes = ( + 147, 0, 0, 0, 0, 0, 0, 0, 175, 0, 196, 0, 220, 0, 262, 0, 247, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 175, 0, 0, 0, 0, 0, 0, 0, 175, 0, 196, 0, 220, 0, 262, 0, 330, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 349, 0, 0, 0, 0, 0, 0, 0, 349, 0, 330, 0, 294, 0, 220, 0, 262, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 247, 0, 0, 0, 0, 0, 0, 0, 247, 0, 220, 0, 196, 0, 147, 0, 175, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, + 147, 0, 0, 0, 0, 0, 0, 0, 175, 0, 196, 0, 220, 0, 262, 0, 247, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 175, 0, 0, 0, 0, 0, 0, 0, 175, 0, 196, 0, 220, 0, 262, 0, 330, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 349, 0, 0, 0, 0, 0, 0, 0, 349, 0, 330, 0, 294, 0, 220, 0, 262, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 247, 0, 0, 0, 0, 0, 0, 0, 247, 0, 220, 0, 196, 0, 147, 0, 175, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, + 147, 0, 0, 0, 0, 0, 0, 0, 175, 0, 196, 0, 220, 0, 262, 0, 247, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 175, 0, 0, 0, 0, 0, 0, 0, 175, 0, 196, 0, 220, 0, 262, 0, 330, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 349, 0, 0, 0, 0, 0, 0, 0, 349, 0, 330, 0, 294, 0, 220, 0, 262, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 247, 0, 0, 0, 0, 0, 0, 0, 247, 0, 262, 0, 294, 0, 392, 0, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + +rhythm_notes = ( + 294, 0, 440, 0, 587, 0, 440, 0, 294, 0, 440, 0, 587, 0, 440, 0, 294, 0, 440, 0, 587, 0, 440, 0, 294, 0, 440, 0, 587, 0, 440, 0, 294, 0, 440, 0, 587, 0, 440, 0, 294, 0, 440, 0, 587, 0, 440, 0, 392, 0, 523, 0, 659, 0, 523, 0, 392, 0, 523, 0, 659, 0, 523, 0, 698, 0, 587, 0, 440, 0, 587, 0, 698, 0, 587, 0, 440, 0, 587, 0, 523, 0, 440, 0, 330, 0, 440, 0, 523, 0, 440, 0, 330, 0, 440, 0, 349, 0, 294, 0, 220, 0, 294, 0, 349, 0, 294, 0, 220, 0, 294, 0, 262, 0, 247, 0, 220, 0, 175, 0, 165, 0, 147, 0, 131, 0, 98, 0, + 294, 0, 440, 0, 587, 0, 440, 0, 294, 0, 440, 0, 587, 0, 440, 0, 294, 0, 440, 0, 587, 0, 440, 0, 294, 0, 440, 0, 587, 0, 440, 0, 294, 0, 440, 0, 587, 0, 440, 0, 294, 0, 440, 0, 587, 0, 440, 0, 392, 0, 523, 0, 659, 0, 523, 0, 392, 0, 523, 0, 659, 0, 523, 0, 698, 0, 587, 0, 440, 0, 587, 0, 698, 0, 587, 0, 440, 0, 587, 0, 523, 0, 440, 0, 330, 0, 440, 0, 523, 0, 440, 0, 330, 0, 440, 0, 349, 0, 294, 0, 220, 0, 294, 0, 349, 0, 294, 0, 220, 0, 294, 0, 262, 0, 247, 0, 220, 0, 175, 0, 165, 0, 147, 0, 131, 0, 98, 0, + 294, 0, 440, 0, 587, 0, 440, 0, 294, 0, 440, 0, 587, 0, 440, 0, 294, 0, 440, 0, 587, 0, 440, 0, 294, 0, 440, 0, 587, 0, 440, 0, 294, 0, 440, 0, 587, 0, 440, 0, 294, 0, 440, 0, 587, 0, 440, 0, 392, 0, 523, 0, 659, 0, 523, 0, 392, 0, 523, 0, 659, 0, 523, 0, 698, 0, 587, 0, 440, 0, 587, 0, 698, 0, 587, 0, 440, 0, 587, 0, 523, 0, 440, 0, 330, 0, 440, 0, 523, 0, 440, 0, 330, 0, 440, 0, 349, 0, 294, 0, 220, 0, 294, 0, 349, 0, 294, 0, 220, 0, 294, 0, 262, 0, 247, 0, 220, 0, 175, 0, 165, 0, 147, 0, 131, 0, 98, 0) + +drum_beats = ( + BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, BASS, -1, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, 0, 0, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, BASS, -1, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, 0, 0, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, BASS, -1, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, 0, 0, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, BASS, -1, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, 0, 0, + BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, BASS, -1, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, 0, 0, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, BASS, -1, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, 0, 0, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, BASS, -1, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, 0, 0, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, BASS, -1, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, 0, 0, + BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, BASS, -1, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, 0, 0, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, BASS, -1, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, 0, 0, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, BASS, -1, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, 0, 0, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, BASS, -1, BASS, -1, 0, 0, 0, 0, 0, 0, SNARE, 0, -1, 0, 0, 0, 0, 0) + +hi_hat = ( + HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, + HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, + HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1, HAT, -1) + +bass_notes = ( + SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, SUB, -1, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, SUB, -1, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, SUB, -1, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, SUB, -1, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, + SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, SUB, -1, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, SUB, -1, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, SUB, -1, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, SUB, -1, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, + SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, SUB, -1, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, SUB, -1, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, SUB, -1, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, SUB, -1, SUB, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0) + +notes = [melody_notes, rhythm_notes, drum_beats, hi_hat, bass_notes] +channels = [su.synth_channel(i) for i in range(len(notes) + 1)] # Extra channel for tones + +# Configure the synth to play our notes +channels[0].configure(waveforms=Channel.TRIANGLE + Channel.SQUARE, + attack=0.016, + decay=0.168, + sustain=0xafff / 65535, + release=0.168, + volume=10000 / 65535) + +channels[1].configure(waveforms=Channel.SINE + Channel.SQUARE, + attack=0.038, + decay=0.300, + sustain=0, + release=0, + volume=12000 / 65535) + +channels[2].configure(waveforms=Channel.NOISE, + attack=0.005, + decay=0.010, + sustain=16000 / 65535, + release=0.100, + volume=18000 / 65535) + +channels[3].configure(waveforms=Channel.NOISE, + attack=0.005, + decay=0.005, + sustain=8000 / 65535, + release=0.040, + volume=8000 / 65535) + +channels[4].configure(waveforms=Channel.SQUARE, + attack=0.010, + decay=0.100, + sustain=0, + release=0.500, + volume=12000 / 65535) + + +def gradient(r, g, b): + for y in range(0, height): + for x in range(0, width): + graphics.set_pen(graphics.create_pen(int((r * x) / 52), int((g * x) / 52), int((b * x) / 52))) + graphics.pixel(x, y) + + +def grid(r, g, b): + for y in range(0, height): + for x in range(0, width): + if (x + y) % 2 == 0: + graphics.set_pen(graphics.create_pen(r, g, b)) + else: + graphics.set_pen(0) + graphics.pixel(x, y) + + +def outline_text(text): + ms = time.ticks_ms() + + graphics.set_font("bitmap6") + v = int((math.sin(ms / 100.0) + 1.0) * 127.0) + w = graphics.measure_text(text, 1) + + x = int(16 / 2 - w / 2 + 1) + y = 5 + + graphics.set_pen(0) + graphics.text(text, x - 1, y - 1, -1, 1) + graphics.text(text, x, y - 1, -1, 1) + graphics.text(text, x + 1, y - 1, -1, 1) + graphics.text(text, x - 1, y, -1, 1) + graphics.text(text, x + 1, y, -1, 1) + graphics.text(text, x - 1, y + 1, -1, 1) + graphics.text(text, x, y + 1, -1, 1) + graphics.text(text, x + 1, y + 1, -1, 1) + + graphics.set_pen(graphics.create_pen(v, v, v)) + graphics.text(text, x, y, -1, 1) + + +su.set_brightness(0.5) + +# Vars for storing button state +was_a_pressed = False +was_b_pressed = False +was_c_pressed = False +was_d_pressed = False +was_z_pressed = False + +# The two frequencies to play +tone_a = 0 +tone_b = 0 + +# The current synth beat +beat = 0 + + +def next_beat(): + global beat + for i in range(5): + if notes[i][beat] > 0: + channels[i].frequency(notes[i][beat]) + channels[i].trigger_attack() + elif notes[i][beat] == -1: + channels[i].trigger_release() + + beat = (beat + 1) % SONG_LENGTH + + +def tick(timer): + next_beat() + + +timer = Timer(-1) + +synthing = False + + +while True: + + time_ms = time.ticks_ms() + test = (time_ms // 1000) % 5 + + if su.is_pressed(StellarUnicorn.SWITCH_A): + if not was_a_pressed: + channels[0].volume(10000 / 65535) + channels[1].volume(12000 / 65535) + channels[2].volume(18000 / 65535) + channels[3].volume(8000 / 65535) + channels[4].volume(12000 / 65535) + channels[5].volume(0) + + # If the synth is not already playing, init the first beat + if not synthing: + beat = 0 + next_beat() + + su.play_synth() + synthing = True + timer.init(freq=10, mode=Timer.PERIODIC, callback=tick) + + was_a_pressed = True + else: + was_a_pressed = False + + if su.is_pressed(StellarUnicorn.SWITCH_B): + if not was_b_pressed: + channels[0].volume(0) + channels[1].volume(12000 / 65535) + channels[2].volume(0) + channels[3].volume(0) + channels[4].volume(0) + channels[5].volume(0) + + # If the synth is not already playing, init the first beat + if not synthing: + beat = 0 + next_beat() + + su.play_synth() + synthing = True + timer.init(freq=10, mode=Timer.PERIODIC, callback=tick) + + was_b_pressed = True + else: + was_b_pressed = False + + if su.is_pressed(StellarUnicorn.SWITCH_C): + if not was_c_pressed: + # Stop synth (if running) and play Tone A + timer.deinit() + tone_a = 400 + channels[5].play_tone(tone_a, 0.06) + channels[5].volume(12000 / 65535) + + su.play_synth() + synthing = False + + was_c_pressed = True + else: + was_c_pressed = False + + if su.is_pressed(StellarUnicorn.SWITCH_D): + if not was_d_pressed: + # Stop synth (if running) and play Tone B + timer.deinit() + tone_b = 600 + + channels[5].play_tone(tone_b, 0.06, attack=0.5) + channels[5].volume(12000 / 65535) + + su.play_synth() + synthing = False + + was_d_pressed = True + else: + was_d_pressed = False + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + if tone_b > 0: # Zero means tone not playing + # Increase Tone B + tone_b = min(tone_b + 10, 20000) + channels[5].frequency(tone_b) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + if tone_b > 0: # Zero means tone not playing + # Decrease Tone B + tone_b = max(tone_b - 10, 10) + channels[5].frequency(max(tone_b, 10)) + + if su.is_pressed(StellarUnicorn.SWITCH_VOLUME_UP): + if tone_a > 0: # Zero means tone not playing + # Increase Tone A + tone_a = min(tone_a + 10, 20000) + channels[5].frequency(tone_a) + + if su.is_pressed(StellarUnicorn.SWITCH_VOLUME_DOWN): + if tone_a > 0: # Zero means tone not playing + # Decrease Tone A + tone_a = max(tone_a - 10, 10) + channels[5].frequency(tone_a) + + if su.is_pressed(StellarUnicorn.SWITCH_SLEEP): + if not was_z_pressed: + # Stop synth and both tones + tone_a = 0 + tone_b = 0 + su.stop_playing() + timer.deinit() + synthing = False + + was_z_pressed = True + else: + was_z_pressed = False + + graphics.set_pen(graphics.create_pen(0, 0, 0)) + graphics.clear() + + if test == 0: + # print("grid pattern") + grid(255, 255, 255) + elif test == 1: + # print("red gradient") + gradient(255, 0, 0) + elif test == 2: + # print("green gradient") + gradient(0, 255, 0) + elif test == 3: + # print("blue gradient") + gradient(0, 0, 255) + elif test == 4: + # print("white gradient") + gradient(255, 255, 255) + + text = "" + + if su.is_pressed(StellarUnicorn.SWITCH_A): + text = "PlaySyn" + + if su.is_pressed(StellarUnicorn.SWITCH_B): + text = "SoloSyn" + + if su.is_pressed(StellarUnicorn.SWITCH_C): + text = "Tone A" + + if su.is_pressed(StellarUnicorn.SWITCH_D): + text = "Tone B" + + if su.is_pressed(StellarUnicorn.SWITCH_VOLUME_UP): + text = "RaiseA" + + if su.is_pressed(StellarUnicorn.SWITCH_VOLUME_DOWN): + text = "LowerA" + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + text = "RaiseB" + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + text = "LowerB" + + if su.is_pressed(StellarUnicorn.SWITCH_SLEEP): + text = "Stop" + + outline_text(text) + + su.update(graphics) + + # pause for a moment (important or the USB serial device will fail + time.sleep(0.001) diff --git a/micropython/examples/stellar_unicorn/fire_effect.py b/micropython/examples/stellar_unicorn/fire_effect.py new file mode 100644 index 00000000..d32d9c51 --- /dev/null +++ b/micropython/examples/stellar_unicorn/fire_effect.py @@ -0,0 +1,102 @@ +import time +import random +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY + +''' +A pretty, procedural fire effect. + +You can adjust the brightness with LUX + and -. +''' + +su = StellarUnicorn() +graphics = PicoGraphics(DISPLAY) + +fire_colours = [graphics.create_pen(0, 0, 0), + graphics.create_pen(20, 20, 20), + graphics.create_pen(180, 30, 0), + graphics.create_pen(220, 160, 0), + graphics.create_pen(255, 255, 180)] + + +@micropython.native # noqa: F821 +def update(): + # take local references as it's quicker than accessing the global + # and we access it a lot in this method + _heat = heat + + # clear the bottom row and then add a new fire seed to it + for x in range(width): + _heat[x][height - 1] = 0.0 + _heat[x][height - 2] = 0.0 + + for c in range(fire_spawns): + x = random.randint(0, width - 4) + 2 + _heat[x + 0][height - 1] = 1.0 + _heat[x + 1][height - 1] = 1.0 + _heat[x - 1][height - 1] = 1.0 + _heat[x + 0][height - 2] = 1.0 + _heat[x + 1][height - 2] = 1.0 + _heat[x - 1][height - 2] = 1.0 + + factor = damping_factor / 5.0 + for y in range(0, height - 2): + for x in range(1, width - 1): + _heat[x][y] += _heat[x][y + 1] + _heat[x][y + 2] + _heat[x - 1][y + 1] + _heat[x + 1][y + 1] + _heat[x][y] *= factor + + +@micropython.native # noqa: F821 +def draw(): + # take local references as it's quicker than accessing the global + # and we access it a lot in this method + _graphics = graphics + _heat = heat + _set_pen = graphics.set_pen + _pixel = graphics.pixel + _fire_colours = fire_colours + + for y in range(StellarUnicorn.HEIGHT): + for x in range(StellarUnicorn.WIDTH): + value = _heat[x + 1][y] + if value < 0.15: + _set_pen(_fire_colours[0]) + elif value < 0.25: + _set_pen(_fire_colours[1]) + elif value < 0.35: + _set_pen(_fire_colours[2]) + elif value < 0.45: + _set_pen(_fire_colours[3]) + else: + _set_pen(_fire_colours[4]) + _pixel(x, y) + + su.update(_graphics) + + +width = StellarUnicorn.WIDTH + 2 +height = StellarUnicorn.HEIGHT + 4 +heat = [[0.0 for y in range(height)] for x in range(width)] +fire_spawns = 5 +damping_factor = 0.97 + + +su.set_brightness(0.5) + +while True: + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + start = time.ticks_ms() + + update() + draw() + + print("total took: {} ms".format(time.ticks_ms() - start)) + + # pause for a moment (important or the USB serial device will fail) + time.sleep(0.001) diff --git a/micropython/examples/stellar_unicorn/http_text/html_text.py b/micropython/examples/stellar_unicorn/http_text/html_text.py new file mode 100644 index 00000000..dfd186af --- /dev/null +++ b/micropython/examples/stellar_unicorn/http_text/html_text.py @@ -0,0 +1,190 @@ +import time +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY +import WIFI_CONFIG +from network_manager import NetworkManager +import uasyncio as asyncio +import uasyncio.core +from tinyweb.server import webserver + +''' +Display scrolling wisdom, quotes or greetz... from the internetz! + +You can adjust the brightness with LUX + and -. + +Requires network_manager.py , WIFI_CONFIG.py, logging.mpy and tinyweb from micropython/examples/common +You'll also need index.html to be saved alongside this file. +''' + +# Server Settings +host = "0.0.0.0" +port = 80 + + +def convert_colour(colour_str): + colour_str = colour_str.split(',') + print(colour_str) + return colour_str[0], colour_str[1], colour_str[2] + + +class text: + + def get(self, data): + global MESSAGE, MESSAGE_COLOUR, BACKGROUND_COLOUR + print(data) + if 'text' in data.keys(): + MESSAGE = data['text'] + if 'colourfg' in data.keys(): + MESSAGE_COLOUR = convert_colour(data['colourfg']) + if 'colourbg' in data.keys(): + BACKGROUND_COLOUR = convert_colour(data['colourbg']) + return {'message': 'text updated'}, 201 + + def post(self, data): + + return {'message': 'text updated'}, 201 + + +def status_handler(mode, status, ip): + global MESSAGE + print("Network: {}".format(WIFI_CONFIG.SSID)) + status_text = "Connecting..." + if status is not None: + if status: + status_text = "Connection successful!" + else: + status_text = "Connection failed!" + + print(status_text) + print("IP: {}".format(ip)) + MESSAGE = "{}".format(ip) + + +# Create web server application +app = webserver() + + +# Index page +@app.route('/') +async def index(request, response): + # Send actual HTML page + await response.send_file('index.html', content_type='text/html') + + +# HTTP redirection +@app.route('/redirect') +async def redirect(request, response): + # Start HTTP response with content-type text/html + await response.redirect('/') + +# constants for controlling scrolling text +PADDING = 5 +MESSAGE_COLOUR = (255, 255, 255) +OUTLINE_COLOUR = (0, 0, 0) +BACKGROUND_COLOUR = (10, 0, 96) +MESSAGE = "Connecting" +HOLD_TIME = 2.0 +STEP_TIME = 0.075 + +# create galactic object and graphics surface for drawing +su = StellarUnicorn() +graphics = PicoGraphics(DISPLAY) + +width = StellarUnicorn.WIDTH +height = StellarUnicorn.HEIGHT + + +# function for drawing outlined text +def outline_text(text, x, y): + graphics.set_pen(graphics.create_pen(int(OUTLINE_COLOUR[0]), int(OUTLINE_COLOUR[1]), int(OUTLINE_COLOUR[2]))) + graphics.text(text, x - 1, y - 1, -1, 1) + graphics.text(text, x, y - 1, -1, 1) + graphics.text(text, x + 1, y - 1, -1, 1) + graphics.text(text, x - 1, y, -1, 1) + graphics.text(text, x + 1, y, -1, 1) + graphics.text(text, x - 1, y + 1, -1, 1) + graphics.text(text, x, y + 1, -1, 1) + graphics.text(text, x + 1, y + 1, -1, 1) + + graphics.set_pen(graphics.create_pen(int(MESSAGE_COLOUR[0]), int(MESSAGE_COLOUR[1]), int(MESSAGE_COLOUR[2]))) + graphics.text(text, x, y, -1, 1) + + +def run(): + # Setup wifi + network_manager = NetworkManager(WIFI_CONFIG.COUNTRY, status_handler=status_handler) + + app.add_resource(text, '/update') + + # Connect to Wifi network + asyncio.get_event_loop().run_until_complete(network_manager.client(WIFI_CONFIG.SSID, WIFI_CONFIG.PSK)) + while (not network_manager.isconnected()): + time.sleep(0.1) + + +su.set_brightness(0.5) + +# Start wifi connection +run() + + +async def message_update(): + global MESSAGE + last_time = time.ticks_ms() + STATE_PRE_SCROLL = 0 + STATE_SCROLLING = 1 + STATE_POST_SCROLL = 2 + + shift = 0 + state = STATE_PRE_SCROLL + + # set the font + graphics.set_font("bitmap8") + + # calculate the message width so scrolling can happen + msg_width = graphics.measure_text(MESSAGE, 1) + while 1: + + msg_width = graphics.measure_text(MESSAGE, 1) + time_ms = time.ticks_ms() + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + if state == STATE_PRE_SCROLL and time_ms - last_time > HOLD_TIME * 1000: + if msg_width + PADDING * 2 >= width: + state = STATE_SCROLLING + last_time = time_ms + + if state == STATE_SCROLLING and time_ms - last_time > STEP_TIME * 1000: + shift += 1 + if shift >= (msg_width + PADDING * 2) - width - 1: + state = STATE_POST_SCROLL + last_time = time_ms + + if state == STATE_POST_SCROLL and time_ms - last_time > HOLD_TIME * 1000: + state = STATE_PRE_SCROLL + shift = 0 + last_time = time_ms + + graphics.set_pen(graphics.create_pen(int(BACKGROUND_COLOUR[0]), int(BACKGROUND_COLOUR[1]), int(BACKGROUND_COLOUR[2]))) + graphics.clear() + + outline_text(MESSAGE, x=PADDING - shift, y=11) + + # update the display + su.update(graphics) + + # pause for a moment (important or the USB serial device will fail) + await asyncio.sleep(0.001) + + +# The following is required to run both the web server and the scrolling text coherently +app._server_coro = app._tcp_server(host, port, app.backlog) +loop = asyncio.get_event_loop() +t1 = loop.create_task(message_update()) +t2 = loop.create_task(app._server_coro) +loop.run_forever() diff --git a/micropython/examples/stellar_unicorn/http_text/index.html b/micropython/examples/stellar_unicorn/http_text/index.html new file mode 100644 index 00000000..890148ef --- /dev/null +++ b/micropython/examples/stellar_unicorn/http_text/index.html @@ -0,0 +1,102 @@ + + + + + + +

Stellar Unicorn Web Text

+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +

+ Please type in what you wish to be displayed on the Stellar Unicorn and whe you are ready hit update to update the display +

+ +
+ +
\ No newline at end of file diff --git a/micropython/examples/stellar_unicorn/launch/fire.py b/micropython/examples/stellar_unicorn/launch/fire.py new file mode 100644 index 00000000..24034588 --- /dev/null +++ b/micropython/examples/stellar_unicorn/launch/fire.py @@ -0,0 +1,80 @@ +import random +from stellar import StellarUnicorn + +graphics = None +palette = None + +# setup heat value buffer and fire parameters +width = StellarUnicorn.WIDTH + 2 +height = StellarUnicorn.HEIGHT + 4 +heat = [[0.0 for y in range(height)] for x in range(width)] +fire_spawns = 5 +damping_factor = 0.97 + + +def init(): + # a palette of five fiery colours (white, yellow, orange, red, smoke) + global palette + palette = [ + graphics.create_pen(0, 0, 0), + graphics.create_pen(20, 20, 20), + graphics.create_pen(180, 30, 0), + graphics.create_pen(220, 160, 0), + graphics.create_pen(255, 255, 180) + ] + + +# returns the palette entry for a given heat value +@micropython.native # noqa: F821 +def pen_from_value(value): + if value < 0.15: + return palette[0] + elif value < 0.25: + return palette[1] + elif value < 0.35: + return palette[2] + elif value < 0.45: + return palette[3] + return palette[4] + + +@micropython.native # noqa: F821 +def draw(): + # clear the the rows off the bottom of the display + for x in range(width): + heat[x][height - 1] = 0.0 + heat[x][height - 2] = 0.0 + + # add new fire spawns + for c in range(fire_spawns): + x = random.randint(0, width - 4) + 2 + heat[x + 0][height - 1] = 1.0 + heat[x + 1][height - 1] = 1.0 + heat[x - 1][height - 1] = 1.0 + heat[x + 0][height - 2] = 1.0 + heat[x + 1][height - 2] = 1.0 + heat[x - 1][height - 2] = 1.0 + + # average and damp out each value to create rising flame effect + for y in range(0, height - 2): + for x in range(1, width - 1): + # update this pixel by averaging the below pixels + average = ( + heat[x][y] + heat[x][y + 1] + heat[x][y + 2] + heat[x - 1][y + 1] + heat[x + 1][y + 1] + ) / 5.0 + + # damping factor to ensure flame tapers out towards the top of the displays + average *= damping_factor + + # update the heat map with our newly averaged value + heat[x][y] = average + + # render the heat values to the graphics buffer + for y in range(StellarUnicorn.HEIGHT): + for x in range(StellarUnicorn.WIDTH): + graphics.set_pen(pen_from_value(heat[x + 1][y])) + graphics.pixel(x, y) + + +def test(): + print("A") diff --git a/micropython/examples/stellar_unicorn/launch/main.py b/micropython/examples/stellar_unicorn/launch/main.py new file mode 100644 index 00000000..934e2a27 --- /dev/null +++ b/micropython/examples/stellar_unicorn/launch/main.py @@ -0,0 +1,123 @@ +import time +import math +import machine +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY + +# overclock to 200Mhz +machine.freq(200000000) + +# create stellar object and graphics surface for drawing +stellar = StellarUnicorn() +graphics = PicoGraphics(DISPLAY) + +brightness = 0.5 + + +# returns the id of the button that is currently pressed or +# None if none are +def pressed(): + if stellar.is_pressed(StellarUnicorn.SWITCH_A): + return StellarUnicorn.SWITCH_A + if stellar.is_pressed(StellarUnicorn.SWITCH_B): + return StellarUnicorn.SWITCH_B + if stellar.is_pressed(StellarUnicorn.SWITCH_C): + return StellarUnicorn.SWITCH_C + if stellar.is_pressed(StellarUnicorn.SWITCH_D): + return StellarUnicorn.SWITCH_D + return None + + +# wait for a button to be pressed and load that effect +while True: + b = int((math.sin(time.ticks_ms() / 200) + 1) / 2.0 * 255) + b = max(60, b) + + graphics.set_font("bitmap6") + graphics.set_pen(graphics.create_pen(0, 0, 0)) + graphics.clear() + + graphics.set_pen(graphics.create_pen(b, 0, 0)) + graphics.pixel(0, 3) + graphics.set_pen(graphics.create_pen(0, b, 0)) + graphics.pixel(0, 5) + graphics.set_pen(graphics.create_pen(0, 0, b)) + graphics.pixel(0, 7) + graphics.set_pen(graphics.create_pen(b, 0, b)) + graphics.pixel(0, 9) + + # brightness up/down + if stellar.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + brightness += 0.01 + if stellar.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + brightness -= 0.01 + brightness = max(min(brightness, 1.0), 0.0) + + stellar.set_brightness(brightness) + stellar.update(graphics) + + if pressed() == StellarUnicorn.SWITCH_A: + import fire as effect + break + if pressed() == StellarUnicorn.SWITCH_B: + import supercomputer as effect # noqa: F811 + break + if pressed() == StellarUnicorn.SWITCH_C: + import rainbow as effect # noqa: F811 + break + if pressed() == StellarUnicorn.SWITCH_D: + import today as effect # noqa: F811 + break + + # pause for a moment + time.sleep(0.01) + +# wait until all buttons are released +while pressed() is not None: + time.sleep(0.1) + +effect.graphics = graphics +effect.init() + +sleep = False +was_sleep_pressed = False + + +# wait +while True: + # if A, B, C, or D are pressed then reset + if pressed() is not None: + machine.reset() + + sleep_pressed = stellar.is_pressed(StellarUnicorn.SWITCH_SLEEP) + if sleep_pressed and not was_sleep_pressed: + sleep = not sleep + + was_sleep_pressed = sleep_pressed + + if sleep: + # fade out if screen not off + stellar.set_brightness(stellar.get_brightness() - 0.01) + + if stellar.get_brightness() > 0.0: + effect.draw() + + # update the display + stellar.update(graphics) + else: + effect.draw() + + # update the display + stellar.update(graphics) + + # brightness up/down + if stellar.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + brightness += 0.01 + if stellar.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + brightness -= 0.01 + brightness = max(min(brightness, 1.0), 0.0) + + stellar.set_brightness(brightness) + + # pause for a moment (important or the USB serial device will fail + time.sleep(0.001) diff --git a/micropython/examples/stellar_unicorn/launch/rainbow.py b/micropython/examples/stellar_unicorn/launch/rainbow.py new file mode 100644 index 00000000..637c6ee1 --- /dev/null +++ b/micropython/examples/stellar_unicorn/launch/rainbow.py @@ -0,0 +1,59 @@ +import math +from stellar import StellarUnicorn + +graphics = None +palette = None + +width = StellarUnicorn.WIDTH +height = StellarUnicorn.HEIGHT + + +@micropython.native # noqa: F821 +def from_hsv(h, s, v): + i = math.floor(h * 6.0) + f = h * 6.0 - i + v *= 255.0 + p = v * (1.0 - s) + q = v * (1.0 - f * s) + t = v * (1.0 - (1.0 - f) * s) + + i = int(i) % 6 + if i == 0: + return int(v), int(t), int(p) + if i == 1: + return int(q), int(v), int(p) + if i == 2: + return int(p), int(v), int(t) + if i == 3: + return int(p), int(q), int(v) + if i == 4: + return int(t), int(p), int(v) + if i == 5: + return int(v), int(p), int(q) + + +phase = 0 +hue_map = [from_hsv(x / width, 1.0, 1.0) for x in range(width)] +hue_offset = 0.0 +stripe_width = 3.0 +speed = 5.0 + + +def init(): + pass + + +@micropython.native # noqa: F821 +def draw(): + global hue_offset, phase + + phase += speed + + phase_percent = phase / 15 + for x in range(width): + colour = hue_map[int((x + (hue_offset * width)) % width)] + for y in range(height): + v = ((math.sin((x + y) / stripe_width + phase_percent) + 1.5) / 2.5) + + graphics.set_pen(graphics.create_pen(int(colour[0] * v), int(colour[1] * v), int(colour[2] * v))) + graphics.pixel(x, y) diff --git a/micropython/examples/stellar_unicorn/launch/supercomputer.py b/micropython/examples/stellar_unicorn/launch/supercomputer.py new file mode 100644 index 00000000..0f933483 --- /dev/null +++ b/micropython/examples/stellar_unicorn/launch/supercomputer.py @@ -0,0 +1,40 @@ +import random +from stellar import StellarUnicorn + +graphics = None + +colour = (230, 150, 0) + + +def init(): + global width, height, lifetime, age + width = StellarUnicorn.WIDTH + height = StellarUnicorn.HEIGHT + lifetime = [[0.0 for y in range(height)] for x in range(width)] + age = [[0.0 for y in range(height)] for x in range(width)] + for y in range(height): + for x in range(width): + lifetime[x][y] = 1.0 + random.uniform(0.0, 0.1) + age[x][y] = random.uniform(0.0, 1.0) * lifetime[x][y] + + +@micropython.native # noqa: F821 +def draw(): + for y in range(height): + for x in range(width): + if age[x][y] >= lifetime[x][y]: + age[x][y] = 0.0 + lifetime[x][y] = 1.0 + random.uniform(0.0, 0.1) + + age[x][y] += 0.025 + + for y in range(height): + for x in range(width): + if age[x][y] < lifetime[x][y] * 0.3: + graphics.set_pen(graphics.create_pen(colour[0], colour[1], colour[2])) + elif age[x][y] < lifetime[x][y] * 0.5: + decay = (lifetime[x][y] * 0.5 - age[x][y]) * 5.0 + graphics.set_pen(graphics.create_pen(int(decay * colour[0]), int(decay * colour[1]), int(decay * colour[2]))) + else: + graphics.set_pen(0) + graphics.pixel(x, y) diff --git a/micropython/examples/stellar_unicorn/launch/today.py b/micropython/examples/stellar_unicorn/launch/today.py new file mode 100644 index 00000000..59eba38f --- /dev/null +++ b/micropython/examples/stellar_unicorn/launch/today.py @@ -0,0 +1,99 @@ +import time +import network +import ntptime +import machine + +# You will need to create or update the file secrets.py with your network credentials using Thonny +# in order for the example to update using the NTP. + +# WIFI_CONFIG.py should contain: +# SSID = "" +# PSK = "" +# COUNTRY = "" + +try: + from WIFI_CONFIG import SSID, PSK +except ImportError: + print("Create WIFI_CONFIG.py with your WiFi credentials") + +graphics = None + +WIDTH = 16 # StellarUnicorn.WIDTH +HEIGHT = 16 # StellarUnicorn.HEIGHT + +rtc = machine.RTC() + +DAYS = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"] + +# Enable the Wireless +wlan = network.WLAN(network.STA_IF) +wlan.active(True) + + +def network_connect(ssid, psk): + + # Number of attempts to make before timeout + max_wait = 5 + + # Sets the Wireless LED pulsing and attempts to connect to your local network. + print("connecting...") + wlan.config(pm=0xa11140) # Turn WiFi power saving off for some slow APs + wlan.connect(ssid, psk) + + while max_wait > 0: + if wlan.status() < 0 or wlan.status() >= 3: + break + max_wait -= 1 + print('waiting for connection...') + time.sleep(1) + + # Handle connection error. Switches the Warn LED on. + if wlan.status() != 3: + print("Unable to connect. Attempting connection again") + + +# Function to sync the Pico RTC using NTP +def sync_time(): + + try: + network_connect(SSID, PSK) + except NameError: + print("Create WIFI_CONFIG.py with your WiFi credentials") + + if wlan.status() < 0 or wlan.status() >= 3: + try: + ntptime.settime() + except OSError: + print("Unable to sync with NTP server. Check network and try again.") + + +def init(): + sync_time() + + +def draw(): + # Pens + RED = graphics.create_pen(120, 0, 0) + WHITE = graphics.create_pen(255, 255, 255) + + current_t = rtc.datetime() + + # Set the pen to Red and clear the screen. + graphics.set_pen(WHITE) + graphics.clear() + + # Measures the length of the text to help us with centring later. + day_length = graphics.measure_text(DAYS[current_t[3]], 1) + date_length = graphics.measure_text(str(current_t[2]), 1) + + graphics.set_font("bitmap6") + graphics.set_pen(RED) + graphics.rectangle(0, 0, WIDTH, 7) + graphics.set_pen(WHITE) + graphics.text(DAYS[current_t[3]], (WIDTH // 2) - (day_length // 2), 0, 16, 1) + + graphics.set_pen(RED) + graphics.set_font("bitmap6") + graphics.text(str(current_t[2]), (WIDTH // 2) - (date_length // 2) + 1, 8, 16, 1) + + graphics.set_pen(graphics.create_pen(0, 0, 0)) diff --git a/micropython/examples/stellar_unicorn/lava_lamp.py b/micropython/examples/stellar_unicorn/lava_lamp.py new file mode 100644 index 00000000..de8d4454 --- /dev/null +++ b/micropython/examples/stellar_unicorn/lava_lamp.py @@ -0,0 +1,151 @@ +import time +import random +import math +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY + +''' +A 70s-tastic, procedural rainbow lava lamp. + +You can adjust the brightness with LUX + and -. +''' + +su = StellarUnicorn() +graphics = PicoGraphics(DISPLAY) + +blob_count = 10 + + +class Blob(): + def __init__(self): + self.x = float(random.randint(0, width - 1)) + self.y = float(random.randint(0, height - 1)) + self.r = (float(random.randint(0, 40)) / 10.0) + 5.0 + self.dx = (float(random.randint(0, 2)) / 10.0) - 0.1 + self.dy = (float(random.randint(0, 2)) / 10.0) - 0.05 # positive bias + + +@micropython.native # noqa: F821 +def setup_portrait(): + global width, height, liquid, blobs + width = StellarUnicorn.HEIGHT + height = StellarUnicorn.WIDTH + liquid = [[0.0 for y in range(height)] for x in range(width)] + blobs = [Blob() for i in range(blob_count)] + + +hue = 0.0 + + +@micropython.native # noqa: F821 +def from_hsv(h, s, v): + i = math.floor(h * 6.0) + f = h * 6.0 - i + v *= 255.0 + p = v * (1.0 - s) + q = v * (1.0 - f * s) + t = v * (1.0 - (1.0 - f) * s) + + i = int(i) % 6 + if i == 0: + return graphics.create_pen(int(v), int(t), int(p)) + if i == 1: + return graphics.create_pen(int(q), int(v), int(p)) + if i == 2: + return graphics.create_pen(int(p), int(v), int(t)) + if i == 3: + return graphics.create_pen(int(p), int(q), int(v)) + if i == 4: + return graphics.create_pen(int(t), int(p), int(v)) + if i == 5: + return graphics.create_pen(int(v), int(p), int(q)) + + +@micropython.native # noqa: F821 +def update_liquid(): + for y in range(height): + for x in range(width): + liquid[x][y] = 0.0 + + for blob in blobs: + r_sq = blob.r * blob.r + blob_y_range = range(max(math.floor(blob.y - blob.r), 0), + min(math.ceil(blob.y + blob.r), height)) + blob_x_range = range(max(math.floor(blob.x - blob.r), 0), + min(math.ceil(blob.x + blob.r), width)) + + for y in blob_y_range: + for x in blob_x_range: + x_diff = x - blob.x + y_diff = y - blob.y + d_sq = x_diff * x_diff + y_diff * y_diff + if d_sq <= r_sq: + liquid[x][y] += 1.0 - (d_sq / r_sq) + + +@micropython.native # noqa: F821 +def move_blobs(): + for blob in blobs: + blob.x += blob.dx + blob.y += blob.dy + + if blob.x < 0.0 or blob.x >= float(width): + blob.dx = 0.0 - blob.dx + + if blob.y < 0.0 or blob.y >= float(height): + blob.dy = 0.0 - blob.dy + + +@micropython.native # noqa: F821 +def draw_portrait(): + global hue + hue += 0.001 + + dark = from_hsv(hue, 1.0, 0.3) + mid = from_hsv(hue, 1.0, 0.6) + bright = from_hsv(hue, 1.0, 1.0) + + for y in range(height): + for x in range(width): + v = liquid[x][y] + + # select a colour for this pixel based on how much + # "blobfluence" there is at this position in the liquid + if v >= 1.5: + graphics.set_pen(bright) + elif v >= 1.25: + graphics.set_pen(mid) + elif v >= 1.0: + graphics.set_pen(dark) + else: + graphics.set_pen(0) + graphics.pixel(y, x) + + su.update(graphics) + + +setup_portrait() + +su.set_brightness(0.5) + +while True: + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_A): + setup_portrait() + + start = time.ticks_ms() + + update_liquid() + move_blobs() + draw_portrait() + + # pause for a moment (important or the USB serial device will fail) + time.sleep(0.001) + + print("total took: {} ms".format(time.ticks_ms() - start)) diff --git a/micropython/examples/stellar_unicorn/melody_maker.py b/micropython/examples/stellar_unicorn/melody_maker.py new file mode 100644 index 00000000..ec808276 --- /dev/null +++ b/micropython/examples/stellar_unicorn/melody_maker.py @@ -0,0 +1,131 @@ +import time +import random +from stellar import StellarUnicorn, Channel +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN, PEN_P8 + +""" +A gloriously terrible melody maker. + +Use Vol + and Vol - to move up/down (note pitch) + +Use Lux - and D to move left/right (note position) + +Press A to set a note. + +Press B to delete a note. + +Use Lux + to play/pause. +""" + +NOTE_DURATION = 125 + +su = StellarUnicorn() +su.set_brightness(0.5) +graphics = PicoGraphics(DISPLAY_STELLAR_UNICORN, pen_type=PEN_P8) + +boopety_beepety = su.synth_channel(0) +boopety_beepety.configure( + waveforms=Channel.SQUARE | Channel.SINE, + attack=0.1, + decay=0.5, + sustain=0.0, + release=1.0, + volume=1.0 +) + +su.play_synth() + +black = graphics.create_pen(0, 0, 0) +note = graphics.create_pen(255, 255, 255) +cursor_bg = graphics.create_pen(64, 0, 0) +cursor = graphics.create_pen(255, 0, 0) +playhead = graphics.create_pen(0, 128, 0) + +cursor_position = [0, 0] + +playhead_position = 0 + +width, height = graphics.get_bounds() + +notes = [random.randint(0, height) for _ in range(width)] + +last_note_advance = time.ticks_ms() + +last_action = time.ticks_ms() + +playing = True + + +def debounce(button, duration=100): + global last_action + if su.is_pressed(button) and time.ticks_ms() - last_action > duration: + last_action = time.ticks_ms() + return True + return False + + +def note_to_frequency(note_number): + return int((2 ** ((note_number - 69.0) / 12)) * 440) + + +while True: + if debounce(StellarUnicorn.SWITCH_D): + cursor_position[0] -= 1 + cursor_position[0] %= width + + if debounce(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + cursor_position[0] += 1 + cursor_position[0] %= width + + if debounce(StellarUnicorn.SWITCH_VOLUME_DOWN): + cursor_position[1] += 1 + cursor_position[1] %= height + + if debounce(StellarUnicorn.SWITCH_VOLUME_UP): + cursor_position[1] -= 1 + cursor_position[1] %= height + + if debounce(StellarUnicorn.SWITCH_BRIGHTNESS_UP, 500): + playing = not playing + if not playing: + boopety_beepety.trigger_release() + + if su.is_pressed(StellarUnicorn.SWITCH_A): + notes[cursor_position[0]] = cursor_position[1] + + if su.is_pressed(StellarUnicorn.SWITCH_B): + notes[cursor_position[0]] = None + + if time.ticks_ms() - last_note_advance > NOTE_DURATION: + current_note = None + if playing: + playhead_position += 1 + playhead_position %= width + current_note = notes[playhead_position] + if current_note is not None: + current_note = height - current_note # Bottom = Low, Top = High + current_note += 36 # Shift up the scale a couple of octaves + current_freq = note_to_frequency(current_note) + boopety_beepety.frequency(current_freq) + boopety_beepety.trigger_attack() + last_note_advance = time.ticks_ms() + + graphics.set_pen(black) + graphics.clear() + + graphics.set_pen(playhead) + graphics.line(playhead_position, 0, playhead_position, height) + + graphics.set_pen(cursor_bg) + graphics.line(cursor_position[0], 0, cursor_position[0], height) + + graphics.set_pen(note) + for x in range(width): + y = notes[x] + if y is not None: + graphics.pixel(x, y) + + graphics.set_pen(cursor) + graphics.pixel(*cursor_position) + + su.update(graphics) diff --git a/micropython/examples/stellar_unicorn/nostalgia_prompt.py b/micropython/examples/stellar_unicorn/nostalgia_prompt.py new file mode 100644 index 00000000..8484f9ca --- /dev/null +++ b/micropython/examples/stellar_unicorn/nostalgia_prompt.py @@ -0,0 +1,158 @@ +import time +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY + +''' +A collection of copies of classic terminal styles including +C64, MS-DOS, Spectrum, and more. Images and text are drawn +pixel by pixel from a pattern of Os and Xs. +You can adjust the brightness with LUX + and -. +''' + +su = StellarUnicorn() +graphics = PicoGraphics(DISPLAY) + +prompt_x = 0 +prompt_y = 4 + +c64 = [ + " ", + " ", + " OOOOO OOOOOO OO OOOO ", + " OO OO OO OOOO OO OO ", + " OO OO OO OO OO OO OO ", + " OOOOO OOOO OOOOOO OO OO ", + " OOOO OO OO OO OO OO ", + " OO OO OO OO OO OO OO ", + " OO OO OOOOOO OO OO OOOO ", + " ", + " ", + " ", + " ", + " OO OO XXXXXXX ", + " OO OO XXXXXXX ", + " OO OO XXXXXXX ", + " OOOO XXXXXXX ", + " OO XXXXXXX ", + " OO OO XXXXXXX ", + " OO OO XXXXXXX ", + " XXXXXXX ", + " " +] +FOREGROUND_C64 = (230, 210, 250) +BACKGROUND_C64 = (20, 20, 120) + +spectrum = [ + " ", + " ", + " O OOOO OOOO OOOOO ", + " O O O O O O O ", + " O O O O O O O ", + " O O O OOOOOO O O ", + " O O O O O O O ", + " OOOOOO OOOO O O OOOOO ", + " ", + " ", + " ", + " ", + " ", + " O O O O XXXXXXXX ", + " O O O O X XXXXXX ", + " X XXXXXX ", + " X XXXXXX ", + " X XXXXXX ", + " X XXXXXX ", + " X X ", + " XXXXXXXX ", + " " +] +FOREGROUND_SPECTRUM = (0, 0, 0) +BACKGROUND_SPECTRUM = (180, 150, 150) + +bbc_micro = [ + " ", + " ", + " OOOOO OO OOOO OOO ", + " O O O O O O O ", + " O O O O O O ", + " OOOOO O O OOOO O ", + " O O OOOOOO O O ", + " O O O O O O O ", + " OOOOO O O OOOO OOO ", + " ", + " ", + " ", + " ", + " OOOO O ", + " O O O ", + " O O ", + " O O ", + " O O ", + " O O O ", + " OOOO O ", + " XXXXXXX ", + " " +] +FOREGROUND_BBC_MICRO = (255, 255, 255) +BACKGROUND_BBC_MICRO = (0, 0, 0) + +PROMPT_C64 = 0 +PROMPT_SPECTRUM = 1 +PROMPT_BBC_MICRO = 2 +prompt = 0 + + +@micropython.native # noqa: F821 +def draw(image, fg, bg, time_ms): + fg_pen = graphics.create_pen(fg[0], fg[1], fg[2]) + bg_pen = graphics.create_pen(bg[0], bg[1], bg[2]) + graphics.set_pen(bg_pen) + graphics.clear() + for y in range(len(image)): + row = image[y] + for x in range(len(row)): + pixel = row[x] + # draw the prompt text + if pixel == 'O': + graphics.set_pen(fg_pen) + + # draw the caret blinking + elif pixel == 'X' and (time_ms // 300) % 2: + graphics.set_pen(fg_pen) + + else: + graphics.set_pen(bg_pen) + + graphics.pixel(x + prompt_x, y + prompt_y) + + su.update(graphics) + + +su.set_brightness(0.5) + +while True: + + time_ms = time.ticks_ms() + prompt = (time_ms // 3000) % 3 + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + start = time.ticks_ms() + + if prompt == PROMPT_C64: + draw(c64, FOREGROUND_C64, BACKGROUND_C64, time_ms) + + elif prompt == PROMPT_SPECTRUM: + draw(spectrum, FOREGROUND_SPECTRUM, BACKGROUND_SPECTRUM, time_ms) + + elif prompt == PROMPT_BBC_MICRO: + draw(bbc_micro, FOREGROUND_BBC_MICRO, BACKGROUND_BBC_MICRO, time_ms) + + # pause for a moment (important or the USB serial device will fail) + time.sleep(0.001) + + print("total took: {} ms".format(time.ticks_ms() - start)) diff --git a/micropython/examples/stellar_unicorn/numpy/eighties_super_computer.py b/micropython/examples/stellar_unicorn/numpy/eighties_super_computer.py new file mode 100644 index 00000000..17c7757c --- /dev/null +++ b/micropython/examples/stellar_unicorn/numpy/eighties_super_computer.py @@ -0,0 +1,115 @@ +import gc +import time +import random +from stellar import StellarUnicorn, Channel +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN, PEN_P8 +from ulab import numpy + +""" +A random, computer effect. +Experiment with the damping, number of spawns and intensity to change the effect. +""" + +# MAXIMUM OVERKILL +# machine.freq(250_000_000) + +DAMPING_FACTOR = 0.95 +NUMBER_OF_LIGHTS = 4 +INTENSITY = 20 + +volume = 0.5 + +su = StellarUnicorn() +su.set_brightness(0.5) +graphics = PicoGraphics(DISPLAY_STELLAR_UNICORN, pen_type=PEN_P8) + +boopety_beepety = su.synth_channel(0) +boopety_beepety.configure( + waveforms=Channel.SQUARE | Channel.SINE, + attack=0.1, + decay=0.1, + sustain=0.0, + release=0.5, + volume=volume +) + +su.play_synth() + +# Fill palette with a yellow +r, g, b = (230, 150, 0) +PALETTE_ENTRIES = 255 +for x in range(PALETTE_ENTRIES): + _ = graphics.create_pen(r * x // PALETTE_ENTRIES, g * x // PALETTE_ENTRIES, b) + + +def update(): + computer[:] *= DAMPING_FACTOR + + # Spawn random drops + for _ in range(NUMBER_OF_LIGHTS): + x = random.randint(0, width - 1) + y = random.randint(0, height - 1) + computer[y][x] = random.randint(0, INTENSITY) + + +def draw(): + # Copy the effect to the framebuffer + memoryview(graphics)[:] = numpy.ndarray(numpy.clip(computer, 0, 1) * (PALETTE_ENTRIES - 1), dtype=numpy.uint8).tobytes() + su.update(graphics) + + +width = StellarUnicorn.WIDTH +height = StellarUnicorn.HEIGHT +computer = numpy.zeros((height, width)) + +t_count = 0 +t_total = 0 + + +while True: + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_VOLUME_DOWN): + volume -= 0.1 + volume = max(0.0, volume) + boopety_beepety.volume(volume) + + if su.is_pressed(StellarUnicorn.SWITCH_VOLUME_UP): + volume += 0.1 + volume = min(1.0, volume) + boopety_beepety.volume(volume) + + tstart = time.ticks_ms() + gc.collect() + update() + draw() + tfinish = time.ticks_ms() + + # Play random notes between 100 and 880Hz for a computery effect + boopety_beepety.frequency(random.randint(100, 880)) + boopety_beepety.trigger_attack() + + total = tfinish - tstart + t_total += total + t_count += 1 + + if t_count == 60: + per_frame_avg = t_total / t_count + print(f"60 frames in {t_total}ms, avg {per_frame_avg:.02f}ms per frame, {1000/per_frame_avg:.02f} FPS") + t_count = 0 + t_total = 0 + + # pause for a moment (important or the USB serial device will fail) + # try to pace at 60fps or 30fps + if total > 1000 / 30: + time.sleep(0.0001) + elif total > 1000 / 60: + t = 1000 / 30 - total + time.sleep(t / 1000) + else: + t = 1000 / 60 - total + time.sleep(t / 1000) diff --git a/micropython/examples/stellar_unicorn/numpy/fire_effect.py b/micropython/examples/stellar_unicorn/numpy/fire_effect.py new file mode 100644 index 00000000..851ada02 --- /dev/null +++ b/micropython/examples/stellar_unicorn/numpy/fire_effect.py @@ -0,0 +1,126 @@ +import time +import gc +import random +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN, PEN_P8 +from ulab import numpy + +""" +Classic fire effect. +Play with the number of spawns, heat, damping factor and colour palette to tweak it. +""" + +# MAXIMUM OVERKILL +# machine.freq(250_000_000) + +su = StellarUnicorn() +su.set_brightness(0.5) +graphics = PicoGraphics(DISPLAY_STELLAR_UNICORN, pen_type=PEN_P8) + +# Number of random fire spawns +FIRE_SPAWNS = 3 + +# Fire damping +DAMPING_FACTOR = 0.98 + +# TURN UP THE HEEEAAT +HEAT = 3.0 + +# Create the fire palette +""" +# Raging Gas Inferno +graphics.create_pen(0, 0, 0) +graphics.create_pen(0, 0, 0) +graphics.create_pen(20, 20, 20) +graphics.create_pen(50, 10, 0) +graphics.create_pen(180, 30, 0) +graphics.create_pen(220, 160, 0) +graphics.create_pen(255, 255, 180) +graphics.create_pen(255, 255, 220) +graphics.create_pen(90, 90, 255) +graphics.create_pen(255, 0, 255) +""" +# Original Colours +graphics.create_pen(0, 0, 0) +graphics.create_pen(20, 20, 20) +graphics.create_pen(180, 30, 0) +graphics.create_pen(220, 160, 0) +graphics.create_pen(255, 255, 180) + +PALETTE_SIZE = 5 # Should match the number of colours defined above + + +def update(): + # Clear the bottom two rows (off screen) + heat[height - 1][:] = 0.0 + heat[height - 2][:] = 0.0 + + # Add random fire spawns + for c in range(FIRE_SPAWNS): + x = random.randint(0, width - 4) + 2 + heat[height - 1][x - 1:x + 1] = HEAT / 2.0 + heat[height - 2][x - 1:x + 1] = HEAT + + # Propagate the fire upwards + a = numpy.roll(heat, -1, axis=0) # y + 1, x + b = numpy.roll(heat, -2, axis=0) # y + 2, x + c = numpy.roll(heat, -1, axis=0) # y + 1 + d = numpy.roll(c, 1, axis=1) # y + 1, x + 1 + e = numpy.roll(c, -1, axis=1) # y + 1, x - 1 + + # Average over 5 adjacent pixels and apply damping + heat[:] += a + b + d + e + heat[:] *= DAMPING_FACTOR / 5.0 + + +def draw(): + # Copy the fire effect to the framebuffer + # Clips the fire to 0.0 to 1.0 + # Multiplies it by the number of palette entries (-1) to turn it into a palette index + # Converts to uint8_t datatype to match the framebuffer + memoryview(graphics)[:] = numpy.ndarray(numpy.clip(heat[0:16, 0:16], 0, 1) * (PALETTE_SIZE - 1), dtype=numpy.uint8).tobytes() + su.update(graphics) + + +width = StellarUnicorn.WIDTH +height = StellarUnicorn.HEIGHT + 4 +heat = numpy.zeros((height, width)) + +t_count = 0 +t_total = 0 + +while True: + gc.collect() + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + tstart = time.ticks_ms() + gc.collect() + update() + draw() + tfinish = time.ticks_ms() + + total = tfinish - tstart + t_total += total + t_count += 1 + + if t_count == 60: + per_frame_avg = t_total / t_count + print(f"60 frames in {t_total}ms, avg {per_frame_avg:.02f}ms per frame, {1000/per_frame_avg:.02f} FPS") + t_count = 0 + t_total = 0 + + # pause for a moment (important or the USB serial device will fail) + # try to pace at 60fps or 30fps + if total > 1000 / 30: + time.sleep(0.0001) + elif total > 1000 / 60: + t = 1000 / 30 - total + time.sleep(t / 1000) + else: + t = 1000 / 60 - total + time.sleep(t / 1000) diff --git a/micropython/examples/stellar_unicorn/numpy/lava_lamp.py b/micropython/examples/stellar_unicorn/numpy/lava_lamp.py new file mode 100644 index 00000000..ce542b7f --- /dev/null +++ b/micropython/examples/stellar_unicorn/numpy/lava_lamp.py @@ -0,0 +1,120 @@ +import gc +import time +import math +import random +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN, PEN_P8 +from ulab import numpy + +""" +A lava lamp effect, created by blurred, moving particles. +""" + +# MAXIMUM OVERKILL +# machine.freq(250_000_000) + +NUM_BLOBS = 3 + +su = StellarUnicorn() +graphics = PicoGraphics(DISPLAY_STELLAR_UNICORN, pen_type=PEN_P8) +su.set_brightness(0.5) + +width = StellarUnicorn.WIDTH +height = StellarUnicorn.HEIGHT +lava = numpy.zeros((height, width)) + + +class Blob(): + def __init__(self): + self.x = float(random.randint(0, width - 1)) + self.y = float(random.randint(0, height - 1)) + self.r = (float(random.randint(0, 40)) / 10.0) + 5.0 + self.dx = (float(random.randint(0, 2)) / 20.0) - 0.05 + self.dy = (float(random.randint(0, 2)) / 20.0) - 0.025 # positive bias + + def move(self): + self.x += self.dx + self.y += self.dy + + if self.x < 0.0 or self.x >= float(width): + self.x = max(0.0, self.x) + self.x = min(float(width - 1), self.x) + self.dx = -self.dx + + if self.y < 0.0 or self.y >= float(height): + self.y = max(0.0, self.y) + self.y = min(float(height - 1), self.y) + self.dy = -self.dy + + +blobs = [Blob() for _ in range(NUM_BLOBS)] + + +# Fill palette with a steep falloff from bright red to dark blue +PAL_COLS = 9 +for x in range(PAL_COLS): + graphics.create_pen_hsv(0.5 + math.log(x + 1, PAL_COLS + 1) / 2.0, 1.0, math.log(x + 1, PAL_COLS + 1)) + + +def update(): + # Update the blobs and draw them into the effect + for blob in blobs: + blob.move() + lava[int(blob.y)][int(blob.x)] = blob.r + + # Propagate the blobs outwards + a = numpy.roll(lava, 1, axis=0) + b = numpy.roll(lava, -1, axis=0) + d = numpy.roll(lava, 1, axis=1) + e = numpy.roll(lava, -1, axis=1) + + # Average over 5 adjacent pixels and apply damping + lava[:] += a + b + d + e + lava[:] *= 0.97 / 5.0 + + +def draw(): + # Copy the lava effect to the framebuffer + # Clips to 0.0 - 1.0 + # Multiplies by palette entries (-1) to turn it into a palette index + # Converts to uint8_t datatype to match the framebuffer + memoryview(graphics)[:] = numpy.ndarray(numpy.clip(lava, 0.0, 1.0) * (PAL_COLS - 1), dtype=numpy.uint8).tobytes() + su.update(graphics) + + +t_count = 0 +t_total = 0 + +while True: + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + tstart = time.ticks_ms() + gc.collect() + update() + draw() + tfinish = time.ticks_ms() + + total = tfinish - tstart + t_total += total + t_count += 1 + + if t_count == 60: + per_frame_avg = t_total / t_count + print(f"60 frames in {t_total}ms, avg {per_frame_avg:.02f}ms per frame, {1000/per_frame_avg:.02f} FPS") + t_count = 0 + t_total = 0 + + # pause for a moment (important or the USB serial device will fail) + # try to pace at 60fps or 30fps + if total > 1000 / 30: + time.sleep(0.0001) + elif total > 1000 / 60: + t = 1000 / 30 - total + time.sleep(t / 1000) + else: + t = 1000 / 60 - total + time.sleep(t / 1000) diff --git a/micropython/examples/stellar_unicorn/numpy/life.py b/micropython/examples/stellar_unicorn/numpy/life.py new file mode 100644 index 00000000..41ac81e1 --- /dev/null +++ b/micropython/examples/stellar_unicorn/numpy/life.py @@ -0,0 +1,152 @@ +import gc +import time +import random +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN, PEN_P8 +from ulab import numpy + +""" +A randomly-seeded game-of-life cellular automata effect. +Experiment with the values below to change the effect. + +Press "A" to manually re-seed. +""" + +# MAXIMUM OVERKILL +# machine.freq(250_000_000) + +INITIAL_LIFE = 128 # Number of live cells to seed +GENERATION_TIME_MS = 100 # MS between generations +SMOOTHED = True # Enable for a more organic if somewhat unsettling feel +STALEMATE_DEPTH = 5 # How many generations of changes must match before reset + +DECAY = 0.90 # Rate at which smoothing effect decays, higher number = more persistent, 1.0 = no decay +TENACITY = 32 # Rate at which smoothing effect increases + +su = StellarUnicorn() +su.set_brightness(0.5) +graphics = PicoGraphics(DISPLAY_STELLAR_UNICORN, pen_type=PEN_P8) + +changed_cells = [] + + +for c in range(256): + graphics.create_pen(c // 2, 0, c) + + +def update(): + global last_gen, changed_cells + + if SMOOTHED: + duration[:] += life * TENACITY + duration[:] *= DECAY + + if time.ticks_ms() - last_gen < GENERATION_TIME_MS: + return + + last_gen = time.ticks_ms() + + # Rollin' rollin' rollin. + _N = numpy.roll(life, -1, axis=0) + _NW = numpy.roll(_N, -1, axis=1) + _NE = numpy.roll(_N, 1, axis=1) + _S = numpy.roll(life, 1, axis=0) + _SW = numpy.roll(_S, -1, axis=1) + _SE = numpy.roll(_S, 1, axis=1) + _W = numpy.roll(life, -1, axis=1) + _E = numpy.roll(life, 1, axis=1) + + # Compute the total neighbours for each cell + neighbours[:] = _N + _NW + _NE + _S + _SW + _SE + _W + _E + + next_generation[:] = life[:] + + # Any cells with exactly three neighbours should always stay alive + next_generation[:] += neighbours[:] == 3 + + # Any alive cells with less than two neighbours should die + next_generation[:] -= (neighbours[:] < 2) * life + + # Any alive cells with more than three neighbours should die + next_generation[:] -= (neighbours[:] > 3) * life + + next_generation[:] = numpy.clip(next_generation, 0, 1) + + changed_cells.append(numpy.sum(life != next_generation)) + changed_cells = changed_cells[-STALEMATE_DEPTH:] + + life[:] = next_generation + + if changed_cells.count(changed_cells[0]) == STALEMATE_DEPTH: + seed_life(INITIAL_LIFE // 2) + + +def draw(): + # Copy the effect to the framebuffer + if SMOOTHED: + memoryview(graphics)[:] = numpy.ndarray(numpy.clip(duration, 0, 255), dtype=numpy.uint8).tobytes() + else: + memoryview(graphics)[:] = numpy.ndarray(life * 255, dtype=numpy.uint8).tobytes() + su.update(graphics) + + +def seed_life(amount=INITIAL_LIFE): + for _ in range(amount): + x = random.randint(0, width - 1) + y = random.randint(0, height - 1) + life[y][x] = int(True) # Avoid: TypeError: 'bool' object isn't iterable + + +width = StellarUnicorn.WIDTH +height = StellarUnicorn.HEIGHT +life = numpy.zeros((height, width), dtype=numpy.bool) +next_generation = numpy.zeros((height, width), dtype=numpy.bool) +neighbours = numpy.zeros((height, width), dtype=numpy.uint8) +duration = numpy.zeros((height, width)) +last_gen = time.ticks_ms() + +t_count = 0 +t_total = 0 + +seed_life() + + +while True: + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_A): + life[:] = int(False) + + if su.is_pressed(StellarUnicorn.SWITCH_B): + SMOOTHED = not SMOOTHED + + tstart = time.ticks_ms() + gc.collect() + update() + draw() + tfinish = time.ticks_ms() + + total = tfinish - tstart + t_total += total + t_count += 1 + + if t_count == 60: + per_frame_avg = t_total / t_count + print(f"60 frames in {t_total}ms, avg {per_frame_avg:.02f}ms per frame, {1000/per_frame_avg:.02f} FPS") + t_count = 0 + t_total = 0 + + # pause for a moment (important or the USB serial device will fail) + # try to pace at 60fps or 30fps + if total > 1000 / 30: + time.sleep(0.0001) + elif total > 1000 / 60: + t = 1000 / 30 - total + time.sleep(t / 1000) + else: + t = 1000 / 60 - total + time.sleep(t / 1000) diff --git a/micropython/examples/stellar_unicorn/numpy/rgb_channels.py b/micropython/examples/stellar_unicorn/numpy/rgb_channels.py new file mode 100644 index 00000000..44d6ce72 --- /dev/null +++ b/micropython/examples/stellar_unicorn/numpy/rgb_channels.py @@ -0,0 +1,95 @@ +import gc +import time +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN, PEN_RGB888 +from ulab import numpy + +""" +This example demonstrates how to work with full RGB888 colour in ulab/numpy. + +Each colour channel is given its own array, and these are combined before +copying them into the PicoGraphics buffer. + +At great cost to performance (about half the speed) this example works in +floating point 0.0 to 1.0 and converts the result to 8bits per channel. +""" + +# MAXIMUM OVERKILL +# machine.freq(250_000_000) + +su = StellarUnicorn() +su.set_brightness(0.5) +graphics = PicoGraphics(DISPLAY_STELLAR_UNICORN, pen_type=PEN_RGB888) + + +def update(): + # Do something basic with the colour channels + # to prove this actually works. + red[:] = numpy.roll(red, 1, axis=1) + green[:] *= 0.999 # Slowly desaturate green + blue[:] *= 1.001 # Slowly saturate blue + + +def draw(): + # Copy the red, green, blue channels into + # their respective places in the RGB_ array + rgb[2::4] = red.flatten() + rgb[1::4] = green.flatten() + rgb[0::4] = blue.flatten() + + # Convert the results to 8bit RGB and copy to the framebuffer + memoryview(graphics)[:] = numpy.ndarray(numpy.clip(rgb, 0, 1) * 255, dtype=numpy.uint8).tobytes() + + # Copy the framebuffer to Stellar + su.update(graphics) + # Whew! + + +width, height = graphics.get_bounds() + +# Individual channels +red = numpy.zeros((height, width)) +green = numpy.zeros((height, width)) +blue = numpy.zeros((height, width)) + +# Reserved for combined channels +rgb = numpy.zeros((width * height * 4),) + +# Stick some gradients in the channels so we have something to look at +red[::] = numpy.linspace(0, 1, width) + +# There has to be a better way!? +for x in range(width): + green[::, x] = numpy.linspace(0, 1, width) + blue[::, x] = numpy.linspace(1, 0, width,) + +t_count = 0 +t_total = 0 + +while True: + tstart = time.ticks_ms() + gc.collect() + update() + draw() + tfinish = time.ticks_ms() + + total = tfinish - tstart + t_total += total + t_count += 1 + + if t_count == 60: + per_frame_avg = t_total / t_count + print(f"60 frames in {t_total}ms, avg {per_frame_avg:.02f}ms per frame, {1000/per_frame_avg:.02f} FPS") + t_count = 0 + t_total = 0 + + # pause for a moment (important or the USB serial device will fail) + # try to pace at 60fps or 30fps + if total > 1000 / 30: + time.sleep(0.0001) + elif total > 1000 / 60: + t = 1000 / 30 - total + time.sleep(t / 1000) + else: + t = 1000 / 60 - total + time.sleep(t / 1000) diff --git a/micropython/examples/stellar_unicorn/numpy/the_matrix.py b/micropython/examples/stellar_unicorn/numpy/the_matrix.py new file mode 100644 index 00000000..e17006ff --- /dev/null +++ b/micropython/examples/stellar_unicorn/numpy/the_matrix.py @@ -0,0 +1,91 @@ +import gc +import time +import random +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN, PEN_P8 +from ulab import numpy + +""" +HELLO NEO. +""" + +# MAXIMUM OVERKILL +# machine.freq(250_000_000) + +NUM_SPARKLES = 1 + +su = StellarUnicorn() +su.set_brightness(1.0) +graphics = PicoGraphics(DISPLAY_STELLAR_UNICORN, pen_type=PEN_P8) + + +# Fill half the palette with GREEEN +for g in range(128): + _ = graphics.create_pen(0, g, 0) + +# And half with bright green for white sparkles +for g in range(128): + _ = graphics.create_pen(128, 128 + g, 128) + + +def update(): + trippy[:] *= 0.65 + + for _ in range(NUM_SPARKLES): + x = random.randint(0, width - 1) + y = random.randint(0, height // 2) + trippy[y][x] = random.randint(128, 255) / 255.0 + + # Propagate downwards + old = numpy.ndarray(trippy) * 0.5 + trippy[:] = numpy.roll(trippy, 1, axis=0) + trippy[:] += old + + +def draw(): + # Copy the effect to the framebuffer + memoryview(graphics)[:] = numpy.ndarray(numpy.clip(trippy, 0, 1) * 254, dtype=numpy.uint8).tobytes() + su.update(graphics) + + +width = StellarUnicorn.WIDTH +height = StellarUnicorn.HEIGHT +trippy = numpy.zeros((height, width)) + +t_count = 0 +t_total = 0 + + +while True: + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + tstart = time.ticks_ms() + gc.collect() + update() + draw() + tfinish = time.ticks_ms() + + total = tfinish - tstart + t_total += total + t_count += 1 + + if t_count == 60: + per_frame_avg = t_total / t_count + print(f"60 frames in {t_total}ms, avg {per_frame_avg:.02f}ms per frame, {1000/per_frame_avg:.02f} FPS") + t_count = 0 + t_total = 0 + + # pause for a moment (important or the USB serial device will fail) + # try to pace at 60fps or 30fps + if total > 1000 / 30: + time.sleep(0.0001) + elif total > 1000 / 60: + t = 1000 / 30 - total + time.sleep(t / 1000) + else: + t = 1000 / 60 - total + time.sleep(t / 1000) diff --git a/micropython/examples/stellar_unicorn/numpy/this_is_fine.py b/micropython/examples/stellar_unicorn/numpy/this_is_fine.py new file mode 100644 index 00000000..ee933a4c --- /dev/null +++ b/micropython/examples/stellar_unicorn/numpy/this_is_fine.py @@ -0,0 +1,131 @@ +import time +import gc +import random +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN, PEN_P8 +from ulab import numpy + +""" +THI IS FIN! +""" + +# MAXIMUM OVERKILL +# machine.freq(250_000_000) + +su = StellarUnicorn() +su.set_brightness(0.5) +graphics = PicoGraphics(DISPLAY_STELLAR_UNICORN, pen_type=PEN_P8) + +# Number of random fire spawns +FIRE_SPAWNS = 4 + +# Fire damping +DAMPING_FACTOR = 0.98 + +# TURN UP THE HEEEAAT +HEAT = 3.0 + +# Create the fire palette +""" +# Raging Gas Inferno +graphics.create_pen(0, 0, 0) +graphics.create_pen(0, 0, 0) +graphics.create_pen(20, 20, 20) +graphics.create_pen(50, 10, 0) +graphics.create_pen(180, 30, 0) +graphics.create_pen(220, 160, 0) +graphics.create_pen(255, 255, 180) +graphics.create_pen(255, 255, 220) +graphics.create_pen(90, 90, 255) +graphics.create_pen(255, 0, 255) +""" +# Original Colours +graphics.create_pen(0, 0, 0) +graphics.create_pen(20, 20, 20) +graphics.create_pen(180, 30, 0) +graphics.create_pen(220, 160, 0) +graphics.create_pen(255, 255, 180) + +PALETTE_SIZE = 5 # Should match the number of colours defined above + + +def update(): + # Clear the bottom two rows (off screen) + heat[height - 1][:] = 0.0 + heat[height - 2][:] = 0.0 + + # Add random fire spawns + for c in range(FIRE_SPAWNS): + x = random.randint(0, width - 4) + 2 + heat[height - 1][x - 1:x + 1] = HEAT / 2.0 + heat[height - 2][x - 1:x + 1] = HEAT + + # Propagate the fire upwards + a = numpy.roll(heat, -1, axis=0) # y + 1, x + b = numpy.roll(heat, -2, axis=0) # y + 2, x + c = numpy.roll(heat, -1, axis=0) # y + 1 + d = numpy.roll(c, 1, axis=1) # y + 1, x + 1 + e = numpy.roll(c, -1, axis=1) # y + 1, x - 1 + + # Average over 5 adjacent pixels and apply damping + heat[:] += a + b + d + e + heat[:] *= DAMPING_FACTOR / 5.0 + + +def draw(): + # Copy the fire effect to the framebuffer + # Clips the fire to 0.0 to 1.0 + # Multiplies it by the number of palette entries (-1) to turn it into a palette index + # Converts to uint8_t datatype to match the framebuffer + memoryview(graphics)[:] = numpy.ndarray(numpy.clip(heat[0:16, 0:16], 0, 1) * (PALETTE_SIZE - 1), dtype=numpy.uint8).tobytes() + + # Draw text over the top + graphics.set_pen(0) + graphics.text("This", 1, 0, 1, 1) + graphics.text("is", 1, 3, 1, 1) + graphics.text("fine", 1, 9, 1, 1) + su.update(graphics) + + +width = StellarUnicorn.WIDTH +height = StellarUnicorn.HEIGHT + 4 +heat = numpy.zeros((height, width)) + +t_count = 0 +t_total = 0 + +while True: + gc.collect() + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + tstart = time.ticks_ms() + gc.collect() + update() + draw() + tfinish = time.ticks_ms() + + total = tfinish - tstart + t_total += total + t_count += 1 + + if t_count == 60: + per_frame_avg = t_total / t_count + print(f"60 frames in {t_total}ms, avg {per_frame_avg:.02f}ms per frame, {1000/per_frame_avg:.02f} FPS") + t_count = 0 + t_total = 0 + + # pause for a moment (important or the USB serial device will fail) + # try to pace at 60fps or 30fps + if total > 1000 / 30: + time.sleep(0.0001) + elif total > 1000 / 60: + t = 1000 / 30 - total + time.sleep(t / 1000) + else: + t = 1000 / 60 - total + time.sleep(t / 1000) diff --git a/micropython/examples/stellar_unicorn/numpy/trippy.py b/micropython/examples/stellar_unicorn/numpy/trippy.py new file mode 100644 index 00000000..52d2510f --- /dev/null +++ b/micropython/examples/stellar_unicorn/numpy/trippy.py @@ -0,0 +1,97 @@ +import gc +import time +import random +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN, PEN_P8 +from ulab import numpy + +""" +A random, trippy effect. +Experiment with the damping, number of spawns, intensity and offset to change the effect. +""" + +# MAXIMUM OVERKILL +# machine.freq(250_000_000) + +su = StellarUnicorn() +su.set_brightness(0.5) +graphics = PicoGraphics(DISPLAY_STELLAR_UNICORN, pen_type=PEN_P8) + + +DAMPING_FACTOR = 0.8 +NUMBER_OF_DROPS = 2 +INTENSITY = 10 +OFFSET = 0.0 # Try 0.5 + +# Fill palette with a rainbow sweep +PALETTE_ENTRIES = 255 +for x in range(PALETTE_ENTRIES): + _ = graphics.create_pen_hsv(float(x) / PALETTE_ENTRIES + OFFSET, 1.0, 1.0) + + +def update(): + trippy[:] *= DAMPING_FACTOR + + # Spawn random drops + for _ in range(NUMBER_OF_DROPS): + x = random.randint(0, width - 1) + y = random.randint(0, height - 1) + trippy[y][x] = random.randint(0, INTENSITY) + + a = numpy.roll(trippy, 1, axis=0) + b = numpy.roll(trippy, -1, axis=0) + d = numpy.roll(trippy, 1, axis=1) + e = numpy.roll(trippy, -1, axis=1) + + # Average over 5 adjacent pixels and apply damping + trippy[:] += a + b + d + e + trippy[:] /= 5.0 + + +def draw(): + # Copy the effect to the framebuffer + memoryview(graphics)[:] = numpy.ndarray(numpy.clip(trippy, 0, 1) * (PALETTE_ENTRIES - 1), dtype=numpy.uint8).tobytes() + su.update(graphics) + + +width = StellarUnicorn.WIDTH +height = StellarUnicorn.HEIGHT +trippy = numpy.zeros((height, width)) + +t_count = 0 +t_total = 0 + + +while True: + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + tstart = time.ticks_ms() + gc.collect() + update() + draw() + tfinish = time.ticks_ms() + + total = tfinish - tstart + t_total += total + t_count += 1 + + if t_count == 60: + per_frame_avg = t_total / t_count + print(f"60 frames in {t_total}ms, avg {per_frame_avg:.02f}ms per frame, {1000/per_frame_avg:.02f} FPS") + t_count = 0 + t_total = 0 + + # pause for a moment (important or the USB serial device will fail) + # try to pace at 60fps or 30fps + if total > 1000 / 30: + time.sleep(0.0001) + elif total > 1000 / 60: + t = 1000 / 30 - total + time.sleep(t / 1000) + else: + t = 1000 / 60 - total + time.sleep(t / 1000) diff --git a/micropython/examples/stellar_unicorn/rainbow.py b/micropython/examples/stellar_unicorn/rainbow.py new file mode 100644 index 00000000..5619e0ef --- /dev/null +++ b/micropython/examples/stellar_unicorn/rainbow.py @@ -0,0 +1,115 @@ +import time +import math +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY + +''' +Some good old fashioned rainbows! + +You can adjust the cycling speed with A and B, +stripe width with C and D, hue with VOL + and -, +and the brightness with LUX + and -. +The sleep button stops the animation (can be started again with A or B). +''' + +su = StellarUnicorn() +graphics = PicoGraphics(DISPLAY) + +width = StellarUnicorn.WIDTH +height = StellarUnicorn.HEIGHT + + +@micropython.native # noqa: F821 +def from_hsv(h, s, v): + i = math.floor(h * 6.0) + f = h * 6.0 - i + v *= 255.0 + p = v * (1.0 - s) + q = v * (1.0 - f * s) + t = v * (1.0 - (1.0 - f) * s) + + i = int(i) % 6 + if i == 0: + return int(v), int(t), int(p) + if i == 1: + return int(q), int(v), int(p) + if i == 2: + return int(p), int(v), int(t) + if i == 3: + return int(p), int(q), int(v) + if i == 4: + return int(t), int(p), int(v) + if i == 5: + return int(v), int(p), int(q) + + +@micropython.native # noqa: F821 +def draw(): + global hue_offset, phase + phase_percent = phase / 15 + for x in range(width): + colour = hue_map[int((x + (hue_offset * width)) % width)] + for y in range(height): + v = ((math.sin((x + y) / stripe_width + phase_percent) + 1.5) / 2.5) + + graphics.set_pen(graphics.create_pen(int(colour[0] * v), int(colour[1] * v), int(colour[2] * v))) + graphics.pixel(x, y) + + su.update(graphics) + + +hue_map = [from_hsv(x / width, 1.0, 1.0) for x in range(width)] +hue_offset = 0.0 + +animate = True +stripe_width = 3.0 +speed = 1.0 + +su.set_brightness(0.5) + +phase = 0 +while True: + + if animate: + phase += speed + + if su.is_pressed(StellarUnicorn.SWITCH_VOLUME_UP): + hue_offset += 0.01 + hue_offset = 1.0 if hue_offset > 1.0 else hue_offset + + if su.is_pressed(StellarUnicorn.SWITCH_VOLUME_DOWN): + hue_offset -= 0.01 + hue_offset = 0.0 if hue_offset < 0.0 else hue_offset + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_SLEEP): + animate = False + + if su.is_pressed(StellarUnicorn.SWITCH_A): + speed += 0.05 + speed = 10.0 if speed > 10.0 else speed + animate = True + + if su.is_pressed(StellarUnicorn.SWITCH_B): + speed -= 0.05 + speed = 0.0 if speed < 0.0 else speed + animate = True + + if su.is_pressed(StellarUnicorn.SWITCH_C): + stripe_width += 0.05 + stripe_width = 10.0 if stripe_width > 10.0 else stripe_width + + if su.is_pressed(StellarUnicorn.SWITCH_D): + stripe_width -= 0.05 + stripe_width = 1.0 if stripe_width < 1.0 else stripe_width + + start = time.ticks_ms() + + draw() + + print("total took: {} ms".format(time.ticks_ms() - start)) diff --git a/micropython/examples/stellar_unicorn/scrolling_text.py b/micropython/examples/stellar_unicorn/scrolling_text.py new file mode 100644 index 00000000..62356709 --- /dev/null +++ b/micropython/examples/stellar_unicorn/scrolling_text.py @@ -0,0 +1,96 @@ +import time +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY + +''' +Display scrolling wisdom, quotes or greetz. + +You can adjust the brightness with LUX + and -. +''' + +# constants for controlling scrolling text +PADDING = 5 +MESSAGE_COLOUR = (255, 255, 255) +OUTLINE_COLOUR = (0, 0, 0) +BACKGROUND_COLOUR = (10, 0, 96) +MESSAGE = "\"Space is big. Really big. You just won't believe how vastly hugely mind-bogglingly big it is. I mean, you may think it's a long way down the road to the chemist, but that's just peanuts to space.\" - Douglas Adams" +HOLD_TIME = 2.0 +STEP_TIME = 0.075 + +# create stellar object and graphics surface for drawing +su = StellarUnicorn() +graphics = PicoGraphics(DISPLAY) + +width = StellarUnicorn.WIDTH +height = StellarUnicorn.HEIGHT + + +# function for drawing outlined text +def outline_text(text, x, y): + graphics.set_pen(graphics.create_pen(int(OUTLINE_COLOUR[0]), int(OUTLINE_COLOUR[1]), int(OUTLINE_COLOUR[2]))) + graphics.text(text, x - 1, y - 1, -1, 1) + graphics.text(text, x, y - 1, -1, 1) + graphics.text(text, x + 1, y - 1, -1, 1) + graphics.text(text, x - 1, y, -1, 1) + graphics.text(text, x + 1, y, -1, 1) + graphics.text(text, x - 1, y + 1, -1, 1) + graphics.text(text, x, y + 1, -1, 1) + graphics.text(text, x + 1, y + 1, -1, 1) + + graphics.set_pen(graphics.create_pen(int(MESSAGE_COLOUR[0]), int(MESSAGE_COLOUR[1]), int(MESSAGE_COLOUR[2]))) + graphics.text(text, x, y, -1, 1) + + +su.set_brightness(0.5) + +# state constants +STATE_PRE_SCROLL = 0 +STATE_SCROLLING = 1 +STATE_POST_SCROLL = 2 + +shift = 0 +state = STATE_PRE_SCROLL + +# set the font +graphics.set_font("bitmap8") + +# calculate the message width so scrolling can happen +msg_width = graphics.measure_text(MESSAGE, 1) + +last_time = time.ticks_ms() + +while True: + time_ms = time.ticks_ms() + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + if state == STATE_PRE_SCROLL and time_ms - last_time > HOLD_TIME * 1000: + if msg_width + PADDING * 2 >= width: + state = STATE_SCROLLING + last_time = time_ms + + if state == STATE_SCROLLING and time_ms - last_time > STEP_TIME * 1000: + shift += 1 + if shift >= (msg_width + PADDING * 2) - width - 1: + state = STATE_POST_SCROLL + last_time = time_ms + + if state == STATE_POST_SCROLL and time_ms - last_time > HOLD_TIME * 1000: + state = STATE_PRE_SCROLL + shift = 0 + last_time = time_ms + + graphics.set_pen(graphics.create_pen(int(BACKGROUND_COLOUR[0]), int(BACKGROUND_COLOUR[1]), int(BACKGROUND_COLOUR[2]))) + graphics.clear() + + outline_text(MESSAGE, x=PADDING - shift, y=4) + + # update the display + su.update(graphics) + + # pause for a moment (important or the USB serial device will fail) + time.sleep(0.001) diff --git a/micropython/examples/stellar_unicorn/stellar_paint/README.md b/micropython/examples/stellar_unicorn/stellar_paint/README.md new file mode 100644 index 00000000..53a45d2b --- /dev/null +++ b/micropython/examples/stellar_unicorn/stellar_paint/README.md @@ -0,0 +1,11 @@ +# Stellar Paint + +Stellar Paint lets you paint pixels onto your Stellar Unicorn over WiFi, in realtime! + +## Setting Up + +You'll need `WIFI_CONFIG.py` from the `common` directory to be saved to your Pico W. Open up `WIFI_CONFIG.py` in Thonny to add your wifi details (and save it when you're done). + +You will also have to install `micropython-phew` and `microdot` through Thonny's Tools -> Manage Packages. + +Run the example through Thonny and it should get connected and give you a URL to visit. Open that URL in your browser and start painting! \ No newline at end of file diff --git a/micropython/examples/stellar_unicorn/stellar_paint/stellar_paint.py b/micropython/examples/stellar_unicorn/stellar_paint/stellar_paint.py new file mode 100644 index 00000000..15d4422d --- /dev/null +++ b/micropython/examples/stellar_unicorn/stellar_paint/stellar_paint.py @@ -0,0 +1,113 @@ +import os +from microdot_asyncio import Microdot, send_file +from microdot_asyncio_websocket import with_websocket +from phew import connect_to_wifi +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY +from WIFI_CONFIG import SSID, PSK + + +su = StellarUnicorn() +graphics = PicoGraphics(DISPLAY) +mv_graphics = memoryview(graphics) +su.set_brightness(0.5) + +WIDTH, HEIGHT = graphics.get_bounds() + +ip = connect_to_wifi(SSID, PSK) + +print(f"Start painting at: http://{ip}") + + +server = Microdot() + + +@server.route("/", methods=["GET"]) +def route_index(request): + return send_file("stellar_paint/index.html") + + +@server.route("/static/", methods=["GET"]) +def route_static(request, path): + return send_file(f"stellar_paint/static/{path}") + + +def get_pixel(x, y): + if x < WIDTH and y < HEIGHT and x >= 0 and y >= 0: + o = (y * WIDTH + x) * 4 + return tuple(mv_graphics[o:o + 3]) + return None + + +def flood_fill(x, y, r, g, b): + todo = [] + + def fill(x, y, c): + if get_pixel(x, y) != c: + return + + graphics.pixel(x, y) + + up = get_pixel(x, y - 1) + dn = get_pixel(x, y + 1) + lf = get_pixel(x - 1, y) + ri = get_pixel(x + 1, y) + + if up == c: + todo.append((x, y - 1)) + if dn == c: + todo.append((x, y + 1)) + if lf == c: + todo.append((x - 1, y)) + if ri == c: + todo.append((x + 1, y)) + + c = get_pixel(x, y) + + if c is None: + return + + fill(x, y, c) + + while len(todo): + x, y = todo.pop(0) + fill(x, y, c) + + +@server.route('/paint') +@with_websocket +async def echo(request, ws): + while True: + data = await ws.receive() + try: + x, y, r, g, b = [int(n) for n in data[0:5]] + graphics.set_pen(graphics.create_pen(r, g, b)) + graphics.pixel(x, y) + + except ValueError: + if data == "show": + su.update(graphics) + + if data == "fill": + data = await ws.receive() + x, y, r, g, b = [int(n) for n in data[0:5]] + graphics.set_pen(graphics.create_pen(r, g, b)) + flood_fill(x, y, r, g, b) + + if data == "clear": + graphics.set_pen(graphics.create_pen(0, 0, 0)) + graphics.clear() + + if data == "save": + filename = await ws.receive() + print(f"Saving to {filename}.bin") + try: + os.mkdir("saves") + except OSError: + pass + with open(f"saves/{filename}.bin", "wb") as f: + f.write(graphics) + await ws.send(f"alert: Saved to saves/{filename}.bin") + + +server.run(host="0.0.0.0", port=80) diff --git a/micropython/examples/stellar_unicorn/stellar_paint/stellar_paint/index.html b/micropython/examples/stellar_unicorn/stellar_paint/stellar_paint/index.html new file mode 100644 index 00000000..f7c60d08 --- /dev/null +++ b/micropython/examples/stellar_unicorn/stellar_paint/stellar_paint/index.html @@ -0,0 +1,54 @@ + + + + + Stellar Paint + + + + + +
+

Stellar Paint

+ + +
+
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+ + +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
+ + + + + + diff --git a/micropython/examples/stellar_unicorn/stellar_paint/stellar_paint/static/paint.css b/micropython/examples/stellar_unicorn/stellar_paint/stellar_paint/static/paint.css new file mode 100644 index 00000000..46163157 --- /dev/null +++ b/micropython/examples/stellar_unicorn/stellar_paint/stellar_paint/static/paint.css @@ -0,0 +1,131 @@ +body { + background:#333; + padding:20px; + font-family:Arial, Verdana, Sans-Serif; + background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAaUlEQVQYV33Q0Q3AIAgEUBjBFVyBFRzbWVjBEajXBIOVypcJj1NhETG61BiDVJX4Bh211v5hRDiniV+Elx0wQwd0hEatlUop65srMSah23vf8Auz65AWMc8rDHvCCjAQK2KeDcuQDzh+AHEJX8mbbU1BAAAAAElFTkSuQmCC) repeat; +} + +.icons { + position:absolute; + margin:0; + padding:20px; + list-style:none; +} + +.icons li { + margin:20px; + padding:0; + list-style:none; + padding-top:80px; + width:100px; +} + +.icons li span { + background:#FFF; + color:#000; + border:1px solid #000; + line-height:20px; + padding:5px 10px; + text-align:center; + font-size:10px; + line-height:10px; + display:inline-block; +} + +#palette ul, #palette li { + margin:0;padding:0;list-style:none; +} + +#palette { + list-style:none; + position:relative; + height: 122px; + padding:0 8px; +} + +#palette ul { + display:block; + width:456px; + float: left; +} + +#palette li, #palette input { + border: 2px outset; + width:49px; + height:49px; + float:left; + display:block; + margin:2px; +} + +#palette input { + width:110px; + height:110px; +} + +.window { + width: 640px; + position: relative; + background: #0E071A; + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.5); +} + +.tools { + margin:0;padding:0;list-style:none; + clear:both; + display:block; + position:absolute; + top: 50px; + right: 8px; + width: 98px; + background:#999999; + font-size:0; +} +.tools span { + line-height:30px; +} + +.tools li { + font-size:16px; + width: 45px; + height: 40px; + text-align:center; + margin:0; + padding:0; + display:inline-block; + line-height:40px; + border:2px outset #EEEEEE; + background:#F5F5F5; + cursor:pointer; + color:#000; +} + +.tools li.selected { + background:#000; + color:#FFF; +} + +h1 { + color: #FFF; + background: #6D38BB; + height:40px; + margin:0; + padding:0 8px; + line-height:40px; + font-weight:normal; + font-size:24px; +} + +table { + clear:both; + cursor:pointer; + margin:10px; + border:1px solid #333; + background: #000000; +} + +table td { + width:14px; + height:14px; + border:1px solid #333; +} \ No newline at end of file diff --git a/micropython/examples/stellar_unicorn/stellar_paint/stellar_paint/static/paint.js b/micropython/examples/stellar_unicorn/stellar_paint/stellar_paint/static/paint.js new file mode 100644 index 00000000..1ddcd1d4 --- /dev/null +++ b/micropython/examples/stellar_unicorn/stellar_paint/stellar_paint/static/paint.js @@ -0,0 +1,216 @@ +'use strict'; + +var WIDTH = 16; +var HEIGHT = 16; +var md = false; +var color = tinycolor('#840000'); +var update; + +$(document).ready(function(){ + + var picker = $('#custom'); + var palette = $('#palette'); + + picker.val(color.toHexString()); + + $(document) + .on('mousedown',function(e){md=true;}) + .on('mouseup',function(e){md=false;}); + + $('table').on('dragstart', function(e){ + e.preventDefault(); + return false; + }); + + for (var y = 0; y < HEIGHT; y++) { + var row = $(''); + for (var x = 0; x < WIDTH; x++) { + row.append(''); + } + $('tbody').append(row); + } + + $('.tools li').on('click', function(){ + switch($(this).index()){ + case 6: + clear(); + break; + case 7: + save(); + break; + default: + $('.tools li').removeClass('selected'); + $(this).addClass('selected'); + break; + } + }); + + picker.on('change', function(){ + color = tinycolor($(this).val()); + }) + + palette.find('li').on('click', function(){ + pick(this); + }); + + function handle_tool(obj, is_click){ + switch($('.tools li.selected').index()){ + case 0: //'paint': + paint(obj); + break; + case 1: // Fill + if( is_click ) fill(obj); + break; + case 2: // Erase + update_pixel(obj, tinycolor('#000000')); + break; + case 3: //'pick': + pick(obj); + break; + case 4: //'lighten': + lighten(obj); + break; + case 5: //'darken': + darken(obj); + break; + } + } + + var fill_target = null; + var fill_stack = []; + function fill(obj){ + fill_target = tinycolor($(obj).css('background-color')).toRgbString(); + + if( fill_target == color.toRgbString() ){ + return false; + } + + var x = $(obj).index(); + var y = $(obj).parent().index(); + + socket.send("fill"); + socket.send(new Uint8Array([x, y, color.toRgb().r, color.toRgb().g, color.toRgb().b])); + socket.send('show'); + + do_fill(obj); + + while(fill_stack.length > 0){ + var pixel = fill_stack.pop(); + do_fill(pixel); + } + } + + function is_target_color(obj){ + return ( tinycolor($(obj).css('background-color')).toRgbString() == fill_target); + } + + function do_fill(obj){ + var obj = $(obj); + + if( is_target_color(obj) ){ + + $(obj).css('background-color', color.toRgbString()); + + var r = obj.next('td'); // Right + var l = obj.prev('td'); // Left + var u = obj.parent().prev('tr').find('td:eq(' + obj.index() + ')'); // Above + var d = obj.parent().next('tr').find('td:eq(' + obj.index() + ')'); // Below + + if( r.length && is_target_color(r[0]) ) fill_stack.push(r[0]); + if( l.length && is_target_color(l[0]) ) fill_stack.push(l[0]); + if( u.length && is_target_color(u[0]) ) fill_stack.push(u[0]); + if( d.length && is_target_color(d[0]) ) fill_stack.push(d[0]); + } + } + + function save(){ + var filename = prompt('Please enter a filename', 'mypaint'); + filename = filename.replace(/[^a-z0-9]/gi, '_').toLowerCase(); + socket.send('save'); + socket.send(filename); + } + + function clear(){ + $('td').css('background-color','rgb(0,0,0)').data('changed',false); + socket.send('clear'); + socket.send('show'); + } + + function lighten(obj){ + var c = tinycolor($(obj).css('background-color')); + c.lighten(5); + update_pixel(obj, c); + } + + function darken(obj){ + var c = tinycolor($(obj).css('background-color')); + c.darken(5); + update_pixel(obj, c); + } + + function pick(obj){ + color = tinycolor($(obj).css('background-color')); + picker.val(color.toHexString()); + } + + function update_pixel(obj, col){ + var bgcol = tinycolor($(obj).css('background-color')); + + if(col != bgcol){ + $(obj) + .data('changed', true) + .css('background-color', col.toRgbString()); + } + } + + function update_pixels(){ + var changed = false; + + $('td').each(function( index, obj ){ + if($(obj).data('changed')){ + $(obj).data('changed',false); + changed = true; + + var x = $(this).index(); + var y = $(this).parent().index(); + var col = tinycolor($(obj).css('background-color')).toRgb(); + + if(socket) { + socket.send(new Uint8Array([x, y, col.r, col.g, col.b])); + } + } + }); + if(changed){ + socket.send('show'); + } + } + + function paint(obj){ + update_pixel(obj, color); + } + + $('table td').on('click', function(){ + handle_tool(this, true); + }); + $('table td').on('mousemove', function(){ + if(!md) return false; + handle_tool(this, false); + }) + + const socket = new WebSocket('ws://' + window.location.host + '/paint'); + socket.addEventListener('message', ev => { + console.log('<<< ' + ev.data); + + if(ev.data.substring(0, 6) == "alert:") { + alert(ev.data.substring(6)); + } + }); + socket.addEventListener('close', ev => { + console.log('<<< closed'); + }); + + socket.addEventListener('open', ev => { + clear(); + update = setInterval(update_pixels, 50); + }); +}); diff --git a/micropython/examples/stellar_unicorn/stellar_paint/stellar_paint/static/tinycolor.js b/micropython/examples/stellar_unicorn/stellar_paint/stellar_paint/static/tinycolor.js new file mode 100644 index 00000000..0d8b0e7f --- /dev/null +++ b/micropython/examples/stellar_unicorn/stellar_paint/stellar_paint/static/tinycolor.js @@ -0,0 +1,1193 @@ +// TinyColor v1.4.2 +// https://github.com/bgrins/TinyColor +// Brian Grinstead, MIT License + +(function(Math) { + + var trimLeft = /^\s+/, + trimRight = /\s+$/, + mathRound = Math.round, + mathMin = Math.min, + mathMax = Math.max, + mathRandom = Math.random; + + function tinycolor (color, opts) { + + color = (color) ? color : ''; + opts = opts || { }; + + // If input is already a tinycolor, return itself + if (color instanceof tinycolor) { + return color; + } + // If we are called as a function, call using new instead + if (!(this instanceof tinycolor)) { + return new tinycolor(color, opts); + } + + var rgb = inputToRGB(color); + this._originalInput = color, + this._r = rgb.r, + this._g = rgb.g, + this._b = rgb.b, + this._a = rgb.a, + this._roundA = mathRound(100*this._a) / 100, + this._format = opts.format || rgb.format; + this._gradientType = opts.gradientType; + + // Don't let the range of [0,255] come back in [0,1]. + // Potentially lose a little bit of precision here, but will fix issues where + // .5 gets interpreted as half of the total, instead of half of 1 + // If it was supposed to be 128, this was already taken care of by `inputToRgb` + if (this._r < 1) { this._r = mathRound(this._r); } + if (this._g < 1) { this._g = mathRound(this._g); } + if (this._b < 1) { this._b = mathRound(this._b); } + + this._ok = rgb.ok; + } + + tinycolor.prototype = { + isDark: function() { + return this.getBrightness() < 128; + }, + isLight: function() { + return !this.isDark(); + }, + isValid: function() { + return this._ok; + }, + getOriginalInput: function() { + return this._originalInput; + }, + getFormat: function() { + return this._format; + }, + getAlpha: function() { + return this._a; + }, + getBrightness: function() { + //http://www.w3.org/TR/AERT#color-contrast + var rgb = this.toRgb(); + return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; + }, + getLuminance: function() { + //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef + var rgb = this.toRgb(); + var RsRGB, GsRGB, BsRGB, R, G, B; + RsRGB = rgb.r/255; + GsRGB = rgb.g/255; + BsRGB = rgb.b/255; + + if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);} + if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);} + if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);} + return (0.2126 * R) + (0.7152 * G) + (0.0722 * B); + }, + setAlpha: function(value) { + this._a = boundAlpha(value); + this._roundA = mathRound(100*this._a) / 100; + return this; + }, + toHsv: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a }; + }, + toHsvString: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); + return (this._a == 1) ? + "hsv(" + h + ", " + s + "%, " + v + "%)" : + "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")"; + }, + toHsl: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a }; + }, + toHslString: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); + return (this._a == 1) ? + "hsl(" + h + ", " + s + "%, " + l + "%)" : + "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")"; + }, + toHex: function(allow3Char) { + return rgbToHex(this._r, this._g, this._b, allow3Char); + }, + toHexString: function(allow3Char) { + return '#' + this.toHex(allow3Char); + }, + toHex8: function(allow4Char) { + return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char); + }, + toHex8String: function(allow4Char) { + return '#' + this.toHex8(allow4Char); + }, + toRgb: function() { + return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a }; + }, + toRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" : + "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")"; + }, + toPercentageRgb: function() { + return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a }; + }, + toPercentageRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" : + "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")"; + }, + toName: function() { + if (this._a === 0) { + return "transparent"; + } + + if (this._a < 1) { + return false; + } + + return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false; + }, + toFilter: function(secondColor) { + var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a); + var secondHex8String = hex8String; + var gradientType = this._gradientType ? "GradientType = 1, " : ""; + + if (secondColor) { + var s = tinycolor(secondColor); + secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a); + } + + return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")"; + }, + toString: function(format) { + var formatSet = !!format; + format = format || this._format; + + var formattedString = false; + var hasAlpha = this._a < 1 && this._a >= 0; + var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name"); + + if (needsAlphaFormat) { + // Special case for "transparent", all other non-alpha formats + // will return rgba when there is transparency. + if (format === "name" && this._a === 0) { + return this.toName(); + } + return this.toRgbString(); + } + if (format === "rgb") { + formattedString = this.toRgbString(); + } + if (format === "prgb") { + formattedString = this.toPercentageRgbString(); + } + if (format === "hex" || format === "hex6") { + formattedString = this.toHexString(); + } + if (format === "hex3") { + formattedString = this.toHexString(true); + } + if (format === "hex4") { + formattedString = this.toHex8String(true); + } + if (format === "hex8") { + formattedString = this.toHex8String(); + } + if (format === "name") { + formattedString = this.toName(); + } + if (format === "hsl") { + formattedString = this.toHslString(); + } + if (format === "hsv") { + formattedString = this.toHsvString(); + } + + return formattedString || this.toHexString(); + }, + clone: function() { + return tinycolor(this.toString()); + }, + + _applyModification: function(fn, args) { + var color = fn.apply(null, [this].concat([].slice.call(args))); + this._r = color._r; + this._g = color._g; + this._b = color._b; + this.setAlpha(color._a); + return this; + }, + lighten: function() { + return this._applyModification(lighten, arguments); + }, + brighten: function() { + return this._applyModification(brighten, arguments); + }, + darken: function() { + return this._applyModification(darken, arguments); + }, + desaturate: function() { + return this._applyModification(desaturate, arguments); + }, + saturate: function() { + return this._applyModification(saturate, arguments); + }, + greyscale: function() { + return this._applyModification(greyscale, arguments); + }, + spin: function() { + return this._applyModification(spin, arguments); + }, + + _applyCombination: function(fn, args) { + return fn.apply(null, [this].concat([].slice.call(args))); + }, + analogous: function() { + return this._applyCombination(analogous, arguments); + }, + complement: function() { + return this._applyCombination(complement, arguments); + }, + monochromatic: function() { + return this._applyCombination(monochromatic, arguments); + }, + splitcomplement: function() { + return this._applyCombination(splitcomplement, arguments); + }, + triad: function() { + return this._applyCombination(triad, arguments); + }, + tetrad: function() { + return this._applyCombination(tetrad, arguments); + } + }; + + // If input is an object, force 1 into "1.0" to handle ratios properly + // String input requires "1.0" as input, so 1 will be treated as 1 + tinycolor.fromRatio = function(color, opts) { + if (typeof color == "object") { + var newColor = {}; + for (var i in color) { + if (color.hasOwnProperty(i)) { + if (i === "a") { + newColor[i] = color[i]; + } + else { + newColor[i] = convertToPercentage(color[i]); + } + } + } + color = newColor; + } + + return tinycolor(color, opts); + }; + + // Given a string or object, convert that input to RGB + // Possible string inputs: + // + // "red" + // "#f00" or "f00" + // "#ff0000" or "ff0000" + // "#ff000000" or "ff000000" + // "rgb 255 0 0" or "rgb (255, 0, 0)" + // "rgb 1.0 0 0" or "rgb (1, 0, 0)" + // "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" + // "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" + // "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" + // "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" + // "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" + // + function inputToRGB(color) { + + var rgb = { r: 0, g: 0, b: 0 }; + var a = 1; + var s = null; + var v = null; + var l = null; + var ok = false; + var format = false; + + if (typeof color == "string") { + color = stringInputToObject(color); + } + + if (typeof color == "object") { + if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) { + rgb = rgbToRgb(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) { + s = convertToPercentage(color.s); + v = convertToPercentage(color.v); + rgb = hsvToRgb(color.h, s, v); + ok = true; + format = "hsv"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) { + s = convertToPercentage(color.s); + l = convertToPercentage(color.l); + rgb = hslToRgb(color.h, s, l); + ok = true; + format = "hsl"; + } + + if (color.hasOwnProperty("a")) { + a = color.a; + } + } + + a = boundAlpha(a); + + return { + ok: ok, + format: color.format || format, + r: mathMin(255, mathMax(rgb.r, 0)), + g: mathMin(255, mathMax(rgb.g, 0)), + b: mathMin(255, mathMax(rgb.b, 0)), + a: a + }; + } + + + // Conversion Functions + // -------------------- + + // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: + // + + // `rgbToRgb` + // Handle bounds / percentage checking to conform to CSS color spec + // + // *Assumes:* r, g, b in [0, 255] or [0, 1] + // *Returns:* { r, g, b } in [0, 255] + function rgbToRgb(r, g, b){ + return { + r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + }; + } + + // `rgbToHsl` + // Converts an RGB color value to HSL. + // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] + // *Returns:* { h, s, l } in [0,1] + function rgbToHsl(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, l = (max + min) / 2; + + if(max == min) { + h = s = 0; // achromatic + } + else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + + h /= 6; + } + + return { h: h, s: s, l: l }; + } + + // `hslToRgb` + // Converts an HSL color value to RGB. + // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] + // *Returns:* { r, g, b } in the set [0, 255] + function hslToRgb(h, s, l) { + var r, g, b; + + h = bound01(h, 360); + s = bound01(s, 100); + l = bound01(l, 100); + + function hue2rgb(p, q, t) { + if(t < 0) t += 1; + if(t > 1) t -= 1; + if(t < 1/6) return p + (q - p) * 6 * t; + if(t < 1/2) return q; + if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; + return p; + } + + if(s === 0) { + r = g = b = l; // achromatic + } + else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1/3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1/3); + } + + return { r: r * 255, g: g * 255, b: b * 255 }; + } + + // `rgbToHsv` + // Converts an RGB color value to HSV + // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] + // *Returns:* { h, s, v } in [0,1] + function rgbToHsv(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, v = max; + + var d = max - min; + s = max === 0 ? 0 : d / max; + + if(max == min) { + h = 0; // achromatic + } + else { + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + return { h: h, s: s, v: v }; + } + + // `hsvToRgb` + // Converts an HSV color value to RGB. + // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] + // *Returns:* { r, g, b } in the set [0, 255] + function hsvToRgb(h, s, v) { + + h = bound01(h, 360) * 6; + s = bound01(s, 100); + v = bound01(v, 100); + + var i = Math.floor(h), + f = h - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s), + mod = i % 6, + r = [v, q, p, p, t, v][mod], + g = [t, v, v, q, p, p][mod], + b = [p, p, t, v, v, q][mod]; + + return { r: r * 255, g: g * 255, b: b * 255 }; + } + + // `rgbToHex` + // Converts an RGB color to hex + // Assumes r, g, and b are contained in the set [0, 255] + // Returns a 3 or 6 character hex + function rgbToHex(r, g, b, allow3Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + // Return a 3 character hex if possible + if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + } + + return hex.join(""); + } + + // `rgbaToHex` + // Converts an RGBA color plus alpha transparency to hex + // Assumes r, g, b are contained in the set [0, 255] and + // a in [0, 1]. Returns a 4 or 8 character rgba hex + function rgbaToHex(r, g, b, a, allow4Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)), + pad2(convertDecimalToHex(a)) + ]; + + // Return a 4 character hex if possible + if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0); + } + + return hex.join(""); + } + + // `rgbaToArgbHex` + // Converts an RGBA color to an ARGB Hex8 string + // Rarely used, but required for "toFilter()" + function rgbaToArgbHex(r, g, b, a) { + + var hex = [ + pad2(convertDecimalToHex(a)), + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + return hex.join(""); + } + + // `equals` + // Can be called with any tinycolor input + tinycolor.equals = function (color1, color2) { + if (!color1 || !color2) { return false; } + return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); + }; + + tinycolor.random = function() { + return tinycolor.fromRatio({ + r: mathRandom(), + g: mathRandom(), + b: mathRandom() + }); + }; + + + // Modification Functions + // ---------------------- + // Thanks to less.js for some of the basics here + // + + function desaturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s -= amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); + } + + function saturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s += amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); + } + + function greyscale(color) { + return tinycolor(color).desaturate(100); + } + + function lighten (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l += amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); + } + + function brighten(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var rgb = tinycolor(color).toRgb(); + rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100)))); + rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100)))); + rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100)))); + return tinycolor(rgb); + } + + function darken (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l -= amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); + } + + // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. + // Values outside of this range will be wrapped into this range. + function spin(color, amount) { + var hsl = tinycolor(color).toHsl(); + var hue = (hsl.h + amount) % 360; + hsl.h = hue < 0 ? 360 + hue : hue; + return tinycolor(hsl); + } + + // Combination Functions + // --------------------- + // Thanks to jQuery xColor for some of the ideas behind these + // + + function complement(color) { + var hsl = tinycolor(color).toHsl(); + hsl.h = (hsl.h + 180) % 360; + return tinycolor(hsl); + } + + function triad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) + ]; + } + + function tetrad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) + ]; + } + + function splitcomplement(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), + tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) + ]; + } + + function analogous(color, results, slices) { + results = results || 6; + slices = slices || 30; + + var hsl = tinycolor(color).toHsl(); + var part = 360 / slices; + var ret = [tinycolor(color)]; + + for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { + hsl.h = (hsl.h + part) % 360; + ret.push(tinycolor(hsl)); + } + return ret; + } + + function monochromatic(color, results) { + results = results || 6; + var hsv = tinycolor(color).toHsv(); + var h = hsv.h, s = hsv.s, v = hsv.v; + var ret = []; + var modification = 1 / results; + + while (results--) { + ret.push(tinycolor({ h: h, s: s, v: v})); + v = (v + modification) % 1; + } + + return ret; + } + + // Utility Functions + // --------------------- + + tinycolor.mix = function(color1, color2, amount) { + amount = (amount === 0) ? 0 : (amount || 50); + + var rgb1 = tinycolor(color1).toRgb(); + var rgb2 = tinycolor(color2).toRgb(); + + var p = amount / 100; + + var rgba = { + r: ((rgb2.r - rgb1.r) * p) + rgb1.r, + g: ((rgb2.g - rgb1.g) * p) + rgb1.g, + b: ((rgb2.b - rgb1.b) * p) + rgb1.b, + a: ((rgb2.a - rgb1.a) * p) + rgb1.a + }; + + return tinycolor(rgba); + }; + + + // Readability Functions + // --------------------- + // false + // tinycolor.isReadable("#000", "#111",{level:"AA",size:"large"}) => false + tinycolor.isReadable = function(color1, color2, wcag2) { + var readability = tinycolor.readability(color1, color2); + var wcag2Parms, out; + + out = false; + + wcag2Parms = validateWCAG2Parms(wcag2); + switch (wcag2Parms.level + wcag2Parms.size) { + case "AAsmall": + case "AAAlarge": + out = readability >= 4.5; + break; + case "AAlarge": + out = readability >= 3; + break; + case "AAAsmall": + out = readability >= 7; + break; + } + return out; + + }; + + // `mostReadable` + // Given a base color and a list of possible foreground or background + // colors for that base, returns the most readable color. + // Optionally returns Black or White if the most readable color is unreadable. + // *Example* + // tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255" + // tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString(); // "#ffffff" + // tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"large"}).toHexString(); // "#faf3f3" + // tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"small"}).toHexString(); // "#ffffff" + tinycolor.mostReadable = function(baseColor, colorList, args) { + var bestColor = null; + var bestScore = 0; + var readability; + var includeFallbackColors, level, size ; + args = args || {}; + includeFallbackColors = args.includeFallbackColors ; + level = args.level; + size = args.size; + + for (var i= 0; i < colorList.length ; i++) { + readability = tinycolor.readability(baseColor, colorList[i]); + if (readability > bestScore) { + bestScore = readability; + bestColor = tinycolor(colorList[i]); + } + } + + if (tinycolor.isReadable(baseColor, bestColor, {"level":level,"size":size}) || !includeFallbackColors) { + return bestColor; + } + else { + args.includeFallbackColors=false; + return tinycolor.mostReadable(baseColor,["#fff", "#000"],args); + } + }; + + + // Big List of Colors + // ------------------ + // + var names = tinycolor.names = { + aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "0ff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000", + blanchedalmond: "ffebcd", + blue: "00f", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + burntsienna: "ea7e5d", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "0ff", + darkblue: "00008b", + darkcyan: "008b8b", + darkgoldenrod: "b8860b", + darkgray: "a9a9a9", + darkgreen: "006400", + darkgrey: "a9a9a9", + darkkhaki: "bdb76b", + darkmagenta: "8b008b", + darkolivegreen: "556b2f", + darkorange: "ff8c00", + darkorchid: "9932cc", + darkred: "8b0000", + darksalmon: "e9967a", + darkseagreen: "8fbc8f", + darkslateblue: "483d8b", + darkslategray: "2f4f4f", + darkslategrey: "2f4f4f", + darkturquoise: "00ced1", + darkviolet: "9400d3", + deeppink: "ff1493", + deepskyblue: "00bfff", + dimgray: "696969", + dimgrey: "696969", + dodgerblue: "1e90ff", + firebrick: "b22222", + floralwhite: "fffaf0", + forestgreen: "228b22", + fuchsia: "f0f", + gainsboro: "dcdcdc", + ghostwhite: "f8f8ff", + gold: "ffd700", + goldenrod: "daa520", + gray: "808080", + green: "008000", + greenyellow: "adff2f", + grey: "808080", + honeydew: "f0fff0", + hotpink: "ff69b4", + indianred: "cd5c5c", + indigo: "4b0082", + ivory: "fffff0", + khaki: "f0e68c", + lavender: "e6e6fa", + lavenderblush: "fff0f5", + lawngreen: "7cfc00", + lemonchiffon: "fffacd", + lightblue: "add8e6", + lightcoral: "f08080", + lightcyan: "e0ffff", + lightgoldenrodyellow: "fafad2", + lightgray: "d3d3d3", + lightgreen: "90ee90", + lightgrey: "d3d3d3", + lightpink: "ffb6c1", + lightsalmon: "ffa07a", + lightseagreen: "20b2aa", + lightskyblue: "87cefa", + lightslategray: "789", + lightslategrey: "789", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "0f0", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "f0f", + maroon: "800000", + mediumaquamarine: "66cdaa", + mediumblue: "0000cd", + mediumorchid: "ba55d3", + mediumpurple: "9370db", + mediumseagreen: "3cb371", + mediumslateblue: "7b68ee", + mediumspringgreen: "00fa9a", + mediumturquoise: "48d1cc", + mediumvioletred: "c71585", + midnightblue: "191970", + mintcream: "f5fffa", + mistyrose: "ffe4e1", + moccasin: "ffe4b5", + navajowhite: "ffdead", + navy: "000080", + oldlace: "fdf5e6", + olive: "808000", + olivedrab: "6b8e23", + orange: "ffa500", + orangered: "ff4500", + orchid: "da70d6", + palegoldenrod: "eee8aa", + palegreen: "98fb98", + paleturquoise: "afeeee", + palevioletred: "db7093", + papayawhip: "ffefd5", + peachpuff: "ffdab9", + peru: "cd853f", + pink: "ffc0cb", + plum: "dda0dd", + powderblue: "b0e0e6", + purple: "800080", + rebeccapurple: "663399", + red: "f00", + rosybrown: "bc8f8f", + royalblue: "4169e1", + saddlebrown: "8b4513", + salmon: "fa8072", + sandybrown: "f4a460", + seagreen: "2e8b57", + seashell: "fff5ee", + sienna: "a0522d", + silver: "c0c0c0", + skyblue: "87ceeb", + slateblue: "6a5acd", + slategray: "708090", + slategrey: "708090", + snow: "fffafa", + springgreen: "00ff7f", + steelblue: "4682b4", + tan: "d2b48c", + teal: "008080", + thistle: "d8bfd8", + tomato: "ff6347", + turquoise: "40e0d0", + violet: "ee82ee", + wheat: "f5deb3", + white: "fff", + whitesmoke: "f5f5f5", + yellow: "ff0", + yellowgreen: "9acd32" + }; + + // Make it easy to access colors via `hexNames[hex]` + var hexNames = tinycolor.hexNames = flip(names); + + + // Utilities + // --------- + + // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }` + function flip(o) { + var flipped = { }; + for (var i in o) { + if (o.hasOwnProperty(i)) { + flipped[o[i]] = i; + } + } + return flipped; + } + + // Return a valid alpha value [0,1] with all invalid values being set to 1 + function boundAlpha(a) { + a = parseFloat(a); + + if (isNaN(a) || a < 0 || a > 1) { + a = 1; + } + + return a; + } + + // Take input from [0, n] and return it as [0, 1] + function bound01(n, max) { + if (isOnePointZero(n)) { n = "100%"; } + + var processPercent = isPercentage(n); + n = mathMin(max, mathMax(0, parseFloat(n))); + + // Automatically convert percentage into number + if (processPercent) { + n = parseInt(n * max, 10) / 100; + } + + // Handle floating point rounding errors + if ((Math.abs(n - max) < 0.000001)) { + return 1; + } + + // Convert into [0, 1] range if it isn't already + return (n % max) / parseFloat(max); + } + + // Force a number between 0 and 1 + function clamp01(val) { + return mathMin(1, mathMax(0, val)); + } + + // Parse a base-16 hex value into a base-10 integer + function parseIntFromHex(val) { + return parseInt(val, 16); + } + + // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 + // + function isOnePointZero(n) { + return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; + } + + // Check to see if string passed in is a percentage + function isPercentage(n) { + return typeof n === "string" && n.indexOf('%') != -1; + } + + // Force a hex value to have 2 characters + function pad2(c) { + return c.length == 1 ? '0' + c : '' + c; + } + + // Replace a decimal with it's percentage value + function convertToPercentage(n) { + if (n <= 1) { + n = (n * 100) + "%"; + } + + return n; + } + + // Converts a decimal to a hex value + function convertDecimalToHex(d) { + return Math.round(parseFloat(d) * 255).toString(16); + } + // Converts a hex value to a decimal + function convertHexToDecimal(h) { + return (parseIntFromHex(h) / 255); + } + + var matchers = (function() { + + // + var CSS_INTEGER = "[-\\+]?\\d+%?"; + + // + var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; + + // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. + var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; + + // Actual matching. + // Parentheses and commas are optional, but not required. + // Whitespace can take the place of commas or opening paren + var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + + return { + CSS_UNIT: new RegExp(CSS_UNIT), + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), + hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + }; + })(); + + // `isValidCSSUnit` + // Take in a single string / number and check to see if it looks like a CSS unit + // (see `matchers` above for definition). + function isValidCSSUnit(color) { + return !!matchers.CSS_UNIT.exec(color); + } + + // `stringInputToObject` + // Permissive string parsing. Take in a number of formats, and output an object + // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` + function stringInputToObject(color) { + + color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase(); + var named = false; + if (names[color]) { + color = names[color]; + named = true; + } + else if (color == 'transparent') { + return { r: 0, g: 0, b: 0, a: 0, format: "name" }; + } + + // Try to match string input using regular expressions. + // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] + // Just return an object and let the conversion functions handle that. + // This way the result will be the same whether the tinycolor is initialized with string or object. + var match; + if ((match = matchers.rgb.exec(color))) { + return { r: match[1], g: match[2], b: match[3] }; + } + if ((match = matchers.rgba.exec(color))) { + return { r: match[1], g: match[2], b: match[3], a: match[4] }; + } + if ((match = matchers.hsl.exec(color))) { + return { h: match[1], s: match[2], l: match[3] }; + } + if ((match = matchers.hsla.exec(color))) { + return { h: match[1], s: match[2], l: match[3], a: match[4] }; + } + if ((match = matchers.hsv.exec(color))) { + return { h: match[1], s: match[2], v: match[3] }; + } + if ((match = matchers.hsva.exec(color))) { + return { h: match[1], s: match[2], v: match[3], a: match[4] }; + } + if ((match = matchers.hex8.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + a: convertHexToDecimal(match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex6.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + format: named ? "name" : "hex" + }; + } + if ((match = matchers.hex4.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + a: convertHexToDecimal(match[4] + '' + match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex3.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + format: named ? "name" : "hex" + }; + } + + return false; + } + + function validateWCAG2Parms(parms) { + // return valid WCAG2 parms for isReadable. + // If input parms are invalid, return {"level":"AA", "size":"small"} + var level, size; + parms = parms || {"level":"AA", "size":"small"}; + level = (parms.level || "AA").toUpperCase(); + size = (parms.size || "small").toLowerCase(); + if (level !== "AA" && level !== "AAA") { + level = "AA"; + } + if (size !== "small" && size !== "large") { + size = "small"; + } + return {"level":level, "size":size}; + } + + // Node: Export function + if (typeof module !== "undefined" && module.exports) { + module.exports = tinycolor; + } + // AMD/requirejs: Define the module + else if (typeof define === 'function' && define.amd) { + define(function () {return tinycolor;}); + } + // Browser: Expose to window + else { + window.tinycolor = tinycolor; + } + + })(Math); \ No newline at end of file diff --git a/micropython/examples/stellar_unicorn/today.py b/micropython/examples/stellar_unicorn/today.py new file mode 100644 index 00000000..e957ee23 --- /dev/null +++ b/micropython/examples/stellar_unicorn/today.py @@ -0,0 +1,128 @@ +import time +import network +import ntptime +import machine + +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY + +su = StellarUnicorn() +graphics = PicoGraphics(DISPLAY) + +# Default Brightness +su.set_brightness(0.4) + +# You will need to create or update the file secrets.py with your network credentials using Thonny +# in order for the example to update using the NTP. + +# secrets.py should contain: +# WIFI_SSID = "" +# WIFI_PASSWORD = "" + +try: + from secrets import WIFI_SSID, WIFI_PASSWORD +except ImportError: + print("Create secrets.py with your WiFi credentials") + + +WIDTH = StellarUnicorn.WIDTH +HEIGHT = StellarUnicorn.HEIGHT + +rtc = machine.RTC() + +DAYS = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"] + +# Enable the Wireless +wlan = network.WLAN(network.STA_IF) +wlan.active(True) + + +def network_connect(SSID, PSK): + + # Number of attempts to make before timeout + max_wait = 5 + + # Sets the Wireless LED pulsing and attempts to connect to your local network. + print("connecting...") + wlan.config(pm=0xa11140) # Turn WiFi power saving off for some slow APs + wlan.connect(SSID, PSK) + + while max_wait > 0: + if wlan.status() < 0 or wlan.status() >= 3: + break + max_wait -= 1 + print('waiting for connection...') + time.sleep(1) + + # Handle connection error. Switches the Warn LED on. + if wlan.status() != 3: + print("Unable to connect. Attempting connection again") + + +# Function to sync the Pico RTC using NTP +def sync_time(): + + try: + network_connect(WIFI_SSID, WIFI_PASSWORD) + except NameError: + print("Create secrets.py with your WiFi credentials") + + if wlan.status() < 0 or wlan.status() >= 3: + try: + ntptime.settime() + except OSError: + print("Unable to sync with NTP server. Check network and try again.") + + +def init(): + + sync_time() + + +def draw(): + + # Pens + RED = graphics.create_pen(120, 0, 0) + WHITE = graphics.create_pen(255, 255, 255) + + current_t = rtc.datetime() + + # Set the pen to Red and clear the screen. + graphics.set_pen(WHITE) + graphics.clear() + + # Measures the length of the text to help us with centring later. + day_length = graphics.measure_text(DAYS[current_t[3]], 1) + date_length = graphics.measure_text(str(current_t[2]), 1) + + graphics.set_font("bitmap6") + graphics.set_pen(RED) + graphics.rectangle(0, 0, WIDTH, 7) + graphics.set_pen(WHITE) + graphics.text(DAYS[current_t[3]], (WIDTH // 2) - (day_length // 2), 0, 16, 1) + + graphics.set_pen(RED) + graphics.set_font("bitmap6") + graphics.text(str(current_t[2]), (WIDTH // 2) - (date_length // 2) + 1, 8, 16, 1) + + graphics.set_pen(graphics.create_pen(0, 0, 0)) + + su.update(graphics) + + +init() + +while 1: + + # Adjust Brightness +/- + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + su.adjust_brightness(+0.01) + + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + su.adjust_brightness(-0.01) + + # Connect to the network and sync with the NTP server + if su.is_pressed(StellarUnicorn.SWITCH_C): + sync_time() + + draw() diff --git a/micropython/examples/stellar_unicorn/weather/icons/cloud1.jpg b/micropython/examples/stellar_unicorn/weather/icons/cloud1.jpg new file mode 100644 index 00000000..7c400e81 Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/cloud1.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/cloud2.jpg b/micropython/examples/stellar_unicorn/weather/icons/cloud2.jpg new file mode 100644 index 00000000..d5f7b54b Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/cloud2.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/cloud3.jpg b/micropython/examples/stellar_unicorn/weather/icons/cloud3.jpg new file mode 100644 index 00000000..9059882f Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/cloud3.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/cloud4.jpg b/micropython/examples/stellar_unicorn/weather/icons/cloud4.jpg new file mode 100644 index 00000000..9059882f Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/cloud4.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/rain1.jpg b/micropython/examples/stellar_unicorn/weather/icons/rain1.jpg new file mode 100644 index 00000000..9e676daf Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/rain1.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/rain2.jpg b/micropython/examples/stellar_unicorn/weather/icons/rain2.jpg new file mode 100644 index 00000000..5fe470c7 Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/rain2.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/rain3.jpg b/micropython/examples/stellar_unicorn/weather/icons/rain3.jpg new file mode 100644 index 00000000..91be10a9 Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/rain3.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/rain4.jpg b/micropython/examples/stellar_unicorn/weather/icons/rain4.jpg new file mode 100644 index 00000000..9e676daf Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/rain4.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/snow1.jpg b/micropython/examples/stellar_unicorn/weather/icons/snow1.jpg new file mode 100644 index 00000000..de769f95 Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/snow1.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/snow2.jpg b/micropython/examples/stellar_unicorn/weather/icons/snow2.jpg new file mode 100644 index 00000000..4e1b0c03 Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/snow2.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/snow3.jpg b/micropython/examples/stellar_unicorn/weather/icons/snow3.jpg new file mode 100644 index 00000000..b85dc3b2 Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/snow3.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/snow4.jpg b/micropython/examples/stellar_unicorn/weather/icons/snow4.jpg new file mode 100644 index 00000000..8ae9bd6a Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/snow4.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/storm1.jpg b/micropython/examples/stellar_unicorn/weather/icons/storm1.jpg new file mode 100644 index 00000000..d7ac6251 Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/storm1.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/storm2.jpg b/micropython/examples/stellar_unicorn/weather/icons/storm2.jpg new file mode 100644 index 00000000..7ba0aaba Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/storm2.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/storm3.jpg b/micropython/examples/stellar_unicorn/weather/icons/storm3.jpg new file mode 100644 index 00000000..6081f046 Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/storm3.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/storm4.jpg b/micropython/examples/stellar_unicorn/weather/icons/storm4.jpg new file mode 100644 index 00000000..98cdc59c Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/storm4.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/sun1.jpg b/micropython/examples/stellar_unicorn/weather/icons/sun1.jpg new file mode 100644 index 00000000..b989b432 Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/sun1.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/sun2.jpg b/micropython/examples/stellar_unicorn/weather/icons/sun2.jpg new file mode 100644 index 00000000..f6c78277 Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/sun2.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/sun3.jpg b/micropython/examples/stellar_unicorn/weather/icons/sun3.jpg new file mode 100644 index 00000000..de34c7e9 Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/sun3.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons/sun4.jpg b/micropython/examples/stellar_unicorn/weather/icons/sun4.jpg new file mode 100644 index 00000000..3d5a18c4 Binary files /dev/null and b/micropython/examples/stellar_unicorn/weather/icons/sun4.jpg differ diff --git a/micropython/examples/stellar_unicorn/weather/icons_sourcefile(doesn't need copying).svg b/micropython/examples/stellar_unicorn/weather/icons_sourcefile(doesn't need copying).svg new file mode 100644 index 00000000..8eedbcb0 --- /dev/null +++ b/micropython/examples/stellar_unicorn/weather/icons_sourcefile(doesn't need copying).svg @@ -0,0 +1,1577 @@ + + + + diff --git a/micropython/examples/stellar_unicorn/weather/weather.py b/micropython/examples/stellar_unicorn/weather/weather.py new file mode 100644 index 00000000..7cc00674 --- /dev/null +++ b/micropython/examples/stellar_unicorn/weather/weather.py @@ -0,0 +1,153 @@ +import time +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN as DISPLAY +import WIFI_CONFIG +from network_manager import NetworkManager +import uasyncio as asyncio +import urequests +import jpegdec + +# Set your latitude/longitude here (find yours by right clicking in Google Maps!) +LAT = 53.38609085276884 +LNG = -1.4239983439328177 +TIMEZONE = "auto" # determines time zone from lat/long + +URL = "http://api.open-meteo.com/v1/forecast?latitude=" + str(LAT) + "&longitude=" + str(LNG) + "¤t_weather=true&timezone=" + TIMEZONE +WEATHER_TEXT = '' +user_icon = None + + +def get_data(): + global WEATHER_TEXT, temperature, weathercode + print(f"Requesting URL: {URL}") + r = urequests.get(URL) + # open the json data + j = r.json() + print("Data obtained!") + print(j) + + # parse relevant data from JSON + current = j["current_weather"] + temperature = current["temperature"] + windspeed = current["windspeed"] + winddirection = calculate_bearing(current["winddirection"]) + weathercode = current["weathercode"] + date, now = current["time"].split("T") + WEATHER_TEXT = f"Temp: {temperature}°C Wind Speed: {windspeed}kmph Wind Direction: {winddirection} As of: {date}, {now}" + print(WEATHER_TEXT) + r.close() + + +def calculate_bearing(d): + # calculates a compass direction from the wind direction in degrees + dirs = ['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW'] + ix = round(d / (360. / len(dirs))) + return dirs[ix % len(dirs)] + + +def status_handler(mode, status, ip): + global MESSAGE + print("Network: {}".format(WIFI_CONFIG.SSID)) + + +# create galactic object and graphics surface for drawing +su = StellarUnicorn() +display = PicoGraphics(DISPLAY) + +WIDTH = StellarUnicorn.WIDTH +HEIGHT = StellarUnicorn.HEIGHT + +jpeg = jpegdec.JPEG(display) +TEXT_COLOUR = display.create_pen(200, 0, 200) +BLACK = display.create_pen(0, 0, 0) +WHITE = display.create_pen(255, 255, 255) + + +def run(): + # Setup wifi + network_manager = NetworkManager(WIFI_CONFIG.COUNTRY, status_handler=status_handler) + + # Connect to Wifi network + asyncio.get_event_loop().run_until_complete(network_manager.client(WIFI_CONFIG.SSID, WIFI_CONFIG.PSK)) + while (not network_manager.isconnected()): + time.sleep(0.1) + + +su.set_brightness(1) +run() # Sets up Wifi connection + + +def outline_text(text, x, y): + display.set_pen(BLACK) + display.text(text, x - 1, y - 1, -1, 1) + display.text(text, x, y - 1, -1, 1) + display.text(text, x + 1, y - 1, -1, 1) + display.text(text, x - 1, y, -1, 1) + display.text(text, x + 1, y, -1, 1) + display.text(text, x - 1, y + 1, -1, 1) + display.text(text, x, y + 1, -1, 1) + display.text(text, x + 1, y + 1, -1, 1) + + display.set_pen(WHITE) + display.text(text, x, y, -1, 1) + + +def draw_page(cycle): + global user_icon + text_cycle = cycle % 1000 + cycle = cycle % 4 + # Clear the display + display.set_pen(15) + display.clear() + + # Draw the page header + display.set_font("bitmap6") + + if temperature is not None: + # Choose an appropriate icon based on the weather code + # Weather codes from https://open-meteo.com/en/docs + if user_icon is not None: + icons = ["icons/snow{0}.jpg".format(cycle + 1), "icons/rain{0}.jpg".format(cycle + 1), "icons/cloud{0}.jpg".format(cycle + 1), "icons/sun{0}.jpg".format(cycle + 1), "icons/storm{0}.jpg".format(cycle + 1)] + jpeg.open_file(icons[user_icon]) + else: + if weathercode in [71, 73, 75, 77, 85, 86]: # codes for snow + jpeg.open_file("icons/snow{0}.jpg".format(cycle + 1)) + elif weathercode in [51, 53, 55, 56, 57, 61, 63, 65, 66, 67, 80, 81, 82]: # codes for rain + jpeg.open_file("icons/rain{0}.jpg".format(cycle + 1)) + elif weathercode in [1, 2, 3, 45, 48]: # codes for cloud + jpeg.open_file("icons/cloud{0}.jpg".format(cycle + 1)) + elif weathercode in [0]: # codes for sun + jpeg.open_file("icons/sun{0}.jpg".format(cycle + 1)) + elif weathercode in [95, 96, 99]: # codes for storm + jpeg.open_file("icons/storm{0}.jpg".format(cycle + 1)) + jpeg.decode(0, 0, jpegdec.JPEG_SCALE_FULL) + display.set_pen(TEXT_COLOUR) + outline_text(WEATHER_TEXT, 16 - text_cycle, 0) + + else: + display.set_pen(0) + display.set_pen(15) + display.text("Unable to display weather! Check your network settings in WIFI_CONFIG.py", 5, 65, WIDTH, 1) + + su.update(display) + + +while 1: + + get_data() + for count in range(500): + + if su.is_pressed(StellarUnicorn.SWITCH_A): + user_icon = 0 + if su.is_pressed(StellarUnicorn.SWITCH_B): + user_icon = 1 + if su.is_pressed(StellarUnicorn.SWITCH_C): + user_icon = 2 + if su.is_pressed(StellarUnicorn.SWITCH_D): + user_icon = 3 + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_UP): + user_icon = 4 + if su.is_pressed(StellarUnicorn.SWITCH_BRIGHTNESS_DOWN): + user_icon = None + draw_page(count) + time.sleep(0.2) diff --git a/micropython/modules/cosmic_unicorn/README.md b/micropython/modules/cosmic_unicorn/README.md index 2514d8cc..1a703e9d 100644 --- a/micropython/modules/cosmic_unicorn/README.md +++ b/micropython/modules/cosmic_unicorn/README.md @@ -82,7 +82,7 @@ while True: # draw the text graphics.set_pen(YELLOW) - graphics.text(MESSAGE, round(0 - scroll), 2, -1, 0.55); + graphics.text(MESSAGE, round(0 - scroll), 2, -1, 0.55) # update the display cu.update(graphics) diff --git a/micropython/modules/cosmic_unicorn/cosmic_unicorn.c b/micropython/modules/cosmic_unicorn/cosmic_unicorn.c index 17873023..94e5401d 100644 --- a/micropython/modules/cosmic_unicorn/cosmic_unicorn.c +++ b/micropython/modules/cosmic_unicorn/cosmic_unicorn.c @@ -131,20 +131,20 @@ const mp_obj_type_t CosmicUnicorn_type = { #endif /***** Globals Table *****/ -STATIC const mp_map_elem_t Cosmic_globals_table[] = { +STATIC const mp_map_elem_t cosmic_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_cosmic) }, { MP_OBJ_NEW_QSTR(MP_QSTR_Channel), (mp_obj_t)&Channel_type }, { MP_OBJ_NEW_QSTR(MP_QSTR_CosmicUnicorn), (mp_obj_t)&CosmicUnicorn_type }, }; -STATIC MP_DEFINE_CONST_DICT(mp_module_Cosmic_globals, Cosmic_globals_table); +STATIC MP_DEFINE_CONST_DICT(mp_module_cosmic_globals, cosmic_globals_table); /***** Module Definition *****/ -const mp_obj_module_t Cosmic_user_cmodule = { +const mp_obj_module_t cosmic_user_cmodule = { .base = { &mp_type_module }, - .globals = (mp_obj_dict_t*)&mp_module_Cosmic_globals, + .globals = (mp_obj_dict_t*)&mp_module_cosmic_globals, }; #if MICROPY_VERSION <= 70144 -MP_REGISTER_MODULE(MP_QSTR_cosmic, Cosmic_user_cmodule, MODULE_Cosmic_ENABLED); +MP_REGISTER_MODULE(MP_QSTR_cosmic, cosmic_user_cmodule, MODULE_COSMIC_ENABLED); #else -MP_REGISTER_MODULE(MP_QSTR_cosmic, Cosmic_user_cmodule); +MP_REGISTER_MODULE(MP_QSTR_cosmic, cosmic_user_cmodule); #endif diff --git a/micropython/modules/cosmic_unicorn/cosmic_unicorn.cpp b/micropython/modules/cosmic_unicorn/cosmic_unicorn.cpp index 0f49abca..5fffb7be 100644 --- a/micropython/modules/cosmic_unicorn/cosmic_unicorn.cpp +++ b/micropython/modules/cosmic_unicorn/cosmic_unicorn.cpp @@ -341,7 +341,7 @@ mp_obj_t Channel_play_tone(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw /***** Variables Struct *****/ typedef struct _CosmicUnicorn_obj_t { mp_obj_base_t base; - CosmicUnicorn* Cosmic; + CosmicUnicorn* cosmic; } _CosmicUnicorn_obj_t; typedef struct _ModPicoGraphics_obj_t { @@ -388,12 +388,12 @@ mp_obj_t CosmicUnicorn_make_new(const mp_obj_type_t *type, size_t n_args, size_t } - CosmicUnicorn *Cosmic = m_new_class(CosmicUnicorn); - Cosmic->init(); + CosmicUnicorn *cosmic = m_new_class(CosmicUnicorn); + cosmic->init(); self = m_new_obj_with_finaliser(_CosmicUnicorn_obj_t); self->base.type = &CosmicUnicorn_type; - self->Cosmic = Cosmic; + self->cosmic = cosmic; return MP_OBJ_FROM_PTR(self); } @@ -402,7 +402,7 @@ mp_obj_t CosmicUnicorn_make_new(const mp_obj_type_t *type, size_t n_args, size_t /***** Destructor ******/ mp_obj_t CosmicUnicorn___del__(mp_obj_t self_in) { _CosmicUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _CosmicUnicorn_obj_t); - m_del_class(CosmicUnicorn, self->Cosmic); + m_del_class(CosmicUnicorn, self->cosmic); return mp_const_none; } @@ -410,7 +410,7 @@ mp_obj_t CosmicUnicorn___del__(mp_obj_t self_in) { /***** Methods *****/ extern mp_obj_t CosmicUnicorn_clear(mp_obj_t self_in) { _CosmicUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _CosmicUnicorn_obj_t); - self->Cosmic->clear(); + self->cosmic->clear(); return mp_const_none; } @@ -418,54 +418,54 @@ extern mp_obj_t CosmicUnicorn_update(mp_obj_t self_in, mp_obj_t graphics_in) { _CosmicUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _CosmicUnicorn_obj_t); ModPicoGraphics_obj_t *picographics = MP_OBJ_TO_PTR2(graphics_in, ModPicoGraphics_obj_t); - self->Cosmic->update(picographics->graphics); + self->cosmic->update(picographics->graphics); return mp_const_none; } extern mp_obj_t CosmicUnicorn_set_brightness(mp_obj_t self_in, mp_obj_t value) { _CosmicUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _CosmicUnicorn_obj_t); - self->Cosmic->set_brightness(mp_obj_get_float(value)); + self->cosmic->set_brightness(mp_obj_get_float(value)); return mp_const_none; } extern mp_obj_t CosmicUnicorn_get_brightness(mp_obj_t self_in) { _CosmicUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _CosmicUnicorn_obj_t); - return mp_obj_new_float(self->Cosmic->get_brightness()); + return mp_obj_new_float(self->cosmic->get_brightness()); } extern mp_obj_t CosmicUnicorn_adjust_brightness(mp_obj_t self_in, mp_obj_t delta) { _CosmicUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _CosmicUnicorn_obj_t); - self->Cosmic->adjust_brightness(mp_obj_get_float(delta)); + self->cosmic->adjust_brightness(mp_obj_get_float(delta)); return mp_const_none; } extern mp_obj_t CosmicUnicorn_set_volume(mp_obj_t self_in, mp_obj_t value) { _CosmicUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _CosmicUnicorn_obj_t); - self->Cosmic->set_volume(mp_obj_get_float(value)); + self->cosmic->set_volume(mp_obj_get_float(value)); return mp_const_none; } extern mp_obj_t CosmicUnicorn_get_volume(mp_obj_t self_in) { _CosmicUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _CosmicUnicorn_obj_t); - return mp_obj_new_float(self->Cosmic->get_volume()); + return mp_obj_new_float(self->cosmic->get_volume()); } extern mp_obj_t CosmicUnicorn_adjust_volume(mp_obj_t self_in, mp_obj_t delta) { _CosmicUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _CosmicUnicorn_obj_t); - self->Cosmic->adjust_volume(mp_obj_get_float(delta)); + self->cosmic->adjust_volume(mp_obj_get_float(delta)); return mp_const_none; } extern mp_obj_t CosmicUnicorn_light(mp_obj_t self_in) { _CosmicUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _CosmicUnicorn_obj_t); - return mp_obj_new_float(self->Cosmic->light()); + return mp_obj_new_float(self->cosmic->light()); } extern mp_obj_t CosmicUnicorn_is_pressed(mp_obj_t self_in, mp_obj_t button) { _CosmicUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _CosmicUnicorn_obj_t); - return mp_obj_new_bool(self->Cosmic->is_pressed((uint8_t)mp_obj_get_int(button))); + return mp_obj_new_bool(self->cosmic->is_pressed((uint8_t)mp_obj_get_int(button))); } extern mp_obj_t CosmicUnicorn_play_sample(mp_obj_t self_in, mp_obj_t data) { @@ -477,21 +477,21 @@ extern mp_obj_t CosmicUnicorn_play_sample(mp_obj_t self_in, mp_obj_t data) { mp_raise_ValueError("Supplied buffer is too small!"); } - self->Cosmic->play_sample((uint8_t *)bufinfo.buf, bufinfo.len); + self->cosmic->play_sample((uint8_t *)bufinfo.buf, bufinfo.len); return mp_const_none; } extern mp_obj_t CosmicUnicorn_play_synth(mp_obj_t self_in) { _CosmicUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _CosmicUnicorn_obj_t); - self->Cosmic->play_synth(); + self->cosmic->play_synth(); return mp_const_none; } extern mp_obj_t CosmicUnicorn_stop_playing(mp_obj_t self_in) { _CosmicUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _CosmicUnicorn_obj_t); - self->Cosmic->stop_playing(); + self->cosmic->stop_playing(); return mp_const_none; } @@ -509,7 +509,7 @@ extern mp_obj_t CosmicUnicorn_synth_channel(mp_obj_t self_in, mp_obj_t channel_i // Could very easily mess up in weird ways once object deletion is considered? _Channel_obj_t *channel_obj = m_new_obj_with_finaliser(_Channel_obj_t); channel_obj->base.type = &Channel_type; - channel_obj->channel = &self->Cosmic->synth_channel(channel); + channel_obj->channel = &self->cosmic->synth_channel(channel); return MP_OBJ_FROM_PTR(channel_obj); } diff --git a/micropython/modules/galactic_unicorn/README.md b/micropython/modules/galactic_unicorn/README.md index 383d75e7..a7d94c16 100644 --- a/micropython/modules/galactic_unicorn/README.md +++ b/micropython/modules/galactic_unicorn/README.md @@ -82,7 +82,7 @@ while True: # draw the text graphics.set_pen(YELLOW) - graphics.text(MESSAGE, round(0 - scroll), 2, -1, 0.55); + graphics.text(MESSAGE, round(0 - scroll), 2, -1, 0.55) # update the display gu.update(graphics) diff --git a/micropython/modules/micropython-stellar_unicorn.cmake b/micropython/modules/micropython-stellar_unicorn.cmake new file mode 100644 index 00000000..da6c3efe --- /dev/null +++ b/micropython/modules/micropython-stellar_unicorn.cmake @@ -0,0 +1,40 @@ +include_directories(${CMAKE_CURRENT_LIST_DIR}/../../) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../../") + +set(CMAKE_C_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) + +# Essential +include(pimoroni_i2c/micropython) +include(pimoroni_bus/micropython) + +# Pico Graphics Essential +include(hershey_fonts/micropython) +include(bitmap_fonts/micropython) +include(picographics/micropython) + +# Pico Graphics Extra +include(jpegdec/micropython) +include(qrcode/micropython/micropython) + +# Sensors & Breakouts +include(micropython-common-breakouts) +include(pcf85063a/micropython) + +# Utility +include(adcfft/micropython) + +# LEDs & Matrices +include(stellar_unicorn/micropython) + +# ULAB +include(micropython-common-ulab) +enable_ulab() + +include(modules_py/modules_py) + +# C++ Magic Memory +include(cppmem/micropython) diff --git a/micropython/modules/picographics/README.md b/micropython/modules/picographics/README.md index 608a118c..4e65a6bd 100644 --- a/micropython/modules/picographics/README.md +++ b/micropython/modules/picographics/README.md @@ -72,6 +72,7 @@ Bear in mind that MicroPython has only 192K of RAM available- a 320x240 pixel di * Galactic Unicorn - 53x11 LED Matrix - `DISPLAY_GALACTIC_UNICORN` * Interstate75 and 75W - HUB75 Matrix driver - `DISPLAY_INTERSTATE75_SIZEOFMATRIX` please read below! * Cosmic Unicorn - 32x32 LED Matrix - `DISPLAY_COSMIC_UNICORN` +* Stellar Unicorn - 16x16 LED Matrix - `DISPLAY_STELLAR_UNICORN` #### Interstate75 and Interstate75W Display modes diff --git a/micropython/modules/picographics/picographics.c b/micropython/modules/picographics/picographics.c index ed034dce..3a620256 100644 --- a/micropython/modules/picographics/picographics.c +++ b/micropython/modules/picographics/picographics.c @@ -152,6 +152,7 @@ STATIC const mp_map_elem_t picographics_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_DISPLAY_INTERSTATE75_256X64), MP_ROM_INT(DISPLAY_INTERSTATE75_256X64) }, { MP_ROM_QSTR(MP_QSTR_DISPLAY_INKY_FRAME_7), MP_ROM_INT(DISPLAY_INKY_FRAME_7) }, { MP_ROM_QSTR(MP_QSTR_DISPLAY_COSMIC_UNICORN), MP_ROM_INT(DISPLAY_COSMIC_UNICORN) }, + { MP_ROM_QSTR(MP_QSTR_DISPLAY_STELLAR_UNICORN), MP_ROM_INT(DISPLAY_STELLAR_UNICORN) }, { MP_ROM_QSTR(MP_QSTR_DISPLAY_UNICORN_PACK), MP_ROM_INT(DISPLAY_UNICORN_PACK) }, { MP_ROM_QSTR(MP_QSTR_DISPLAY_SCROLL_PACK), MP_ROM_INT(DISPLAY_SCROLL_PACK) }, diff --git a/micropython/modules/picographics/picographics.cpp b/micropython/modules/picographics/picographics.cpp index 33c27af9..28566521 100644 --- a/micropython/modules/picographics/picographics.cpp +++ b/micropython/modules/picographics/picographics.cpp @@ -210,6 +210,14 @@ bool get_display_settings(PicoGraphicsDisplay display, int &width, int &height, if(rotate == -1) rotate = (int)Rotation::ROTATE_0; if(pen_type == -1) pen_type = PEN_RGB888; break; + case DISPLAY_STELLAR_UNICORN: + width = 16; + height = 16; + bus_type = BUS_PIO; + // Portrait to match labelling + if(rotate == -1) rotate = (int)Rotation::ROTATE_0; + if(pen_type == -1) pen_type = PEN_RGB888; + break; case DISPLAY_UNICORN_PACK: width = 16; height = 7; @@ -354,6 +362,7 @@ mp_obj_t ModPicoGraphics_make_new(const mp_obj_type_t *type, size_t n_args, size || display == DISPLAY_INTERSTATE75_64X32 || display == DISPLAY_GALACTIC_UNICORN || display == DISPLAY_COSMIC_UNICORN + || display == DISPLAY_STELLAR_UNICORN || display == DISPLAY_UNICORN_PACK || display == DISPLAY_SCROLL_PACK) { // Create a dummy display driver diff --git a/micropython/modules/picographics/picographics.h b/micropython/modules/picographics/picographics.h index e5ea8cf3..4d64d5a0 100644 --- a/micropython/modules/picographics/picographics.h +++ b/micropython/modules/picographics/picographics.h @@ -26,6 +26,7 @@ enum PicoGraphicsDisplay { DISPLAY_INTERSTATE75_256X64, DISPLAY_INKY_FRAME_7, DISPLAY_COSMIC_UNICORN, + DISPLAY_STELLAR_UNICORN, DISPLAY_UNICORN_PACK, DISPLAY_SCROLL_PACK }; diff --git a/micropython/modules/stellar_unicorn/README.md b/micropython/modules/stellar_unicorn/README.md new file mode 100644 index 00000000..f09167e2 --- /dev/null +++ b/micropython/modules/stellar_unicorn/README.md @@ -0,0 +1,315 @@ +# Stellar Unicorn (MicroPython) + +Stellar Unicorn offers 16x16 bright RGB LEDs driven by Pico W's PIO in addition to a 1W amplifier + speaker, a collection of system and user buttons, and two Qw/ST connectors for adding external sensors and devices. Woha! + +You can buy one here: https://shop.pimoroni.com/products/stellar-unicorn + +## These are not your everyday RGB LEDs! + +Internally Stellar Unicorn applies gamma correction to the supplied image data and updates the display with 14-bit precision resulting in extremely linear visual output - including at the low end. + +The display is refreshed around 300 times per second (300fps!) allowing for rock solid stability even when being filmed, no smearing or flickering even when in motion. + +No strobing or brightness stepping here folks - it's the perfect backdrop for your tricked out streaming setup! + +## Getting started + +The Stellar Unicorn library provides a collection of methods that allow you to easily access all of the features on the board. + +Drawing is primarily handled via our [PicoGraphics](https://github.com/pimoroni/pimoroni-pico/tree/main/micropython/modules/picographics) library which provides a comprehensive selection of drawing methods - once your drawing work is complete you pass the PicoGraphics object to Stellar Unicorn to have it displayed on the screen. + +- [Example Program](#example-program) +- [Interleaved Framebuffer](#interleaved-framebuffer) +- [Function Reference](#function-reference) + - [Imports and Objects](#imports-and-objects) + - [System State](#system-state) + - [`set_brightness(value)`](#set_brightnessvalue) + - [`get_brightness()`](#get_brightness) + - [`adjust_brightness(delta)`](#adjust_brightnessdelta) + - [`set_volume(value)`](#set_volumevalue) + - [`get_volume()`](#get_volume) + - [`adjust_volume(delta)`](#adjust_volumedelta) + - [`light()`](#light) + - [`is_pressed(button)`](#is_pressedbutton) + - [Drawing](#drawing) + - [`update(PicoGraphics)`](#updatepicographics) + - [`clear()`](#clear) + - [Audio](#audio) + - [`play_sample(data)`](#play_sampledata) + - [`synth_channel(channel)`](#synth_channelchannel) + - [`play_synth()`](#play_synth) + - [`stop_playing()`](#stop_playing) + - [Channel Reference](#channel-reference) + - [Constants](#constants) + - [`WIDTH` \& `HEIGHT`](#width--height) + - [Using Breakouts](#using-breakouts) + +# Example Program + +The following example shows how to scroll a simple message across the display. + +```python +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN +import time + +# create a PicoGraphics framebuffer to draw into +graphics = PicoGraphics(display=DISPLAY_STELLAR_UNICORN) + +# create our StellarUnicorn object +su = StellarUnicorn() + +# start position for scrolling (off the side of the display) +scroll = float(-StellarUnicorn.WIDTH) + +# message to scroll +MESSAGE = "Pirate. Monkey. Robot. Ninja." + +# pen colours to draw with +BLACK = graphics.create_pen(0, 0, 0) +YELLOW = graphics.create_pen(255, 255, 0) + +while True: + # determine the scroll position of the text + width = graphics.measure_text(MESSAGE, 1) + scroll += 0.25 + if scroll > width: + scroll = float(-StellarUnicorn.WIDTH) + + # clear the graphics object + graphics.set_pen(BLACK) + graphics.clear() + + # draw the text + graphics.set_pen(YELLOW) + graphics.text(MESSAGE, round(0 - scroll), 2, -1, 0.55) + + # update the display + su.update(graphics) + + time.sleep(0.02) +``` + +# Interleaved Framebuffer + +Stellar Unicorn takes advantage of the RP2040's PIOs to drive screen updates - this is what gives it the performance it needs to render with 14-bit precision at over 300 frames per second. + +The PIO is a powerful, but limited, tool. It has no way to access memory at random and minimal support for decision making and branching. All it can really do is process a stream of data/instructions in order. + +This means that we need to be clever about the way we pass data into the PIO program, the information needs to be delivered in the exact order that the PIO will need to process it. To achieve this we "interleave" our framebuffer - each frame of BCM data is passed one after another with values for the current row, pixel count, and timing inserted as needed: + + row 0 data: + for each bcd frame: + bit : data + 0: 00110110 // row pixel count (minus one) + 1 - 53: xxxxxbgr, xxxxxbgr, xxxxxbgr, ... // pixel data + 54 - 55: xxxxxxxx, xxxxxxxx // dummy bytes to dword align + 56: xxxxrrrr // row select bits + 57 - 59: tttttttt, tttttttt, tttttttt // bcd tick count (0-65536) + + row 1 data: + ... + +If you're working with our library then you don't need to worry about any of these details, they are handled for you. + +# Function Reference + +## Imports and Objects + +To access these functions, you'll need to first `import` the relevant libraries and then set up a Stellar Unicorn object: + +```python +from stellar import StellarUnicorn + +su = StellarUnicorn() +``` + +or (with PicoGraphics): + +```python +from stellar import StellarUnicorn +from picographics import PicoGraphics, DISPLAY_STELLAR_UNICORN + +su = StellarUnicorn() +graphics = PicoGraphics(display=DISPLAY_STELLAR_UNICORN) +``` + +## System State + +### `set_brightness(value)` + +Set the brightness - `value` is supplied as a floating point value between `0.0` and `1.0`. + +### `get_brightness()` + +Returns the current brightness as a value between `0.0` and `1.0`. + +### `adjust_brightness(delta)` + +Adjust the brightness of the display - `delta` is supplied as a floating point value and will be added to the current brightness (and then clamped to the range `0.0` to `1.0`). + +For example: + +```python +su.set_brightness(0.5) +su.adjust_brightness(0.1) # brightness is now 0.6 +su.adjust_brightness(0.7) # brightness is now 1.0 +su.adjust_brightness(-0.2) # brightness is now 0.8 +``` + +### `set_volume(value)` + +Set the volume - `value` is supplied as a floating point value between `0.0` and `1.0`. + +### `get_volume()` + +Returns the current volume as a value between `0.0` and `1.0`. + +### `adjust_volume(delta)` + +Adjust the volume - `delta` is supplied as a floating point value and will be added to the current volume (and then clamped to the range `0.0` to `1.0`). + +For example: + +```python +su.set_volume(0.5) +su.set_volume(0.1) # volume is now 0.6 +su.adjust_volume(0.7) # volume is now 1.0 +su.adjust_volume(-0.2) # volume is now 0.8 +``` + +### `light()` + +Get the current value seen by the onboard light sensor as a value between `0` and `4095`. + +### `is_pressed(button)` + +Returns true if the requested `button` is currently pressed. + +There are a set of constants in the StellarUnicorn class that represent each of the buttons. The brightness, sleep, and volume buttons are not tied to hardware functions (they are implemented entirely in software) so can also be used for user functions if preferred. Here's a list of the constants and their associated pin numbers: + +```python +SWITCH_A = 0 +SWITCH_B = 1 +SWITCH_C = 3 +SWITCH_D = 6 +SWITCH_SLEEP = 27 +SWITCH_VOLUME_UP = 7 +SWITCH_VOLUME_DOWN = 8 +SWITCH_BRIGHTNESS_UP = 21 +SWITCH_BRIGHTNESS_DOWN = 26 +``` + +For example: + +```python +while not su.is_pressed(StellarUnicorn.SWITCH_A): + # wait for switch A to be pressed + pass + +print("We did it! We pressed switch A! Heck yeah!") +``` + +## Drawing + +### `update(PicoGraphics)` + +The PicoGraphics library provides a collection of powerful drawing methods to make things simple. + +The image on the PicoGraphics object provided is copied to the interleaved framebuffer with gamma correction applied. + +For example (assuming you've set up your Stellar Unicorn and PicoGraphics objects up [as we did above](#imports-and-objects)): + +```python +su.update(graphics) +``` + +⚠️ If you've used PicoGraphics on our other boards note that this `update` function works a little differently. Here it's a Stellar Unicorn function to which you need to pass a PicoGraphics object to. + +### `clear()` + +Clear the contents of the interleaved framebuffer. This will make your Stellar Unicorn display turn off. To show an image again, call the `update()` function as described above. + +## Audio + +Audio functionality is supported by our [PicoSynth library](https://github.com/pimoroni/pimoroni-pico/tree/main/libraries/pico_synth) which allows you to create multiple voice channels with ADSR (attack decay sustain release) envelopes. It provides a similar set of functionality to the classic SID chip in the Commodore 64. + +### `play_sample(data)` + +Play the provided 16-bit audio sample. `data` must point to a `bytearray` that contains 16-bit PCM data. The number of samples is retrieved from the array's length. + +### `synth_channel(channel)` + +Gets a `Channel` object which can then be configured with voice, ADSR envelope, etc. + +### `play_synth()` + +Start the synth playing. + +### `stop_playing()` + +Stops any currently playing audio. + +### Channel Reference + +```python +configure(waveforms=None, frequency=None, volume=None, + attack=None, decay=None, sustain=None, + release=None, pulse_width=None) +restore() +waveforms() +waveforms(waveforms) +frequency() +frequency(frequency) +volume() +volume(volume) +attack_duration() +attack_duration(duration) +decay_duration() +decay_duration(duration) +sustain_level() +sustain_level(level) +release_duration() +release_duration(duration) +pulse_width() +pulse_width(width) +trigger_attack() # start the channel playing +trigger_release() # stop the channel playing +play_tone(frequency, volume=None, attack=None, release=None) +``` + +## Constants + +### `WIDTH` & `HEIGHT` + +The width and height of Stellar Unicorn are available in constants `WIDTH` and `HEIGHT`. + +For example: + +```python +num_pixels = StellarUnicorn.WIDTH * StellarUnicorn.HEIGHT +print(num_pixels) +``` + +## Using Breakouts + +Stellar Unicorn has two Qw/ST (Qwiic/STEMMA QT) connectors. Breakouts with Qw/ST connectors, can be plugged straight in with a [JST-SH to JST-SH cable](https://shop.pimoroni.com/products/jst-sh-cable-qwiic-stemma-qt-compatible?variant=31910609813587). You can connect I2C Breakout Garden breakouts without Qw/ST connectors using a [JST-SH to JST-SH cable](https://shop.pimoroni.com/products/jst-sh-cable-qwiic-stemma-qt-compatible?variant=31910609813587) and a [Qw/ST to Breakout Garden adaptor](https://shop.pimoroni.com/products/stemma-qt-qwiic-to-breakout-garden-adapter). + +- [List of breakouts currently supported in our C++/MicroPython build](https://github.com/pimoroni/pimoroni-pico#breakouts) + +Stellar Unicorn uses GP4 and GP5 for its I2C interface. You can use the constants in the shared `pimoroni` module to set up the I2C interface: + +```python +from pimoroni_i2c import PimoroniI2C +from pimoroni import BREAKOUT_GARDEN_I2C_PINS + +i2c = PimoroniI2C(**BREAKOUT_GARDEN_I2C_PINS) +``` + +Alternatively, you can specify the pin numbers directly: + +```python +from pimoroni_i2c import PimoroniI2C + +i2c = PimoroniI2C(sda=4, scl=5) +``` \ No newline at end of file diff --git a/micropython/modules/stellar_unicorn/micropython.cmake b/micropython/modules/stellar_unicorn/micropython.cmake new file mode 100644 index 00000000..3f184427 --- /dev/null +++ b/micropython/modules/stellar_unicorn/micropython.cmake @@ -0,0 +1,24 @@ +set(MOD_NAME stellar_unicorn) +string(TOUPPER ${MOD_NAME} MOD_NAME_UPPER) +add_library(usermod_${MOD_NAME} INTERFACE) + +target_sources(usermod_${MOD_NAME} INTERFACE + ${CMAKE_CURRENT_LIST_DIR}/${MOD_NAME}.c + ${CMAKE_CURRENT_LIST_DIR}/${MOD_NAME}.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../../libraries/stellar_unicorn/stellar_unicorn.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../../libraries/pico_synth/pico_synth.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../../libraries/pico_graphics/pico_graphics_pen_rgb888.cpp +) +pico_generate_pio_header(usermod_${MOD_NAME} ${CMAKE_CURRENT_LIST_DIR}/../../../libraries/stellar_unicorn/stellar_unicorn.pio) +pico_generate_pio_header(usermod_${MOD_NAME} ${CMAKE_CURRENT_LIST_DIR}/../../../libraries/stellar_unicorn/audio_i2s.pio) + +target_include_directories(usermod_${MOD_NAME} INTERFACE + ${CMAKE_CURRENT_LIST_DIR} + ${CMAKE_CURRENT_LIST_DIR}/../../../libraries/pico_graphics/ +) + +target_compile_definitions(usermod_${MOD_NAME} INTERFACE + MODULE_STELLAR_ENABLED=1 +) + +target_link_libraries(usermod INTERFACE usermod_${MOD_NAME}) \ No newline at end of file diff --git a/micropython/modules/stellar_unicorn/stellar_unicorn.c b/micropython/modules/stellar_unicorn/stellar_unicorn.c new file mode 100644 index 00000000..b62829cd --- /dev/null +++ b/micropython/modules/stellar_unicorn/stellar_unicorn.c @@ -0,0 +1,150 @@ +#include "stellar_unicorn.h" + + +/***** Methods *****/ +MP_DEFINE_CONST_FUN_OBJ_1(Channel___del___obj, Channel___del__); +MP_DEFINE_CONST_FUN_OBJ_KW(Channel_configure_obj, 1, Channel_configure); +MP_DEFINE_CONST_FUN_OBJ_1(Channel_restore_obj, Channel_restore); +MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(Channel_waveforms_obj, 1, 2, Channel_waveforms); +MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(Channel_frequency_obj, 1, 2, Channel_frequency); +MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(Channel_volume_obj, 1, 2, Channel_volume); +MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(Channel_attack_duration_obj, 1, 2, Channel_attack_duration); +MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(Channel_decay_duration_obj, 1, 2, Channel_decay_duration); +MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(Channel_sustain_level_obj, 1, 2, Channel_sustain_level); +MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(Channel_release_duration_obj, 1, 2, Channel_release_duration); +MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(Channel_pulse_width_obj, 1, 2, Channel_pulse_width); +MP_DEFINE_CONST_FUN_OBJ_1(Channel_trigger_attack_obj, Channel_trigger_attack); +MP_DEFINE_CONST_FUN_OBJ_1(Channel_trigger_release_obj, Channel_trigger_release); +MP_DEFINE_CONST_FUN_OBJ_KW(Channel_play_tone_obj, 2, Channel_play_tone); +//MP_DEFINE_CONST_FUN_OBJ_1(Channel_stop_playing_obj, Channel_stop_playing); + +MP_DEFINE_CONST_FUN_OBJ_1(StellarUnicorn___del___obj, StellarUnicorn___del__); +MP_DEFINE_CONST_FUN_OBJ_1(StellarUnicorn_clear_obj, StellarUnicorn_clear); +MP_DEFINE_CONST_FUN_OBJ_2(StellarUnicorn_update_obj, StellarUnicorn_update); +MP_DEFINE_CONST_FUN_OBJ_2(StellarUnicorn_set_brightness_obj, StellarUnicorn_set_brightness); +MP_DEFINE_CONST_FUN_OBJ_1(StellarUnicorn_get_brightness_obj, StellarUnicorn_get_brightness); +MP_DEFINE_CONST_FUN_OBJ_2(StellarUnicorn_adjust_brightness_obj, StellarUnicorn_adjust_brightness); +MP_DEFINE_CONST_FUN_OBJ_2(StellarUnicorn_set_volume_obj, StellarUnicorn_set_volume); +MP_DEFINE_CONST_FUN_OBJ_1(StellarUnicorn_get_volume_obj, StellarUnicorn_get_volume); +MP_DEFINE_CONST_FUN_OBJ_2(StellarUnicorn_adjust_volume_obj, StellarUnicorn_adjust_volume); +MP_DEFINE_CONST_FUN_OBJ_1(StellarUnicorn_light_obj, StellarUnicorn_light); +MP_DEFINE_CONST_FUN_OBJ_2(StellarUnicorn_is_pressed_obj, StellarUnicorn_is_pressed); +MP_DEFINE_CONST_FUN_OBJ_2(StellarUnicorn_play_sample_obj, StellarUnicorn_play_sample); +MP_DEFINE_CONST_FUN_OBJ_1(StellarUnicorn_play_synth_obj, StellarUnicorn_play_synth); +MP_DEFINE_CONST_FUN_OBJ_1(StellarUnicorn_stop_playing_obj, StellarUnicorn_stop_playing); +MP_DEFINE_CONST_FUN_OBJ_2(StellarUnicorn_synth_channel_obj, StellarUnicorn_synth_channel); + +/***** Binding of Methods *****/ +STATIC const mp_rom_map_elem_t Channel_locals_dict_table[] = { + { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&Channel___del___obj) }, + { MP_ROM_QSTR(MP_QSTR_configure), MP_ROM_PTR(&Channel_configure_obj) }, + { MP_ROM_QSTR(MP_QSTR_restore), MP_ROM_PTR(&Channel_restore_obj) }, + { MP_ROM_QSTR(MP_QSTR_waveforms), MP_ROM_PTR(&Channel_waveforms_obj) }, + { MP_ROM_QSTR(MP_QSTR_frequency), MP_ROM_PTR(&Channel_frequency_obj) }, + { MP_ROM_QSTR(MP_QSTR_volume), MP_ROM_PTR(&Channel_volume_obj) }, + { MP_ROM_QSTR(MP_QSTR_attack_duration), MP_ROM_PTR(&Channel_attack_duration_obj) }, + { MP_ROM_QSTR(MP_QSTR_decay_duration), MP_ROM_PTR(&Channel_decay_duration_obj) }, + { MP_ROM_QSTR(MP_QSTR_sustain_level), MP_ROM_PTR(&Channel_sustain_level_obj) }, + { MP_ROM_QSTR(MP_QSTR_release_duration), MP_ROM_PTR(&Channel_release_duration_obj) }, + { MP_ROM_QSTR(MP_QSTR_pulse_width), MP_ROM_PTR(&Channel_pulse_width_obj) }, + { MP_ROM_QSTR(MP_QSTR_trigger_attack), MP_ROM_PTR(&Channel_trigger_attack_obj) }, + { MP_ROM_QSTR(MP_QSTR_trigger_release), MP_ROM_PTR(&Channel_trigger_release_obj) }, + { MP_ROM_QSTR(MP_QSTR_play_tone), MP_ROM_PTR(&Channel_play_tone_obj) }, + + { MP_ROM_QSTR(MP_QSTR_NOISE), MP_ROM_INT(128) }, + { MP_ROM_QSTR(MP_QSTR_SQUARE), MP_ROM_INT(64) }, + { MP_ROM_QSTR(MP_QSTR_SAW), MP_ROM_INT(32) }, + { MP_ROM_QSTR(MP_QSTR_TRIANGLE), MP_ROM_INT(16) }, + { MP_ROM_QSTR(MP_QSTR_SINE), MP_ROM_INT(8) }, + { MP_ROM_QSTR(MP_QSTR_WAVE), MP_ROM_INT(1) }, +}; + +STATIC const mp_rom_map_elem_t StellarUnicorn_locals_dict_table[] = { + { MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&StellarUnicorn___del___obj) }, + { MP_ROM_QSTR(MP_QSTR_clear), MP_ROM_PTR(&StellarUnicorn_clear_obj) }, + { MP_ROM_QSTR(MP_QSTR_update), MP_ROM_PTR(&StellarUnicorn_update_obj) }, + { MP_ROM_QSTR(MP_QSTR_set_brightness), MP_ROM_PTR(&StellarUnicorn_set_brightness_obj) }, + { MP_ROM_QSTR(MP_QSTR_get_brightness), MP_ROM_PTR(&StellarUnicorn_get_brightness_obj) }, + { MP_ROM_QSTR(MP_QSTR_adjust_brightness), MP_ROM_PTR(&StellarUnicorn_adjust_brightness_obj) }, + { MP_ROM_QSTR(MP_QSTR_set_volume), MP_ROM_PTR(&StellarUnicorn_set_volume_obj) }, + { MP_ROM_QSTR(MP_QSTR_get_volume), MP_ROM_PTR(&StellarUnicorn_get_volume_obj) }, + { MP_ROM_QSTR(MP_QSTR_adjust_volume), MP_ROM_PTR(&StellarUnicorn_adjust_volume_obj) }, + { MP_ROM_QSTR(MP_QSTR_light), MP_ROM_PTR(&StellarUnicorn_light_obj) }, + { MP_ROM_QSTR(MP_QSTR_is_pressed), MP_ROM_PTR(&StellarUnicorn_is_pressed_obj) }, + { MP_ROM_QSTR(MP_QSTR_play_sample), MP_ROM_PTR(&StellarUnicorn_play_sample_obj) }, + { MP_ROM_QSTR(MP_QSTR_play_synth), MP_ROM_PTR(&StellarUnicorn_play_synth_obj) }, + { MP_ROM_QSTR(MP_QSTR_stop_playing), MP_ROM_PTR(&StellarUnicorn_stop_playing_obj) }, + { MP_ROM_QSTR(MP_QSTR_synth_channel), MP_ROM_PTR(&StellarUnicorn_synth_channel_obj) }, + + { MP_ROM_QSTR(MP_QSTR_WIDTH), MP_ROM_INT(16) }, + { MP_ROM_QSTR(MP_QSTR_HEIGHT), MP_ROM_INT(16) }, + + { MP_ROM_QSTR(MP_QSTR_SWITCH_A), MP_ROM_INT(0) }, + { MP_ROM_QSTR(MP_QSTR_SWITCH_B), MP_ROM_INT(1) }, + { MP_ROM_QSTR(MP_QSTR_SWITCH_C), MP_ROM_INT(3) }, + { MP_ROM_QSTR(MP_QSTR_SWITCH_D), MP_ROM_INT(6) }, + { MP_ROM_QSTR(MP_QSTR_SWITCH_SLEEP), MP_ROM_INT(27) }, + { MP_ROM_QSTR(MP_QSTR_SWITCH_VOLUME_UP), MP_ROM_INT(7) }, + { MP_ROM_QSTR(MP_QSTR_SWITCH_VOLUME_DOWN), MP_ROM_INT(8) }, + { MP_ROM_QSTR(MP_QSTR_SWITCH_BRIGHTNESS_UP), MP_ROM_INT(21) }, + { MP_ROM_QSTR(MP_QSTR_SWITCH_BRIGHTNESS_DOWN), MP_ROM_INT(26) }, +}; + +STATIC MP_DEFINE_CONST_DICT(Channel_locals_dict, Channel_locals_dict_table); +STATIC MP_DEFINE_CONST_DICT(StellarUnicorn_locals_dict, StellarUnicorn_locals_dict_table); + +/***** Class Definition *****/ +#ifdef MP_DEFINE_CONST_OBJ_TYPE +MP_DEFINE_CONST_OBJ_TYPE( + Channel_type, + MP_QSTR_Channel, + MP_TYPE_FLAG_NONE, + make_new, Channel_make_new, + print, Channel_print, + locals_dict, (mp_obj_dict_t*)&Channel_locals_dict +); + +MP_DEFINE_CONST_OBJ_TYPE( + StellarUnicorn_type, + MP_QSTR_StellarUnicorn, + MP_TYPE_FLAG_NONE, + make_new, StellarUnicorn_make_new, + print, StellarUnicorn_print, + locals_dict, (mp_obj_dict_t*)&StellarUnicorn_locals_dict +); +#else +const mp_obj_type_t Channel_type = { + { &mp_type_type }, + .name = MP_QSTR_Channel, + .print = Channel_print, + .make_new = Channel_make_new, + .locals_dict = (mp_obj_dict_t*)&Channel_locals_dict, +}; + +const mp_obj_type_t StellarUnicorn_type = { + { &mp_type_type }, + .name = MP_QSTR_StellarUnicorn, + .print = StellarUnicorn_print, + .make_new = StellarUnicorn_make_new, + .locals_dict = (mp_obj_dict_t*)&StellarUnicorn_locals_dict, +}; +#endif + +/***** Globals Table *****/ +STATIC const mp_map_elem_t stellar_globals_table[] = { + { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_stellar) }, + { MP_OBJ_NEW_QSTR(MP_QSTR_Channel), (mp_obj_t)&Channel_type }, + { MP_OBJ_NEW_QSTR(MP_QSTR_StellarUnicorn), (mp_obj_t)&StellarUnicorn_type }, +}; +STATIC MP_DEFINE_CONST_DICT(mp_module_stellar_globals, stellar_globals_table); + +/***** Module Definition *****/ +const mp_obj_module_t stellar_user_cmodule = { + .base = { &mp_type_module }, + .globals = (mp_obj_dict_t*)&mp_module_stellar_globals, +}; +#if MICROPY_VERSION <= 70144 +MP_REGISTER_MODULE(MP_QSTR_stellar, stellar_user_cmodule, MODULE_STELLAR_ENABLED); +#else +MP_REGISTER_MODULE(MP_QSTR_stellar, stellar_user_cmodule); +#endif diff --git a/micropython/modules/stellar_unicorn/stellar_unicorn.cpp b/micropython/modules/stellar_unicorn/stellar_unicorn.cpp new file mode 100644 index 00000000..a6b19daa --- /dev/null +++ b/micropython/modules/stellar_unicorn/stellar_unicorn.cpp @@ -0,0 +1,516 @@ +#include "libraries/stellar_unicorn/stellar_unicorn.hpp" +#include "libraries/pico_graphics/pico_graphics.hpp" +#include "micropython/modules/util.hpp" +#include +#include + + +using namespace pimoroni; + +extern "C" { +#include "stellar_unicorn.h" +#include "micropython/modules/pimoroni_i2c/pimoroni_i2c.h" +#include "py/builtin.h" + + +/********** Channel **********/ + +/***** Variables Struct *****/ +typedef struct _Channel_obj_t { + mp_obj_base_t base; + AudioChannel* channel; +} _Channel_obj_t; + + +/***** Print *****/ +void Channel_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { + (void)kind; //Unused input parameter + //_Channel_obj_t *self = MP_OBJ_TO_PTR2(self_in, _Channel_obj_t); + //AudioChannel* channel = self->channel; + mp_print_str(print, "Channel("); + mp_print_str(print, ")"); +} + + +/***** Constructor *****/ +mp_obj_t Channel_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { + mp_raise_msg(&mp_type_RuntimeError, "Cannot create Channel objects. They can only be accessed from StellarUnicorn.synth_channel()"); + return mp_const_none; +} + + +/***** Destructor ******/ +mp_obj_t Channel___del__(mp_obj_t self_in) { + return mp_const_none; +} + + +/***** Helper Functions *****/ +void set_channel_waveforms(AudioChannel& channel, mp_obj_t in) { + int waveforms = mp_obj_get_int(in); + const int mask = (NOISE | SQUARE | SAW | TRIANGLE | SINE | WAVE); + if(waveforms < 0 || (waveforms & mask) == 0) { + mp_raise_ValueError("waveforms invalid. Expected a combination of NOISE, SQUARE, SAW, TRIANGLE, SINE, or WAVE"); + } + channel.waveforms = (uint8_t)waveforms; +} + +void set_channel_frequency(AudioChannel& channel, mp_obj_t in) { + int freq = mp_obj_get_int(in); + if(freq <= 0 || freq > UINT16_MAX) { + mp_raise_ValueError("frequency out of range. Expected greater than 0Hz to 65535Hz"); + } + channel.frequency = (uint16_t)freq; +} + +void set_channel_volume(AudioChannel& channel, mp_obj_t in) { + float volume = mp_obj_get_float(in); + if(volume < 0.0f || volume > 1.0f) { + mp_raise_ValueError("volume out of range. Expected 0.0 to 1.0"); + } + channel.volume = (uint16_t)(volume * UINT16_MAX); +} + +void set_channel_attack(AudioChannel& channel, mp_obj_t in) { + int attack_ms = (int)(mp_obj_get_float(in) * 1000.0f); + if(attack_ms < 0 || attack_ms > UINT16_MAX) { + mp_raise_ValueError("attack out of range. Expected 0.0s to 65.5s"); + } + channel.attack_ms = MAX(attack_ms, 1); +} + +void set_channel_decay(AudioChannel& channel, mp_obj_t in) { + int decay_ms = (int)(mp_obj_get_float(in) * 1000.0f); + if(decay_ms < 0 || decay_ms > UINT16_MAX) { + mp_raise_ValueError("decay out of range. Expected 0.0s to 65.5s"); + } + channel.decay_ms = MAX(decay_ms, 1); +} + +void set_channel_sustain(AudioChannel& channel, mp_obj_t in) { + float sustain = mp_obj_get_float(in); + if(sustain < 0.0f || sustain > 1.0f) { + mp_raise_ValueError("sustain out of range. Expected 0.0 to 1.0"); + } + channel.sustain = (uint16_t)(sustain * UINT16_MAX); +} + +void set_channel_release(AudioChannel& channel, mp_obj_t in) { + int release_ms = (int)(mp_obj_get_float(in) * 1000.0f); + if(release_ms < 0 || release_ms > UINT16_MAX) { + mp_raise_ValueError("release out of range. Expected 0.0s to 65.5s"); + } + channel.release_ms = MAX(release_ms, 1); +} + +void set_channel_pulse_width(AudioChannel& channel, mp_obj_t in) { + float pulse_width = mp_obj_get_float(in); + if(pulse_width < 0.0f || pulse_width > 1.0f) { + mp_raise_ValueError("pulse_width out of range. Expected 0.0 to 1.0"); + } + channel.pulse_width = (uint16_t)(pulse_width * UINT16_MAX); +} + + +/***** Methods *****/ +mp_obj_t Channel_configure(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { + enum { ARG_self, ARG_waveforms, ARG_frequency, ARG_volume, ARG_attack, ARG_decay, ARG_sustain, ARG_release, ARG_pulse_width }; + static const mp_arg_t allowed_args[] = { + { MP_QSTR_, MP_ARG_REQUIRED | MP_ARG_OBJ }, + { MP_QSTR_waveforms, MP_ARG_OBJ, {.u_obj = mp_const_none} }, + { MP_QSTR_frequency, MP_ARG_OBJ, {.u_obj = mp_const_none} }, + { MP_QSTR_volume, MP_ARG_OBJ, {.u_obj = mp_const_none} }, + { MP_QSTR_attack, MP_ARG_OBJ, {.u_obj = mp_const_none} }, + { MP_QSTR_decay, MP_ARG_OBJ, {.u_obj = mp_const_none} }, + { MP_QSTR_sustain, MP_ARG_OBJ, {.u_obj = mp_const_none} }, + { MP_QSTR_release, MP_ARG_OBJ, {.u_obj = mp_const_none} }, + { MP_QSTR_pulse_width, MP_ARG_OBJ, {.u_obj = mp_const_none} } + }; + + // Parse args. + mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; + mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); + + _Channel_obj_t *self = MP_OBJ_TO_PTR2(args[ARG_self].u_obj, _Channel_obj_t); + + mp_obj_t waveforms = args[ARG_waveforms].u_obj; + if(waveforms != mp_const_none) { + set_channel_waveforms(*self->channel, waveforms); + } + + mp_obj_t frequency = args[ARG_frequency].u_obj; + if(frequency != mp_const_none) { + set_channel_frequency(*self->channel, frequency); + } + + mp_obj_t volume = args[ARG_volume].u_obj; + if(volume != mp_const_none) { + set_channel_volume(*self->channel, volume); + } + + mp_obj_t attack = args[ARG_attack].u_obj; + if(attack != mp_const_none) { + set_channel_attack(*self->channel, attack); + } + + mp_obj_t decay = args[ARG_decay].u_obj; + if(decay != mp_const_none) { + set_channel_decay(*self->channel, decay); + } + + mp_obj_t sustain = args[ARG_sustain].u_obj; + if(sustain != mp_const_none) { + set_channel_sustain(*self->channel, sustain); + } + + mp_obj_t release = args[ARG_release].u_obj; + if(release != mp_const_none) { + set_channel_release(*self->channel, release); + } + + mp_obj_t pulse_width = args[ARG_pulse_width].u_obj; + if(pulse_width != mp_const_none) { + set_channel_pulse_width(*self->channel, pulse_width); + } + + return mp_const_none; +} + +mp_obj_t Channel_restore(mp_obj_t self_in) { + _Channel_obj_t *self = MP_OBJ_TO_PTR2(self_in, _Channel_obj_t); + self->channel->restore(); + return mp_const_none; +} + +mp_obj_t Channel_waveforms(size_t n_args, const mp_obj_t *args) { + _Channel_obj_t *self = MP_OBJ_TO_PTR2(args[0], _Channel_obj_t); + + if(n_args == 1) { + return mp_obj_new_int(self->channel->waveforms); + } + + set_channel_waveforms(*self->channel, args[1]); + return mp_const_none; +} + +mp_obj_t Channel_frequency(size_t n_args, const mp_obj_t *args) { + _Channel_obj_t *self = MP_OBJ_TO_PTR2(args[0], _Channel_obj_t); + + if(n_args == 1) { + return mp_obj_new_int(self->channel->frequency); + } + + set_channel_frequency(*self->channel, args[1]); + return mp_const_none; +} + +mp_obj_t Channel_volume(size_t n_args, const mp_obj_t *args) { + _Channel_obj_t *self = MP_OBJ_TO_PTR2(args[0], _Channel_obj_t); + + if(n_args == 1) { + return mp_obj_new_float((float)self->channel->volume / UINT16_MAX); + } + + set_channel_volume(*self->channel, args[1]); + return mp_const_none; +} + +mp_obj_t Channel_attack_duration(size_t n_args, const mp_obj_t *args) { + _Channel_obj_t *self = MP_OBJ_TO_PTR2(args[0], _Channel_obj_t); + + if(n_args == 1) { + return mp_obj_new_float((float)self->channel->attack_ms / 1000.0f); + } + + set_channel_attack(*self->channel, args[1]); + return mp_const_none; +} + +mp_obj_t Channel_decay_duration(size_t n_args, const mp_obj_t *args) { + _Channel_obj_t *self = MP_OBJ_TO_PTR2(args[0], _Channel_obj_t); + + if(n_args == 1) { + return mp_obj_new_float((float)self->channel->decay_ms / 1000.0f); + } + + set_channel_decay(*self->channel, args[1]); + return mp_const_none; +} + +mp_obj_t Channel_sustain_level(size_t n_args, const mp_obj_t *args) { + _Channel_obj_t *self = MP_OBJ_TO_PTR2(args[0], _Channel_obj_t); + + if(n_args == 1) { + return mp_obj_new_float((float)self->channel->sustain / UINT16_MAX); + } + + set_channel_sustain(*self->channel, args[1]); + return mp_const_none; +} + +mp_obj_t Channel_release_duration(size_t n_args, const mp_obj_t *args) { + _Channel_obj_t *self = MP_OBJ_TO_PTR2(args[0], _Channel_obj_t); + + if(n_args == 1) { + return mp_obj_new_float((float)self->channel->release_ms / 1000.0f); + } + + set_channel_release(*self->channel, args[1]); + return mp_const_none; +} + +mp_obj_t Channel_pulse_width(size_t n_args, const mp_obj_t *args) { + _Channel_obj_t *self = MP_OBJ_TO_PTR2(args[0], _Channel_obj_t); + + if(n_args == 1) { + return mp_obj_new_float((float)self->channel->pulse_width / 0xffff); + } + + set_channel_pulse_width(*self->channel, args[1]); + return mp_const_none; +} + +mp_obj_t Channel_trigger_attack(mp_obj_t self_in) { + _Channel_obj_t *self = MP_OBJ_TO_PTR2(self_in, _Channel_obj_t); + self->channel->trigger_attack(); + + return mp_const_none; +} + +mp_obj_t Channel_trigger_release(mp_obj_t self_in) { + _Channel_obj_t *self = MP_OBJ_TO_PTR2(self_in, _Channel_obj_t); + self->channel->trigger_release(); + + return mp_const_none; +} + +mp_obj_t Channel_play_tone(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { + enum { ARG_self, ARG_freq, ARG_volume, ARG_fade_in, ARG_fade_out }; + static const mp_arg_t allowed_args[] = { + { MP_QSTR_, MP_ARG_REQUIRED | MP_ARG_OBJ }, + { MP_QSTR_frequency, MP_ARG_REQUIRED | MP_ARG_OBJ }, + { MP_QSTR_volume, MP_ARG_OBJ, {.u_obj = mp_const_none} }, + { MP_QSTR_attack, MP_ARG_OBJ, {.u_obj = mp_const_none} }, + { MP_QSTR_release, MP_ARG_OBJ, {.u_obj = mp_const_none} }, + }; + + // Parse args. + mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; + mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); + + _Channel_obj_t *self = MP_OBJ_TO_PTR2(args[ARG_self].u_obj, _Channel_obj_t); + + set_channel_frequency(*self->channel, args[ARG_freq].u_obj); + + mp_obj_t volume = args[ARG_volume].u_obj; + if(volume != mp_const_none) { + set_channel_volume(*self->channel, volume); + } + else { + self->channel->volume = UINT16_MAX; + } + + mp_obj_t attack_ms = args[ARG_fade_in].u_obj; + if(attack_ms != mp_const_none) { + set_channel_attack(*self->channel, attack_ms); + } + else { + self->channel->attack_ms = 1; + } + + mp_obj_t release_ms = args[ARG_fade_out].u_obj; + if(release_ms != mp_const_none) { + set_channel_release(*self->channel, release_ms); + } + else { + self->channel->release_ms = 1; + } + + self->channel->waveforms = Waveform::SINE; + self->channel->decay_ms = 1; + self->channel->sustain = UINT16_MAX; + + self->channel->trigger_attack(); + + return mp_const_none; +} + + +/********** StellarUnicorn **********/ + +/***** Variables Struct *****/ +typedef struct _StellarUnicorn_obj_t { + mp_obj_base_t base; + StellarUnicorn* stellar; +} _StellarUnicorn_obj_t; + +typedef struct _ModPicoGraphics_obj_t { + mp_obj_base_t base; + PicoGraphics *graphics; + DisplayDriver *display; + void *spritedata; + void *buffer; + _PimoroniI2C_obj_t *i2c; + //mp_obj_t scanline_callback; // Not really feasible in MicroPython +} ModPicoGraphics_obj_t; + +/***** Print *****/ +void StellarUnicorn_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { + (void)kind; //Unused input parameter + //_StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + mp_print_str(print, "StellarUnicorn()"); +} + + +/***** Constructor *****/ +mp_obj_t StellarUnicorn_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) { + _StellarUnicorn_obj_t *self = nullptr; + + enum { ARG_pio, ARG_sm, ARG_pins, ARG_common_pin, ARG_direction, ARG_counts_per_rev, ARG_count_microsteps, ARG_freq_divider }; + static const mp_arg_t allowed_args[] = { + { MP_QSTR_pio, MP_ARG_INT }, + { MP_QSTR_sm, MP_ARG_INT } + }; + + // Parse args. + mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; + mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); + + int pio_int = args[ARG_pio].u_int; + if(pio_int < 0 || pio_int > (int)NUM_PIOS) { + mp_raise_ValueError("pio out of range. Expected 0 to 1"); + } + //PIO pio = pio_int == 0 ? pio0 : pio1; + + int sm = args[ARG_sm].u_int; + if(sm < 0 || sm > (int)NUM_PIO_STATE_MACHINES) { + mp_raise_ValueError("sm out of range. Expected 0 to 3"); + } + + + StellarUnicorn *stellar = m_new_class(StellarUnicorn); + stellar->init(); + + self = m_new_obj_with_finaliser(_StellarUnicorn_obj_t); + self->base.type = &StellarUnicorn_type; + self->stellar = stellar; + + return MP_OBJ_FROM_PTR(self); +} + + +/***** Destructor ******/ +mp_obj_t StellarUnicorn___del__(mp_obj_t self_in) { + _StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + m_del_class(StellarUnicorn, self->stellar); + return mp_const_none; +} + + +/***** Methods *****/ +extern mp_obj_t StellarUnicorn_clear(mp_obj_t self_in) { + _StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + self->stellar->clear(); + return mp_const_none; +} + +extern mp_obj_t StellarUnicorn_update(mp_obj_t self_in, mp_obj_t graphics_in) { + _StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + ModPicoGraphics_obj_t *picographics = MP_OBJ_TO_PTR2(graphics_in, ModPicoGraphics_obj_t); + + self->stellar->update(picographics->graphics); + + return mp_const_none; +} + +extern mp_obj_t StellarUnicorn_set_brightness(mp_obj_t self_in, mp_obj_t value) { + _StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + self->stellar->set_brightness(mp_obj_get_float(value)); + return mp_const_none; +} + +extern mp_obj_t StellarUnicorn_get_brightness(mp_obj_t self_in) { + _StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + return mp_obj_new_float(self->stellar->get_brightness()); +} + +extern mp_obj_t StellarUnicorn_adjust_brightness(mp_obj_t self_in, mp_obj_t delta) { + _StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + self->stellar->adjust_brightness(mp_obj_get_float(delta)); + return mp_const_none; +} + +extern mp_obj_t StellarUnicorn_set_volume(mp_obj_t self_in, mp_obj_t value) { + _StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + self->stellar->set_volume(mp_obj_get_float(value)); + return mp_const_none; +} + +extern mp_obj_t StellarUnicorn_get_volume(mp_obj_t self_in) { + _StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + return mp_obj_new_float(self->stellar->get_volume()); +} + +extern mp_obj_t StellarUnicorn_adjust_volume(mp_obj_t self_in, mp_obj_t delta) { + _StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + self->stellar->adjust_volume(mp_obj_get_float(delta)); + return mp_const_none; +} + + +extern mp_obj_t StellarUnicorn_light(mp_obj_t self_in) { + _StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + return mp_obj_new_float(self->stellar->light()); +} + +extern mp_obj_t StellarUnicorn_is_pressed(mp_obj_t self_in, mp_obj_t button) { + _StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + return mp_obj_new_bool(self->stellar->is_pressed((uint8_t)mp_obj_get_int(button))); +} + +extern mp_obj_t StellarUnicorn_play_sample(mp_obj_t self_in, mp_obj_t data) { + _StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + + mp_buffer_info_t bufinfo; + mp_get_buffer_raise(data, &bufinfo, MP_BUFFER_RW); + if(bufinfo.len < 1) { + mp_raise_ValueError("Supplied buffer is too small!"); + } + + self->stellar->play_sample((uint8_t *)bufinfo.buf, bufinfo.len); + + return mp_const_none; +} + +extern mp_obj_t StellarUnicorn_play_synth(mp_obj_t self_in) { + _StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + self->stellar->play_synth(); + + return mp_const_none; +} + +extern mp_obj_t StellarUnicorn_stop_playing(mp_obj_t self_in) { + _StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + self->stellar->stop_playing(); + + return mp_const_none; +} + +extern mp_obj_t StellarUnicorn_synth_channel(mp_obj_t self_in, mp_obj_t channel_in) { + _StellarUnicorn_obj_t *self = MP_OBJ_TO_PTR2(self_in, _StellarUnicorn_obj_t); + + // Check that the channel is valid + int channel = mp_obj_get_int(channel_in); + if(channel < 0 || channel >= (int)PicoSynth::CHANNEL_COUNT) { + mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT("channel out of range. Expected 0 to %d"), PicoSynth::CHANNEL_COUNT - 1); + } + + // NOTE This seems to work, in that it give MP access to the calibration object + // Could very easily mess up in weird ways once object deletion is considered? + _Channel_obj_t *channel_obj = m_new_obj_with_finaliser(_Channel_obj_t); + channel_obj->base.type = &Channel_type; + channel_obj->channel = &self->stellar->synth_channel(channel); + + return MP_OBJ_FROM_PTR(channel_obj); +} +} diff --git a/micropython/modules/stellar_unicorn/stellar_unicorn.h b/micropython/modules/stellar_unicorn/stellar_unicorn.h new file mode 100644 index 00000000..5d8219cc --- /dev/null +++ b/micropython/modules/stellar_unicorn/stellar_unicorn.h @@ -0,0 +1,50 @@ +// Include MicroPython API. +#include "py/runtime.h" + +/***** Extern of Class Definition *****/ +extern const mp_obj_type_t Channel_type; +extern const mp_obj_type_t StellarUnicorn_type; + +/***** Extern of Class Methods *****/ +extern void Channel_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind); +extern mp_obj_t Channel_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args); +extern mp_obj_t Channel___del__(mp_obj_t self_in); +extern mp_obj_t Channel_configure(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args); +extern mp_obj_t Channel_restore(mp_obj_t self_in); +extern mp_obj_t Channel_waveforms(size_t n_args, const mp_obj_t *args); +extern mp_obj_t Channel_frequency(size_t n_args, const mp_obj_t *args); +extern mp_obj_t Channel_volume(size_t n_args, const mp_obj_t *args); +extern mp_obj_t Channel_attack_duration(size_t n_args, const mp_obj_t *args); +extern mp_obj_t Channel_decay_duration(size_t n_args, const mp_obj_t *args); +extern mp_obj_t Channel_sustain_level(size_t n_args, const mp_obj_t *args); +extern mp_obj_t Channel_release_duration(size_t n_args, const mp_obj_t *args); +extern mp_obj_t Channel_pulse_width(size_t n_args, const mp_obj_t *args); +extern mp_obj_t Channel_trigger_attack(mp_obj_t self_in); +extern mp_obj_t Channel_trigger_release(mp_obj_t self_in); +extern mp_obj_t Channel_play_tone(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args); +extern mp_obj_t Channel_stop_playing(mp_obj_t self_in); + +extern void StellarUnicorn_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind); +extern mp_obj_t StellarUnicorn_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args); +extern mp_obj_t StellarUnicorn___del__(mp_obj_t self_in); +extern mp_obj_t StellarUnicorn_clear(mp_obj_t self_in); + +extern mp_obj_t StellarUnicorn_update(mp_obj_t self_in, mp_obj_t graphics_in); + +extern mp_obj_t StellarUnicorn_set_brightness(mp_obj_t self_in, mp_obj_t value); +extern mp_obj_t StellarUnicorn_get_brightness(mp_obj_t self_in); +extern mp_obj_t StellarUnicorn_adjust_brightness(mp_obj_t self_in, mp_obj_t delta); + +extern mp_obj_t StellarUnicorn_set_volume(mp_obj_t self_in, mp_obj_t value); +extern mp_obj_t StellarUnicorn_get_volume(mp_obj_t self_in); +extern mp_obj_t StellarUnicorn_adjust_volume(mp_obj_t self_in, mp_obj_t delta); + +extern mp_obj_t StellarUnicorn_light(mp_obj_t self_in); + +extern mp_obj_t StellarUnicorn_is_pressed(mp_obj_t self_in, mp_obj_t button); + +extern mp_obj_t StellarUnicorn_play_sample(mp_obj_t self_in, mp_obj_t data); +extern mp_obj_t StellarUnicorn_play_synth(mp_obj_t self_in); +extern mp_obj_t StellarUnicorn_stop_playing(mp_obj_t self_in); + +extern mp_obj_t StellarUnicorn_synth_channel(mp_obj_t self_in, mp_obj_t channel_in); \ No newline at end of file diff --git a/micropython/modules/ulab b/micropython/modules/ulab index ac2e9954..e68bb707 160000 --- a/micropython/modules/ulab +++ b/micropython/modules/ulab @@ -1 +1 @@ -Subproject commit ac2e9954edc185ec212e437e73e4b5e4290de35b +Subproject commit e68bb707b20ee326d84ab75fc9fb35f2e85b87e3 diff --git a/setting-up-micropython.md b/setting-up-micropython.md index afd5dcab..8e510d8f 100644 --- a/setting-up-micropython.md +++ b/setting-up-micropython.md @@ -30,6 +30,7 @@ On the releases page you'll find a bunch of different .uf2 files for use on diff | Badger 2040 W | **pimoroni-badger2040w-vx.x.x-micropython.uf2** or **pimoroni-badger2040w-v0.0.1-micropython-with-badger-os.uf2** | :warning: Badger OS will overwrite your files! | Badger 2040 | **pimoroni-badger2040-vx.x.x-micropython.uf2** or **pimoroni-badger2040-v0.0.1-micropython-with-badger-os.uf2** | :warning: Badger OS will overwrite your files! | Cosmic Unicorn | **pimoroni-picow_cosmic_unicorn-vx.x.x-micropython.uf2** | | +| Stellar Unicorn | **pimoroni-picow_stellar_unicorn-vx.x.x-micropython.uf2** | | ## Entering DFU/bootloader mode