diff --git a/.vscode/settings.json b/.vscode/settings.json index cb0dece..9c61a6c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,10 +1,10 @@ { - "C_Cpp_Runner.cCompilerPath": "C:/Users/siwat/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/xtensa-esp32-elf-gcc.exe", - "C_Cpp_Runner.cppCompilerPath": "C:/Users/siwat/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/xtensa-esp32-elf-g++.exe", - "C_Cpp_Runner.debuggerPath": "C:/Users/siwat/.platformio/packages/toolchain-xtensa-esp32@8.4.0+2021r2-patch5/bin/xtensa-esp32-elf-gdb.exe", - "C_Cpp_Runner.cStandard": "gnu99", - "C_Cpp_Runner.cppStandard": "gnu++11", "C_Cpp_Runner.msvcBatchPath": "", + "C_Cpp_Runner.cCompilerPath": "gcc", + "C_Cpp_Runner.cppCompilerPath": "g++", + "C_Cpp_Runner.debuggerPath": "gdb", + "C_Cpp_Runner.cStandard": "", + "C_Cpp_Runner.cppStandard": "", "C_Cpp_Runner.useMsvc": false, "C_Cpp_Runner.warnings": [ "-Wall", @@ -37,236 +37,7 @@ "C_Cpp_Runner.warningsAsError": false, "C_Cpp_Runner.compilerArgs": [], "C_Cpp_Runner.linkerArgs": [], - "C_Cpp_Runner.includePaths": [ - "D:/Git/cud-iot-v2/include", - "D:/Git/cud-iot-v2/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/include/esp_additions/freertos", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/port/xtensa/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/include/esp_additions", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/esp32", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/port/esp32", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/port/esp32/private_include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/heap/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/log/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/include/apps", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/include/apps/sntp", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/lwip/src/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/port/esp32/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/port/esp32/include/arch", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/soc/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/soc/esp32", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/soc/esp32/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/hal/esp32/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/hal/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/hal/platform_port/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rom/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rom/include/esp32", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rom/esp32", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_common/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_system/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_system/port/soc", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_system/port/public_compat", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/xtensa/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/xtensa/esp32/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/driver/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/driver/esp32/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_pm/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_ringbuf/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/efuse/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/efuse/esp32/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/vfs/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_wifi/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_event/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_netif/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_eth/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/tcpip_adapter/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_phy/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_phy/esp32/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_ipc/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/app_trace/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_timer/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/port/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/mbedtls/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/esp_crt_bundle/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/app_update/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/spi_flash/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bootloader_support/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/nvs_flash/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/pthread/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_gdbstub/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_gdbstub/xtensa", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_gdbstub/esp32", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espcoredump/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espcoredump/include/port/xtensa", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wpa_supplicant/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wpa_supplicant/port/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wpa_supplicant/esp_supplicant/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/ieee802154/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/console", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/asio/asio/asio/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/asio/port/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/osi/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/include/esp32/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/api/include/api", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/btc/profile/esp/blufi/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/btc/profile/esp/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/host/bluedroid/api/include/api", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/tinycrypt/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/storage", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/btc/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/common/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/client/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/server/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/api/core/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/api/models/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/api", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/cbor/port/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/unity/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/unity/unity/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/cmock/CMock/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/coap/port/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/coap/libcoap/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/nghttp/port/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/nghttp/nghttp2/lib/includes", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-tls", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-tls/esp-tls-crypto", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_adc_cal/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hid/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/tcp_transport/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_http_client/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_http_server/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_https_ota/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_https_server/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_lcd/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_lcd/interface", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protobuf-c/protobuf-c", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protocomm/include/common", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protocomm/include/security", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protocomm/include/transports", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mdns/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_local_ctrl/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/sdmmc/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_serial_slave_link/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_websocket_client/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/expat/expat/expat/lib", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/expat/port/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wear_levelling/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fatfs/diskio", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fatfs/vfs", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fatfs/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freemodbus/freemodbus/common/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/idf_test/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/idf_test/include/esp32", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/jsmn/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json/cJSON", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/libsodium/libsodium/src/libsodium/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/libsodium/port_include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mqtt/esp-mqtt/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/openssl/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/perfmon/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/spiffs/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/ulp/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wifi_provisioning/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/rmaker_common/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_diagnostics/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/rtc_store/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_insights/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json_parser/upstream/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json_parser/upstream", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json_generator/upstream", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_schedule/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp_secure_cert_mgr/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rainmaker/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/gpio_button/button/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/qrcode/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/ws2812_led", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_littlefs/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/tool", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/typedef", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/image", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/math", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/nn", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/layer", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/detect", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/model_zoo", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-sr/src/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-sr/esp-tts/esp_tts_chinese/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-sr/include/esp32", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32-camera/driver/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32-camera/conversions/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/dotprod/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/support/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/hann/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_harris/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_nuttall/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/nuttall/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/flat_top/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/iir/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/fir/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/add/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sub/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mul/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/addc/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mulc/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sqrt/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/matrix/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/fft/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/dct/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/conv/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/common/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf_imu13states/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fb_gfx/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/qio_qspi/include", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/cores/esp32", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/variants/wt32-eth01", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/ArduinoOTA/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/AsyncUDP/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/BluetoothSerial/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/DNSServer/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/EEPROM/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/ESP32/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/ESPmDNS/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/Ethernet/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/FFat/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/FS/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdate/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdateServer/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/I2S/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/Insights/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/LittleFS/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/NetBIOS/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/Preferences/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/RainMaker/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/SD/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/SD_MMC/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/SPI/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/SPIFFS/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/SimpleBLE/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/Ticker/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/USB/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/Update/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/WiFiClientSecure/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/WiFiProv/src", - "C:/Users/siwat/.platformio/packages/framework-arduinoespressif32/libraries/Wire/src", - "" - ], + "C_Cpp_Runner.includePaths": [], "C_Cpp_Runner.includeSearch": [ "*", "**/*" @@ -285,11 +56,11 @@ "C_Cpp_Runner.showCompilationTime": false, "C_Cpp_Runner.useLinkTimeOptimization": false, "C_Cpp_Runner.msvcSecureNoWarnings": false, + "C_Cpp.errorSquiggles": "disabled", "files.associations": { - "random": "cpp", - "*.tcc": "cpp", "array": "cpp", "atomic": "cpp", + "*.tcc": "cpp", "bitset": "cpp", "cctype": "cpp", "clocale": "cpp", @@ -316,6 +87,7 @@ "memory_resource": "cpp", "numeric": "cpp", "optional": "cpp", + "random": "cpp", "regex": "cpp", "string": "cpp", "string_view": "cpp", diff --git a/ise-display/ise-display-prod.HMI b/ise-display/ise-display-prod.HMI index 75f51bd..16c9582 100644 Binary files a/ise-display/ise-display-prod.HMI and b/ise-display/ise-display-prod.HMI differ diff --git a/platformio.ini b/platformio.ini index 10d4314..b8ee1dc 100644 --- a/platformio.ini +++ b/platformio.ini @@ -12,5 +12,8 @@ platform = espressif32 board = wt32-eth01 framework = arduino -lib_deps = siwats/ESPMegaPROR3@^2.2.3 +lib_deps = siwats/ESPMegaPROR3@^2.3.6 monitor_speed = 115200 +build_flags = -DCORE_DEBUG_LEVEL=0 +upload_port = COM32 +monitor_port = COM32 \ No newline at end of file diff --git a/src/IRcode.txt b/src/IRcode.txt new file mode 100644 index 0000000..f7aa5aa --- /dev/null +++ b/src/IRcode.txt @@ -0,0 +1,128 @@ +//dry +{5043,2130,381,1770,406,670,406,671,406,669,380,1771,381,695,407,669,406,670,407,669,380,1771,381,695,380,1771,381,1771,406,669,407,1745,380,1772,379,1772,380,1771,381,1771,406,670,380,1772,380,695,380,696,380,696,406,669,381,695,406,670,380,1771,381,695,406,670,380,1772,406,669,381,695,380,696,406,1745,380,696,380,696,405,670,407,670,406,669,380,696,407,669,380,695,381,695,380,695,381,695,381,695,380,696,407,669,380,1771,406,1745,408,1744,380,696,380,696,406,1745,381,695,380,29382,5043,2130,380,1771,407,669,380,695,407,669,381,1771,406,670,406,670,380,695,408,668,406,1745,407,669,380,1772,380,1772,406,669,406,1745,380,1772,405,1746,392,1759,407,1746,406,669,380,1772,379,696,380,696,379,697,380,696,405,670,380,696,405,1746,380,696,406,670,406,1746,379,696,406,670,404,672,405,671,406,669,380,696,379,697,379,696,406,670,379,1773,379,1772,406,670,404,672,379,696,406,1746,406,670,405,670,380,696,379,696,405,672,405,670,380,696,406,670,406,670,378,698,404,1747,405,671,404,672,378,697,405,1747,406,1745,379,1772,380,698,402,672,379,696,379,698,379,696,406,670,379,697,405,670,405,671,406,670,379,697,404,671,405,672,405,670,407,669,405,671,404,671,404,672,405,671,404,671,406,670,404,672,379,696,406,670,379,697,379,1773,378,1773,378,1773,378,1774,379,697,403,673,403,672,377,699,406,669,378,698,378,698,378,697,377,699,405,671,405,671,404,671,378,698,377,699,378,697,379,697,405,671,405,1747,406,669,379,697,405,671,405,671,378,697,405,671,405,671,378,697,405,671,405,671,382,694,379,697,406,669,380,696,378,701,375,698,380,696,406,669,379,696,380,697,404,672,405,671,378,697,405,671,378,698,377,698,379,1772,407,669,380,1772,404,1747,405,671,380,696,379,697,379,696,407} + +//fan_only auto +{5069,2104,406,1746,407,668,408,669,405,670,407,1745,407,668,381,695,381,695,406,670,380,1772,379,696,406,1745,381,1771,380,696,380,1772,379,1772,381,1770,406,1746,407,1745,380,696,406,1745,381,695,380,696,380,696,406,669,407,669,380,696,406,1746,402,673,380,696,406,1746,380,695,407,669,380,696,406,1745,406,670,407,670,379,696,406,670,380,695,407,669,406,669,408,669,406,670,380,695,380,696,407,669,380,695,405,671,407,1745,406,1746,379,1772,380,696,406,670,379,1772,380,696,380,29383,5068,2105,380,1771,407,669,380,696,406,669,380,1772,380,696,380,696,380,695,381,695,380,1771,381,696,380,1771,406,1745,381,695,381,1771,405,1747,379,1772,405,1747,380,1771,395,681,406,1745,381,695,407,669,407,669,380,696,379,696,407,669,380,1771,407,669,406,670,380,1772,406,669,381,695,406,670,380,695,381,695,407,669,407,669,380,696,406,670,380,1771,406,1746,405,670,381,696,405,670,405,1747,380,1771,406,669,408,669,407,668,407,669,380,696,380,696,380,695,380,696,381,695,380,1771,407,669,381,696,406,669,406,670,380,695,381,695,407,669,406,669,381,696,405,670,381,695,380,696,380,696,407,669,405,670,407,669,383,693,407,669,379,696,380,696,406,670,406,669,407,669,381,695,407,669,405,670,380,696,381,696,404,670,381,696,380,695,381,1771,406,1745,381,1770,408,1745,380,695,381,695,380,696,380,696,407,669,406,670,380,695,380,696,380,696,405,671,380,695,407,669,380,695,381,695,381,695,380,696,380,696,406,1745,407,669,380,696,380,696,406,669,381,695,380,696,380,695,406,670,406,670,406,670,380,696,405,670,381,695,380,696,380,696,407,669,380,695,406,670,407,669,407,669,380,695,381,696,406,669,407,669,380,696,380,695,406,1746,406,670,406,1745,406,1745,407,1745,381,695,381,1771,380,1771,407}, //AUTO +{5043,2130,380,1772,380,696,380,696,379,697,379,1771,381,695,381,696,379,696,406,670,380,1771,381,696,379,1771,381,1771,380,696,380,1771,381,1771,380,1772,380,1772,380,1771,380,696,380,1771,381,694,381,696,380,696,380,695,381,695,380,696,380,1772,380,695,380,697,379,1772,380,695,381,695,381,695,380,1772,380,696,380,696,379,696,380,696,380,696,380,696,379,696,380,696,380,695,381,696,380,696,380,696,379,695,381,695,381,1771,380,1771,381,1771,380,697,379,696,380,1771,381,694,381,29382,5044,2130,380,1771,380,697,379,696,380,696,380,1770,381,696,436,640,380,696,380,696,380,1770,381,695,407,1746,379,1771,381,696,380,1771,380,1772,380,1770,381,1772,380,1772,380,696,380,1771,380,696,380,696,380,696,380,697,378,695,381,696,380,1772,379,697,379,696,380,1772,380,696,379,696,380,696,380,696,380,696,379,696,380,696,380,695,381,695,380,1771,381,1772,380,695,380,696,380,696,380,1772,379,1772,380,696,380,696,380,696,379,696,380,696,380,696,380,696,379,696,381,695,380,1771,381,695,380,696,380,696,380,695,381,695,381,695,380,696,380,696,380,695,381,695,380,695,381,696,380,696,380,695,381,696,379,697,379,696,380,696,380,695,380,696,380,697,379,696,380,695,380,696,380,697,379,696,380,696,380,695,381,696,379,695,381,696,380,1771,380,1772,380,1772,379,1772,380,1772,380,696,379,1772,380,696,380,696,380,696,379,696,409,667,380,695,381,695,380,696,380,696,380,696,380,695,381,695,380,696,380,696,380,1771,380,696,380,696,406,669,381,695,380,696,380,695,381,696,380,696,379,696,380,696,380,696,379,696,406,671,379,696,405,671,380,696,380,695,380,696,380,697,379,696,380,695,380,696,380,696,380,696,380,696,379,697,407,1743,407,669,380,1772,407,1744,409,668,405,1746,406,670,380,695,380}, //HIGH +{5069,2105,405,1746,381,695,380,695,381,696,407,1745,379,696,380,696,380,696,380,696,380,1771,380,697,379,1771,406,1745,407,669,381,1771,380,1772,405,1746,380,1772,380,1772,379,696,380,1772,379,696,407,669,380,695,381,696,380,696,379,696,380,1771,381,696,380,695,380,1772,380,696,380,695,405,672,379,1771,381,695,380,695,407,670,380,696,404,670,381,696,380,696,380,697,404,670,406,670,380,696,406,669,381,696,380,695,380,1771,381,1772,379,1771,381,695,381,695,407,1744,381,695,381,29381,5069,2104,380,1772,380,696,406,670,380,696,379,1772,380,695,406,670,380,696,380,696,380,1772,406,668,406,1746,381,1771,380,696,380,1772,379,1772,380,1771,381,1771,406,1746,406,670,379,1772,380,695,407,669,380,696,380,696,380,696,405,671,379,1772,380,696,380,696,406,1745,380,696,405,671,404,671,380,696,380,696,405,671,380,695,407,669,380,696,380,1771,380,1772,380,695,381,694,407,670,380,1771,381,1771,380,696,406,669,407,669,406,670,380,696,380,696,380,695,406,671,406,669,380,1771,380,696,380,696,380,696,406,670,405,671,379,697,379,697,379,695,406,670,407,669,380,696,380,696,379,696,380,696,380,695,381,695,407,670,379,696,380,696,406,669,406,670,380,696,380,696,380,696,380,695,406,671,405,670,406,669,381,696,379,697,405,670,405,1747,379,1772,405,1746,406,1746,380,1771,395,1757,380,696,380,697,379,695,407,669,380,696,405,671,380,695,380,696,380,696,406,670,406,670,405,670,380,696,408,668,404,671,381,1771,380,697,394,680,380,696,406,670,380,696,380,696,407,668,407,669,380,696,380,695,380,696,380,696,405,671,380,695,381,696,406,669,380,697,379,696,379,696,380,696,380,697,379,696,406,669,408,668,380,695,381,695,380,1772,380,696,380,1772,379,1772,406,670,405,670,381,695,380,696,380}, //MID +{5039,2131,406,1745,380,696,379,697,378,698,378,1772,380,697,379,697,379,696,379,697,404,1748,378,698,379,1771,380,1772,379,698,378,1772,380,1772,379,1773,379,1772,383,1768,380,697,379,1772,379,697,379,696,380,697,379,696,406,671,378,696,380,1773,378,697,379,698,378,1772,379,698,379,696,379,697,379,1772,380,696,379,697,379,697,406,669,380,696,379,697,379,696,380,696,380,696,379,697,379,697,379,696,379,697,380,696,379,1773,379,1772,379,1772,406,670,405,671,379,1772,380,696,380,29382,5043,2130,379,1773,405,670,380,695,381,696,379,1772,379,697,380,696,379,697,379,697,379,1772,405,671,379,1772,380,1771,380,697,379,1772,380,1772,379,1773,379,1772,379,1773,379,696,405,1746,382,694,380,696,379,696,380,696,380,696,380,695,381,1772,379,696,380,696,379,1773,379,696,380,696,380,696,405,671,379,696,380,696,380,696,406,671,378,697,379,1772,380,1772,379,696,380,696,380,696,405,1746,380,1772,379,697,379,697,379,697,379,696,380,696,379,697,379,697,379,696,380,696,379,1773,379,696,379,698,378,696,406,671,379,696,380,696,379,697,379,697,405,670,380,696,379,697,379,697,379,697,406,670,404,671,379,697,378,697,380,696,379,697,379,697,379,696,380,697,379,696,380,696,379,697,379,695,380,697,405,671,379,696,380,696,379,697,379,1773,379,1772,379,1772,380,1772,379,1773,379,696,380,696,379,697,379,697,379,696,380,696,405,671,379,697,379,696,380,696,379,697,379,697,404,672,379,696,379,698,379,696,379,1772,380,696,380,696,379,698,404,670,380,696,379,696,380,697,379,696,379,697,379,697,380,696,379,696,380,697,405,670,405,671,379,697,379,696,380,696,379,696,380,697,378,698,379,697,378,697,379,697,379,696,405,671,379,1772,380,697,379,1772,379,1772,380,696,380,1771,380,1772,379,1773,379} //LOW + + + +//cool auto + +{5043,2131,404,1747,379,697,379,697,379,695,407,1746,379,698,378,697,379,697,379,696,406,1745,380,697,380,1772,379,1772,379,697,379,1773,379,1772,379,1773,379,1772,406,1746,379,697,379,1772,380,695,381,696,405,670,406,671,379,696,380,697,379,1772,405,671,379,696,380,1771,407,670,379,696,380,696,380,1772,405,670,405,672,379,697,379,695,380,697,379,697,379,696,380,696,379,697,380,696,379,696,380,696,380,696,380,696,380,1772,379,1772,380,1772,379,696,380,697,379,1772,379,697,379,29383,5043,2130,380,1772,380,696,405,671,379,697,405,1746,380,696,380,696,405,670,406,670,380,1772,380,696,405,1746,405,1747,405,671,379,1773,405,1746,379,1773,379,1773,379,1773,379,695,380,1772,407,669,379,697,379,696,407,670,379,696,380,696,379,1773,405,671,379,695,380,1773,379,697,405,670,380,696,380,696,405,671,379,697,379,697,379,696,380,696,379,1772,380,1772,379,696,405,671,380,1772,406,1746,380,1772,379,696,380,696,379,697,379,697,379,696,380,696,380,695,381,695,380,697,405,1746,380,696,379,697,406,670,379,697,378,1773,379,697,405,670,380,696,380,696,380,696,380,696,379,696,380,696,380,696,380,695,380,696,380,696,380,697,379,696,405,670,406,671,382,693,405,671,380,695,408,1748,401,1747,379,1773,379,696,406,670,380,695,381,697,378,1773,405,1746,379,1772,380,1772,380,696,379,696,380,697,379,697,379,696,380,697,405,670,379,696,380,696,380,697,379,696,379,697,405,671,379,696,380,696,381,695,379,697,379,1772,380,696,379,696,380,697,379,696,380,696,380,696,405,670,380,697,379,697,379,696,380,696,380,695,380,696,380,697,404,671,406,671,378,697,379,696,380,696,380,696,380,696,379,697,406,669,407,669,380,696,380,696,404,1748,379,1772,380,697,378,1773,379,1772,380,697,378,696,380,696,380}, //16C +{5043,2130,405,1747,380,696,380,696,406,670,384,1767,380,696,380,695,380,702,374,697,405,1746,407,669,405,1747,406,1745,380,696,379,1773,379,1772,380,1772,379,1772,380,1772,379,697,379,1772,380,696,406,670,405,671,406,670,379,696,406,671,379,1771,406,670,380,697,406,1745,405,671,379,697,379,696,405,1747,380,696,380,696,379,696,406,670,380,696,380,696,379,697,380,695,380,696,380,696,379,697,379,697,379,696,380,696,405,1746,406,1746,380,1772,405,671,379,696,382,1770,380,696,379,29384,5042,2130,380,1772,407,670,406,669,380,696,379,1773,379,697,406,669,380,695,381,695,385,1767,406,670,380,1777,402,1744,407,669,380,1772,379,1772,401,1750,381,1771,380,1772,406,670,380,1771,380,697,379,696,406,670,379,697,379,696,380,696,405,1747,406,670,379,696,406,1746,380,696,379,697,379,696,380,696,380,696,380,695,381,695,407,669,380,696,380,1771,380,1772,380,696,380,696,379,1772,380,1772,380,1772,379,697,379,697,404,672,378,696,380,697,405,670,380,696,380,696,379,697,380,1771,380,697,381,694,380,696,380,695,380,1775,377,696,379,696,380,696,380,696,380,696,380,696,406,669,380,697,379,696,408,668,404,672,379,697,406,669,380,695,381,696,380,695,405,672,379,696,380,696,380,696,406,669,381,696,379,1772,380,696,379,697,405,670,406,1746,380,1771,406,1746,380,1771,380,696,380,697,379,696,380,696,379,697,380,695,380,697,379,696,406,670,379,697,379,696,380,696,406,670,380,696,379,697,379,697,379,697,379,1771,380,696,380,696,380,697,379,696,380,696,379,697,379,696,380,696,405,671,379,696,380,696,407,670,405,670,407,669,379,697,405,670,380,696,380,696,405,670,381,696,379,696,380,696,380,696,405,670,406,670,380,696,380,1771,381,696,379,1771,381,1772,409,1743,379,696,380,696,406,670,379}, //17C +{5069,2104,407,1745,380,696,380,696,380,695,380,1772,380,696,380,696,379,696,380,696,380,1772,380,696,379,1772,380,1771,381,696,405,1746,380,1771,381,1771,380,1772,380,1771,380,696,380,1772,380,695,406,670,408,668,380,696,380,695,380,697,406,1745,380,696,380,696,379,1772,407,669,405,671,380,695,406,1746,380,696,405,671,380,695,380,697,380,695,380,695,381,696,379,696,380,696,380,696,406,670,380,696,388,687,380,696,380,1771,381,1771,380,1772,380,696,379,697,405,1746,380,696,380,29361,5064,2130,406,1746,380,696,379,697,405,670,380,1772,380,695,380,696,380,696,380,696,380,1771,380,696,380,1771,381,1771,380,696,406,1745,381,1771,380,1771,381,1771,380,1772,380,696,406,1745,407,669,381,694,381,696,380,695,406,670,380,696,405,1746,380,696,380,696,407,1745,407,669,405,671,379,696,380,695,381,696,380,695,380,696,380,696,406,670,406,1745,380,1772,405,671,379,696,380,1771,381,1772,380,1771,380,696,406,670,384,691,381,695,380,696,380,696,380,695,381,696,379,696,380,1772,406,669,407,669,380,696,380,696,380,1772,406,669,407,669,407,669,380,696,405,671,405,670,380,696,380,696,380,695,408,668,406,669,381,695,380,697,379,696,380,696,407,669,405,671,380,695,408,668,405,1746,381,695,380,695,381,1772,380,696,406,669,380,696,380,1771,406,1746,380,1771,381,1771,406,670,380,696,406,670,405,671,380,695,381,695,407,669,379,697,405,670,380,696,406,670,380,696,407,668,380,696,407,669,405,671,405,670,381,1771,407,673,376,696,380,695,381,695,406,670,380,696,407,669,405,670,381,695,406,670,405,671,406,670,407,668,407,669,380,696,406,670,405,671,380,695,406,670,380,696,405,670,381,696,406,668,407,670,380,695,381,695,380,1772,380,1771,408,1744,407,1745,380,1771,380,696,380,696,380,695,407}, //18C +{5069,2105,380,1771,380,696,406,670,379,697,404,1747,380,696,407,669,380,696,406,670,379,1772,380,696,406,1745,380,1772,406,670,406,1745,406,1746,406,1746,379,1773,379,1772,380,696,379,1773,404,671,380,696,386,690,405,670,405,672,404,671,379,1773,379,696,407,670,379,1771,406,671,406,669,406,670,380,1773,378,696,380,696,380,696,379,697,380,696,379,696,405,670,406,671,379,697,379,696,380,696,380,696,406,670,379,696,380,1772,380,1772,380,1771,380,696,380,695,380,1773,379,697,379,29360,5065,2130,380,1773,379,697,379,697,379,696,379,1771,381,696,380,696,405,672,378,697,379,1772,379,697,379,1772,380,1772,405,672,378,1772,380,1772,380,1771,380,1772,380,1772,379,696,407,1745,380,696,380,697,404,670,380,696,380,697,379,696,379,1773,378,697,380,697,378,1772,407,670,379,697,379,697,378,697,379,697,404,672,381,694,380,696,405,670,380,1775,377,1771,380,697,379,696,380,1772,405,1746,380,1772,380,696,379,697,404,672,379,697,405,671,379,696,379,697,379,696,380,697,379,1772,379,697,379,696,380,697,406,668,380,1772,380,697,379,696,380,696,379,697,379,696,380,697,378,697,380,696,379,696,380,697,379,696,379,697,380,696,379,698,378,697,378,697,380,695,380,696,380,697,379,696,379,1773,379,697,379,1772,379,697,379,697,379,697,379,1772,379,1773,379,1773,379,1772,379,697,379,697,404,672,405,670,379,697,379,697,379,697,378,697,406,670,379,696,380,696,380,696,380,696,379,696,380,696,406,670,379,697,379,1773,379,697,404,672,378,697,379,697,379,697,379,696,380,695,380,696,380,697,379,697,379,695,380,696,380,696,380,697,380,695,379,696,380,697,379,697,379,696,380,696,379,697,379,697,379,696,380,696,407,669,379,697,379,1772,380,696,379,696,383,693,380,695,381,1772,380,695,406,670,380}, //19C +{5087,2108,380,1772,406,670,379,696,380,696,380,1772,379,697,379,697,379,696,407,669,379,1772,380,697,379,1773,378,1772,380,696,380,1771,380,1772,380,1772,379,1772,407,1745,380,695,380,1773,379,696,380,696,379,697,379,696,406,671,379,696,407,1745,405,671,379,697,379,1772,379,697,379,696,380,697,379,1772,379,697,379,697,379,697,378,697,379,697,379,696,379,696,381,696,379,697,406,669,380,697,379,697,382,693,380,695,380,1773,378,1773,379,1772,380,696,406,671,378,1772,380,697,379,29360,5065,2130,380,1773,379,696,405,670,380,697,379,1772,380,696,380,695,380,697,379,696,406,1747,378,697,379,1773,378,1773,379,697,379,1772,405,1747,379,1772,380,1772,379,1773,379,696,380,1772,379,697,378,697,406,670,379,697,379,696,380,696,380,1771,380,696,380,696,380,1772,380,696,379,697,379,696,380,696,380,696,379,697,379,697,379,697,379,696,379,1773,379,1773,404,671,379,697,379,1772,405,1747,380,1771,380,696,380,697,384,692,378,697,379,697,379,697,379,696,379,697,379,697,379,1772,379,697,379,697,379,696,380,696,380,1772,379,696,380,696,380,697,378,697,379,697,379,697,379,697,378,697,405,671,379,698,378,697,379,696,379,696,380,697,379,697,379,696,379,697,379,697,379,697,379,1772,379,1773,379,697,404,1747,379,697,379,696,379,698,404,1747,379,1773,378,1772,380,1773,379,697,433,643,379,696,379,697,379,696,380,696,379,696,380,697,379,697,379,696,379,697,405,671,379,696,380,697,383,693,404,671,379,697,379,1777,375,697,378,697,405,671,379,697,379,697,403,672,379,696,380,697,379,696,379,697,379,697,379,697,379,697,379,696,406,670,379,697,379,696,380,697,378,698,379,696,379,697,379,697,379,697,378,697,379,697,379,696,380,1772,379,1773,379,697,378,697,379,697,379,1772,380,697,379,696,380}, //20C +{5043,2130,407,1745,407,669,379,696,381,695,405,1747,380,695,406,670,406,670,380,696,406,1745,380,697,405,1745,406,1746,406,670,406,1746,405,1746,406,1745,407,1745,407,1745,390,686,380,1772,405,670,406,670,380,695,380,696,380,697,405,670,406,1745,408,668,405,670,407,1745,393,683,406,670,380,696,406,1745,380,696,406,670,405,670,381,696,379,696,380,696,406,669,408,669,406,670,379,696,380,697,379,696,406,670,405,670,384,1768,406,1746,380,1770,407,670,405,670,406,1746,380,696,405,29336,5064,2130,380,1772,406,670,405,671,395,680,380,1772,406,670,380,696,380,696,379,696,380,1772,405,671,406,1746,379,1772,379,696,380,1771,381,1772,405,1746,380,1771,380,1772,380,697,405,1745,380,696,380,696,380,696,380,696,407,669,379,696,380,1771,381,695,380,696,380,1771,380,696,380,697,379,696,380,696,405,671,379,697,379,696,380,696,406,669,380,1772,406,1746,382,694,405,671,379,1772,380,1771,381,1771,380,697,405,669,381,695,405,672,405,671,379,696,405,671,405,670,380,696,380,1771,381,696,379,695,381,696,380,695,380,1773,405,670,380,696,406,669,407,670,379,696,380,696,380,696,380,696,379,696,380,696,380,697,405,670,406,669,406,671,379,695,381,696,380,696,379,697,379,696,380,696,380,695,380,1771,381,1771,406,671,379,696,380,696,380,1771,380,1772,380,1771,380,1772,380,696,405,670,381,696,405,670,380,697,406,669,380,695,381,695,380,697,379,696,380,696,379,697,379,697,406,669,407,668,381,696,405,670,380,1772,380,696,380,696,379,697,405,670,380,696,379,697,379,696,380,696,380,696,380,696,404,672,379,697,406,669,380,695,407,670,379,696,406,670,380,695,381,696,384,692,404,671,407,669,380,695,406,671,405,670,380,696,380,1771,380,696,407,1745,380,696,379,697,405,1746,380,696,407,669,405}, //21C +{5042,2131,379,1773,378,699,377,697,402,674,379,1773,381,694,379,698,378,697,379,697,379,1772,406,670,379,1772,379,1773,379,697,379,1772,379,1773,378,1774,378,1774,378,1772,380,697,378,1773,379,698,378,697,379,697,379,697,378,698,405,670,379,1772,379,698,378,697,379,1773,378,698,378,697,379,697,379,1773,405,670,379,697,379,697,379,697,379,697,378,697,379,697,379,697,405,670,380,697,378,697,379,696,380,697,378,698,378,1774,378,1772,405,1748,378,697,379,697,378,1773,380,697,378,29362,5090,2103,381,1771,380,696,380,696,384,691,381,1771,380,696,405,671,380,696,379,696,380,1772,384,691,381,1771,406,1745,407,669,406,1746,407,1744,407,1745,406,1746,406,1745,406,669,407,1745,407,670,404,671,407,669,405,670,381,695,406,670,406,1746,405,670,380,696,380,1772,380,695,407,669,406,670,406,670,405,671,406,669,406,670,384,692,380,695,381,1770,406,1746,380,696,380,697,406,1744,407,1745,406,1746,406,670,379,696,398,678,379,698,377,698,378,697,379,697,378,698,378,698,377,1774,377,699,351,726,349,726,350,726,349,1802,349,728,348,731,344,728,348,728,347,729,371,704,372,705,372,702,373,704,373,702,373,703,373,702,374,702,373,703,373,703,374,701,374,703,373,702,373,703,373,1778,374,702,373,1778,373,1779,373,703,372,704,371,706,369,1781,371,1780,347,1805,347,1804,347,730,346,729,347,729,347,731,345,728,348,728,347,729,347,729,347,728,373,703,373,703,373,703,374,701,374,702,374,702,375,701,375,700,376,1776,376,700,376,699,377,699,377,699,377,698,378,698,377,698,384,693,377,698,378,697,405,671,389,692,374,697,404,672,404,671,404,672,404,672,403,673,403,672,378,698,404,672,403,673,403,673,377,698,403,673,403,673,403,1748,403,1749,402,1749,377,699,402,674,377,1775,401,675,376,699,376}, //22C +{5043,2131,379,1772,380,697,379,697,378,697,379,1772,380,697,378,697,379,697,379,697,379,1772,379,697,379,1772,380,1772,379,698,378,1772,406,1746,379,1772,380,1772,379,1772,380,697,379,1772,379,698,378,698,378,697,379,697,379,696,379,697,379,1772,380,696,380,697,382,1768,380,697,379,696,379,697,379,1772,380,696,406,670,380,695,380,697,379,696,380,696,379,696,380,697,379,696,379,696,381,696,379,697,379,697,379,696,379,1772,380,1773,379,1773,404,671,379,697,379,1773,378,696,380,29382,5043,2131,404,1748,379,696,380,697,379,696,405,1746,380,696,379,697,379,697,379,697,379,1772,379,697,379,1772,380,1772,379,697,379,1772,380,1772,379,1773,379,1772,379,1772,380,696,380,1772,379,697,379,696,380,697,379,697,379,695,380,697,379,1771,381,696,406,669,380,1772,379,698,378,697,379,697,379,697,379,696,379,697,379,697,379,696,380,695,380,1773,379,1771,381,695,381,696,379,1772,380,1772,379,1773,378,697,380,697,378,697,379,696,380,697,379,696,379,697,379,697,379,697,379,1772,379,697,379,697,379,697,379,697,378,1773,379,696,379,697,406,671,378,697,379,697,379,696,380,697,378,697,379,697,379,697,379,696,379,697,379,696,380,696,380,697,378,698,378,697,379,696,380,696,380,696,380,1772,379,1773,379,1773,404,671,379,696,380,697,378,1773,379,1772,380,1772,379,1772,380,695,381,696,405,671,379,697,379,696,380,696,380,696,379,697,379,696,379,697,379,698,378,697,378,697,380,697,378,697,379,697,379,697,379,1772,379,698,378,697,379,697,378,698,379,696,379,698,378,697,379,696,406,671,379,697,378,697,379,697,379,697,379,696,379,696,380,697,379,697,378,697,379,696,380,697,379,696,380,696,380,696,379,697,380,696,379,697,379,1771,380,696,380,697,379,1772,379,697,379,1772,407,670,379,696,405}, //23C +{5034,2137,375,1778,398,679,397,677,373,703,373,1780,373,703,371,703,372,706,397,705,345,1779,373,705,369,1807,344,1781,399,678,370,1781,397,1754,371,1781,380,1770,372,1808,344,706,370,1780,371,707,368,733,343,733,371,678,371,703,372,732,370,1781,370,705,346,731,369,1759,368,731,370,706,344,732,344,1808,343,732,344,707,394,707,345,731,370,680,396,705,344,732,343,706,370,733,370,679,370,706,370,733,343,731,345,731,371,1781,344,1808,342,1783,394,709,342,733,343,1808,344,732,344,29393,5032,2140,397,1781,343,709,368,732,342,734,341,1810,343,733,341,735,343,733,367,710,340,1839,311,735,344,1781,369,1810,342,733,370,1783,365,1785,343,1811,341,1809,336,1789,368,735,341,1809,342,734,341,737,367,708,368,708,341,735,342,732,369,1784,341,734,340,736,342,1810,339,737,368,706,343,734,342,732,342,735,343,733,342,734,340,735,342,735,342,1808,343,1808,370,710,341,704,372,1807,342,1810,371,1780,345,704,371,732,343,733,344,731,345,731,342,734,371,677,372,731,343,733,370,1754,398,679,371,703,372,704,372,704,373,1778,372,703,374,703,399,676,373,704,397,678,372,703,403,673,374,702,400,675,399,677,400,676,400,675,399,677,401,675,427,649,374,701,401,675,401,674,402,675,402,1750,401,1750,401,1751,404,1747,403,674,401,673,376,700,402,1750,401,1750,375,1777,375,1777,374,701,375,701,403,673,402,673,402,674,404,672,376,700,403,673,403,672,403,673,405,671,403,672,406,670,377,699,376,699,404,672,377,699,433,1719,404,672,403,673,375,700,404,672,404,672,406,670,402,673,405,671,405,671,403,672,433,643,430,647,402,673,406,669,406,671,404,671,406,670,406,670,404,671,379,698,433,642,403,673,402,674,377,698,378,698,404,672,403,1748,406,1746,403,673,406,1745,377,700,377,1774,406,670,377,698,405}, //24C +{5069,2103,406,1746,406,669,407,669,407,669,380,1772,407,668,381,696,380,695,380,696,380,1771,406,670,381,1771,406,1745,380,696,385,1767,380,1771,381,1771,406,1745,381,1771,407,669,406,1745,380,696,406,670,380,696,406,670,406,670,381,694,407,1745,400,676,405,671,405,1746,380,696,380,695,407,670,379,1772,407,668,381,696,379,696,407,670,406,669,380,696,380,696,406,672,402,671,384,692,407,669,382,694,405,670,406,669,407,1745,406,1746,380,1772,405,670,406,670,380,1772,380,695,380,29383,5043,2130,407,1744,406,671,379,696,407,668,381,1772,380,696,379,697,406,669,380,696,380,1772,405,670,406,1746,405,1747,379,697,404,1746,406,1746,380,1772,380,1771,380,1772,380,696,380,1771,406,671,405,671,379,695,380,697,379,697,405,670,380,1772,379,696,380,697,404,1747,380,695,380,696,406,670,380,696,405,671,407,669,405,670,380,695,380,696,380,1772,405,1747,405,671,406,669,380,1772,406,1750,375,1772,406,670,405,670,380,696,406,670,380,696,380,695,380,697,379,696,380,696,406,1746,405,670,407,670,379,696,406,669,380,1772,380,696,406,671,404,670,380,696,380,696,380,696,386,690,379,696,407,670,405,670,380,695,406,670,380,696,396,680,380,696,380,696,405,671,405,670,380,696,380,696,405,670,380,696,380,696,380,1771,380,696,380,696,405,1747,379,1772,380,1771,407,1745,380,696,380,696,380,696,407,668,407,669,380,696,406,670,405,670,380,696,380,696,380,696,406,673,402,670,380,696,405,671,406,670,380,695,380,1772,406,670,405,671,380,695,380,696,380,696,405,671,379,697,407,668,380,696,393,683,380,695,380,697,379,696,380,696,380,696,379,697,379,696,380,696,380,695,380,697,379,696,380,696,380,696,379,697,379,696,380,696,380,1772,380,695,406,1746,380,1771,380,697,379,1772,380,696,379,697,379}, //2C5C +{5043,2131,380,1772,379,696,380,696,379,698,378,1772,380,696,380,696,379,697,379,696,380,1772,379,697,379,1773,379,1772,380,696,379,1772,388,1763,381,1771,380,1772,379,1773,379,697,379,1772,379,697,405,670,380,696,380,696,405,671,380,696,383,1768,380,696,380,696,379,1772,380,696,379,697,379,697,379,1772,407,669,380,696,379,696,380,696,407,670,378,697,379,697,380,695,379,697,379,697,379,697,405,671,379,697,379,696,379,1773,379,1772,379,1773,379,696,380,697,379,1772,379,697,379,29383,5043,2130,380,1771,380,696,379,697,379,697,379,1772,380,696,379,697,380,696,379,697,379,1772,379,696,380,1772,380,1772,379,697,379,1772,379,1773,380,1771,380,1772,380,1771,381,695,379,1772,406,670,380,696,380,695,380,697,379,697,379,697,403,1748,379,697,380,696,406,1745,378,698,380,696,379,696,380,697,404,670,381,696,379,697,379,696,380,696,379,1772,380,1772,380,696,379,697,379,1772,407,1745,380,1771,380,696,406,669,407,669,381,695,380,695,381,696,405,671,379,696,380,696,406,1746,380,695,406,671,379,695,381,695,381,1771,381,695,380,695,380,697,380,695,380,696,380,696,380,695,381,695,380,696,380,696,406,670,380,695,407,669,381,695,402,674,380,696,406,669,381,696,405,670,380,1771,406,669,382,695,406,670,380,1771,381,695,380,695,407,1745,380,1771,407,1745,406,1746,380,695,381,695,406,670,406,669,381,696,406,669,380,696,407,669,406,669,407,669,406,670,407,669,405,670,381,695,406,670,407,669,406,670,406,1745,406,670,379,697,380,695,381,695,406,670,380,696,393,682,380,696,380,696,380,696,380,696,404,671,380,696,382,694,379,697,379,696,380,696,405,671,379,697,379,696,380,696,379,697,378,698,377,699,378,698,377,699,376,1775,350,1802,350,1801,350,1801,350,726,349,1803,349,727,374,702,372}, //26C +{5039,2132,379,1772,379,697,379,696,379,697,379,1772,379,697,379,697,379,696,380,696,379,1773,379,697,379,1772,379,1772,380,697,379,1772,379,1773,379,1772,379,1773,379,1772,380,696,380,1772,379,696,380,696,380,696,380,696,380,696,379,696,380,1772,379,697,379,697,379,1772,380,696,379,697,379,697,379,1772,380,696,379,696,380,696,379,697,380,695,380,696,380,696,379,696,380,696,380,696,380,695,381,696,379,696,380,696,379,1772,380,1771,380,1772,380,696,379,697,379,1772,379,697,379,29381,5042,2131,379,1773,378,697,433,643,432,644,378,1773,432,644,433,642,434,643,431,644,379,1772,435,641,433,1719,432,1719,433,643,434,1717,433,1719,433,1718,379,1773,433,1718,378,698,378,1773,379,698,432,644,431,644,432,644,433,643,433,642,433,1718,432,644,432,644,432,1719,433,643,433,643,432,644,434,642,433,642,432,644,434,642,431,645,433,643,401,1749,434,1718,432,644,430,646,432,1719,378,1773,432,1720,433,642,432,644,433,643,433,643,432,644,433,643,431,644,378,698,432,644,432,1719,432,643,462,614,379,697,433,643,433,1718,434,642,378,698,433,643,432,643,433,643,433,643,432,644,431,644,433,643,433,643,378,698,431,645,433,642,378,698,432,644,432,643,432,645,432,643,433,642,404,673,432,1719,433,643,432,643,432,1719,434,643,432,644,432,1719,378,1773,379,1773,378,1773,379,697,433,643,434,642,431,644,432,644,433,643,433,642,430,646,379,697,432,644,432,643,434,642,433,643,432,644,432,643,434,642,431,644,433,1719,433,643,378,699,431,644,432,643,433,644,429,645,434,642,432,644,433,643,433,643,431,645,434,641,432,644,431,645,378,698,432,643,433,642,434,642,433,643,379,697,433,642,434,643,432,643,432,644,431,645,431,645,431,1720,432,643,433,643,433,643,431,1720,379,1773,433,643,431,645,430}, //27C +{5043,2130,405,1746,381,695,380,696,380,696,380,1771,380,697,379,696,380,696,380,695,380,1772,380,696,405,1747,379,1772,380,695,381,1771,406,1745,381,1772,379,1772,380,1771,380,697,379,1772,380,695,381,696,379,696,409,668,379,696,380,695,407,1745,405,672,379,696,380,1771,380,696,380,696,380,695,381,1771,380,697,404,671,380,696,380,695,380,696,380,695,381,696,380,696,379,696,380,696,380,695,381,695,380,697,379,696,380,1771,381,1771,380,1772,379,697,379,696,380,1771,381,696,405,29356,5044,2130,380,1771,381,695,380,695,381,696,380,1772,405,670,380,695,381,696,379,696,380,1771,435,642,380,1771,380,1772,380,696,379,1772,380,1771,381,1772,404,1746,381,1772,380,696,379,1772,380,696,380,696,379,696,380,695,381,696,380,695,381,1771,380,696,380,695,406,1745,381,696,380,695,381,696,379,696,380,696,380,696,380,696,379,697,379,695,381,1772,380,1771,380,696,380,696,380,1772,379,1772,380,1771,380,697,379,696,380,695,381,695,406,670,407,669,380,696,380,696,380,695,380,1772,380,695,381,696,379,697,379,696,380,1772,380,696,380,695,380,696,380,697,379,695,380,697,379,696,380,695,408,669,380,696,379,696,380,696,380,696,379,697,379,696,380,696,380,696,380,696,379,696,380,1771,381,1771,380,697,379,696,380,1771,380,696,406,670,380,1771,380,1772,380,1772,380,1771,380,696,380,696,380,696,380,695,381,695,380,696,380,696,380,695,380,696,380,696,380,696,380,695,381,696,379,696,380,696,380,696,380,695,380,1771,381,696,406,669,380,697,379,696,380,696,380,695,381,696,379,696,380,696,407,669,380,696,380,695,380,696,405,671,380,696,435,640,380,695,381,696,380,695,380,696,380,696,380,696,406,669,381,695,380,697,379,696,380,1771,380,1772,380,696,432,644,380,1770,381,1771,381,694,381,696,380}, //28C +{5070,2104,407,1745,379,696,379,697,379,697,378,1774,378,698,378,696,407,671,377,697,434,1719,378,697,379,1773,379,1772,378,698,379,1773,378,1773,379,1772,379,1773,379,1772,379,698,378,1773,379,697,379,697,378,698,378,697,379,697,379,697,378,1773,380,696,378,699,378,1772,379,697,379,697,379,697,379,1772,379,697,379,697,378,697,379,698,378,697,378,698,378,697,379,697,379,697,379,697,379,696,380,697,379,697,378,696,380,1772,380,1772,405,1746,406,670,380,696,380,1772,406,669,380,29383,5042,2131,379,1772,380,696,405,671,380,695,381,1771,380,696,380,696,379,696,406,670,380,1772,405,670,381,1771,406,1746,380,695,380,1772,380,1772,405,1746,380,1771,380,1772,380,695,381,1771,380,697,378,697,380,696,379,696,381,696,379,696,380,1771,381,696,379,696,380,1772,379,697,379,696,380,696,406,670,380,696,379,696,380,696,380,696,379,697,406,1745,380,1771,380,697,379,700,376,1772,380,1771,380,1772,406,670,380,696,379,696,380,696,380,696,406,669,381,696,379,696,407,669,380,1771,381,695,380,696,379,697,380,696,379,1772,380,696,380,696,380,696,379,696,380,696,380,696,380,696,380,695,380,696,380,696,380,695,380,697,379,696,380,696,380,696,380,696,379,696,380,696,380,696,380,696,380,696,379,1772,380,695,380,1772,380,696,380,696,379,1772,380,1772,380,1772,379,1772,380,696,405,671,405,670,406,670,380,696,380,696,379,699,404,669,380,695,380,697,380,695,381,695,407,670,379,696,379,696,380,696,380,696,380,1772,379,697,379,696,380,696,380,696,380,695,407,670,379,697,379,696,380,696,380,696,379,696,380,696,380,696,379,696,380,697,379,696,380,696,380,695,380,696,380,696,380,696,380,695,380,696,381,695,380,696,380,696,379,1772,380,696,380,1771,380,697,379,1772,380,1771,380,697,379,696,380}, //29C +{5042,2131,384,1768,405,670,380,695,381,696,380,1771,380,696,406,669,380,697,405,670,406,1745,406,671,379,1771,381,1772,380,696,380,1770,407,1745,407,1745,406,1746,380,1771,407,669,380,1772,380,696,405,670,383,693,380,696,405,670,406,670,406,1746,380,696,405,671,379,1771,407,670,407,669,405,670,380,1771,381,696,380,695,380,696,380,695,381,696,406,670,379,696,380,695,381,696,380,696,405,670,405,672,379,696,380,696,405,1746,380,1772,379,1773,379,697,379,696,406,1746,405,671,406,29355,5044,2129,381,1771,406,670,405,671,380,695,380,1771,381,695,381,695,380,697,388,687,380,1771,381,696,379,1771,381,1771,380,696,380,1772,380,1771,380,1772,380,1771,406,1746,407,669,380,1772,380,696,379,697,379,696,380,696,379,696,407,669,380,1772,403,672,380,696,380,1771,380,695,407,670,380,696,380,696,405,670,381,696,379,696,382,694,405,671,406,1745,380,1772,405,670,381,695,407,1745,406,1746,405,1745,381,696,380,696,379,697,380,695,406,670,380,695,406,670,380,696,380,696,380,1772,379,697,379,696,407,669,380,696,379,1772,380,696,380,696,380,695,406,670,380,695,381,695,381,696,379,697,406,669,380,696,407,669,379,696,380,696,380,696,380,695,406,671,379,697,383,691,381,696,380,1771,380,697,379,1772,384,692,406,1744,381,695,408,668,380,1772,405,1746,381,1771,380,1772,379,697,379,697,379,697,379,696,380,696,379,696,380,696,380,696,380,695,407,669,380,697,406,670,379,696,405,671,379,696,380,696,380,697,379,1772,405,671,406,669,380,696,380,695,381,695,380,696,380,696,380,696,380,695,380,696,380,696,380,696,379,696,380,697,379,696,380,696,380,696,379,695,381,696,380,696,380,696,407,669,379,696,380,696,380,696,380,696,407,1744,380,1772,380,1772,379,696,405,1746,380,1772,405,672,379,700,375}, //30C +{5043,2131,379,1772,380,696,379,697,406,670,379,1773,379,696,379,696,380,696,380,696,380,1771,380,697,379,1771,381,1771,380,696,380,1772,405,1746,380,1771,407,1746,381,1770,406,670,379,1772,406,670,380,696,380,696,379,697,379,696,380,697,405,1746,379,697,379,697,404,1747,379,697,379,697,379,696,380,1772,379,697,379,697,405,669,381,696,379,697,379,697,379,696,380,696,380,695,380,697,379,697,405,670,380,696,379,697,379,1772,380,1772,379,1772,380,696,379,698,378,1773,379,697,378,29383,5042,2131,380,1771,380,697,379,696,380,696,380,1772,379,696,380,696,403,674,378,697,379,1772,380,696,380,1772,379,1773,379,696,380,1772,379,1773,379,1772,379,1772,380,1773,378,696,380,1772,380,697,378,696,406,671,379,696,380,696,380,695,380,1772,380,696,380,696,380,1771,405,671,380,696,380,696,405,671,379,696,405,671,380,696,379,697,379,697,379,1773,379,1772,381,695,379,696,406,1746,379,1772,380,1772,379,697,379,696,380,697,378,697,379,696,380,696,380,696,379,696,407,669,405,1747,380,696,380,696,379,696,380,697,379,1772,407,668,404,672,380,696,380,696,380,696,379,697,379,697,379,697,379,696,379,696,380,697,379,697,379,697,378,697,379,697,379,696,405,672,378,697,379,697,406,670,379,1771,380,1773,405,671,379,1772,379,697,379,696,380,1773,378,1773,379,1772,379,1773,379,696,380,696,380,696,379,697,380,695,380,696,395,681,379,697,379,698,378,697,379,696,379,697,380,696,379,696,380,696,406,670,379,697,379,1772,406,670,379,697,379,697,379,696,379,697,380,695,380,697,379,696,380,695,381,696,405,671,379,696,380,696,380,695,380,697,379,696,380,696,380,696,380,696,379,696,380,696,379,697,380,696,379,696,380,696,380,696,380,1772,379,696,380,696,380,1772,379,1773,405,1746,379,696,380,696,380}, //31C +{5043,2131,379,1772,380,696,405,671,405,670,380,1772,380,696,379,697,405,670,380,696,407,1744,380,697,379,1772,406,1746,406,669,405,1747,405,1746,407,1745,380,1771,407,1744,381,696,380,1772,379,697,379,695,408,669,406,669,380,696,380,696,380,1772,380,695,380,696,380,1772,405,670,380,696,380,696,380,1771,406,671,405,670,406,670,380,696,405,670,406,670,407,669,380,696,405,671,379,697,405,670,380,696,380,696,404,672,379,1772,406,1745,406,1746,406,671,404,671,406,1745,407,669,405,29356,5044,2130,380,1771,407,670,405,670,380,696,380,1772,380,696,379,696,407,670,379,695,381,1772,380,695,406,1746,406,1745,380,696,380,1771,407,1745,380,1772,380,1771,406,1746,405,671,380,1771,406,670,409,667,380,695,380,696,380,697,379,696,380,1771,380,697,379,696,380,1772,380,696,379,697,379,697,379,696,380,695,406,670,406,670,380,696,406,669,381,1771,380,1772,379,697,405,670,407,1745,380,1771,406,1746,380,696,379,696,407,670,379,695,381,695,380,697,379,697,379,696,380,696,405,1747,406,669,380,696,380,696,405,670,380,1771,381,696,380,696,405,670,380,697,379,697,379,696,388,688,379,696,380,696,380,695,381,696,379,696,405,672,406,668,407,670,379,696,380,696,408,667,381,696,405,1746,406,1745,406,1747,379,696,380,1772,379,697,405,670,380,1772,405,1746,380,1771,381,1771,406,671,379,696,380,696,379,696,380,696,380,696,405,671,379,697,379,697,379,696,380,696,380,696,379,696,380,696,380,697,379,696,379,697,406,1745,380,696,380,696,380,695,380,697,379,696,380,696,405,670,380,696,380,696,380,696,380,695,381,695,380,696,380,696,380,696,379,697,379,696,380,695,381,695,380,697,405,669,381,696,380,696,379,696,380,696,380,696,380,1772,379,1773,379,695,389,1764,405,1746,406,1745,407,670,379,696,380} //32C + + + +//cool low + +{5070,2104,380,1771,380,695,407,670,380,696,380,1772,406,668,381,696,380,696,380,695,380,1772,405,670,381,1772,379,1772,407,669,406,1745,380,1772,380,1771,380,1772,380,1771,406,671,406,1745,380,695,407,670,379,696,380,696,406,670,380,695,407,1745,405,671,380,695,407,1744,381,696,380,696,406,670,380,1771,380,696,405,671,405,671,405,670,380,696,380,696,380,696,406,670,405,670,405,671,405,671,379,696,380,696,380,696,380,1771,407,1745,407,1745,405,670,407,669,380,1771,408,668,381,29359,5066,2130,380,1771,380,697,378,696,381,696,380,1771,380,696,379,696,381,696,379,696,380,1772,405,671,379,1772,406,1746,380,696,407,1744,380,1772,379,1772,380,1772,379,1772,380,696,380,1772,379,697,379,696,379,697,380,696,379,697,405,670,380,1771,380,697,379,696,380,1772,380,696,379,696,380,696,379,697,406,670,379,697,405,670,380,696,380,697,379,1772,379,1773,379,696,379,697,379,1772,406,1746,405,1746,380,695,381,696,406,669,380,696,380,695,384,692,381,696,379,696,405,671,406,1746,379,696,380,696,406,670,380,697,405,1746,379,695,381,696,379,697,379,696,380,696,380,696,379,697,405,670,380,697,379,696,380,696,379,697,379,696,406,670,380,696,380,696,379,696,405,671,405,671,379,1772,406,1746,380,1771,406,670,380,696,406,670,379,696,380,1771,381,1772,406,1745,406,1746,406,1745,380,696,380,697,379,696,379,697,379,697,379,696,380,697,379,695,380,697,406,670,379,696,379,697,379,695,381,696,405,671,379,697,379,1773,379,697,379,696,380,695,407,669,380,697,379,696,380,696,379,696,380,697,379,696,380,695,381,696,379,696,380,696,380,696,380,696,379,696,380,696,380,696,405,671,380,695,380,696,380,696,379,696,380,695,381,696,380,1772,379,1772,380,696,407,1745,379,697,386,1765,380,696,379,696,380}, //16C +{5043,2131,379,1773,379,696,380,695,381,696,379,1771,381,696,380,696,379,696,380,696,380,1772,380,696,379,1772,380,1772,379,697,379,1772,380,1772,379,1772,380,1771,380,1772,405,671,380,1771,406,670,380,697,379,696,380,696,379,697,379,697,379,1773,379,696,379,696,380,1772,379,697,379,697,405,670,379,1773,379,697,378,698,379,696,380,695,380,697,379,696,380,696,380,696,380,696,379,696,380,696,380,696,379,697,379,696,380,1772,379,1772,380,1772,380,696,380,696,379,1772,406,671,378,29383,5043,2130,380,1772,379,697,379,696,380,697,379,1771,380,696,380,697,379,696,379,697,379,1772,380,695,381,1772,379,1773,379,697,378,1772,380,1772,380,1771,380,1772,379,1772,380,696,380,1772,405,671,380,696,379,697,379,696,404,672,380,694,381,1772,380,696,380,695,381,1771,380,696,380,697,378,696,380,697,379,696,380,696,379,696,380,697,379,696,406,1745,380,1772,380,696,380,696,379,1772,380,1772,380,1771,380,695,381,696,380,696,379,697,379,697,379,696,380,695,381,696,379,697,379,1771,380,696,405,671,380,696,380,696,380,1771,406,671,379,695,381,696,379,696,380,696,380,696,380,696,380,696,379,696,380,696,380,696,379,698,378,697,379,696,380,696,380,696,405,670,380,696,380,696,380,696,379,697,379,697,405,1746,380,695,380,697,379,697,379,1771,380,1772,380,1772,379,1773,386,1765,405,671,379,697,379,696,380,696,380,696,379,697,379,696,380,696,380,696,379,697,405,671,379,696,380,696,379,697,379,696,406,670,379,1773,379,697,379,697,379,697,379,696,380,696,379,697,379,696,405,672,378,697,406,670,379,695,381,696,380,696,380,695,380,697,406,669,380,696,380,695,380,697,379,697,378,696,381,695,406,670,380,696,380,696,380,696,380,1771,406,670,405,1746,380,1772,380,696,382,1769,380,696,406,670,380}, //17C +{5043,2131,379,1773,379,697,379,696,405,672,378,1773,405,671,379,696,380,696,379,696,380,1772,380,697,379,1771,380,1773,379,696,379,1772,380,1772,380,1772,379,1772,380,1771,380,697,379,1772,380,696,379,697,379,697,379,696,379,697,379,697,379,1772,379,696,380,696,380,1773,378,697,379,696,380,697,379,1772,380,695,380,697,379,697,379,696,380,696,379,697,379,697,379,697,378,697,379,696,380,697,379,696,380,697,379,696,379,1772,405,1748,380,1771,379,697,378,697,380,1771,380,697,379,29382,5043,2130,380,1773,378,697,379,697,404,670,380,1773,379,696,406,671,378,697,379,697,379,1772,380,696,379,1773,379,1773,379,696,380,1771,380,1773,378,1773,379,1772,405,1746,380,696,379,1774,379,695,380,696,380,696,380,696,379,698,378,696,380,1773,379,697,378,696,406,1746,380,696,380,696,379,697,379,697,379,697,379,696,379,697,379,696,380,696,379,1773,379,1774,378,696,379,697,379,1772,379,1774,378,1773,379,697,379,696,379,697,379,696,380,697,379,696,379,697,379,697,378,697,380,1772,379,697,379,696,380,696,379,698,378,1773,406,670,378,697,379,697,379,697,378,697,380,696,379,697,405,670,380,696,379,697,380,696,379,696,380,697,379,697,378,697,379,697,379,697,379,695,380,698,378,1773,379,696,380,696,379,1773,379,697,379,696,380,697,378,1772,380,1772,379,1772,379,1773,380,1772,378,698,379,696,380,696,379,697,379,696,380,697,379,696,379,697,379,697,379,696,406,670,379,696,380,697,405,671,378,697,379,696,380,1772,379,697,384,692,379,697,379,696,380,697,378,702,374,697,379,697,379,696,379,698,378,696,380,697,379,696,379,697,380,695,379,698,379,697,379,696,380,695,380,697,379,697,378,698,378,697,379,697,379,697,378,697,379,1773,379,1772,379,1773,379,1772,379,697,380,1771,380,697,379,697,378}, //18C +{5068,2105,381,1770,381,695,406,670,410,666,380,1771,407,669,380,696,407,669,404,672,380,1771,380,696,379,1772,406,1745,408,669,380,1771,380,1771,381,1771,406,1746,407,1744,405,672,379,1772,405,670,407,670,379,696,407,669,380,696,380,695,406,1746,406,670,380,695,381,1771,405,670,381,695,407,669,380,1772,380,696,380,696,407,668,406,670,380,696,405,670,380,697,406,669,380,696,406,670,380,695,405,671,407,669,380,696,401,1750,380,1771,407,1745,380,696,380,696,380,1771,380,696,380,29382,5043,2131,405,1745,408,669,380,695,380,696,380,1772,380,695,380,696,406,670,380,695,381,1772,405,670,380,1771,380,1772,380,695,381,1771,407,1745,380,1771,407,1745,380,1771,380,696,381,1771,379,697,380,695,380,696,380,696,380,696,379,696,381,1771,380,696,379,696,406,1746,406,670,379,697,380,696,379,696,407,669,406,670,382,693,405,671,380,696,380,1775,376,1772,407,669,406,669,381,1771,380,1772,405,1746,380,696,406,670,380,696,380,695,380,696,405,671,380,696,406,669,380,696,407,1744,380,696,380,696,380,695,409,668,380,1771,406,670,406,670,380,696,380,695,407,669,380,695,381,695,406,670,406,670,405,671,407,669,405,671,379,696,380,696,380,696,379,697,406,669,380,696,380,696,380,696,406,1744,407,670,380,1771,406,671,379,696,406,670,406,1745,380,1771,406,1746,407,1745,380,1771,381,698,377,696,380,695,380,696,381,696,379,696,380,696,380,696,406,669,380,696,380,696,380,696,380,696,379,696,407,668,381,696,380,1771,380,695,380,697,405,670,380,697,379,696,380,696,380,696,379,697,379,695,381,696,380,695,408,668,380,696,380,696,380,695,406,670,380,696,380,696,380,695,380,696,407,669,407,669,380,695,407,669,380,696,406,670,380,1771,406,670,380,695,407,670,380,1771,406,1745,381,695,381,695,380}, //19C +{5069,2104,380,1772,380,695,405,671,380,696,380,1771,380,696,380,696,406,670,380,695,406,1746,380,696,406,1745,407,1744,406,671,405,1746,406,1745,407,1745,405,1747,405,1747,379,696,407,1744,404,673,379,696,406,670,380,696,405,671,379,696,380,1772,380,695,407,669,398,1754,380,696,379,696,380,696,406,1745,406,670,407,670,379,696,380,695,381,696,379,696,407,669,406,670,405,671,379,696,380,696,380,696,380,695,381,696,406,1745,380,1771,380,1773,379,696,406,669,380,1772,381,695,380,29382,5043,2131,406,1745,405,670,380,696,380,696,407,1744,380,696,406,670,380,696,379,697,379,1772,380,696,380,1771,380,1773,379,695,381,1771,405,1746,406,1746,380,1772,380,1772,379,697,379,1772,380,696,379,697,379,696,380,696,406,671,378,696,380,1772,380,696,380,695,406,1746,379,696,381,696,379,696,380,696,406,670,405,670,407,670,405,670,406,669,407,1744,381,1772,380,696,410,665,380,1772,380,1771,380,1772,380,696,405,670,380,696,380,696,380,696,379,697,406,669,380,696,406,670,405,1746,380,696,407,669,380,696,379,696,380,1772,380,696,405,671,379,696,380,696,380,696,380,696,379,696,406,671,379,696,380,696,380,696,405,670,380,696,380,696,380,695,380,696,380,696,380,696,380,696,379,1773,379,1771,408,668,380,1771,381,696,406,670,379,696,380,1772,379,1772,406,1746,379,1772,406,1746,380,696,380,695,380,697,379,696,405,671,380,696,379,696,380,696,405,671,380,695,380,696,380,696,406,670,380,696,379,696,406,670,380,1771,405,672,379,696,380,696,380,696,380,696,379,697,379,696,406,670,380,696,379,697,379,696,380,697,404,670,380,697,379,696,380,696,379,697,405,670,380,696,380,696,406,670,380,696,379,696,380,696,380,695,406,670,380,1772,380,1772,379,697,379,696,380,1771,380,1772,406,670,406,670,406}, //20C +{5044,2129,380,1772,405,671,380,695,406,669,407,1745,408,669,379,696,406,669,381,695,408,1744,381,695,407,1744,381,1771,380,696,380,1771,381,1771,380,1772,379,1772,406,1745,407,669,381,1771,406,669,381,696,407,668,380,696,407,668,407,670,380,1771,380,696,380,695,407,1745,380,696,380,696,379,697,407,1744,380,696,380,695,381,695,380,696,406,670,380,695,407,669,381,695,407,669,406,670,380,695,381,695,407,669,381,695,380,1771,381,1771,408,1744,379,696,407,669,380,1771,407,669,381,29381,5044,2129,380,1772,380,696,380,696,379,697,379,1772,380,696,404,671,381,695,380,696,380,1771,381,695,405,1747,380,1772,379,696,380,1772,406,1745,380,1772,380,1772,380,1771,380,696,406,1745,406,669,381,696,379,696,380,696,380,696,380,695,381,1771,406,670,380,696,380,1771,407,669,406,670,380,696,380,696,380,695,407,669,380,696,380,696,406,670,407,1744,407,1744,382,694,380,696,405,1746,380,1772,406,1746,380,695,380,696,380,696,380,696,380,695,380,696,404,672,380,696,380,696,406,1745,380,695,381,696,406,670,379,696,380,1771,380,697,379,696,380,696,380,695,381,695,406,671,379,695,381,696,380,695,405,671,380,696,406,670,380,695,380,697,379,696,380,696,406,669,380,696,380,696,406,670,406,669,380,1772,380,1771,381,695,380,697,379,696,379,1772,381,1770,408,1744,381,1771,380,1771,380,696,380,696,380,696,406,670,380,695,380,696,380,696,406,669,380,697,379,696,380,696,380,696,379,697,405,670,380,696,380,696,380,1771,380,696,407,669,406,670,405,671,407,668,380,696,380,696,380,695,380,696,380,696,406,670,380,695,380,696,380,696,405,671,406,669,380,696,380,696,380,696,380,695,380,697,405,670,406,670,379,696,381,695,407,670,379,1771,381,695,381,1771,406,670,380,1772,379,1772,380,695,407,669,380}, //21C +{5092,2104,380,1771,380,696,380,696,380,696,404,1747,380,696,405,671,379,696,381,695,407,1744,381,696,379,1772,407,1744,381,695,406,1746,380,1771,381,1771,380,1771,407,1745,380,696,380,1771,381,695,407,669,406,670,380,696,404,671,380,696,380,1771,381,696,379,696,380,1772,380,695,382,694,380,696,406,1746,380,698,377,696,407,669,406,669,381,696,380,696,379,696,380,696,380,696,379,696,407,670,406,669,380,696,380,695,380,1772,380,1771,381,1771,380,696,380,696,411,1740,380,696,380,29382,5043,2130,380,1771,380,696,380,696,379,696,407,1745,406,669,381,695,381,695,407,669,380,1772,379,697,379,1772,406,1746,379,696,380,1772,380,1771,380,1772,380,1771,381,1771,380,696,405,1746,380,696,380,696,406,670,406,669,406,670,381,695,380,1772,380,696,379,696,380,1772,379,697,406,669,407,669,406,670,406,670,379,697,379,696,406,670,380,696,379,1772,380,1772,406,670,380,695,406,1746,380,1771,406,1745,381,696,379,696,380,696,380,696,380,695,381,695,380,696,405,671,380,696,379,1772,406,670,380,696,380,695,381,695,380,1772,407,669,380,695,380,696,380,696,380,696,406,669,380,696,380,696,380,695,381,695,380,696,406,670,380,695,408,668,380,696,380,696,380,696,380,696,380,696,379,1771,381,696,379,1772,405,1747,380,696,380,695,407,669,380,1771,380,1772,380,1771,385,1767,407,1745,379,696,380,697,404,671,380,695,381,695,380,696,380,696,380,696,380,696,379,696,380,696,380,696,380,695,407,670,379,696,406,670,380,1772,379,696,380,696,380,695,380,696,380,696,395,680,381,696,379,696,380,696,380,696,406,670,379,697,379,696,380,696,380,695,380,697,379,697,379,696,380,696,379,697,379,696,380,696,380,696,380,696,380,695,380,696,380,1772,379,1772,380,1772,407,668,408,1744,380,1772,404,671,380,696,380}, //22C +{5042,2131,379,1772,406,671,379,696,405,671,380,1772,405,670,406,671,379,696,379,697,405,1746,380,696,379,1772,380,1772,379,697,379,1772,380,1772,379,1773,379,1772,379,1772,380,696,380,1772,406,670,379,697,379,696,405,671,379,697,379,697,379,1772,379,696,406,671,379,1772,380,695,380,698,378,697,379,1772,379,697,379,696,379,698,378,697,379,698,378,697,379,696,380,696,379,697,379,696,380,696,380,697,379,695,380,696,380,1772,379,1773,379,1772,379,697,379,697,379,1772,379,697,379,29359,5067,2130,406,1745,380,696,380,697,379,696,379,1773,379,696,380,697,378,697,379,696,380,1772,379,696,380,1772,379,1772,380,696,380,1772,379,1773,379,1772,379,1773,379,1771,381,695,380,1772,380,697,378,697,379,697,379,696,406,670,380,696,379,1773,379,696,380,696,380,1772,405,671,379,696,380,696,379,696,380,697,379,696,380,697,378,697,379,697,378,1773,380,1772,379,696,380,697,378,1772,380,1771,380,1773,379,696,380,697,379,697,378,697,379,696,379,696,381,696,379,697,379,697,379,1772,379,696,381,696,379,696,380,696,379,1772,380,696,380,695,380,697,379,697,405,671,379,696,405,671,379,697,379,696,380,696,379,697,379,697,379,697,379,696,380,696,379,697,379,697,379,696,380,696,379,697,406,1746,378,1772,380,1772,379,697,379,697,379,697,379,1772,379,1772,380,1772,379,1773,405,1747,379,696,379,697,379,697,379,697,379,697,378,696,380,697,379,696,379,697,379,697,406,669,406,671,379,696,379,697,379,697,379,696,380,1772,379,697,379,697,379,697,379,696,379,697,379,697,379,697,379,696,379,697,405,671,379,696,379,697,379,697,379,696,380,696,405,671,380,696,379,697,379,696,380,696,380,696,379,697,379,696,380,696,380,696,380,695,380,1772,380,696,380,696,379,1772,380,1772,379,1772,380,696,380,696,379}, //23C +{5068,2104,381,1771,407,669,380,696,406,670,379,1772,380,696,406,670,380,694,382,696,405,1745,406,671,380,1771,380,1772,405,671,405,1746,380,1771,380,1772,380,1772,380,1771,380,697,379,1770,381,696,380,696,407,669,380,696,379,697,379,696,380,1772,379,696,380,696,380,1772,379,696,380,696,407,669,405,1746,380,696,380,696,380,695,380,696,380,696,382,694,379,696,407,669,406,670,405,671,380,696,379,697,379,697,379,696,406,1746,379,1772,380,1772,406,669,380,696,385,1766,380,696,380,29381,5044,2130,380,1771,380,696,380,696,406,669,380,1771,406,670,381,696,380,695,380,697,406,1745,380,696,379,1772,380,1772,379,696,407,1745,380,1771,380,1773,404,1746,405,1747,380,696,405,1746,407,669,380,696,379,696,380,696,407,669,380,696,380,1771,406,669,381,696,379,1772,380,696,406,670,380,695,380,696,380,696,380,696,380,696,380,695,380,696,406,1744,381,1771,381,696,379,697,379,1772,405,1747,379,1771,381,696,406,670,380,695,380,696,380,696,380,696,379,697,385,690,380,695,406,1746,405,672,379,696,405,671,405,670,380,1772,380,696,379,696,381,695,380,696,380,696,380,695,380,696,380,695,381,696,379,697,379,696,380,696,406,669,381,696,379,697,404,671,405,671,379,697,379,697,379,1771,380,1772,380,1771,380,1772,380,696,380,695,381,696,379,1772,380,1772,379,1772,380,1772,379,1772,380,696,380,696,379,697,379,696,406,670,405,671,404,672,404,671,380,696,380,696,406,670,379,697,379,696,380,695,381,696,379,696,380,1771,380,697,379,697,379,695,381,696,379,697,379,696,407,669,380,696,405,670,380,696,380,696,380,696,379,696,380,696,380,695,407,670,379,696,380,696,380,696,380,695,406,670,380,696,380,696,380,696,380,696,379,696,407,1745,379,1772,380,696,380,1771,407,1745,380,1771,380,695,381,696,406}, //24C +{5043,2130,380,1772,379,697,379,697,379,697,405,1747,379,695,380,697,379,697,379,696,380,1772,379,695,381,1771,406,1745,381,696,380,1771,380,1772,379,1772,405,1747,380,1772,379,696,407,1744,380,697,379,697,379,696,406,670,380,696,379,697,404,1746,381,696,405,671,379,1771,381,697,378,696,407,669,380,1772,379,697,379,697,379,697,379,695,380,698,403,672,379,696,380,696,379,696,380,696,380,696,380,696,380,696,379,697,379,1772,379,1772,405,1747,379,696,380,696,380,1772,405,671,405,29355,5044,2130,380,1772,379,697,379,696,380,695,381,1771,406,671,405,670,380,695,380,696,380,1772,380,696,406,1744,381,1772,379,696,380,1772,380,1771,380,1772,380,1772,379,1772,380,696,380,1771,380,695,381,696,405,671,379,696,380,697,379,697,378,1773,405,670,380,696,380,1772,405,671,379,696,380,696,379,696,406,675,401,670,380,696,405,671,379,696,380,1771,381,1771,384,692,379,697,379,1772,380,1772,380,1771,380,696,379,697,379,697,379,697,379,696,380,696,406,670,379,696,380,696,380,1771,407,670,379,697,404,670,381,696,405,1747,379,696,379,696,380,696,380,696,380,696,379,697,379,696,380,696,380,696,379,697,379,696,380,696,380,696,380,696,379,696,405,671,380,696,379,697,379,696,380,696,380,696,380,696,379,697,379,1772,379,696,380,697,379,1772,379,1772,380,1777,375,1771,380,1772,406,671,404,671,379,696,380,695,407,670,405,671,405,670,380,696,379,697,406,670,379,696,406,670,379,696,380,697,379,697,379,696,406,1745,380,696,380,696,380,696,379,696,380,696,379,696,380,696,380,697,379,696,380,696,379,696,380,696,380,696,380,696,380,696,405,671,379,697,404,671,379,696,380,696,380,696,405,671,379,697,379,697,379,696,406,670,379,1773,405,670,380,1771,406,1746,380,1771,408,1744,406,670,379,696,385}, //25C +{5042,2131,380,1772,406,670,379,696,380,696,380,1771,380,696,379,697,406,670,379,696,380,1772,379,697,379,1772,379,1773,379,697,379,1772,379,1772,380,1772,380,1771,380,1772,382,694,379,1772,380,696,379,700,376,697,404,671,380,696,379,696,380,1772,380,696,379,697,379,1772,406,671,379,696,379,697,379,1772,380,696,379,696,380,697,404,672,379,696,380,696,379,697,379,696,380,696,379,697,379,696,380,696,380,696,380,696,379,1772,380,1772,379,1773,379,696,379,696,380,1772,404,672,379,29382,5043,2130,380,1772,379,697,379,696,380,696,380,1772,379,696,380,696,380,696,406,670,379,1772,380,696,379,1772,380,1772,380,695,406,1747,379,1772,405,1747,379,1771,406,1747,379,696,380,1772,379,697,405,671,379,696,379,697,379,696,406,670,380,1772,406,669,380,696,380,1771,380,696,380,697,379,696,405,671,405,670,380,696,380,695,380,696,380,697,379,1771,407,1745,380,696,380,695,406,1746,380,1771,380,1772,380,697,405,670,379,697,379,696,380,696,380,695,380,697,379,697,379,697,379,1772,406,670,404,671,380,696,379,697,380,1771,405,671,379,697,379,697,381,695,380,695,380,696,379,696,380,696,380,696,380,695,380,697,379,696,380,696,406,671,378,697,405,670,379,697,380,696,379,697,379,1772,380,696,379,697,379,696,380,1772,379,697,379,696,406,1746,405,1746,380,1772,379,1772,380,1771,380,696,380,696,380,696,380,696,379,697,379,696,380,696,380,695,380,697,379,697,379,696,379,696,380,697,379,697,379,697,379,696,379,1772,380,696,380,695,380,696,382,695,379,696,380,696,379,697,379,697,379,696,407,669,379,697,379,696,379,696,380,697,406,669,380,696,406,670,380,696,406,669,380,696,380,696,380,696,379,696,406,671,379,696,405,671,379,1772,406,1746,379,1772,380,1771,380,1772,380,1772,379,697,379,698,378}, //26C +{5043,2130,380,1771,380,696,406,670,380,696,407,1744,380,695,407,670,380,695,381,695,381,1771,406,669,406,1746,380,1772,380,695,406,1746,380,1772,405,1746,407,1744,381,1771,380,696,380,1771,380,696,380,696,407,669,380,695,407,669,380,696,380,1771,380,696,380,696,380,1771,406,670,380,696,380,695,381,1771,405,671,380,696,405,670,406,670,407,669,406,670,407,668,406,670,380,696,380,695,406,671,404,671,380,696,380,695,407,1750,375,1772,406,1745,380,696,380,696,407,1744,406,670,380,29382,5042,2130,380,1772,380,695,381,696,380,696,379,1772,406,670,380,695,380,696,380,696,380,1771,380,696,380,1772,405,1747,404,670,407,1746,379,1772,380,1771,381,1771,406,1746,379,696,380,1771,381,696,381,694,380,696,380,696,380,696,406,669,380,1772,380,696,379,697,379,1772,380,695,380,697,379,696,380,696,380,696,379,696,380,696,381,694,381,696,406,1745,380,1771,381,695,407,669,380,1772,380,1771,406,1745,380,696,406,670,380,696,405,670,381,696,379,696,406,670,380,695,381,696,379,1772,380,696,399,676,381,695,380,695,406,1747,406,669,380,696,380,696,405,671,380,695,406,670,380,696,406,670,406,669,380,696,407,669,405,671,407,668,406,670,380,696,406,669,380,697,405,670,380,696,405,671,393,1758,381,695,380,696,380,1771,404,672,406,669,408,1744,380,1771,380,1772,406,1745,380,1772,380,696,406,670,379,697,379,696,380,695,381,696,405,670,380,696,380,696,380,695,381,695,380,695,381,696,406,670,379,697,405,670,380,1771,380,696,380,696,406,670,380,695,380,696,380,696,380,696,380,695,380,696,406,670,406,669,381,696,380,695,406,670,406,670,380,696,379,696,380,696,380,696,380,695,381,695,380,696,380,695,381,696,379,696,380,696,380,1771,381,695,380,696,380,696,380,695,380,696,380,1772,406,669,380}, //27C +{5042,2130,407,1745,380,696,380,695,408,668,380,1771,407,669,380,696,380,696,380,696,380,1771,380,696,380,1772,379,1772,380,696,400,1751,407,1745,406,1745,380,1772,406,1745,380,696,380,1771,406,671,405,670,406,670,380,696,406,669,406,670,380,1772,379,696,380,696,380,1771,381,695,380,697,405,670,380,1771,380,696,380,696,405,671,406,670,406,669,380,696,380,695,381,696,379,696,406,670,406,670,406,669,380,696,380,696,380,1771,381,1771,380,1771,381,695,405,671,380,1771,408,668,380,29382,5043,2130,380,1771,380,696,380,696,379,697,379,1773,379,696,406,670,379,696,380,696,380,1772,379,697,379,1772,380,1772,379,696,380,1773,378,1773,379,1772,379,1772,380,1772,379,697,379,1772,406,670,379,698,405,669,380,696,380,696,379,697,379,1772,380,696,379,697,379,1772,380,696,379,697,379,697,379,696,379,697,380,696,379,697,379,696,379,697,406,1745,380,1772,380,696,379,697,379,1771,380,1773,379,1772,380,696,379,696,380,696,380,697,405,670,379,696,380,697,378,697,380,696,379,1772,406,670,380,696,379,697,379,696,380,1772,379,697,379,697,379,696,379,697,379,696,380,697,379,696,380,696,379,696,380,696,380,696,379,696,380,697,405,669,381,696,380,695,380,697,404,671,405,671,380,1771,380,1771,407,670,379,696,380,1773,405,670,379,697,379,1772,402,1749,380,1772,380,1771,380,1772,380,696,380,695,380,696,380,696,380,696,380,695,380,696,380,696,379,697,379,696,380,696,380,696,380,696,379,696,380,696,380,696,406,1745,380,696,380,696,379,697,379,697,379,696,380,696,379,697,379,697,406,670,405,670,379,697,379,695,381,696,406,670,380,696,379,697,379,696,406,670,379,696,380,696,380,697,379,696,380,696,379,697,379,696,380,696,380,1771,380,1772,380,696,379,697,379,696,380,696,380,1772,379,697,379}, //28C +{5043,2130,407,1744,381,695,380,696,407,669,406,1745,407,669,406,670,380,696,380,696,406,1745,406,669,406,1747,384,1766,407,669,381,1771,407,1744,384,1768,407,1744,407,1745,407,669,401,1751,380,695,407,669,380,695,407,669,381,695,380,696,380,1771,380,696,405,671,406,1745,406,670,380,696,380,696,380,1771,380,696,406,669,407,669,408,668,380,696,407,669,405,670,407,670,406,668,406,671,406,669,406,670,406,670,406,670,380,1771,407,1745,407,1744,380,695,381,696,380,1772,406,669,406,29355,5070,2104,406,1745,380,696,380,696,380,696,379,1772,406,670,380,696,379,696,380,696,380,1772,385,690,407,1744,408,1744,380,696,405,1747,406,1745,406,1746,380,1771,405,1746,381,695,380,1772,406,670,380,695,407,669,405,671,380,696,406,670,405,1746,407,669,380,695,380,1772,380,695,407,669,380,697,405,670,380,696,407,668,406,670,405,671,406,670,406,1745,380,1772,406,669,407,669,380,1771,380,1772,380,1772,380,696,379,696,380,696,406,670,380,696,380,695,380,696,380,696,380,695,380,1772,389,687,380,696,405,670,380,696,406,1745,381,695,380,696,380,696,406,669,381,695,407,669,405,671,379,696,381,695,405,671,406,670,380,696,406,669,380,695,381,696,406,669,380,696,406,670,405,670,381,695,406,671,379,1771,380,697,379,1771,381,696,406,669,380,1771,407,1746,380,1771,380,1771,380,1772,406,670,380,695,406,670,406,670,406,669,381,695,407,669,407,668,406,669,382,695,380,696,380,696,403,673,380,696,380,695,406,670,405,1746,406,670,380,696,380,695,406,670,380,697,379,696,380,696,380,695,380,696,406,670,380,696,380,695,380,696,380,696,380,695,381,695,407,669,406,670,380,695,380,696,380,696,407,669,406,669,380,697,379,696,380,696,406,1745,381,695,380,1772,380,695,384,692,380,695,407,1745,381,696,379}, //29C +{5043,2130,380,1772,404,671,406,670,406,670,380,1771,380,696,380,696,406,670,379,696,387,1765,380,696,380,1771,380,1772,405,670,381,1771,380,1772,405,1746,380,1771,381,1771,405,671,380,1771,380,696,380,695,407,670,380,695,406,670,380,696,406,1745,381,695,406,670,407,1744,406,670,406,670,380,695,381,1771,380,696,406,670,406,669,407,669,406,670,380,695,381,696,405,670,380,696,380,695,381,695,407,669,380,696,405,670,381,1771,406,1745,381,1771,380,696,406,669,381,1771,380,696,380,29381,5044,2129,406,1746,406,670,379,696,381,695,380,1772,380,695,381,696,379,696,380,696,380,1770,381,696,407,1744,380,1772,407,669,380,1772,405,1745,407,1745,406,1746,407,1744,380,696,380,1771,381,695,380,696,406,670,380,695,381,695,380,696,380,1771,381,695,380,696,410,1741,381,695,406,670,380,695,381,695,381,695,407,669,406,669,380,696,407,669,380,1771,381,1771,380,696,380,696,406,1745,380,1772,406,1745,380,696,380,695,381,696,405,670,407,669,380,696,380,696,380,695,380,696,407,1745,380,695,407,669,406,669,381,695,407,1745,408,668,406,669,381,695,406,670,380,697,379,695,381,696,380,695,406,669,408,669,380,695,405,671,380,696,380,695,406,670,380,696,380,696,380,695,381,695,380,1772,380,695,381,1771,380,696,380,1771,380,696,380,696,380,1771,381,1771,380,1771,380,1771,381,1771,407,669,407,669,381,694,407,669,407,669,380,696,380,696,406,669,381,695,380,696,380,696,405,670,381,695,380,695,381,696,379,696,381,1771,380,695,407,669,391,685,406,670,380,695,381,695,407,669,381,695,406,670,405,670,380,696,380,696,380,695,380,698,405,669,406,670,380,695,408,668,405,671,407,669,406,670,380,695,380,696,380,696,406,669,381,695,406,1746,380,1772,380,1771,406,670,406,669,380,696,380,1772,406,669,380}, //30C +{5043,2129,380,1773,379,696,379,697,380,696,380,1772,404,672,379,697,378,697,379,697,379,1771,380,697,379,1772,406,1746,379,696,380,1772,405,1747,379,1772,380,1771,380,1773,378,697,379,1772,380,697,379,696,379,697,380,695,380,696,379,697,380,1771,380,696,380,696,379,1772,380,696,380,696,380,696,379,1772,379,698,379,695,380,697,379,697,405,670,379,697,405,670,380,696,380,696,407,669,379,696,380,697,379,696,379,696,380,1772,380,1772,379,1772,379,698,378,697,379,1772,407,669,380,29382,5068,2105,379,1772,379,697,379,696,380,697,379,1772,379,698,378,696,406,671,379,696,380,1771,380,697,379,1772,379,1772,380,696,379,1772,380,1772,406,1746,379,1773,378,1773,405,671,379,1772,379,697,406,668,381,696,379,697,379,697,379,697,379,1771,380,696,380,695,381,1772,380,695,380,697,379,697,379,696,380,696,380,696,405,670,380,696,379,696,407,1746,379,1772,379,696,380,697,379,1771,380,1772,380,1771,380,697,379,696,380,696,406,670,405,670,380,697,378,696,380,697,379,696,380,1772,379,697,379,697,379,696,380,696,379,1772,380,697,379,696,379,697,379,697,378,698,379,696,380,696,379,697,379,696,380,695,381,696,379,696,380,697,378,698,379,697,378,697,406,670,379,696,379,696,380,697,379,1772,380,1771,380,697,405,1746,405,671,379,696,380,1772,380,1772,379,1772,379,1772,380,1772,379,697,379,697,379,696,379,697,379,696,380,696,380,696,380,696,379,696,380,697,379,695,380,697,379,697,379,697,379,696,380,696,379,1773,379,696,380,695,380,696,380,697,379,696,379,697,379,697,379,697,378,698,378,698,378,696,380,696,380,696,380,696,379,696,380,696,391,685,380,696,380,696,379,697,405,670,380,696,380,696,379,696,406,670,407,669,379,1772,380,696,380,696,405,1747,405,670,380,696,380,1771,380,696,380}, //31C +{5043,2130,407,1744,380,696,380,696,405,670,406,1746,406,670,405,670,380,697,379,696,380,1772,405,670,381,1771,380,1771,380,695,381,1772,379,1772,380,1772,380,1771,380,1772,380,695,407,1745,380,696,379,697,379,696,407,669,380,696,406,669,380,1772,380,696,379,697,405,1746,380,696,379,696,380,697,379,1772,385,690,380,696,380,696,380,696,380,696,380,695,380,696,380,696,380,695,407,669,380,696,405,671,380,696,379,696,380,1771,406,1746,407,1745,380,696,379,696,435,1716,406,671,379,29382,5069,2104,380,1772,405,670,380,696,380,697,379,1771,380,696,382,694,379,696,406,670,405,1747,380,696,379,1772,406,1745,381,695,380,1771,381,1771,380,1772,406,1745,380,1772,406,670,379,1772,380,696,380,696,379,696,380,697,379,696,407,669,380,1771,380,696,380,696,406,1745,380,696,380,696,380,696,379,697,379,696,394,682,380,695,407,670,404,672,379,1771,380,1772,380,696,405,670,380,1772,380,1771,380,1772,380,696,379,697,405,670,380,696,380,696,406,670,379,697,379,696,380,695,381,1771,380,696,380,696,380,696,406,669,380,1772,380,695,406,670,380,696,379,697,405,671,405,670,406,670,380,696,379,696,406,671,379,696,380,695,380,696,380,696,380,696,380,696,405,670,380,696,406,669,381,1772,380,1771,380,1771,380,696,405,1747,380,695,380,696,380,1772,379,1772,406,1747,379,1771,380,1772,379,697,379,696,380,695,381,696,379,696,380,696,380,696,405,671,407,669,379,696,380,696,406,670,379,696,380,697,379,696,405,670,380,1772,380,696,380,696,379,696,380,696,406,669,381,696,405,671,379,697,379,696,380,695,380,696,380,696,380,696,380,696,379,697,379,697,379,696,380,696,379,696,407,669,380,696,380,696,379,696,380,696,406,670,380,696,405,1746,380,1772,405,671,379,1772,380,696,380,695,380,1772,380,696,379} //32C + +//cool mid + +{5066,2130,406,1745,407,669,407,669,405,670,381,1771,380,696,380,696,404,671,380,696,406,1745,406,670,379,1772,380,1772,380,696,379,1772,380,1771,380,1772,405,1746,380,1771,380,697,405,1746,379,696,380,696,380,696,405,670,380,696,407,669,380,1772,379,695,406,671,406,1745,381,695,380,695,407,669,380,1772,380,696,379,696,380,696,407,669,380,695,380,696,380,696,380,696,405,669,381,696,380,695,406,670,380,696,380,696,380,1771,380,1771,381,1771,380,696,405,670,407,1745,379,697,379,29381,5042,2130,380,1772,380,696,379,697,406,669,380,1770,407,670,380,696,380,696,379,696,380,1772,379,697,379,1772,380,1771,380,696,380,1771,380,1772,406,1744,381,1772,405,1746,380,696,380,1772,405,670,406,670,379,696,380,697,379,696,394,681,380,1772,380,695,380,696,380,1772,405,671,379,697,405,670,405,670,380,696,380,696,380,696,380,696,379,697,379,1771,380,1772,380,696,379,696,380,1772,406,1745,380,1771,407,670,379,696,380,696,407,668,380,696,407,668,381,696,380,695,380,696,380,1772,379,696,380,696,380,695,380,697,379,1772,379,696,406,670,380,696,380,695,380,696,380,696,380,696,379,697,379,696,380,696,379,697,380,696,379,696,379,697,379,697,379,695,407,670,380,696,406,669,382,1769,380,1772,406,1745,407,669,379,697,379,696,380,697,405,1746,379,1772,380,1772,405,1746,406,1745,380,1772,380,696,379,696,380,696,380,696,406,669,405,671,405,671,379,696,380,695,381,696,380,696,379,696,380,696,405,671,380,695,380,1772,379,696,380,697,379,696,380,696,406,669,380,696,380,695,380,697,379,696,380,696,379,697,379,696,380,696,379,697,379,697,379,695,406,671,389,687,379,696,380,696,380,696,406,669,380,696,380,695,407,669,408,668,380,1771,380,1772,380,696,379,1772,380,695,380,697,379,1772,379,696,381}, //16 +{5041,2131,379,1773,379,696,380,696,379,697,379,1772,379,697,379,697,379,696,379,697,379,1772,380,696,379,1773,379,1772,379,697,379,1772,383,1768,380,1771,380,1773,379,1772,385,691,379,1772,379,697,379,696,380,696,379,697,379,697,379,696,379,1773,379,696,380,696,379,1772,380,696,379,697,379,696,406,1746,379,697,379,696,380,696,405,671,379,697,379,696,380,695,380,697,379,696,380,696,380,696,379,697,379,696,380,696,379,1772,379,1773,379,1772,380,696,380,696,379,1772,380,697,378,29381,5043,2130,379,1772,380,696,380,695,380,696,380,1772,379,697,379,696,406,670,379,696,381,1771,380,696,379,1772,379,1773,379,696,380,1772,380,1771,380,1771,380,1772,380,1771,380,696,380,1772,379,697,379,696,379,697,379,697,379,695,381,696,380,1771,379,697,380,695,380,1772,379,697,380,696,379,697,402,673,380,696,379,696,380,697,379,696,380,695,380,1771,381,1771,406,670,380,696,380,1770,381,1772,379,1772,380,696,379,697,379,696,380,696,391,685,379,696,380,697,379,695,380,697,380,1770,380,697,379,697,379,696,380,696,380,1771,380,696,379,696,381,697,378,696,380,696,379,696,380,696,405,670,407,670,379,696,380,696,379,697,379,696,380,696,380,696,380,695,380,696,380,696,379,697,379,696,406,670,380,696,379,1772,406,670,379,697,379,696,406,1746,379,1772,406,1745,380,1772,379,1773,379,1772,379,697,379,697,379,696,380,696,405,670,406,671,378,697,379,697,406,669,380,695,381,696,379,696,380,696,379,696,380,697,379,1771,381,696,406,670,379,696,379,697,379,696,379,697,380,696,379,697,383,691,381,696,406,670,379,697,379,701,374,697,405,671,379,696,406,670,380,696,379,696,380,696,380,695,407,669,406,670,380,696,379,697,379,696,380,1771,380,696,380,1772,405,1746,380,696,406,669,380,1772,405,671,379}, //17C +{5041,2132,379,1772,379,696,379,698,378,697,379,1773,378,698,379,697,378,697,378,698,378,1773,378,697,380,1772,379,1772,379,698,378,1774,377,1773,379,1772,379,1773,379,1772,379,697,379,1773,378,697,379,697,378,698,378,697,379,697,378,697,379,1773,379,697,379,696,380,1772,378,698,379,697,378,698,378,1773,378,698,379,696,379,697,378,697,379,697,379,697,378,698,378,698,378,698,378,697,379,697,405,670,379,697,379,696,379,1773,379,1772,379,1772,380,697,378,697,379,1773,378,698,378,29382,5041,2131,379,1773,378,698,378,698,378,697,378,1774,378,698,378,697,379,697,378,697,379,1773,378,698,378,1773,379,1772,379,697,379,1773,379,1771,380,1772,379,1773,378,1775,377,696,380,1772,379,698,378,697,378,697,379,698,378,697,379,697,379,1772,379,697,379,697,378,1772,380,696,380,697,378,697,378,698,378,697,379,697,379,697,379,698,378,696,379,1772,380,1773,378,697,378,698,378,1773,379,1773,378,1773,379,697,378,697,379,697,379,696,379,698,378,697,379,696,380,697,378,698,378,1773,379,697,379,696,379,697,379,697,378,1772,379,698,378,697,379,697,379,697,378,697,379,697,379,697,379,697,383,692,379,698,378,697,378,697,379,702,374,697,379,696,379,697,379,697,378,697,379,697,379,1773,379,697,378,697,378,1774,379,696,379,697,378,697,379,1773,379,1773,378,1773,379,1773,378,1773,379,1773,405,671,378,697,379,696,379,698,378,697,379,697,379,697,379,696,379,696,380,696,380,696,379,697,379,696,380,697,378,697,379,1772,380,696,405,670,381,696,379,696,379,696,393,683,406,670,380,696,379,697,379,696,380,696,380,695,380,696,380,696,380,695,381,695,380,696,405,671,379,697,380,695,380,696,380,696,379,696,407,668,381,696,406,670,405,1745,381,1771,407,1744,381,1771,380,695,381,696,403,1748,380,696,380}, //18C +{5044,2129,381,1770,381,695,381,695,381,696,379,1772,379,696,380,696,380,696,380,696,379,1772,380,696,380,1771,380,1771,380,696,380,1771,381,1771,380,1771,381,1771,380,1772,380,696,379,1771,381,696,379,697,379,696,380,695,381,696,379,696,380,1772,380,696,379,696,380,1772,379,696,380,695,381,696,379,1771,381,696,380,696,379,696,380,696,380,696,380,696,379,696,380,696,380,695,380,696,380,696,380,696,380,695,380,696,380,1771,380,1772,380,1771,380,696,380,696,380,1771,380,696,380,29358,5065,2129,381,1771,381,695,380,696,380,696,380,1771,379,697,380,696,380,695,380,697,379,1771,381,696,379,1772,380,1771,380,695,381,1772,379,1772,380,1772,379,1771,381,1771,380,697,379,1770,381,697,379,696,380,695,381,696,379,695,381,696,380,1771,380,695,381,696,380,1771,380,695,381,695,380,696,380,695,381,695,381,696,379,696,380,696,379,696,380,1772,380,1772,379,696,380,696,380,1770,381,1772,380,1770,381,696,380,696,380,696,379,696,380,696,380,696,379,696,380,696,380,696,379,1772,380,695,381,695,380,697,379,696,380,1772,379,697,379,696,380,695,381,695,380,696,380,696,380,695,380,696,380,695,381,695,380,696,380,697,379,697,378,697,379,696,407,669,380,696,380,695,380,695,381,696,379,1772,380,696,380,1770,381,696,380,696,379,696,380,1772,407,1744,380,1772,380,1770,381,1771,380,1772,380,696,380,696,380,695,380,696,380,695,381,695,380,697,379,695,381,696,380,695,380,696,380,695,381,695,380,696,380,696,380,1771,380,696,380,696,380,696,379,696,380,696,380,695,380,696,380,697,379,696,379,696,406,669,381,696,379,697,379,697,379,695,381,696,379,696,380,695,381,696,379,697,379,696,380,696,380,695,381,695,380,696,380,696,380,1771,380,696,380,695,381,696,379,1771,381,696,379,1771,381,695,381}, //19C +{5044,2129,379,1772,380,696,379,696,380,696,380,1772,379,697,379,696,380,696,380,695,406,1746,380,695,380,1772,380,1771,380,696,380,1772,380,1771,380,1772,380,1771,380,1772,405,671,379,1772,379,697,379,697,379,696,380,697,378,696,380,697,379,1771,406,671,379,696,380,1771,380,696,405,671,379,697,380,1772,405,670,380,696,379,697,379,696,380,696,380,696,379,697,379,696,380,696,405,671,379,697,379,696,383,693,379,697,404,1746,380,1772,380,1771,380,695,381,696,380,1771,380,696,380,29380,5043,2131,379,1772,380,696,380,696,379,697,379,1771,380,698,405,669,380,696,380,695,380,1773,379,696,380,1772,379,1772,380,695,380,1772,380,1771,380,1772,380,1772,379,1771,380,697,379,1772,380,695,381,695,380,697,404,670,381,695,380,696,380,1772,380,696,379,696,407,1747,377,697,379,696,380,696,405,670,381,695,380,695,381,696,379,696,380,697,379,1770,381,1772,380,696,380,696,379,1772,380,1772,379,1772,380,696,379,696,380,696,380,696,405,671,379,697,379,696,380,696,379,696,380,1771,381,695,380,697,405,670,380,696,379,1772,380,696,380,696,380,696,379,696,380,696,379,697,379,697,405,670,380,695,407,670,379,697,379,696,380,696,379,697,379,695,381,696,380,695,380,697,379,695,381,1771,380,1771,384,693,379,1772,405,670,381,700,375,696,380,1772,379,1772,380,1772,405,1746,380,1771,380,1771,381,695,407,670,379,696,380,695,380,696,380,696,380,696,404,671,380,697,379,696,380,695,380,696,406,670,380,696,380,695,407,1745,380,696,406,670,379,696,380,696,380,696,380,695,406,670,380,695,381,695,380,696,380,696,380,696,380,695,380,696,380,696,380,695,381,695,380,697,379,695,407,669,380,696,380,696,406,669,380,696,405,671,380,696,379,1772,380,1771,380,696,380,695,381,1771,380,697,379,1772,379,696,380}, //20C +{5042,2131,378,1773,379,698,378,697,378,698,378,1773,379,697,379,696,379,697,379,697,379,1772,379,697,379,1772,379,1773,379,696,379,1773,379,1772,380,1772,379,1772,380,1771,380,696,380,1772,379,696,380,697,379,697,378,696,406,671,378,696,380,1773,379,697,379,697,378,1772,405,671,379,698,378,697,379,1771,380,697,379,697,379,696,379,698,378,697,379,697,405,671,378,698,378,696,379,697,379,698,378,697,379,697,379,696,379,1771,381,1772,379,1773,379,697,378,697,405,1747,379,696,380,29359,5063,2132,379,1773,378,697,379,696,380,696,382,1769,380,696,379,697,379,697,379,697,379,1772,379,698,378,1772,379,1773,379,696,380,1772,380,1771,380,1772,379,1772,380,1772,379,697,378,1773,379,697,379,696,380,697,378,697,379,697,379,697,379,1772,379,697,379,696,380,1772,379,696,406,670,379,697,404,671,406,670,380,696,380,695,380,697,404,672,378,1772,380,1771,380,696,380,696,406,1745,380,1772,380,1771,380,696,406,670,380,696,379,696,380,697,379,696,380,696,379,696,406,670,380,1772,379,697,379,695,381,696,405,671,397,1754,379,696,380,696,406,670,380,696,379,697,379,696,380,695,380,697,379,696,380,696,406,670,405,670,407,669,406,670,405,670,407,669,380,696,405,670,381,695,406,670,405,670,407,1745,406,1746,379,696,406,670,407,669,405,1745,408,1744,406,1746,380,1771,406,1745,407,1745,406,670,380,695,408,668,380,695,407,670,379,696,380,696,407,669,405,669,406,671,407,669,406,669,380,696,379,697,407,668,407,1745,379,697,405,670,379,697,407,669,379,697,378,698,378,697,378,697,379,698,377,699,377,698,377,698,377,699,377,699,350,726,350,725,350,726,350,726,349,726,349,727,349,728,347,728,372,703,373,703,373,703,347,729,372,1778,374,702,373,1779,373,703,373,1778,374,701,374,1778,373,703,373}, //21C +{5043,2130,380,1773,378,697,379,697,379,696,379,1772,380,696,379,697,379,697,378,698,379,1773,378,697,379,1772,380,1771,380,697,379,1772,379,1773,379,1772,379,1773,379,1771,380,697,378,1774,378,697,379,697,379,697,379,696,379,697,378,698,378,1773,379,697,379,696,380,1772,378,698,379,695,380,698,378,1772,405,672,378,697,379,697,378,698,379,696,379,696,380,696,379,697,379,696,380,696,380,696,379,697,379,697,378,697,379,1773,379,1772,380,1772,379,696,379,698,378,1772,380,696,379,29382,5042,2131,379,1772,380,696,380,696,379,696,380,1771,380,696,380,696,380,696,379,697,379,1773,379,696,379,1772,380,1772,380,696,379,1772,406,1745,405,1747,380,1771,380,1772,379,696,380,1772,379,697,406,669,380,696,379,697,379,696,380,696,380,1771,380,696,380,696,380,1771,406,671,405,670,380,696,379,696,380,696,405,671,406,669,406,670,406,670,407,1744,407,1744,406,671,379,696,380,1771,380,1771,406,1746,380,696,399,677,380,696,406,669,406,670,380,696,405,670,380,696,406,669,407,1745,406,669,381,695,380,696,380,695,406,1746,406,669,407,670,406,669,406,670,380,696,406,669,407,669,407,669,380,696,405,670,380,696,380,696,406,669,406,670,406,670,379,696,406,671,405,670,380,696,379,1772,406,670,404,1748,378,1773,378,698,377,698,378,698,377,1773,377,1775,351,1801,350,1801,349,1803,348,1803,348,728,373,703,373,703,373,703,373,702,373,703,373,703,373,702,373,703,373,702,374,702,374,702,373,703,373,703,373,702,373,1779,372,703,374,703,372,703,372,704,372,703,371,705,371,706,370,704,371,705,370,706,346,729,347,729,346,730,346,729,347,729,347,729,346,730,346,729,347,729,347,729,347,729,347,729,347,728,348,728,347,728,373,703,373,1778,375,1776,376,1777,374,700,377,1775,376,700,377,1773,378,698,378}, //22C +{5043,2130,405,1746,380,696,380,695,381,696,406,1744,381,696,406,670,379,697,379,696,380,1772,379,695,406,1746,380,1772,380,696,380,1771,405,1746,383,1769,380,1771,380,1772,380,696,405,1746,406,670,380,696,379,696,380,696,393,682,381,696,406,1745,380,695,407,669,407,1745,380,696,406,669,406,670,406,1745,405,671,380,696,380,696,407,668,407,669,406,670,380,696,406,670,405,670,380,696,380,695,380,696,380,696,380,696,405,1746,380,1772,379,1772,407,669,405,671,379,1772,380,696,380,29380,5043,2130,380,1771,380,696,380,696,405,671,406,1745,380,695,381,696,406,670,379,697,405,1746,405,670,405,1747,380,1771,406,670,380,1772,379,1772,406,1745,407,1745,380,1771,380,696,380,1771,407,669,407,668,381,695,407,670,379,696,380,696,379,1772,407,669,380,696,407,1744,405,671,380,696,379,695,381,696,380,696,404,671,407,669,380,695,407,670,379,1772,407,1744,407,669,407,669,380,1771,406,1745,407,1746,406,669,405,671,379,697,381,694,386,690,405,671,405,671,405,670,380,696,406,1744,381,695,408,668,406,670,380,696,380,1771,406,670,407,669,406,670,379,697,405,670,406,670,380,695,380,697,379,696,380,695,408,669,379,697,405,670,380,696,379,696,380,696,379,696,381,696,406,669,380,696,407,1744,380,1772,380,1771,406,670,380,696,406,670,379,1772,380,1771,406,1746,380,1771,407,1745,405,1746,380,696,380,696,380,696,405,670,406,669,381,696,379,696,405,671,407,669,379,696,380,696,407,668,381,696,379,697,405,670,406,1744,381,696,380,696,380,696,380,696,405,670,380,696,405,670,407,669,405,671,380,696,405,671,405,671,404,671,406,670,379,696,380,696,406,670,405,671,405,670,405,671,380,696,379,697,404,671,380,696,380,696,379,696,380,1771,381,695,380,696,381,1770,380,1772,380,696,379,1772,406,670,379}, //23C +{5042,2130,380,1772,379,697,379,697,379,697,378,1772,380,697,379,696,379,697,379,696,382,1770,379,697,379,1775,376,1773,379,696,380,1772,379,1773,379,1771,380,1772,380,1771,380,697,379,1772,379,697,379,696,380,697,378,696,380,697,379,696,380,1772,379,696,380,697,378,1772,380,697,378,697,379,697,405,1747,378,697,379,697,379,697,379,696,379,698,378,696,380,696,379,697,379,698,378,697,378,698,378,698,378,697,379,697,379,1772,379,1773,378,1772,380,697,379,697,379,1772,378,697,379,29382,5042,2131,379,1773,379,697,378,697,379,696,380,1771,380,697,379,696,380,695,407,670,379,1772,379,697,379,1773,379,1772,379,697,379,1772,379,1773,379,1772,380,1772,379,1772,379,697,379,1773,378,698,378,696,405,672,378,698,378,697,379,697,379,1772,379,697,379,696,380,1771,380,696,380,697,378,697,379,697,379,696,379,697,379,698,378,696,380,697,379,1773,378,1772,379,697,380,696,379,1772,380,1771,380,1771,380,698,378,697,379,697,379,695,380,697,379,697,379,697,378,697,379,697,379,1772,380,696,379,697,379,696,379,697,379,1773,379,696,379,698,378,697,379,697,379,697,378,697,379,696,380,697,378,697,379,698,378,697,379,696,379,697,379,696,380,697,379,696,379,697,379,698,378,697,378,1773,379,1772,406,1746,379,1772,379,697,379,697,379,697,378,1773,379,1772,379,1772,380,1772,379,1772,381,1771,379,697,379,697,378,698,378,698,378,697,405,671,379,697,401,674,404,671,380,696,380,696,379,697,379,697,379,697,378,697,379,1772,380,696,379,697,379,696,380,697,378,697,405,671,379,696,380,697,378,697,405,670,380,697,378,697,379,697,379,696,379,698,378,697,379,696,380,696,380,696,379,697,380,695,380,697,378,697,379,697,379,697,406,670,378,1772,380,1772,379,697,406,1746,379,1772,379,696,406,1746,380,696,379}, //24C +{5069,2104,406,1745,380,696,406,670,380,696,405,1746,406,670,380,696,380,696,379,696,406,1745,381,696,405,1746,405,1746,380,696,380,1770,381,1772,380,1771,380,1771,380,1772,380,697,379,1772,406,669,407,669,380,695,381,696,406,669,380,695,381,1772,379,697,379,696,406,1745,406,670,406,670,406,670,405,1746,406,669,382,693,407,670,380,696,405,671,406,672,404,669,379,696,380,696,380,696,380,696,380,695,386,690,406,670,405,1746,406,1746,380,1771,405,671,406,670,380,1771,406,670,380,29358,5066,2129,381,1771,380,696,406,670,379,696,380,1771,380,696,407,669,380,696,380,696,379,1772,380,696,380,1771,380,1771,381,696,379,1772,380,1771,407,1746,379,1771,380,1772,405,670,380,1772,380,696,380,695,406,670,380,696,405,671,379,696,406,1746,380,696,379,696,380,1771,381,695,380,697,379,696,380,696,405,670,380,696,380,696,380,696,380,695,380,1772,406,1746,379,696,380,696,405,1745,381,1772,379,1772,380,696,405,671,379,696,407,670,404,671,405,670,407,669,380,696,406,670,379,1772,380,696,380,696,379,696,380,696,380,1771,380,696,406,670,405,671,379,696,380,696,380,696,380,695,380,696,380,695,381,696,405,670,380,697,379,696,380,696,379,697,399,676,380,696,406,670,379,696,407,669,400,676,379,696,407,668,380,1772,406,670,380,696,380,1771,380,1772,380,1771,406,1747,378,1773,379,1772,405,671,407,668,406,671,403,672,406,670,406,669,406,670,379,697,379,696,406,670,379,697,406,669,406,671,379,696,380,696,379,1771,407,670,406,670,405,671,379,696,407,669,379,696,380,696,380,696,380,696,379,697,406,669,380,696,380,696,379,696,380,696,379,696,381,696,406,669,379,697,380,695,406,670,380,696,380,696,379,697,404,671,406,670,380,1771,406,670,406,1745,380,1771,381,1772,405,670,380,1771,380,696,405}, //25C +{5041,2131,379,1773,379,697,378,697,379,697,379,1772,406,670,379,698,378,696,380,697,378,1772,380,697,379,1772,379,1773,404,672,378,1772,380,1773,378,1773,379,1772,379,1772,380,696,379,1773,379,697,379,696,380,696,379,697,379,696,380,696,380,1772,378,698,378,697,379,1773,379,696,380,697,378,697,379,1772,405,671,379,697,379,697,379,697,379,696,379,697,379,697,379,696,379,697,379,696,380,696,379,698,379,696,379,696,380,1771,383,1770,379,1772,379,697,379,697,379,1771,380,696,380,29380,5070,2103,407,1745,380,697,379,696,380,696,379,1772,380,696,405,670,380,696,406,670,380,1771,380,696,380,1772,380,1771,380,696,380,1771,406,1746,379,1772,380,1771,407,1745,380,696,406,1745,380,696,380,696,380,696,379,696,380,696,380,695,408,1744,380,696,405,671,379,1772,380,696,380,695,380,696,407,668,407,669,380,696,380,696,406,669,407,670,384,1766,407,1744,407,668,407,670,407,1745,407,1745,380,1770,381,695,407,669,380,696,380,696,407,668,380,696,406,670,406,669,407,669,406,1746,380,695,407,669,405,670,380,696,380,1772,407,669,406,669,407,669,407,669,379,696,406,670,406,670,405,671,405,671,405,670,404,672,379,697,379,696,379,697,377,699,377,699,377,698,376,700,376,700,350,1801,350,726,349,727,349,726,349,1802,349,728,348,728,347,1803,373,1778,374,1778,373,1779,373,1778,374,1778,373,703,373,702,373,703,372,704,373,703,372,702,374,703,372,704,371,704,373,703,371,706,371,704,371,704,347,729,370,706,351,1800,347,729,346,729,347,729,346,731,346,729,347,730,345,729,347,729,347,728,348,728,347,729,348,728,347,728,373,703,374,702,372,703,375,702,374,701,375,700,376,700,376,700,376,699,377,699,377,698,378,698,377,699,403,1748,378,1773,378,1774,378,1773,404,1748,378,697,404,1747,405,671,404}, //26C +{5042,2131,379,1773,379,696,378,697,379,697,380,1772,379,696,380,697,378,697,379,697,379,1772,379,697,379,1773,378,1773,379,697,378,1773,379,1773,379,1772,379,1772,380,1772,406,669,380,1772,379,697,379,697,378,697,379,697,379,698,378,697,379,1771,406,670,379,698,378,1773,379,697,378,697,379,697,379,1773,405,670,379,697,379,697,379,697,379,696,379,697,379,697,379,696,379,697,379,697,378,697,380,696,379,697,379,696,380,1772,379,1773,379,1772,405,672,378,696,380,1772,379,697,378,29361,5063,2131,379,1773,379,696,380,696,379,697,379,1773,379,696,379,697,379,697,379,696,379,1773,379,696,379,1773,379,1772,380,697,378,1773,378,1773,379,1773,378,1773,379,1772,379,697,379,1773,379,697,378,698,379,696,379,697,379,697,378,697,379,1772,380,696,379,697,379,1773,378,698,378,697,379,697,378,697,380,696,379,696,379,698,378,697,379,697,379,1773,378,1773,406,670,379,697,379,1772,379,1772,379,1773,379,697,379,697,378,697,379,697,378,698,379,697,379,696,379,696,380,697,379,1773,378,697,379,696,379,697,379,697,378,1773,379,698,378,697,379,696,379,697,379,697,379,696,379,698,378,697,379,697,379,697,378,697,379,697,379,696,380,697,379,696,379,697,379,697,379,696,379,697,379,696,380,1772,404,671,380,696,380,1772,379,696,381,695,380,1771,380,1773,379,1772,379,1772,379,1773,379,1772,380,695,380,696,380,696,381,695,406,670,379,697,379,696,380,695,381,695,406,670,380,696,406,670,379,696,407,669,406,670,382,1769,407,669,406,669,381,699,402,670,380,696,380,695,381,696,379,696,406,670,406,669,380,696,380,696,407,669,406,669,406,670,380,695,381,695,407,669,380,696,405,670,381,695,407,668,407,670,380,695,381,695,405,671,407,1743,408,669,388,688,405,670,380,696,406,1745,406,1746,380,696,380}, //27C +{5044,2130,380,1771,380,696,380,696,380,696,379,1772,380,696,406,670,379,696,380,696,380,1771,380,696,380,1771,380,1772,380,696,380,1770,381,1772,379,1772,380,1771,380,1771,381,696,380,1771,380,696,380,696,384,691,380,696,380,695,381,696,380,1772,379,696,406,669,380,1772,380,695,380,696,380,695,381,1771,380,696,380,695,381,695,381,695,381,695,380,695,381,695,381,695,380,696,380,695,381,696,380,695,380,696,380,696,380,1771,380,1771,381,1771,380,696,380,696,380,1771,380,695,381,29380,5043,2130,380,1771,381,695,381,696,379,696,380,1771,380,696,380,695,381,696,380,695,380,1771,381,696,379,1771,381,1771,380,696,380,1772,379,1772,407,1744,381,1771,380,1772,379,696,380,1771,381,695,381,695,380,696,380,695,381,696,379,695,381,1772,379,696,380,696,380,1771,381,695,380,696,380,695,381,695,380,695,381,695,381,696,380,695,380,696,380,1771,380,1771,381,695,381,695,380,1772,380,1771,380,1771,380,697,380,695,380,696,380,696,380,696,379,696,380,697,379,696,379,697,380,1769,382,695,381,695,406,670,406,670,380,1770,381,696,380,696,380,696,379,696,380,695,380,697,379,697,379,695,381,696,380,696,379,695,381,696,380,696,379,696,380,695,381,696,380,695,380,696,380,696,380,1771,380,1771,381,696,379,696,380,1771,380,697,380,695,380,1772,380,1771,380,1772,379,1772,380,1771,380,1772,380,696,379,697,379,696,380,696,380,696,380,695,380,696,380,695,381,695,380,695,381,696,380,696,380,695,380,696,380,695,381,1771,380,696,380,696,380,696,379,696,380,696,380,696,379,696,380,695,381,696,380,695,380,697,404,670,407,670,380,695,406,670,380,696,380,696,379,696,380,696,434,641,381,695,380,696,380,696,380,698,377,696,380,696,380,1771,380,1771,381,695,380,696,380,696,407,1745,379,1772,380,695,381}, //28C +{5071,2102,381,1771,406,670,380,696,407,669,406,1745,380,695,380,697,406,669,380,696,407,1744,380,696,406,1745,380,1772,406,670,406,1745,407,1744,405,1747,380,1771,407,1745,406,670,405,1746,405,671,380,696,406,669,407,669,406,670,380,696,380,1771,380,696,406,670,379,1771,381,695,381,696,381,695,379,1771,407,669,407,669,380,696,406,670,380,695,380,696,380,696,383,693,380,695,380,696,380,696,405,675,375,697,379,696,380,1771,380,1772,380,1771,406,670,407,669,405,1746,380,696,406,29355,5043,2130,407,1744,381,695,407,668,381,696,379,1772,380,696,380,695,380,696,380,695,381,1772,379,697,379,1772,380,1771,380,695,381,1771,380,1770,382,1771,406,1746,380,1771,380,696,380,1772,405,670,404,672,380,695,380,696,380,695,381,696,380,1771,380,696,380,695,406,1746,380,696,406,670,379,696,381,695,380,695,381,696,379,696,380,696,380,695,381,1771,380,1772,379,697,379,696,380,1772,379,1772,400,1752,379,696,380,696,380,696,379,697,379,696,380,696,405,671,405,670,406,670,380,1771,407,669,380,696,380,696,379,697,379,1771,381,696,379,696,380,696,380,695,381,695,406,670,406,670,380,696,379,696,380,697,379,696,380,696,407,668,407,669,380,696,405,670,380,696,380,697,379,695,407,669,380,696,380,1772,379,697,379,1772,380,695,380,696,406,1745,380,1772,404,1748,379,1772,380,1771,380,1771,381,696,380,696,405,670,380,696,398,678,405,670,380,696,380,696,380,696,406,669,380,696,407,669,380,695,380,696,380,696,380,1772,379,696,380,696,408,668,380,695,382,694,406,669,380,696,406,670,406,669,381,696,379,696,406,670,405,671,407,669,379,696,405,671,380,696,406,669,380,697,406,669,406,669,381,695,380,696,407,668,381,696,379,696,380,1771,380,696,407,1745,380,696,380,696,379,1772,406,1745,380,696,380}, //29C +{5043,2131,379,1771,381,695,406,670,380,695,406,1747,406,670,379,696,380,696,406,670,404,1746,381,696,380,1771,380,1772,380,695,380,1771,381,1772,380,1771,380,1771,380,1772,380,696,406,1745,380,696,406,670,380,696,406,670,379,696,380,696,380,1772,405,670,407,669,380,1771,380,696,407,670,381,694,380,1771,380,696,380,696,380,695,380,697,379,696,380,695,407,670,379,696,407,670,379,696,380,696,380,696,405,670,380,696,380,1771,380,1772,380,1771,380,697,379,696,380,1772,379,697,379,29382,5043,2130,380,1772,380,696,379,696,380,696,380,1772,380,695,380,696,380,696,380,696,379,1772,380,696,380,1771,380,1772,406,669,380,1772,380,1772,380,1771,385,1766,381,1771,380,696,380,1772,380,695,380,696,380,696,380,696,380,696,379,695,381,1772,379,697,379,696,380,1771,381,695,380,697,406,669,384,692,380,696,379,696,380,696,380,695,381,696,406,1744,381,1771,380,697,379,696,380,1771,380,1772,380,1771,380,697,379,695,381,696,380,696,380,695,380,696,380,696,380,695,380,696,380,1772,380,696,379,696,380,696,380,696,380,1770,381,696,380,695,381,696,379,696,380,696,380,696,380,696,379,697,379,696,380,696,380,696,380,695,380,696,380,695,381,696,379,697,380,695,380,696,380,696,380,1771,380,696,380,1771,380,696,380,1772,380,695,381,695,380,1771,385,1768,379,1772,380,1771,380,1771,381,1772,379,696,380,696,380,696,380,696,379,697,379,696,380,695,381,695,380,696,380,696,380,696,380,695,381,695,380,696,380,696,380,1771,380,696,380,696,380,695,380,696,405,671,380,696,380,695,380,696,380,696,380,696,380,695,380,696,380,696,380,696,380,695,380,696,380,697,379,696,380,695,380,696,380,696,380,696,380,695,380,696,380,696,380,696,380,1771,380,1772,380,1771,380,696,380,696,380,1771,380,1771,381,696,384}, //30C +{5043,2130,382,1769,380,696,380,695,380,696,380,1772,380,696,406,669,380,697,379,697,379,1771,405,672,379,1771,380,1772,380,696,384,1767,380,1771,380,1773,405,1745,380,1772,380,695,381,1771,380,696,406,670,379,696,380,696,380,696,403,673,379,1772,380,697,379,696,379,1773,379,696,379,697,379,696,406,1746,379,696,380,696,380,696,379,696,380,697,379,697,379,695,381,696,379,697,379,696,380,696,405,671,379,696,380,695,406,1746,380,1772,379,1772,380,697,379,695,380,1773,379,696,380,29380,5044,2129,380,1772,406,670,380,696,379,697,379,1772,380,696,405,670,380,696,405,671,406,1745,380,696,380,1772,379,1772,380,696,379,1773,379,1772,406,1746,379,1771,406,1746,380,695,380,1772,380,696,380,696,379,696,407,669,380,696,380,696,404,1747,380,695,406,670,380,1772,380,696,379,697,379,696,406,670,380,696,379,696,380,697,379,695,381,696,379,1771,381,1771,380,697,405,670,406,1745,406,1746,379,1773,379,697,379,696,379,697,405,670,380,696,380,696,379,697,406,670,379,696,380,1772,379,696,380,696,406,669,380,697,379,1772,406,670,379,696,380,696,380,699,376,697,379,696,406,670,405,670,380,696,380,696,380,696,379,696,380,696,380,695,380,697,379,696,380,696,380,697,379,696,379,696,380,1771,380,1772,380,696,380,1772,379,696,380,696,379,1772,406,1745,381,1771,380,1772,379,1773,379,1772,380,695,403,673,380,696,405,670,380,696,380,697,379,696,379,696,380,697,404,671,379,696,381,696,379,697,379,696,380,696,379,1772,380,696,380,696,379,696,380,696,380,696,379,696,380,696,384,692,406,670,379,697,379,696,380,701,374,696,380,696,380,696,380,695,380,696,380,696,380,695,406,671,379,696,380,696,406,669,380,697,379,697,379,697,404,1747,379,696,380,695,407,1744,381,696,406,1745,380,1772,380,695,380}, //31C +{5043,2130,381,1771,380,696,379,696,380,696,380,1771,380,696,380,696,380,696,380,695,381,1770,406,671,379,1772,380,1771,380,695,381,1772,380,1771,380,1772,380,1771,407,1745,380,696,379,1772,380,695,405,672,379,696,380,696,380,696,379,697,379,1772,380,696,380,695,380,1771,407,669,380,695,381,696,380,1772,379,696,380,696,380,695,380,697,379,696,380,696,380,695,380,697,379,696,406,670,380,696,379,696,380,696,380,695,380,1773,379,1771,381,1771,380,696,406,670,379,1772,380,696,405,29355,5070,2103,380,1772,406,670,380,695,380,697,379,1771,380,697,379,696,380,696,380,696,380,1771,380,696,380,1771,380,1772,380,695,380,1771,381,1771,380,1772,380,1771,380,1772,380,696,379,1772,380,695,381,696,379,696,380,696,380,696,380,695,380,1771,381,696,379,696,380,1771,381,696,379,697,404,671,380,695,380,697,379,696,380,696,380,696,380,694,381,1771,381,1772,406,669,406,670,379,1771,381,1771,381,1771,380,696,406,669,380,696,380,696,380,695,380,697,379,696,406,670,380,694,382,1770,381,696,405,671,379,696,380,696,380,1771,380,697,405,670,380,695,406,671,380,695,406,670,380,695,381,695,380,696,380,696,380,695,380,696,407,669,380,696,380,695,380,696,380,696,380,695,381,695,380,1772,405,1746,380,1771,381,695,380,1771,381,696,379,696,380,1771,381,1771,380,1771,381,1771,380,1772,380,1772,379,695,381,696,379,696,380,696,380,695,381,695,380,696,380,696,380,696,379,696,380,695,381,696,380,695,380,696,380,696,381,1770,380,696,380,696,380,698,377,696,380,697,379,696,380,696,379,696,380,696,380,695,380,696,381,695,380,696,380,696,379,697,379,696,380,696,380,695,380,695,381,696,380,695,380,696,380,697,379,696,380,696,379,696,380,1772,379,1772,380,696,380,1771,380,696,380,1771,380,1772,380,695,380} //32C + +//cool high +{5043,2130,380,1772,380,696,404,671,406,670,380,1771,380,696,406,670,379,696,406,670,380,1771,407,670,379,1772,405,1746,406,670,406,1746,386,1765,406,1745,380,1772,380,1771,380,697,406,1745,379,697,380,694,407,670,406,670,405,670,405,672,379,1771,381,696,379,696,379,1773,379,696,380,695,381,695,380,1771,407,670,380,695,380,696,380,696,380,695,381,695,380,696,380,696,380,696,379,696,407,669,380,696,380,695,406,670,380,1772,380,1771,380,1772,380,695,380,696,380,1771,381,695,380,29381,5043,2130,380,1772,380,695,381,695,380,696,406,1745,380,697,379,696,406,670,379,696,380,1772,380,696,379,1771,381,1771,381,694,407,1746,405,1746,384,1768,379,1772,407,1744,381,695,380,1771,381,696,380,696,379,696,380,696,406,669,380,696,380,1772,406,669,380,696,380,1772,380,696,379,696,406,670,379,697,405,671,379,696,406,670,407,669,383,693,379,1772,380,1770,408,669,380,696,379,1772,380,1772,405,1746,405,671,379,697,379,696,380,695,381,696,380,695,406,670,407,669,406,670,380,1771,380,696,382,693,380,697,379,696,380,1770,381,696,380,696,380,696,406,670,379,696,380,696,405,671,379,697,379,696,380,696,380,695,406,671,379,696,406,669,406,671,379,696,380,696,407,669,380,696,405,1746,380,1772,405,1745,381,695,406,670,380,696,380,696,379,1772,380,1772,405,1746,380,1771,381,1771,406,669,406,1746,380,696,380,695,381,696,379,696,380,696,380,695,406,671,405,670,380,696,409,667,379,697,379,696,406,670,379,696,406,1745,381,696,380,696,379,696,406,670,405,671,405,670,380,696,406,670,380,695,407,670,404,671,407,669,380,696,379,696,406,670,380,695,380,696,380,696,380,696,380,695,407,669,407,669,380,696,380,696,406,670,405,670,406,1745,380,1772,380,696,379,1772,380,695,381,1770,408,1746,379,696,379}, //16C +{5043,2130,405,1746,380,697,379,696,380,696,405,1746,405,671,379,696,407,669,406,670,406,1745,380,696,380,1771,381,1771,380,696,380,1771,380,1772,380,1771,380,1772,405,1746,380,696,380,1772,380,696,379,697,379,696,405,671,379,696,380,696,379,1773,379,697,379,696,380,1772,406,669,406,669,381,696,379,1772,380,696,380,696,405,670,380,696,380,696,380,696,379,696,380,696,380,696,379,697,379,696,380,695,380,697,379,696,407,1743,409,1744,380,1771,380,696,380,696,405,1747,406,669,380,29357,5067,2130,380,1771,380,697,379,696,380,696,379,1772,380,696,380,695,405,672,379,696,380,1771,406,670,407,1744,380,1772,380,696,380,1771,380,1772,380,1772,406,1744,407,1745,380,696,380,1772,379,697,405,670,380,696,379,696,380,696,380,696,380,1771,380,696,406,671,378,1771,407,671,379,696,380,696,379,696,380,696,380,696,380,696,379,696,380,696,380,1772,379,1771,381,695,380,697,379,1771,381,1771,380,1771,380,696,380,696,380,696,379,697,379,696,380,696,380,696,379,696,380,696,380,1771,381,695,382,694,380,695,381,695,381,1771,380,696,380,696,379,696,380,696,380,695,381,696,433,642,406,670,380,695,407,669,380,696,380,696,380,695,380,695,381,696,380,696,405,671,406,669,406,670,380,695,380,696,380,696,380,1771,380,696,380,696,380,695,406,1746,380,1773,405,1745,380,1771,380,1773,379,697,405,1746,379,696,380,696,379,696,406,670,380,695,381,696,406,670,379,696,380,696,380,695,406,670,380,695,381,696,380,696,379,1772,380,695,380,696,380,696,380,696,379,696,406,670,380,697,379,696,379,697,379,697,379,696,380,696,379,696,380,696,381,695,379,697,379,697,379,696,380,696,380,696,379,697,379,696,380,695,381,695,380,697,379,696,380,1771,380,695,381,1771,380,1771,381,695,407,1745,405,1747,379,696,380}, //17C +{5044,2129,381,1772,379,696,406,670,405,671,380,1771,380,696,406,668,382,696,379,696,380,1771,380,696,380,1771,381,1771,380,695,381,1771,380,1772,380,1771,381,1772,379,1771,381,695,380,1772,406,670,379,696,380,696,379,697,380,695,381,695,380,1772,380,695,380,696,380,1771,380,696,380,696,380,696,380,1771,380,696,380,695,381,695,380,696,380,695,381,695,380,696,380,696,380,696,379,696,381,695,380,696,380,695,381,696,379,1772,380,1771,380,1772,380,696,379,696,380,1772,380,695,380,29381,5043,2130,380,1771,381,695,380,696,380,696,380,1771,380,695,381,696,380,696,379,696,380,1771,406,671,379,1771,381,1770,381,696,380,1771,380,1772,380,1771,406,1745,381,1771,380,696,380,1771,407,669,380,697,379,696,380,696,379,697,379,696,380,1771,380,696,380,696,380,1771,406,670,380,696,380,695,380,697,379,696,380,695,381,696,380,695,380,696,380,1770,381,1772,380,696,404,672,379,1772,380,1771,380,1772,380,695,380,697,379,697,379,696,380,696,379,696,380,696,380,695,380,696,380,1771,381,696,379,696,405,671,380,696,380,1771,380,696,380,696,380,696,379,696,380,696,380,695,381,696,379,696,380,696,380,695,380,696,380,696,380,696,380,695,380,696,380,696,380,695,406,670,380,696,380,1771,381,695,380,696,380,1771,380,696,380,696,380,696,380,1771,380,1772,379,1772,380,1772,379,1772,379,697,405,1746,380,695,381,696,379,696,380,696,405,671,379,696,407,669,380,696,379,696,405,672,379,696,379,696,407,669,380,696,380,1772,379,696,405,671,380,696,379,696,406,670,380,695,381,696,405,670,406,670,406,669,380,696,380,696,405,671,379,696,406,670,405,672,405,669,381,695,407,669,380,696,405,671,379,696,380,695,407,670,379,696,407,669,406,1745,407,1744,408,1744,407,1745,405,671,406,1745,406,1745,406,670,406}, //18C +{5044,2130,380,1771,379,697,380,696,380,696,379,1772,380,696,380,696,380,695,380,695,381,1772,379,697,379,1772,380,1771,380,695,381,1772,379,1771,381,1772,379,1773,379,1771,380,695,381,1771,381,696,379,696,380,695,381,695,380,696,380,696,380,1771,380,696,380,696,380,1771,380,696,380,696,379,697,379,1773,379,695,381,695,380,697,379,695,381,696,380,696,379,696,380,695,381,696,380,695,380,696,380,696,379,696,380,696,380,1771,381,1770,381,1771,381,695,380,696,380,1772,379,696,380,29380,5044,2130,380,1771,380,695,381,696,380,696,379,1772,405,671,380,696,379,696,380,695,381,1772,379,695,381,1771,380,1772,380,696,380,1771,380,1771,381,1771,406,1745,381,1770,381,696,380,1771,405,672,379,696,380,696,380,695,380,696,380,695,381,1772,405,670,405,670,381,1771,380,696,380,696,380,695,380,696,380,696,380,696,380,695,380,696,380,696,380,1771,380,1772,405,671,380,695,380,1772,380,1771,380,1771,380,698,378,696,380,695,381,695,381,694,381,696,380,696,380,696,379,696,380,1772,380,694,381,696,380,696,380,694,381,1772,380,695,381,695,380,696,380,695,381,695,380,696,380,696,380,696,380,696,379,696,380,695,381,695,381,695,380,697,379,695,381,696,380,695,380,696,380,696,380,695,381,1771,380,696,380,1770,381,696,380,695,381,696,387,1763,381,1772,379,1771,381,1771,380,1771,381,696,379,1771,381,695,380,695,381,696,380,695,383,693,380,696,380,696,380,695,380,700,376,696,380,696,379,696,380,697,379,696,380,1771,407,670,379,696,379,696,380,696,380,696,380,696,380,695,380,697,379,695,380,696,380,697,379,696,379,697,379,695,407,670,380,696,379,697,379,696,380,696,380,696,406,669,380,696,406,670,379,696,380,696,380,696,380,1771,380,696,380,696,379,697,406,1745,406,1745,406,1745,407,669,406}, //19C +{5069,2104,406,1745,380,696,380,700,376,696,380,1771,380,696,380,696,379,696,380,697,379,1772,406,669,407,1744,407,1745,380,697,379,1771,381,1770,407,1745,406,1746,380,1772,406,669,405,1746,381,695,380,696,406,670,406,670,379,697,379,696,406,1746,379,696,380,696,380,1772,379,696,406,670,405,670,381,1770,381,696,380,695,380,696,406,670,380,696,380,696,406,669,380,696,380,696,380,696,379,696,382,694,380,696,380,696,379,1772,384,1767,380,1772,406,675,374,696,380,1771,381,695,407,29354,5043,2130,380,1771,407,670,405,671,379,696,380,1772,380,695,380,696,380,696,380,695,381,1770,381,696,406,1745,406,1745,381,696,379,1771,381,1772,405,1745,407,1745,380,1772,379,697,379,1772,380,696,406,670,379,696,380,696,379,697,379,695,381,1771,381,696,379,696,380,1772,380,695,380,697,379,696,380,696,379,697,379,696,380,696,380,695,381,695,380,1771,381,1771,380,695,381,695,380,1772,380,1772,406,1745,380,695,381,695,380,697,379,696,407,669,405,671,379,696,380,696,380,696,380,1771,380,696,380,696,379,696,380,696,380,1772,379,696,380,696,407,669,379,696,380,696,380,696,405,670,406,671,379,696,380,695,381,696,379,696,380,696,380,696,379,696,380,696,380,696,380,694,381,696,380,1771,380,1771,381,696,379,1772,380,697,379,695,406,671,379,1772,380,1771,380,1772,380,1771,380,1772,380,695,380,1772,380,695,381,696,379,696,380,696,380,695,381,696,379,696,380,696,380,695,381,695,380,695,381,696,380,696,379,696,380,1771,381,696,379,696,380,696,405,670,405,671,407,669,380,695,380,697,406,670,379,695,381,695,381,695,380,696,380,696,380,696,380,696,379,696,380,695,381,696,379,696,380,696,380,695,380,697,405,670,380,696,405,671,379,1772,406,1746,379,696,406,670,380,1770,381,1771,381,1771,380,696,406}, //20C +{5065,2131,379,1773,379,696,379,696,380,697,379,1771,407,669,380,696,380,696,380,695,380,1772,380,696,380,1771,380,1772,380,696,379,1772,406,1746,410,1740,381,1771,380,1772,380,695,380,1772,380,696,405,671,381,694,380,696,380,696,380,696,379,1772,380,696,380,695,380,1771,381,695,381,696,405,671,379,1771,381,696,404,671,380,696,380,695,380,696,380,696,380,695,381,695,380,696,380,696,380,696,406,670,404,671,380,696,381,1770,380,1772,396,1754,381,695,381,696,405,1746,380,696,380,29380,5070,2103,407,1745,380,696,406,669,407,670,405,1746,380,695,380,696,405,671,380,696,380,1770,381,696,380,1770,381,1772,381,694,381,1770,407,1745,380,1772,380,1771,407,1744,381,695,380,1772,380,695,407,670,379,697,404,671,380,695,406,670,406,1745,381,695,380,697,379,1771,407,669,381,696,379,696,380,695,407,670,379,696,380,696,380,696,404,671,380,1772,380,1771,407,669,380,696,379,1772,380,1771,381,1771,380,696,406,670,380,695,406,670,407,668,407,669,381,695,380,696,380,696,379,1772,380,696,380,696,379,696,380,696,380,1771,381,695,380,696,380,696,405,671,379,696,380,696,380,696,406,669,380,697,379,696,380,696,405,670,380,696,380,695,407,669,380,696,380,695,381,696,406,670,379,696,380,696,380,1771,380,1771,407,669,380,696,407,669,380,1771,380,1772,380,1770,381,1771,381,1771,381,695,380,1772,380,695,380,697,406,669,379,696,380,697,379,696,406,669,381,695,380,696,380,696,380,695,381,695,380,696,380,695,380,1772,406,670,380,696,380,695,380,696,406,670,380,695,407,669,405,671,380,696,387,688,380,696,380,696,380,696,380,696,405,670,380,696,406,669,380,697,405,669,381,695,407,669,406,671,379,696,380,695,397,678,381,696,380,1771,381,696,379,1772,379,696,380,1771,406,1746,381,1770,407,670,404}, //21C +{5069,2103,381,1771,380,696,405,670,380,696,406,1745,381,695,381,696,405,670,380,696,380,1770,381,696,380,1771,406,1745,407,670,379,1772,380,1771,380,1772,380,1772,379,1772,405,671,405,1746,380,696,405,671,380,696,389,687,379,696,380,695,407,1745,380,696,407,667,408,1745,406,670,380,696,406,669,380,1772,405,671,379,696,406,670,380,696,379,696,405,671,380,696,406,670,406,670,379,696,405,670,407,670,379,696,380,696,380,1771,380,1772,380,1771,406,670,380,696,380,1771,380,696,406,29355,5043,2130,380,1771,380,696,380,695,406,671,379,1772,380,696,380,695,380,697,379,696,380,1771,380,696,380,1771,381,1771,380,695,381,1771,380,1772,380,1770,381,1772,380,1771,380,696,404,1747,381,694,381,696,380,696,379,696,380,697,379,696,380,1772,379,696,380,696,380,1772,379,697,379,696,380,696,379,696,380,696,380,696,380,696,379,696,380,696,380,1771,380,1772,380,695,380,696,380,1772,380,1771,380,1771,380,696,380,696,405,671,380,696,379,696,380,696,380,696,379,697,379,696,380,1771,406,670,380,695,381,696,379,697,406,1745,380,696,380,695,380,695,406,671,380,695,381,695,380,696,380,696,380,695,380,696,380,696,380,695,381,696,380,695,380,696,380,696,379,696,380,696,380,695,381,1771,380,696,380,1771,380,1772,380,696,405,671,379,696,380,1771,380,1772,380,1771,380,1771,381,1772,380,695,380,1771,381,696,380,695,380,696,379,697,379,696,380,696,380,696,380,695,380,696,380,696,406,669,406,671,380,695,380,696,380,1771,380,696,380,695,380,697,379,696,380,696,380,696,379,696,380,696,380,695,381,696,380,695,380,696,380,695,380,697,379,696,380,696,406,670,380,695,380,696,405,671,380,696,380,696,379,697,379,695,381,695,380,696,380,1771,381,1770,381,1771,381,695,380,1772,380,1771,407,1744,381,695,380}, //22C +{5042,2131,379,1772,380,696,406,670,379,696,380,1772,379,697,404,671,380,696,379,697,379,1773,379,696,379,1772,380,1772,379,697,379,1772,380,1771,380,1772,380,1771,380,1772,379,696,381,1771,380,696,379,696,380,696,380,696,379,697,379,697,379,1772,380,696,379,696,380,1772,379,696,380,696,379,697,379,1773,379,695,381,696,379,696,380,697,379,696,380,696,379,697,379,696,380,697,379,696,382,693,380,697,379,696,405,671,379,1772,380,1772,379,1772,405,671,379,696,380,1772,380,695,380,29382,5042,2130,380,1771,381,696,379,697,406,669,380,1771,380,696,380,696,380,696,380,696,379,1772,380,696,380,1771,380,1772,380,696,379,1772,380,1772,379,1772,379,1773,379,1772,380,695,380,1773,379,696,380,695,380,696,380,696,380,696,380,696,405,1746,380,695,408,669,379,1772,380,696,379,697,379,696,380,696,380,696,379,696,380,696,379,697,380,695,380,1772,379,1773,379,696,380,696,380,1771,380,1772,379,1771,407,670,406,670,380,696,379,696,379,698,379,696,380,695,380,696,380,696,379,1772,380,696,379,697,379,697,379,696,380,1772,379,697,405,670,380,696,380,696,405,671,379,696,380,696,380,695,380,696,406,670,380,696,406,669,407,669,380,695,408,669,380,698,377,697,378,697,380,696,380,695,380,1772,379,1772,406,1746,405,671,405,670,380,696,379,1772,380,1772,380,1771,380,1772,406,1745,380,696,380,1771,380,696,380,695,381,696,379,696,380,696,380,696,379,696,407,670,379,696,379,697,379,697,379,696,407,668,381,696,379,1772,380,696,379,697,405,670,380,696,380,696,379,697,379,696,380,696,379,697,379,697,404,671,380,696,380,695,380,696,380,697,379,695,406,670,381,695,380,696,406,670,379,697,379,696,380,696,405,675,376,695,407,669,406,1745,380,695,381,696,406,1746,379,1771,407,1745,406,1745,408,668,380}, //23C +{5043,2130,381,1771,380,696,380,696,380,695,381,1770,381,696,380,695,380,696,380,696,379,1772,380,697,379,1771,380,1772,380,696,380,1771,380,1772,380,1771,380,1772,379,1772,380,696,380,1771,406,671,379,696,405,670,380,695,408,669,380,695,407,1745,380,696,380,696,380,1771,380,696,380,695,381,696,379,1772,380,696,379,696,380,696,380,695,405,672,379,696,380,695,380,696,381,695,380,697,379,696,405,670,380,697,379,695,381,1772,404,1746,381,1772,379,696,380,696,380,1771,407,668,381,29380,5044,2130,380,1770,381,696,380,695,381,696,379,1772,380,696,405,671,379,697,379,696,379,1773,384,691,407,1744,381,1771,405,672,406,1745,404,1746,380,1772,380,1772,405,1745,381,696,380,1772,379,697,379,695,381,695,380,697,379,695,381,696,380,1772,379,696,380,695,380,1773,379,696,380,696,379,696,433,643,380,696,379,697,379,696,380,696,380,696,380,1771,380,1771,380,697,379,696,380,1772,379,1772,406,1745,406,670,380,695,381,695,380,696,380,697,379,696,380,696,379,696,380,695,381,1772,380,695,380,696,380,696,380,695,380,1772,380,696,380,695,380,697,379,696,380,695,380,697,405,670,405,671,380,696,379,696,380,696,380,696,379,697,379,696,380,697,403,672,380,695,380,696,380,696,380,1771,380,1771,407,1745,406,1745,381,696,379,696,380,697,379,1771,380,1772,380,1771,406,1746,406,1745,380,697,379,1772,379,697,379,696,380,696,379,697,379,697,379,695,381,696,406,669,380,697,379,696,380,696,379,697,379,695,381,696,379,1771,407,670,380,696,380,695,380,696,380,696,380,696,379,696,405,671,380,696,380,695,406,670,380,696,380,696,379,697,379,696,380,696,380,696,380,696,379,696,380,696,405,671,379,697,405,670,380,696,379,697,379,696,380,1772,379,1771,381,696,380,1770,381,1771,380,1773,379,1772,379,696,406}, //24C +{5043,2130,381,1772,379,696,380,695,380,696,380,1772,380,695,380,697,404,670,381,696,379,1772,406,670,380,1771,380,1772,406,669,406,1746,380,1772,379,1772,380,1771,380,1772,380,696,379,1772,380,696,380,696,379,697,379,697,379,696,379,697,384,1766,381,696,380,696,379,1772,380,697,404,670,380,696,380,1772,380,696,379,696,380,696,380,695,405,671,380,696,380,695,381,696,379,696,380,697,379,696,380,696,379,696,380,696,380,1772,379,1771,381,1772,379,696,406,670,380,1771,380,696,380,29381,5043,2130,380,1770,381,697,379,696,380,695,380,1771,381,696,379,696,380,697,379,696,380,1772,405,670,405,1747,379,1772,380,696,379,1772,380,1772,380,1771,380,1772,380,1772,379,696,380,1771,404,672,380,696,380,695,380,696,406,669,381,695,380,1772,380,696,379,696,380,1772,380,696,380,696,379,696,380,696,405,670,381,696,379,696,380,696,380,696,379,1772,380,1772,379,697,379,696,380,1771,380,1772,380,1771,380,696,380,696,380,696,379,697,379,697,379,696,379,696,407,670,379,696,380,1772,379,696,407,668,381,697,378,697,405,1746,380,695,380,697,379,695,381,696,380,695,380,696,380,696,380,696,407,669,379,696,380,696,380,696,379,697,379,695,381,697,379,696,380,696,379,696,380,697,379,696,379,697,379,696,393,684,378,1772,380,697,379,696,380,1770,381,1771,382,1770,406,1746,379,1773,379,696,380,1771,380,696,409,667,380,695,381,696,379,696,380,695,381,695,435,641,380,696,380,695,406,671,379,696,380,695,380,696,380,1772,380,695,380,697,379,696,380,696,406,670,379,697,379,696,380,696,380,695,406,670,406,670,380,695,380,696,380,696,380,696,379,697,379,695,381,696,380,696,379,696,380,696,380,696,380,696,380,695,380,696,380,696,380,1771,406,670,406,1745,380,1772,380,1772,379,1772,386,1765,380,696,380}, //25C +{5044,2129,408,1743,407,670,406,670,379,696,380,1772,406,669,407,669,407,669,383,692,408,1744,380,697,379,1771,406,1746,405,671,380,1771,380,1772,380,1771,380,1771,381,1772,405,669,407,1745,406,670,380,696,405,670,406,671,379,696,406,670,406,1746,405,670,406,670,405,1746,380,696,406,670,380,695,381,1771,406,670,380,695,406,670,380,696,405,671,406,669,380,696,380,696,380,695,380,696,380,696,380,695,406,670,407,669,380,1771,381,1771,380,1771,408,669,379,696,380,1771,380,696,406,29355,5043,2130,380,1772,380,696,406,669,407,670,379,1771,407,669,406,670,406,669,406,670,380,1772,380,695,380,1772,380,1772,380,696,406,1745,405,1746,407,1745,406,1745,380,1772,380,696,380,1771,380,695,381,695,380,696,380,696,380,696,380,694,381,1772,379,696,407,669,380,1772,379,696,406,670,407,669,380,695,381,695,380,696,380,696,380,696,379,697,379,1772,379,1772,406,670,380,695,380,1772,380,1771,381,1771,380,695,381,696,380,696,379,696,380,696,380,696,379,697,380,696,406,669,405,1746,380,696,406,670,379,697,379,695,381,1772,379,696,407,670,379,696,379,696,380,696,407,669,405,670,380,696,380,696,406,670,380,696,379,696,406,669,408,669,405,670,407,670,379,696,380,696,405,671,379,1772,379,696,406,671,379,696,380,1772,379,696,380,696,380,1772,406,1745,380,1771,380,1772,405,1746,406,670,380,1771,406,670,407,669,380,695,380,696,407,669,406,670,405,670,381,695,380,696,380,696,380,696,379,696,380,696,406,670,405,1746,404,672,405,670,380,697,405,669,381,695,381,696,379,697,404,671,380,696,405,670,380,696,380,697,378,697,380,695,380,696,380,695,380,697,404,672,379,696,380,696,380,696,406,669,380,696,380,696,379,697,379,695,407,1745,407,1745,380,1771,380,1772,406,1745,380,1771,381,1771,380,696,407}, //26C +{5043,2130,406,1746,379,696,380,697,405,670,380,1772,379,696,380,696,380,695,408,668,380,1772,405,671,405,1746,406,1745,381,696,405,1746,379,1772,380,1770,381,1772,407,1745,379,696,380,1772,380,695,386,691,404,670,381,696,380,696,379,697,379,1772,379,697,379,696,380,1772,380,695,406,670,407,669,380,1771,405,671,380,696,406,670,379,696,380,696,380,696,405,671,379,697,383,693,378,697,380,695,380,697,404,670,381,696,379,1771,381,1771,380,1772,406,670,379,696,406,1746,380,696,379,29381,5043,2130,406,1746,380,696,379,697,379,695,381,1772,379,695,381,697,379,696,379,697,379,1771,381,696,379,1773,379,1772,407,669,405,1746,379,1773,379,1772,380,1771,380,1772,379,697,405,1745,381,696,379,696,380,696,380,695,381,696,379,696,380,1772,405,671,379,697,379,1772,379,696,407,670,404,671,380,696,380,696,379,696,380,696,380,696,379,697,379,1771,380,1772,380,697,379,695,380,1771,381,1771,381,1772,379,696,405,671,405,670,380,697,379,696,379,697,379,697,405,671,379,696,379,1772,380,695,406,671,379,697,379,695,381,1771,380,696,380,696,380,696,379,696,406,671,405,669,380,697,379,697,405,670,380,696,379,697,379,696,380,696,406,670,379,697,379,696,405,671,379,697,379,697,383,693,379,1771,380,696,380,695,381,1772,379,696,380,696,380,1772,379,1772,379,1772,380,1771,406,1746,380,696,379,1772,380,697,381,694,379,697,379,696,380,697,405,670,379,696,380,697,379,696,406,670,379,697,379,696,380,695,406,670,406,1747,405,670,405,671,379,696,380,696,380,696,379,697,379,697,378,697,380,696,379,696,380,696,380,696,379,697,379,697,379,696,379,697,379,696,380,696,380,696,406,670,379,696,380,696,380,696,379,696,380,697,379,696,380,1771,407,668,381,696,380,696,379,697,379,697,379,696,379,1772,380}, //27C +{5044,2130,379,1773,379,696,380,695,381,696,405,1746,380,696,380,695,380,696,380,696,380,1771,380,697,379,1772,379,1771,407,670,380,1771,380,1772,380,1771,380,1772,380,1771,380,695,407,1745,380,696,380,696,380,696,379,697,379,696,380,696,380,1771,380,696,391,685,406,1745,380,696,405,670,405,672,379,1772,380,696,380,699,376,696,380,695,380,697,379,696,380,697,379,695,380,697,405,670,380,696,405,670,380,697,379,696,380,1771,380,1771,381,1771,380,696,380,696,380,1771,380,695,381,29380,5044,2129,381,1770,381,696,380,695,381,696,379,1772,406,670,380,696,379,696,380,696,380,1772,379,696,380,1772,379,1772,405,671,380,1772,379,1772,379,1772,406,1746,379,1771,381,696,380,1771,380,697,379,695,407,670,380,695,380,696,380,695,381,1771,380,695,407,670,405,1746,380,696,406,670,379,696,380,696,380,695,381,695,380,696,405,671,380,695,380,1772,380,1772,379,697,379,696,380,1771,408,1744,380,1771,380,696,380,695,391,686,380,695,407,669,380,695,381,696,380,696,379,696,380,1771,380,696,380,696,405,670,380,696,407,1744,381,696,407,669,379,696,380,696,380,696,379,696,380,696,380,696,380,696,379,696,380,696,380,696,405,671,379,696,380,696,404,672,379,696,380,697,379,696,380,1770,382,1771,379,697,379,697,379,1771,380,697,379,696,380,1772,379,1772,380,1771,380,1772,380,1771,380,696,380,1772,379,696,380,696,380,696,380,695,381,695,380,696,405,671,407,669,379,696,380,696,380,696,379,696,380,697,379,697,379,1771,380,696,380,696,406,669,380,697,379,695,381,696,379,696,406,671,379,696,380,695,380,697,379,697,405,670,380,695,380,697,379,696,407,669,380,696,404,671,380,696,380,696,379,696,380,696,380,696,379,697,433,642,380,1771,406,1746,380,696,380,696,379,696,380,696,380,697,378,1772,380}, //28C +{5043,2129,381,1772,380,696,380,696,379,697,382,1769,406,671,378,695,407,674,375,696,380,1773,406,669,379,1772,380,1772,379,697,379,1772,380,1771,380,1772,380,1772,379,1772,380,696,380,1772,379,696,380,696,379,697,379,696,380,696,379,697,379,1772,407,669,379,697,380,1771,407,669,379,697,380,696,379,1772,379,697,379,697,379,696,379,696,406,671,379,696,406,669,381,695,380,697,406,669,380,696,379,697,379,696,380,696,379,1772,406,1745,381,1772,379,696,380,697,383,1766,406,671,380,29381,5068,2105,379,1772,380,697,379,696,380,696,380,1770,381,696,379,696,380,697,379,696,380,1771,380,697,379,1772,379,1772,380,696,380,1771,380,1772,379,1773,379,1772,380,1771,380,696,380,1771,380,696,380,696,380,696,379,697,379,697,379,695,381,1771,380,696,380,696,379,1772,406,670,380,696,379,697,379,696,405,671,380,696,379,696,406,671,379,696,379,1772,407,1745,380,695,380,697,405,1745,407,1745,380,1771,406,670,380,696,406,670,379,697,379,697,379,696,380,695,407,669,380,696,380,1771,380,696,380,697,379,696,379,697,379,1772,380,696,379,696,406,671,379,696,405,671,380,696,406,669,405,671,379,697,379,697,379,696,406,670,406,670,379,696,406,670,380,695,401,676,405,671,379,696,380,697,378,696,380,1771,381,695,380,1771,381,696,379,696,380,1771,381,1772,405,1746,380,1771,380,1772,379,696,380,1772,380,695,408,669,405,671,379,695,380,697,405,670,405,671,380,696,406,670,379,696,380,695,381,696,379,697,405,671,379,1771,380,696,380,697,379,695,381,695,406,671,379,696,380,696,380,696,379,696,379,697,379,696,380,696,380,696,380,696,380,696,405,670,380,696,380,696,406,669,406,670,380,696,380,695,381,696,379,695,381,695,381,696,404,1747,380,696,380,1772,379,696,380,696,380,695,380,696,406,1745,406}, //29C +{5043,2130,380,1771,407,669,406,670,380,695,406,1746,434,642,380,695,407,669,380,696,406,1746,379,696,380,1772,379,1773,405,670,380,1772,379,1773,405,1745,380,1772,380,1771,380,696,380,1772,379,697,405,670,379,697,379,696,407,669,380,696,380,1772,379,695,407,670,380,1771,380,697,379,696,405,671,379,1771,381,696,405,670,380,696,380,696,379,696,380,697,379,697,379,695,406,670,407,669,407,669,380,695,380,696,407,669,405,1747,379,1772,405,1747,406,669,406,669,407,1745,406,670,380,29381,5043,2130,380,1771,406,670,380,696,380,695,381,1771,380,696,379,697,379,696,380,696,380,1771,380,696,406,1746,379,1772,405,671,406,1745,380,1772,406,1746,379,1771,381,1771,380,696,405,1746,380,696,379,697,406,670,380,695,380,696,380,696,406,1745,380,695,381,695,380,1772,380,696,405,670,381,695,406,671,379,697,378,696,380,696,380,697,379,695,381,1771,380,1771,405,671,380,696,406,1745,382,1769,381,1771,380,696,380,696,380,696,379,695,381,696,380,697,379,696,379,696,404,672,380,1770,381,696,380,696,380,696,405,670,380,1772,405,671,379,696,380,697,379,696,405,671,379,695,381,697,379,696,379,696,406,670,405,671,380,696,405,670,380,696,380,696,380,695,381,695,380,695,381,695,380,1771,408,669,406,1745,380,696,380,1772,405,671,406,668,381,1771,380,1771,381,1772,379,1771,381,1771,380,696,380,1772,379,696,380,696,380,696,405,671,379,696,380,696,380,695,407,668,407,671,379,696,380,695,380,697,379,696,406,669,381,1771,380,697,379,696,405,670,380,696,380,696,380,695,406,670,407,668,407,669,407,670,380,695,406,670,380,696,380,696,379,697,379,696,380,695,399,677,380,696,380,695,406,669,381,696,380,695,381,696,379,696,380,696,380,1771,405,1747,380,1771,405,672,379,696,380,695,381,696,379,1771,407}, //30C +{5043,2129,383,1769,380,700,375,696,380,696,405,1746,380,696,406,670,380,696,380,696,379,1772,380,696,380,1772,379,1772,406,669,380,1772,380,1772,379,1772,380,1771,407,1745,404,672,379,1771,381,696,379,696,380,696,380,697,379,696,380,696,379,1773,379,696,405,671,379,1772,405,671,407,669,379,696,380,1771,381,695,380,696,380,696,405,670,380,696,380,696,406,670,379,696,406,670,380,696,380,696,405,671,379,697,379,696,406,1745,380,1771,380,1772,406,670,380,696,405,1746,380,696,380,29380,5043,2130,380,1772,406,669,380,697,379,696,380,1772,379,697,407,668,380,696,406,670,379,1772,399,677,379,1772,380,1772,379,697,379,1772,379,1772,380,1772,405,1746,380,1772,380,696,405,1746,380,695,407,670,379,697,379,696,379,697,379,696,380,1772,379,697,379,696,380,1772,379,697,379,696,380,696,379,697,405,671,379,697,379,696,380,696,379,697,379,1771,381,1771,380,696,380,696,379,1772,380,1772,405,1746,380,696,380,695,380,697,379,696,380,696,379,697,379,696,380,697,379,696,379,1772,380,695,406,671,379,697,379,695,381,1772,380,696,379,696,379,697,405,670,380,696,380,696,380,695,380,696,380,697,404,671,406,670,405,671,379,696,380,695,380,697,379,696,380,696,379,696,405,671,380,697,379,1771,380,1772,405,671,379,1772,380,696,380,695,407,1745,406,1745,380,1772,380,1772,379,1772,380,696,380,1771,405,671,379,696,380,696,380,696,405,671,379,697,379,696,406,670,380,696,379,697,379,696,380,696,406,670,379,697,379,1772,379,697,379,696,380,696,380,696,379,696,380,696,407,670,406,668,406,670,380,696,380,696,379,697,379,696,380,696,379,697,406,669,380,696,380,696,379,696,380,697,379,697,378,697,379,697,405,670,380,695,380,697,379,1773,379,696,407,668,381,1771,380,696,379,696,406,671,379,1772,379}, //31C +{5070,2104,379,1772,380,696,407,669,379,697,379,1772,379,696,380,696,380,696,380,695,380,1771,381,696,380,1771,380,1771,380,696,405,1747,391,1760,380,1771,381,1771,407,1745,380,695,380,1772,380,696,405,671,379,696,380,696,379,697,379,696,380,1772,380,696,379,696,380,1772,379,697,379,696,380,695,406,1746,380,696,380,696,380,696,379,697,379,696,380,696,391,685,379,696,383,693,380,696,380,696,379,696,382,694,380,696,379,1772,380,1771,380,1772,380,696,380,695,380,1771,381,696,380,29380,5043,2131,379,1772,380,696,380,696,398,677,380,1772,405,671,379,696,380,696,380,696,405,1746,406,669,380,1772,380,1772,379,696,380,1772,379,1772,380,1772,379,1772,380,1772,406,670,405,1746,380,695,380,696,405,671,380,696,380,696,379,696,380,1771,380,697,379,696,406,1746,380,695,380,696,380,696,380,695,406,670,380,697,379,695,406,671,405,671,379,1772,406,1745,380,695,380,697,379,1773,379,1771,381,1771,380,696,380,696,379,696,380,697,379,696,380,696,379,697,379,696,405,670,381,1771,380,696,379,696,406,670,380,696,405,1746,406,671,379,696,380,696,379,697,379,696,380,696,380,695,380,696,406,670,380,695,381,696,404,671,381,695,380,695,381,696,379,696,380,696,379,696,380,697,379,1771,381,1771,380,1772,379,696,380,1771,381,695,381,695,380,1772,380,1771,380,1772,380,1772,379,1772,379,697,379,1771,381,696,379,696,380,696,380,696,379,696,406,671,379,696,406,670,380,695,380,696,380,696,380,696,404,671,380,695,381,1771,380,696,380,696,379,697,380,696,379,696,380,696,397,678,380,697,379,696,380,696,379,697,403,673,379,695,380,697,379,697,406,669,380,696,380,696,379,697,379,696,380,696,405,671,379,697,379,697,379,696,379,697,379,1772,380,1771,380,696,380,1772,379,696,380,696,407,668,380,1771,381} //32C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/codebook.txt b/src/codebook.txt index 419126f..7fa5353 100644 --- a/src/codebook.txt +++ b/src/codebook.txt @@ -31,11 +31,11 @@ object id: 3 s_light_toggle 4 s_ac_toggle 5 s_pm_toggle -6 s_time (txt) -7 s_date (txt) -8 s_outside_temp (txt) +6 s_time (txt) -> date +7 s_date (txt) -> time +8 s_outside_temp (txt) -> temp_outside 9 idle_timer (timer) // wait one min for inactivity then dim screen -10 s_weather_icon (pic) +10 weather_icon (pic) picture id: diff --git a/src/ir_codes.cpp b/src/ir_codes.cpp index f843ba4..f934419 100644 --- a/src/ir_codes.cpp +++ b/src/ir_codes.cpp @@ -1,103 +1,108 @@ #include -const uint16_t ir_code_cool[4][16][91] = { +const uint16_t ir_code_cool[4][17][407] = { // Fan Speed Auto { - {8976, 4498, 562, 546, 589, 547, 588, 1649, 588, 548, 587, 1649, 588, 547, 589, 548, 587, 564, 589, 547, 588, 1649, 588, 548, 587, 547, 588, 548, 588, 548, 588, 547, 587, 566, 587, 548, 587, 548, 588, 548, 587, 548, 588, 548, 587, 549, 586, 548, 587, 565, 588, 549, 586, 548, 588, 548, 588, 548, 560, 577, 584, 549, 586, 551, 585, 565, 588, 549, 587, 548, 560, 576, 560, 574, 587, 549, 587, 550, 586, 548, 588, 570, 560, 576, 586, 549, 560, 575, 560, 1665, 560}, // 15C - {8976, 4498, 560, 548, 587, 549, 587, 1650, 587, 549, 587, 1649, 586, 550, 587, 548, 587, 565, 587, 549, 586, 1652, 586, 549, 586, 549, 587, 548, 587, 549, 586, 549, 587, 1667, 587, 548, 587, 548, 587, 549, 588, 547, 587, 549, 587, 549, 587, 548, 587, 565, 587, 549, 586, 549, 587, 549, 586, 548, 587, 549, 587, 549, 587, 547, 589, 564, 587, 548, 588, 548, 587, 548, 587, 549, 587, 550, 585, 549, 587, 549, 586, 570, 587, 548, 587, 550, 586, 549, 587, 536, 587}, // 16C - {8976, 4499, 531, 577, 558, 577, 559, 1678, 559, 577, 558, 1679, 559, 577, 558, 577, 558, 595, 558, 577, 558, 1679, 558, 577, 559, 576, 559, 578, 558, 576, 559, 1679, 558, 594, 558, 578, 558, 577, 559, 576, 558, 578, 558, 577, 558, 577, 558, 578, 558, 594, 559, 577, 558, 577, 558, 578, 557, 578, 558, 577, 559, 577, 557, 578, 559, 593, 559, 577, 558, 577, 559, 576, 559, 577, 558, 578, 557, 578, 559, 576, 559, 599, 558, 1678, 559, 1679, 559, 1678, 558, 1666, 560}, // 17C - {8977, 4498, 561, 549, 587, 547, 588, 1649, 588, 547, 589, 1648, 589, 547, 588, 548, 587, 565, 589, 547, 587, 1650, 587, 547, 589, 548, 588, 546, 589, 547, 588, 1649, 588, 1667, 587, 548, 588, 547, 588, 548, 588, 547, 588, 548, 588, 548, 587, 548, 587, 565, 587, 548, 588, 547, 588, 549, 587, 548, 587, 548, 588, 548, 587, 548, 588, 564, 588, 547, 588, 549, 586, 550, 587, 547, 588, 548, 587, 548, 588, 548, 587, 570, 587, 1649, 588, 1650, 588, 1649, 588, 536, 587}, // 18C - {8998, 4502, 534, 574, 587, 549, 585, 1652, 586, 550, 560, 1677, 560, 575, 586, 550, 561, 591, 587, 548, 586, 1651, 587, 549, 586, 549, 585, 550, 561, 1676, 563, 573, 560, 592, 587, 549, 561, 574, 586, 550, 586, 550, 559, 575, 561, 575, 561, 575, 560, 592, 560, 576, 560, 575, 560, 576, 560, 574, 561, 575, 560, 576, 560, 575, 560, 593, 559, 576, 560, 575, 560, 577, 558, 576, 560, 575, 562, 574, 560, 576, 560, 597, 560, 1676, 562, 1676, 559, 576, 561, 1665, 560}, // 19C - {8978, 4503, 562, 548, 586, 549, 588, 1649, 587, 547, 589, 1649, 588, 547, 588, 548, 587, 565, 590, 546, 587, 1649, 588, 548, 588, 548, 587, 548, 587, 1649, 588, 548, 588, 1666, 588, 547, 588, 547, 588, 549, 587, 548, 588, 547, 588, 547, 589, 547, 587, 565, 588, 547, 588, 549, 587, 548, 587, 549, 587, 547, 588, 548, 588, 547, 588, 564, 589, 547, 587, 549, 587, 548, 588, 548, 588, 547, 588, 547, 588, 547, 588, 570, 588, 1649, 588, 1649, 587, 548, 588, 535, 589}, // 20C - {8977, 4503, 560, 549, 587, 548, 560, 1677, 587, 548, 587, 1650, 587, 549, 586, 549, 586, 567, 587, 548, 587, 1650, 588, 547, 587, 549, 587, 548, 587, 1650, 587, 1650, 588, 565, 588, 547, 587, 549, 587, 548, 587, 548, 587, 548, 588, 548, 587, 549, 587, 565, 586, 549, 587, 548, 588, 548, 587, 549, 586, 549, 587, 548, 587, 548, 588, 565, 588, 547, 588, 548, 587, 548, 588, 548, 587, 548, 587, 548, 588, 548, 587, 570, 588, 1649, 588, 547, 588, 1650, 588, 1635, 589}, // 21C - {8996, 4503, 506, 603, 533, 603, 533, 1703, 534, 602, 532, 1705, 533, 602, 533, 602, 533, 619, 533, 603, 533, 1704, 533, 602, 533, 603, 533, 603, 531, 1705, 533, 1704, 532, 1722, 533, 602, 533, 603, 533, 602, 534, 602, 533, 602, 533, 602, 533, 603, 533, 619, 533, 602, 533, 603, 533, 603, 532, 603, 533, 602, 533, 602, 534, 602, 533, 620, 532, 603, 533, 602, 533, 603, 533, 602, 533, 602, 533, 603, 533, 602, 533, 624, 533, 1705, 533, 602, 533, 1704, 533, 590, 533}, // 22C - {8976, 4504, 560, 549, 587, 548, 587, 1650, 587, 548, 587, 1650, 587, 549, 587, 548, 587, 566, 587, 548, 587, 1649, 589, 548, 587, 548, 587, 1650, 587, 549, 587, 548, 588, 564, 588, 548, 587, 548, 587, 549, 587, 548, 587, 548, 587, 548, 588, 548, 588, 565, 587, 548, 588, 548, 587, 547, 588, 548, 587, 549, 586, 549, 587, 548, 588, 565, 587, 548, 587, 548, 588, 548, 586, 549, 587, 549, 587, 548, 588, 548, 587, 570, 587, 1650, 588, 547, 587, 549, 587, 1637, 588}, // 23C - {8976, 4504, 560, 549, 587, 549, 586, 1651, 586, 549, 586, 1651, 587, 548, 587, 548, 588, 565, 587, 548, 587, 1650, 587, 549, 586, 549, 587, 1650, 587, 549, 586, 549, 587, 1667, 587, 548, 587, 549, 587, 549, 586, 549, 586, 549, 587, 548, 588, 548, 587, 565, 587, 548, 587, 549, 587, 548, 587, 549, 587, 548, 587, 549, 587, 548, 586, 567, 586, 549, 586, 549, 586, 549, 587, 548, 588, 549, 586, 549, 586, 550, 587, 570, 586, 1650, 587, 549, 587, 548, 587, 537, 586}, // 24C - {8977, 4503, 531, 578, 534, 602, 556, 1680, 534, 602, 533, 1704, 556, 579, 557, 579, 533, 619, 533, 603, 532, 1704, 558, 578, 533, 603, 532, 1705, 555, 580, 532, 1705, 557, 595, 557, 579, 556, 579, 557, 579, 557, 578, 557, 579, 557, 578, 557, 578, 557, 596, 557, 578, 557, 579, 557, 577, 559, 577, 559, 576, 558, 578, 557, 578, 558, 594, 559, 577, 558, 578, 558, 577, 558, 577, 559, 577, 559, 576, 560, 575, 560, 598, 558, 578, 558, 1678, 559, 1679, 559, 1666, 558}, // 25C - {8976, 4498, 507, 602, 534, 602, 533, 1703, 534, 602, 533, 1704, 533, 602, 557, 579, 533, 619, 533, 602, 557, 1680, 534, 602, 533, 602, 534, 1703, 534, 602, 556, 1680, 534, 1720, 533, 602, 534, 602, 534, 602, 533, 602, 556, 580, 533, 601, 535, 601, 534, 619, 533, 602, 534, 602, 534, 601, 534, 602, 533, 602, 558, 577, 534, 602, 533, 619, 534, 602, 557, 578, 557, 578, 534, 602, 533, 603, 532, 603, 556, 579, 533, 624, 557, 579, 533, 1704, 533, 1704, 533, 590, 533}, // 26C - {8977, 4503, 533, 576, 560, 575, 559, 1679, 559, 577, 559, 1677, 559, 576, 559, 580, 556, 593, 559, 577, 559, 1677, 561, 575, 559, 576, 560, 1678, 559, 1678, 560, 575, 559, 593, 559, 577, 559, 576, 560, 575, 560, 576, 559, 576, 560, 576, 560, 576, 559, 592, 560, 576, 560, 575, 560, 576, 559, 576, 560, 576, 559, 577, 558, 576, 560, 593, 559, 576, 560, 575, 561, 575, 560, 575, 559, 577, 559, 576, 560, 576, 559, 598, 560, 576, 560, 1677, 558, 577, 559, 1667, 559}, // 27C - {8996, 4504, 483, 626, 533, 602, 510, 1727, 533, 602, 533, 1704, 533, 602, 534, 602, 510, 642, 533, 603, 533, 1704, 532, 602, 534, 602, 533, 1704, 533, 1704, 533, 603, 512, 1742, 531, 604, 532, 603, 533, 603, 531, 604, 532, 603, 532, 603, 533, 603, 532, 620, 532, 604, 531, 604, 531, 604, 533, 602, 511, 626, 532, 603, 509, 626, 510, 643, 531, 604, 532, 603, 533, 603, 532, 603, 531, 605, 532, 602, 533, 602, 533, 625, 531, 605, 532, 1704, 533, 603, 533, 590, 534}, // 28C - {8977, 4497, 508, 601, 534, 601, 535, 1702, 535, 601, 534, 1703, 534, 601, 535, 601, 534, 618, 534, 601, 535, 1702, 534, 602, 535, 600, 534, 1703, 534, 1703, 534, 1704, 534, 618, 534, 601, 534, 602, 534, 601, 534, 601, 535, 600, 535, 601, 535, 601, 534, 618, 534, 602, 534, 600, 535, 601, 535, 600, 535, 601, 534, 602, 533, 602, 534, 619, 534, 600, 535, 601, 534, 602, 533, 602, 535, 600, 535, 601, 534, 601, 535, 623, 533, 602, 534, 601, 534, 1703, 535, 1690, 534}, // 29C - {8978, 4503, 533, 575, 561, 575, 559, 1678, 559, 577, 559, 1678, 559, 577, 558, 576, 560, 593, 559, 576, 560, 1677, 560, 575, 559, 577, 560, 1677, 560, 1677, 559, 1679, 558, 1696, 559, 576, 559, 576, 560, 576, 559, 576, 559, 576, 560, 576, 560, 575, 559, 594, 559, 576, 560, 575, 560, 576, 560, 575, 560, 576, 559, 576, 560, 575, 560, 594, 558, 576, 560, 575, 559, 577, 560, 575, 560, 576, 559, 577, 561, 574, 559, 599, 559, 576, 559, 579, 557, 1677, 560, 564, 559} // 30C + +{5043,2131,404,1747,379,697,379,697,379,695,407,1746,379,698,378,697,379,697,379,696,406,1745,380,697,380,1772,379,1772,379,697,379,1773,379,1772,379,1773,379,1772,406,1746,379,697,379,1772,380,695,381,696,405,670,406,671,379,696,380,697,379,1772,405,671,379,696,380,1771,407,670,379,696,380,696,380,1772,405,670,405,672,379,697,379,695,380,697,379,697,379,696,380,696,379,697,380,696,379,696,380,696,380,696,380,696,380,1772,379,1772,380,1772,379,696,380,697,379,1772,379,697,379,29383,5043,2130,380,1772,380,696,405,671,379,697,405,1746,380,696,380,696,405,670,406,670,380,1772,380,696,405,1746,405,1747,405,671,379,1773,405,1746,379,1773,379,1773,379,1773,379,695,380,1772,407,669,379,697,379,696,407,670,379,696,380,696,379,1773,405,671,379,695,380,1773,379,697,405,670,380,696,380,696,405,671,379,697,379,697,379,696,380,696,379,1772,380,1772,379,696,405,671,380,1772,406,1746,380,1772,379,696,380,696,379,697,379,697,379,696,380,696,380,695,381,695,380,697,405,1746,380,696,379,697,406,670,379,697,378,1773,379,697,405,670,380,696,380,696,380,696,380,696,379,696,380,696,380,696,380,695,380,696,380,696,380,697,379,696,405,670,406,671,382,693,405,671,380,695,408,1748,401,1747,379,1773,379,696,406,670,380,695,381,697,378,1773,405,1746,379,1772,380,1772,380,696,379,696,380,697,379,697,379,696,380,697,405,670,379,696,380,696,380,697,379,696,379,697,405,671,379,696,380,696,381,695,379,697,379,1772,380,696,379,696,380,697,379,696,380,696,380,696,405,670,380,697,379,697,379,696,380,696,380,695,380,696,380,697,404,671,406,671,378,697,379,696,380,696,380,696,380,696,379,697,406,669,407,669,380,696,380,696,404,1748,379,1772,380,697,378,1773,379,1772,380,697,378,696,380,696,380}, //16C +{5043,2130,405,1747,380,696,380,696,406,670,384,1767,380,696,380,695,380,702,374,697,405,1746,407,669,405,1747,406,1745,380,696,379,1773,379,1772,380,1772,379,1772,380,1772,379,697,379,1772,380,696,406,670,405,671,406,670,379,696,406,671,379,1771,406,670,380,697,406,1745,405,671,379,697,379,696,405,1747,380,696,380,696,379,696,406,670,380,696,380,696,379,697,380,695,380,696,380,696,379,697,379,697,379,696,380,696,405,1746,406,1746,380,1772,405,671,379,696,382,1770,380,696,379,29384,5042,2130,380,1772,407,670,406,669,380,696,379,1773,379,697,406,669,380,695,381,695,385,1767,406,670,380,1777,402,1744,407,669,380,1772,379,1772,401,1750,381,1771,380,1772,406,670,380,1771,380,697,379,696,406,670,379,697,379,696,380,696,405,1747,406,670,379,696,406,1746,380,696,379,697,379,696,380,696,380,696,380,695,381,695,407,669,380,696,380,1771,380,1772,380,696,380,696,379,1772,380,1772,380,1772,379,697,379,697,404,672,378,696,380,697,405,670,380,696,380,696,379,697,380,1771,380,697,381,694,380,696,380,695,380,1775,377,696,379,696,380,696,380,696,380,696,380,696,406,669,380,697,379,696,408,668,404,672,379,697,406,669,380,695,381,696,380,695,405,672,379,696,380,696,380,696,406,669,381,696,379,1772,380,696,379,697,405,670,406,1746,380,1771,406,1746,380,1771,380,696,380,697,379,696,380,696,379,697,380,695,380,697,379,696,406,670,379,697,379,696,380,696,406,670,380,696,379,697,379,697,379,697,379,1771,380,696,380,696,380,697,379,696,380,696,379,697,379,696,380,696,405,671,379,696,380,696,407,670,405,670,407,669,379,697,405,670,380,696,380,696,405,670,381,696,379,696,380,696,380,696,405,670,406,670,380,696,380,1771,381,696,379,1771,381,1772,409,1743,379,696,380,696,406,670,379}, //17C +{5069,2104,407,1745,380,696,380,696,380,695,380,1772,380,696,380,696,379,696,380,696,380,1772,380,696,379,1772,380,1771,381,696,405,1746,380,1771,381,1771,380,1772,380,1771,380,696,380,1772,380,695,406,670,408,668,380,696,380,695,380,697,406,1745,380,696,380,696,379,1772,407,669,405,671,380,695,406,1746,380,696,405,671,380,695,380,697,380,695,380,695,381,696,379,696,380,696,380,696,406,670,380,696,388,687,380,696,380,1771,381,1771,380,1772,380,696,379,697,405,1746,380,696,380,29361,5064,2130,406,1746,380,696,379,697,405,670,380,1772,380,695,380,696,380,696,380,696,380,1771,380,696,380,1771,381,1771,380,696,406,1745,381,1771,380,1771,381,1771,380,1772,380,696,406,1745,407,669,381,694,381,696,380,695,406,670,380,696,405,1746,380,696,380,696,407,1745,407,669,405,671,379,696,380,695,381,696,380,695,380,696,380,696,406,670,406,1745,380,1772,405,671,379,696,380,1771,381,1772,380,1771,380,696,406,670,384,691,381,695,380,696,380,696,380,695,381,696,379,696,380,1772,406,669,407,669,380,696,380,696,380,1772,406,669,407,669,407,669,380,696,405,671,405,670,380,696,380,696,380,695,408,668,406,669,381,695,380,697,379,696,380,696,407,669,405,671,380,695,408,668,405,1746,381,695,380,695,381,1772,380,696,406,669,380,696,380,1771,406,1746,380,1771,381,1771,406,670,380,696,406,670,405,671,380,695,381,695,407,669,379,697,405,670,380,696,406,670,380,696,407,668,380,696,407,669,405,671,405,670,381,1771,407,673,376,696,380,695,381,695,406,670,380,696,407,669,405,670,381,695,406,670,405,671,406,670,407,668,407,669,380,696,406,670,405,671,380,695,406,670,380,696,405,670,381,696,406,668,407,670,380,695,381,695,380,1772,380,1771,408,1744,407,1745,380,1771,380,696,380,696,380,695,407}, //18C +{5069,2105,380,1771,380,696,406,670,379,697,404,1747,380,696,407,669,380,696,406,670,379,1772,380,696,406,1745,380,1772,406,670,406,1745,406,1746,406,1746,379,1773,379,1772,380,696,379,1773,404,671,380,696,386,690,405,670,405,672,404,671,379,1773,379,696,407,670,379,1771,406,671,406,669,406,670,380,1773,378,696,380,696,380,696,379,697,380,696,379,696,405,670,406,671,379,697,379,696,380,696,380,696,406,670,379,696,380,1772,380,1772,380,1771,380,696,380,695,380,1773,379,697,379,29360,5065,2130,380,1773,379,697,379,697,379,696,379,1771,381,696,380,696,405,672,378,697,379,1772,379,697,379,1772,380,1772,405,672,378,1772,380,1772,380,1771,380,1772,380,1772,379,696,407,1745,380,696,380,697,404,670,380,696,380,697,379,696,379,1773,378,697,380,697,378,1772,407,670,379,697,379,697,378,697,379,697,404,672,381,694,380,696,405,670,380,1775,377,1771,380,697,379,696,380,1772,405,1746,380,1772,380,696,379,697,404,672,379,697,405,671,379,696,379,697,379,696,380,697,379,1772,379,697,379,696,380,697,406,668,380,1772,380,697,379,696,380,696,379,697,379,696,380,697,378,697,380,696,379,696,380,697,379,696,379,697,380,696,379,698,378,697,378,697,380,695,380,696,380,697,379,696,379,1773,379,697,379,1772,379,697,379,697,379,697,379,1772,379,1773,379,1773,379,1772,379,697,379,697,404,672,405,670,379,697,379,697,379,697,378,697,406,670,379,696,380,696,380,696,380,696,379,696,380,696,406,670,379,697,379,1773,379,697,404,672,378,697,379,697,379,697,379,696,380,695,380,696,380,697,379,697,379,695,380,696,380,696,380,697,380,695,379,696,380,697,379,697,379,696,380,696,379,697,379,697,379,696,380,696,407,669,379,697,379,1772,380,696,379,696,383,693,380,695,381,1772,380,695,406,670,380}, //19C +{5087,2108,380,1772,406,670,379,696,380,696,380,1772,379,697,379,697,379,696,407,669,379,1772,380,697,379,1773,378,1772,380,696,380,1771,380,1772,380,1772,379,1772,407,1745,380,695,380,1773,379,696,380,696,379,697,379,696,406,671,379,696,407,1745,405,671,379,697,379,1772,379,697,379,696,380,697,379,1772,379,697,379,697,379,697,378,697,379,697,379,696,379,696,381,696,379,697,406,669,380,697,379,697,382,693,380,695,380,1773,378,1773,379,1772,380,696,406,671,378,1772,380,697,379,29360,5065,2130,380,1773,379,696,405,670,380,697,379,1772,380,696,380,695,380,697,379,696,406,1747,378,697,379,1773,378,1773,379,697,379,1772,405,1747,379,1772,380,1772,379,1773,379,696,380,1772,379,697,378,697,406,670,379,697,379,696,380,696,380,1771,380,696,380,696,380,1772,380,696,379,697,379,696,380,696,380,696,379,697,379,697,379,697,379,696,379,1773,379,1773,404,671,379,697,379,1772,405,1747,380,1771,380,696,380,697,384,692,378,697,379,697,379,697,379,696,379,697,379,697,379,1772,379,697,379,697,379,696,380,696,380,1772,379,696,380,696,380,697,378,697,379,697,379,697,379,697,378,697,405,671,379,698,378,697,379,696,379,696,380,697,379,697,379,696,379,697,379,697,379,697,379,1772,379,1773,379,697,404,1747,379,697,379,696,379,698,404,1747,379,1773,378,1772,380,1773,379,697,433,643,379,696,379,697,379,696,380,696,379,696,380,697,379,697,379,696,379,697,405,671,379,696,380,697,383,693,404,671,379,697,379,1777,375,697,378,697,405,671,379,697,379,697,403,672,379,696,380,697,379,696,379,697,379,697,379,697,379,697,379,696,406,670,379,697,379,696,380,697,378,698,379,696,379,697,379,697,379,697,378,697,379,697,379,696,380,1772,379,1773,379,697,378,697,379,697,379,1772,380,697,379,696,380}, //20C +{5043,2130,407,1745,407,669,379,696,381,695,405,1747,380,695,406,670,406,670,380,696,406,1745,380,697,405,1745,406,1746,406,670,406,1746,405,1746,406,1745,407,1745,407,1745,390,686,380,1772,405,670,406,670,380,695,380,696,380,697,405,670,406,1745,408,668,405,670,407,1745,393,683,406,670,380,696,406,1745,380,696,406,670,405,670,381,696,379,696,380,696,406,669,408,669,406,670,379,696,380,697,379,696,406,670,405,670,384,1768,406,1746,380,1770,407,670,405,670,406,1746,380,696,405,29336,5064,2130,380,1772,406,670,405,671,395,680,380,1772,406,670,380,696,380,696,379,696,380,1772,405,671,406,1746,379,1772,379,696,380,1771,381,1772,405,1746,380,1771,380,1772,380,697,405,1745,380,696,380,696,380,696,380,696,407,669,379,696,380,1771,381,695,380,696,380,1771,380,696,380,697,379,696,380,696,405,671,379,697,379,696,380,696,406,669,380,1772,406,1746,382,694,405,671,379,1772,380,1771,381,1771,380,697,405,669,381,695,405,672,405,671,379,696,405,671,405,670,380,696,380,1771,381,696,379,695,381,696,380,695,380,1773,405,670,380,696,406,669,407,670,379,696,380,696,380,696,380,696,379,696,380,696,380,697,405,670,406,669,406,671,379,695,381,696,380,696,379,697,379,696,380,696,380,695,380,1771,381,1771,406,671,379,696,380,696,380,1771,380,1772,380,1771,380,1772,380,696,405,670,381,696,405,670,380,697,406,669,380,695,381,695,380,697,379,696,380,696,379,697,379,697,406,669,407,668,381,696,405,670,380,1772,380,696,380,696,379,697,405,670,380,696,379,697,379,696,380,696,380,696,380,696,404,672,379,697,406,669,380,695,407,670,379,696,406,670,380,695,381,696,384,692,404,671,407,669,380,695,406,671,405,670,380,696,380,1771,380,696,407,1745,380,696,379,697,405,1746,380,696,407,669,405}, //21C +{5042,2131,379,1773,378,699,377,697,402,674,379,1773,381,694,379,698,378,697,379,697,379,1772,406,670,379,1772,379,1773,379,697,379,1772,379,1773,378,1774,378,1774,378,1772,380,697,378,1773,379,698,378,697,379,697,379,697,378,698,405,670,379,1772,379,698,378,697,379,1773,378,698,378,697,379,697,379,1773,405,670,379,697,379,697,379,697,379,697,378,697,379,697,379,697,405,670,380,697,378,697,379,696,380,697,378,698,378,1774,378,1772,405,1748,378,697,379,697,378,1773,380,697,378,29362,5090,2103,381,1771,380,696,380,696,384,691,381,1771,380,696,405,671,380,696,379,696,380,1772,384,691,381,1771,406,1745,407,669,406,1746,407,1744,407,1745,406,1746,406,1745,406,669,407,1745,407,670,404,671,407,669,405,670,381,695,406,670,406,1746,405,670,380,696,380,1772,380,695,407,669,406,670,406,670,405,671,406,669,406,670,384,692,380,695,381,1770,406,1746,380,696,380,697,406,1744,407,1745,406,1746,406,670,379,696,398,678,379,698,377,698,378,697,379,697,378,698,378,698,377,1774,377,699,351,726,349,726,350,726,349,1802,349,728,348,731,344,728,348,728,347,729,371,704,372,705,372,702,373,704,373,702,373,703,373,702,374,702,373,703,373,703,374,701,374,703,373,702,373,703,373,1778,374,702,373,1778,373,1779,373,703,372,704,371,706,369,1781,371,1780,347,1805,347,1804,347,730,346,729,347,729,347,731,345,728,348,728,347,729,347,729,347,728,373,703,373,703,373,703,374,701,374,702,374,702,375,701,375,700,376,1776,376,700,376,699,377,699,377,699,377,698,378,698,377,698,384,693,377,698,378,697,405,671,389,692,374,697,404,672,404,671,404,672,404,672,403,673,403,672,378,698,404,672,403,673,403,673,377,698,403,673,403,673,403,1748,403,1749,402,1749,377,699,402,674,377,1775,401,675,376,699,376}, //22C +{5043,2131,379,1772,380,697,379,697,378,697,379,1772,380,697,378,697,379,697,379,697,379,1772,379,697,379,1772,380,1772,379,698,378,1772,406,1746,379,1772,380,1772,379,1772,380,697,379,1772,379,698,378,698,378,697,379,697,379,696,379,697,379,1772,380,696,380,697,382,1768,380,697,379,696,379,697,379,1772,380,696,406,670,380,695,380,697,379,696,380,696,379,696,380,697,379,696,379,696,381,696,379,697,379,697,379,696,379,1772,380,1773,379,1773,404,671,379,697,379,1773,378,696,380,29382,5043,2131,404,1748,379,696,380,697,379,696,405,1746,380,696,379,697,379,697,379,697,379,1772,379,697,379,1772,380,1772,379,697,379,1772,380,1772,379,1773,379,1772,379,1772,380,696,380,1772,379,697,379,696,380,697,379,697,379,695,380,697,379,1771,381,696,406,669,380,1772,379,698,378,697,379,697,379,697,379,696,379,697,379,697,379,696,380,695,380,1773,379,1771,381,695,381,696,379,1772,380,1772,379,1773,378,697,380,697,378,697,379,696,380,697,379,696,379,697,379,697,379,697,379,1772,379,697,379,697,379,697,379,697,378,1773,379,696,379,697,406,671,378,697,379,697,379,696,380,697,378,697,379,697,379,697,379,696,379,697,379,696,380,696,380,697,378,698,378,697,379,696,380,696,380,696,380,1772,379,1773,379,1773,404,671,379,696,380,697,378,1773,379,1772,380,1772,379,1772,380,695,381,696,405,671,379,697,379,696,380,696,380,696,379,697,379,696,379,697,379,698,378,697,378,697,380,697,378,697,379,697,379,697,379,1772,379,698,378,697,379,697,378,698,379,696,379,698,378,697,379,696,406,671,379,697,378,697,379,697,379,697,379,696,379,696,380,697,379,697,378,697,379,696,380,697,379,696,380,696,380,696,379,697,380,696,379,697,379,1771,380,696,380,697,379,1772,379,697,379,1772,407,670,379,696,405}, //23C +{5034,2137,375,1778,398,679,397,677,373,703,373,1780,373,703,371,703,372,706,397,705,345,1779,373,705,369,1807,344,1781,399,678,370,1781,397,1754,371,1781,380,1770,372,1808,344,706,370,1780,371,707,368,733,343,733,371,678,371,703,372,732,370,1781,370,705,346,731,369,1759,368,731,370,706,344,732,344,1808,343,732,344,707,394,707,345,731,370,680,396,705,344,732,343,706,370,733,370,679,370,706,370,733,343,731,345,731,371,1781,344,1808,342,1783,394,709,342,733,343,1808,344,732,344,29393,5032,2140,397,1781,343,709,368,732,342,734,341,1810,343,733,341,735,343,733,367,710,340,1839,311,735,344,1781,369,1810,342,733,370,1783,365,1785,343,1811,341,1809,336,1789,368,735,341,1809,342,734,341,737,367,708,368,708,341,735,342,732,369,1784,341,734,340,736,342,1810,339,737,368,706,343,734,342,732,342,735,343,733,342,734,340,735,342,735,342,1808,343,1808,370,710,341,704,372,1807,342,1810,371,1780,345,704,371,732,343,733,344,731,345,731,342,734,371,677,372,731,343,733,370,1754,398,679,371,703,372,704,372,704,373,1778,372,703,374,703,399,676,373,704,397,678,372,703,403,673,374,702,400,675,399,677,400,676,400,675,399,677,401,675,427,649,374,701,401,675,401,674,402,675,402,1750,401,1750,401,1751,404,1747,403,674,401,673,376,700,402,1750,401,1750,375,1777,375,1777,374,701,375,701,403,673,402,673,402,674,404,672,376,700,403,673,403,672,403,673,405,671,403,672,406,670,377,699,376,699,404,672,377,699,433,1719,404,672,403,673,375,700,404,672,404,672,406,670,402,673,405,671,405,671,403,672,433,643,430,647,402,673,406,669,406,671,404,671,406,670,406,670,404,671,379,698,433,642,403,673,402,674,377,698,378,698,404,672,403,1748,406,1746,403,673,406,1745,377,700,377,1774,406,670,377,698,405}, //24C +{5069,2103,406,1746,406,669,407,669,407,669,380,1772,407,668,381,696,380,695,380,696,380,1771,406,670,381,1771,406,1745,380,696,385,1767,380,1771,381,1771,406,1745,381,1771,407,669,406,1745,380,696,406,670,380,696,406,670,406,670,381,694,407,1745,400,676,405,671,405,1746,380,696,380,695,407,670,379,1772,407,668,381,696,379,696,407,670,406,669,380,696,380,696,406,672,402,671,384,692,407,669,382,694,405,670,406,669,407,1745,406,1746,380,1772,405,670,406,670,380,1772,380,695,380,29383,5043,2130,407,1744,406,671,379,696,407,668,381,1772,380,696,379,697,406,669,380,696,380,1772,405,670,406,1746,405,1747,379,697,404,1746,406,1746,380,1772,380,1771,380,1772,380,696,380,1771,406,671,405,671,379,695,380,697,379,697,405,670,380,1772,379,696,380,697,404,1747,380,695,380,696,406,670,380,696,405,671,407,669,405,670,380,695,380,696,380,1772,405,1747,405,671,406,669,380,1772,406,1750,375,1772,406,670,405,670,380,696,406,670,380,696,380,695,380,697,379,696,380,696,406,1746,405,670,407,670,379,696,406,669,380,1772,380,696,406,671,404,670,380,696,380,696,380,696,386,690,379,696,407,670,405,670,380,695,406,670,380,696,396,680,380,696,380,696,405,671,405,670,380,696,380,696,405,670,380,696,380,696,380,1771,380,696,380,696,405,1747,379,1772,380,1771,407,1745,380,696,380,696,380,696,407,668,407,669,380,696,406,670,405,670,380,696,380,696,380,696,406,673,402,670,380,696,405,671,406,670,380,695,380,1772,406,670,405,671,380,695,380,696,380,696,405,671,379,697,407,668,380,696,393,683,380,695,380,697,379,696,380,696,380,696,379,697,379,696,380,696,380,695,380,697,379,696,380,696,380,696,379,697,379,696,380,696,380,1772,380,695,406,1746,380,1771,380,697,379,1772,380,696,379,697,379}, //2C5C +{5043,2131,380,1772,379,696,380,696,379,698,378,1772,380,696,380,696,379,697,379,696,380,1772,379,697,379,1773,379,1772,380,696,379,1772,388,1763,381,1771,380,1772,379,1773,379,697,379,1772,379,697,405,670,380,696,380,696,405,671,380,696,383,1768,380,696,380,696,379,1772,380,696,379,697,379,697,379,1772,407,669,380,696,379,696,380,696,407,670,378,697,379,697,380,695,379,697,379,697,379,697,405,671,379,697,379,696,379,1773,379,1772,379,1773,379,696,380,697,379,1772,379,697,379,29383,5043,2130,380,1771,380,696,379,697,379,697,379,1772,380,696,379,697,380,696,379,697,379,1772,379,696,380,1772,380,1772,379,697,379,1772,379,1773,380,1771,380,1772,380,1771,381,695,379,1772,406,670,380,696,380,695,380,697,379,697,379,697,403,1748,379,697,380,696,406,1745,378,698,380,696,379,696,380,697,404,670,381,696,379,697,379,696,380,696,379,1772,380,1772,380,696,379,697,379,1772,407,1745,380,1771,380,696,406,669,407,669,381,695,380,695,381,696,405,671,379,696,380,696,406,1746,380,695,406,671,379,695,381,695,381,1771,381,695,380,695,380,697,380,695,380,696,380,696,380,695,381,695,380,696,380,696,406,670,380,695,407,669,381,695,402,674,380,696,406,669,381,696,405,670,380,1771,406,669,382,695,406,670,380,1771,381,695,380,695,407,1745,380,1771,407,1745,406,1746,380,695,381,695,406,670,406,669,381,696,406,669,380,696,407,669,406,669,407,669,406,670,407,669,405,670,381,695,406,670,407,669,406,670,406,1745,406,670,379,697,380,695,381,695,406,670,380,696,393,682,380,696,380,696,380,696,380,696,404,671,380,696,382,694,379,697,379,696,380,696,405,671,379,697,379,696,380,696,379,697,378,698,377,699,378,698,377,699,376,1775,350,1802,350,1801,350,1801,350,726,349,1803,349,727,374,702,372}, //26C +{5039,2132,379,1772,379,697,379,696,379,697,379,1772,379,697,379,697,379,696,380,696,379,1773,379,697,379,1772,379,1772,380,697,379,1772,379,1773,379,1772,379,1773,379,1772,380,696,380,1772,379,696,380,696,380,696,380,696,380,696,379,696,380,1772,379,697,379,697,379,1772,380,696,379,697,379,697,379,1772,380,696,379,696,380,696,379,697,380,695,380,696,380,696,379,696,380,696,380,696,380,695,381,696,379,696,380,696,379,1772,380,1771,380,1772,380,696,379,697,379,1772,379,697,379,29381,5042,2131,379,1773,378,697,433,643,432,644,378,1773,432,644,433,642,434,643,431,644,379,1772,435,641,433,1719,432,1719,433,643,434,1717,433,1719,433,1718,379,1773,433,1718,378,698,378,1773,379,698,432,644,431,644,432,644,433,643,433,642,433,1718,432,644,432,644,432,1719,433,643,433,643,432,644,434,642,433,642,432,644,434,642,431,645,433,643,401,1749,434,1718,432,644,430,646,432,1719,378,1773,432,1720,433,642,432,644,433,643,433,643,432,644,433,643,431,644,378,698,432,644,432,1719,432,643,462,614,379,697,433,643,433,1718,434,642,378,698,433,643,432,643,433,643,433,643,432,644,431,644,433,643,433,643,378,698,431,645,433,642,378,698,432,644,432,643,432,645,432,643,433,642,404,673,432,1719,433,643,432,643,432,1719,434,643,432,644,432,1719,378,1773,379,1773,378,1773,379,697,433,643,434,642,431,644,432,644,433,643,433,642,430,646,379,697,432,644,432,643,434,642,433,643,432,644,432,643,434,642,431,644,433,1719,433,643,378,699,431,644,432,643,433,644,429,645,434,642,432,644,433,643,433,643,431,645,434,641,432,644,431,645,378,698,432,643,433,642,434,642,433,643,379,697,433,642,434,643,432,643,432,644,431,645,431,645,431,1720,432,643,433,643,433,643,431,1720,379,1773,433,643,431,645,430}, //27C +{5043,2130,405,1746,381,695,380,696,380,696,380,1771,380,697,379,696,380,696,380,695,380,1772,380,696,405,1747,379,1772,380,695,381,1771,406,1745,381,1772,379,1772,380,1771,380,697,379,1772,380,695,381,696,379,696,409,668,379,696,380,695,407,1745,405,672,379,696,380,1771,380,696,380,696,380,695,381,1771,380,697,404,671,380,696,380,695,380,696,380,695,381,696,380,696,379,696,380,696,380,695,381,695,380,697,379,696,380,1771,381,1771,380,1772,379,697,379,696,380,1771,381,696,405,29356,5044,2130,380,1771,381,695,380,695,381,696,380,1772,405,670,380,695,381,696,379,696,380,1771,435,642,380,1771,380,1772,380,696,379,1772,380,1771,381,1772,404,1746,381,1772,380,696,379,1772,380,696,380,696,379,696,380,695,381,696,380,695,381,1771,380,696,380,695,406,1745,381,696,380,695,381,696,379,696,380,696,380,696,380,696,379,697,379,695,381,1772,380,1771,380,696,380,696,380,1772,379,1772,380,1771,380,697,379,696,380,695,381,695,406,670,407,669,380,696,380,696,380,695,380,1772,380,695,381,696,379,697,379,696,380,1772,380,696,380,695,380,696,380,697,379,695,380,697,379,696,380,695,408,669,380,696,379,696,380,696,380,696,379,697,379,696,380,696,380,696,380,696,379,696,380,1771,381,1771,380,697,379,696,380,1771,380,696,406,670,380,1771,380,1772,380,1772,380,1771,380,696,380,696,380,696,380,695,381,695,380,696,380,696,380,695,380,696,380,696,380,696,380,695,381,696,379,696,380,696,380,696,380,695,380,1771,381,696,406,669,380,697,379,696,380,696,380,695,381,696,379,696,380,696,407,669,380,696,380,695,380,696,405,671,380,696,435,640,380,695,381,696,380,695,380,696,380,696,380,696,406,669,381,695,380,697,379,696,380,1771,380,1772,380,696,432,644,380,1770,381,1771,381,694,381,696,380}, //28C +{5070,2104,407,1745,379,696,379,697,379,697,378,1774,378,698,378,696,407,671,377,697,434,1719,378,697,379,1773,379,1772,378,698,379,1773,378,1773,379,1772,379,1773,379,1772,379,698,378,1773,379,697,379,697,378,698,378,697,379,697,379,697,378,1773,380,696,378,699,378,1772,379,697,379,697,379,697,379,1772,379,697,379,697,378,697,379,698,378,697,378,698,378,697,379,697,379,697,379,697,379,696,380,697,379,697,378,696,380,1772,380,1772,405,1746,406,670,380,696,380,1772,406,669,380,29383,5042,2131,379,1772,380,696,405,671,380,695,381,1771,380,696,380,696,379,696,406,670,380,1772,405,670,381,1771,406,1746,380,695,380,1772,380,1772,405,1746,380,1771,380,1772,380,695,381,1771,380,697,378,697,380,696,379,696,381,696,379,696,380,1771,381,696,379,696,380,1772,379,697,379,696,380,696,406,670,380,696,379,696,380,696,380,696,379,697,406,1745,380,1771,380,697,379,700,376,1772,380,1771,380,1772,406,670,380,696,379,696,380,696,380,696,406,669,381,696,379,696,407,669,380,1771,381,695,380,696,379,697,380,696,379,1772,380,696,380,696,380,696,379,696,380,696,380,696,380,696,380,695,380,696,380,696,380,695,380,697,379,696,380,696,380,696,380,696,379,696,380,696,380,696,380,696,380,696,379,1772,380,695,380,1772,380,696,380,696,379,1772,380,1772,380,1772,379,1772,380,696,405,671,405,670,406,670,380,696,380,696,379,699,404,669,380,695,380,697,380,695,381,695,407,670,379,696,379,696,380,696,380,696,380,1772,379,697,379,696,380,696,380,696,380,695,407,670,379,697,379,696,380,696,380,696,379,696,380,696,380,696,379,696,380,697,379,696,380,696,380,695,380,696,380,696,380,696,380,695,380,696,381,695,380,696,380,696,379,1772,380,696,380,1771,380,697,379,1772,380,1771,380,697,379,696,380}, //29C +{5042,2131,384,1768,405,670,380,695,381,696,380,1771,380,696,406,669,380,697,405,670,406,1745,406,671,379,1771,381,1772,380,696,380,1770,407,1745,407,1745,406,1746,380,1771,407,669,380,1772,380,696,405,670,383,693,380,696,405,670,406,670,406,1746,380,696,405,671,379,1771,407,670,407,669,405,670,380,1771,381,696,380,695,380,696,380,695,381,696,406,670,379,696,380,695,381,696,380,696,405,670,405,672,379,696,380,696,405,1746,380,1772,379,1773,379,697,379,696,406,1746,405,671,406,29355,5044,2129,381,1771,406,670,405,671,380,695,380,1771,381,695,381,695,380,697,388,687,380,1771,381,696,379,1771,381,1771,380,696,380,1772,380,1771,380,1772,380,1771,406,1746,407,669,380,1772,380,696,379,697,379,696,380,696,379,696,407,669,380,1772,403,672,380,696,380,1771,380,695,407,670,380,696,380,696,405,670,381,696,379,696,382,694,405,671,406,1745,380,1772,405,670,381,695,407,1745,406,1746,405,1745,381,696,380,696,379,697,380,695,406,670,380,695,406,670,380,696,380,696,380,1772,379,697,379,696,407,669,380,696,379,1772,380,696,380,696,380,695,406,670,380,695,381,695,381,696,379,697,406,669,380,696,407,669,379,696,380,696,380,696,380,695,406,671,379,697,383,691,381,696,380,1771,380,697,379,1772,384,692,406,1744,381,695,408,668,380,1772,405,1746,381,1771,380,1772,379,697,379,697,379,697,379,696,380,696,379,696,380,696,380,696,380,695,407,669,380,697,406,670,379,696,405,671,379,696,380,696,380,697,379,1772,405,671,406,669,380,696,380,695,381,695,380,696,380,696,380,696,380,695,380,696,380,696,380,696,379,696,380,697,379,696,380,696,380,696,379,695,381,696,380,696,380,696,407,669,379,696,380,696,380,696,380,696,407,1744,380,1772,380,1772,379,696,405,1746,380,1772,405,672,379,700,375}, //30C +{5043,2131,379,1772,380,696,379,697,406,670,379,1773,379,696,379,696,380,696,380,696,380,1771,380,697,379,1771,381,1771,380,696,380,1772,405,1746,380,1771,407,1746,381,1770,406,670,379,1772,406,670,380,696,380,696,379,697,379,696,380,697,405,1746,379,697,379,697,404,1747,379,697,379,697,379,696,380,1772,379,697,379,697,405,669,381,696,379,697,379,697,379,696,380,696,380,695,380,697,379,697,405,670,380,696,379,697,379,1772,380,1772,379,1772,380,696,379,698,378,1773,379,697,378,29383,5042,2131,380,1771,380,697,379,696,380,696,380,1772,379,696,380,696,403,674,378,697,379,1772,380,696,380,1772,379,1773,379,696,380,1772,379,1773,379,1772,379,1772,380,1773,378,696,380,1772,380,697,378,696,406,671,379,696,380,696,380,695,380,1772,380,696,380,696,380,1771,405,671,380,696,380,696,405,671,379,696,405,671,380,696,379,697,379,697,379,1773,379,1772,381,695,379,696,406,1746,379,1772,380,1772,379,697,379,696,380,697,378,697,379,696,380,696,380,696,379,696,407,669,405,1747,380,696,380,696,379,696,380,697,379,1772,407,668,404,672,380,696,380,696,380,696,379,697,379,697,379,697,379,696,379,696,380,697,379,697,379,697,378,697,379,697,379,696,405,672,378,697,379,697,406,670,379,1771,380,1773,405,671,379,1772,379,697,379,696,380,1773,378,1773,379,1772,379,1773,379,696,380,696,380,696,379,697,380,695,380,696,395,681,379,697,379,698,378,697,379,696,379,697,380,696,379,696,380,696,406,670,379,697,379,1772,406,670,379,697,379,697,379,696,379,697,380,695,380,697,379,696,380,695,381,696,405,671,379,696,380,696,380,695,380,697,379,696,380,696,380,696,380,696,379,696,380,696,379,697,380,696,379,696,380,696,380,696,380,1772,379,696,380,696,380,1772,379,1773,405,1746,379,696,380,696,380}, //31C +{5043,2131,379,1772,380,696,405,671,405,670,380,1772,380,696,379,697,405,670,380,696,407,1744,380,697,379,1772,406,1746,406,669,405,1747,405,1746,407,1745,380,1771,407,1744,381,696,380,1772,379,697,379,695,408,669,406,669,380,696,380,696,380,1772,380,695,380,696,380,1772,405,670,380,696,380,696,380,1771,406,671,405,670,406,670,380,696,405,670,406,670,407,669,380,696,405,671,379,697,405,670,380,696,380,696,404,672,379,1772,406,1745,406,1746,406,671,404,671,406,1745,407,669,405,29356,5044,2130,380,1771,407,670,405,670,380,696,380,1772,380,696,379,696,407,670,379,695,381,1772,380,695,406,1746,406,1745,380,696,380,1771,407,1745,380,1772,380,1771,406,1746,405,671,380,1771,406,670,409,667,380,695,380,696,380,697,379,696,380,1771,380,697,379,696,380,1772,380,696,379,697,379,697,379,696,380,695,406,670,406,670,380,696,406,669,381,1771,380,1772,379,697,405,670,407,1745,380,1771,406,1746,380,696,379,696,407,670,379,695,381,695,380,697,379,697,379,696,380,696,405,1747,406,669,380,696,380,696,405,670,380,1771,381,696,380,696,405,670,380,697,379,697,379,696,388,688,379,696,380,696,380,695,381,696,379,696,405,672,406,668,407,670,379,696,380,696,408,667,381,696,405,1746,406,1745,406,1747,379,696,380,1772,379,697,405,670,380,1772,405,1746,380,1771,381,1771,406,671,379,696,380,696,379,696,380,696,380,696,405,671,379,697,379,697,379,696,380,696,380,696,379,696,380,696,380,697,379,696,379,697,406,1745,380,696,380,696,380,695,380,697,379,696,380,696,405,670,380,696,380,696,380,696,380,695,381,695,380,696,380,696,380,696,379,697,379,696,380,695,381,695,380,697,405,669,381,696,380,696,379,696,380,696,380,696,380,1772,379,1773,379,695,389,1764,405,1746,406,1745,407,670,379,696,380} //32C }, // Fan Speed High { - {8978, 4504, 561, 548, 587, 549, 586, 1650, 587, 549, 586, 1650, 586, 550, 586, 549, 586, 566, 586, 550, 586, 1649, 587, 549, 585, 1651, 586, 550, 585, 550, 586, 550, 584, 568, 585, 550, 585, 550, 584, 552, 583, 552, 584, 550, 585, 551, 584, 551, 585, 568, 584, 550, 559, 576, 585, 551, 560, 576, 583, 551, 559, 577, 558, 577, 584, 568, 584, 551, 584, 552, 584, 551, 558, 577, 558, 577, 559, 577, 558, 577, 558, 599, 558, 577, 558, 577, 584, 552, 558, 564, 559}, // 15C - {8978, 4503, 563, 546, 588, 546, 590, 1647, 589, 546, 590, 1647, 589, 546, 590, 545, 590, 563, 589, 546, 589, 1647, 590, 545, 590, 1647, 589, 546, 589, 547, 589, 545, 589, 1665, 589, 546, 589, 546, 589, 547, 589, 546, 589, 546, 589, 547, 588, 547, 589, 563, 589, 545, 589, 547, 589, 546, 589, 547, 588, 546, 589, 547, 589, 546, 589, 563, 589, 546, 589, 547, 589, 545, 589, 547, 588, 547, 588, 548, 588, 546, 589, 568, 589, 1648, 589, 1647, 589, 1648, 589, 1635, 589}, // 16C - {8978, 4447, 561, 549, 587, 548, 588, 1648, 588, 547, 588, 1648, 589, 546, 589, 547, 588, 564, 588, 548, 588, 1648, 588, 548, 588, 1648, 588, 547, 588, 547, 589, 1648, 588, 564, 587, 548, 588, 548, 587, 548, 587, 548, 587, 549, 587, 547, 587, 549, 587, 564, 588, 547, 588, 548, 588, 548, 587, 547, 588, 548, 588, 547, 587, 552, 584, 565, 587, 548, 587, 547, 589, 547, 587, 548, 588, 547, 588, 547, 588, 548, 587, 569, 589, 1647, 589, 1649, 587, 1648, 589, 535, 589}, // 17C - {8978, 4523, 507, 602, 533, 602, 533, 1703, 534, 601, 534, 1704, 533, 601, 534, 601, 534, 618, 534, 601, 534, 1703, 534, 601, 534, 1703, 534, 601, 534, 601, 534, 1703, 534, 1719, 534, 601, 534, 602, 534, 601, 533, 602, 534, 602, 533, 602, 533, 602, 534, 618, 533, 602, 534, 602, 533, 601, 534, 602, 533, 602, 534, 601, 534, 601, 534, 618, 534, 601, 534, 602, 534, 601, 534, 601, 534, 601, 534, 602, 533, 601, 535, 623, 534, 1703, 533, 1703, 534, 601, 534, 1691, 533}, // 18C - {8978, 4502, 559, 550, 585, 551, 585, 1650, 587, 549, 586, 1649, 587, 549, 587, 549, 585, 567, 586, 549, 586, 1650, 586, 550, 585, 1652, 585, 550, 586, 1650, 586, 549, 586, 567, 586, 549, 586, 549, 587, 547, 587, 549, 587, 548, 587, 549, 586, 549, 586, 566, 586, 549, 586, 549, 586, 550, 585, 550, 586, 549, 586, 549, 586, 549, 586, 567, 585, 549, 586, 550, 585, 550, 586, 549, 586, 550, 587, 548, 586, 549, 586, 571, 586, 1650, 586, 1651, 586, 549, 586, 537, 586}, // 19C - {8978, 4502, 562, 547, 635, 500, 589, 1647, 589, 546, 589, 1648, 589, 546, 590, 545, 589, 563, 589, 547, 588, 1648, 589, 547, 588, 1648, 589, 547, 588, 1648, 589, 546, 589, 1664, 589, 547, 589, 546, 588, 547, 588, 547, 589, 546, 589, 547, 588, 547, 588, 564, 589, 547, 588, 546, 589, 546, 589, 547, 588, 548, 588, 546, 589, 546, 589, 564, 588, 547, 588, 547, 588, 547, 588, 547, 589, 546, 589, 546, 589, 547, 588, 568, 589, 1648, 589, 547, 588, 1648, 589, 1635, 589}, // 20C - {8978, 4502, 532, 577, 533, 602, 560, 1676, 560, 576, 559, 1677, 534, 602, 533, 601, 561, 592, 559, 576, 560, 1677, 558, 577, 560, 1676, 558, 578, 559, 1677, 560, 1677, 559, 594, 558, 577, 558, 577, 533, 602, 559, 576, 559, 576, 558, 577, 559, 577, 558, 594, 558, 577, 535, 600, 558, 577, 558, 577, 559, 576, 559, 577, 558, 577, 559, 593, 559, 576, 559, 576, 534, 601, 559, 577, 533, 601, 558, 578, 559, 577, 558, 598, 534, 1702, 534, 602, 558, 1679, 533, 590, 558}, // 21C - {8978, 4497, 562, 547, 588, 546, 589, 1648, 589, 546, 590, 1647, 589, 546, 589, 547, 589, 563, 588, 546, 590, 1648, 588, 547, 588, 1648, 589, 547, 588, 1647, 589, 1649, 589, 1664, 589, 546, 589, 547, 588, 547, 588, 546, 590, 546, 590, 546, 587, 547, 590, 562, 589, 546, 589, 547, 589, 546, 588, 547, 589, 547, 588, 546, 590, 546, 589, 563, 588, 547, 589, 546, 589, 547, 588, 548, 588, 546, 588, 547, 589, 547, 588, 569, 588, 1648, 589, 546, 589, 547, 588, 1636, 589}, // 22C - {8978, 4495, 564, 546, 589, 546, 589, 1648, 589, 546, 589, 1648, 588, 547, 589, 546, 589, 563, 589, 546, 590, 1646, 590, 546, 589, 1647, 590, 1646, 590, 546, 589, 546, 590, 563, 588, 547, 589, 546, 589, 546, 589, 546, 589, 546, 590, 545, 590, 546, 589, 563, 589, 546, 589, 547, 589, 545, 590, 545, 590, 546, 589, 546, 589, 546, 589, 564, 589, 545, 590, 545, 590, 546, 589, 546, 589, 546, 589, 546, 590, 546, 589, 568, 589, 1647, 590, 546, 589, 545, 590, 534, 589}, // 23C - {8978, 4501, 562, 547, 589, 546, 588, 1648, 589, 547, 588, 1649, 587, 548, 587, 547, 589, 564, 589, 546, 588, 1649, 588, 547, 588, 1649, 588, 1648, 589, 546, 588, 547, 588, 1665, 589, 547, 588, 548, 587, 548, 588, 547, 588, 547, 588, 547, 588, 548, 588, 564, 587, 547, 589, 547, 588, 547, 588, 547, 588, 548, 587, 548, 588, 547, 588, 564, 588, 547, 589, 546, 589, 547, 587, 547, 589, 547, 587, 548, 588, 548, 588, 569, 587, 548, 587, 1649, 588, 1649, 588, 1636, 588}, // 24C - {8978, 4502, 559, 548, 562, 574, 561, 1676, 560, 575, 561, 1676, 561, 574, 561, 574, 562, 590, 561, 575, 561, 1675, 586, 550, 560, 1676, 561, 1675, 560, 575, 561, 1676, 561, 592, 560, 575, 586, 548, 588, 548, 561, 574, 560, 575, 562, 573, 561, 574, 561, 591, 561, 575, 560, 576, 586, 548, 586, 550, 586, 548, 562, 574, 561, 574, 561, 592, 586, 548, 587, 548, 585, 551, 561, 574, 561, 574, 562, 574, 560, 575, 587, 569, 588, 548, 585, 1652, 585, 1651, 588, 535, 561}, // 25C - {8978, 4496, 507, 601, 534, 601, 534, 1703, 534, 602, 533, 1702, 534, 602, 534, 601, 533, 620, 533, 602, 533, 1703, 534, 601, 534, 1703, 533, 1704, 533, 602, 533, 1703, 533, 1720, 534, 602, 533, 602, 533, 602, 534, 601, 534, 602, 533, 601, 535, 600, 534, 619, 534, 601, 534, 601, 534, 601, 534, 601, 534, 602, 533, 602, 534, 601, 534, 618, 534, 601, 534, 602, 533, 602, 534, 602, 533, 601, 534, 602, 534, 601, 534, 623, 533, 603, 533, 1702, 535, 601, 533, 1691, 534}, // 26C - {8978, 4501, 533, 576, 560, 575, 560, 1677, 560, 575, 559, 1677, 560, 575, 560, 576, 559, 592, 560, 576, 560, 1676, 561, 575, 559, 1677, 560, 1676, 561, 1676, 560, 576, 559, 593, 559, 576, 559, 576, 560, 575, 560, 575, 560, 576, 559, 575, 560, 576, 559, 593, 560, 575, 560, 576, 559, 575, 560, 576, 560, 575, 560, 576, 559, 576, 559, 593, 560, 575, 559, 575, 560, 576, 559, 576, 560, 575, 560, 576, 559, 576, 560, 597, 560, 575, 559, 1678, 559, 576, 559, 564, 560}, // 27C - {8978, 4496, 562, 547, 589, 547, 588, 1648, 589, 546, 589, 1647, 589, 547, 589, 546, 588, 565, 588, 546, 588, 1648, 590, 546, 588, 1649, 588, 1649, 588, 1648, 588, 547, 589, 1664, 588, 548, 588, 547, 592, 543, 588, 547, 589, 547, 588, 547, 588, 547, 588, 564, 588, 548, 588, 547, 588, 547, 588, 546, 589, 547, 588, 547, 589, 546, 589, 564, 588, 547, 588, 547, 588, 547, 588, 548, 588, 546, 589, 547, 588, 547, 588, 569, 588, 547, 588, 548, 588, 1648, 589, 1636, 588}, // 28C - {8978, 4503, 507, 601, 534, 601, 534, 1702, 534, 602, 534, 1703, 533, 602, 533, 602, 533, 619, 534, 601, 558, 1679, 534, 601, 557, 1680, 533, 1704, 533, 1703, 534, 1702, 534, 618, 534, 601, 534, 602, 534, 601, 534, 602, 533, 601, 534, 602, 533, 602, 533, 619, 534, 601, 534, 602, 533, 602, 534, 601, 533, 602, 534, 602, 533, 601, 535, 617, 534, 602, 534, 601, 534, 601, 534, 602, 533, 601, 534, 602, 557, 578, 534, 624, 533, 601, 559, 577, 533, 1703, 534, 590, 533}, // 29C - {8978, 4502, 534, 575, 562, 573, 561, 1675, 561, 575, 560, 1676, 561, 575, 560, 574, 562, 591, 560, 575, 560, 1676, 562, 574, 560, 1676, 561, 1675, 562, 1675, 561, 1676, 560, 1693, 561, 575, 561, 574, 560, 575, 561, 575, 560, 574, 561, 575, 560, 575, 561, 591, 561, 574, 561, 575, 560, 574, 561, 575, 563, 572, 560, 576, 560, 574, 561, 592, 560, 574, 561, 575, 561, 574, 561, 573, 562, 575, 561, 574, 560, 575, 560, 597, 560, 575, 561, 574, 561, 575, 560, 1664, 561} // 30C - + {5043,2130,380,1772,380,696,404,671,406,670,380,1771,380,696,406,670,379,696,406,670,380,1771,407,670,379,1772,405,1746,406,670,406,1746,386,1765,406,1745,380,1772,380,1771,380,697,406,1745,379,697,380,694,407,670,406,670,405,670,405,672,379,1771,381,696,379,696,379,1773,379,696,380,695,381,695,380,1771,407,670,380,695,380,696,380,696,380,695,381,695,380,696,380,696,380,696,379,696,407,669,380,696,380,695,406,670,380,1772,380,1771,380,1772,380,695,380,696,380,1771,381,695,380,29381,5043,2130,380,1772,380,695,381,695,380,696,406,1745,380,697,379,696,406,670,379,696,380,1772,380,696,379,1771,381,1771,381,694,407,1746,405,1746,384,1768,379,1772,407,1744,381,695,380,1771,381,696,380,696,379,696,380,696,406,669,380,696,380,1772,406,669,380,696,380,1772,380,696,379,696,406,670,379,697,405,671,379,696,406,670,407,669,383,693,379,1772,380,1770,408,669,380,696,379,1772,380,1772,405,1746,405,671,379,697,379,696,380,695,381,696,380,695,406,670,407,669,406,670,380,1771,380,696,382,693,380,697,379,696,380,1770,381,696,380,696,380,696,406,670,379,696,380,696,405,671,379,697,379,696,380,696,380,695,406,671,379,696,406,669,406,671,379,696,380,696,407,669,380,696,405,1746,380,1772,405,1745,381,695,406,670,380,696,380,696,379,1772,380,1772,405,1746,380,1771,381,1771,406,669,406,1746,380,696,380,695,381,696,379,696,380,696,380,695,406,671,405,670,380,696,409,667,379,697,379,696,406,670,379,696,406,1745,381,696,380,696,379,696,406,670,405,671,405,670,380,696,406,670,380,695,407,670,404,671,407,669,380,696,379,696,406,670,380,695,380,696,380,696,380,696,380,695,407,669,407,669,380,696,380,696,406,670,405,670,406,1745,380,1772,380,696,379,1772,380,695,381,1770,408,1746,379,696,379}, //16C + {5043,2130,405,1746,380,697,379,696,380,696,405,1746,405,671,379,696,407,669,406,670,406,1745,380,696,380,1771,381,1771,380,696,380,1771,380,1772,380,1771,380,1772,405,1746,380,696,380,1772,380,696,379,697,379,696,405,671,379,696,380,696,379,1773,379,697,379,696,380,1772,406,669,406,669,381,696,379,1772,380,696,380,696,405,670,380,696,380,696,380,696,379,696,380,696,380,696,379,697,379,696,380,695,380,697,379,696,407,1743,409,1744,380,1771,380,696,380,696,405,1747,406,669,380,29357,5067,2130,380,1771,380,697,379,696,380,696,379,1772,380,696,380,695,405,672,379,696,380,1771,406,670,407,1744,380,1772,380,696,380,1771,380,1772,380,1772,406,1744,407,1745,380,696,380,1772,379,697,405,670,380,696,379,696,380,696,380,696,380,1771,380,696,406,671,378,1771,407,671,379,696,380,696,379,696,380,696,380,696,380,696,379,696,380,696,380,1772,379,1771,381,695,380,697,379,1771,381,1771,380,1771,380,696,380,696,380,696,379,697,379,696,380,696,380,696,379,696,380,696,380,1771,381,695,382,694,380,695,381,695,381,1771,380,696,380,696,379,696,380,696,380,695,381,696,433,642,406,670,380,695,407,669,380,696,380,696,380,695,380,695,381,696,380,696,405,671,406,669,406,670,380,695,380,696,380,696,380,1771,380,696,380,696,380,695,406,1746,380,1773,405,1745,380,1771,380,1773,379,697,405,1746,379,696,380,696,379,696,406,670,380,695,381,696,406,670,379,696,380,696,380,695,406,670,380,695,381,696,380,696,379,1772,380,695,380,696,380,696,380,696,379,696,406,670,380,697,379,696,379,697,379,697,379,696,380,696,379,696,380,696,381,695,379,697,379,697,379,696,380,696,380,696,379,697,379,696,380,695,381,695,380,697,379,696,380,1771,380,695,381,1771,380,1771,381,695,407,1745,405,1747,379,696,380}, //17C + {5044,2129,381,1772,379,696,406,670,405,671,380,1771,380,696,406,668,382,696,379,696,380,1771,380,696,380,1771,381,1771,380,695,381,1771,380,1772,380,1771,381,1772,379,1771,381,695,380,1772,406,670,379,696,380,696,379,697,380,695,381,695,380,1772,380,695,380,696,380,1771,380,696,380,696,380,696,380,1771,380,696,380,695,381,695,380,696,380,695,381,695,380,696,380,696,380,696,379,696,381,695,380,696,380,695,381,696,379,1772,380,1771,380,1772,380,696,379,696,380,1772,380,695,380,29381,5043,2130,380,1771,381,695,380,696,380,696,380,1771,380,695,381,696,380,696,379,696,380,1771,406,671,379,1771,381,1770,381,696,380,1771,380,1772,380,1771,406,1745,381,1771,380,696,380,1771,407,669,380,697,379,696,380,696,379,697,379,696,380,1771,380,696,380,696,380,1771,406,670,380,696,380,695,380,697,379,696,380,695,381,696,380,695,380,696,380,1770,381,1772,380,696,404,672,379,1772,380,1771,380,1772,380,695,380,697,379,697,379,696,380,696,379,696,380,696,380,695,380,696,380,1771,381,696,379,696,405,671,380,696,380,1771,380,696,380,696,380,696,379,696,380,696,380,695,381,696,379,696,380,696,380,695,380,696,380,696,380,696,380,695,380,696,380,696,380,695,406,670,380,696,380,1771,381,695,380,696,380,1771,380,696,380,696,380,696,380,1771,380,1772,379,1772,380,1772,379,1772,379,697,405,1746,380,695,381,696,379,696,380,696,405,671,379,696,407,669,380,696,379,696,405,672,379,696,379,696,407,669,380,696,380,1772,379,696,405,671,380,696,379,696,406,670,380,695,381,696,405,670,406,670,406,669,380,696,380,696,405,671,379,696,406,670,405,672,405,669,381,695,407,669,380,696,405,671,379,696,380,695,407,670,379,696,407,669,406,1745,407,1744,408,1744,407,1745,405,671,406,1745,406,1745,406,670,406}, //18C + {5044,2130,380,1771,379,697,380,696,380,696,379,1772,380,696,380,696,380,695,380,695,381,1772,379,697,379,1772,380,1771,380,695,381,1772,379,1771,381,1772,379,1773,379,1771,380,695,381,1771,381,696,379,696,380,695,381,695,380,696,380,696,380,1771,380,696,380,696,380,1771,380,696,380,696,379,697,379,1773,379,695,381,695,380,697,379,695,381,696,380,696,379,696,380,695,381,696,380,695,380,696,380,696,379,696,380,696,380,1771,381,1770,381,1771,381,695,380,696,380,1772,379,696,380,29380,5044,2130,380,1771,380,695,381,696,380,696,379,1772,405,671,380,696,379,696,380,695,381,1772,379,695,381,1771,380,1772,380,696,380,1771,380,1771,381,1771,406,1745,381,1770,381,696,380,1771,405,672,379,696,380,696,380,695,380,696,380,695,381,1772,405,670,405,670,381,1771,380,696,380,696,380,695,380,696,380,696,380,696,380,695,380,696,380,696,380,1771,380,1772,405,671,380,695,380,1772,380,1771,380,1771,380,698,378,696,380,695,381,695,381,694,381,696,380,696,380,696,379,696,380,1772,380,694,381,696,380,696,380,694,381,1772,380,695,381,695,380,696,380,695,381,695,380,696,380,696,380,696,380,696,379,696,380,695,381,695,381,695,380,697,379,695,381,696,380,695,380,696,380,696,380,695,381,1771,380,696,380,1770,381,696,380,695,381,696,387,1763,381,1772,379,1771,381,1771,380,1771,381,696,379,1771,381,695,380,695,381,696,380,695,383,693,380,696,380,696,380,695,380,700,376,696,380,696,379,696,380,697,379,696,380,1771,407,670,379,696,379,696,380,696,380,696,380,696,380,695,380,697,379,695,380,696,380,697,379,696,379,697,379,695,407,670,380,696,379,697,379,696,380,696,380,696,406,669,380,696,406,670,379,696,380,696,380,696,380,1771,380,696,380,696,379,697,406,1745,406,1745,406,1745,407,669,406}, //19C + {5069,2104,406,1745,380,696,380,700,376,696,380,1771,380,696,380,696,379,696,380,697,379,1772,406,669,407,1744,407,1745,380,697,379,1771,381,1770,407,1745,406,1746,380,1772,406,669,405,1746,381,695,380,696,406,670,406,670,379,697,379,696,406,1746,379,696,380,696,380,1772,379,696,406,670,405,670,381,1770,381,696,380,695,380,696,406,670,380,696,380,696,406,669,380,696,380,696,380,696,379,696,382,694,380,696,380,696,379,1772,384,1767,380,1772,406,675,374,696,380,1771,381,695,407,29354,5043,2130,380,1771,407,670,405,671,379,696,380,1772,380,695,380,696,380,696,380,695,381,1770,381,696,406,1745,406,1745,381,696,379,1771,381,1772,405,1745,407,1745,380,1772,379,697,379,1772,380,696,406,670,379,696,380,696,379,697,379,695,381,1771,381,696,379,696,380,1772,380,695,380,697,379,696,380,696,379,697,379,696,380,696,380,695,381,695,380,1771,381,1771,380,695,381,695,380,1772,380,1772,406,1745,380,695,381,695,380,697,379,696,407,669,405,671,379,696,380,696,380,696,380,1771,380,696,380,696,379,696,380,696,380,1772,379,696,380,696,407,669,379,696,380,696,380,696,405,670,406,671,379,696,380,695,381,696,379,696,380,696,380,696,379,696,380,696,380,696,380,694,381,696,380,1771,380,1771,381,696,379,1772,380,697,379,695,406,671,379,1772,380,1771,380,1772,380,1771,380,1772,380,695,380,1772,380,695,381,696,379,696,380,696,380,695,381,696,379,696,380,696,380,695,381,695,380,695,381,696,380,696,379,696,380,1771,381,696,379,696,380,696,405,670,405,671,407,669,380,695,380,697,406,670,379,695,381,695,381,695,380,696,380,696,380,696,380,696,379,696,380,695,381,696,379,696,380,696,380,695,380,697,405,670,380,696,405,671,379,1772,406,1746,379,696,406,670,380,1770,381,1771,381,1771,380,696,406}, //20C + {5065,2131,379,1773,379,696,379,696,380,697,379,1771,407,669,380,696,380,696,380,695,380,1772,380,696,380,1771,380,1772,380,696,379,1772,406,1746,410,1740,381,1771,380,1772,380,695,380,1772,380,696,405,671,381,694,380,696,380,696,380,696,379,1772,380,696,380,695,380,1771,381,695,381,696,405,671,379,1771,381,696,404,671,380,696,380,695,380,696,380,696,380,695,381,695,380,696,380,696,380,696,406,670,404,671,380,696,381,1770,380,1772,396,1754,381,695,381,696,405,1746,380,696,380,29380,5070,2103,407,1745,380,696,406,669,407,670,405,1746,380,695,380,696,405,671,380,696,380,1770,381,696,380,1770,381,1772,381,694,381,1770,407,1745,380,1772,380,1771,407,1744,381,695,380,1772,380,695,407,670,379,697,404,671,380,695,406,670,406,1745,381,695,380,697,379,1771,407,669,381,696,379,696,380,695,407,670,379,696,380,696,380,696,404,671,380,1772,380,1771,407,669,380,696,379,1772,380,1771,381,1771,380,696,406,670,380,695,406,670,407,668,407,669,381,695,380,696,380,696,379,1772,380,696,380,696,379,696,380,696,380,1771,381,695,380,696,380,696,405,671,379,696,380,696,380,696,406,669,380,697,379,696,380,696,405,670,380,696,380,695,407,669,380,696,380,695,381,696,406,670,379,696,380,696,380,1771,380,1771,407,669,380,696,407,669,380,1771,380,1772,380,1770,381,1771,381,1771,381,695,380,1772,380,695,380,697,406,669,379,696,380,697,379,696,406,669,381,695,380,696,380,696,380,695,381,695,380,696,380,695,380,1772,406,670,380,696,380,695,380,696,406,670,380,695,407,669,405,671,380,696,387,688,380,696,380,696,380,696,380,696,405,670,380,696,406,669,380,697,405,669,381,695,407,669,406,671,379,696,380,695,397,678,381,696,380,1771,381,696,379,1772,379,696,380,1771,406,1746,381,1770,407,670,404}, //21C + {5069,2103,381,1771,380,696,405,670,380,696,406,1745,381,695,381,696,405,670,380,696,380,1770,381,696,380,1771,406,1745,407,670,379,1772,380,1771,380,1772,380,1772,379,1772,405,671,405,1746,380,696,405,671,380,696,389,687,379,696,380,695,407,1745,380,696,407,667,408,1745,406,670,380,696,406,669,380,1772,405,671,379,696,406,670,380,696,379,696,405,671,380,696,406,670,406,670,379,696,405,670,407,670,379,696,380,696,380,1771,380,1772,380,1771,406,670,380,696,380,1771,380,696,406,29355,5043,2130,380,1771,380,696,380,695,406,671,379,1772,380,696,380,695,380,697,379,696,380,1771,380,696,380,1771,381,1771,380,695,381,1771,380,1772,380,1770,381,1772,380,1771,380,696,404,1747,381,694,381,696,380,696,379,696,380,697,379,696,380,1772,379,696,380,696,380,1772,379,697,379,696,380,696,379,696,380,696,380,696,380,696,379,696,380,696,380,1771,380,1772,380,695,380,696,380,1772,380,1771,380,1771,380,696,380,696,405,671,380,696,379,696,380,696,380,696,379,697,379,696,380,1771,406,670,380,695,381,696,379,697,406,1745,380,696,380,695,380,695,406,671,380,695,381,695,380,696,380,696,380,695,380,696,380,696,380,695,381,696,380,695,380,696,380,696,379,696,380,696,380,695,381,1771,380,696,380,1771,380,1772,380,696,405,671,379,696,380,1771,380,1772,380,1771,380,1771,381,1772,380,695,380,1771,381,696,380,695,380,696,379,697,379,696,380,696,380,696,380,695,380,696,380,696,406,669,406,671,380,695,380,696,380,1771,380,696,380,695,380,697,379,696,380,696,380,696,379,696,380,696,380,695,381,696,380,695,380,696,380,695,380,697,379,696,380,696,406,670,380,695,380,696,405,671,380,696,380,696,379,697,379,695,381,695,380,696,380,1771,381,1770,381,1771,381,695,380,1772,380,1771,407,1744,381,695,380}, //22C + {5042,2131,379,1772,380,696,406,670,379,696,380,1772,379,697,404,671,380,696,379,697,379,1773,379,696,379,1772,380,1772,379,697,379,1772,380,1771,380,1772,380,1771,380,1772,379,696,381,1771,380,696,379,696,380,696,380,696,379,697,379,697,379,1772,380,696,379,696,380,1772,379,696,380,696,379,697,379,1773,379,695,381,696,379,696,380,697,379,696,380,696,379,697,379,696,380,697,379,696,382,693,380,697,379,696,405,671,379,1772,380,1772,379,1772,405,671,379,696,380,1772,380,695,380,29382,5042,2130,380,1771,381,696,379,697,406,669,380,1771,380,696,380,696,380,696,380,696,379,1772,380,696,380,1771,380,1772,380,696,379,1772,380,1772,379,1772,379,1773,379,1772,380,695,380,1773,379,696,380,695,380,696,380,696,380,696,380,696,405,1746,380,695,408,669,379,1772,380,696,379,697,379,696,380,696,380,696,379,696,380,696,379,697,380,695,380,1772,379,1773,379,696,380,696,380,1771,380,1772,379,1771,407,670,406,670,380,696,379,696,379,698,379,696,380,695,380,696,380,696,379,1772,380,696,379,697,379,697,379,696,380,1772,379,697,405,670,380,696,380,696,405,671,379,696,380,696,380,695,380,696,406,670,380,696,406,669,407,669,380,695,408,669,380,698,377,697,378,697,380,696,380,695,380,1772,379,1772,406,1746,405,671,405,670,380,696,379,1772,380,1772,380,1771,380,1772,406,1745,380,696,380,1771,380,696,380,695,381,696,379,696,380,696,380,696,379,696,407,670,379,696,379,697,379,697,379,696,407,668,381,696,379,1772,380,696,379,697,405,670,380,696,380,696,379,697,379,696,380,696,379,697,379,697,404,671,380,696,380,695,380,696,380,697,379,695,406,670,381,695,380,696,406,670,379,697,379,696,380,696,405,675,376,695,407,669,406,1745,380,695,381,696,406,1746,379,1771,407,1745,406,1745,408,668,380}, //23C + {5043,2130,381,1771,380,696,380,696,380,695,381,1770,381,696,380,695,380,696,380,696,379,1772,380,697,379,1771,380,1772,380,696,380,1771,380,1772,380,1771,380,1772,379,1772,380,696,380,1771,406,671,379,696,405,670,380,695,408,669,380,695,407,1745,380,696,380,696,380,1771,380,696,380,695,381,696,379,1772,380,696,379,696,380,696,380,695,405,672,379,696,380,695,380,696,381,695,380,697,379,696,405,670,380,697,379,695,381,1772,404,1746,381,1772,379,696,380,696,380,1771,407,668,381,29380,5044,2130,380,1770,381,696,380,695,381,696,379,1772,380,696,405,671,379,697,379,696,379,1773,384,691,407,1744,381,1771,405,672,406,1745,404,1746,380,1772,380,1772,405,1745,381,696,380,1772,379,697,379,695,381,695,380,697,379,695,381,696,380,1772,379,696,380,695,380,1773,379,696,380,696,379,696,433,643,380,696,379,697,379,696,380,696,380,696,380,1771,380,1771,380,697,379,696,380,1772,379,1772,406,1745,406,670,380,695,381,695,380,696,380,697,379,696,380,696,379,696,380,695,381,1772,380,695,380,696,380,696,380,695,380,1772,380,696,380,695,380,697,379,696,380,695,380,697,405,670,405,671,380,696,379,696,380,696,380,696,379,697,379,696,380,697,403,672,380,695,380,696,380,696,380,1771,380,1771,407,1745,406,1745,381,696,379,696,380,697,379,1771,380,1772,380,1771,406,1746,406,1745,380,697,379,1772,379,697,379,696,380,696,379,697,379,697,379,695,381,696,406,669,380,697,379,696,380,696,379,697,379,695,381,696,379,1771,407,670,380,696,380,695,380,696,380,696,380,696,379,696,405,671,380,696,380,695,406,670,380,696,380,696,379,697,379,696,380,696,380,696,380,696,379,696,380,696,405,671,379,697,405,670,380,696,379,697,379,696,380,1772,379,1771,381,696,380,1770,381,1771,380,1773,379,1772,379,696,406}, //24C + {5043,2130,381,1772,379,696,380,695,380,696,380,1772,380,695,380,697,404,670,381,696,379,1772,406,670,380,1771,380,1772,406,669,406,1746,380,1772,379,1772,380,1771,380,1772,380,696,379,1772,380,696,380,696,379,697,379,697,379,696,379,697,384,1766,381,696,380,696,379,1772,380,697,404,670,380,696,380,1772,380,696,379,696,380,696,380,695,405,671,380,696,380,695,381,696,379,696,380,697,379,696,380,696,379,696,380,696,380,1772,379,1771,381,1772,379,696,406,670,380,1771,380,696,380,29381,5043,2130,380,1770,381,697,379,696,380,695,380,1771,381,696,379,696,380,697,379,696,380,1772,405,670,405,1747,379,1772,380,696,379,1772,380,1772,380,1771,380,1772,380,1772,379,696,380,1771,404,672,380,696,380,695,380,696,406,669,381,695,380,1772,380,696,379,696,380,1772,380,696,380,696,379,696,380,696,405,670,381,696,379,696,380,696,380,696,379,1772,380,1772,379,697,379,696,380,1771,380,1772,380,1771,380,696,380,696,380,696,379,697,379,697,379,696,379,696,407,670,379,696,380,1772,379,696,407,668,381,697,378,697,405,1746,380,695,380,697,379,695,381,696,380,695,380,696,380,696,380,696,407,669,379,696,380,696,380,696,379,697,379,695,381,697,379,696,380,696,379,696,380,697,379,696,379,697,379,696,393,684,378,1772,380,697,379,696,380,1770,381,1771,382,1770,406,1746,379,1773,379,696,380,1771,380,696,409,667,380,695,381,696,379,696,380,695,381,695,435,641,380,696,380,695,406,671,379,696,380,695,380,696,380,1772,380,695,380,697,379,696,380,696,406,670,379,697,379,696,380,696,380,695,406,670,406,670,380,695,380,696,380,696,380,696,379,697,379,695,381,696,380,696,379,696,380,696,380,696,380,696,380,695,380,696,380,696,380,1771,406,670,406,1745,380,1772,380,1772,379,1772,386,1765,380,696,380}, //25C + {5044,2129,408,1743,407,670,406,670,379,696,380,1772,406,669,407,669,407,669,383,692,408,1744,380,697,379,1771,406,1746,405,671,380,1771,380,1772,380,1771,380,1771,381,1772,405,669,407,1745,406,670,380,696,405,670,406,671,379,696,406,670,406,1746,405,670,406,670,405,1746,380,696,406,670,380,695,381,1771,406,670,380,695,406,670,380,696,405,671,406,669,380,696,380,696,380,695,380,696,380,696,380,695,406,670,407,669,380,1771,381,1771,380,1771,408,669,379,696,380,1771,380,696,406,29355,5043,2130,380,1772,380,696,406,669,407,670,379,1771,407,669,406,670,406,669,406,670,380,1772,380,695,380,1772,380,1772,380,696,406,1745,405,1746,407,1745,406,1745,380,1772,380,696,380,1771,380,695,381,695,380,696,380,696,380,696,380,694,381,1772,379,696,407,669,380,1772,379,696,406,670,407,669,380,695,381,695,380,696,380,696,380,696,379,697,379,1772,379,1772,406,670,380,695,380,1772,380,1771,381,1771,380,695,381,696,380,696,379,696,380,696,380,696,379,697,380,696,406,669,405,1746,380,696,406,670,379,697,379,695,381,1772,379,696,407,670,379,696,379,696,380,696,407,669,405,670,380,696,380,696,406,670,380,696,379,696,406,669,408,669,405,670,407,670,379,696,380,696,405,671,379,1772,379,696,406,671,379,696,380,1772,379,696,380,696,380,1772,406,1745,380,1771,380,1772,405,1746,406,670,380,1771,406,670,407,669,380,695,380,696,407,669,406,670,405,670,381,695,380,696,380,696,380,696,379,696,380,696,406,670,405,1746,404,672,405,670,380,697,405,669,381,695,381,696,379,697,404,671,380,696,405,670,380,696,380,697,378,697,380,695,380,696,380,695,380,697,404,672,379,696,380,696,380,696,406,669,380,696,380,696,379,697,379,695,407,1745,407,1745,380,1771,380,1772,406,1745,380,1771,381,1771,380,696,407}, //26C + {5043,2130,406,1746,379,696,380,697,405,670,380,1772,379,696,380,696,380,695,408,668,380,1772,405,671,405,1746,406,1745,381,696,405,1746,379,1772,380,1770,381,1772,407,1745,379,696,380,1772,380,695,386,691,404,670,381,696,380,696,379,697,379,1772,379,697,379,696,380,1772,380,695,406,670,407,669,380,1771,405,671,380,696,406,670,379,696,380,696,380,696,405,671,379,697,383,693,378,697,380,695,380,697,404,670,381,696,379,1771,381,1771,380,1772,406,670,379,696,406,1746,380,696,379,29381,5043,2130,406,1746,380,696,379,697,379,695,381,1772,379,695,381,697,379,696,379,697,379,1771,381,696,379,1773,379,1772,407,669,405,1746,379,1773,379,1772,380,1771,380,1772,379,697,405,1745,381,696,379,696,380,696,380,695,381,696,379,696,380,1772,405,671,379,697,379,1772,379,696,407,670,404,671,380,696,380,696,379,696,380,696,380,696,379,697,379,1771,380,1772,380,697,379,695,380,1771,381,1771,381,1772,379,696,405,671,405,670,380,697,379,696,379,697,379,697,405,671,379,696,379,1772,380,695,406,671,379,697,379,695,381,1771,380,696,380,696,380,696,379,696,406,671,405,669,380,697,379,697,405,670,380,696,379,697,379,696,380,696,406,670,379,697,379,696,405,671,379,697,379,697,383,693,379,1771,380,696,380,695,381,1772,379,696,380,696,380,1772,379,1772,379,1772,380,1771,406,1746,380,696,379,1772,380,697,381,694,379,697,379,696,380,697,405,670,379,696,380,697,379,696,406,670,379,697,379,696,380,695,406,670,406,1747,405,670,405,671,379,696,380,696,380,696,379,697,379,697,378,697,380,696,379,696,380,696,380,696,379,697,379,697,379,696,379,697,379,696,380,696,380,696,406,670,379,696,380,696,380,696,379,696,380,697,379,696,380,1771,407,668,381,696,380,696,379,697,379,697,379,696,379,1772,380}, //27C + {5044,2130,379,1773,379,696,380,695,381,696,405,1746,380,696,380,695,380,696,380,696,380,1771,380,697,379,1772,379,1771,407,670,380,1771,380,1772,380,1771,380,1772,380,1771,380,695,407,1745,380,696,380,696,380,696,379,697,379,696,380,696,380,1771,380,696,391,685,406,1745,380,696,405,670,405,672,379,1772,380,696,380,699,376,696,380,695,380,697,379,696,380,697,379,695,380,697,405,670,380,696,405,670,380,697,379,696,380,1771,380,1771,381,1771,380,696,380,696,380,1771,380,695,381,29380,5044,2129,381,1770,381,696,380,695,381,696,379,1772,406,670,380,696,379,696,380,696,380,1772,379,696,380,1772,379,1772,405,671,380,1772,379,1772,379,1772,406,1746,379,1771,381,696,380,1771,380,697,379,695,407,670,380,695,380,696,380,695,381,1771,380,695,407,670,405,1746,380,696,406,670,379,696,380,696,380,695,381,695,380,696,405,671,380,695,380,1772,380,1772,379,697,379,696,380,1771,408,1744,380,1771,380,696,380,695,391,686,380,695,407,669,380,695,381,696,380,696,379,696,380,1771,380,696,380,696,405,670,380,696,407,1744,381,696,407,669,379,696,380,696,380,696,379,696,380,696,380,696,380,696,379,696,380,696,380,696,405,671,379,696,380,696,404,672,379,696,380,697,379,696,380,1770,382,1771,379,697,379,697,379,1771,380,697,379,696,380,1772,379,1772,380,1771,380,1772,380,1771,380,696,380,1772,379,696,380,696,380,696,380,695,381,695,380,696,405,671,407,669,379,696,380,696,380,696,379,696,380,697,379,697,379,1771,380,696,380,696,406,669,380,697,379,695,381,696,379,696,406,671,379,696,380,695,380,697,379,697,405,670,380,695,380,697,379,696,407,669,380,696,404,671,380,696,380,696,379,696,380,696,380,696,379,697,433,642,380,1771,406,1746,380,696,380,696,379,696,380,696,380,697,378,1772,380}, //28C + {5043,2129,381,1772,380,696,380,696,379,697,382,1769,406,671,378,695,407,674,375,696,380,1773,406,669,379,1772,380,1772,379,697,379,1772,380,1771,380,1772,380,1772,379,1772,380,696,380,1772,379,696,380,696,379,697,379,696,380,696,379,697,379,1772,407,669,379,697,380,1771,407,669,379,697,380,696,379,1772,379,697,379,697,379,696,379,696,406,671,379,696,406,669,381,695,380,697,406,669,380,696,379,697,379,696,380,696,379,1772,406,1745,381,1772,379,696,380,697,383,1766,406,671,380,29381,5068,2105,379,1772,380,697,379,696,380,696,380,1770,381,696,379,696,380,697,379,696,380,1771,380,697,379,1772,379,1772,380,696,380,1771,380,1772,379,1773,379,1772,380,1771,380,696,380,1771,380,696,380,696,380,696,379,697,379,697,379,695,381,1771,380,696,380,696,379,1772,406,670,380,696,379,697,379,696,405,671,380,696,379,696,406,671,379,696,379,1772,407,1745,380,695,380,697,405,1745,407,1745,380,1771,406,670,380,696,406,670,379,697,379,697,379,696,380,695,407,669,380,696,380,1771,380,696,380,697,379,696,379,697,379,1772,380,696,379,696,406,671,379,696,405,671,380,696,406,669,405,671,379,697,379,697,379,696,406,670,406,670,379,696,406,670,380,695,401,676,405,671,379,696,380,697,378,696,380,1771,381,695,380,1771,381,696,379,696,380,1771,381,1772,405,1746,380,1771,380,1772,379,696,380,1772,380,695,408,669,405,671,379,695,380,697,405,670,405,671,380,696,406,670,379,696,380,695,381,696,379,697,405,671,379,1771,380,696,380,697,379,695,381,695,406,671,379,696,380,696,380,696,379,696,379,697,379,696,380,696,380,696,380,696,380,696,405,670,380,696,380,696,406,669,406,670,380,696,380,695,381,696,379,695,381,695,381,696,404,1747,380,696,380,1772,379,696,380,696,380,695,380,696,406,1745,406}, //29C + {5043,2130,380,1771,407,669,406,670,380,695,406,1746,434,642,380,695,407,669,380,696,406,1746,379,696,380,1772,379,1773,405,670,380,1772,379,1773,405,1745,380,1772,380,1771,380,696,380,1772,379,697,405,670,379,697,379,696,407,669,380,696,380,1772,379,695,407,670,380,1771,380,697,379,696,405,671,379,1771,381,696,405,670,380,696,380,696,379,696,380,697,379,697,379,695,406,670,407,669,407,669,380,695,380,696,407,669,405,1747,379,1772,405,1747,406,669,406,669,407,1745,406,670,380,29381,5043,2130,380,1771,406,670,380,696,380,695,381,1771,380,696,379,697,379,696,380,696,380,1771,380,696,406,1746,379,1772,405,671,406,1745,380,1772,406,1746,379,1771,381,1771,380,696,405,1746,380,696,379,697,406,670,380,695,380,696,380,696,406,1745,380,695,381,695,380,1772,380,696,405,670,381,695,406,671,379,697,378,696,380,696,380,697,379,695,381,1771,380,1771,405,671,380,696,406,1745,382,1769,381,1771,380,696,380,696,380,696,379,695,381,696,380,697,379,696,379,696,404,672,380,1770,381,696,380,696,380,696,405,670,380,1772,405,671,379,696,380,697,379,696,405,671,379,695,381,697,379,696,379,696,406,670,405,671,380,696,405,670,380,696,380,696,380,695,381,695,380,695,381,695,380,1771,408,669,406,1745,380,696,380,1772,405,671,406,668,381,1771,380,1771,381,1772,379,1771,381,1771,380,696,380,1772,379,696,380,696,380,696,405,671,379,696,380,696,380,695,407,668,407,671,379,696,380,695,380,697,379,696,406,669,381,1771,380,697,379,696,405,670,380,696,380,696,380,695,406,670,407,668,407,669,407,670,380,695,406,670,380,696,380,696,379,697,379,696,380,695,399,677,380,696,380,695,406,669,381,696,380,695,381,696,379,696,380,696,380,1771,405,1747,380,1771,405,672,379,696,380,695,381,696,379,1771,407}, //30C + {5043,2129,383,1769,380,700,375,696,380,696,405,1746,380,696,406,670,380,696,380,696,379,1772,380,696,380,1772,379,1772,406,669,380,1772,380,1772,379,1772,380,1771,407,1745,404,672,379,1771,381,696,379,696,380,696,380,697,379,696,380,696,379,1773,379,696,405,671,379,1772,405,671,407,669,379,696,380,1771,381,695,380,696,380,696,405,670,380,696,380,696,406,670,379,696,406,670,380,696,380,696,405,671,379,697,379,696,406,1745,380,1771,380,1772,406,670,380,696,405,1746,380,696,380,29380,5043,2130,380,1772,406,669,380,697,379,696,380,1772,379,697,407,668,380,696,406,670,379,1772,399,677,379,1772,380,1772,379,697,379,1772,379,1772,380,1772,405,1746,380,1772,380,696,405,1746,380,695,407,670,379,697,379,696,379,697,379,696,380,1772,379,697,379,696,380,1772,379,697,379,696,380,696,379,697,405,671,379,697,379,696,380,696,379,697,379,1771,381,1771,380,696,380,696,379,1772,380,1772,405,1746,380,696,380,695,380,697,379,696,380,696,379,697,379,696,380,697,379,696,379,1772,380,695,406,671,379,697,379,695,381,1772,380,696,379,696,379,697,405,670,380,696,380,696,380,695,380,696,380,697,404,671,406,670,405,671,379,696,380,695,380,697,379,696,380,696,379,696,405,671,380,697,379,1771,380,1772,405,671,379,1772,380,696,380,695,407,1745,406,1745,380,1772,380,1772,379,1772,380,696,380,1771,405,671,379,696,380,696,380,696,405,671,379,697,379,696,406,670,380,696,379,697,379,696,380,696,406,670,379,697,379,1772,379,697,379,696,380,696,380,696,379,696,380,696,407,670,406,668,406,670,380,696,380,696,379,697,379,696,380,696,379,697,406,669,380,696,380,696,379,696,380,697,379,697,378,697,379,697,405,670,380,695,380,697,379,1773,379,696,407,668,381,1771,380,696,379,696,406,671,379,1772,379}, //31C + {5070,2104,379,1772,380,696,407,669,379,697,379,1772,379,696,380,696,380,696,380,695,380,1771,381,696,380,1771,380,1771,380,696,405,1747,391,1760,380,1771,381,1771,407,1745,380,695,380,1772,380,696,405,671,379,696,380,696,379,697,379,696,380,1772,380,696,379,696,380,1772,379,697,379,696,380,695,406,1746,380,696,380,696,380,696,379,697,379,696,380,696,391,685,379,696,383,693,380,696,380,696,379,696,382,694,380,696,379,1772,380,1771,380,1772,380,696,380,695,380,1771,381,696,380,29380,5043,2131,379,1772,380,696,380,696,398,677,380,1772,405,671,379,696,380,696,380,696,405,1746,406,669,380,1772,380,1772,379,696,380,1772,379,1772,380,1772,379,1772,380,1772,406,670,405,1746,380,695,380,696,405,671,380,696,380,696,379,696,380,1771,380,697,379,696,406,1746,380,695,380,696,380,696,380,695,406,670,380,697,379,695,406,671,405,671,379,1772,406,1745,380,695,380,697,379,1773,379,1771,381,1771,380,696,380,696,379,696,380,697,379,696,380,696,379,697,379,696,405,670,381,1771,380,696,379,696,406,670,380,696,405,1746,406,671,379,696,380,696,379,697,379,696,380,696,380,695,380,696,406,670,380,695,381,696,404,671,381,695,380,695,381,696,379,696,380,696,379,696,380,697,379,1771,381,1771,380,1772,379,696,380,1771,381,695,381,695,380,1772,380,1771,380,1772,380,1772,379,1772,379,697,379,1771,381,696,379,696,380,696,380,696,379,696,406,671,379,696,406,670,380,695,380,696,380,696,380,696,404,671,380,695,381,1771,380,696,380,696,379,697,380,696,379,696,380,696,397,678,380,697,379,696,380,696,379,697,403,673,379,695,380,697,379,697,406,669,380,696,380,696,379,697,379,696,380,696,405,671,379,697,379,697,379,696,379,697,379,1772,380,1771,380,696,380,1772,379,696,380,696,407,668,380,1771,381} //32C }, // Fan Speed Med { - {8978, 4497, 506, 602, 534, 602, 557, 1679, 534, 602, 533, 1703, 556, 579, 534, 602, 533, 618, 534, 601, 534, 1703, 534, 1703, 533, 602, 534, 601, 534, 601, 534, 601, 534, 618, 534, 602, 533, 603, 533, 601, 534, 602, 533, 602, 533, 602, 533, 603, 533, 618, 534, 602, 557, 577, 534, 601, 534, 602, 533, 602, 534, 601, 534, 602, 533, 619, 534, 601, 533, 602, 534, 602, 533, 601, 534, 602, 533, 602, 534, 602, 533, 623, 534, 1703, 534, 1702, 534, 1703, 534, 1691, 533}, // 15C - {8978, 4503, 560, 550, 585, 549, 587, 1650, 586, 549, 586, 1651, 585, 550, 585, 550, 586, 566, 586, 549, 587, 1650, 586, 1651, 585, 550, 585, 550, 586, 550, 585, 550, 585, 1668, 585, 550, 587, 548, 586, 549, 586, 549, 586, 549, 586, 550, 586, 549, 586, 566, 586, 549, 586, 549, 586, 549, 586, 550, 586, 549, 585, 550, 586, 549, 586, 567, 585, 550, 585, 550, 585, 550, 586, 549, 585, 551, 585, 550, 585, 550, 585, 572, 586, 1650, 586, 1651, 585, 1651, 586, 538, 586}, // 16C - {8978, 4529, 507, 601, 534, 601, 534, 1703, 534, 601, 534, 1703, 533, 602, 534, 602, 533, 618, 534, 602, 533, 1704, 533, 1703, 533, 601, 534, 602, 534, 601, 534, 1703, 534, 618, 533, 603, 533, 601, 534, 601, 534, 601, 534, 601, 534, 602, 533, 602, 533, 619, 534, 601, 534, 601, 534, 602, 533, 602, 534, 601, 534, 601, 534, 601, 534, 618, 534, 602, 533, 602, 534, 602, 533, 602, 533, 602, 533, 602, 534, 601, 534, 623, 534, 1703, 533, 1703, 534, 602, 533, 1691, 534}, // 17C - {8978, 4496, 508, 600, 535, 601, 534, 1702, 535, 600, 535, 1701, 536, 600, 535, 601, 534, 618, 534, 601, 534, 1702, 535, 1702, 534, 601, 535, 600, 535, 601, 534, 1702, 534, 1719, 535, 601, 534, 601, 534, 602, 534, 601, 533, 601, 535, 601, 534, 601, 534, 618, 534, 601, 534, 602, 533, 602, 534, 601, 534, 601, 534, 602, 533, 601, 535, 617, 535, 601, 534, 601, 534, 601, 535, 600, 534, 601, 535, 600, 535, 601, 534, 623, 534, 1703, 533, 1703, 534, 601, 534, 589, 535}, // 18C - {8978, 4522, 508, 601, 534, 602, 533, 1703, 534, 602, 533, 1703, 533, 602, 534, 601, 534, 619, 533, 602, 533, 1703, 534, 1702, 534, 602, 535, 600, 534, 1702, 535, 601, 534, 618, 533, 602, 533, 603, 533, 602, 534, 601, 533, 602, 534, 601, 533, 602, 534, 619, 533, 602, 533, 602, 533, 602, 534, 602, 533, 602, 533, 601, 534, 601, 534, 619, 533, 601, 535, 601, 534, 601, 534, 602, 533, 602, 533, 602, 533, 602, 534, 624, 533, 1702, 535, 601, 534, 1702, 534, 1691, 533}, // 19C - {8978, 4523, 507, 602, 534, 601, 533, 1704, 533, 601, 534, 1703, 534, 601, 534, 601, 534, 619, 533, 601, 534, 1703, 534, 1703, 534, 601, 534, 601, 534, 1702, 535, 600, 535, 1719, 534, 601, 534, 602, 533, 602, 534, 601, 534, 602, 533, 602, 533, 602, 533, 619, 533, 602, 534, 601, 534, 601, 534, 601, 534, 602, 533, 603, 533, 601, 534, 618, 534, 602, 533, 601, 535, 601, 534, 601, 534, 601, 534, 602, 533, 602, 533, 624, 534, 1703, 533, 601, 534, 1702, 535, 589, 534}, // 20C - {8978, 4503, 562, 547, 588, 547, 589, 1647, 589, 546, 589, 1648, 588, 547, 589, 546, 589, 564, 588, 547, 589, 1648, 588, 1648, 588, 546, 590, 546, 589, 1648, 588, 1648, 589, 564, 588, 547, 589, 546, 588, 548, 588, 546, 589, 546, 589, 547, 588, 547, 589, 563, 589, 547, 587, 547, 589, 547, 588, 547, 588, 547, 588, 547, 589, 545, 590, 564, 588, 546, 589, 546, 589, 547, 589, 546, 589, 546, 589, 547, 588, 547, 589, 569, 587, 1648, 589, 547, 588, 546, 589, 1637, 588}, // 21C - {8978, 4497, 508, 601, 534, 601, 534, 1702, 535, 601, 534, 1702, 534, 602, 534, 601, 534, 617, 534, 602, 534, 1703, 533, 1703, 534, 602, 533, 602, 533, 1703, 534, 1703, 533, 1720, 534, 601, 534, 602, 533, 602, 534, 601, 534, 602, 533, 601, 534, 602, 533, 619, 533, 602, 534, 601, 534, 601, 534, 602, 533, 601, 535, 602, 532, 602, 534, 618, 534, 602, 533, 601, 535, 601, 533, 602, 534, 602, 533, 601, 534, 601, 534, 624, 533, 1703, 534, 602, 533, 602, 533, 590, 534}, // 22C - {8978, 4503, 507, 602, 534, 602, 533, 1703, 534, 601, 534, 1702, 534, 602, 533, 602, 533, 619, 533, 602, 534, 1703, 533, 1704, 533, 602, 533, 1703, 534, 600, 535, 601, 534, 619, 533, 601, 534, 602, 533, 602, 534, 601, 534, 601, 534, 602, 533, 602, 533, 619, 533, 602, 533, 603, 533, 602, 533, 602, 533, 602, 533, 603, 533, 601, 534, 619, 533, 602, 533, 602, 534, 601, 534, 602, 533, 601, 534, 602, 534, 601, 533, 624, 534, 601, 534, 1703, 533, 1703, 534, 1691, 533}, // 23C - {8978, 4495, 507, 602, 557, 581, 531, 1703, 533, 601, 559, 1679, 557, 578, 558, 577, 558, 594, 558, 578, 557, 1679, 533, 1704, 533, 601, 558, 1679, 557, 578, 534, 601, 534, 1720, 558, 577, 558, 577, 534, 601, 559, 577, 558, 577, 558, 577, 534, 602, 533, 619, 557, 578, 557, 577, 558, 578, 534, 601, 557, 578, 559, 576, 559, 577, 558, 593, 558, 578, 559, 577, 533, 601, 557, 579, 558, 577, 557, 578, 534, 601, 559, 598, 558, 577, 534, 1703, 559, 1678, 538, 585, 558}, // 24C - {8978, 4501, 507, 601, 558, 578, 534, 1702, 534, 601, 534, 1703, 558, 577, 534, 602, 533, 619, 558, 577, 534, 1702, 534, 1703, 534, 602, 557, 1679, 533, 602, 534, 1703, 533, 619, 533, 602, 534, 601, 534, 601, 534, 601, 534, 602, 533, 602, 533, 602, 534, 619, 532, 602, 534, 601, 534, 602, 533, 602, 533, 602, 534, 602, 533, 601, 534, 619, 533, 602, 534, 601, 533, 602, 557, 578, 534, 601, 534, 602, 533, 602, 534, 623, 533, 602, 534, 1703, 534, 601, 534, 1691, 533}, // 25C - {8978, 4529, 531, 577, 533, 603, 558, 1678, 559, 576, 559, 1678, 558, 576, 561, 575, 558, 594, 559, 576, 559, 1677, 561, 1676, 559, 576, 560, 1677, 559, 577, 558, 1678, 533, 1721, 558, 576, 550, 586, 559, 576, 560, 575, 558, 577, 558, 577, 559, 577, 533, 619, 559, 576, 559, 577, 557, 577, 560, 575, 559, 577, 558, 577, 559, 576, 558, 594, 558, 578, 559, 575, 558, 578, 559, 576, 559, 576, 558, 577, 558, 578, 558, 599, 558, 576, 559, 1678, 558, 578, 559, 565, 556}, // 26C - {8978, 4495, 562, 547, 588, 547, 588, 1648, 589, 547, 588, 1648, 588, 547, 589, 547, 589, 563, 590, 544, 591, 1647, 588, 1648, 589, 545, 590, 1647, 590, 1647, 589, 546, 589, 564, 589, 546, 589, 546, 588, 547, 589, 546, 589, 547, 589, 545, 589, 546, 590, 563, 589, 546, 590, 545, 590, 546, 588, 547, 589, 546, 589, 546, 588, 547, 588, 564, 590, 546, 588, 547, 588, 547, 588, 548, 588, 547, 589, 546, 588, 547, 588, 570, 587, 547, 588, 548, 588, 1648, 589, 1634, 589}, // 27C - {8978, 4502, 562, 547, 587, 549, 587, 1649, 586, 549, 588, 1648, 588, 548, 588, 547, 561, 591, 587, 548, 562, 1675, 564, 1673, 587, 548, 587, 1649, 588, 1648, 588, 548, 562, 1691, 588, 548, 587, 548, 587, 548, 561, 575, 586, 548, 588, 547, 588, 548, 587, 564, 588, 548, 562, 573, 587, 549, 588, 546, 563, 572, 588, 548, 588, 548, 587, 564, 562, 573, 563, 572, 588, 548, 588, 548, 561, 574, 587, 547, 562, 574, 587, 570, 587, 547, 563, 573, 588, 1648, 588, 536, 561}, // 28C - {8978, 4495, 534, 575, 562, 573, 561, 1676, 561, 574, 561, 1675, 560, 576, 560, 574, 561, 592, 561, 574, 561, 1676, 561, 1676, 560, 574, 561, 1677, 559, 1676, 562, 1675, 560, 593, 560, 575, 560, 575, 560, 575, 560, 575, 561, 574, 561, 574, 560, 575, 561, 592, 561, 574, 560, 575, 561, 575, 559, 576, 559, 576, 560, 575, 561, 574, 561, 592, 560, 575, 560, 575, 560, 575, 560, 575, 561, 574, 560, 576, 560, 574, 561, 597, 559, 576, 560, 575, 560, 575, 561, 1664, 560}, // 29C - {8978, 4503, 534, 575, 559, 577, 560, 1676, 558, 577, 559, 1677, 560, 575, 560, 576, 560, 592, 559, 576, 561, 1675, 561, 1676, 560, 575, 559, 1678, 560, 1676, 559, 1677, 561, 1693, 560, 576, 558, 577, 560, 575, 558, 577, 560, 575, 559, 576, 560, 575, 559, 594, 559, 576, 560, 575, 559, 577, 559, 579, 556, 576, 559, 576, 560, 575, 560, 592, 559, 576, 559, 577, 559, 576, 559, 576, 560, 575, 560, 575, 559, 577, 559, 598, 560, 576, 557, 578, 559, 576, 559, 564, 559} // 30C + {5066,2130,406,1745,407,669,407,669,405,670,381,1771,380,696,380,696,404,671,380,696,406,1745,406,670,379,1772,380,1772,380,696,379,1772,380,1771,380,1772,405,1746,380,1771,380,697,405,1746,379,696,380,696,380,696,405,670,380,696,407,669,380,1772,379,695,406,671,406,1745,381,695,380,695,407,669,380,1772,380,696,379,696,380,696,407,669,380,695,380,696,380,696,380,696,405,669,381,696,380,695,406,670,380,696,380,696,380,1771,380,1771,381,1771,380,696,405,670,407,1745,379,697,379,29381,5042,2130,380,1772,380,696,379,697,406,669,380,1770,407,670,380,696,380,696,379,696,380,1772,379,697,379,1772,380,1771,380,696,380,1771,380,1772,406,1744,381,1772,405,1746,380,696,380,1772,405,670,406,670,379,696,380,697,379,696,394,681,380,1772,380,695,380,696,380,1772,405,671,379,697,405,670,405,670,380,696,380,696,380,696,380,696,379,697,379,1771,380,1772,380,696,379,696,380,1772,406,1745,380,1771,407,670,379,696,380,696,407,668,380,696,407,668,381,696,380,695,380,696,380,1772,379,696,380,696,380,695,380,697,379,1772,379,696,406,670,380,696,380,695,380,696,380,696,380,696,379,697,379,696,380,696,379,697,380,696,379,696,379,697,379,697,379,695,407,670,380,696,406,669,382,1769,380,1772,406,1745,407,669,379,697,379,696,380,697,405,1746,379,1772,380,1772,405,1746,406,1745,380,1772,380,696,379,696,380,696,380,696,406,669,405,671,405,671,379,696,380,695,381,696,380,696,379,696,380,696,405,671,380,695,380,1772,379,696,380,697,379,696,380,696,406,669,380,696,380,695,380,697,379,696,380,696,379,697,379,696,380,696,379,697,379,697,379,695,406,671,389,687,379,696,380,696,380,696,406,669,380,696,380,695,407,669,408,668,380,1771,380,1772,380,696,379,1772,380,695,380,697,379,1772,379,696,381}, //16 + {5041,2131,379,1773,379,696,380,696,379,697,379,1772,379,697,379,697,379,696,379,697,379,1772,380,696,379,1773,379,1772,379,697,379,1772,383,1768,380,1771,380,1773,379,1772,385,691,379,1772,379,697,379,696,380,696,379,697,379,697,379,696,379,1773,379,696,380,696,379,1772,380,696,379,697,379,696,406,1746,379,697,379,696,380,696,405,671,379,697,379,696,380,695,380,697,379,696,380,696,380,696,379,697,379,696,380,696,379,1772,379,1773,379,1772,380,696,380,696,379,1772,380,697,378,29381,5043,2130,379,1772,380,696,380,695,380,696,380,1772,379,697,379,696,406,670,379,696,381,1771,380,696,379,1772,379,1773,379,696,380,1772,380,1771,380,1771,380,1772,380,1771,380,696,380,1772,379,697,379,696,379,697,379,697,379,695,381,696,380,1771,379,697,380,695,380,1772,379,697,380,696,379,697,402,673,380,696,379,696,380,697,379,696,380,695,380,1771,381,1771,406,670,380,696,380,1770,381,1772,379,1772,380,696,379,697,379,696,380,696,391,685,379,696,380,697,379,695,380,697,380,1770,380,697,379,697,379,696,380,696,380,1771,380,696,379,696,381,697,378,696,380,696,379,696,380,696,405,670,407,670,379,696,380,696,379,697,379,696,380,696,380,696,380,695,380,696,380,696,379,697,379,696,406,670,380,696,379,1772,406,670,379,697,379,696,406,1746,379,1772,406,1745,380,1772,379,1773,379,1772,379,697,379,697,379,696,380,696,405,670,406,671,378,697,379,697,406,669,380,695,381,696,379,696,380,696,379,696,380,697,379,1771,381,696,406,670,379,696,379,697,379,696,379,697,380,696,379,697,383,691,381,696,406,670,379,697,379,701,374,697,405,671,379,696,406,670,380,696,379,696,380,696,380,695,407,669,406,670,380,696,379,697,379,696,380,1771,380,696,380,1772,405,1746,380,696,406,669,380,1772,405,671,379}, //17C + {5041,2132,379,1772,379,696,379,698,378,697,379,1773,378,698,379,697,378,697,378,698,378,1773,378,697,380,1772,379,1772,379,698,378,1774,377,1773,379,1772,379,1773,379,1772,379,697,379,1773,378,697,379,697,378,698,378,697,379,697,378,697,379,1773,379,697,379,696,380,1772,378,698,379,697,378,698,378,1773,378,698,379,696,379,697,378,697,379,697,379,697,378,698,378,698,378,698,378,697,379,697,405,670,379,697,379,696,379,1773,379,1772,379,1772,380,697,378,697,379,1773,378,698,378,29382,5041,2131,379,1773,378,698,378,698,378,697,378,1774,378,698,378,697,379,697,378,697,379,1773,378,698,378,1773,379,1772,379,697,379,1773,379,1771,380,1772,379,1773,378,1775,377,696,380,1772,379,698,378,697,378,697,379,698,378,697,379,697,379,1772,379,697,379,697,378,1772,380,696,380,697,378,697,378,698,378,697,379,697,379,697,379,698,378,696,379,1772,380,1773,378,697,378,698,378,1773,379,1773,378,1773,379,697,378,697,379,697,379,696,379,698,378,697,379,696,380,697,378,698,378,1773,379,697,379,696,379,697,379,697,378,1772,379,698,378,697,379,697,379,697,378,697,379,697,379,697,379,697,383,692,379,698,378,697,378,697,379,702,374,697,379,696,379,697,379,697,378,697,379,697,379,1773,379,697,378,697,378,1774,379,696,379,697,378,697,379,1773,379,1773,378,1773,379,1773,378,1773,379,1773,405,671,378,697,379,696,379,698,378,697,379,697,379,697,379,696,379,696,380,696,380,696,379,697,379,696,380,697,378,697,379,1772,380,696,405,670,381,696,379,696,379,696,393,683,406,670,380,696,379,697,379,696,380,696,380,695,380,696,380,696,380,695,381,695,380,696,405,671,379,697,380,695,380,696,380,696,379,696,407,668,381,696,406,670,405,1745,381,1771,407,1744,381,1771,380,695,381,696,403,1748,380,696,380}, //18C + {5044,2129,381,1770,381,695,381,695,381,696,379,1772,379,696,380,696,380,696,380,696,379,1772,380,696,380,1771,380,1771,380,696,380,1771,381,1771,380,1771,381,1771,380,1772,380,696,379,1771,381,696,379,697,379,696,380,695,381,696,379,696,380,1772,380,696,379,696,380,1772,379,696,380,695,381,696,379,1771,381,696,380,696,379,696,380,696,380,696,380,696,379,696,380,696,380,695,380,696,380,696,380,696,380,695,380,696,380,1771,380,1772,380,1771,380,696,380,696,380,1771,380,696,380,29358,5065,2129,381,1771,381,695,380,696,380,696,380,1771,379,697,380,696,380,695,380,697,379,1771,381,696,379,1772,380,1771,380,695,381,1772,379,1772,380,1772,379,1771,381,1771,380,697,379,1770,381,697,379,696,380,695,381,696,379,695,381,696,380,1771,380,695,381,696,380,1771,380,695,381,695,380,696,380,695,381,695,381,696,379,696,380,696,379,696,380,1772,380,1772,379,696,380,696,380,1770,381,1772,380,1770,381,696,380,696,380,696,379,696,380,696,380,696,379,696,380,696,380,696,379,1772,380,695,381,695,380,697,379,696,380,1772,379,697,379,696,380,695,381,695,380,696,380,696,380,695,380,696,380,695,381,695,380,696,380,697,379,697,378,697,379,696,407,669,380,696,380,695,380,695,381,696,379,1772,380,696,380,1770,381,696,380,696,379,696,380,1772,407,1744,380,1772,380,1770,381,1771,380,1772,380,696,380,696,380,695,380,696,380,695,381,695,380,697,379,695,381,696,380,695,380,696,380,695,381,695,380,696,380,696,380,1771,380,696,380,696,380,696,379,696,380,696,380,695,380,696,380,697,379,696,379,696,406,669,381,696,379,697,379,697,379,695,381,696,379,696,380,695,381,696,379,697,379,696,380,696,380,695,381,695,380,696,380,696,380,1771,380,696,380,695,381,696,379,1771,381,696,379,1771,381,695,381}, //19C + {5044,2129,379,1772,380,696,379,696,380,696,380,1772,379,697,379,696,380,696,380,695,406,1746,380,695,380,1772,380,1771,380,696,380,1772,380,1771,380,1772,380,1771,380,1772,405,671,379,1772,379,697,379,697,379,696,380,697,378,696,380,697,379,1771,406,671,379,696,380,1771,380,696,405,671,379,697,380,1772,405,670,380,696,379,697,379,696,380,696,380,696,379,697,379,696,380,696,405,671,379,697,379,696,383,693,379,697,404,1746,380,1772,380,1771,380,695,381,696,380,1771,380,696,380,29380,5043,2131,379,1772,380,696,380,696,379,697,379,1771,380,698,405,669,380,696,380,695,380,1773,379,696,380,1772,379,1772,380,695,380,1772,380,1771,380,1772,380,1772,379,1771,380,697,379,1772,380,695,381,695,380,697,404,670,381,695,380,696,380,1772,380,696,379,696,407,1747,377,697,379,696,380,696,405,670,381,695,380,695,381,696,379,696,380,697,379,1770,381,1772,380,696,380,696,379,1772,380,1772,379,1772,380,696,379,696,380,696,380,696,405,671,379,697,379,696,380,696,379,696,380,1771,381,695,380,697,405,670,380,696,379,1772,380,696,380,696,380,696,379,696,380,696,379,697,379,697,405,670,380,695,407,670,379,697,379,696,380,696,379,697,379,695,381,696,380,695,380,697,379,695,381,1771,380,1771,384,693,379,1772,405,670,381,700,375,696,380,1772,379,1772,380,1772,405,1746,380,1771,380,1771,381,695,407,670,379,696,380,695,380,696,380,696,380,696,404,671,380,697,379,696,380,695,380,696,406,670,380,696,380,695,407,1745,380,696,406,670,379,696,380,696,380,696,380,695,406,670,380,695,381,695,380,696,380,696,380,696,380,695,380,696,380,696,380,695,381,695,380,697,379,695,407,669,380,696,380,696,406,669,380,696,405,671,380,696,379,1772,380,1771,380,696,380,695,381,1771,380,697,379,1772,379,696,380}, //20C + {5042,2131,378,1773,379,698,378,697,378,698,378,1773,379,697,379,696,379,697,379,697,379,1772,379,697,379,1772,379,1773,379,696,379,1773,379,1772,380,1772,379,1772,380,1771,380,696,380,1772,379,696,380,697,379,697,378,696,406,671,378,696,380,1773,379,697,379,697,378,1772,405,671,379,698,378,697,379,1771,380,697,379,697,379,696,379,698,378,697,379,697,405,671,378,698,378,696,379,697,379,698,378,697,379,697,379,696,379,1771,381,1772,379,1773,379,697,378,697,405,1747,379,696,380,29359,5063,2132,379,1773,378,697,379,696,380,696,382,1769,380,696,379,697,379,697,379,697,379,1772,379,698,378,1772,379,1773,379,696,380,1772,380,1771,380,1772,379,1772,380,1772,379,697,378,1773,379,697,379,696,380,697,378,697,379,697,379,697,379,1772,379,697,379,696,380,1772,379,696,406,670,379,697,404,671,406,670,380,696,380,695,380,697,404,672,378,1772,380,1771,380,696,380,696,406,1745,380,1772,380,1771,380,696,406,670,380,696,379,696,380,697,379,696,380,696,379,696,406,670,380,1772,379,697,379,695,381,696,405,671,397,1754,379,696,380,696,406,670,380,696,379,697,379,696,380,695,380,697,379,696,380,696,406,670,405,670,407,669,406,670,405,670,407,669,380,696,405,670,381,695,406,670,405,670,407,1745,406,1746,379,696,406,670,407,669,405,1745,408,1744,406,1746,380,1771,406,1745,407,1745,406,670,380,695,408,668,380,695,407,670,379,696,380,696,407,669,405,669,406,671,407,669,406,669,380,696,379,697,407,668,407,1745,379,697,405,670,379,697,407,669,379,697,378,698,378,697,378,697,379,698,377,699,377,698,377,698,377,699,377,699,350,726,350,725,350,726,350,726,349,726,349,727,349,728,347,728,372,703,373,703,373,703,347,729,372,1778,374,702,373,1779,373,703,373,1778,374,701,374,1778,373,703,373}, //21C + {5043,2130,380,1773,378,697,379,697,379,696,379,1772,380,696,379,697,379,697,378,698,379,1773,378,697,379,1772,380,1771,380,697,379,1772,379,1773,379,1772,379,1773,379,1771,380,697,378,1774,378,697,379,697,379,697,379,696,379,697,378,698,378,1773,379,697,379,696,380,1772,378,698,379,695,380,698,378,1772,405,672,378,697,379,697,378,698,379,696,379,696,380,696,379,697,379,696,380,696,380,696,379,697,379,697,378,697,379,1773,379,1772,380,1772,379,696,379,698,378,1772,380,696,379,29382,5042,2131,379,1772,380,696,380,696,379,696,380,1771,380,696,380,696,380,696,379,697,379,1773,379,696,379,1772,380,1772,380,696,379,1772,406,1745,405,1747,380,1771,380,1772,379,696,380,1772,379,697,406,669,380,696,379,697,379,696,380,696,380,1771,380,696,380,696,380,1771,406,671,405,670,380,696,379,696,380,696,405,671,406,669,406,670,406,670,407,1744,407,1744,406,671,379,696,380,1771,380,1771,406,1746,380,696,399,677,380,696,406,669,406,670,380,696,405,670,380,696,406,669,407,1745,406,669,381,695,380,696,380,695,406,1746,406,669,407,670,406,669,406,670,380,696,406,669,407,669,407,669,380,696,405,670,380,696,380,696,406,669,406,670,406,670,379,696,406,671,405,670,380,696,379,1772,406,670,404,1748,378,1773,378,698,377,698,378,698,377,1773,377,1775,351,1801,350,1801,349,1803,348,1803,348,728,373,703,373,703,373,703,373,702,373,703,373,703,373,702,373,703,373,702,374,702,374,702,373,703,373,703,373,702,373,1779,372,703,374,703,372,703,372,704,372,703,371,705,371,706,370,704,371,705,370,706,346,729,347,729,346,730,346,729,347,729,347,729,346,730,346,729,347,729,347,729,347,729,347,729,347,728,348,728,347,728,373,703,373,1778,375,1776,376,1777,374,700,377,1775,376,700,377,1773,378,698,378}, //22C + {5043,2130,405,1746,380,696,380,695,381,696,406,1744,381,696,406,670,379,697,379,696,380,1772,379,695,406,1746,380,1772,380,696,380,1771,405,1746,383,1769,380,1771,380,1772,380,696,405,1746,406,670,380,696,379,696,380,696,393,682,381,696,406,1745,380,695,407,669,407,1745,380,696,406,669,406,670,406,1745,405,671,380,696,380,696,407,668,407,669,406,670,380,696,406,670,405,670,380,696,380,695,380,696,380,696,380,696,405,1746,380,1772,379,1772,407,669,405,671,379,1772,380,696,380,29380,5043,2130,380,1771,380,696,380,696,405,671,406,1745,380,695,381,696,406,670,379,697,405,1746,405,670,405,1747,380,1771,406,670,380,1772,379,1772,406,1745,407,1745,380,1771,380,696,380,1771,407,669,407,668,381,695,407,670,379,696,380,696,379,1772,407,669,380,696,407,1744,405,671,380,696,379,695,381,696,380,696,404,671,407,669,380,695,407,670,379,1772,407,1744,407,669,407,669,380,1771,406,1745,407,1746,406,669,405,671,379,697,381,694,386,690,405,671,405,671,405,670,380,696,406,1744,381,695,408,668,406,670,380,696,380,1771,406,670,407,669,406,670,379,697,405,670,406,670,380,695,380,697,379,696,380,695,408,669,379,697,405,670,380,696,379,696,380,696,379,696,381,696,406,669,380,696,407,1744,380,1772,380,1771,406,670,380,696,406,670,379,1772,380,1771,406,1746,380,1771,407,1745,405,1746,380,696,380,696,380,696,405,670,406,669,381,696,379,696,405,671,407,669,379,696,380,696,407,668,381,696,379,697,405,670,406,1744,381,696,380,696,380,696,380,696,405,670,380,696,405,670,407,669,405,671,380,696,405,671,405,671,404,671,406,670,379,696,380,696,406,670,405,671,405,670,405,671,380,696,379,697,404,671,380,696,380,696,379,696,380,1771,381,695,380,696,381,1770,380,1772,380,696,379,1772,406,670,379}, //23C + {5042,2130,380,1772,379,697,379,697,379,697,378,1772,380,697,379,696,379,697,379,696,382,1770,379,697,379,1775,376,1773,379,696,380,1772,379,1773,379,1771,380,1772,380,1771,380,697,379,1772,379,697,379,696,380,697,378,696,380,697,379,696,380,1772,379,696,380,697,378,1772,380,697,378,697,379,697,405,1747,378,697,379,697,379,697,379,696,379,698,378,696,380,696,379,697,379,698,378,697,378,698,378,698,378,697,379,697,379,1772,379,1773,378,1772,380,697,379,697,379,1772,378,697,379,29382,5042,2131,379,1773,379,697,378,697,379,696,380,1771,380,697,379,696,380,695,407,670,379,1772,379,697,379,1773,379,1772,379,697,379,1772,379,1773,379,1772,380,1772,379,1772,379,697,379,1773,378,698,378,696,405,672,378,698,378,697,379,697,379,1772,379,697,379,696,380,1771,380,696,380,697,378,697,379,697,379,696,379,697,379,698,378,696,380,697,379,1773,378,1772,379,697,380,696,379,1772,380,1771,380,1771,380,698,378,697,379,697,379,695,380,697,379,697,379,697,378,697,379,697,379,1772,380,696,379,697,379,696,379,697,379,1773,379,696,379,698,378,697,379,697,379,697,378,697,379,696,380,697,378,697,379,698,378,697,379,696,379,697,379,696,380,697,379,696,379,697,379,698,378,697,378,1773,379,1772,406,1746,379,1772,379,697,379,697,379,697,378,1773,379,1772,379,1772,380,1772,379,1772,381,1771,379,697,379,697,378,698,378,698,378,697,405,671,379,697,401,674,404,671,380,696,380,696,379,697,379,697,379,697,378,697,379,1772,380,696,379,697,379,696,380,697,378,697,405,671,379,696,380,697,378,697,405,670,380,697,378,697,379,697,379,696,379,698,378,697,379,696,380,696,380,696,379,697,380,695,380,697,378,697,379,697,379,697,406,670,378,1772,380,1772,379,697,406,1746,379,1772,379,696,406,1746,380,696,379}, //24C + {5069,2104,406,1745,380,696,406,670,380,696,405,1746,406,670,380,696,380,696,379,696,406,1745,381,696,405,1746,405,1746,380,696,380,1770,381,1772,380,1771,380,1771,380,1772,380,697,379,1772,406,669,407,669,380,695,381,696,406,669,380,695,381,1772,379,697,379,696,406,1745,406,670,406,670,406,670,405,1746,406,669,382,693,407,670,380,696,405,671,406,672,404,669,379,696,380,696,380,696,380,696,380,695,386,690,406,670,405,1746,406,1746,380,1771,405,671,406,670,380,1771,406,670,380,29358,5066,2129,381,1771,380,696,406,670,379,696,380,1771,380,696,407,669,380,696,380,696,379,1772,380,696,380,1771,380,1771,381,696,379,1772,380,1771,407,1746,379,1771,380,1772,405,670,380,1772,380,696,380,695,406,670,380,696,405,671,379,696,406,1746,380,696,379,696,380,1771,381,695,380,697,379,696,380,696,405,670,380,696,380,696,380,696,380,695,380,1772,406,1746,379,696,380,696,405,1745,381,1772,379,1772,380,696,405,671,379,696,407,670,404,671,405,670,407,669,380,696,406,670,379,1772,380,696,380,696,379,696,380,696,380,1771,380,696,406,670,405,671,379,696,380,696,380,696,380,695,380,696,380,695,381,696,405,670,380,697,379,696,380,696,379,697,399,676,380,696,406,670,379,696,407,669,400,676,379,696,407,668,380,1772,406,670,380,696,380,1771,380,1772,380,1771,406,1747,378,1773,379,1772,405,671,407,668,406,671,403,672,406,670,406,669,406,670,379,697,379,696,406,670,379,697,406,669,406,671,379,696,380,696,379,1771,407,670,406,670,405,671,379,696,407,669,379,696,380,696,380,696,380,696,379,697,406,669,380,696,380,696,379,696,380,696,379,696,381,696,406,669,379,697,380,695,406,670,380,696,380,696,379,697,404,671,406,670,380,1771,406,670,406,1745,380,1771,381,1772,405,670,380,1771,380,696,405}, //25C + {5041,2131,379,1773,379,697,378,697,379,697,379,1772,406,670,379,698,378,696,380,697,378,1772,380,697,379,1772,379,1773,404,672,378,1772,380,1773,378,1773,379,1772,379,1772,380,696,379,1773,379,697,379,696,380,696,379,697,379,696,380,696,380,1772,378,698,378,697,379,1773,379,696,380,697,378,697,379,1772,405,671,379,697,379,697,379,697,379,696,379,697,379,697,379,696,379,697,379,696,380,696,379,698,379,696,379,696,380,1771,383,1770,379,1772,379,697,379,697,379,1771,380,696,380,29380,5070,2103,407,1745,380,697,379,696,380,696,379,1772,380,696,405,670,380,696,406,670,380,1771,380,696,380,1772,380,1771,380,696,380,1771,406,1746,379,1772,380,1771,407,1745,380,696,406,1745,380,696,380,696,380,696,379,696,380,696,380,695,408,1744,380,696,405,671,379,1772,380,696,380,695,380,696,407,668,407,669,380,696,380,696,406,669,407,670,384,1766,407,1744,407,668,407,670,407,1745,407,1745,380,1770,381,695,407,669,380,696,380,696,407,668,380,696,406,670,406,669,407,669,406,1746,380,695,407,669,405,670,380,696,380,1772,407,669,406,669,407,669,407,669,379,696,406,670,406,670,405,671,405,671,405,670,404,672,379,697,379,696,379,697,377,699,377,699,377,698,376,700,376,700,350,1801,350,726,349,727,349,726,349,1802,349,728,348,728,347,1803,373,1778,374,1778,373,1779,373,1778,374,1778,373,703,373,702,373,703,372,704,373,703,372,702,374,703,372,704,371,704,373,703,371,706,371,704,371,704,347,729,370,706,351,1800,347,729,346,729,347,729,346,731,346,729,347,730,345,729,347,729,347,728,348,728,347,729,348,728,347,728,373,703,374,702,372,703,375,702,374,701,375,700,376,700,376,700,376,699,377,699,377,698,378,698,377,699,403,1748,378,1773,378,1774,378,1773,404,1748,378,697,404,1747,405,671,404}, //26C + {5042,2131,379,1773,379,696,378,697,379,697,380,1772,379,696,380,697,378,697,379,697,379,1772,379,697,379,1773,378,1773,379,697,378,1773,379,1773,379,1772,379,1772,380,1772,406,669,380,1772,379,697,379,697,378,697,379,697,379,698,378,697,379,1771,406,670,379,698,378,1773,379,697,378,697,379,697,379,1773,405,670,379,697,379,697,379,697,379,696,379,697,379,697,379,696,379,697,379,697,378,697,380,696,379,697,379,696,380,1772,379,1773,379,1772,405,672,378,696,380,1772,379,697,378,29361,5063,2131,379,1773,379,696,380,696,379,697,379,1773,379,696,379,697,379,697,379,696,379,1773,379,696,379,1773,379,1772,380,697,378,1773,378,1773,379,1773,378,1773,379,1772,379,697,379,1773,379,697,378,698,379,696,379,697,379,697,378,697,379,1772,380,696,379,697,379,1773,378,698,378,697,379,697,378,697,380,696,379,696,379,698,378,697,379,697,379,1773,378,1773,406,670,379,697,379,1772,379,1772,379,1773,379,697,379,697,378,697,379,697,378,698,379,697,379,696,379,696,380,697,379,1773,378,697,379,696,379,697,379,697,378,1773,379,698,378,697,379,696,379,697,379,697,379,696,379,698,378,697,379,697,379,697,378,697,379,697,379,696,380,697,379,696,379,697,379,697,379,696,379,697,379,696,380,1772,404,671,380,696,380,1772,379,696,381,695,380,1771,380,1773,379,1772,379,1772,379,1773,379,1772,380,695,380,696,380,696,381,695,406,670,379,697,379,696,380,695,381,695,406,670,380,696,406,670,379,696,407,669,406,670,382,1769,407,669,406,669,381,699,402,670,380,696,380,695,381,696,379,696,406,670,406,669,380,696,380,696,407,669,406,669,406,670,380,695,381,695,407,669,380,696,405,670,381,695,407,668,407,670,380,695,381,695,405,671,407,1743,408,669,388,688,405,670,380,696,406,1745,406,1746,380,696,380}, //27C + {5044,2130,380,1771,380,696,380,696,380,696,379,1772,380,696,406,670,379,696,380,696,380,1771,380,696,380,1771,380,1772,380,696,380,1770,381,1772,379,1772,380,1771,380,1771,381,696,380,1771,380,696,380,696,384,691,380,696,380,695,381,696,380,1772,379,696,406,669,380,1772,380,695,380,696,380,695,381,1771,380,696,380,695,381,695,381,695,381,695,380,695,381,695,381,695,380,696,380,695,381,696,380,695,380,696,380,696,380,1771,380,1771,381,1771,380,696,380,696,380,1771,380,695,381,29380,5043,2130,380,1771,381,695,381,696,379,696,380,1771,380,696,380,695,381,696,380,695,380,1771,381,696,379,1771,381,1771,380,696,380,1772,379,1772,407,1744,381,1771,380,1772,379,696,380,1771,381,695,381,695,380,696,380,695,381,696,379,695,381,1772,379,696,380,696,380,1771,381,695,380,696,380,695,381,695,380,695,381,695,381,696,380,695,380,696,380,1771,380,1771,381,695,381,695,380,1772,380,1771,380,1771,380,697,380,695,380,696,380,696,380,696,379,696,380,697,379,696,379,697,380,1769,382,695,381,695,406,670,406,670,380,1770,381,696,380,696,380,696,379,696,380,695,380,697,379,697,379,695,381,696,380,696,379,695,381,696,380,696,379,696,380,695,381,696,380,695,380,696,380,696,380,1771,380,1771,381,696,379,696,380,1771,380,697,380,695,380,1772,380,1771,380,1772,379,1772,380,1771,380,1772,380,696,379,697,379,696,380,696,380,696,380,695,380,696,380,695,381,695,380,695,381,696,380,696,380,695,380,696,380,695,381,1771,380,696,380,696,380,696,379,696,380,696,380,696,379,696,380,695,381,696,380,695,380,697,404,670,407,670,380,695,406,670,380,696,380,696,379,696,380,696,434,641,381,695,380,696,380,696,380,698,377,696,380,696,380,1771,380,1771,381,695,380,696,380,696,407,1745,379,1772,380,695,381}, //28C + {5071,2102,381,1771,406,670,380,696,407,669,406,1745,380,695,380,697,406,669,380,696,407,1744,380,696,406,1745,380,1772,406,670,406,1745,407,1744,405,1747,380,1771,407,1745,406,670,405,1746,405,671,380,696,406,669,407,669,406,670,380,696,380,1771,380,696,406,670,379,1771,381,695,381,696,381,695,379,1771,407,669,407,669,380,696,406,670,380,695,380,696,380,696,383,693,380,695,380,696,380,696,405,675,375,697,379,696,380,1771,380,1772,380,1771,406,670,407,669,405,1746,380,696,406,29355,5043,2130,407,1744,381,695,407,668,381,696,379,1772,380,696,380,695,380,696,380,695,381,1772,379,697,379,1772,380,1771,380,695,381,1771,380,1770,382,1771,406,1746,380,1771,380,696,380,1772,405,670,404,672,380,695,380,696,380,695,381,696,380,1771,380,696,380,695,406,1746,380,696,406,670,379,696,381,695,380,695,381,696,379,696,380,696,380,695,381,1771,380,1772,379,697,379,696,380,1772,379,1772,400,1752,379,696,380,696,380,696,379,697,379,696,380,696,405,671,405,670,406,670,380,1771,407,669,380,696,380,696,379,697,379,1771,381,696,379,696,380,696,380,695,381,695,406,670,406,670,380,696,379,696,380,697,379,696,380,696,407,668,407,669,380,696,405,670,380,696,380,697,379,695,407,669,380,696,380,1772,379,697,379,1772,380,695,380,696,406,1745,380,1772,404,1748,379,1772,380,1771,380,1771,381,696,380,696,405,670,380,696,398,678,405,670,380,696,380,696,380,696,406,669,380,696,407,669,380,695,380,696,380,696,380,1772,379,696,380,696,408,668,380,695,382,694,406,669,380,696,406,670,406,669,381,696,379,696,406,670,405,671,407,669,379,696,405,671,380,696,406,669,380,697,406,669,406,669,381,695,380,696,407,668,381,696,379,696,380,1771,380,696,407,1745,380,696,380,696,379,1772,406,1745,380,696,380}, //29C + {5043,2131,379,1771,381,695,406,670,380,695,406,1747,406,670,379,696,380,696,406,670,404,1746,381,696,380,1771,380,1772,380,695,380,1771,381,1772,380,1771,380,1771,380,1772,380,696,406,1745,380,696,406,670,380,696,406,670,379,696,380,696,380,1772,405,670,407,669,380,1771,380,696,407,670,381,694,380,1771,380,696,380,696,380,695,380,697,379,696,380,695,407,670,379,696,407,670,379,696,380,696,380,696,405,670,380,696,380,1771,380,1772,380,1771,380,697,379,696,380,1772,379,697,379,29382,5043,2130,380,1772,380,696,379,696,380,696,380,1772,380,695,380,696,380,696,380,696,379,1772,380,696,380,1771,380,1772,406,669,380,1772,380,1772,380,1771,385,1766,381,1771,380,696,380,1772,380,695,380,696,380,696,380,696,380,696,379,695,381,1772,379,697,379,696,380,1771,381,695,380,697,406,669,384,692,380,696,379,696,380,696,380,695,381,696,406,1744,381,1771,380,697,379,696,380,1771,380,1772,380,1771,380,697,379,695,381,696,380,696,380,695,380,696,380,696,380,695,380,696,380,1772,380,696,379,696,380,696,380,696,380,1770,381,696,380,695,381,696,379,696,380,696,380,696,380,696,379,697,379,696,380,696,380,696,380,695,380,696,380,695,381,696,379,697,380,695,380,696,380,696,380,1771,380,696,380,1771,380,696,380,1772,380,695,381,695,380,1771,385,1768,379,1772,380,1771,380,1771,381,1772,379,696,380,696,380,696,380,696,379,697,379,696,380,695,381,695,380,696,380,696,380,696,380,695,381,695,380,696,380,696,380,1771,380,696,380,696,380,695,380,696,405,671,380,696,380,695,380,696,380,696,380,696,380,695,380,696,380,696,380,696,380,695,380,696,380,697,379,696,380,695,380,696,380,696,380,696,380,695,380,696,380,696,380,696,380,1771,380,1772,380,1771,380,696,380,696,380,1771,380,1771,381,696,384}, //30C + {5043,2130,382,1769,380,696,380,695,380,696,380,1772,380,696,406,669,380,697,379,697,379,1771,405,672,379,1771,380,1772,380,696,384,1767,380,1771,380,1773,405,1745,380,1772,380,695,381,1771,380,696,406,670,379,696,380,696,380,696,403,673,379,1772,380,697,379,696,379,1773,379,696,379,697,379,696,406,1746,379,696,380,696,380,696,379,696,380,697,379,697,379,695,381,696,379,697,379,696,380,696,405,671,379,696,380,695,406,1746,380,1772,379,1772,380,697,379,695,380,1773,379,696,380,29380,5044,2129,380,1772,406,670,380,696,379,697,379,1772,380,696,405,670,380,696,405,671,406,1745,380,696,380,1772,379,1772,380,696,379,1773,379,1772,406,1746,379,1771,406,1746,380,695,380,1772,380,696,380,696,379,696,407,669,380,696,380,696,404,1747,380,695,406,670,380,1772,380,696,379,697,379,696,406,670,380,696,379,696,380,697,379,695,381,696,379,1771,381,1771,380,697,405,670,406,1745,406,1746,379,1773,379,697,379,696,379,697,405,670,380,696,380,696,379,697,406,670,379,696,380,1772,379,696,380,696,406,669,380,697,379,1772,406,670,379,696,380,696,380,699,376,697,379,696,406,670,405,670,380,696,380,696,380,696,379,696,380,696,380,695,380,697,379,696,380,696,380,697,379,696,379,696,380,1771,380,1772,380,696,380,1772,379,696,380,696,379,1772,406,1745,381,1771,380,1772,379,1773,379,1772,380,695,403,673,380,696,405,670,380,696,380,697,379,696,379,696,380,697,404,671,379,696,381,696,379,697,379,696,380,696,379,1772,380,696,380,696,379,696,380,696,380,696,379,696,380,696,384,692,406,670,379,697,379,696,380,701,374,696,380,696,380,696,380,695,380,696,380,696,380,695,406,671,379,696,380,696,406,669,380,697,379,697,379,697,404,1747,379,696,380,695,407,1744,381,696,406,1745,380,1772,380,695,380}, //31C + {5043,2130,381,1771,380,696,379,696,380,696,380,1771,380,696,380,696,380,696,380,695,381,1770,406,671,379,1772,380,1771,380,695,381,1772,380,1771,380,1772,380,1771,407,1745,380,696,379,1772,380,695,405,672,379,696,380,696,380,696,379,697,379,1772,380,696,380,695,380,1771,407,669,380,695,381,696,380,1772,379,696,380,696,380,695,380,697,379,696,380,696,380,695,380,697,379,696,406,670,380,696,379,696,380,696,380,695,380,1773,379,1771,381,1771,380,696,406,670,379,1772,380,696,405,29355,5070,2103,380,1772,406,670,380,695,380,697,379,1771,380,697,379,696,380,696,380,696,380,1771,380,696,380,1771,380,1772,380,695,380,1771,381,1771,380,1772,380,1771,380,1772,380,696,379,1772,380,695,381,696,379,696,380,696,380,696,380,695,380,1771,381,696,379,696,380,1771,381,696,379,697,404,671,380,695,380,697,379,696,380,696,380,696,380,694,381,1771,381,1772,406,669,406,670,379,1771,381,1771,381,1771,380,696,406,669,380,696,380,696,380,695,380,697,379,696,406,670,380,694,382,1770,381,696,405,671,379,696,380,696,380,1771,380,697,405,670,380,695,406,671,380,695,406,670,380,695,381,695,380,696,380,696,380,695,380,696,407,669,380,696,380,695,380,696,380,696,380,695,381,695,380,1772,405,1746,380,1771,381,695,380,1771,381,696,379,696,380,1771,381,1771,380,1771,381,1771,380,1772,380,1772,379,695,381,696,379,696,380,696,380,695,381,695,380,696,380,696,380,696,379,696,380,695,381,696,380,695,380,696,380,696,381,1770,380,696,380,696,380,698,377,696,380,697,379,696,380,696,379,696,380,696,380,695,380,696,381,695,380,696,380,696,379,697,379,696,380,696,380,695,380,695,381,696,380,695,380,696,380,697,379,696,380,696,379,696,380,1772,379,1772,380,696,380,1771,380,696,380,1771,380,1772,380,695,380} //32C }, // Fan Speed Low { - {8978, 4502, 508, 600, 536, 600, 535, 1702, 534, 601, 534, 1703, 534, 601, 535, 599, 535, 618, 535, 600, 534, 1703, 534, 1702, 535, 1702, 534, 601, 534, 601, 535, 601, 534, 618, 533, 601, 535, 601, 534, 601, 534, 601, 535, 601, 534, 601, 534, 601, 534, 617, 536, 600, 535, 600, 535, 600, 535, 600, 535, 601, 535, 600, 536, 599, 534, 618, 535, 601, 534, 601, 535, 600, 534, 601, 535, 600, 535, 600, 535, 601, 534, 622, 535, 1702, 535, 1701, 535, 1703, 534, 589, 534}, // 15C - {8978, 4497, 508, 601, 533, 602, 535, 1701, 535, 601, 534, 1703, 534, 601, 536, 598, 535, 618, 534, 601, 534, 1703, 534, 1702, 535, 1702, 533, 602, 534, 602, 533, 601, 535, 1719, 534, 601, 534, 601, 535, 600, 535, 601, 534, 601, 535, 600, 534, 601, 535, 617, 535, 601, 533, 602, 534, 601, 534, 601, 534, 602, 534, 601, 535, 601, 533, 618, 535, 600, 535, 601, 533, 602, 534, 602, 532, 602, 534, 601, 535, 601, 534, 623, 535, 1701, 535, 1701, 536, 600, 534, 1690, 535}, // 16C - {8978, 4525, 507, 601, 534, 602, 533, 1704, 533, 602, 534, 1702, 534, 601, 534, 602, 533, 618, 535, 600, 535, 1702, 534, 1702, 535, 1702, 534, 601, 534, 602, 533, 1703, 534, 618, 534, 603, 532, 602, 533, 602, 534, 601, 533, 602, 534, 601, 535, 600, 534, 618, 535, 601, 534, 601, 534, 601, 534, 601, 535, 601, 534, 600, 535, 601, 534, 618, 534, 600, 536, 600, 535, 601, 533, 602, 534, 601, 534, 601, 535, 601, 534, 622, 535, 1702, 534, 1703, 534, 601, 534, 589, 534}, // 17C - {8978, 4504, 505, 603, 533, 603, 533, 1703, 533, 602, 533, 1704, 534, 601, 533, 602, 533, 620, 533, 601, 533, 1704, 533, 1703, 534, 1703, 533, 602, 533, 603, 532, 1704, 533, 1720, 534, 602, 533, 602, 532, 604, 534, 600, 534, 601, 534, 601, 533, 603, 533, 618, 534, 602, 533, 602, 534, 602, 533, 602, 533, 602, 533, 602, 533, 602, 533, 619, 533, 602, 534, 602, 533, 602, 533, 602, 533, 602, 533, 602, 534, 602, 533, 624, 532, 1704, 534, 601, 534, 1703, 533, 1692, 533}, // 18C - {8978, 4496, 508, 601, 534, 601, 534, 1703, 533, 602, 534, 1702, 534, 602, 534, 601, 533, 619, 534, 601, 534, 1703, 534, 1702, 534, 1703, 534, 601, 534, 1702, 535, 600, 534, 618, 535, 601, 533, 602, 534, 602, 533, 602, 533, 601, 534, 601, 534, 602, 534, 619, 533, 601, 534, 602, 534, 601, 534, 601, 534, 601, 534, 601, 534, 601, 534, 618, 535, 600, 535, 601, 534, 601, 534, 601, 534, 601, 534, 602, 533, 602, 534, 623, 534, 1702, 535, 601, 534, 1702, 535, 589, 534}, // 19C - {8978, 4522, 508, 602, 533, 602, 533, 1703, 534, 602, 533, 1703, 533, 603, 533, 602, 533, 618, 534, 602, 533, 1704, 533, 1703, 533, 1703, 534, 602, 533, 1703, 533, 603, 533, 1719, 534, 602, 533, 602, 534, 601, 533, 602, 534, 601, 534, 602, 533, 602, 533, 619, 534, 601, 533, 603, 533, 602, 533, 602, 533, 602, 534, 602, 556, 578, 534, 618, 534, 602, 533, 602, 533, 602, 534, 601, 534, 602, 533, 601, 534, 602, 533, 624, 533, 1704, 533, 602, 533, 602, 533, 1691, 534}, // 20C - {8978, 4503, 506, 603, 533, 602, 533, 1703, 534, 602, 533, 1703, 533, 602, 533, 603, 532, 620, 533, 602, 533, 1703, 534, 1703, 533, 1703, 534, 601, 560, 1677, 533, 1704, 533, 619, 533, 602, 533, 602, 534, 601, 534, 601, 534, 602, 533, 602, 533, 602, 533, 619, 533, 603, 532, 603, 533, 602, 533, 602, 533, 602, 533, 602, 534, 601, 534, 618, 534, 602, 533, 602, 533, 602, 533, 602, 534, 602, 533, 602, 533, 602, 533, 625, 532, 1703, 534, 602, 533, 604, 531, 590, 533}, // 21C - {8978, 4523, 508, 601, 534, 601, 535, 1702, 534, 600, 535, 1702, 535, 600, 535, 600, 535, 618, 534, 603, 532, 1703, 534, 1702, 534, 1702, 535, 601, 534, 1702, 535, 1702, 535, 1719, 534, 601, 534, 601, 534, 601, 534, 601, 535, 600, 535, 600, 535, 601, 534, 618, 534, 601, 534, 601, 534, 601, 535, 601, 534, 600, 535, 601, 534, 602, 533, 618, 535, 601, 534, 601, 534, 601, 534, 601, 534, 601, 535, 600, 535, 600, 534, 623, 534, 602, 534, 1703, 534, 1702, 534, 1690, 535}, // 22C - {8978, 4504, 507, 601, 534, 601, 534, 1702, 534, 602, 534, 1702, 534, 602, 534, 600, 535, 618, 534, 601, 534, 1702, 535, 1702, 534, 1702, 534, 1703, 534, 601, 535, 600, 535, 618, 533, 601, 535, 601, 534, 601, 535, 600, 535, 600, 534, 602, 534, 600, 535, 618, 534, 601, 534, 602, 533, 601, 535, 601, 535, 600, 534, 601, 535, 600, 534, 618, 534, 601, 535, 601, 535, 600, 534, 601, 534, 601, 535, 600, 534, 601, 535, 622, 535, 601, 535, 1702, 534, 1703, 533, 590, 534}, // 23C - {8978, 4529, 507, 602, 534, 600, 535, 1702, 535, 600, 535, 1703, 533, 602, 533, 601, 535, 617, 535, 601, 534, 1702, 535, 1702, 534, 1702, 534, 1703, 534, 601, 535, 600, 534, 1720, 534, 601, 534, 601, 534, 602, 533, 601, 535, 601, 534, 601, 534, 601, 535, 617, 534, 602, 534, 601, 534, 601, 534, 601, 534, 601, 534, 602, 533, 602, 534, 618, 534, 601, 534, 601, 534, 601, 534, 602, 534, 600, 534, 601, 535, 601, 534, 623, 533, 602, 534, 1702, 534, 602, 534, 1691, 534}, // 24C - {8978, 4529, 506, 603, 533, 602, 533, 1703, 533, 602, 534, 1703, 533, 602, 533, 602, 533, 619, 533, 603, 533, 1703, 533, 1703, 534, 1703, 534, 1702, 534, 602, 533, 1703, 534, 619, 533, 601, 534, 602, 533, 602, 533, 602, 533, 602, 534, 602, 533, 601, 534, 619, 533, 602, 533, 601, 535, 601, 534, 601, 534, 602, 533, 602, 533, 603, 533, 620, 532, 602, 533, 602, 533, 602, 533, 602, 534, 601, 534, 601, 534, 601, 534, 623, 534, 602, 533, 1703, 534, 602, 533, 590, 533}, // 25C - {8978, 4504, 506, 603, 533, 602, 533, 1703, 534, 601, 534, 1703, 533, 602, 534, 602, 533, 619, 533, 602, 533, 1704, 532, 1704, 534, 1702, 533, 1704, 533, 602, 533, 1704, 533, 1720, 534, 602, 533, 601, 534, 602, 533, 602, 533, 602, 533, 603, 532, 602, 535, 617, 534, 602, 534, 601, 533, 602, 533, 602, 534, 601, 533, 603, 533, 602, 533, 620, 532, 602, 533, 603, 532, 603, 533, 602, 533, 601, 534, 602, 533, 602, 533, 624, 533, 602, 534, 601, 534, 1703, 534, 1691, 533}, // 26C - {8978, 4497, 507, 600, 534, 602, 533, 1704, 533, 602, 533, 1704, 533, 602, 533, 602, 533, 619, 533, 602, 533, 1704, 532, 1705, 533, 1703, 533, 1704, 533, 1703, 533, 602, 533, 620, 532, 603, 533, 602, 533, 602, 534, 601, 533, 602, 533, 603, 532, 603, 533, 619, 533, 602, 533, 602, 533, 602, 534, 601, 533, 603, 533, 601, 534, 602, 534, 618, 533, 602, 533, 603, 533, 602, 533, 602, 533, 602, 533, 603, 532, 603, 533, 623, 534, 601, 534, 602, 533, 1704, 532, 591, 533}, // 27C - {8978, 4503, 506, 602, 534, 603, 532, 1704, 532, 603, 532, 1704, 533, 602, 533, 603, 532, 620, 532, 603, 533, 1704, 531, 1705, 532, 1705, 532, 1704, 532, 1704, 533, 603, 532, 1721, 533, 602, 533, 603, 532, 602, 533, 603, 532, 603, 533, 602, 533, 602, 533, 619, 533, 603, 533, 601, 534, 602, 532, 603, 533, 602, 534, 601, 533, 603, 532, 620, 533, 602, 533, 602, 533, 603, 532, 603, 533, 602, 533, 602, 533, 602, 534, 623, 532, 603, 533, 603, 533, 602, 532, 1692, 534}, // 28C - {8978, 4497, 507, 602, 532, 603, 533, 1703, 534, 601, 533, 1704, 533, 603, 532, 602, 534, 619, 532, 603, 533, 1704, 532, 1704, 533, 1704, 532, 1704, 534, 1702, 533, 1704, 533, 619, 533, 602, 534, 602, 533, 602, 532, 602, 534, 603, 533, 601, 533, 602, 533, 619, 533, 602, 533, 603, 533, 602, 533, 602, 533, 602, 533, 603, 533, 602, 533, 619, 533, 602, 533, 602, 533, 603, 533, 602, 532, 603, 532, 603, 533, 602, 533, 624, 533, 602, 533, 603, 532, 603, 533, 589, 534}, // 29C - {8978, 4504, 507, 601, 533, 603, 533, 1703, 533, 602, 534, 1703, 533, 602, 533, 602, 534, 618, 533, 602, 534, 1703, 533, 1704, 533, 1703, 534, 1703, 533, 1704, 532, 1704, 533, 1720, 534, 602, 533, 602, 533, 602, 533, 602, 533, 602, 533, 602, 534, 601, 534, 619, 533, 602, 533, 602, 533, 602, 534, 601, 534, 602, 533, 601, 534, 602, 534, 619, 532, 602, 534, 602, 532, 603, 533, 602, 533, 602, 533, 602, 534, 601, 533, 624, 533, 1704, 533, 1703, 534, 1703, 533, 1691, 534} // 30C + {5070,2104,380,1771,380,695,407,670,380,696,380,1772,406,668,381,696,380,696,380,695,380,1772,405,670,381,1772,379,1772,407,669,406,1745,380,1772,380,1771,380,1772,380,1771,406,671,406,1745,380,695,407,670,379,696,380,696,406,670,380,695,407,1745,405,671,380,695,407,1744,381,696,380,696,406,670,380,1771,380,696,405,671,405,671,405,670,380,696,380,696,380,696,406,670,405,670,405,671,405,671,379,696,380,696,380,696,380,1771,407,1745,407,1745,405,670,407,669,380,1771,408,668,381,29359,5066,2130,380,1771,380,697,378,696,381,696,380,1771,380,696,379,696,381,696,379,696,380,1772,405,671,379,1772,406,1746,380,696,407,1744,380,1772,379,1772,380,1772,379,1772,380,696,380,1772,379,697,379,696,379,697,380,696,379,697,405,670,380,1771,380,697,379,696,380,1772,380,696,379,696,380,696,379,697,406,670,379,697,405,670,380,696,380,697,379,1772,379,1773,379,696,379,697,379,1772,406,1746,405,1746,380,695,381,696,406,669,380,696,380,695,384,692,381,696,379,696,405,671,406,1746,379,696,380,696,406,670,380,697,405,1746,379,695,381,696,379,697,379,696,380,696,380,696,379,697,405,670,380,697,379,696,380,696,379,697,379,696,406,670,380,696,380,696,379,696,405,671,405,671,379,1772,406,1746,380,1771,406,670,380,696,406,670,379,696,380,1771,381,1772,406,1745,406,1746,406,1745,380,696,380,697,379,696,379,697,379,697,379,696,380,697,379,695,380,697,406,670,379,696,379,697,379,695,381,696,405,671,379,697,379,1773,379,697,379,696,380,695,407,669,380,697,379,696,380,696,379,696,380,697,379,696,380,695,381,696,379,696,380,696,380,696,380,696,379,696,380,696,380,696,405,671,380,695,380,696,380,696,379,696,380,695,381,696,380,1772,379,1772,380,696,407,1745,379,697,386,1765,380,696,379,696,380}, //16C + {5043,2131,379,1773,379,696,380,695,381,696,379,1771,381,696,380,696,379,696,380,696,380,1772,380,696,379,1772,380,1772,379,697,379,1772,380,1772,379,1772,380,1771,380,1772,405,671,380,1771,406,670,380,697,379,696,380,696,379,697,379,697,379,1773,379,696,379,696,380,1772,379,697,379,697,405,670,379,1773,379,697,378,698,379,696,380,695,380,697,379,696,380,696,380,696,380,696,379,696,380,696,380,696,379,697,379,696,380,1772,379,1772,380,1772,380,696,380,696,379,1772,406,671,378,29383,5043,2130,380,1772,379,697,379,696,380,697,379,1771,380,696,380,697,379,696,379,697,379,1772,380,695,381,1772,379,1773,379,697,378,1772,380,1772,380,1771,380,1772,379,1772,380,696,380,1772,405,671,380,696,379,697,379,696,404,672,380,694,381,1772,380,696,380,695,381,1771,380,696,380,697,378,696,380,697,379,696,380,696,379,696,380,697,379,696,406,1745,380,1772,380,696,380,696,379,1772,380,1772,380,1771,380,695,381,696,380,696,379,697,379,697,379,696,380,695,381,696,379,697,379,1771,380,696,405,671,380,696,380,696,380,1771,406,671,379,695,381,696,379,696,380,696,380,696,380,696,380,696,379,696,380,696,380,696,379,698,378,697,379,696,380,696,380,696,405,670,380,696,380,696,380,696,379,697,379,697,405,1746,380,695,380,697,379,697,379,1771,380,1772,380,1772,379,1773,386,1765,405,671,379,697,379,696,380,696,380,696,379,697,379,696,380,696,380,696,379,697,405,671,379,696,380,696,379,697,379,696,406,670,379,1773,379,697,379,697,379,697,379,696,380,696,379,697,379,696,405,672,378,697,406,670,379,695,381,696,380,696,380,695,380,697,406,669,380,696,380,695,380,697,379,697,378,696,381,695,406,670,380,696,380,696,380,696,380,1771,406,670,405,1746,380,1772,380,696,382,1769,380,696,406,670,380}, //17C + {5043,2131,379,1773,379,697,379,696,405,672,378,1773,405,671,379,696,380,696,379,696,380,1772,380,697,379,1771,380,1773,379,696,379,1772,380,1772,380,1772,379,1772,380,1771,380,697,379,1772,380,696,379,697,379,697,379,696,379,697,379,697,379,1772,379,696,380,696,380,1773,378,697,379,696,380,697,379,1772,380,695,380,697,379,697,379,696,380,696,379,697,379,697,379,697,378,697,379,696,380,697,379,696,380,697,379,696,379,1772,405,1748,380,1771,379,697,378,697,380,1771,380,697,379,29382,5043,2130,380,1773,378,697,379,697,404,670,380,1773,379,696,406,671,378,697,379,697,379,1772,380,696,379,1773,379,1773,379,696,380,1771,380,1773,378,1773,379,1772,405,1746,380,696,379,1774,379,695,380,696,380,696,380,696,379,698,378,696,380,1773,379,697,378,696,406,1746,380,696,380,696,379,697,379,697,379,697,379,696,379,697,379,696,380,696,379,1773,379,1774,378,696,379,697,379,1772,379,1774,378,1773,379,697,379,696,379,697,379,696,380,697,379,696,379,697,379,697,378,697,380,1772,379,697,379,696,380,696,379,698,378,1773,406,670,378,697,379,697,379,697,378,697,380,696,379,697,405,670,380,696,379,697,380,696,379,696,380,697,379,697,378,697,379,697,379,697,379,695,380,698,378,1773,379,696,380,696,379,1773,379,697,379,696,380,697,378,1772,380,1772,379,1772,379,1773,380,1772,378,698,379,696,380,696,379,697,379,696,380,697,379,696,379,697,379,697,379,696,406,670,379,696,380,697,405,671,378,697,379,696,380,1772,379,697,384,692,379,697,379,696,380,697,378,702,374,697,379,697,379,696,379,698,378,696,380,697,379,696,379,697,380,695,379,698,379,697,379,696,380,695,380,697,379,697,378,698,378,697,379,697,379,697,378,697,379,1773,379,1772,379,1773,379,1772,379,697,380,1771,380,697,379,697,378}, //18C + {5068,2105,381,1770,381,695,406,670,410,666,380,1771,407,669,380,696,407,669,404,672,380,1771,380,696,379,1772,406,1745,408,669,380,1771,380,1771,381,1771,406,1746,407,1744,405,672,379,1772,405,670,407,670,379,696,407,669,380,696,380,695,406,1746,406,670,380,695,381,1771,405,670,381,695,407,669,380,1772,380,696,380,696,407,668,406,670,380,696,405,670,380,697,406,669,380,696,406,670,380,695,405,671,407,669,380,696,401,1750,380,1771,407,1745,380,696,380,696,380,1771,380,696,380,29382,5043,2131,405,1745,408,669,380,695,380,696,380,1772,380,695,380,696,406,670,380,695,381,1772,405,670,380,1771,380,1772,380,695,381,1771,407,1745,380,1771,407,1745,380,1771,380,696,381,1771,379,697,380,695,380,696,380,696,380,696,379,696,381,1771,380,696,379,696,406,1746,406,670,379,697,380,696,379,696,407,669,406,670,382,693,405,671,380,696,380,1775,376,1772,407,669,406,669,381,1771,380,1772,405,1746,380,696,406,670,380,696,380,695,380,696,405,671,380,696,406,669,380,696,407,1744,380,696,380,696,380,695,409,668,380,1771,406,670,406,670,380,696,380,695,407,669,380,695,381,695,406,670,406,670,405,671,407,669,405,671,379,696,380,696,380,696,379,697,406,669,380,696,380,696,380,696,406,1744,407,670,380,1771,406,671,379,696,406,670,406,1745,380,1771,406,1746,407,1745,380,1771,381,698,377,696,380,695,380,696,381,696,379,696,380,696,380,696,406,669,380,696,380,696,380,696,380,696,379,696,407,668,381,696,380,1771,380,695,380,697,405,670,380,697,379,696,380,696,380,696,379,697,379,695,381,696,380,695,408,668,380,696,380,696,380,695,406,670,380,696,380,696,380,695,380,696,407,669,407,669,380,695,407,669,380,696,406,670,380,1771,406,670,380,695,407,670,380,1771,406,1745,381,695,381,695,380}, //19C + {5069,2104,380,1772,380,695,405,671,380,696,380,1771,380,696,380,696,406,670,380,695,406,1746,380,696,406,1745,407,1744,406,671,405,1746,406,1745,407,1745,405,1747,405,1747,379,696,407,1744,404,673,379,696,406,670,380,696,405,671,379,696,380,1772,380,695,407,669,398,1754,380,696,379,696,380,696,406,1745,406,670,407,670,379,696,380,695,381,696,379,696,407,669,406,670,405,671,379,696,380,696,380,696,380,695,381,696,406,1745,380,1771,380,1773,379,696,406,669,380,1772,381,695,380,29382,5043,2131,406,1745,405,670,380,696,380,696,407,1744,380,696,406,670,380,696,379,697,379,1772,380,696,380,1771,380,1773,379,695,381,1771,405,1746,406,1746,380,1772,380,1772,379,697,379,1772,380,696,379,697,379,696,380,696,406,671,378,696,380,1772,380,696,380,695,406,1746,379,696,381,696,379,696,380,696,406,670,405,670,407,670,405,670,406,669,407,1744,381,1772,380,696,410,665,380,1772,380,1771,380,1772,380,696,405,670,380,696,380,696,380,696,379,697,406,669,380,696,406,670,405,1746,380,696,407,669,380,696,379,696,380,1772,380,696,405,671,379,696,380,696,380,696,380,696,379,696,406,671,379,696,380,696,380,696,405,670,380,696,380,696,380,695,380,696,380,696,380,696,380,696,379,1773,379,1771,408,668,380,1771,381,696,406,670,379,696,380,1772,379,1772,406,1746,379,1772,406,1746,380,696,380,695,380,697,379,696,405,671,380,696,379,696,380,696,405,671,380,695,380,696,380,696,406,670,380,696,379,696,406,670,380,1771,405,672,379,696,380,696,380,696,380,696,379,697,379,696,406,670,380,696,379,697,379,696,380,697,404,670,380,697,379,696,380,696,379,697,405,670,380,696,380,696,406,670,380,696,379,696,380,696,380,695,406,670,380,1772,380,1772,379,697,379,696,380,1771,380,1772,406,670,406,670,406}, //20C + {5044,2129,380,1772,405,671,380,695,406,669,407,1745,408,669,379,696,406,669,381,695,408,1744,381,695,407,1744,381,1771,380,696,380,1771,381,1771,380,1772,379,1772,406,1745,407,669,381,1771,406,669,381,696,407,668,380,696,407,668,407,670,380,1771,380,696,380,695,407,1745,380,696,380,696,379,697,407,1744,380,696,380,695,381,695,380,696,406,670,380,695,407,669,381,695,407,669,406,670,380,695,381,695,407,669,381,695,380,1771,381,1771,408,1744,379,696,407,669,380,1771,407,669,381,29381,5044,2129,380,1772,380,696,380,696,379,697,379,1772,380,696,404,671,381,695,380,696,380,1771,381,695,405,1747,380,1772,379,696,380,1772,406,1745,380,1772,380,1772,380,1771,380,696,406,1745,406,669,381,696,379,696,380,696,380,696,380,695,381,1771,406,670,380,696,380,1771,407,669,406,670,380,696,380,696,380,695,407,669,380,696,380,696,406,670,407,1744,407,1744,382,694,380,696,405,1746,380,1772,406,1746,380,695,380,696,380,696,380,696,380,695,380,696,404,672,380,696,380,696,406,1745,380,695,381,696,406,670,379,696,380,1771,380,697,379,696,380,696,380,695,381,695,406,671,379,695,381,696,380,695,405,671,380,696,406,670,380,695,380,697,379,696,380,696,406,669,380,696,380,696,406,670,406,669,380,1772,380,1771,381,695,380,697,379,696,379,1772,381,1770,408,1744,381,1771,380,1771,380,696,380,696,380,696,406,670,380,695,380,696,380,696,406,669,380,697,379,696,380,696,380,696,379,697,405,670,380,696,380,696,380,1771,380,696,407,669,406,670,405,671,407,668,380,696,380,696,380,695,380,696,380,696,406,670,380,695,380,696,380,696,405,671,406,669,380,696,380,696,380,696,380,695,380,697,405,670,406,670,379,696,381,695,407,670,379,1771,381,695,381,1771,406,670,380,1772,379,1772,380,695,407,669,380}, //21C + {5092,2104,380,1771,380,696,380,696,380,696,404,1747,380,696,405,671,379,696,381,695,407,1744,381,696,379,1772,407,1744,381,695,406,1746,380,1771,381,1771,380,1771,407,1745,380,696,380,1771,381,695,407,669,406,670,380,696,404,671,380,696,380,1771,381,696,379,696,380,1772,380,695,382,694,380,696,406,1746,380,698,377,696,407,669,406,669,381,696,380,696,379,696,380,696,380,696,379,696,407,670,406,669,380,696,380,695,380,1772,380,1771,381,1771,380,696,380,696,411,1740,380,696,380,29382,5043,2130,380,1771,380,696,380,696,379,696,407,1745,406,669,381,695,381,695,407,669,380,1772,379,697,379,1772,406,1746,379,696,380,1772,380,1771,380,1772,380,1771,381,1771,380,696,405,1746,380,696,380,696,406,670,406,669,406,670,381,695,380,1772,380,696,379,696,380,1772,379,697,406,669,407,669,406,670,406,670,379,697,379,696,406,670,380,696,379,1772,380,1772,406,670,380,695,406,1746,380,1771,406,1745,381,696,379,696,380,696,380,696,380,695,381,695,380,696,405,671,380,696,379,1772,406,670,380,696,380,695,381,695,380,1772,407,669,380,695,380,696,380,696,380,696,406,669,380,696,380,696,380,695,381,695,380,696,406,670,380,695,408,668,380,696,380,696,380,696,380,696,380,696,379,1771,381,696,379,1772,405,1747,380,696,380,695,407,669,380,1771,380,1772,380,1771,385,1767,407,1745,379,696,380,697,404,671,380,695,381,695,380,696,380,696,380,696,380,696,379,696,380,696,380,696,380,695,407,670,379,696,406,670,380,1772,379,696,380,696,380,695,380,696,380,696,395,680,381,696,379,696,380,696,380,696,406,670,379,697,379,696,380,696,380,695,380,697,379,697,379,696,380,696,379,697,379,696,380,696,380,696,380,696,380,695,380,696,380,1772,379,1772,380,1772,407,668,408,1744,380,1772,404,671,380,696,380}, //22C + {5042,2131,379,1772,406,671,379,696,405,671,380,1772,405,670,406,671,379,696,379,697,405,1746,380,696,379,1772,380,1772,379,697,379,1772,380,1772,379,1773,379,1772,379,1772,380,696,380,1772,406,670,379,697,379,696,405,671,379,697,379,697,379,1772,379,696,406,671,379,1772,380,695,380,698,378,697,379,1772,379,697,379,696,379,698,378,697,379,698,378,697,379,696,380,696,379,697,379,696,380,696,380,697,379,695,380,696,380,1772,379,1773,379,1772,379,697,379,697,379,1772,379,697,379,29359,5067,2130,406,1745,380,696,380,697,379,696,379,1773,379,696,380,697,378,697,379,696,380,1772,379,696,380,1772,379,1772,380,696,380,1772,379,1773,379,1772,379,1773,379,1771,381,695,380,1772,380,697,378,697,379,697,379,696,406,670,380,696,379,1773,379,696,380,696,380,1772,405,671,379,696,380,696,379,696,380,697,379,696,380,697,378,697,379,697,378,1773,380,1772,379,696,380,697,378,1772,380,1771,380,1773,379,696,380,697,379,697,378,697,379,696,379,696,381,696,379,697,379,697,379,1772,379,696,381,696,379,696,380,696,379,1772,380,696,380,695,380,697,379,697,405,671,379,696,405,671,379,697,379,696,380,696,379,697,379,697,379,697,379,696,380,696,379,697,379,697,379,696,380,696,379,697,406,1746,378,1772,380,1772,379,697,379,697,379,697,379,1772,379,1772,380,1772,379,1773,405,1747,379,696,379,697,379,697,379,697,379,697,378,696,380,697,379,696,379,697,379,697,406,669,406,671,379,696,379,697,379,697,379,696,380,1772,379,697,379,697,379,697,379,696,379,697,379,697,379,697,379,696,379,697,405,671,379,696,379,697,379,697,379,696,380,696,405,671,380,696,379,697,379,696,380,696,380,696,379,697,379,696,380,696,380,696,380,695,380,1772,380,696,380,696,379,1772,380,1772,379,1772,380,696,380,696,379}, //23C + {5068,2104,381,1771,407,669,380,696,406,670,379,1772,380,696,406,670,380,694,382,696,405,1745,406,671,380,1771,380,1772,405,671,405,1746,380,1771,380,1772,380,1772,380,1771,380,697,379,1770,381,696,380,696,407,669,380,696,379,697,379,696,380,1772,379,696,380,696,380,1772,379,696,380,696,407,669,405,1746,380,696,380,696,380,695,380,696,380,696,382,694,379,696,407,669,406,670,405,671,380,696,379,697,379,697,379,696,406,1746,379,1772,380,1772,406,669,380,696,385,1766,380,696,380,29381,5044,2130,380,1771,380,696,380,696,406,669,380,1771,406,670,381,696,380,695,380,697,406,1745,380,696,379,1772,380,1772,379,696,407,1745,380,1771,380,1773,404,1746,405,1747,380,696,405,1746,407,669,380,696,379,696,380,696,407,669,380,696,380,1771,406,669,381,696,379,1772,380,696,406,670,380,695,380,696,380,696,380,696,380,696,380,695,380,696,406,1744,381,1771,381,696,379,697,379,1772,405,1747,379,1771,381,696,406,670,380,695,380,696,380,696,380,696,379,697,385,690,380,695,406,1746,405,672,379,696,405,671,405,670,380,1772,380,696,379,696,381,695,380,696,380,696,380,695,380,696,380,695,381,696,379,697,379,696,380,696,406,669,381,696,379,697,404,671,405,671,379,697,379,697,379,1771,380,1772,380,1771,380,1772,380,696,380,695,381,696,379,1772,380,1772,379,1772,380,1772,379,1772,380,696,380,696,379,697,379,696,406,670,405,671,404,672,404,671,380,696,380,696,406,670,379,697,379,696,380,695,381,696,379,696,380,1771,380,697,379,697,379,695,381,696,379,697,379,696,407,669,380,696,405,670,380,696,380,696,380,696,379,696,380,696,380,695,407,670,379,696,380,696,380,696,380,695,406,670,380,696,380,696,380,696,380,696,379,696,407,1745,379,1772,380,696,380,1771,407,1745,380,1771,380,695,381,696,406}, //24C + {5043,2130,380,1772,379,697,379,697,379,697,405,1747,379,695,380,697,379,697,379,696,380,1772,379,695,381,1771,406,1745,381,696,380,1771,380,1772,379,1772,405,1747,380,1772,379,696,407,1744,380,697,379,697,379,696,406,670,380,696,379,697,404,1746,381,696,405,671,379,1771,381,697,378,696,407,669,380,1772,379,697,379,697,379,697,379,695,380,698,403,672,379,696,380,696,379,696,380,696,380,696,380,696,380,696,379,697,379,1772,379,1772,405,1747,379,696,380,696,380,1772,405,671,405,29355,5044,2130,380,1772,379,697,379,696,380,695,381,1771,406,671,405,670,380,695,380,696,380,1772,380,696,406,1744,381,1772,379,696,380,1772,380,1771,380,1772,380,1772,379,1772,380,696,380,1771,380,695,381,696,405,671,379,696,380,697,379,697,378,1773,405,670,380,696,380,1772,405,671,379,696,380,696,379,696,406,675,401,670,380,696,405,671,379,696,380,1771,381,1771,384,692,379,697,379,1772,380,1772,380,1771,380,696,379,697,379,697,379,697,379,696,380,696,406,670,379,696,380,696,380,1771,407,670,379,697,404,670,381,696,405,1747,379,696,379,696,380,696,380,696,380,696,379,697,379,696,380,696,380,696,379,697,379,696,380,696,380,696,380,696,379,696,405,671,380,696,379,697,379,696,380,696,380,696,380,696,379,697,379,1772,379,696,380,697,379,1772,379,1772,380,1777,375,1771,380,1772,406,671,404,671,379,696,380,695,407,670,405,671,405,670,380,696,379,697,406,670,379,696,406,670,379,696,380,697,379,697,379,696,406,1745,380,696,380,696,380,696,379,696,380,696,379,696,380,696,380,697,379,696,380,696,379,696,380,696,380,696,380,696,380,696,405,671,379,697,404,671,379,696,380,696,380,696,405,671,379,697,379,697,379,696,406,670,379,1773,405,670,380,1771,406,1746,380,1771,408,1744,406,670,379,696,385}, //25C + {5042,2131,380,1772,406,670,379,696,380,696,380,1771,380,696,379,697,406,670,379,696,380,1772,379,697,379,1772,379,1773,379,697,379,1772,379,1772,380,1772,380,1771,380,1772,382,694,379,1772,380,696,379,700,376,697,404,671,380,696,379,696,380,1772,380,696,379,697,379,1772,406,671,379,696,379,697,379,1772,380,696,379,696,380,697,404,672,379,696,380,696,379,697,379,696,380,696,379,697,379,696,380,696,380,696,380,696,379,1772,380,1772,379,1773,379,696,379,696,380,1772,404,672,379,29382,5043,2130,380,1772,379,697,379,696,380,696,380,1772,379,696,380,696,380,696,406,670,379,1772,380,696,379,1772,380,1772,380,695,406,1747,379,1772,405,1747,379,1771,406,1747,379,696,380,1772,379,697,405,671,379,696,379,697,379,696,406,670,380,1772,406,669,380,696,380,1771,380,696,380,697,379,696,405,671,405,670,380,696,380,695,380,696,380,697,379,1771,407,1745,380,696,380,695,406,1746,380,1771,380,1772,380,697,405,670,379,697,379,696,380,696,380,695,380,697,379,697,379,697,379,1772,406,670,404,671,380,696,379,697,380,1771,405,671,379,697,379,697,381,695,380,695,380,696,379,696,380,696,380,696,380,695,380,697,379,696,380,696,406,671,378,697,405,670,379,697,380,696,379,697,379,1772,380,696,379,697,379,696,380,1772,379,697,379,696,406,1746,405,1746,380,1772,379,1772,380,1771,380,696,380,696,380,696,380,696,379,697,379,696,380,696,380,695,380,697,379,697,379,696,379,696,380,697,379,697,379,697,379,696,379,1772,380,696,380,695,380,696,382,695,379,696,380,696,379,697,379,697,379,696,407,669,379,697,379,696,379,696,380,697,406,669,380,696,406,670,380,696,406,669,380,696,380,696,380,696,379,696,406,671,379,696,405,671,379,1772,406,1746,379,1772,380,1771,380,1772,380,1772,379,697,379,698,378}, //26C + {5043,2130,380,1771,380,696,406,670,380,696,407,1744,380,695,407,670,380,695,381,695,381,1771,406,669,406,1746,380,1772,380,695,406,1746,380,1772,405,1746,407,1744,381,1771,380,696,380,1771,380,696,380,696,407,669,380,695,407,669,380,696,380,1771,380,696,380,696,380,1771,406,670,380,696,380,695,381,1771,405,671,380,696,405,670,406,670,407,669,406,670,407,668,406,670,380,696,380,695,406,671,404,671,380,696,380,695,407,1750,375,1772,406,1745,380,696,380,696,407,1744,406,670,380,29382,5042,2130,380,1772,380,695,381,696,380,696,379,1772,406,670,380,695,380,696,380,696,380,1771,380,696,380,1772,405,1747,404,670,407,1746,379,1772,380,1771,381,1771,406,1746,379,696,380,1771,381,696,381,694,380,696,380,696,380,696,406,669,380,1772,380,696,379,697,379,1772,380,695,380,697,379,696,380,696,380,696,379,696,380,696,381,694,381,696,406,1745,380,1771,381,695,407,669,380,1772,380,1771,406,1745,380,696,406,670,380,696,405,670,381,696,379,696,406,670,380,695,381,696,379,1772,380,696,399,676,381,695,380,695,406,1747,406,669,380,696,380,696,405,671,380,695,406,670,380,696,406,670,406,669,380,696,407,669,405,671,407,668,406,670,380,696,406,669,380,697,405,670,380,696,405,671,393,1758,381,695,380,696,380,1771,404,672,406,669,408,1744,380,1771,380,1772,406,1745,380,1772,380,696,406,670,379,697,379,696,380,695,381,696,405,670,380,696,380,696,380,695,381,695,380,695,381,696,406,670,379,697,405,670,380,1771,380,696,380,696,406,670,380,695,380,696,380,696,380,696,380,695,380,696,406,670,406,669,381,696,380,695,406,670,406,670,380,696,379,696,380,696,380,696,380,695,381,695,380,696,380,695,381,696,379,696,380,696,380,1771,381,695,380,696,380,696,380,695,380,696,380,1772,406,669,380}, //27C + {5042,2130,407,1745,380,696,380,695,408,668,380,1771,407,669,380,696,380,696,380,696,380,1771,380,696,380,1772,379,1772,380,696,400,1751,407,1745,406,1745,380,1772,406,1745,380,696,380,1771,406,671,405,670,406,670,380,696,406,669,406,670,380,1772,379,696,380,696,380,1771,381,695,380,697,405,670,380,1771,380,696,380,696,405,671,406,670,406,669,380,696,380,695,381,696,379,696,406,670,406,670,406,669,380,696,380,696,380,1771,381,1771,380,1771,381,695,405,671,380,1771,408,668,380,29382,5043,2130,380,1771,380,696,380,696,379,697,379,1773,379,696,406,670,379,696,380,696,380,1772,379,697,379,1772,380,1772,379,696,380,1773,378,1773,379,1772,379,1772,380,1772,379,697,379,1772,406,670,379,698,405,669,380,696,380,696,379,697,379,1772,380,696,379,697,379,1772,380,696,379,697,379,697,379,696,379,697,380,696,379,697,379,696,379,697,406,1745,380,1772,380,696,379,697,379,1771,380,1773,379,1772,380,696,379,696,380,696,380,697,405,670,379,696,380,697,378,697,380,696,379,1772,406,670,380,696,379,697,379,696,380,1772,379,697,379,697,379,696,379,697,379,696,380,697,379,696,380,696,379,696,380,696,380,696,379,696,380,697,405,669,381,696,380,695,380,697,404,671,405,671,380,1771,380,1771,407,670,379,696,380,1773,405,670,379,697,379,1772,402,1749,380,1772,380,1771,380,1772,380,696,380,695,380,696,380,696,380,696,380,695,380,696,380,696,379,697,379,696,380,696,380,696,380,696,379,696,380,696,380,696,406,1745,380,696,380,696,379,697,379,697,379,696,380,696,379,697,379,697,406,670,405,670,379,697,379,695,381,696,406,670,380,696,379,697,379,696,406,670,379,696,380,696,380,697,379,696,380,696,379,697,379,696,380,696,380,1771,380,1772,380,696,379,697,379,696,380,696,380,1772,379,697,379}, //28C + {5043,2130,407,1744,381,695,380,696,407,669,406,1745,407,669,406,670,380,696,380,696,406,1745,406,669,406,1747,384,1766,407,669,381,1771,407,1744,384,1768,407,1744,407,1745,407,669,401,1751,380,695,407,669,380,695,407,669,381,695,380,696,380,1771,380,696,405,671,406,1745,406,670,380,696,380,696,380,1771,380,696,406,669,407,669,408,668,380,696,407,669,405,670,407,670,406,668,406,671,406,669,406,670,406,670,406,670,380,1771,407,1745,407,1744,380,695,381,696,380,1772,406,669,406,29355,5070,2104,406,1745,380,696,380,696,380,696,379,1772,406,670,380,696,379,696,380,696,380,1772,385,690,407,1744,408,1744,380,696,405,1747,406,1745,406,1746,380,1771,405,1746,381,695,380,1772,406,670,380,695,407,669,405,671,380,696,406,670,405,1746,407,669,380,695,380,1772,380,695,407,669,380,697,405,670,380,696,407,668,406,670,405,671,406,670,406,1745,380,1772,406,669,407,669,380,1771,380,1772,380,1772,380,696,379,696,380,696,406,670,380,696,380,695,380,696,380,696,380,695,380,1772,389,687,380,696,405,670,380,696,406,1745,381,695,380,696,380,696,406,669,381,695,407,669,405,671,379,696,381,695,405,671,406,670,380,696,406,669,380,695,381,696,406,669,380,696,406,670,405,670,381,695,406,671,379,1771,380,697,379,1771,381,696,406,669,380,1771,407,1746,380,1771,380,1771,380,1772,406,670,380,695,406,670,406,670,406,669,381,695,407,669,407,668,406,669,382,695,380,696,380,696,403,673,380,696,380,695,406,670,405,1746,406,670,380,696,380,695,406,670,380,697,379,696,380,696,380,695,380,696,406,670,380,696,380,695,380,696,380,696,380,695,381,695,407,669,406,670,380,695,380,696,380,696,407,669,406,669,380,697,379,696,380,696,406,1745,381,695,380,1772,380,695,384,692,380,695,407,1745,381,696,379}, //29C + {5043,2130,380,1772,404,671,406,670,406,670,380,1771,380,696,380,696,406,670,379,696,387,1765,380,696,380,1771,380,1772,405,670,381,1771,380,1772,405,1746,380,1771,381,1771,405,671,380,1771,380,696,380,695,407,670,380,695,406,670,380,696,406,1745,381,695,406,670,407,1744,406,670,406,670,380,695,381,1771,380,696,406,670,406,669,407,669,406,670,380,695,381,696,405,670,380,696,380,695,381,695,407,669,380,696,405,670,381,1771,406,1745,381,1771,380,696,406,669,381,1771,380,696,380,29381,5044,2129,406,1746,406,670,379,696,381,695,380,1772,380,695,381,696,379,696,380,696,380,1770,381,696,407,1744,380,1772,407,669,380,1772,405,1745,407,1745,406,1746,407,1744,380,696,380,1771,381,695,380,696,406,670,380,695,381,695,380,696,380,1771,381,695,380,696,410,1741,381,695,406,670,380,695,381,695,381,695,407,669,406,669,380,696,407,669,380,1771,381,1771,380,696,380,696,406,1745,380,1772,406,1745,380,696,380,695,381,696,405,670,407,669,380,696,380,696,380,695,380,696,407,1745,380,695,407,669,406,669,381,695,407,1745,408,668,406,669,381,695,406,670,380,697,379,695,381,696,380,695,406,669,408,669,380,695,405,671,380,696,380,695,406,670,380,696,380,696,380,695,381,695,380,1772,380,695,381,1771,380,696,380,1771,380,696,380,696,380,1771,381,1771,380,1771,380,1771,381,1771,407,669,407,669,381,694,407,669,407,669,380,696,380,696,406,669,381,695,380,696,380,696,405,670,381,695,380,695,381,696,379,696,381,1771,380,695,407,669,391,685,406,670,380,695,381,695,407,669,381,695,406,670,405,670,380,696,380,696,380,695,380,698,405,669,406,670,380,695,408,668,405,671,407,669,406,670,380,695,380,696,380,696,406,669,381,695,406,1746,380,1772,380,1771,406,670,406,669,380,696,380,1772,406,669,380}, //30C + {5043,2129,380,1773,379,696,379,697,380,696,380,1772,404,672,379,697,378,697,379,697,379,1771,380,697,379,1772,406,1746,379,696,380,1772,405,1747,379,1772,380,1771,380,1773,378,697,379,1772,380,697,379,696,379,697,380,695,380,696,379,697,380,1771,380,696,380,696,379,1772,380,696,380,696,380,696,379,1772,379,698,379,695,380,697,379,697,405,670,379,697,405,670,380,696,380,696,407,669,379,696,380,697,379,696,379,696,380,1772,380,1772,379,1772,379,698,378,697,379,1772,407,669,380,29382,5068,2105,379,1772,379,697,379,696,380,697,379,1772,379,698,378,696,406,671,379,696,380,1771,380,697,379,1772,379,1772,380,696,379,1772,380,1772,406,1746,379,1773,378,1773,405,671,379,1772,379,697,406,668,381,696,379,697,379,697,379,697,379,1771,380,696,380,695,381,1772,380,695,380,697,379,697,379,696,380,696,380,696,405,670,380,696,379,696,407,1746,379,1772,379,696,380,697,379,1771,380,1772,380,1771,380,697,379,696,380,696,406,670,405,670,380,697,378,696,380,697,379,696,380,1772,379,697,379,697,379,696,380,696,379,1772,380,697,379,696,379,697,379,697,378,698,379,696,380,696,379,697,379,696,380,695,381,696,379,696,380,697,378,698,379,697,378,697,406,670,379,696,379,696,380,697,379,1772,380,1771,380,697,405,1746,405,671,379,696,380,1772,380,1772,379,1772,379,1772,380,1772,379,697,379,697,379,696,379,697,379,696,380,696,380,696,380,696,379,696,380,697,379,695,380,697,379,697,379,697,379,696,380,696,379,1773,379,696,380,695,380,696,380,697,379,696,379,697,379,697,379,697,378,698,378,698,378,696,380,696,380,696,380,696,379,696,380,696,391,685,380,696,380,696,379,697,405,670,380,696,380,696,379,696,406,670,407,669,379,1772,380,696,380,696,405,1747,405,670,380,696,380,1771,380,696,380}, //31C + {5043,2130,407,1744,380,696,380,696,405,670,406,1746,406,670,405,670,380,697,379,696,380,1772,405,670,381,1771,380,1771,380,695,381,1772,379,1772,380,1772,380,1771,380,1772,380,695,407,1745,380,696,379,697,379,696,407,669,380,696,406,669,380,1772,380,696,379,697,405,1746,380,696,379,696,380,697,379,1772,385,690,380,696,380,696,380,696,380,696,380,695,380,696,380,696,380,695,407,669,380,696,405,671,380,696,379,696,380,1771,406,1746,407,1745,380,696,379,696,435,1716,406,671,379,29382,5069,2104,380,1772,405,670,380,696,380,697,379,1771,380,696,382,694,379,696,406,670,405,1747,380,696,379,1772,406,1745,381,695,380,1771,381,1771,380,1772,406,1745,380,1772,406,670,379,1772,380,696,380,696,379,696,380,697,379,696,407,669,380,1771,380,696,380,696,406,1745,380,696,380,696,380,696,379,697,379,696,394,682,380,695,407,670,404,672,379,1771,380,1772,380,696,405,670,380,1772,380,1771,380,1772,380,696,379,697,405,670,380,696,380,696,406,670,379,697,379,696,380,695,381,1771,380,696,380,696,380,696,406,669,380,1772,380,695,406,670,380,696,379,697,405,671,405,670,406,670,380,696,379,696,406,671,379,696,380,695,380,696,380,696,380,696,380,696,405,670,380,696,406,669,381,1772,380,1771,380,1771,380,696,405,1747,380,695,380,696,380,1772,379,1772,406,1747,379,1771,380,1772,379,697,379,696,380,695,381,696,379,696,380,696,380,696,405,671,407,669,379,696,380,696,406,670,379,696,380,697,379,696,405,670,380,1772,380,696,380,696,379,696,380,696,406,669,381,696,405,671,379,697,379,696,380,695,380,696,380,696,380,696,380,696,379,697,379,697,379,696,380,696,379,696,407,669,380,696,380,696,379,696,380,696,406,670,380,696,405,1746,380,1772,405,671,379,1772,380,696,380,695,380,1772,380,696,379} //32C + }}; -const uint16_t ir_code_fan[4][91] = { - {8976, 4498, 559, 551, 584, 550, 560, 1677, 586, 550, 584, 1652, 585, 551, 560, 575, 585, 568, 559, 576, 585, 551, 585, 550, 584, 552, 559, 1677, 584, 1653, 560, 1677, 585, 1669, 584, 551, 560, 576, 559, 576, 584, 554, 583, 550, 584, 551, 585, 551, 585, 567, 561, 575, 584, 551, 560, 576, 584, 551, 585, 550, 560, 576, 584, 551, 560, 593, 560, 576, 584, 550, 585, 551, 584, 551, 584, 552, 584, 551, 584, 551, 560, 598, 559, 576, 585, 1652, 583, 1654, 559, 565, 559}, // AUTO - {8990, 4500, 530, 579, 557, 578, 557, 1680, 557, 578, 557, 1680, 557, 579, 557, 578, 557, 595, 557, 579, 557, 578, 557, 579, 556, 1680, 558, 1679, 557, 1680, 558, 1680, 556, 1697, 558, 577, 558, 579, 555, 579, 558, 578, 557, 578, 557, 578, 557, 579, 556, 596, 557, 579, 556, 579, 557, 578, 557, 579, 556, 579, 557, 579, 556, 579, 557, 595, 557, 578, 558, 578, 557, 579, 556, 579, 557, 579, 556, 578, 557, 579, 557, 600, 557, 579, 556, 1680, 557, 579, 557, 1668, 557}, // HIGH - {8977, 4497, 508, 601, 533, 602, 535, 1702, 534, 602, 533, 1703, 535, 601, 534, 602, 533, 619, 534, 601, 533, 603, 533, 1703, 534, 602, 533, 1704, 533, 1704, 534, 1702, 534, 1721, 533, 601, 534, 602, 534, 602, 533, 602, 533, 602, 534, 601, 536, 600, 534, 618, 534, 602, 534, 601, 534, 602, 533, 601, 534, 602, 534, 602, 533, 602, 533, 619, 534, 602, 533, 602, 533, 602, 533, 603, 533, 602, 534, 602, 534, 601, 533, 624, 534, 602, 533, 1703, 534, 603, 534, 588, 533}, // MED - {8976, 4505, 506, 602, 534, 601, 534, 1703, 533, 603, 533, 1705, 532, 602, 534, 602, 533, 619, 534, 601, 533, 603, 533, 1704, 533, 1704, 533, 1703, 533, 1705, 533, 1704, 533, 1720, 534, 602, 533, 602, 534, 601, 534, 602, 533, 602, 534, 601, 534, 603, 532, 620, 532, 603, 532, 604, 532, 602, 534, 602, 532, 603, 534, 602, 533, 602, 534, 618, 534, 601, 534, 602, 534, 602, 534, 600, 534, 602, 533, 602, 534, 602, 533, 624, 534, 602, 533, 602, 534, 1703, 533, 1692, 534} // LOW +const uint16_t ir_code_fan[4][407] = { + {5069,2104,406,1746,407,668,408,669,405,670,407,1745,407,668,381,695,381,695,406,670,380,1772,379,696,406,1745,381,1771,380,696,380,1772,379,1772,381,1770,406,1746,407,1745,380,696,406,1745,381,695,380,696,380,696,406,669,407,669,380,696,406,1746,402,673,380,696,406,1746,380,695,407,669,380,696,406,1745,406,670,407,670,379,696,406,670,380,695,407,669,406,669,408,669,406,670,380,695,380,696,407,669,380,695,405,671,407,1745,406,1746,379,1772,380,696,406,670,379,1772,380,696,380,29383,5068,2105,380,1771,407,669,380,696,406,669,380,1772,380,696,380,696,380,695,381,695,380,1771,381,696,380,1771,406,1745,381,695,381,1771,405,1747,379,1772,405,1747,380,1771,395,681,406,1745,381,695,407,669,407,669,380,696,379,696,407,669,380,1771,407,669,406,670,380,1772,406,669,381,695,406,670,380,695,381,695,407,669,407,669,380,696,406,670,380,1771,406,1746,405,670,381,696,405,670,405,1747,380,1771,406,669,408,669,407,668,407,669,380,696,380,696,380,695,380,696,381,695,380,1771,407,669,381,696,406,669,406,670,380,695,381,695,407,669,406,669,381,696,405,670,381,695,380,696,380,696,407,669,405,670,407,669,383,693,407,669,379,696,380,696,406,670,406,669,407,669,381,695,407,669,405,670,380,696,381,696,404,670,381,696,380,695,381,1771,406,1745,381,1770,408,1745,380,695,381,695,380,696,380,696,407,669,406,670,380,695,380,696,380,696,405,671,380,695,407,669,380,695,381,695,381,695,380,696,380,696,406,1745,407,669,380,696,380,696,406,669,381,695,380,696,380,695,406,670,406,670,406,670,380,696,405,670,381,695,380,696,380,696,407,669,380,695,406,670,407,669,407,669,380,695,381,696,406,669,407,669,380,696,380,695,406,1746,406,670,406,1745,406,1745,407,1745,381,695,381,1771,380,1771,407}, //AUTO + {5043,2130,380,1772,380,696,380,696,379,697,379,1771,381,695,381,696,379,696,406,670,380,1771,381,696,379,1771,381,1771,380,696,380,1771,381,1771,380,1772,380,1772,380,1771,380,696,380,1771,381,694,381,696,380,696,380,695,381,695,380,696,380,1772,380,695,380,697,379,1772,380,695,381,695,381,695,380,1772,380,696,380,696,379,696,380,696,380,696,380,696,379,696,380,696,380,695,381,696,380,696,380,696,379,695,381,695,381,1771,380,1771,381,1771,380,697,379,696,380,1771,381,694,381,29382,5044,2130,380,1771,380,697,379,696,380,696,380,1770,381,696,436,640,380,696,380,696,380,1770,381,695,407,1746,379,1771,381,696,380,1771,380,1772,380,1770,381,1772,380,1772,380,696,380,1771,380,696,380,696,380,696,380,697,378,695,381,696,380,1772,379,697,379,696,380,1772,380,696,379,696,380,696,380,696,380,696,379,696,380,696,380,695,381,695,380,1771,381,1772,380,695,380,696,380,696,380,1772,379,1772,380,696,380,696,380,696,379,696,380,696,380,696,380,696,379,696,381,695,380,1771,381,695,380,696,380,696,380,695,381,695,381,695,380,696,380,696,380,695,381,695,380,695,381,696,380,696,380,695,381,696,379,697,379,696,380,696,380,695,380,696,380,697,379,696,380,695,380,696,380,697,379,696,380,696,380,695,381,696,379,695,381,696,380,1771,380,1772,380,1772,379,1772,380,1772,380,696,379,1772,380,696,380,696,380,696,379,696,409,667,380,695,381,695,380,696,380,696,380,696,380,695,381,695,380,696,380,696,380,1771,380,696,380,696,406,669,381,695,380,696,380,695,381,696,380,696,379,696,380,696,380,696,379,696,406,671,379,696,405,671,380,696,380,695,380,696,380,697,379,696,380,695,380,696,380,696,380,696,380,696,379,697,407,1743,407,669,380,1772,407,1744,409,668,405,1746,406,670,380,695,380}, //HIGH + {5069,2105,405,1746,381,695,380,695,381,696,407,1745,379,696,380,696,380,696,380,696,380,1771,380,697,379,1771,406,1745,407,669,381,1771,380,1772,405,1746,380,1772,380,1772,379,696,380,1772,379,696,407,669,380,695,381,696,380,696,379,696,380,1771,381,696,380,695,380,1772,380,696,380,695,405,672,379,1771,381,695,380,695,407,670,380,696,404,670,381,696,380,696,380,697,404,670,406,670,380,696,406,669,381,696,380,695,380,1771,381,1772,379,1771,381,695,381,695,407,1744,381,695,381,29381,5069,2104,380,1772,380,696,406,670,380,696,379,1772,380,695,406,670,380,696,380,696,380,1772,406,668,406,1746,381,1771,380,696,380,1772,379,1772,380,1771,381,1771,406,1746,406,670,379,1772,380,695,407,669,380,696,380,696,380,696,405,671,379,1772,380,696,380,696,406,1745,380,696,405,671,404,671,380,696,380,696,405,671,380,695,407,669,380,696,380,1771,380,1772,380,695,381,694,407,670,380,1771,381,1771,380,696,406,669,407,669,406,670,380,696,380,696,380,695,406,671,406,669,380,1771,380,696,380,696,380,696,406,670,405,671,379,697,379,697,379,695,406,670,407,669,380,696,380,696,379,696,380,696,380,695,381,695,407,670,379,696,380,696,406,669,406,670,380,696,380,696,380,696,380,695,406,671,405,670,406,669,381,696,379,697,405,670,405,1747,379,1772,405,1746,406,1746,380,1771,395,1757,380,696,380,697,379,695,407,669,380,696,405,671,380,695,380,696,380,696,406,670,406,670,405,670,380,696,408,668,404,671,381,1771,380,697,394,680,380,696,406,670,380,696,380,696,407,668,407,669,380,696,380,695,380,696,380,696,405,671,380,695,381,696,406,669,380,697,379,696,379,696,380,696,380,697,379,696,406,669,408,668,380,695,381,695,380,1772,380,696,380,1772,379,1772,406,670,405,670,381,695,380,696,380}, //MID + {5039,2131,406,1745,380,696,379,697,378,698,378,1772,380,697,379,697,379,696,379,697,404,1748,378,698,379,1771,380,1772,379,698,378,1772,380,1772,379,1773,379,1772,383,1768,380,697,379,1772,379,697,379,696,380,697,379,696,406,671,378,696,380,1773,378,697,379,698,378,1772,379,698,379,696,379,697,379,1772,380,696,379,697,379,697,406,669,380,696,379,697,379,696,380,696,380,696,379,697,379,697,379,696,379,697,380,696,379,1773,379,1772,379,1772,406,670,405,671,379,1772,380,696,380,29382,5043,2130,379,1773,405,670,380,695,381,696,379,1772,379,697,380,696,379,697,379,697,379,1772,405,671,379,1772,380,1771,380,697,379,1772,380,1772,379,1773,379,1772,379,1773,379,696,405,1746,382,694,380,696,379,696,380,696,380,696,380,695,381,1772,379,696,380,696,379,1773,379,696,380,696,380,696,405,671,379,696,380,696,380,696,406,671,378,697,379,1772,380,1772,379,696,380,696,380,696,405,1746,380,1772,379,697,379,697,379,697,379,696,380,696,379,697,379,697,379,696,380,696,379,1773,379,696,379,698,378,696,406,671,379,696,380,696,379,697,379,697,405,670,380,696,379,697,379,697,379,697,406,670,404,671,379,697,378,697,380,696,379,697,379,697,379,696,380,697,379,696,380,696,379,697,379,695,380,697,405,671,379,696,380,696,379,697,379,1773,379,1772,379,1772,380,1772,379,1773,379,696,380,696,379,697,379,697,379,696,380,696,405,671,379,697,379,696,380,696,379,697,379,697,404,672,379,696,379,698,379,696,379,1772,380,696,380,696,379,698,404,670,380,696,379,696,380,697,379,696,379,697,379,697,380,696,379,696,380,697,405,670,405,671,379,697,379,696,380,696,379,696,380,697,378,698,379,697,378,697,379,697,379,696,405,671,379,1772,380,697,379,1772,379,1772,380,696,380,1771,380,1772,379,1773,379} //LOW }; -const uint16_t ir_code_off[91] = {9004, 4475, 559, 552, 583, 578, 557, 1680, 557, 554, 582, 578, 557, 553, 582, 553, 583, 569, 583, 552, 584, 1679, 558, 552, 583, 578, 557, 1680, 557, 1655, 582, 1680, 557, 1697, 557, 553, 582, 578, 558, 577, 558, 578, 558, 552, 583, 578, 557, 579, 557, 569, 583, 553, 583, 578, 557, 552, 584, 577, 558, 553, 582, 553, 582, 553, 583, 594, 557, 579, 557, 579, 556, 552, 584, 579, 557, 578, 557, 552, 584, 578, 557, 600, 557, 1653, 584, 552, 584, 1679, 558, 539, 584}; +const uint16_t ir_code_off[407] = {5044,2129,408,1744,406,670,380,697,404,671,405,1746,380,696,405,671,406,670,405,671,405,1746,406,670,405,1747,406,1745,406,670,405,1746,405,1746,407,1745,405,1746,406,1746,380,696,380,1771,380,696,405,671,380,695,406,670,407,670,379,696,407,1744,380,696,380,695,407,1746,405,670,406,670,405,671,406,1744,381,696,406,669,405,671,380,696,405,671,406,670,405,670,380,696,407,669,405,670,407,668,381,696,406,670,405,670,406,1746,407,1744,406,1745,381,696,405,670,407,1745,406,669,407,29355,5069,2104,406,1745,380,696,380,696,380,696,380,1771,406,670,379,697,406,669,405,671,406,1745,381,695,380,1772,405,1746,407,669,380,1771,407,1745,406,1745,434,1718,406,1745,381,695,380,1771,381,695,406,670,406,670,406,670,405,671,379,696,403,1749,406,670,406,669,407,1745,405,671,410,664,406,671,407,669,405,670,380,696,406,670,406,670,406,669,407,1745,380,1772,405,670,380,696,380,1771,380,1772,380,1772,405,670,407,669,406,670,380,695,380,696,405,671,406,670,379,696,407,669,406,671,405,669,380,696,380,696,406,669,408,1744,381,695,406,670,406,669,381,695,381,695,380,696,380,696,405,671,405,672,378,696,406,670,380,696,379,696,406,670,406,669,389,687,380,696,380,696,380,695,406,1746,407,669,380,1771,406,670,380,1772,405,670,407,669,406,1745,407,1745,380,1771,380,1771,381,1771,381,1771,380,696,406,669,407,669,405,671,380,695,406,670,380,696,405,670,381,696,380,696,379,696,405,671,380,695,381,695,381,695,380,1772,379,697,379,696,406,670,380,695,406,671,405,670,382,693,408,668,406,670,380,696,406,670,380,695,382,695,404,671,406,670,406,669,380,699,377,696,380,695,407,669,380,696,380,696,380,696,406,670,380,695,380,696,380,696,406,1744,381,1771,407,669,380,696,380,1771,381,1771,381,694,406}; size_t getInfraredCode(uint8_t mode, uint8_t fan_speed, uint8_t temperature_index, const uint16_t **codePtr) { switch (mode) { case 0: // Off *codePtr = &(ir_code_off[0]); - return 91; + return 407; case 1: // Fan Only *codePtr = &(ir_code_fan[fan_speed][0]); - return 91; + return 407; case 2: // Cool *codePtr = &(ir_code_cool[fan_speed][temperature_index][0]); - return 91; + return 407; default: // Invalid mode return 0; } diff --git a/src/ir_codes.hpp b/src/ir_codes.hpp index 4b02e08..5dc3188 100644 --- a/src/ir_codes.hpp +++ b/src/ir_codes.hpp @@ -3,9 +3,9 @@ #include // IR codes for the remote control -extern const uint16_t ir_code_cool[4][16][91]; -extern const uint16_t ir_code_fan[4][91]; -extern const uint16_t ir_code_off[91]; +extern const uint16_t ir_code_cool[4][17][407]; +extern const uint16_t ir_code_fan[4][407]; +extern const uint16_t ir_code_off[407]; // Function to retrieve the IR code for the given mode, fan speed and temperature size_t getInfraredCode(uint8_t mode, uint8_t fan_speed, uint8_t temperature_index, const uint16_t **codePtr); \ No newline at end of file diff --git a/src/ise_display.cpp b/src/ise_display.cpp index af60c80..beefcca 100644 --- a/src/ise_display.cpp +++ b/src/ise_display.cpp @@ -1,35 +1,56 @@ #include -ISEDisplay::ISEDisplay(HardwareSerial *adapter) : ESPMegaDisplay(adapter, 115200, 912600, 4, 17) +ISEDisplay::ISEDisplay(HardwareSerial *adapter, const uint8_t *light_array, uint8_t row, uint8_t column) : ESPMegaDisplay(adapter, 115200, 912600, 4, 17) { + this->light_array = light_array; + this->row = row; + this->column = column; } // Work left // TODO : Implement // debug to work -// appdeamon send data / receive data -void ISEDisplay::begin(DigitalInputCard *inputCard, DigitalOutputCard *outputCard, ClimateCard *climateCard) +void ISEDisplay::begin(DigitalInputCard *inputCard, DigitalOutputCard *outputCard, ClimateCard *climateCard, RemoteVariable* pm_switch, RemoteVariable* pm_fan_speed) { this->inputCard = inputCard; this->outputCard = outputCard; this->climateCard = climateCard; + this->pm_switch = pm_switch; + this->remote_pm_fan_speed = pm_fan_speed; auto bindedHandlePWMChange = std::bind(&ISEDisplay::handlePWMChange, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); - auto bindedHandleACChange = std::bind(&ISEDisplay::setACstate, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); + auto bindedHandleACChange = std::bind(&ISEDisplay::handleACChange, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); auto bindedHandleTouch = std::bind(&ISEDisplay::handleTouch, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); this->outputCallbackHandle = this->outputCard->registerChangeCallback(bindedHandlePWMChange); this->climateCallbackHandle = this->climateCard->registerChangeCallback(bindedHandleACChange); this->user_mode = 1; // initialized to cool by default - this->time_since_last_screen_update = 0; + this->pm_fan_speed = 10; + //remote_pm_fan_speed->setValue(pm_fan_speed); + this->ac_fan_speed = 0; + this->ac_mode = 0; + this->ac_temperature = 25; + this->lightLevelRow1 = 0; + this->lightLevelRow2 = 0; + this->lightLevelRow3 = 0; + this->lightLevelRow4 = 0; + // this->time_since_last_screen_update = 0; this->registerTouchCallback(bindedHandleTouch); this->reset(); delay(1000); // TODO : Will the light be on or off when the system is started?, You need to jump to its respective page // first jump to main then if no activity jump to standby - this->jumpToPage(2); + this->jumpToPage(2); // change this back later to 2 delay(100); this->updateAirPurifierState(); this->updateACState(); this->updateLightGroupStatePageDashboard(); - this->updateLightGroupStatePageStandby(); + + // this->outputCard->setValue(1, 0); + // this->outputCard->setValue(2, 0); + // this->outputCard->setValue(3, 0); + // this->outputCard->setValue(4, 0); + // this->climateCard->setTemperature(ac_temperature); + // this->climateCard->setFanSpeed(ac_fan_speed); + // this->climateCard->setMode(ac_mode); + this->climateCard->setState(ac_mode, ac_fan_speed, ac_temperature); } void ISEDisplay::loop() { @@ -39,17 +60,23 @@ void ISEDisplay::loop() // Update the time since the last screen update using millis() - u_int32_t current_time = millis(); + // u_int32_t current_time = millis(); - if (current_time - this->time_since_last_screen_update > 120000) - { - // jump to standby page if there is no activity for 2 minutes - this->jumpToPage(1); - } + // if (current_time - this->time_since_last_screen_update > 120000) + // { + // // jump to standby page if there is no activity for 2 minutes + // if(this->currentPage != 1){ + // this->jumpToPage(1); + // ESP_LOGI("ISEDisplay", "Jumping to standby page"); + // } + // } } void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type) { + ESP_LOGD("ISEDisplay", "Touch detected on page %d, component %d, touch type %d", page, component, touch_type); + // time_since_last_screen_update = millis(); // update time since last activity + char buffer[4]; if (page == PAGE_STANDBY) { switch (component) @@ -60,6 +87,7 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type // TODO : Should you really jump to page 2 here? should't page jumping be handled reactivly? // EX. if atleast one light is on, then jump to active page, else jump to standby page // This will allow page to change correctly when the system is started and when controlled remotely which won't call handleTouch + // time_since_last_screen_update = millis(); this->jumpToPage(2); // the function of the button is to open the dashboard from standby break; @@ -68,7 +96,7 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type break; // TODO : So this does nothing? Shouldn't it turn on the lights? // should turn it on now - toggleLightGroupState(); + toggleLightGroupStateStandby(); break; case COMPONENT_STANDBY_AC_TOGGLE: // TODO : What's the expexted behavior of standby? Does it enter standby when the lights are all off and ignore the AC @@ -81,7 +109,7 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type case COMPONENT_STANDBY_PM_TOGGLE: if (touch_type != TOUCH_TYPE_RELEASE) break; - togglePM(); + togglePMStandby(); break; default: break; @@ -90,12 +118,6 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type else if (page == PAGE_DASHBOARD) { - u_int8_t pm_fan_speed = 0; - u_int8_t fan_speed = 0; - u_int8_t lightLevelRow1 = 0; - u_int8_t lightLevelRow2 = 0; - u_int8_t lightLevelRow3 = 0; - u_int8_t lightLevelRow4 = 0; switch (component) { @@ -106,7 +128,30 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type toggleLightGroupState(); break; // TODOlater : can't this be done better with array lookup? - + case COMPONENT_LIGHT_MASTER_LEVEL1_TOUCHPOINT: + if (touch_type != TOUCH_TYPE_RELEASE) + break; + for (uint8_t i = 1; i <= 4; i++) + { + setLightLevel(i, 1); + } + break; + case COMPONENT_LIGHT_MASTER_LEVEL2_TOUCHPOINT: + if (touch_type != TOUCH_TYPE_RELEASE) + break; + for (uint8_t i = 1; i <= 4; i++) + { + setLightLevel(i, 2); + } + break; + case COMPONENT_LIGHT_MASTER_LEVEL3_TOUCHPOINT: + if (touch_type != TOUCH_TYPE_RELEASE) + break; + for (uint8_t i = 1; i <= 4; i++) + { + setLightLevel(i, 3); + } + break; case COMPONENT_LIGHT_ROW1_SLIDER: if (touch_type != TOUCH_TYPE_RELEASE) break; @@ -165,39 +210,53 @@ void ISEDisplay::handleTouch(uint8_t page, uint8_t component, uint8_t touch_type case COMPONENT_AC_FAN_SPEED: if (touch_type != TOUCH_TYPE_RELEASE) break; - fan_speed = this->climateCard->getFanSpeed(); + ac_fan_speed = this->climateCard->getFanSpeed(); // We have auto, low, mid, high right?, that's 0,1,2,3 a modulo operation of 3 only gives 0,1,2 // mod 4 should fixed it - this->climateCard->setFanSpeed((fan_speed + 1) % 4); + ESP_LOGI("ISEDisplay", "Current AC fan speed: %d", ac_fan_speed); + ac_fan_speed = (ac_fan_speed + 1) % 4; + ESP_LOGI("ISEDisplay", "New AC fan speed: %d", ac_fan_speed); + this->climateCard->setFanSpeed(ac_fan_speed); + // updateACState(); break; case COMPONENT_AC_TEMP_DOWN_BUTTON: if (touch_type != TOUCH_TYPE_RELEASE) break; this->climateCard->setTemperature(this->climateCard->getTemperature() - 1); + // updateACState(); break; case COMPONENT_AC_TEMP_UP_BUTTON: if (touch_type != TOUCH_TYPE_RELEASE) break; this->climateCard->setTemperature(this->climateCard->getTemperature() + 1); + // updateACState(); break; case COMPONENT_PM_TOGGLE_BUTTON: if (touch_type != TOUCH_TYPE_RELEASE) break; - this->outputCard->setState(5, !this->outputCard->getState(5)); + togglePM(); break; case COMPONENT_PM_FAN_SPEED_DECREASE: if (touch_type != TOUCH_TYPE_RELEASE) break; - pm_fan_speed = this->outputCard->getValue(6); - if (pm_fan_speed >= 0 && pm_fan_speed <= 20) - this->outputCard->setValue(5, (pm_fan_speed - 1)); + pm_fan_speed = (int) atof(remote_pm_fan_speed->getValue()); + ESP_LOGI("ISEDisplay", "Current PM fan speed: %d", pm_fan_speed); + if (pm_fan_speed >= 1 && pm_fan_speed <= 20) + itoa(pm_fan_speed - 1, buffer, DEC); + remote_pm_fan_speed->setValue(buffer); + ESP_LOGI("ISEDisplay", "New PM fan speed: %d", pm_fan_speed); + //updateAirPurifierState(); break; case COMPONENT_PM_FAN_SPEED_INCREASE: if (touch_type != TOUCH_TYPE_RELEASE) break; - pm_fan_speed = this->outputCard->getValue(6); - if (pm_fan_speed >= 0 && pm_fan_speed <= 20) - this->outputCard->setValue(5, (pm_fan_speed + 1)); + pm_fan_speed = (int) atof(remote_pm_fan_speed->getValue()); + ESP_LOGI("ISEDisplay", "Current PM fan speed: %d", pm_fan_speed); + if (pm_fan_speed >= 0 && pm_fan_speed <= 19) + itoa(pm_fan_speed + 1, buffer, DEC); + remote_pm_fan_speed->setValue(buffer); + ESP_LOGI("ISEDisplay", "New PM fan speed: %d", pm_fan_speed); + //updateAirPurifierState(); break; default: break; @@ -217,33 +276,20 @@ void ISEDisplay::handlePWMChange(uint8_t pin, bool state, uint16_t value) uint8_t current_page = this->currentPage; if (current_page == PAGE_STANDBY) { - if (pin >= 1 && pin <= 4) + if ((pin >= 0 && pin <= 3) ||(pin >= 8 && pin <= 11)) { // Light - updateLightGroupStatePageDashboard(); updateLightGroupStatePageStandby(); - time_since_last_screen_update = millis(); // update time since last activity - } - else if (pin == 4 || pin == 5) - { - // Air Purifier - updateAirPurifierState(); - time_since_last_screen_update = millis(); // update time since last activity + // time_since_last_screen_update = millis(); // update time since last activity } } else if (current_page == PAGE_DASHBOARD) { - if (pin >= 1 && pin <= 4) + if ((pin >= 0 && pin <= 3) ||(pin >= 8 && pin <= 11)) { // Light - updateLightGroupStatePageStandby(); - time_since_last_screen_update = millis(); // update time since last activity - } - else if (pin == 4 || pin == 5) - { - // Air Purifier - updateAirPurifierState(); - time_since_last_screen_update = millis(); // update time since last activity + updateLightGroupStatePageDashboard(); + // time_since_last_screen_update = millis(); // update time since last activity } } else @@ -253,19 +299,14 @@ void ISEDisplay::handlePWMChange(uint8_t pin, bool state, uint16_t value) } void ISEDisplay::updateDateTimeText(rtctime_t time) { - this->takeSerialMutex(); + if (!this->takeSerialMutex()) + return; // Send the time to the display - this->displayAdapter->printf("time.txt=%02d:%02d", time.hours, time.minutes); + this->displayAdapter->printf("time.txt=\"%02d:%02d\"", time.hours, time.minutes); this->sendStopBytes(); - this->displayAdapter->printf("date.txt=%02d.%02d.%d", time.day, time.month, time.year); - this->sendStopBytes(); - - this->displayAdapter->printf("s_time.txt=%02d:%02d", time.hours, time.minutes); - this->sendStopBytes(); - - this->displayAdapter->printf("s_date.txt=%02d.%02d.%d", time.day, time.month, time.year); + this->displayAdapter->printf("date.txt=\"%02d.%02d.%d\"", time.day, time.month, time.year); this->sendStopBytes(); this->giveSerialMutex(); @@ -282,6 +323,10 @@ void ISEDisplay::updateWeather(char *weather_string) { weather_code = 63; } + else if (strcmp(weather_string, "sunny") == 0) + { + weather_code = 63; + } else if (strcmp(weather_string, "fair_night") == 0) { weather_code = 64; @@ -290,11 +335,11 @@ void ISEDisplay::updateWeather(char *weather_string) { weather_code = 65; } - else if (strcmp(weather_string, "clearsky_day") == 0) + else if (strcmp(weather_string, "clear-day") == 0) { weather_code = 66; } - else if (strcmp(weather_string, "clearsky_night") == 0) + else if (strcmp(weather_string, "clear-night") == 0) { weather_code = 67; } @@ -302,6 +347,10 @@ void ISEDisplay::updateWeather(char *weather_string) { weather_code = 68; } + else if (strcmp(weather_string, "partlycloudy") == 0) + { + weather_code = 68; + } else if (strcmp(weather_string, "partlycloudy_night") == 0) { weather_code = 69; @@ -322,6 +371,10 @@ void ISEDisplay::updateWeather(char *weather_string) { weather_code = 73; } + else if (strcmp(weather_string, "rainy") == 0) + { + weather_code = 73; + } else if (strcmp(weather_string, "lightrain") == 0) { weather_code = 74; @@ -334,9 +387,11 @@ void ISEDisplay::updateWeather(char *weather_string) { weather_code = 68; } + ESP_LOGI("ISEDisplay", "Updating weather to: %s (%d)", weather_string, weather_code); - this->takeSerialMutex(); - this->displayAdapter->printf("weather_icon.pic=%s", weather_code); + if (!this->takeSerialMutex()) + return; + this->displayAdapter->printf("weather_icon.pic=%d", weather_code); this->sendStopBytes(); this->giveSerialMutex(); } @@ -344,108 +399,252 @@ void ISEDisplay::updateTempOutside(float temp_outside) { // TODO : use remotevar to get PM2.5 data from appdaemon and update the display - //change temp_outside to int then display + // change temp_outside to int then display u_int8_t temp_outside_int = (u_int8_t)temp_outside; - this->takeSerialMutex(); - this->displayAdapter->printf("temp_outside.txt=%d", temp_outside_int); + ESP_LOGI("ISEDisplay", "Updating temperature outside to: %d", temp_outside_int); + if (!this->takeSerialMutex()) + return; + this->displayAdapter->printf("outside_temp.txt=\"%d\"", temp_outside_int); this->sendStopBytes(); this->giveSerialMutex(); } void ISEDisplay::updatePMoutside(u_int16_t pm25_outside) { - this->takeSerialMutex(); - this->displayAdapter->printf("pm_outside.txt=%d", pm25_outside); - this->sendStopBytes(); - this->giveSerialMutex(); + ESP_LOGI("ISEDisplay", "Updating PM2.5 outside to: %d", pm25_outside); + u_int16_t curPage = this->currentPage; + if (curPage == 2) + { + if (!this->takeSerialMutex()) + return; + this->displayAdapter->printf("pm_out.txt=\"%d\"", pm25_outside); + this->sendStopBytes(); + this->giveSerialMutex(); + } // TODO : use remotevar to get PM2.5 data from appdaemon and update the display } -void ISEDisplay::updatePMinside(u_int8_t pm25_inside) +void ISEDisplay::updatePMinside(u_int16_t pm25_inside) { // TODO : get data from HA's Xiaomi air purifier sensor + ESP_LOGI("ISEDisplay", "Updating PM2.5 inside to: %d", pm25_inside); + u_int16_t curPage = this->currentPage; + if (curPage == 2) + { + if (!this->takeSerialMutex()) + return; + this->displayAdapter->printf("pm_in.txt=\"%d\"", pm25_inside); + this->sendStopBytes(); + this->giveSerialMutex(); + } } void ISEDisplay::setPMstate(bool is_pm_on, uint8_t pm_fan_speed) { - // TODO : set data to HA's Xiaomi air purifier sensor + ESP_LOGI("ISEDisplay", "Setting PM state: %d, fan speed: %d", is_pm_on, pm_fan_speed); + char buffer[4]; + itoa(pm_fan_speed, buffer, DEC); + remote_pm_fan_speed->setValue(buffer); + pm_switch->setValue(is_pm_on ? "1" : "0"); } void ISEDisplay::setACstate(uint8_t ac_fan_speed, uint8_t ac_mode, uint8_t ac_temperature) { - this->climateCard->setTemperature(ac_temperature); - this->climateCard->setFanSpeed(ac_fan_speed); - this->climateCard->setMode(ac_mode); - updateACState(); + ESP_LOGI("ISEDisplay", "Setting AC state: = fan speed: %d, mode: %d, temperature: %d", ac_fan_speed, ac_mode, ac_temperature); + + //this->climateCard->setFanSpeed(ac_fan_speed); + ESP_LOGI("ISEDisplay", "AC fan speed set to: %d", ac_fan_speed); + //this->climateCard->setMode(ac_mode); + ESP_LOGI("ISEDisplay", "AC mode set to: %d", ac_mode); + //this->climateCard->setTemperature(ac_temperature); + ESP_LOGI("ISEDisplay", "AC temperature set to: %d", ac_temperature); + this->climateCard->setState(ac_mode, ac_fan_speed, ac_temperature); + // updateACState(); } void ISEDisplay::toggleLightGroupState() { // Get the current group state bool state = calculateLightGroupState(); + ESP_LOGI("ISEDisplay", "Current light group state: %d", state); // Toggle light for (uint8_t i = 1; i <= 4; i++) { setLightLevel(i, state ? 0 : 3); } } +void ISEDisplay::toggleLightGroupStateStandby() +{ + // Get the current group state + bool state = calculateLightGroupState(); + ESP_LOGI("ISEDisplay", "Current light group state: %d", state); + // Toggle light + for (uint8_t i = 1; i <= 4; i++) + { + setLightLevel(i, state ? 0 : 3); + } + // updateLightGroupStatePageStandby(); +} void ISEDisplay::togglePM() { // Get the current group state - bool state = this->outputCard->getState(5); + bool state = strcmp(pm_switch->getValue(), "on") == 0; + ESP_LOGI("ISEDisplay", "Current PM state: %d", state); // Toggle the state - state = !state; - // Set the state - this->outputCard->setState(5, state); + pm_switch->setValue(state ? "off" : "on"); + ESP_LOGI("ISEDisplay", "New PM state: %d", state); + //updateAirPurifierState(); +} +void ISEDisplay::togglePMStandby() +{ + // Get the current group state + bool state = strcmp(pm_switch->getValue(), "on") == 0; + ESP_LOGI("ISEDisplay", "Current PM state: %d", state); + // Toggle the state + pm_switch->setValue(state ? "off" : "on"); + ESP_LOGI("ISEDisplay", "New PM state: %d", state); + //updateAirPurifierStateStandby(); } void ISEDisplay::toggleAC() { // Get the current group state uint8_t mode = this->climateCard->getMode(); + // get fan speed and temperature + uint8_t fan_speed = this->climateCard->getFanSpeed(); + uint8_t temperature = this->climateCard->getTemperature(); + + ESP_LOGI("ISEDisplay", "Current AC mode: %d", mode); // Toggle the state if (mode == 0) { - this->climateCard->setMode(user_mode); + ESP_LOGI("ISEDisplay", " User mode: %d", user_mode); + setACstate(fan_speed, user_mode, temperature); } else { + ESP_LOGI("ISEDisplay", "User mode BEFORE: %d", user_mode); // update user mode to new mode user_mode = mode; // change actual mode to off - this->climateCard->setMode(0); + ESP_LOGI("ISEDisplay", "User mode AFTER: %d", user_mode); + setACstate(fan_speed, 0, temperature); } } void ISEDisplay::changeUserACmode() { // Get the current group state uint8_t mode = this->climateCard->getMode(); + ESP_LOGI("ISEDisplay", "Current actual AC mode: %d", mode); // Toggle the state // user mode alternate between 1 and 2 - user_mode = (user_mode + 1) % 2 + 1; + ESP_LOGI("ISEDisplay", "User mode BEFORE: %d", user_mode); + user_mode = (user_mode) % 2 + 1; + ESP_LOGI("ISEDisplay", "User mode AFTER: %d", user_mode); if (mode != 0) { // update mode to new mode mode = user_mode; + ESP_LOGI("ISEDisplay", "change actual AC mode to user mode: %d", mode); } else { // ie mode is off - // do nothing as the state is keep in user_mode - // the mode will change to user_mode when turn on by toggleAC() + // do nothing as the state is keep in user_mode + // the mode will change to user_mode when turn on by toggleAC() + ESP_LOGI("ISEDisplay", "do nothing; user mode: %d , actual mode: %d", user_mode, mode); } updateuserACmode(); // call to update mode part of the display seperately } void ISEDisplay::setLightLevel(uint8_t row, uint8_t level) { - for (uint8_t i = 1; i <= 4; i++) + // Set the light level + // this->outputCard->setValue(row, level); + uint8_t primary_pin = *(light_array + 2*(row - 1)); + uint8_t secondary_pin = *(light_array + 2*(row - 1) + 1); + + bool primary = false; + bool secondary = false; + + switch (level) { - if (row == i) - this->outputCard->setValue(row, level); + case 0: + primary = false; + secondary = false; + break; + case 1: + primary = false; + secondary = true; + break; + case 2: + primary = true; + secondary = false; + break; + case 3: + primary = true; + secondary = true; + break; + default: + break; } + + this->outputCard->setState(primary_pin, primary); + this->outputCard->setState(secondary_pin, secondary); } +u_int8_t ISEDisplay::getLightLevel(uint8_t row) +{ + u_int8_t lightLevel = 0; + + //lightLevel = this->outputCard->getValue(row); + uint8_t primary_pin = *(light_array + 2*(row - 1)); + uint8_t secondary_pin = *(light_array + 2*(row - 1) + 1); + bool primary = this->outputCard->getState(primary_pin); + bool secondary = this->outputCard->getState(secondary_pin); + if (primary && secondary) + { + lightLevel = 3; + } + else if (primary) + { + lightLevel = 2; + } + else if (secondary) + { + lightLevel = 1; + } + else + { + lightLevel = 0; + } + + return lightLevel; +} + +//change to light with the assignment + +lightPosition ISEDisplay::getRowCol(uint8_t pin){ + lightPosition position; + //uint8_t row = this->row; + //uint8_t column = this->column; + //const uint8_t *light_array = this->light_array; + // should return the row and column of the light from pin in a row by column array pointer pass from main using pointer arithmetic + for (uint8_t i = 0; i < row*column; i++) + { + uint8_t value = *(light_array + i); + if (value == pin) + { + position.row = i / column; + position.column = i % column; + return position; + } + } + return position; +} + + void ISEDisplay::updateLightGroupStatePageStandby() { // Calculate the state bool state = calculateLightGroupState(); // Send the state to the display - this->takeSerialMutex(); + if (!this->takeSerialMutex()) + return; this->displayAdapter->print("s_light_toggle.pic="); this->displayAdapter->print(state ? COMPONENT_STANDBY_LIGHT_PIC_ON : COMPONENT_STANDBY_LIGHT_PIC_OFF); @@ -462,7 +661,8 @@ void ISEDisplay::updateLightGroupStatePageDashboard() // Calculate the state bool state = calculateLightGroupState(); // Send the state to the display - this->takeSerialMutex(); + if (!this->takeSerialMutex()) + return; this->displayAdapter->print("light_master.pic="); this->displayAdapter->print(state ? COMPONENT_LIGHT_MASTER_ON : COMPONENT_LIGHT_MASTER_OFF); @@ -474,7 +674,7 @@ void ISEDisplay::updateLightGroupStatePageDashboard() for (uint8_t i = 1; i <= 4; i++) { - u_int8_t state = this->outputCard->getValue(i); + u_int8_t state = getLightLevel(i); switch (state) { case 0: @@ -518,7 +718,7 @@ bool ISEDisplay::calculateLightGroupState() bool lightOn = false; for (uint8_t i = 1; i <= 4; i++) { - if (this->outputCard->getValue(i) != 0) + if (getLightLevel(i) != 0) { lightOn = true; break; @@ -526,10 +726,11 @@ bool ISEDisplay::calculateLightGroupState() } return lightOn; } + void ISEDisplay::toggleLightIndividual(uint8_t row) { // Get the current state - uint8_t state = this->outputCard->getValue(row); + uint8_t state = getLightLevel(row); if (state != 0) { state = 0; @@ -569,37 +770,73 @@ void ISEDisplay::toggleSliderLight(uint8_t row, uint8_t lightLevel) // Set the state setLightLevel(row, state); } - -void ISEDisplay::updateAirPurifierState() +void ISEDisplay::updateAirPurifierStateStandby() { // Get the state - bool state = this->outputCard->getState(5); - uint8_t fan_speed = this->outputCard->getState(5); + bool state = strcmp(pm_switch->getValue(), "on") == 0; // Send the state to the display - this->takeSerialMutex(); + if (!this->takeSerialMutex()) + return; - this->displayAdapter->print("pm_sw.pic="); - this->displayAdapter->print(state ? COMPONENT_PM_TOGGLE_PIC_ON : COMPONENT_PM_TOGGLE_PIC_OFF); + this->displayAdapter->print("s_pm_toggle.pic="); + this->displayAdapter->print(state ? COMPONENT_STANDBY_PM_PIC_ON : COMPONENT_STANDBY_PM_PIC_OFF); this->sendStopBytes(); - this->displayAdapter->print("pm_sw.pic2="); - this->displayAdapter->print(state ? COMPONENT_PM_TOGGLE_PIC_ON_PRESSED : COMPONENT_PM_TOGGLE_PIC_OFF_PRESSED); - this->sendStopBytes(); - - this->displayAdapter->print("pm_speed.txt=\""); - this->displayAdapter->print(fan_speed); - this->displayAdapter->print("\""); - this->sendStopBytes(); - - this->displayAdapter->print("pm_speed.pco="); - this->displayAdapter->print(state ? 34486 : 33841); + this->displayAdapter->print("s_pm_toggle.pic2="); + this->displayAdapter->print(state ? COMPONENT_STANDBY_PM_PIC_ON_PRESSED : COMPONENT_STANDBY_PM_PIC_OFF_PRESSED); this->sendStopBytes(); this->giveSerialMutex(); } + +void ISEDisplay::updateAirPurifierState() +{ + //check for page + if(currentPage == PAGE_DASHBOARD){ + ESP_LOGI("ISEDisplay", "Updating dashboard"); + // Get the state + bool state = strcmp(pm_switch->getValue(), "on") == 0; + ESP_LOGI("ISEDisplay", "Updating air purifier state to: %d", state); + pm_fan_speed = (int) atof(remote_pm_fan_speed->getValue()); + // Send the state to the display + if (!this->takeSerialMutex()) + return; + + this->displayAdapter->print("pm_sw.pic="); + this->displayAdapter->print(state ? COMPONENT_PM_TOGGLE_PIC_ON : COMPONENT_PM_TOGGLE_PIC_OFF); + this->sendStopBytes(); + + this->displayAdapter->print("pm_sw.pic2="); + this->displayAdapter->print(state ? COMPONENT_PM_TOGGLE_PIC_ON_PRESSED : COMPONENT_PM_TOGGLE_PIC_OFF_PRESSED); + this->sendStopBytes(); + + this->displayAdapter->print("pm_speed.val="); + this->displayAdapter->print(pm_fan_speed); + // this->displayAdapter->print("\""); + this->sendStopBytes(); + + this->displayAdapter->print("pm_speed.pco="); + this->displayAdapter->print(state ? 34486 : 33841); + this->sendStopBytes(); + + this->giveSerialMutex(); + } + + else if(currentPage == PAGE_STANDBY){ + ESP_LOGI("ISEDisplay", "Updating standby"); + updateAirPurifierStateStandby(); + } +} +void ISEDisplay::handleACChange(uint8_t mode, uint8_t fan_speed, uint8_t temperature) +{ + ESP_LOGI("ISEDisplay", "AC state changed: mode: %d, fan speed: %d, temperature: %d", mode, fan_speed, temperature); + updateACState(); +} void ISEDisplay::updateuserACmode() { - this->takeSerialMutex(); + if (!this->takeSerialMutex()) + return; + ESP_LOGI("ISEDisplay", "updating display user AC mode to: %d", user_mode); switch (user_mode) { case 1: @@ -626,38 +863,40 @@ void ISEDisplay::updateuserACmode() void ISEDisplay::updateACfanSpeed() { uint8_t fan_speed = this->climateCard->getFanSpeed(); - this->takeSerialMutex(); + ESP_LOGI("ISEDisplay", "updating display AC fan speed to: %d", fan_speed); + if (!this->takeSerialMutex()) + return; switch (fan_speed) { case 0: - this->displayAdapter->print("ac_fan.pic="); + this->displayAdapter->print("ac_speed.pic="); this->displayAdapter->print(COMPONENT_AC_FAN_MODE_AUTO_PIC); this->sendStopBytes(); - this->displayAdapter->print("ac_fan.pic2="); + this->displayAdapter->print("ac_speed.pic2="); this->displayAdapter->print(COMPONENT_AC_FAN_MODE_AUTO_PIC_PRESSED); this->sendStopBytes(); break; case 1: - this->displayAdapter->print("ac_fan.pic="); + this->displayAdapter->print("ac_speed.pic="); this->displayAdapter->print(COMPONENT_AC_FAN_MODE_HIGH_PIC); this->sendStopBytes(); - this->displayAdapter->print("ac_fan.pic2="); + this->displayAdapter->print("ac_speed.pic2="); this->displayAdapter->print(COMPONENT_AC_FAN_MODE_HIGH_PIC_PRESSED); this->sendStopBytes(); break; case 2: - this->displayAdapter->print("ac_fan.pic="); + this->displayAdapter->print("ac_speed.pic="); this->displayAdapter->print(COMPONENT_AC_FAN_MODE_MID_PIC); this->sendStopBytes(); - this->displayAdapter->print("ac_fan.pic2="); + this->displayAdapter->print("ac_speed.pic2="); this->displayAdapter->print(COMPONENT_AC_FAN_MODE_MID_PIC_PRESSED); this->sendStopBytes(); break; case 3: - this->displayAdapter->print("ac_fan.pic="); + this->displayAdapter->print("ac_speed.pic="); this->displayAdapter->print(COMPONENT_AC_FAN_MODE_LOW_PIC); this->sendStopBytes(); - this->displayAdapter->print("ac_fan.pic2="); + this->displayAdapter->print("ac_speed.pic2="); this->displayAdapter->print(COMPONENT_AC_FAN_MODE_LOW_PIC_PRESSED); this->sendStopBytes(); break; @@ -673,47 +912,70 @@ void ISEDisplay::updateACState() // Get the state uint8_t mode = this->climateCard->getMode(); uint8_t temperature = this->climateCard->getTemperature(); + if(currentPage != 1){ + if (!this->takeSerialMutex()) + return; - this->takeSerialMutex(); + // Send the state to the display + if (mode == 0) + { + this->displayAdapter->print("ac_temp.pco="); + this->displayAdapter->print(33841); + this->sendStopBytes(); - // Send the state to the display - if (mode == 0) - { - this->displayAdapter->print("ac_temp.pco="); - this->displayAdapter->print(33841); + this->displayAdapter->print("ac_temp.pic="); + this->displayAdapter->print(COMPONENT_AC_STATUS_OFF); + this->sendStopBytes(); + } + else + { + this->displayAdapter->print("ac_temp.pco="); + this->displayAdapter->print(34486); + this->sendStopBytes(); + + this->displayAdapter->print("ac_temp.pic="); + this->displayAdapter->print(COMPONENT_AC_STATUS_ON); + this->sendStopBytes(); + + user_mode = mode; + } + this->displayAdapter->print("ac_sw.pic="); + this->displayAdapter->print(mode != 0 ? COMPONENT_AC_TOGGLE_PIC_ON : COMPONENT_AC_TOGGLE_PIC_OFF); this->sendStopBytes(); - - this->displayAdapter->print("ac_temp.pic="); - this->displayAdapter->print(COMPONENT_AC_STATUS_OFF); + this->displayAdapter->print("ac_sw.pic2="); + this->displayAdapter->print(mode != 0 ? COMPONENT_AC_TOGGLE_PIC_ON_PRESSED : COMPONENT_AC_TOGGLE_PIC_OFF_PRESSED); this->sendStopBytes(); + this->giveSerialMutex(); + + updateuserACmode(); + + updateACfanSpeed(); + + if (!this->takeSerialMutex()) + return; + + this->displayAdapter->print("ac_temp.val="); + this->displayAdapter->print(temperature); + // this->displayAdapter->print("\""); + this->sendStopBytes(); + this->giveSerialMutex(); } - else + else if (currentPage == 1) { - this->displayAdapter->print("ac_temp.pco="); - this->displayAdapter->print(34486); + if (!this->takeSerialMutex()) + return; + + this->displayAdapter->print("s_ac_toggle.pic="); + this->displayAdapter->print(mode != 0 ? COMPONENT_STANDBY_AC_PIC_ON : COMPONENT_STANDBY_AC_PIC_OFF); this->sendStopBytes(); - this->displayAdapter->print("ac_temp.pic="); - this->displayAdapter->print(COMPONENT_AC_STATUS_ON); + this->displayAdapter->print("s_ac_toggle.pic2="); + this->displayAdapter->print(mode != 0 ? COMPONENT_STANDBY_AC_PIC_ON_PRESSED : COMPONENT_STANDBY_AC_PIC_OFF_PRESSED); this->sendStopBytes(); - user_mode = mode; + this->giveSerialMutex(); } - this->displayAdapter->print("ac_sw.pic="); - this->displayAdapter->print(mode != 0 ? COMPONENT_AC_TOGGLE_PIC_ON : COMPONENT_AC_TOGGLE_PIC_OFF); - this->sendStopBytes(); - this->displayAdapter->print("ac_sw.pic2="); - this->displayAdapter->print(mode != 0 ? COMPONENT_AC_TOGGLE_PIC_ON_PRESSED : COMPONENT_AC_TOGGLE_PIC_OFF_PRESSED); - this->sendStopBytes(); + - updateuserACmode(); - - updateACfanSpeed(); - - this->displayAdapter->print("ac_temp.txt=\""); - this->displayAdapter->print(temperature); - this->displayAdapter->print("\""); - this->sendStopBytes(); - - this->giveSerialMutex(); + ESP_LOGI("ISEDisplay", "display AC state updated"); } diff --git a/src/ise_display.hpp b/src/ise_display.hpp index 5dbe09f..3074d30 100644 --- a/src/ise_display.hpp +++ b/src/ise_display.hpp @@ -16,48 +16,74 @@ +struct lightPosition { + uint8_t row; + uint8_t column; +}; class ISEDisplay : public ESPMegaDisplay { public: - ISEDisplay(HardwareSerial* adapter); - void begin(DigitalInputCard* inputCard, DigitalOutputCard* outputCard, ClimateCard* climateCard); - + ISEDisplay(HardwareSerial* adapter, const uint8_t *light_array, uint8_t row, uint8_t column); + void begin(DigitalInputCard* inputCard, DigitalOutputCard* outputCard, ClimateCard* climateCard, RemoteVariable* pm_switch, RemoteVariable* pm_fan_speed); + void updateLightGroupStatePageDashboard(); + void updateLightGroupStatePageStandby(); + void updateAirPurifierState(); + void updateAirPurifierStateStandby(); void updateDateTimeText(rtctime_t time); void updateWeather(char *weather_string); void updateTempOutside(float temp_outside); void updatePMoutside(u_int16_t pm25_outside); - void updatePMinside(u_int8_t pm25_inside); + void updatePMinside(u_int16_t pm25_inside); void loop(); + + private: void handleTouch(uint8_t page, uint8_t component, uint8_t touch_type); void handlePWMChange(uint8_t pin, bool state, uint16_t value); + void handleACChange(uint8_t mode, uint8_t fan_speed, uint8_t temperature); void setPMstate(bool is_pm_on, uint8_t pm_fan_speed); void setACstate(uint8_t ac_fan_speed, uint8_t ac_mode, uint8_t ac_temperature); void setLightLevel(uint8_t row, uint8_t level); + u_int8_t getLightLevel(uint8_t row); + lightPosition getRowCol(uint8_t pin); DigitalInputCard* inputCard; DigitalOutputCard *outputCard; ClimateCard *climateCard; + + const uint8_t *light_array; + uint8_t row; + uint8_t column; + + RemoteVariable *pm_switch; + RemoteVariable *remote_pm_fan_speed; uint8_t outputCallbackHandle; uint8_t climateCallbackHandle; uint8_t user_mode; + uint8_t ac_mode; + uint8_t ac_fan_speed; + uint8_t ac_temperature; + uint8_t pm_fan_speed; uint8_t time_since_last_screen_update; + u_int8_t lightLevelRow1; + u_int8_t lightLevelRow2; + u_int8_t lightLevelRow3; + u_int8_t lightLevelRow4; - - - void updateLightGroupStatePageDashboard(); - void updateLightGroupStatePageStandby(); - void updateAirPurifierState(); void updateACState(); + void updateuserACmode(); + void updateACfanSpeed(); bool calculateLightGroupState(); void toggleLightGroupState(); + void toggleLightGroupStateStandby(); void toggleLightIndividual(uint8_t row); void toggleSliderLight(uint8_t row,uint8_t lightLevel); void togglePM(); + void togglePMStandby(); void toggleAC(); + void toggleACStandby(); void changeUserACmode(); - void updateuserACmode(); - void updateACfanSpeed(); + }; \ No newline at end of file diff --git a/src/ise_display_definitions.hpp b/src/ise_display_definitions.hpp index 87af10d..6b45c45 100644 --- a/src/ise_display_definitions.hpp +++ b/src/ise_display_definitions.hpp @@ -11,6 +11,27 @@ tentetive pin mapping 4: row 4 (value from 0-3) +change light assignment +1: row 1 column 1 +2: row 1 column 2 +3: row 2 column 1 +4: row 2 column 2 +5: row 3 column 1 +6: row 3 column 2 +7: row 4 column 1 +8: row 4 column 2 +*/ + +#define LIGHT_ROW1_COLUMN1 0 +#define LIGHT_ROW1_COLUMN2 1 +#define LIGHT_ROW2_COLUMN1 2 +#define LIGHT_ROW2_COLUMN2 3 +#define LIGHT_ROW3_COLUMN1 8 +#define LIGHT_ROW3_COLUMN2 9 +#define LIGHT_ROW4_COLUMN1 10 +#define LIGHT_ROW4_COLUMN2 11 + +/* 5: Air Purifier status (on/off) 6: Air Purifier fan speed (0-20) diff --git a/src/main.cpp b/src/main.cpp index 8ff0f28..b64f693 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,17 +1,27 @@ #include - +RemoteVariable pm25_in = RemoteVariable(); RemoteVariable pm25_out = RemoteVariable(); RemoteVariable temp_out = RemoteVariable(); RemoteVariable weather = RemoteVariable(); +RemoteVariable pm_switch = RemoteVariable(); +RemoteVariable pm_fan_speed = RemoteVariable(); -const char *mode_names[] = {"off", "fan_only", "cool"}; +const char *mode_names[] = {"off", "cool", "fan_only", "dry"}; const char *fan_speed_names[] = {"auto", "high", "medium", "low"}; +uint8_t row = 4; +uint8_t column = 2; +const uint8_t light_array[4][2] = { + {LIGHT_ROW1_COLUMN1, LIGHT_ROW1_COLUMN2}, + {LIGHT_ROW2_COLUMN1, LIGHT_ROW2_COLUMN2}, + {LIGHT_ROW3_COLUMN1, LIGHT_ROW3_COLUMN2}, + {LIGHT_ROW4_COLUMN1, LIGHT_ROW4_COLUMN2}}; + AirConditioner ac = { - .max_temperature = 30, - .min_temperature = 15, - .modes = 3, + .max_temperature = 32, + .min_temperature = 16, + .modes = 4, .mode_names = mode_names, .fan_speeds = 4, .fan_speed_names = fan_speed_names, @@ -21,7 +31,7 @@ AirConditioner ac = { ***********************************************/ ESPMegaPRO espmega = ESPMegaPRO(); -ISEDisplay iseDisplay = ISEDisplay(&iseDisplayAdapter); +ISEDisplay iseDisplay = ISEDisplay(&iseDisplayAdapter, &light_array[0][0], row, column); ClimateCard climateCard = ClimateCard(AIR_CONDITIONER_IR_PIN, ac, AIR_CONDITIONER_SENSOR_TYPE, AIR_CONDITIONER_SENSOR_PIN, @@ -29,7 +39,6 @@ ClimateCard climateCard = ClimateCard(AIR_CONDITIONER_IR_PIN, ac, void handleMqttMessage(char *topic, char *payload) { - } void sendStopBytes() @@ -94,85 +103,274 @@ void setup() espmega.enableWebServer(80); espmega.inputs.registerCallback(on_pin_change); espmega.outputs.setAutoSaveToFRAM(true); + // Set value of pin 0-12 to 4095 + for (uint8_t i = 0; i < 13; i++) + { + espmega.outputs.setValue(i, 4095); + } espmega.installCard(2, &climateCard); climateCard.bindFRAM(&espmega.fram, 5000); climateCard.loadStateFromFRAM(); climateCard.setFRAMAutoSave(true); espmega.display->bindClimateCard(&climateCard); - espmega.iot->registerCard(0); // Register the Input Card - espmega.iot->registerCard(1); // Register the Output Card - espmega.iot->registerCard(2); // Register the Climate Card - auto bindedGetTime = std::bind(&ESPMegaPRO::getTime, &espmega); - iseDisplay.begin(&espmega.inputs, &espmega.outputs, &climateCard); - espmega.iot->registerRelativeMqttCallback(&handleMqttMessage); + // auto binded_display_update_on_pm25_out = std::bind(&display_update,0,std::placeholders::_1); + // auto binded_display_update_on_pm25_in = std::bind(&display_update,1,std::placeholders::_1); + // auto binded_display_update_on_temp_out = std::bind(&display_update,2,std::placeholders::_1); + // auto binded_display_update_on_weather = std::bind(&display_update,3,std::placeholders::_1); + // auto binded_display_update_on_pm_switch = std::bind(&display_update,4,std::placeholders::_1); + // auto binded_display_update_on_pm_fan_speed = std::bind(&display_update,5,std::placeholders::_1); + + // pm25_out.registerCallback(std::function(binded_display_update_on_pm25_out)); + // pm25_in.registerCallback(std::function(binded_display_update_on_pm25_in)); + // temp_out.registerCallback(std::function(binded_display_update_on_temp_out)); + // weather.registerCallback(std::function(binded_display_update_on_weather)); + // pm_switch.registerCallback(std::function(binded_display_update_on_pm_switch)); + // pm_fan_speed.registerCallback(std::function(binded_display_update_on_pm_fan_speed)); + + pm25_out.registerCallback(&pm25outupdatedisplay); + pm25_in.registerCallback(&pm25inupdatedisplay); + temp_out.registerCallback(&tempoutupdatedisplay); + weather.registerCallback(&weatherupdatedisplay); + pm_switch.registerCallback(&pmswitchupdatedisplay); + pm_fan_speed.registerCallback(&pmfanspeedupdatedisplay); + + // placeholder // PM2.5 PPM Remote Variable // 12 bytes remote variable, 11 characters + null terminator // Enable value request at /iqair/pm25_request - pm25_out.begin(6, "/aqi/value", espmega.iot, true, "/aqi/value_request"); + pm25_out.begin(6, "/aqi/value", espmega.iot, true, "/aqi/request_value"); // Temperature Remote Variable - temp_out.begin(6, "/temp/value", espmega.iot, true, "/weather/temp_request"); + temp_out.begin(6, "/temp/value", espmega.iot, true, "/temp/request_value"); // Weather Remote Variable - weather.begin(45, "/weather", espmega.iot, true, "/weather_request"); + weather.begin(45, "/weather/value", espmega.iot, true, "/weather/request_value"); + // PM2.5 PPM Remote Variable + pm25_in.begin(6, "/pm/value", espmega.iot, true, "/pm/request_value"); + // Air Purifier Switch Remote Variable + pm_switch.begin(6, "/pm/switch_state", espmega.iot, true, "/pm/request_switch_state"); + pm_switch.enableSetValue("/pm/set_switch_state"); + // Air Purifier Fan Speed Remote Variable + pm_fan_speed.begin(6, "/pm/fan_speed", espmega.iot, true, "/pm/request_fan_speed"); + pm_fan_speed.enableSetValue("/pm/set_fan_speed"); + espmega.iot->registerCard(0); // Register the Input Card + espmega.iot->registerCard(1); // Register the Output Card + espmega.iot->registerCard(2); // Register the Climate Card + auto bindedGetTime = std::bind(&ESPMegaPRO::getTime, &espmega); + iseDisplay.begin(&espmega.inputs, &espmega.outputs, &climateCard, &pm_switch, &pm_fan_speed); + espmega.iot->registerRelativeMqttCallback(&handleMqttMessage); + iseDisplay.registerPageChangeCallback(&handlePageChange); + + } +// void update_display(uint8_t type, char *value){ +// switch (type) +// { +// case 0: +// iseDisplay.updatePMoutside(get_pm25_out()); +// break; +// case 1: +// iseDisplay.updatePMinside(get_pm25_in()); +// break; +// case 2: +// iseDisplay.updateTempOutside(get_temp_out()); +// break; +// case 3: +// iseDisplay.updateWeather(weather.getValue()); +// break; +// case 4: +// iseDisplay.updateAirPurifierState(); +// break; +// case 5: +// iseDisplay.updateAirPurifierState(); +// break; +// default: +// break; +// } +// } +void pm25outupdatedisplay(char* value){ + iseDisplay.updatePMoutside(get_pm25_out()); +} +void pm25inupdatedisplay(char* value){ + iseDisplay.updatePMinside(get_pm25_in()); +} +void tempoutupdatedisplay(char* value){ + iseDisplay.updateTempOutside(get_temp_out()); +} +void weatherupdatedisplay(char* value){ + iseDisplay.updateWeather(weather.getValue()); +} +void pmfanspeedupdatedisplay(char* value){ + iseDisplay.updateAirPurifierState(); +} +void pmswitchupdatedisplay(char* value){ + ESP_LOGI("PM switch", "getting PM switch state from MQTT: %d", pm_switch.getValue()); + iseDisplay.updateAirPurifierState(); + ESP_LOGI("PM switch", "toggling PM switch state from: %d to %d", pm_switch.getValue(), !pm_switch.getValue()); +} + + void loop() { espmega.loop(); iseDisplay.loop(); // Update the time every 15 seconds + // static bool run_when_init = false; // No static ? , this shit will reset to 0 every loop static uint32_t last_time_updated = 0; + // rtctime_t time = espmega.getTime(); + // when init update once then update every 15 seconds + // You don't need this, when it go from page 0 to 1 it call handlePageChange + // if(!run_when_init){ + // time = espmega.getTime(); + // iseDisplay.updateDateTimeText(time); + // last_time_updated = millis(); + // run_when_init = true; + // } + if (millis() - last_time_updated > 15000) { rtctime_t time = espmega.getTime(); + // log time + ESP_LOGI("time", "Time: %d:%d:%d", time.hours, time.minutes, time.seconds); + ESP_LOGI("Date", "Date: %d/%d/%d", time.day, time.month, time.year); iseDisplay.updateDateTimeText(time); last_time_updated = millis(); } - // Update the PM2.5 PPM value every 5 minutes - static uint32_t last_pm25_out_update = 0; - if (millis() - last_pm25_out_update > 300000) - { - uint16_t pm25_out_value = get_pm25_out(); - iseDisplay.updatePMoutside(pm25_out_value); - last_pm25_out_update = millis(); - } - // Update the temperature value every 5 minutes - static uint32_t last_temp_out_update = 0; - if (millis() - last_temp_out_update > 300000) - { - float temp_out_value = get_temp_out(); - iseDisplay.updateTempOutside(temp_out_value); - last_temp_out_update = millis(); - } - // Update the weather value every 5 minutes - static uint32_t last_weather_update = 0; - if (millis() - last_weather_update > 300000) - { - char *weather_value = weather.getValue(); - iseDisplay.updateWeather(weather_value); - last_weather_update = millis(); - } - + // // Update the PM2.5 PPM value every 15 seconds + // static uint32_t last_pm25_out_update = 0; + // if (millis() - last_pm25_out_update > 15000) + // { + // uint16_t pm25_out_value = get_pm25_out(); + // // ESP_LOGI("loopPM2.5","updating PM2.5 from MQTT inside loop: %d", pm25_out_value); + // iseDisplay.updatePMoutside(pm25_out_value); + // last_pm25_out_update = millis(); + // } + // // Update the PM2.5 PPM value every 15 seconds + // static uint32_t last_pm25_in_update = 0; + // if (millis() - last_pm25_in_update > 15000) + // { + // uint8_t pm25_in_value = get_pm25_in(); + // iseDisplay.updatePMinside(pm25_in_value); + // last_pm25_in_update = millis(); + // } + // Update the temperature value every 15 seconds + // static uint32_t last_temp_out_update = 0; + // if (millis() - last_temp_out_update > 15000) + // { + // float temp_out_value = get_temp_out(); + // iseDisplay.updateTempOutside(temp_out_value); + // last_temp_out_update = millis(); + // } + // // Update the weather value every 15 seconds + // static uint32_t last_weather_update = 0; + // if (millis() - last_weather_update > 15000) + // { + // char *weather_value = weather.getValue(); + // iseDisplay.updateWeather(weather_value); + // last_weather_update = millis(); + // } + // // Update the PM state every 1 seconds + // static uint32_t last_pm_switch_update = 0; + // if (millis() - last_pm_switch_update > 500) + // { + // iseDisplay.updateAirPurifierState(); + // last_pm_switch_update = millis(); + // } } void on_pin_change(uint8_t pin, uint8_t value) -{ - -} +{} uint16_t get_pm25_out() { uint16_t pm25_out_value = 0; // Read PM2.5 PPM from sensor pm25_out_value = atoi(pm25_out.getValue()); + ESP_LOGI("PM2.5", "getting PM2.5 PPM from MQTT: %d", pm25_out_value); return pm25_out_value; } + +uint16_t get_pm25_in() +{ + uint16_t pm25_in_value = 0; + // Read PM2.5 PPM from sensor + pm25_in_value = atoi(pm25_in.getValue()); + ESP_LOGI("PM2.5", "getting PM2.5 PPM from MQTT: %d", pm25_in_value); + return pm25_in_value; +} + float get_temp_out() { float temp_out_value = 0; // Read temperature from sensor temp_out_value = atof(temp_out.getValue()); + ESP_LOGI("Temperature", "getting Temperature from MQTT: %f", temp_out_value); return temp_out_value; +} + +uint8_t get_pm_fanspeed() +{ + uint8_t pm_fan_speed_value = 0; + // Read PM2.5 fan speed from sensor + pm_fan_speed_value = (int) atof(pm_fan_speed.getValue()); + ESP_LOGI("PM fan speed", "getting PM2.5 PPM from MQTT: %d", pm_fan_speed_value); + return pm_fan_speed_value; +} + +bool get_pm_switch() +{ + ESP_LOGI("PM switch", "getting PM switch state from MQTT: %d", pm_switch.getValue()); + bool is_pm_switch_on = strcmp(pm_switch.getValue(),"on")== 0; + return is_pm_switch_on; +} +void toggle_pm_switch() +{ + bool is_pm_switch_on = get_pm_switch(); + ESP_LOGI("PM switch", "toggling PM switch state from: %d to %d", is_pm_switch_on, !is_pm_switch_on); + pm_switch.setValue(is_pm_switch_on ? "0" : "1"); +} +void set_pm_fanspeed(uint8_t speed) +{ + ESP_LOGI("PM fan speed", "setting PM fan speed to: %d", speed); + char buffer[4]; + itoa(speed, buffer, DEC); + pm_fan_speed.setValue(buffer); +} + +void handlePageChange(uint8_t page) +{ + + // Which already send the time + // printESP_LOGI the page have changed + ESP_LOGI("Page", "Page change to: %d", page); + rtctime_t time = espmega.getTime(); + iseDisplay.updateDateTimeText(time); + switch (page) + { + case PAGE_STANDBY: + iseDisplay.updateLightGroupStatePageStandby(); + iseDisplay.updateAirPurifierStateStandby(); + break; + case PAGE_DASHBOARD: + iseDisplay.updateLightGroupStatePageDashboard(); + iseDisplay.updateAirPurifierState(); + break; + default: + break; + } + + // iseDisplay.updatePMinside(); + iseDisplay.updatePMoutside(get_pm25_out()); + iseDisplay.updatePMinside(get_pm25_in()); + iseDisplay.updateWeather(weather.getValue()); + iseDisplay.updateTempOutside(get_temp_out()); + + /* iseDisplay.updateACState(); + iseDisplay.updateAirPurifierState(); + iseDisplay.updateLightGroupStatePageStandby(); + iseDisplay.updateLightGroupStatePageDashboard(); + iseDisplay.updateuserACmode(); + iseDisplay.updateAirPurifierStateStandby(); */ } \ No newline at end of file diff --git a/src/main.hpp b/src/main.hpp index df1e403..61aa049 100644 --- a/src/main.hpp +++ b/src/main.hpp @@ -24,6 +24,7 @@ SET_LOOP_TASK_STACK_SIZE(32*1024); void handleMqttMessage(char *topic, char *payload); void subscribeToMqttTopics(); +void handlePageChange(uint8_t page); void sendStopBytes(); void sendExtStopBytes(); @@ -34,4 +35,14 @@ void loop(); void on_pin_change(uint8_t pin, uint8_t value); uint16_t get_pm25_out(); +uint16_t get_pm25_in(); float get_temp_out(); +void toggle_pm_switch(); +void set_pm_fanspeed(uint8_t speed); +void display_update(); +void pm25outupdatedisplay(char* value); +void pm25inupdatedisplay(char* value); +void tempoutupdatedisplay(char* value); +void weatherupdatedisplay(char* value); +void pmfanspeedupdatedisplay(char* value); +void pmswitchupdatedisplay(char* value); \ No newline at end of file